UDP的报文结构及注意事项

1.UDP协议

1.UDP协议端格式

2.UDP的报文结构​编辑

1.源端口号

2.目的端口号

3.包长度

4.校验和

3.UDP的特点

1.无连接

2.不可靠

3.面向数据报

4.缓冲区

5.大小受限

4.基于UDP的应用层协议

5.UDP 和TCP 的区别(高频面试题)

6.扩展问题(进阶一点的面试题)

1.UDP协议
1.UDP协议端格式


16位UDP长度,表示整个数据报(UDP首部+UDP数据)的最大长度;
如果校验和出错,就会直接丢弃; 
2.UDP的报文结构
UDP报文主体分为两个部分:UDP报头(占8个字节)+UDP数据/UDP载荷
UPD报头:源端口号+目的端口号+包长度+校验和
1.源端口号
占16位,也就是2个字节

2.目的端口号
占16位,2个字节

3.包长度
即UDP长度,总共16位,占两个字节
UDP报文长度=UDP报头(首部)+UDP载荷
该字段保存了UDP报文的长度,单位为字节
2个字节能表示的数据范围是0~65535,也就是能够表示的报文长度是65536字节(Byte),转换成KB,65536/1024 = 64 KB 这就是一个UDP报文所能表示的最大长度.
4.校验和
数据在传输的时候,本质上是0/1bit流,通过光信号或者电信号来表示,如果在传输的时候收到干扰,就可能会出现比特翻转现象.这个时候就需要校验和校验数据是否出错.

3.UDP的特点
UDP 传输的过程类似于寄信。
1.无连接
知道对端的 IP 和端口号就直接进行传输,不需要建立连接;
2.不可靠
没有任何安全机制,发送端发送数据报以后,如果因为网络故障该段无法发到对方, UDP 协议层也不会给应用层返回任何错误信息;
3.面向数据报
应用层交给 UDP 多长的报文, UDP 原样发送,既不会拆分,也不会合并;
用 UDP 传输 100 个字节的数据:
如果发送端一次发送100个字节,那么接收端也必须一次接收100个字节;而不能循环接收10次,每次接收10个字节。
4.缓冲区
UDP 只有接收缓冲区,没有发送缓冲区:
UDP没有真正意义上的 发送缓冲区。发送的数据会直接交给内核,由内核将数据传给网络层协议进行后续的传输动作;
UDP具有接收缓冲区,但是这个接收缓冲区不能保证收到的UDP报的顺序和发送UDP报的顺序一致;如果缓冲区满了,再到达的UDP数据就会被丢弃;
UDP 的 socket 既能读,也能写,这个概念叫做 全双工。
5.大小受限
UDP 协议首部中有一个 16 位的最大长度。也就是说一个 UDP 能传输的数据最大长度是 64K (包含 UDP 首部)。
4.基于UDP的应用层协议
NFS:网络文件系统
TFTP:简单文件传输协议
DHCP:动态主机配置协议
BOOTP:启动协议(用于无盘设备启动)
DNS:域名解析协议
当然,也包括自己写 UDP 程序时自定义的应用层协议。
5.UDP 和TCP 的区别(高频面试题)
UDP    TCP
是否需要建立连接    否    是
通信方式    一对一,一对多,多对一,多对多交互通信    每条TCP连接只能有两个端点,只能是一对一通信
对报文的处理    面向数据报    面向字节流
传输是否可靠    不可靠,不使用流量控制和拥塞控制    可靠传输,使用流量控制和拥塞控制
大小是否受限    是    否
适用场景    实时性要求高,允许少量丢包    可靠性比较高的地方
TCP用于可靠传输的情况,应用于文件传输,重要状态更新等场景;
UDP用于对高速传输和实时性要求较高的通信领域,例如,早期的QQ,视频传输等。另外UDP可以用于广播;
6.扩展问题(进阶一点的面试题)
这是一个经典面试题:
UDP本身是无连接,不可靠,面向数据报的协议,如果要基于传输层UDP协议,来实现一个可靠传输,应该如何设计?
UDP大小是受限的,如果要基于传输层UDP协议,传输超过64K的数据,应该如何设计?
以上两个问题答案类似,都可以参考 TCP 的可靠性机制在 应用层 实现类似的逻辑:
例如:

应用层(自己写代码)来实现类似TCP的可靠机制;
引入序列号,保证数据顺序;
引入确认应答,确保对端收到了数据;
引入超时重传,如果隔一段时间没有应答,就重发数据;
......
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值