UDP可靠性设计

UDP使用场景:

 UDP三种性质:

1.尽力可靠:发送方和接收方的数据尽量到达(中间丢一些包不影响)   --->微信音视频通话

2.无序可靠:迅雷下载,整个文件是做了分片  --->(保证数据完整性)

3.有序可靠:(银行转账)  数据需要先转出去---才可以转给别人。

1音视频通话(udp)  接收端需要缓存(可能出现延时) 目的是对包进行排序,解决传输乱序的问题。

2游戏开发 : 棋牌游戏没必要用udp ,  王者荣耀(即使战略游戏)

3物联网: 桥梁传感器 (使用电池)十秒检测一下桥梁状态然后上报,接着休眠

4服务器状态集中监测: 手机状态集中监测,做服务器检测(100万台) udp比较省电

udp总结:           (能够使用tcp解决的场景尽量不要挑战udp,udp真的不好用

1.实时性要求   

2.节约资源。(省电)

TCP                                                 UDP                      (user自己写的协议)可靠性UDP

应答机制                                         没有                                 (user层)   应答机制

包带序号                                         没有                            (user层) 设计协议,加上序号

拥塞控制                                         没有                              1.定义窗口,设计拥塞控制

                                                                                            2.发送包的时候有间隔

send,recv                              sendto ,recvfrom   

send(10k)  ---> recv(500)        sendto(30k)(不可以,必须分片) recvfrom(500)

UDP传输原理

TCP协议(Transmission Control Protocol,传输控制协议)为应用层提 供可靠的、面向连接的和基于流(stream)的服务。使用超时重传、数 据确认等方式来确保数据包被正确发送至目的地。

 UDP分片原理

 UDP和MTU的关系

MTU:以太网(Ethernet) 数据帧的长度必须在46-1500字节之间,这是由以太网的 物理特性决定的. 这个1500字节被称为链路层的MTU(最大传输单元)。

单个UDP传输的最大内容 1472(1500-20-8, 如果有可选字节>28)字节,但由于不同的网络中转设备设置的MTU值并不相同。Internet上的标准MTU值为576字节, 建议在进行Internet的UDP编程时.最好将UDP的数据长度控制在548字节(576-20-8) 以内(腾讯游戏 MTU 500+)。

真的是1472或者576吗?     (<=1472 , ip头是至少20字节不是至多,运营商也会在前面加PPPOE的协议   , 在发送的时候推荐用1400 )

 IP协议+PPPOE协议

 推荐的MTU 设计为 500+字节,应用逻辑保证数据包大小不超过 MTU,避免拆包。 局域网:1400 公网:500+(腾讯游戏推荐), 音视频: 1400

TCP是流式传输,一次收多少都是可以的,大不了多收几次。更多次数的内核态和用户态的切换。

UDP是报文传输,recvfrom每次都是需要接收一个完整的报文,如果不接收完,剩余部分就会被丢掉。(报文都是放到一个链表里面一个一个取出来的,下一次取的就是下一个报文了)

TCP send(1000) --------------------> recv(1000) 不一定收1000  可能会分片

UDP sendto(1000) --------------------> recvfrom(1000) 也不一定收1000  有可能会丢包

UDP分片机制设计的重点

                                                要传输的一段数据

 

 UDP分片机制设计的重点

1. 分片最大长度的确定

2. 分片帧头的设计 ◼ 同步字 ◼ 所有分片数据的总大小 ◼ 分片数量 ◼ 分片编号 ◼ 当前分片数据的大小

3. 重组异常的处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值