TCP协议和UDP协议的对比,区别

(1)是否面向连接:TCP是面向连接的,也就是说传送数据之前必须先建立连接,数据传输完成后要释放连接,UDP不是面向连接的

(2)是否是可靠传输:接收方接收到UDP报文不需要给出任何确认,不保证数据不丢失,是不可靠传输。TCP是可靠传输,传递数据之前需要三次握手建立连接,数据传递时有一系列可靠传输机制来保证TCP可靠传输(注意这里就引出另一个重点八股文知识点:Tcp如何保证可靠传输)

(3)是否有状态:Tcp是有状态的(记录消息是否发送了,接收方是否接收了),UDP是无状态的,就是发完什么都不管了

(4)传输效率:由于Tcp需要传输数据之前先建立连接,传输的时候也有一系列机制来保证可靠传输,所以传输效率比Udp更低

(5)  Tcp是面向字节流传输,Udp是面向报文传输,也就是说Tcp将数据看做是一串连续的字节流,如果字节流过长可以将其拆分成多个字节流(但是要维持各字节流相对顺序),但是Udp是发送一个完整报文,不会进行拆分

(6)Tcp只支持点对点通信,Udp支持一对一,一对多,多对一,多对多的通信

 (1)TCP协议  面向连接(传送数据之前先建立连接,数据传输完成后断开连接),UDP 无连接

(2)TCP 可靠 ,UDP不可靠(不保证数据传输的可靠性)

收到 UDP 报文后,不需要给出任何确认,并且不保证数据不丢失,不保证是否顺序到达

TCP 在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制

也就是说连接前三次握手机制+连接时的确认、窗口、重传、拥塞控制机制保证了TCP协议传输的数据无差错,不丢失,不重复并且按序到达

当然由于TCP使用了如此多机制来保证其可靠性,所以传输速度会比UDP慢很多

(3)是否提供广播或多播服务 :TCP 只支持点对点通信,UDP 支持一对一、一对多、多对一、多对多,即多播广播都可以

UDP  一般用于即时通信,比如语音,视频,直播等等  这些场景的特点是:对数据的准确性要求不是特别高(看视频少一两帧,实际上给人的区别并不大),但是要求速度快

TCP 用于对传输准确性要求特别高的场景,比如文件传输、发送和接收邮件、远程登录等等

HTTP协议是基于TCP协议的,也就是说发送HTTP请求之前要先3次握手建立TCP连接

(1)TCP漏掉一个包就全部重发一遍,UDP避免发已经送达的包,只重发那些未送达的包

(2)使用UDP的场景:

1.数据大小在一个包以内,用UDP

2.发送音频和视频数据的时候。音频和视频数据必须在规定的时间内送达,一旦送达晚了,就会错过播放时机,导致声音和图像卡顿。如果像TCP一样通过接收确认响应来检查错误并重发,重发的过程需要消耗一定的时间,因此重发的数据很可能已经错过了播放的时机。一旦错过播放时机,重发数据也是没有用的,因为声音和图像已经卡顿了,这是无法挽回的。当然,我们可以用高速线路让重发的数据能够在规定的时间内送达,但这样一来可能要增加几倍的带宽才行。

此外,音频和视频数据中缺少了某些包并不会产生严重的问题,只是会产生一些失真或者卡顿而已,一般都是可以接受的[插图]。在这些无需重发数据,或者是重发了也没什么意义的情况下,使用UDP发送数据的效率会更高。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值