TCP连接的建立与终止

本文详细解析了TCP协议中连接的建立与终止过程。通过三次握手建立连接,确保双方同步并确认序列号,实现可靠的数据传输。在连接终止时,通过四次挥手确保数据完全传输,优雅地关闭连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                              

ACK(acknowledge) 确认序号
SYS(Synchronize) 同步序号
FIN (finish)发送端完成发送任务

连接的三次握手
为了建立一个TCP连接需要经过三次握手;
第一次;请求端发送一个SYN段指明客户打算连接的服务器的端口,以及初始序号(ISN)。
第二次;服务端发送返回报文段SYN作为应答,序号为服务端初始序号(ISN)并将确认序号字段(ACK字段置1,表示序号有效)序号设置为客户端初始序号+1
第三次;客户端返回确认序号(ACK字段置1,表示序号有效),确认序号必须是服务端序号+1,以作为对服务器的SYN报文进行确认。
三次握手图如下所示:

                          

                                                                                  TCP的三次握手

在建立TCP连接时双方没有交换任何数据建立一个连接需要三次握手,而终止一个连接要经历过4次握手。

第一次;当一方完成数据发送任务后就能发送一个FIN(FIN字段置1)和序号来终止这个方向上的链接。收到一个FIN只意味着在这一方向上没有数据流动。一个TCP连接在收到一个FIN后很可能仍然能发送数据,这对半关闭的应用来说是可能的。
第二次;当一服务器收到一个FIN时它返回一个ACK(ACK字段置1),确认序号为收到的序列号+1(和SYN一样一个ACK也占用一个序号),同时服务器还应向应用程序传送一个文件结束符,接着这个服务器就关闭它的连接,导致它的服务端发送一个FIN(第三次)。

第四次;客户端发回一个确认(ACK字段置1),并将确认序号设置为第三次的序号+1。

下图中显示了终止一个连接的典型握手顺序,我们省略了序号。在这个图中,发送FIN将导致应用程序关闭它们的连接,这些FIN的ACK是由TCP软件自动产生的。

                            

                                                                               终止时的四次握手 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值