TCP协议与UDP协议的区别

  • Post author:
  • Post category:其他



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对实时性要求较为严格的情况下,采用自定义重传机制,能够把丢包产生的延迟降到最低,尽量减少网络问题对游戏性造成影响


5.TCP如何保证可靠传输,保证的方法有哪些?

(1)确认和重传:接收方收到报文就会确认,发送方发送一段时间后没有收到确认就重传。
(2)数据校验
(3)数据合理分片和排序:UDP:IP数据报大于1500字节,大于MTU.这个时候发送方IP层就需要分片(fragmentation).把数据报分成若干片,使每一片都小于MTU.
而接收方IP层则需要进行数据报的重组.这样就会多做许多事情,而更严重的是,由于UDP的特性,当某一片数据传送中丢失时,接收方便无法重组数据报.
将导致丢弃整个UDP数据报.tcp会按MTU合理分片,接收方会缓存未按序到达的数据,重新排序后再交给应用层。
(4)流量控制:当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。
(5)拥塞控制:当网络拥塞时,减少数据的发送。


6.TCP的拥塞控制

(1)拥塞:即对资源的需求超过了可用的资源。若网络中许多资源同时供应不足,网络的性能就要明显变坏,整个网络的吞吐量随之负荷的增大而下降。
(2)拥塞控制:防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制所要做的都有一个前提:网络能够承受现有的网络负荷。
拥塞控制是一个全局性的过程,涉及到所有的主机、路由器,以及与降低网络传输性能有关的所有因素。流量控制:指点对点通信量的控制,是端到端正的问题。
流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收。
(3)拥塞控制代价:需要获得网络内部流量分布的信息。在实施拥塞控制之前,还需要在结点之间交换信息和各种命令,以便选择控制的策略和实施控制。
这样就产生了额外的开销。拥塞控制还需要将一些资源分配给各个用户单独使用,使得网络资源不能更好地实现共享。
(4)拥塞控制方法:慢开始(slow-start)、拥塞避免(congestion avoidance)、快重传(fast retransmit)和快恢复(fast recovery)。



版权声明:本文为lilygg原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。