TCP的三次连接与四次断开?

本文详细解析了TCP协议中连接建立的三次握手过程及断开连接的四次握手过程,深入探讨了SYN与FIN报文在连接与断开过程中的作用,以及为何断开连接需要四次握手。

TCP的三次连接与四次断
注:
SYN表示建立连接, FIN表示关闭连接, ACK表示响应

Client 与 Server 连接前的三次握手过程:
恋爱之三次握手
TCP三次握手
TCP连接三次握手
1.连接开始时,连接建立方(Client)发送SYN包,并包含了自己的初始序号X;

2.连接接受方(Server)收到SYN包以后会回复一个SYN包,其中包含了对上一个X包

的回应信息ACK,回应的序号为下一个希望收到包的序号,即X+1,然后还包含

了自己的初始序号Y;

3.连接建立方(Client)收到回应的SYN包以后,回复一个ACK包做响应,其中包含了下一个希望收到包的序号即Y+1。

Client 与 Server 断开时的四次握手过程:
分手之四次断开
TCP四次断开
TCP四次断开
假设 A 为主动断开方,B 为被动断开方

1.首先进行关闭的一方(即发送第一个FIN)将执行主动关闭,而另一方(收到这

个FIN)执行被动关闭。

2.当服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。

3.同时TCP服务器还向应用程序(即丢弃服务器)传送一个文件结束符。接着这个

服务器程序就关闭它的连接,导致它的TCP端发送一个FIN。

4.客户必须发回一个确认,并将确认序号设置为收到序号加1。

*注:虽然双方都同意关闭连接了,而且握手的4个报文也都发送完毕,按理可以直接回到 CLOSED 状态(好比从 SYN_SENT 状态到 ESTABLISH 状态那样),但是我们需要考虑到网络是不可靠的,你无法保证你(客户端)最后发送的 ACK 报文一定会被对方收到,就是说对方处于 LAST_ACK 状态下的 SOCKET 可能会因为超时未收到ACK 报文,而重发 FIN 报文,所以这个 TIME_WAIT 状态的作用就是用来重发可能丢失的ACK报文。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值