Heading for the future

TCP和UDP区别

TCP和UDP区别

  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)

头部大小

20字节

8字节

有序性

有序

无序

传输速率控制

流量控制(拥塞控制)

可靠性

可靠

不可靠

传输速率

占用系统资源

应用场景

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

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

 

TCP字节流和UDP数据报区别

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

 
 
posted @ 2020-05-14 09:14  一只菜鸟攻城狮啊  阅读(505)  评论(0编辑  收藏  举报