计算机网络——UDP的报文结构和注意事项

目录

一、UDP特点

1、无连接

2、不可靠

3、面向数据报

4、全双工通信

二、UDP报文结构

1、报头

2、载荷

三、端口

四、报文长度

五、校验和

1、定义

六、注意事项

1、UDP只有接收缓冲区、没有发送缓冲区

2、UDP大小受限

3、基于UDP的应用层协议

4、MTU对UDP协议的影响


一、UDP特点

1、无连接

UDP传输的过程类似于寄信,知道对端的IP和端口号就可以直接进行数据报传输,不用像TCP协议需要建立连接。

2、不可靠

UDP没有任何安全机制,发送端发送数据报以后,如果因为网络故障该段无法发到对方,UDP协议层也不会给应用层返回任何错误信息。

3、面向数据报

UDP通过数据报的形式进行传输,用户的请求或响应都会从数据报转换成字符串

应用层交给UDP多长的报文,UDP原样发送,既不会拆分也不会合并

例:用UDP传输100个字节的数据,如果发送端一次发送100个字节,那么接收端也必须一次接收100个字节,而不能循环接收10次每次接收10个字节。

4、全双工通信

UDP的Socket既能读也能写,客户端和服务器都可以发送请求/接受响应。

二、UDP报文结构

UDP数据报=报头+载荷

1、报头

对于UDP来说,报头一共有8个字节​​​​,包含4个字段,每个字段2个字节。

报头=源端口+目的端口+报文长度+校验和

2、载荷

应用层数据报

三、端口

载荷中每个端口号在UDP报文中占了两个字节,端口号的取值范围是0~65535

端口号不是代表主机的地址,而是用来区分主机中的应用程序,代表了不同的应用程序。

  • 源IP和源端口是指数据从哪里来
  • 目的IP和目的端口是指数据到哪里去

例: 

四、报文长度

报文长度是两个字节,表示范围0~65535,等于64KB。一个UDP报文最大传输的长度是64KB。

如果超过了64KB,可以通过以下两种方式来解决:

  • 在应用层通过代码的方式针对应用层数据报进行手动分包,拆成多个包通过多个UDP数据报进行传输。
  • 换成TCP协议

五、校验和

1、定义

将发送前和发送后的校验和进行比较,检查发送前后数据报是否一致。用来验证传输的数据是否是正确的。

校验和存在的意义就是用来判定当前传输的数据是否出错:

  • 如果校验和不对,此时数据一定不对
  • 如果校验和对,数据也有一定概率是错的

为了让校验和能够识别率更高一些,计算时通常会以数据内容作为参数来计算,数据内容发生变化,校验和也会发生变化。

校验和往往就是取内容或是内容的一部分,通过数学公式变换得到一个数值。如果内容发生改变,得到的校验和也就改变了。

发送方把载荷数据带入到校验和算法中,计算生成得到校验和结果设为sum1,发送方把这一整串数据发送给接收方。

接收方收到的数据既有载荷也有校验和sum1,接受方就可以把载荷按照同样的算法,再计算一边校验和得到sum2。

如果校验和结果不一样,原始输入的内容一定不一样,就可以视为传输出错了。如果sum1变了,内容没变,但是还是和sum2对不上,也视为传输出错。

六、注意事项

1、UDP只有接收缓冲区、没有发送缓冲区

  • UDP没有真正意义上的发送缓冲区。发送的数据会直接交给内核,由内核将数据传给网络层协议进行后续的传输动作。
  • UDP具有接收缓冲区,但是这个接收缓冲区不能保证收到的UDP报的顺序和发送UDP报的顺序一致。如果缓冲区满了,再到达的UDP数据就会被丢弃。

2、UDP大小受限

UDP协议首部有一个16位的最大长度,一个UDP能传输的数据最大长度是64KB(包含UDP首部)。

3、基于UDP的应用层协议

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

4、MTU对UDP协议的影响

一旦UDP携带的数据超过1472(1500 - 20(IP首部) - 8(UDP首部)),那么就会在网络层被分成多个IP数据报。在这多个IP数据报中有任意一个丢失,都会引起接收端网络层重组失败。这就意味着如果UDP数据报在网络层被分片,整个数据被丢失的概率就大大增加了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值