深入理解 TCP 协议

从 IP 到 UDP 再到 TCP,解析数据包在网络中的传输机制与浏览器工作原理。

一个数据包的“旅程”

1. IP:把数据包送达目的主机

计算机在网络中的地址称为 IP 地址。访问任何网站,本质上都是你的计算机向另一台计算机请求信息的过程。

简化的 IP 网络三层传输模型: IP 网络三层传输模型示意图

2. UDP:把数据包送达应用程序

IP 协议负责将数据包发送给指定的计算机,但这还不够,因为计算机上运行着各种不同的程序。

  • 定义:“用户数据包协议(User Datagram Protocol)”,简称 UDP
  • 作用:UDP 中最重要的信息是端口号。IP 通过 IP 地址把数据包发送给指定的电脑,而 UDP 通过端口号把数据包分发给正确的程序。
  • 特点:UDP 不保证数据的可靠性,但传输速度非常快,适用于对实时性要求高但对丢包不敏感的应用(如视频会议、在线游戏)。

简化的 UDP 网络四层传输模型: UDP 网络四层传输模型示意图

3. TCP:把数据完整地送达应用程序

对于要求数据传输**可靠性(Reliability)**的应用,如果直接使用 UDP 传输会面临两个主要问题:

  1. 丢包:数据包在传输过程中容易丢失。
  2. 乱序:大文件会被拆分成多个小数据包传输,这些数据包可能经过不同的路由、在不同时间到达。UDP 无法将这些乱序包还原为原始文件。

TCP(Transmission Control Protocol,传输控制协议) 是一种面向连接的、可靠的、基于字节流的传输层通信协议。相对于 UDP,TCP 具备以下核心特点:

  • 重传机制:针对数据包丢失的情况,TCP 提供重传功能。
  • 排序机制:TCP 引入了数据包排序,保证乱序到达的数据包能被重新组合成完整的文件。

简化的 TCP 网络四层传输模型: TCP 网络四层传输模型示意图

TCP 连接的生命周期

一个完整的 TCP 连接生命周期包含三个阶段:“建立连接”、“传输数据”和“断开连接”。

TCP 生命周期示意图

  1. 建立连接阶段

    • 该阶段通过“三次握手”来建立客户端和服务器之间的连接。
    • TCP 提供面向连接的通信传输。面向连接是指在数据通信开始之前,先做好两端之间的准备工作。
    • 三次握手:指在建立一个 TCP 连接时,客户端和服务器总共要发送三个数据包以确认连接的建立。
  2. 传输数据阶段

    • 在该阶段,接收端需要对每个数据包进行确认操作。即接收端收到数据包后,需发送确认数据包给发送端。
    • 重发机制:若发送端在规定时间内未收到确认消息,则判断数据包丢失,触发重发。
    • 排序重组:大文件被拆分的小数据包到达接收端后,接收端会根据 TCP 头中的序号进行排序,从而保证组成完整的数据。
  3. 断开连接阶段

    • 数据传输完毕后,需要终止连接。
    • 此阶段涉及“四次挥手”,以确保双方都能安全断开连接,释放资源。

总结

  • 数据包传输:互联网中的数据通过数据包传输,传输过程面临丢失或出错的风险。
  • IP 协议:负责将数据包准确送达目的主机。
  • UDP 协议:负责通过端口号将数据包分发给具体的应用程序,速度快但不可靠。
  • TCP 协议:保证数据的完整性和可靠性。其连接生命周期分为三个阶段:
    1. 建立连接(三次握手)
    2. 传输数据(确认、重传、排序)
    3. 断开连接(四次挥手)
comments powered by Disqus