TCP的三次握手&四次挥手

wireshark1.12.8

TCP的三次握手&四次挥手_第1张图片

seq和ack这个叫法和wireshark的叫是一致的。

seq全称:sequence number

ack全称:acknowledgment number


简书:TCP三次握手和四次挥手深入实践

老衲五木:LWIP协议栈建立TCP连接和断开时——控制块的状态转换

为什么是三次握手?本博主是这样理解的

客户发出请求帧(第1帧),服务器确认帧(第2帧)。接着服务器请求帧(第3帧),然后客户确认帧(第4帧)。这么一分析是不是需要4帧,为了省流量和效率,就把第2帧和第3帧合并为一个帧了。于是事实上TCP连接成为了这样:

客户发出请求帧(第1帧),服务器发出确认帧并且发送请求帧(第2帧),然后客户发出确认帧(第3帧)。

在知乎上有几个超级经典的解答,和我的意思是一样的,但是更细致,如下:

TCP 为什么是三次握手,为什么不是两次或四次?(超牛链接)

看了这个链接,我这个博客都无法再写下去了,因为这个链接的解答太丰富了。好了,我要继续去看那个链接了。。。

BYE, BYE.....


TCP的三次握手&四次挥手_第2张图片

本博主借上图(发送方叫做A,接收方叫做B)再次理解一下:

发送方想了解接收方的耳朵和嘴是否是好用的。

接收方想了解发送方的耳朵和嘴是否是好用的。

详细点就是:第一帧,B知道A的嘴好用。第二帧,A知道B的嘴和耳朵好用。第三帧,B知道A的耳朵好用。


另外在TCP 为什么是三次握手,为什么不是两次或四次?(超牛链接)中提到了两军问题,可以关注一下。

我大概看了一下,三次握手,说明了双方可用,而不见得未来的通信可靠。而两军问题似乎涉及到了通信的可靠性。

=======================================

关于TCP的四次挥手。这里博主总结几个相关的知识点:

(1)根据TCP-IP卷1的18.2.4,说“发送F I N通常是应用层进行关闭的结果”。就是说先关闭自己的应用层了(具体讲是关闭应用层的发送功能),然后告诉发送FIN指令告诉对方。

(2)关于TIME_WAIT

根据TCP-IP卷1的18.6.1,说"当 T C P执行一个主动关闭,并发回最后一个A C K ,该连接必须在T I M E _ WA I T状态停留的时间为2倍的M S L.这样可让T C P再次发 送最后的A C K 以防这个A C K丢失(另一端超时并重发最后的F I N )。 "

(3)TCP半关闭

根据TCP-IP卷1的18.5,说“T C P提供了连接的一端在结束它的发送后还能接收来自另一端数据的能力。这就是所谓的半关闭。”

https://zhuanlan.zhihu.com/p/24860403

TCP的三次握手&四次挥手_第3张图片

TCP系列04—连接管理—3、TCP连接的半打开和半关闭

TCP的三次握手&四次挥手_第4张图片


WIRESHARK抓包分析握手挥手

再来个状态转换图:非常好的图啊!!!

TCP的三次握手&四次挥手_第5张图片

你可能感兴趣的:(lwip,以太网初探)