专栏名称: 马哥Linux运维
马哥linux致力于linux运维培训,连续多年排名第一,订阅者可免费获得学习机会和相关Linux独家实战资料!
目录
相关文章推荐
InfoQ 架构头条  ·  游戏教父John ... ·  2 天前  
51好读  ›  专栏  ›  马哥Linux运维

TCP三次握手与四次分手傻傻分不清?看大神图解五分钟讲明白

马哥Linux运维  · 公众号  · 运维  · 2017-07-27 18:46

正文

请到「今天看啥」查看全文


client接收到server发回的ACK(J+1)包后,进入ESTABLISHED状态。然后根据server发来的SYN(K)包,返回给等待中的server一个ACK(K+1)包。等待中的server收到ACK回复,也把自己的状态设置为ESTABLISHED。到此TCP三次握手完成,client与server可以正常进行通信了。

为什么要进行三次握手

我们来看一下为什么需要进行三次握手,两次握手难道不行么?这里我们用一个生活中的具体例子来解释就很好理解了。我们可以将三次握手中的客户端和服务器之间的握手过程比喻成A和B通信的过程:

  • 在第一次通信过程中,A向B发送信息之后,B收到信息后可以确认自己的收信能力和A的发信能力没有问题。

  • 在第二次通信中,B向A发送信息之后,A可以确认自己的发信能力和B的收信能力没有问题, 但是B不知道自己的发信能力到底如何 ,所以就需要第三次通信。

  • 在第三次通信中,A向B发送信息之后,B就可以确认自己的发信能力没有问题。

wireshark

上面分析还不够形象,很容易忘记,下面我们利用wireshark来证明一下上面的分析过程。从下面的的输出就可以很容易看出来,必须要经过前面的三次tcp请求才会有起一次http请求。

第一次请求客户端发送一个SYN包,序列号是0。







请到「今天看啥」查看全文