探索协议栈和网卡——UDP协议的收发操作

1、不需要重发的数据用UDP发送更高效:

之前文章中所提到的都是TCP协议,但是有些应用程序不使用TCP协议,而是使用UDP协议来收发数据。像DNS服务器查询IP地址的时候就是UDP协议。

TCP协议是为了将数据高效且可靠地发送给对方。为了实现可靠性就需要确认对方是否收到了我们发送的数据,如果没有还需要重发一次。为了实现高效的传输,TCP还可以避免重发已经发送并接收的包,只重发那些出错的或者未送达的包。

不过,在某种情况下,即便没有TCP这样复杂的机制,也能够高效的重发数据。这种情况就是数据很短,一个包就能够装下。因为只有一个包,所以即使全部重发也就只有一个包而已,而且可以通过回复的数据当作接收确认。简单的说,从应用程序获取的数据前面加上UDP头部,然后交给IP进行发送就可以了。UDP头部(8字节)如下表:

字段名称长度(比特)含义
发送方端口号16网络包发送方的端口号
接收方端口号16网络包接收方的端口号
数据长度16UDP头部后面数据的长度
校验和16用于校验错误

2、音频和视频数据:

在发送音频和视频数据的时候也会使用UDP协议,因为音频和视频数据对于必须在规定的时间内送达,一旦送达晚了就会错过播放时机,导致声音和图像卡顿。如果使用TCP协议则需要使用高速路线让重发的数据能够在规定时间内送达,但这样一来可能要增加几倍的带宽才行。一般只有在需要查穿过防火墙时,才会使用TCP协议,因为UDP协议经常会被防火墙阻止。

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值