TCP/IP协议三次握手四次挥手过程

栏目: 服务器 · 发布时间: 7年前

内容简介:连接中断可以由server或者client中任一端发起,上图中为client发起,如果是server端发起,则流程中1,2,3,4步骤方向互换即可。TCP的TIME_WAIT状态也称为2MSL等待状态,当TCP的一端发起主动关闭,在发出最后一个ACK包后,即第三次挥手完成后发送了第四次挥手的ACK包后就进入了TIME_WAIT状态,必须在此状态上停留两倍的MSL时间,等待2MSL时间主要目的是怕最后一个ACK包对方没收到,那么对方在超时后将重发第三次挥手的FIN包,主动关闭端接到重发的FIN包后可以再发一

TCP/IP协议三次握手四次挥手过程

三次握手建立连接

  • 初始阶段:client状态为CLOSED, server状态为LISTEN
  • 1.SYN阶段:client向server发送SYN报文请求建立连接,client进入SYN-SEND状态
  • 2.SYN/ACK阶段:server收到SYN报文,进入SYN-RCVD状态,回复SYN/ACK报文给client,并为这次连接分配资源。
  • 3.ACK阶段:client收到AYN/ACK报文后向server回复SYN报文,并为这次连接分配资源。
  • 至此连接建立。

四次挥手

连接中断可以由server或者client中任一端发起,上图中为client发起,如果是server端发起,则流程中1,2,3,4步骤方向互换即可。

  • 初始阶段:client和server状态皆为ESTABLISHED
  • 1.FIN阶段:client向server发送FIN发起中断请求,client进入FIN-WAIT-1状态,等待接收server的ACK
  • 2.ACK阶段:server端接到FIN报文(即client向server宣告没有数据要继续传输了,但是如果server端还有数据没有向client传输完成,那么不需要此时关闭socket,数据可以继续传输,只需要回复client ACK即可), server向client回复ACK报文,并进入CLOSE-WAIT状态, client在收到ACK之后进入FIN-WAIT-1状态,等待接收server的FIN
  • 3.FIN阶段:server端数据传输完成,向client端发送FIN报文,进入等待client ACK阶段
  • 4.ACK阶段:client在收到server的FIN报文后,向server回复ACK报文,但是client并不确认server是否一定能收到ACK报文,所以等待2MSL之后才会关闭client自己,server在收到ACK报文后会立即关闭
  • client在等待2MSL后依然没有收到server回复,证明server已正常关闭, client自动关闭

TCP的TIME_WAIT状态也称为2MSL等待状态,当TCP的一端发起主动关闭,在发出最后一个ACK包后,即第三次挥手完成后发送了第四次挥手的ACK包后就进入了TIME_WAIT状态,必须在此状态上停留两倍的MSL时间,等待2MSL时间主要目的是怕最后一个ACK包对方没收到,那么对方在超时后将重发第三次挥手的FIN包,主动关闭端接到重发的FIN包后可以再发一个ACK应答包。在TIME_WAIT状态时两端的端口不能使用,要等到2MSL时间结束才可继续使用。当连接处于2MSL等待阶段时任何迟到的报文段都将被丢弃。不过在实际应用中可以通过设置SO_REUSEADDR选项达到不必等待2MSL时间结束再使用此端口。

MSL(Maximum Segment Lifetime): RFC 793中规定MSL为2分钟,实际应用中常用的是30秒,1分钟和2分钟等。

參考資料

《TCP IP详解卷一》

TCP协议中的三次握手和四次挥手(图解) : https://www.cnblogs.com/thrillerz/p/6464203.html


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

深入浅出HTML5编程

深入浅出HTML5编程

弗里曼 (Eric Friiman)、罗布森 (Elisabdth Robson) / 东南大学出版社 / 2012-4 / 98.00元

《深入浅出HTML5编程(影印版)(英文)》就是你的特快车票,它可以带你学习如何使用今天的标准同时也会是明日的最佳实践来搭建Web应用。同时,你会了解HTML5的新API的基本知识,甚至你还会弄明白这些API是如何与你的网页进行交互,JaVaScript如何为它们提供动力,以及你如何使用它们来搭建能够打动你的老板并且吸引你的朋友的Web应用。一起来看看 《深入浅出HTML5编程》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

随机密码生成器
随机密码生成器

多种字符组合密码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具