如果您正在进入计算机网络,或者如果您已经深入研究了某些应用程序的网络设置,您可能已经看到了这些术语:TCP和UDP。TCP代表传输控制协议,UDP或用户数据报协议是互联网协议套件的一部分。TCP和UDP是通过互联网发送信息的不同方法。但是,即使知道它们代表什么,也很难知道您应该使用哪种协议,或者为什么要使用一种协议。在本文中,我们将介绍计算机网络基础知识、TCP和UDP之间的差异、使用时间等。
计算机网络基础知识
在深入研究TCP和UDP的工作原理之前,了解互联网如何工作的基础知识是有帮助的。一般来说,互联网是一个连接设备的网络。每台设备,无论是智能手机还是服务器,都通过互联网协议套件进行通信。互联网协议套件是设备相互通信的不同协议或方法的集合。TCP和UDP都是互联网协议套件中的主要协议:连接到互联网的每台设备都有一个唯一的IP地址。每当两台设备通过互联网进行通信时,它们都可能使用TCP或UDP来执行此操作。以下是两者之间的简要比较:
对比表
比较实体 | TCP | UDP |
---|---|---|
基本功能 | 传输控制协议总是在数据包的任何通信过程开始之前首先在源主机和目的主机之间建立连接。 | 用户数据报协议将数据直接转发到目标主机,而无需在源端和目标端之间建立任何链路。 |
连接类型 | 它是一种面向连接的协议,表示必须在数据传输开始之前建立连接,并且一旦发送端和接收端之间的通信结束,通信设备应结束或终止连接。 | 它是一种无连接协议,表示在源端和目标端之间建立、维护和终止连接没有强制性要求。它最适合广播和组播目的。 |
速度 | 速度比UDP慢。 | 快然后TCP。它是一种实时传输协议。 |
可靠性 | 它非常可靠,因为通过确认过程,它确保将数据包正确传递到目标节点。 | 不能确保数据包的传递,因此它是一个不可靠的协议。 |
标头大小 | 20字节 | 8字节 |
确认 | TCP协议遵循发送方和接收方之间的握手过程,以确认在两个方向上接收数据包。因此,这提供了重新传输丢失数据包的功能。 | 它从不确认数据接收,因此没有机会重新传输数据。 |
使用的协议 | TCP用于数据传输的各种协议有HTTP(超文本传输协议),HTTP(超文本传输协议安全),FTP(文件传输协议)和SMTP(简单邮件传输协议)等。 | UDP用于数据传输的各种协议有BOOTP(Bootstrap协议),DHCP(动态主机配置协议),DNS(域名服务器)和TFTP(简单文件传输协议)等。 |
流控制 | 流量控制通过使用滑动窗口和拥塞避免算法等来完成。 | 遵循无过程 |
应用程序的数据接口 | 数据在基于消息的不同数据包中传输 | 数据在基于流的数据包中传输,并且不遵循特定的结构。 |
错误检查 | 错误检测和纠正是使用校验和完成的,数据包在从发送方更正后重新传输到目标端。 | 丢失的数据包将被丢弃,并且不执行错误检查过程。 |
应用 | 由于该协议提供了安全可靠的通信过程,因此,它被用于数据机密性是主要问题的服务,如军事服务,网页浏览和电子邮件等。 |
它用于需要快速通信的地方,并且数据可靠性不是VoIP,游戏流,视频和音乐流等问题。 |
什么是TCP?
TCP或传输控制协议是最常见的在线网络协议。TCP非常可靠,可用于从网上冲浪(HTTP),发送电子邮件(SMTP)和传输文件(FTP)的所有内容。TCP用于一个设备发送的所有数据必须由另一个设备完全完整接收的情况。
例如,当您访问网站时,TCP用于保证呈现页面所需的文本、图像和代码中的所有内容都到达。如果没有TCP,图像或文本可能会丢失,或者以不正确的顺序到达,从而破坏页面。
TCP是一种面向连接的协议,这意味着它在传输数据之前在两个设备之间建立连接,并在整个传输过程中保持该连接。
为了在两个设备之间建立连接,TCP使用一种称为三次握手的方法:
例如,要在设备上阅读本文,您的设备首先向免费的CodeCamp新闻服务器发送了一条名为SYN(同步序列号)的消息。
然后,freeCodeCamp新闻服务器发回一条名为SYN-ACK的确认消息。
当设备从服务器收到SYN-ACK时,它会发回ACK确认消息,从而建立连接。
一旦在两个设备之间建立了TCP连接,该协议就会保证所有数据的传输。
回到您的设备和freeCodeCampNews的示例,一旦三次握手完成,新闻服务器就可以开始发送设备的Web浏览器呈现本文所需的所有数据。
所有设备在通过互联网发送数据之前都会将数据分解成小数据包。然后,这些数据包需要在另一端重新组装。
因此,当freeCodeCamp新闻服务器发送本文的HTML,CSS,图像和其他代码时,它会将所有内容分解为小数据包,然后再将它们发送到您的设备。然后,您的设备将这些数据包重新组合到呈现本文所需的文件和图像中。
TCP确保这些数据包全部到达您的设备。如果在此过程中丢失了任何数据包,TCP使您的设备可以轻松地让服务器知道它丢失了数据,并让服务器重新发送这些数据包。
一旦您的设备收到呈现文章所需的所有数据,TCP就会使用类似于三向握手的方法自动终止两个设备之间的连接,这次使用FIN和ACK数据包。
什么是UDP?
UDP或用户数据报协议是构成互联网协议套件的另一个主要协议。UDP不如TCP可靠,但要简单得多。UDP用于某些数据丢失是可以接受的情况,例如实时视频/音频,或者速度是在线游戏等关键因素的情况。虽然UDP与TCP相似,因为它用于在线发送和接收数据,但有几个关键区别。首先,UDP是一种无连接协议,这意味着它不会像TCP的三向握手那样事先建立连接。
接下来,UDP不保证所有数据都已成功传输。使用UDP,数据被发送到碰巧正在侦听的任何设备,但它并不关心其中一些是否在途中丢失。这就是为什么UDP也被称为“即发即弃”协议的原因之一。
考虑这些差异的一个好方法是,TCP就像两个人之间的对话。人A要求人B说话。B说当然,没关系。人A同意了,他们都开始说话。UDP更像是外面拿着扩音器的抗议者。每个关注抗议者的人都应该听到他们所说的大部分内容。但不能保证该地区的每个人都会听到抗议者在说什么,或者他们甚至在听。
哪个更快–TCP或UDP?
通常,UDP是更快的协议。UDP要简单得多,并且在发送数据之前不会尝试在设备之间建立连接,也不会验证所有数据是否到达。它只是将数据发送到任何请求它的设备,并继续这样做,直到另一个设备断开连接或没有更多数据要发送。虽然TCP由于建立连接的方式而变慢,并且由于检查丢失的数据包,但它仍然可以非常快。因为它们在网络上并使用HTTP,所以像YouTube或Netflix这样的网站都使用TCP将数据发送到您的设备。但速度更快并不意味着UDP总体上是更好的协议。这只是意味着在某些情况下它会更好。如前所述,在必须按顺序发送所有数据包并且所有数据包到达的情况下,TCP是必需的。没有TCP,网络将无法运行。
TCP还允许缓冲,因此您的浏览器可以在您观看时请求和加载更多数据,从而实现流畅的播放,并允许您跳到视频的其他部分。UDP是实时视频和音频或在线游戏的更好选择,其中速度比潜在的数据丢失更重要。
当您通过GoogleMeet或Zoom拨打电话时,您的视频和音频将通过UDP传输。如果某些数据包在此过程中丢失,它只会显示为一点延迟或剪辑的视频/音频。如果您玩视频游戏,您可能会认为TCP确保所有数据包到达其他设备的方式使其成为理想的选择。但实际上,TCP所做的所有检查和重新发送数据只会增加延迟。