1 Star 0 Fork 0

huyi / TechCPP

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
TCP和UDP三次握手和四次挥手状态及消息类型.md 2.26 KB
一键复制 编辑 原始数据 按行查看 历史
葛昆仑 提交于 2023-11-22 08:34 . update: 4 articles

TCP和UDP是互联网协议套件中的两种主要传输层协议。TCP是面向连接的协议,提供可靠的、面向字节流的通信,而UDP是无连接的协议,不保证消息的可靠传输。

TCP的三次握手和四次挥手是建立和关闭连接的过程。这里先说明TCP的三次握手和四次挥手状态及消息类型,再简述UDP。

TCP三次握手

建立TCP连接时,需要执行以下步骤:

  1. SYN(同步):客户端发送一个具有SYN标志的TCP包到服务器以请求建立连接。此时客户端进入SYN_SENT状态。
  2. SYN-ACK(同步应答):服务器收到SYN包后,返回一个具有SYN和ACK标志的TCP包。此时服务器进入SYN_RCVD状态。
  3. ACK(确认):客户端收到SYN-ACK包后,发送一个具有ACK标志的TCP包来确认连接建立。此时客户端和服务器均进入ESTABLISHED状态。

TCP四次挥手

关闭TCP连接时,需要执行以下步骤:

  1. FIN(结束):当一方(如客户端)完成数据传输,发送一个具有FIN标志的TCP包给对方(如服务器),请求关闭连接。此时客户端进入FIN_WAIT_1状态。
  2. ACK(确认):对方(如服务器)收到FIN包后,发送一个具有ACK标志的TCP包确认收到。此时客户端进入FIN_WAIT_2状态,服务器继续处理剩余数据。
  3. FIN(结束):当对方(如服务器)完成数据传输,也发送一个具有FIN标志的TCP包给发起方(如客户端),请求关闭连接。此时服务器进入LAST_ACK状态。
  4. ACK(确认):发起方(如客户端)收到对方的FIN包后,发送一个具有ACK标志的TCP包作为最后的确认。此时客户端进入TIME_WAIT状态,经过一段时间后释放连接,服务器在收到ACK包后则直接释放连接。

值得注意的是,在实际场景中,客户端和服务器通常都可以作为发起方或对方,上述描述仅作为示例。

UDP

与TCP不同,UDP是无连接的协议,因此没有类似于三次握手和四次挥手的过程。在UDP中,应用程序直接将数据封装成数据报,并发送给接收方。虽然UDP不能保证数据的顺序或可靠性,但由于其低延迟和高效率特点,在实时应用、广播和多播等场景下非常适用。

1
https://gitee.com/hylhm/TechCPP.git
git@gitee.com:hylhm/TechCPP.git
hylhm
TechCPP
TechCPP
master

搜索帮助