TCP的三次握手和四次挥手

TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输层协议,用于在网络中传输数据。TCP连接的建立和终止分别通过三次握手和四次挥手来完成。

三次握手(Three-Way Handshake)

  1. 第一步 - 客户端发起连接请求:

    • 客户端向服务器发送一个带有SYN(同步)标志的数据包,表明客户端要求建立连接。
    • 客户端选择一个初始序列号(ISN)作为起始值。
  2. 第二步 - 服务器确认请求并发起连接:

    • 服务器收到客户端的SYN请求后,向客户端发送一个带有SYN和ACK(确认)标志的数据包,表示同意建立连接。
    • 服务器也选择一个初始序列号作为起始值,并确认客户端的序列号。
  3. 第三步 - 客户端确认连接:

    • 客户端收到服务器的SYN-ACK后,向服务器发送一个带有ACK标志的数据包,表示连接已经建立。
    • 连接建立成功,数据传输可以开始。

四次挥手(Four-Way Handshake)

  1. 第一步 - 主动关闭:

    • 客户端或服务器一方发起关闭连接请求,向对方发送一个带有FIN(结束)标志的数据包。
  2. 第二步 - 被动关闭:

    • 接收到关闭请求的一方(被动关闭一方)收到FIN后,发送一个带有ACK标志的确认数据包,表示收到关闭请求。
  3. 第三步 - 被动关闭:

    • 等到数据传输完毕后,被动关闭一方向对方发送一个带有FIN标志的数据包,表示自己也准备关闭连接。
  4. 第四步 - 主动关闭:

    • 接收到带有FIN标志的数据包的一方发送一个带有ACK标志的确认数据包,完成连接的关闭。

总体而言,三次握手用于建立连接,四次挥手用于断开连接。挥手过程中,关闭连接的一方需要等待一段时间(TIME_WAIT状态)以确保对方收到最后的确认,防止可能的重传。这有助于确保连接的可靠关闭。

相关推荐
马拉萨的春天1 小时前
RTC、UDP、TCP和HTTP以及直播等区别
tcp/ip·udp·实时音视频
asdfg12589633 小时前
如何判断一个地址是否可以用作主机 IP 地址?
服务器·网络·tcp/ip
爱吃甜品的糯米团子4 小时前
Linux 学习笔记之进程管理、网络基础与常用软件安装
linux·网络·学习
ytttr8734 小时前
C语言实现Modbus TCP/IP协议客户端-服务器
服务器·c语言·tcp/ip
迷枫7125 小时前
19.1 TCP 和 UDP 有什么区别?
网络·tcp/ip·udp
取酒鱼食--【余九】5 小时前
深度学习经典网络解析:ResNet
网络·人工智能·深度学习·神经网络·resnet·卷积神经网络·残差神经网络
风清再凯6 小时前
05-k8s网络
网络·容器·kubernetes
LJ-SEU6 小时前
win-ubuntu网络转发
linux·网络·ubuntu
关关长语7 小时前
(一) Dotnet使用MCP的Csharp SDK
网络·.net·mcp
迎風吹頭髮7 小时前
Linux服务器编程实践26-TCP连接超时重连机制:超时时间计算与重连策略
服务器·网络·php