JavaWeb——UDP的报文结构和注意事项

news/2024/11/28 10:53:21/

目录

一、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数据报在网络层被分片,整个数据被丢失的概率就大大增加了。


http://www.ppmy.cn/news/48801.html

相关文章

Scala中的Map 集合详解

目录 一、不可变长Map集合 1.map的声明与遍历 2.map的常用方法:get、getOrElse、keys、values、、: 二、可变长Map集合 三、Map的其他方法 key -> value 的语法形式实际上是用库中的隐式转换实现的,实际调用了 Map.apply 方法。Map.a…

燃气管道定位83KHZ地下电子标识器探测仪ED-8000操作指南

1、电子标识器探测工作 燃气管道定位83KHZ地下电子标识器探测仪ED-8000,探测时周边 3 米范围内不能有其他探测仪,保持探测仪垂直向 下,探测仪的末端距离地面 5~10cm 左右,延估计的埋地管线走向水平移动探测仪。当发现持续信号且信…

Doo Prime 德璞资本:股指期货交易如何管理好个人情绪

在股指期货交易中,我们可以感觉到心态随着交易的成败而变化。有时心态对交易影响不大,但有时影响很大,一个好的心态,能够应对各种变化,各种损益和市场判断的正确和错误,不会对心态产生很大的影响&#xff0…

GPT对SaaS领域有什么影响?

GPT火了,Chat GPT真的火了。 突然之间,所有人都在讨论AI,最初的访客是程序员、工程师、AI从业者,从早高峰写字楼电梯里讨论声,到村里大爷们的饭后谈资,路过的狗子都要和它讨论两句GPT的程度。 革命的前夜…

理解什么是DTO?什么是AutoMapper?

什么是DTO? .Net DTO是一个对象,它定义了数据如何在网络上发送。它只用于发送和接收数据,不包含任何业务逻辑。使用DTO的原因有以下几个: 将服务层与数据库层分离隐藏客户端不需要查看的特定属性省略一些属性以减少有效负载大小处理嵌套对象…

银行数字化转型导师坚鹏:商业银行数字化风控(1天)

商业银行数字化风控 课程背景: 数字化背景下,很多银行存在以下问题: 不清楚商业银行数字化风控发展现状? 不清楚对公业务数字化风控工作如何开展? 不知道零售业务数字化风控工作如何开展? 课程特色…

zookeeper一文精通

目录 zookeeper是树形文件存储! zookeeper集群是如何确保写入成功的? zookeeper集群为什么是CP? 选举leader也是半数同意 zookeeper集群是如何访问数据的? zookeeper是如何保证选举的从节点是拥有最新的数据的节点&#xff1…

( “树” 之 前中后序遍历) 145. 二叉树的后序遍历 ——【Leetcode每日一题】

基础概念:前中后序遍历 1/ \2 3/ \ \ 4 5 6层次遍历顺序:[1 2 3 4 5 6]前序遍历顺序:[1 2 4 5 3 6]中序遍历顺序:[4 2 5 1 3 6]后序遍历顺序:[4 5 2 6 3 1] 层次遍历使用 BFS 实现,利用的就是 BFS…