微信视频使用的是什么协议?—— udp协议的介绍

微信视频,什么最重要?

时效性!

那怎样才可以保证有校性呢?tcp协议这么多控制!时效性应该不够把(ps:tcp协议的介绍

嗯,是的;tcp协议为了保证数据的准确传输,做了回复,重传,网络探测等等一系列的控制,这些控制都保证了数据的完整性;

但是!它却影响了数据段传送速率。

是呀,那怎样解决呢?

嗯:这就要清楚我们的udp协议了!

首先我们介绍一下udp协议的特点

1:无连接:知道对端的ip和端口号就行了,不需要建立链接;

2:不可靠:没有确认机制,没有重传机制;如果因为网络故障无法发送到对方,udp协议层也不会给应用层返回任何错误;

3:面向数据报:不能够灵活的控制读写数据的次数和数量;

哎呀,你看了这些,是不是决定udp协议都不能保证数据的准确传输,这还咋用;

但是:我们在视频通话的时候,是允许少量数据的丢失的,也就一两帧,就卡一下啦;

但是!我们知道了它的特性就可以针对这些特性在应用层做一些改进,让数据即快速又准确!

现在让我们先一起看看udp协议的格式

那我们先解释下结构里的信息:

1:16位源/目的 端口:用于表示收发两方的地址

2:16位长度:就是udp整体的大小(首部+数据)

3:校验值:奇偶校验,此校验和是对整个的 udp 报文段,包括 udp 头部和 udp 数据,以 16 位字进行计算所得。如果校验和出错, 就会直接丢弃

4:数据:数据啦

ok,我们现在知道了udp协议的结构了,那根据结构和协议特性,让我们看看在使用udp时候应该注意哪些问题!

1:udp是面向数据报的的,意味着如果发送端调用一次sendto发送100个字节,那么接收端就得使用recvfrom一次性接收100字节;但是,细心的同学会发现udp协议的大小只能有16位来标识,也就是udp数据的最大为64k(包含头部),所以我们的每条数据一定要小于64k-头部的64B;

2:缓冲区:udp没有真正意义上的发送缓冲区,调用sendto会直接交给内核,有内核将数据传给网络层协议进行后序的传输动作;udp具有接收缓冲区,但是这个缓冲区不保证收到的udp报的顺序和发送udp报的顺序一致;如果缓冲区满了,后续的数据就会被丢弃;所以我们在应用层就一定要做好报序管理。

补充:以下引用层协议都是基于udp的

NFS: 网络文件系统
 
TFTP: 简单文件传输协议
 
DHCP: 动态主机配置协议
 
BOOTP: 启动协议 ( 用于无盘设备启动 )
 
DNS: 域名解析协议
 

好啦,以上就是阿鲤对udp协议的总结分享了,如果有误请慷慨指出。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值