UDP可靠性设计

简介: 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. 重组异常的处理

目录
相关文章
|
7月前
|
网络协议 算法 网络性能优化
TCP和UDP详解2
TCP和UDP详解
62 0
|
7月前
|
网络协议 Windows
对udp进行简单认识
对udp进行简单认识
81 0
|
2月前
|
网络协议 网络性能优化
详解TCP/IP协议以及UDP
详解TCP/IP协议以及UDP
81 0
|
7月前
|
XML 网络协议 算法
UDP/TCP协议特点
UDP/TCP协议特点
148 0
|
7月前
|
缓存 网络协议 算法
TCP和UDP详解1
TCP和UDP详解
59 0
|
7月前
|
网络协议 网络安全 开发者
掌握Python网络编程:从TCP到UDP
掌握Python网络编程:从TCP到UDP
136 0
|
网络协议 Python
141 python网络编程 - UDP介绍
141 python网络编程 - UDP介绍
51 0
|
存储 网络协议 程序员
TCP VS UDP
TCP VS UDP
61 0
4.7 UDP
4.7 UDP
62 0
|
存储 缓存 网络协议
传输层中TCP和UDP
主要学习了TCP和UDP协议 TCP和UDP报文格式 三次握手四次挥手
传输层中TCP和UDP