No.29 今日概要 粘包问题 内容回顾 OSI七层协议 应用层 传输层(理解port) tcp 可靠、慢、全双工、数据长度大 三次握手:发了 syn/ack 信号 三次握手把一个回复和请求连接的两条信息合并成一条了 四次挥手:发了 fin/ack 信号 由于一方断开连接后,可能另一方还有数据没有传 ...
分类:
其他好文 时间:
2020-04-05 23:51:20
阅读次数:
72
1 . tcp连接有几次握手? 有几次释放? (1) 第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。 (2)第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即S ...
分类:
编程语言 时间:
2020-04-03 12:05:40
阅读次数:
80
三次握手与accept()函数的关系? 1、客户端发送SYN给服务器。 2、服务器发送SYN+ACK给客户端。 3、客户端发送ACK给服务器。 4、连接建立,调用accept()函数获取连接。 在三次握手和四次挥手协议中,客户端和服务器端各用到什么函数?(这里涉及到底层的socket知识) Sock ...
分类:
其他好文 时间:
2020-03-30 19:55:19
阅读次数:
92
TCP三次握手的过程,需要客户端和服务端总共发送3个包以确认连接的建立: TCP协议提供可靠的连接服务,使用三次握手建立了一个连接。(SYN:同步请求;SYN+ACK:同步请求应答) A与B建立TCP连接时:首先A向B发SYN(同步请求),然后B回复SYN搜索+ACK(同步请求应答),最后A回复AC ...
分类:
其他好文 时间:
2020-02-27 01:01:52
阅读次数:
70
常见面试题 1.为什么建立连接协议是三次握手,而关闭连接却是四次握手呢? 这是因为服务端的LISTEN状态下的SOCKET当收到SYN报文的建连请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在 一个报文里来发送。 但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没 ...
分类:
其他好文 时间:
2020-01-14 11:32:46
阅读次数:
91
首先我解释一下,为什么HTTPs链接比较慢。 HTTPs链接和HTTP链接都建立在TCP协议之上。HTTP链接比较单纯,使用三个握手数据包建立连接之后,就可以发送内容数据了。 上图中,客户端首先发送SYN数据包,然后服务器发送SYN+ACK数据包,最后客户端发送ACK数据包,接下来就可以发送内容了。 ...
分类:
Web程序 时间:
2020-01-11 14:47:12
阅读次数:
84
先上个TCP三次握手和四次分手的图 网上好多都是错的,只能自己画了,一个正确的图的确可以方便理解。 详解如下,上图传递过程中出现的几个字符(SYN,ACK,FIN,seq,ack)各代表什么意思 SYN,ACK,FIN存放在TCP的标志位,一共有6个字符,这里就介绍这三个: SYN:代表请求创建连接 ...
分类:
其他好文 时间:
2020-01-02 18:35:22
阅读次数:
83
TCP握手分为三个阶段,在握手开始之前,通信双方的套接字状态均为“TCP_CLOSE”,以下是这三个阶段: (1)客户端发送一个标志位中SYN位为1的报文给服务端,并设套接字状态为“TCP_SYNSENT” (2)服务端接到SYN报文,设套接字状态为“TCP_SYNRCV”,并回送一个SYN+ACK ...
分类:
其他好文 时间:
2019-12-27 00:16:40
阅读次数:
111
下面这篇分析tcp连接建立超时时间,很好。 linux上默认超时时间为127s, 因为发出syn后,若没有收到回复,默认重传次数为6,且采用指数退避方式 1-1 2-2 3-4 4-8 5-16 6-32 64s后认为失败。 一共是127s。 http://www.chengweiyang.cn/2 ...
分类:
其他好文 时间:
2019-12-04 20:32:47
阅读次数:
104
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(seq ...
分类:
其他好文 时间:
2019-11-28 21:15:10
阅读次数:
73