TCP 和 UDP 是用于建立通过 Internet 连接交换数据的方式的连接协议。 如果您已经知道 IP 代表什么(即 Internet 协议),那么您就已经知道了,因为 TCP 和 UDP 都是在它之上开发的。
但是,您认为它们几乎相同是错误的。 尽管 TCP 和 UDP 在 Internet 上发送/接收数据的方式上都“有发言权”,但它们实际上是完全不同的,因此,它们用于不同的目的。
简而言之,假设您在每天访问 Internet 时无意中使用了这两种协议,这使得它们在您的设备与开放 Web(以及连接到它的设备)通信的方式中至关重要,反之亦然。
由于 TCP 和 UDP 都是建立在 Internet 协议之上的,因此在直接进入 TCP/UDP 介绍性课程之前,您可能需要更多地了解 IP。 你知道,你需要先学会走路才能跑步。
目录
什么是 IP 地址?
IP 是 Internet 协议的缩写,是我们所知道的 Internet 建立在其之上的主干。 通过为每个设备分配一个唯一的 IP 地址以使其能够访问 Internet,这一事实可以很容易地看出它的重要性。
过去的地址仅由数字和小数组成。 更具体地说,一个 IPv4 地址可以由四个单独的数字组成,每个数字的值都在 0 到 254 之间。IPv4 为我们提供了总共 43 亿个唯一 IP 地址。
不可避免地,Internet 开始发展到无法生成新的唯一 IP 地址的地步,这时 IPv6 系统的出现挽救了局面。 公共 IPv6 地址使用十六进制数字,每个包含 128 位,这意味着它们使用基数 16(0 到 10 加上“a”到“f”)而不是基数 10(0 到 10)。
在 IPv6 系统的帮助下,我们可以拥有的公共 IPv6 地址的总范围是 340 undecillion (3.4 * 10^28)。 如果这无法理解,请查看 IPv4 和 IPv6 地址如下所示:
IPv4 地址示例:10.238.126.215
IPv6 地址示例:fe80:0db8:0412:2001:3c5e:0000:10a9
虽然最终目标是让 IPv6 取代 IPv4,但如今这两种协议协同工作。
IP 地址允许支持 Internet 的设备定位、相互通信和交换信息。 如果没有 IP 地址,就无法共享数据、流式传输视频或发送电子邮件。 您在网上所做的一切都可以转录成数据。
为了确保最佳功能,IP 将这些数据分成更小的块,以便更好地管理它。 我们将这些数据块称为数据包。 但是,这些数据包不仅包含它们应该携带的信息,还包含它们需要到达的设备的目标 IP 地址。 该目的地称为标头。
数据包离开您的设备后,它会前往网关,该网关会在其域中扫描您的数据包的目标 IP 地址。 值得一提的是,网关只能看到互联网上给定的一组 IP 地址。
因此,如果网关在其域中找不到地址,它只会将数据包发送到不同的网关,并且此操作会一直进行,直到数据包到达可以检测到标头中指定的目标 IP 地址的网关并发送它发送到与该地址关联的设备。
另一件值得注意的事情是,您的数据被分成小数据包这一事实意味着它不一定需要按顺序到达,甚至不需要使用相同的路线。 事实上,数据包通常每次都尝试找到最快的路由。
最后但并非最不重要的一点是,您应该知道 Internet 协议不是特定于格式的,因此它非常适合任何形式的数据,无论我们谈论的是视频、图像、音频、电子邮件、即时消息,甚至是游戏。
什么是 TCP?
TCP代表传输控制协议,是Internet协议套件使用的主要协议之一。 它出现在 UDP 之前,用于使程序和设备能够通过网络交换信息。
您可能会注意到,有时它与 IP 配对,称为 TCP/IP,但它的含义相同(即 TCP 和 TCP/IP 是完全相同的东西)。
如上所述,数据被分成小数据包并以这种分段形式发送到其他设备,甚至可能在不同的路由上。 TCP 的发明是为了将这些数据包重新组合成原始形式。
TCP 等待所有数据包到达,对它们进行计数,使用校验和检查它们的错误,确认到达目的地的数据包,并要求始发计算机重新发送那些第一次没有到达的数据包。 在接收到所有数据包后,TCP 将它们重新组合成原始数据并将其传递给适当的应用程序(例如电子邮件客户端、图片查看器、视频播放器)。
这个过程现在发生得非常快,它确保数据到达接收者的机器上与发送者设备上的完全一样,没有任何不可告人的改动。 此外,它还涉及两端的持续通信,因为该过程实际上可以被描述为参与设备之间的持续来回,直到数据到达并被 100% 确认。
不言而喻,设备之间的这种持续通信给 TCP 带来了极大的压力,因为任何丢失或损坏的数据包都可能停止该过程,直到丢失的位安全到达其目的地。 然而,TCP 并不一定要自己做所有事情,所以不久之后就发明了 UDP。
简而言之,TCP:
确保没有丢包
如果检测到任何丢失的数据包,则要求重新发送数据包
按顺序发送数据包,以便轻松重新组装
最流行的互联网协议
比 UDP 慢,因为它需要确保每个数据包都到达
适用于网站、电子邮件、FTP(文件传输协议)、P2P 文件共享
什么是UDP?
UDP 是用户数据报协议的缩写,是 TCP 的替代方案,因此可以安全地假设它们本质上执行相同的任务。 然而,它们同时也有很大的不同,因为 TCP 在检查数据包数据方面非常细致,而 UDP 则更加粗心。
想象一下,两名员工在邮件分拣站处理信件:TCP 会仔细检查每封信件并在每封信件到达之前停止所有通信,而 UDP 只是检查信件的完整性并将它们转发到目的地,同时丢弃任何信件没有到达,也没有要求重新发送。
所以可以肯定地说 UDP 更快,但为什么要牺牲速度而牺牲一路丢失数据呢? 好吧,基本上有一些应用程序丢失数据包并不完全是悲剧。
例如,如果您正在使用 VoIP 客户端并与某人交谈,您可能会注意到偶尔的帧丢失或音频中的一些口吃,这在大多数情况下很容易被忽略,因此并不重要。 游戏也是如此,您可能会不时注意到游戏卡顿或橡皮筋。 您只需继续播放,这就是它的结束,因为 UDP 只是丢弃在传输过程中丢失的数据包。
换句话说,UDP:
比 TCP 更快并且使用更少的资源
不一定按顺序发送数据包
丢弃任何丢失的数据包以加快连接速度
发送方无法查明数据包是否被丢弃
主要用于视频流、VoIP、游戏和直播
VPN 使用中的 TCP 和 UDP
如今,越来越多的 VPN 开始采用 WireGuard 或制作其专有协议以供使用,但其中许多都依赖 OpenVPN,因为这些年来它仍然可靠、快速和安全。
但是,您可能不知道 OpenVPN 可与 TCP 和 UDP 一起使用,并且大多数情况下它允许您在这两种协议之间进行选择。 虽然这听起来像是一个重大决定(数据完整性与速度),但真正的问题在于其他地方。
在使用 VPN 时,您可能无法注意到 TCP 和 UDP 在速度方面的任何巨大差异。 但是,如果您的连接需要绕过防火墙,那么情况就会发生变化,主要是因为这些协议在不同的端口上运行,并且某些防火墙可能会阻止某些类型流量的默认端口。
因此,为什么 VPN 提供商让您在 TCP 和 UDP 之间进行选择。 如果您发现您的连接不适用于一种协议,您可以切换到另一种协议并交叉手指。 一些 VPN 提供商为您提供高级设置,您还可以在其中为连接选择自定义端口以避免防火墙。
TCP和UDP之间的区别
TCP
UDP
TCP 是 Internet 上使用最广泛的协议
所有发送的数据都会到达接收者,没有丢包保证
数据包按顺序发送
需要更多资源,这也使其变慢。
UDP 用于游戏、视频流、VoIP、直播
发件人不知道数据包是否丢失(未收到)
数据包不一定按顺序发送
所需资源更少,速度更快。
TCP 与 UDP:结论
总而言之,TCP 和 UDP 是非常相似的协议,因为它们确保您的数据安全到达目的地,并且在途中不会被修改。
TCP 在传输数据时执行多项检查,并且通常更严格地不丢失数据包,这使其非常适合网站、电子邮件、即时消息、图片和文件共享。
UDP 只是检查目的地是否正确并检查数据包的完整性,但不会要求发送方重新发送任何丢失的数据包,而是直接丢弃它们,这意味着您将获得更快的连接,但您可能会丢弃数据包道路。 UDP 主要用于游戏、VoIP、流媒体视频和直播内容,丢失一些数据包不应该对最终结果产生太大影响。