一篇文章读懂“三次握手”与“四次挥手”

本文详细解析TCP连接的建立(三次握手)和释放(四次挥手)过程,包括每次握手和挥手的具体步骤,以及为什么需要3次握手和4次挥手的原因。通过阅读,读者可以理解TCP连接的可靠性和全双工特性。

所谓“三次握手”与“四次挥手”,其实就是TCP连接的建立和释放的过程。

三次握手(建立TCP连接)

建立连接之前,客户端主动结束CLOSED阶段,相应地服务器也结束CLOSED阶段并进入LISTEN阶段,然后开始“三次握手”:

  1. 第一次握手
    客户端将包含:
    1)标志位SYN=1(表示“请求建立连接”),
    2)序号seq=x(x为随机数)
    的TCP报文发送给服务器,然后客户端进入SYN_SENT阶段,等待服务器确认。
  2. 第二次握手
    服务器收到客户端发来的请求建立连接的TCP报文,结束LISTEN阶段,将包含:
    1)标识位为SYN=1和ACK=1(表示“确认客服端的报文seq有效,服务器能正常接收客户端发送的数据,并同意创建连接”)
    2)序号seq=y(y为随机数)
    3)确认号ack=x+1(表示“收到客户端的序号seq,并将其值+1作为自己确认号ack的值”)
    的TCP报文返回给客户端,然后服务端进入SYN_RCVD阶段。
  3. 第三次握手
    客户端收到服务器返回的报文后,检查ACK是否为1,ack是否为x+1,如果是,则表明从客户端到服务器的数据传输正常,客户端结束SYN-SENT阶段,并将包含:
    1)标志位ACK=1(表示“收到服务器端同意连接的信号”)
    2)序号seq=x+1(表示“收到服务端的确认号ack,并将其值作为自己序号seq的值”)
    3)确认号ack=y+1(表示“收到服务端的序号seq,并将其值+1作为自己确认号ack的值”)
    的TCP报文返回给服务端,然后客户端进入ESTABLISHED阶段。
    服务器收到来自客户端的TCP报文之后,检查ACK是否为1,如果是,则表明从服务器到客户端的数据传输是正常的。服务端结束SYN_RCVD阶段,进入ESTABLISHED阶段。
    至此,三次握手过程结束,此后客户端与服务器可以进行正常的数据传输。

四次挥手(释放TCP连接)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值