5.7.3 UDP协议格式(二)使用Wireshark分析UDP用户数据报

news/2024/5/18 16:09:12 标签: udp, wireshark, 网络协议

5.7.3 UDP协议格式(二)使用Wireshark分析UDP用户数据报

我们通过对Wireshark采集的UDP用户数据报进行分析,判定一下UDP用户数据报报文接收的是否正确,这里我们首先要对Wireshark采集到的UDP数据的含义。

如图

Wireshark

其中分组详情面板中显示的是采集到数据的基本信息,包括数据报采集的时间、报文长度等,采集到的数据以十六进制数据在分组字节流面板中显示。

  1. 以太帧格式的信息:

    如图

    帧

    分组字节流面板中前14个字节的信息是以太帧的信息,其中前六个字节是目的MAC地址,紧接着的六个字节是源MAC地址,再接着的两个字节0800表示的是网络层携带的数据类型是IP数据报,这里我们需要注意的是帧尾的4字节的CRC校验和Wireshark软件是没有采集的,因为网卡没有提供CRC的信息给软件的捕获引擎,所以帧的总长应该是110+4字节114字节,符合最短的以太网有效帧长。

  2. IP数据报首部

    Wireshark中捕获的IP数据报的详细信息参看(5.2.4 IP数据报(二)分析Wireshark捕获的数据帧)

    从第十五个字节开始是IP数据报的首部信息,因为UDP是封装在网络层IP数据报中的,IP数据报的内容可以从分组详情面板中解析的内容看到,在分组字节流面板中第15个字节开始45表示的是使用的是IPv4协议,首部是固定的20个字节,IP数据报首部的其他信息参看(5.2.3 IP数据报(一)IP数据报的格式)

  3. UDP首部8个字节

    如图
    UDP首部
    我们知道UDP的首部一共是4个字段,每个字段是两个字节,所以我们可以把这8个字节进行拆分拆分结果如下
    4个字段
    源端口是53699是一个一般的端口,目的端口32761,UDP用户数据报长度76字节,校验和2c9e,剩余的就是UDP的数据部分,一共是76字节减去UDP首部的8个字节,所以数据部分一共是68字节。

基于以上基础知识我们来看一下校验和是否正确。

计算UDP首部校验和

  1. UDP首部校验和字段设置为全零。

    d1c37ff9
    004c0000
  2. 我们将UDP用户数据报中的首部和UDP的数据部分分别以16比特为单位进行划分,也就是两个字节两个字节进行划分。

    这里我们需要说明的是**如果UDP的数据字段长度为奇数个字节的话,责令填充一个字节的全零,因为我们知道对于UDP的校验和是按照每16比特位进行划分(5.7.2 UDP协议格式(一)——UDP差错控制),也就是说按照两字节作为一组。**所以如果长度是奇数个字节的话应该填充一个字节的零。对于示例是68个字节是偶数就不用进行填充了。当然作为填充的字节不会被当做接收的数据,因为在UDP首部的长度字段已经指示了报文的长度。

  3. 伪首部部分参与校验和的计算我们知道伪首部包括源IP地址、目的IP地址、IP首部的协议字段、UDP的长度字段

    伪首部

  4. 反码求和运算,反码求和运算的规则如下

反码求和

从低位到高位逐位进行计算,这里0+0等于0,0+1=1,1+1=10,所以这里需要向高位产生一个进位,如果最后在超过16为还有进位的话,最后加到尾巴中。

  1. 对累加结果取反码就得到UDP的校验和。

    UDP首部+UDP数据+伪首部————>结果取反


http://www.niftyadmin.cn/n/1005762.html

相关文章

Tomcat的优化及多实例部署

文章目录 一.Tomcat的优化1.tomcat启动速度优化——random2.Tomcat配置文件参数优化2.1 常用的优化相关参数2.2 优化的配置文件 二.Tomcat多实例部署1.为什么会有tomcat多实例部署2.多实例部署图示3.多实例部署的配置3.1 安装JDK3.2 安装启动Tomcat3.3 配置 tomcat 环境变量3.4…

C语言程序生命周期

可能大家都知道一个C语言程序需要经过编译生成可执行文件就可以运行起来,但是这并非是一个完整的C语言程序流程,下面我们就详细了解一下C语言程序的整个生命周期。 一个完整C语言的生命周期分为以下五个部分: 编写代码编译链接装载执行 1. 编写代码 编写代码是大…

【C语言初阶(6)】猜数字游戏

文章目录 1. 游戏描述2. 代码结构2.1 菜单函数2.2 游戏函数2.3 主体函数 3. 代码实现 1. 游戏描述 电脑自动生成一个1-100以内的数字。我们输入一个我们猜的数字。如果我们猜的数字比电脑随机生成的数字大,那么输出(猜大了),反之…

【Django】如何在django模型中添加一个*后面的必填字段

form.py 会被单独访问的字段(如使用{{form.as_p}}),然后可以将属性添加到您的ModelForm required_css_class = ‘required’ class MyForm(forms.Form):required_css_class = required这将定义的所有领域需要为具有“必要”类 然后你就可以使用CSS添加星号: test.html …

(动态规划) 673. 最长递增子序列的个数 ——【Leetcode每日一题】

❓ 673. 最长递增子序列的个数 难度:中等 给定一个未排序的整数数组 nums , 返回最长递增子序列的个数 。 注意 这个数列必须是 严格 递增的。 示例 1: 输入: [1,3,5,4,7] 输出: 2 解释: 有两个最长递增子序列,分别是 [1, 3, 4, 7] 和[1,…

mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入

文章目录 背景说明 背景说明 我这里主要针对2处地方要进行增量执行sql: 1.新功能需要创建一张新表结构indicator_alarm_threshold2.给菜单表和另一个表新增数据 我们现在使用的是项目启动先初始化加载init-table.sql的脚本(这里面的轻易不动了,保持原…

华为OD的后端面经

本文是一篇华为OD的后端面试题目总结。背景是一个应届生的校招经历。 一、笔试 笔试是三道算法题,时间是150分钟也就是两个半小时,分值是100、100、200,如果是目标院校的话,好像150分就过了,不是的话分数线好像会高很…

分布式存储技术调研

适合场景,可用,怎么搭建使用 MinIO(注意该开源使用的AGPL-3.0协议) https://www.minio.org.cn/ 相关 使用场景:MinIO适用于需要快速、可扩展和高性能对象存储的场景。它可以用作私有云或公共云环境中的存储解决方案,并且与云原生…