TCP和UDP区别


TCP

UDP

连接

面向连接

无连接

连接方式

点到点

支持一对一,一对多,多对一和多对多

模式

流模式(TCP)

数据报模式(UDP)

头部大小

20字节

8字节

有序性

有序

无序

传输速率控制

流量控制(拥塞控制)

可靠性

可靠

不可靠

传输速率

占用系统资源

应用场景

效率要求相对低,但对准确性要求相对高的场景。

效率要求相对高,对准确性要求相对低的场景
  1. TCP面向连接(TCP三次握手),UDP是无连接的,即发送数据之前不需要建立连接。
  2. 每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信。
  3. TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的。
  4. TCP有序,UDP无序;消息在传输过程中可能会乱序,后发送的消息可能会先到达,TCP会对其进行重排序,UDP不会。
  5. TCP有流量控制(拥塞控制),UDP没有。流量控制:TCP利用滑动窗口机制在TCP连接上实现对发送方的流量控制, 如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。拥塞控制:防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制所要做的都有一个前提:网络能够承受现有的网络负荷。拥塞控制是一个全局性的过程,涉及到所有的主机、路由器,以及与降低网络传输性能有关的所有因素。当出现网络抖动时,TCP会自觉降低发送速度,他会努力维护次序,但UDP依然保持速度不变。TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
  6. TCP传输速率慢,由于传输要进行三次握手,以及会进行拥塞控制等。
  7. TCP应用场景:效率要求相对低,但对准确性要求相对高的场景。因为传输中需要对数据确认、重发、排序等操作,相比之下效率没有UDP高。举几个例子:文件传输(准确高要求高、但是速度可以相对慢)、接受邮件、远程登录。UDP应用场景:效率要求相对高,对准确性要求相对低的场景。举几个例子:QQ聊天、在线视频、网络语音电话(即时通讯,速度要求高,但是出现偶尔断续不是太大问题,并且此处完全不可以使用重发机制)、广播通信(广播、多播)


TCP字节流和UDP数据报区别

两者的区别在于TCP接收的是一堆数据,而每次取多少由主机决定;而UDP发的是数据报,客户发送多少就接收多少。拥有这些区别的原因是由于TCP和UDP的特性不同而决定的。TCP是面向连接的,也就是说,在连接持续的过程中,socket中收到的数据都是由同一台主机发出的,因此,知道保证数据是有序的到达就行了,至于每次读取多少数据自己看着办。 而UDP是无连接的协议,也就是说,只要知道接收端的IP和端口,且网络是可达的,任何主机都可以向接收端发送数据。这时候,如果一次能读取超过一个报文的数据,则会乱套。比如,主机A向发送了报文P1,主机B发送了报文P2,如果能够读取超过一个报文的数据,那么就会将P1和P2的数据合并在了一起,这样的数据是没有意义的。