欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

TCP协议与UDP协议的区别

程序员文章站 2022-07-10 13:55:16
...

1.TCP协议

TCP:传输控制协议(Transmission Control Protocol)
TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,位于计算机网络OSI模型中的IP层之上,应用层之下的中间层,即传输层。
当应用层向TCP层发送数据流时,TCP则把数据流分割成适当长度的报文段,之后TCP把数据包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。
TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。
然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传

2.UDP协议

UDP:用户数据报协议(User Datagram Protocol)
UDP是一种无连接的、不可靠的协议。在OSI模型中,位于计算机网络OSI模型中传输层,处于IP协议的上一层。提供面向事务的简单不可靠信息传送服务。
对于来自应用层的数据包,直接加上UDP报头然后传送给IP层。UDP头部中有一个校验和字段,可用于差错的检测,但是UDP是不提供差错纠正的。此外IPV4不强制这个校验和字段必须使用,但IPV6是强制要求使用的。
它不提供数据包分组、组装和不能对数据包进行排序,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。
它的主要作用是将网络数据流量压缩成数据包的形式。一个典型的数据包就是一个二进制数据的传输单位。每一个数据包的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据

3.TCP与UDP区别

1.TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
2.TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
3.TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的,UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
4.TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
5.TCP工作效率比UDP低,UDP具有较好的时实性,适用于对高速传输与时实行有较高的通信或广播通信
6.TCP对系统资源要求较多,UDP对系统资源要求较少。TCP首部有20个字节,UDP的首部只有8个字节,开销小。
7.TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

4.为什么UDP有时比TCP更有优势?

UDP以其简单、传输快的优势,在越来越多场景下取代了TCP,如实时游戏。

1.网速的提升给UDP的稳定性提供可靠网络保障,丢包率很低,如果使用应用层重传,能够确保传输的可靠性。

2.基于UDP对实时性要求较为严格的情况下,采用自定义重传机制,能够把丢包产生的延迟降到最低,尽量减少网络问题对游戏性造成影响