TCP协议的三次握手与四次挥手

首先先了解一下什么是TCP

TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在TCP中,连接的建立和终止都需要一系列的握手动作来完成。

符号概念:

        SNY:同步位,表示连接请求;

        ACK:确认位, 有效(=1),无效(=0);

        Ack:确认号,对方发送序号(Seq)+1;

        SEQ:序号;

        FIN:断开连接,停止发送数据;

三次握手用于建立一个TCP连接,确保双方都已经准备好接收数据。以下是三次握手的具体步骤:

1. 第一次握手(SYN):
        客户端向服务器发送一个带有SYN标志的TCP段,同时选择一个初始序列号Seq=x,这表示客户端请求与服务器建立连接。
        此时客户端进入SYN_SENT状态,等待服务器确认。

2. 第二次握手(SYN+ACK):
        服务器接收到客户端的SYN请求后,如果同意建立连接,则回复一个带有SYNACK标志的TCP段,确认号为Ack=x+1(确认客户端的序列号),同时选择自己的初始序列号Seq=y
        此时服务器进入SYN_RCVD状态。
        客户端接收到这个包后,进入ESTABLISHED状态。

3. 第三次握手(ACK):
         客户端接收到服务器的SYN+ACK后,会发送一个带有ACK标志的TCP段,确认号为Ack=z=y+1,表明已经收到了服务器的SYN
        此时客户端和服务器都进入`ESTABLISHED`状态,连接建立完成。

图解如下:


四次断开用于终止一个TCP连接,确保所有的数据都被正确接收,并且没有数据丢失。以下是四次断开的具体步骤:

1. 第一次挥手(FIN):
         假设客户端首先决定关闭连接,它将发送一个带有`FIN`标志的TCP段,同时包含一个序列号Seq=u
        此时客户端进入`FIN_WAIT_1`状态。

2. 第二次挥手(ACK):
        服务器接收到`FIN`后,发送一个带有`ACK`标志的TCP段作为确认,确认号为Ack=v=u+1
        此时服务器进入`CLOSE_WAIT`状态,客户端进入`FIN_WAIT_2`状态,等待服务器关闭连接。

3. 第三次挥手(FIN):
        服务器在完成所有数据的发送后,也发送一个带有`FIN`标志的TCP段,同时包含一个序列号Seq=w
        此时服务器进入`LAST_ACK`状态。

4.第四次挥手(ACK):
        客户端接收到服务器的`FIN`后,发送一个带有`ACK`标志的TCP段作为确认,确认号为Ack=x=w+1
        客户端进入`TIME_WAIT`状态,等待足够的时间(通常是2MSL,Maximum Segment Lifetime)以确保服务器收到了最后一个`ACK`。
        服务器收到`ACK`后,进入`CLOSED`状态。
        客户端在`TIME_WAIT`状态结束后,也进入`CLOSED`状态,连接完全关闭。

图解:

这些握手和挥手过程确保了数据的可靠传输连接有序关闭

  • 21
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

祈白.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值