它们是什么+ TCP和UDP之间的区别

在互联网世界中,数据的传输如同高速公路上的车辆,需要一定的规则和协议来保证其顺利到达目的地。TCP (传输控制协议) 和 UDP (用户数据报协议) 正是两种关键的连接协议,它们定义了数据如何在网络中交换。了解它们之间的差异,对于理解网络通信的本质至关重要。

虽然 TCP 和 UDP 都建立在 IP (互联网协议) 之上,并且都负责数据在互联网上的发送和接收,但它们的工作方式和适用场景却截然不同。将它们视为网络通信的两种不同策略,每种策略都有其独特的优势和局限性。

实际上,在您每天上网浏览网页时,这两种协议都在默默地发挥作用,它们确保您的设备能够与开放的网络世界及其中的其他设备进行有效的沟通。为了更好地理解 TCP 和 UDP,我们需要先回顾一下它们的基础:IP地址。

什么是 IP 地址?

IP,即互联网协议,是互联网的基石。它为每个连接到网络的设备分配一个唯一的 IP 地址,这如同为每个房屋分配一个唯一的门牌号,使得数据能够准确地送达目的地。

早期的 IP 地址 (IPv4) 由四个独立的数字组成,每个数字的范围在 0 到 254 之间,这为我们提供了大约 43 亿个唯一的地址。但随着互联网的飞速发展,IPv4 地址资源很快就耗尽了。

为了解决这个问题,IPv6 系统应运而生。IPv6 地址采用十六进制数字,每个地址包含 128 位,可以提供高达 340 涧(3.4 * 10^38)个唯一的地址。 想象一下,这如同拥有宇宙中所有星星的唯一标识!

IPv4 地址示例:10.238.126.215
IPv6 地址示例:fe80:0db8:0412:2001:3c5e:0000:10a9

尽管 IPv6 的目标是最终取代 IPv4,但目前这两种协议仍然在共同运作,保证着互联网的正常运转。IP 地址的作用在于允许设备定位彼此,进行通信和交换信息。没有 IP 地址,就没有数据的分享,视频的播放,或者电子邮件的发送。互联网上的一切操作,都可以转化为数据的传输。

为了优化传输效率,IP 将数据分割成更小的块,即数据包。每个数据包不仅包含要传输的信息,还包含目标设备的 IP 地址,这个目标地址被称为头部。当数据包离开您的设备后,它会到达网关,网关会在自己的管理域内寻找目标 IP 地址。如果网关在自己的域内找不到目标地址,它会将数据包转发到另一个网关,直到数据包到达能够识别目标 IP 地址的网关,并最终将其发送给相应的设备。

值得注意的是,数据包被分割成小块后,它们不一定需要按顺序到达,甚至可以走不同的路径。事实上,数据包通常会尝试寻找最快的路由到达目的地。而且,互联网协议没有特定的格式要求,这使得它可以灵活地传输各种形式的数据,例如视频、图像、音频、电子邮件、即时消息,甚至游戏数据。

传输控制协议(TCP):可靠传输的保证

TCP,全称传输控制协议,是互联网协议套件中最主要的协议之一。它早于 UDP 出现,并被广泛用于支持程序和设备通过网络交换信息。您可能经常看到 TCP 与 IP 组合成 TCP/IP,但这实际上指的是同一个东西,即 TCP 和 TCP/IP 可以互换使用。

正如之前所提到的,数据被分成数据包并通过网络发送,而且这些数据包可能走的路径各不相同。TCP 的作用在于,它负责将这些分散的数据包重新组合成原始的完整数据。TCP 会等待所有的数据包到达,对它们进行计数,利用校验和检查错误,确认数据包是否到达目的地,并且会请求发送方重新发送那些没有到达的数据包。在接收到所有数据包之后,TCP 会将它们按照正确的顺序重新组装,还原成原始数据,然后将其传递给相应的应用程序,例如电子邮件客户端、图片查看器或视频播放器。

虽然这一过程非常快速,但它可以确保数据在接收方设备上与发送方设备上完全一致,没有任何丢失或修改。此外,这还涉及到设备之间持续的通信,这个过程可以被视为设备之间的持续往复,直到数据完全到达并被 100% 确认。

然而,设备之间持续的通信给 TCP 带来了巨大的压力,因为任何丢失或损坏的数据包都可能导致进程停止,直到丢失的部分安全到达目的地。因此,UDP 协议应运而生,以应对 TCP 在某些场景下的局限性。

TCP 总结:

  • 确保没有数据包丢失
  • 如果检测到任何丢失的数据包,则要求重新发送
  • 按顺序发送数据包,便于重新组装
  • 互联网上最常用的协议
  • 速度慢于 UDP,因为它需要保证每个数据包都到达
  • 适用于网站浏览、电子邮件、FTP(文件传输协议)、P2P 文件共享

用户数据报协议(UDP):速度至上的选择

UDP,全称用户数据报协议,是 TCP 的一种替代方案,因此它们在本质上执行相同的任务:数据传输。然而,它们之间的区别也显而易见,TCP 对数据包的检查非常细致,而 UDP 则显得更加随意。

想象一下,两名员工在邮件分拣站处理信件:TCP 会仔细检查每封信件,并在每封信件到达之前停止所有通信,而 UDP 只是检查信件的完整性,然后将其转发到目的地,同时丢弃任何没有到达的信件,也不要求重新发送。因此,可以说 UDP 更快,但为什么要在速度方面牺牲数据完整性呢?实际上,在某些应用程序中,丢失数据包并不是什么大问题。

例如,如果您在使用 VoIP 客户端与人通话时,您可能会注意到偶尔的帧丢失或音频出现一些卡顿,但这在大多数情况下很容易被忽略,并且不会造成实质性的影响。游戏也是如此,您可能时不时会注意到游戏延迟或卡顿。您只需继续游戏即可,UDP 会直接丢弃在传输过程中丢失的数据包。

UDP 总结:

  • 比 TCP 更快且占用更少的资源
  • 不一定按顺序发送数据包
  • 丢弃任何丢失的数据包以加快连接速度
  • 发送方无法知道数据包是否被丢弃
  • 主要用于视频流、VoIP、游戏和直播

VPN 中 TCP 和 UDP 的应用

现在,越来越多的 VPN 开始采用 WireGuard 或开发其专有协议,但许多 VPN 仍然依赖 OpenVPN,因为它在过去的几年里始终可靠、快速且安全。您可能不知道 OpenVPN 既可以使用 TCP 也可以使用 UDP,并且在大多数情况下,您可以选择使用哪种协议。 虽然这听起来像是一个重大决策,因为涉及到数据完整性与速度之间的权衡,但真正的问题可能在于其他地方。

当使用 VPN 时,您可能不会注意到 TCP 和 UDP 在速度上的明显差异。但是,如果您的连接需要绕过防火墙,情况就可能会发生变化,主要是因为这些协议在不同的端口上运行,而某些防火墙可能会阻止某些类型流量的默认端口。因此,VPN 提供商通常会允许您在 TCP 和 UDP 之间进行选择。 如果您发现某个协议不适用,您可以尝试切换到另一个协议。一些 VPN 提供商还提供高级设置,允许您选择自定义的连接端口,以绕过防火墙。

TCP 与 UDP 的差异对比

TCP UDP
TCP 是互联网上使用最广泛的协议 UDP 主要用于游戏、视频流、VoIP 和直播
保证所有发送的数据都能到达接收方,没有丢包 发送方不知道数据包是否丢失(未被接收)
数据包按顺序发送 数据包不一定按顺序发送
需要更多资源,速度相对较慢 所需资源更少,速度更快

结论:选择合适的协议

总而言之,TCP 和 UDP 都是非常重要的网络传输协议,它们确保数据安全地到达目的地,且在传输途中不会被修改。TCP 在传输数据时执行多项检查,并且通常更加严格地保证数据包不丢失,这使其非常适合网页浏览、电子邮件、即时消息、图片和文件共享。而 UDP 只是检查目标地址和数据包的完整性,不会要求发送方重新发送丢失的数据包,而是直接将其丢弃。这意味着你可以获得更快的连接速度,但可能会丢失部分数据。 UDP 主要用于游戏、VoIP、视频流和直播,在这些场景下,少量数据包的丢失通常不会对最终结果产生太大的影响。