TCP 3次握手4次挥手 复习

学习自https://blog.csdn.net/qq_18425655/article/details/52163228


握手

syn

syn+ack

ack


未连接队列

服务端维护一个未连接队列,当客户端发来ack时,服务器会入队列一个相应的标识,那个标识是已接收ack状态,然后会发syn ack,当客户端再次发送ack后,出队列那个相应的标识,正式建立连接


为何要3次握手?

假如客户端发送syn,但是莫名滞留了,于是重传了,建立了一个连接。但在连接之后,那个syn又到达了服务端,如果服务端仅仅凭借一个syn就和客户端建立连接了,资源就会被浪费。


挥手

fin

ack

fin

ack


为何要4次挥手?

那是因为要把剩余的资源发发光。如果直接就终止了,客户端收到的数据的尾部就会缺失。


为何最后一个ack发了后还要等一会?

那是因为这个ack可能发送失败需要重发。如果没有重发,服务器得不到确认,连接就一直保持了,资源就大大浪费了,而且服务器绝对会崩。


ps:保活计时器

如果客户端服务端已经建立连接了,突然客户端炸了,但是连接还在。服务端如果2小时(假定的数据)内没收到客户端的数据,会发个信号——“老哥你还在吗???”,发个10个左右,就火了!lz生你气了,嘤嘤嘤,然后就关闭连接了。

阅读更多
版权声明:有些文章写的很随意,那是仅作为个人记录的文章,建议直接关掉,多看一秒亏一秒 https://blog.csdn.net/qq_36523667/article/details/79980271
个人分类: 网络
上一篇OkHttp3.7缓存原理分析
下一篇Android中告别PNG,拥抱SVG
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭