TCP传输中的“三次握手”建立连接和“四次握手”释放连接过程

TCP连接管理涉及三次握手建立连接和四次握手释放连接。本文介绍了这两个过程,解释了为何需要三次握手来确保连接的可靠性,并详细阐述了四次握手释放连接的步骤,以防止资源浪费。

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

TCP的连接管理主要面向三个连接阶段,分别是连接建立,传输数据,连接释放。
其中连接的建立和连接释放是两个重要的知识点,分别有两个比较形象的称呼:三次握手和四次握手。
最近正在学习传输层的知识,故借本文对这两个阶段进行简要整理。

首先必须明确的是TCP协议是采用客户/服务器的方式,主动发起连接建立的应用进程称为客户机,被动等待连接建立的应用进程称为服务器。

三次握手

在这里插入图片描述
一次连接建立的过程如下:

  1. 客户机首先向服务器发送一个TCP请求连接报文,报文不含应用层数据,比较值得注意的是就是报文首部字段,SYN = 1, seq = J;SYN=1表示这是一个请求连接报文,而seq = J 则是表示该报文段的序号,用于确保可靠传输(报文不携带数据但是仍然消耗一个序号)。
  2. 服务器收到请求连接报文之后,若同意该请求,则为该TCP分配缓存,然后发送一个确认连接报文,其首部的字段分别为:SYN= 1,seq = K,ACK = 1, ack = J + 1;SYN=1表示这是一个连接接收报文,seq表示服务器发送报文的序号,ACK是确认位,而ack = J + 1则是表示服务端已经收到了J号报文,下一个报文希望接收的是序号为 J + 1的报文。
  3. 当客户端接收到服务器的确认报文之后,需要再向服务端进行确认连接。这是再发送一个普通的确认报文即可。其ACK=1,ack = K+1.

这里值得注意的一个点就是,为什么不能一次或者两次握手就完成连接?
我们来假设一下,如果使用一次握手那么会存在什么样的问题?
服务端不同意请求或繁忙,但由于是一次握手,客户端不清楚服务器是否为其分配了缓存,这样就会导致后续的数据传输失效。<

TCP是一种面向连接的可靠传输协议,它在数据传输之前需要先建立连接传输结束后再释放连接TCP连接建立释放过程分别需要进行三次握手四次握手。 1. 三次握手建立连接 三次握手建立连接过程如下: 第一步:客户端发送SYN报文给服务端,请求建立连接,SYN=1,ACK=0,序号seq=x。 第二步:服务端收到SYN报文后,发送SYN+ACK报文给客户端,确认连接请求,SYN=1,ACK=1,序号seq=y,确认号ack=x+1。 第三步:客户端收到SYN+ACK报文后,发送ACK报文给服务端,确认连接建立,SYN=0,ACK=1,序号seq=x+1,确认号ack=y+1。 此时,TCP连接建立成功,客户端服务端可以开始进行数据传输。 2. 四次握手释放连接 四次握手释放连接过程如下: 第一步:客户端发送FIN报文给服务端,请求关闭连接,FIN=1,ACK=0,序号seq=u。 第二步:服务端收到FIN报文后,发送ACK报文给客户端,确认关闭请求,FIN=0,ACK=1,序号seq=v,确认号ack=u+1。 第三步:服务端发送FIN报文给客户端,请求关闭连接,FIN=1,ACK=1,序号seq=w,确认号ack=u+1。 第四步:客户端收到FIN报文后,发送ACK报文给服务端,确认关闭请求,FIN=0,ACK=1,序号seq=u+1,确认号ack=w+1。 此时,TCP连接已经关闭,客户端服务端不再进行数据传输。 总结:TCP三次握手建立连接过程是一个对称的过程,而四次握手释放连接过程则是一个不对称的过程。在建立连接时,客户端服务端需要确认对方的序号确认号,以确保连接的可靠性;在释放连接时,服务端需要等待客户端的确认,以确保数据传输的完整性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值