TCP的三次握手和四次挥手

∥☆過路亽.° 提交于 2019-12-01 18:58:29

首先上图(包括3次握手和4次挥手):

 

1、TCP三次握手

          SYN、ACK状态解释:1表示是,0表示否。

        (1)第一次握手:client端向server端发送一个syn=1和一个随机生成的seq number。

        (2)第二次握手:server端收到了client端的syn码和seq之后,回复 ack number=client端的seq+1、随机生成的seq number、syn=1、ACK=1。

        (3)第三次握手:client端收到server端回复之后,确认ack number的值和ACK是否=1,如果正确,则发送ACK=1、ack number = server端seq+1,server端收到确认无误之后建立连接。

 

2、TCP四次挥手

        假设client端首先断开连接。

        (1)第一次挥手:client端发送一个fin报文,之后进入FIN_WAIT_1状态。

        (2)第二次挥手:server端收到fin文之后,回复ack表示收到报文,之后关闭server端的receive通道,进入CLOSE_WAIT状态。

           client端收到server端的ack之后,关闭client端的send通道,进入FIN_WAIT_2状态。

        (3)第三次挥手:server端发出fin,请求断开连接,进入LAST_ACK状态。

        (4)第四次挥手:client段收到fin,回复ack,之后关闭client端的receive通道,进入TIME_WAIT状态(经过2*MSL之后进入CLOSED)。

                                       server端收到ack之后关闭send通道,进入CLOSED状态。至此TCP4次挥手结束。

 

对第四次挥手发送ACK之后还要等待2*MSL时间才关闭的解释

          我们假想网络传输是不可靠的,第四次挥手发送的ACK可能丢失,这样server端收不到ACK报文,则server端需要等超时之后重新发送FIN报文。2MSL就是给丢包情况下重新发送fin和ack的时间。

          tips:MSL是Maximum Segment Lifetime英文的缩写,中文可以译为“报文最大生存时间”,他是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃,一般为30S、1分钟或2分钟。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!