TCP通信过程三次握手、TCP通信四次挥手

2年前Python源码27820
TCP通信过程三次握手、TCP通信四次挥手 jun8086 于2022-10-18 21:26:19发布 227 收藏 分类专栏: Linux学习 C语言 文章标签: tcp/ip 服务器 网络 Linux学习 同时被 2 个专栏收录 8 篇文章 0 订阅 订阅专栏 C语言 10 篇文章 0 订阅 订阅专栏 TCP通信过程三次握手、TCP通信四次挥手 一、TCP通信特点:点对点的连接,保证数据准确性,内容时序无误; 二、TCP三次握手

1、握手前服务器必须处于listen 状态; 2、第一个握手包由客户端发往服务器端,此包为请求包,发完后客户端处于SYN_SEND 状态; (第一次握手 :客户端向服务器端发送SYN报文(seq=x,SYN=1;),字节进入SYN_SEND状态,等待服务器确认。) 3、服务器收到客户端第一个握手包后,发送第二个握手包,此包既为确认包也是请求包,发送完成后服务器处于SYN_RCVD状态; 第二次握手:分两部分,即SYN+ACK(请求和确认)报文: ①服务器收到了客户端的请求,向客户端回复一个确认信息(ACK+1); ②服务器再向客户端发送一个SYN包(seq=y),建立连接的请求,此时服务器进入SYN_RECV状态; 4、客户端收到服务器回包后,确认数据正常后发送第三个握手包,此包为确认包,发送完成后客户端处于ESTABLISHED状态; 第三次握手:客户端收到服务器的回复(SYN+ACK报文),客户端向服务器发送确认包(ACK),此包发送完毕,客户端和服务器端都进入ESTABLISHED 状态,完成三次握手。 5、服务器收到最后一个确认包后确认数据数据无误后状态变更为 ESTABLISHED; 注意:三次握手的目的是确认服务器端、客户端的收发数据包功能正常。seq表示请求序列号,ACK 表示确认序列号,SYN 和ACK 为标志位。 三、TCP四次挥手 在挥手过程中,请求断开的可以是服务器也可以是客户端,但往往都是客户端主动断开连接的。

1.第一次挥手:主动方数据传输完毕需要断开连接,向TCP 发出连接释放报文(FIN=1,seq=y),同时进入FIN_WAIT_1状态,等待被动方确认; 2.第二次挥手:被动方收到连接释放报文,立即发出确认报文(ACK=1,确认号:ack=y+1),并且进入CLOSE_WAIT状态,主动方收到确认报文后之后若有之前的数据未发送完,此时发送,发送完后进入FIN_WAIT_2状态,等待被动方发出连接释放报文; 3.第三次挥手:在第二次挥手中,被动方发出确认报文后,继续发送之前未发送的数据,在数据发送完成后,被动方发出连接释放报文(FIN=1,ACK=1,序列号seq=z),随后被动方进入LAST_ACK状态,等待主动方最后确认; 4.第四次挥手:主动方在收到被动方的连接释放报文后,对此发出确认报文段(ACK=1,ack=z+1),主动端进入TIME_WAIT 状态,被动端收到主动端的确认报文后,立即进入CLOSE状态,主动方,在等待两个最大报文生存时间后进入CLOSE状态。(原因:①保证主动端发送的最后一个ACK 报文能够到达被动端;②防止已经失效的连接请求报文段出现在本连接中)。

相关文章

游戏测试面试总结(网易雷火、飞鱼科技、冰川网络、完美世界、搜狐畅游)

游戏测试面试总结(网易雷火、飞鱼科技、冰川网络、完美世界、搜狐畅游)...

Ubuntu20.04安装详细图文教程(双系统)

Ubuntu20.04安装详细图文教程(双系统)...

第十三届蓝桥杯Java、C++、Python组国赛真题——最大公约数(三语言AC)

第十三届蓝桥杯Java、C++、Python组国赛真题——最大公约数(三语言AC)...

Ubuntu20.04、22.04安装nvidia显卡驱动

Ubuntu20.04、22.04安装nvidia显卡驱动...

2021年长安杯电子数据取证比赛复盘完整版(wp)

2021年长安杯电子数据取证比赛复盘完整版(wp)...

网安学习路线!最详细没有之一!看了这么多分享网安学习路线的一个详细的都没有!

网安学习路线!最详细没有之一!看了这么多分享网安学习路线的一个详细的都没有!...