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

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

内容简介:连接中断可以由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


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

查看所有标签

猜你喜欢:

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

C语言基础

C语言基础

安博教育集团 / 2012-2 / 37.00元

《C语言基础》深入浅出地介绍了C语言程序设计的基础知识,内容涉及C语言基础、算法基础、变量、数据类型、运算符、输入/输出相关函数、选择结构、循环结构、各种表达式、数组、字符串、指针、函数、结构体、ISO C99的扩展语法等。全书内容丰富,结构严谨,层次清晰,语言生动,论述精准而深刻,实例丰富而实用。 《C语言基础》不仅适合用做计算机职业培训的首选教材,也可作为普通高校教材使用,更是C语言初学......一起来看看 《C语言基础》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试