UDP的特点
- 无连接:知道对端的IP和端口号就直接进行传输,不需要建立连接。
- 不可靠:即使因为网络故障等原因无法将数据报发送给接收端,UDP协议层也不会给应用层返回任何错误信息。
- 全双工:即可以接收数据报,也可以发送数据报
- 面向数据报:应用层交给UDP多长的报文,UDP原样发送,既不会拆分,也不会合并。
用UDP传输100个字节的数据:
如果发送端一次发送100个字节,那么接收端也必须一次接收100个字节;而不能循环接收10次,
每次接收10个字节。
UDP协议报文结构
示例图:
对于UDP来说,报头一共有8个字节,分成源端口,目的端口,UDP报文长度,和检验和这四个部分(每个部分2个字节)
UDP报文长度
一个UDP数据报,最大只能传输64KB的数据
经典面试题一:如果传输超过64KB的数据,该如何设计?
第一种方案(不推荐):通过代码的方式针对应用层数据报进行手动的分包,拆分成多个包通过多个UDP数据报进行传输。(此方法比较麻烦)
第二种方案(推荐):不用UDP,换成TCP(TCP没有这样的限制)
经典面试题二:如果一定要基于传输层UDP协议,来实现一个可靠传
输,应该如何设计?(参考TCP的可靠性机制在应用层实现类似的逻辑)
- 引入序列号,保证数据顺序;
- 引入确认应答,确保对端收到了数据;
- 引入超时重传,如果隔一段时间没有应答,就重发数据; ……
校验和
原因:网络传输过程中,可能会受到一些干扰,在这些干扰下就可能出现“比特翻转“的情况”,导致数据的含义发生改变。
作用:验证传输的数据是否正确
基本原理:发送方把要发送的数据计算出校验和(checksum1),接收方收到数据就把数据按照同样的方式再计算一遍检验和(checksum2),如果结果和发送方发来的校验和一致,说明数据传输没有出错,否则代表数据出错。文章来源:https://www.toymoban.com/news/detail-456797.html
TCP/UDP对比
归根结底,TCP和UDP都是程序员的工具,什么时机用,具体怎么用,还是要根据具体的需求场景去判定。文章来源地址https://www.toymoban.com/news/detail-456797.html
- TCP用于可靠传输的情况,应用于文件传输,重要状态更新等场景;
- UDP用于对高速传输和实时性要求较高的通信领域,例如,早期的QQ,视频传输等。另外UDP可以用于广播。
到了这里,关于UDP 的报文结构及注意事项的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!