传输层协议分析--第4关:UDP 包分析

任务描述

本关任务:能够掌握简单的 UDP 包分析。

相关知识

为了更好掌握本章内容,你需要了解的有:

  1. UDP 报文的简介;
  2. UDP 报文格式;
  3. Wireshark 软件中的 UDP 抓包分析。
UDP 简介

UDP(User Datagram Protocol),用户数据报协议,是 OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。 UDP 协议与 TCP 协议一样用于处理数据包,在 OSI 模型中,两者都位于传输层,处于 IP 协议的上一层。UDP 有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。

许多应用只支持 UDP ,它不产生任何额外的数据,即使知道有破坏的包也不进行重发。当强调传输性能而不是传输的完整性时,如音频和多媒体应用,UDP 是最好的选择。数据传输时间很短,以至于此前的连接过程成为整个流量主体的情况下,UDP 也是一个好的选择。

UDP 报文格式

UDP 首部有 8 个字节,由 4 个字段构成,每个字段都是两个字节:

  1. 源端口: 源端口号,需要对方回信时选用,不需要时全部置 0 ;
  2. 目的端口:目的端口号,在终点交付报文的时候需要用到;

注:端口是用来指明数据的来源(应用程序)以及数据发往的目的地(同样是应用程序)。字段包含了 16 比特的 UDP 协议端口号,它使得多个应用程序可以多路复用同一个传输层协议及 UDP 协议,仅通过端口号来区分不同的应用程序。

  1. 长度:UDP 的数据报的长度(包括首部和数据)其最小值为 8(只有首部)。字段记录了该 UDP 数据包的总长度(以字节为单位),包括 8 字节的 UDP 头和其后的数据部分。最小值是 8(报文头的长度),最大值为 65535 字节;
  2. 校验和:检测 UDP 数据报在传输中是否有错,有错则丢弃。它的值是通过计算 UDP 数据报及一个伪包头而得到的。校验和的计算方法与通用的一样,都是累加求和。
UDP 校验和的计算
原理

对发送方的 UDP 报文段的所有 16 比特字的和进行反码运算,当求和遇见溢出的时候,进行回卷(回卷的补充在下面),得到的结果放在 UDP 报文段中的检验和字段。 ######UDP 校验的所需信息 (1)UDP 伪首部:源 IP + 目的 IP + Byte 0 + Byte17 + UDP 长度,目的是让 UDP 两次检查数据是否以及正确到达目的地,只是单纯为了做校验用; (2)UDP 首部:该长度不是报文的总长度,而是 UDP(包括 UDP 头和数据部分)的总长度; (3)UDP 的数据部分。 ######计算步骤 (1)把伪首部添加到 UDP 上; (2)计算初始时将校验和字段添零; (3)把所有位划分为 16 位( 2 字节)的字; (4)把所有 16 位的字相加,如果遇到进位,则将高于 16 字节的进位部分的值加到最低位上; (5)将所有字相加得到的结果应该为一个 16 位的数,将该数按位取反则可以得到校验和。

在计算校验和的时候,需要在 UDP 数据报之前增加 12 字节的伪首部,伪首部并不是 UDP 真正的首部。只是在计算校验和,临时添加在 UDP 数据报的前面,得到一个临时的 UDP 数据报。校验和就是按照这个临时的 UDP 数据报计算的。伪首部既不向下传送也不向上递交,而仅仅是为了计算校验和。这样的校验和,既检查了 UDP 数据报,又对 IP 数据报的源 IP 地址和目的 IP 地址进行了检验。

Wireshark 中 UDP 抓包分析

打开 Wireshark 抓包软件,开始抓包。停止抓包后在过滤窗口输入 UDP 进行过滤操作。

无论多大包,从 UDP 协议这一层级来说,并没有分为多个 UDP 包。在试验中,当包的长度达到 10153 时,接收端根本无法接收到发送的包(发送方并不能得到是否接收成功的消息)。

UDP 与 TCP 对比

UDP 和 TCP 协议的主要区别是两者在如何实现信息的可靠传递方面不同。TCP 协议中包含了专门的传递保证机制,当数据接收方收到发送方传来的信息时,会自动向发送方发出确认消息。发送方只有在接收到该确认消息之后才继续传送其它信息,否则将一直等待直到收到确认信息为止。与 TCP 不同,UDP 协议并不提供数据传送的保证机制。如果在从发送方到接收方的传递过程中出现数据包的丢失,协议本身并不能做出任何检测或提示。因此,通常人们把 UDP 协议称为不可靠的传输协议。

  1. TCP是面向连接的传输控制协议,而UDP提供了无连接的数据报服务,TCP具有高可靠性,确保传输数据的正确性,不出现丢失或乱序;
  2. UDP在传输数据前不建立连接,不对数据报进行检查与修改,无须等待对方的应答,所以会出现分组丢失、重复、乱序,应用程序需要负责传输可靠性方面的所有工作;
  3. UDP具有较好的实时性,工作效率较TCP协议高;
  4. UDP段结构比TCP的段结构简单,因此网络开销也小;
  5. TCP协议可以保证接收端毫无差错地接收到发送端发出的字节流,为应用程序提供可靠的通信服务。对可靠性要求高的通信系统往往使用TCP传输数据。
操作要求

双击打开桌面上的工作区文件夹”workspace”,再打开实训文件夹”myshixun”,并打开其中的文件message-4.txt,将查询的信息保存到文件message-4.txt。具体要求如下:

(1)打开 Wireshark,加载实训文件夹中的http-ethereal-trace-5文件,筛选 UDP 数据包;

(2)从跟踪中选择一个 UDP 数据包。打开该数据包,查看 UDP 标头中的四个字段的名称,并将这四个字段的名称写入 txt 文件(用“;”分隔);

(3)UDP 标头的四个字段总共有多少字节,将信息写入 txt 文件;

(4)从 IPV4(Internet Protocol Version4)中找到 UDP 的协议号是多少,将信息写入 txt 文件;

message-4.txt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/236642.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

anaconda 安装 使用 pytorch onnx onnxruntime

一:安装 如果不是 x86_64,需要去镜像看对应的版本 安装 Anaconda 输入命令 bash Anaconda3-2021.11-Linux-x86_64.sh 然后输入 yes 表示同意 确认安装的路径,一般直接回车安装在默认的 /home/你的名字/anaconda3 很快就安装完毕。输入 yes…

SCAU:18063 圈中的游戏

18063 圈中的游戏 时间限制:1000MS 代码长度限制:10KB 提交次数:0 通过次数:0 题型: 编程题 语言: G;GCC;VC Description 有n个人围成一圈,从第1个人开始报数1、2、3,每报到3的人退出圈子。编程使用链表找出最后留下的人。输入格式 输入一个数n&a…

三防平板定制|5G三防工业平板电脑终端联发科MTK方案

三防平板,顾名思义,是指具备防水、防尘、防坠落等特性的平板电脑。它可以在各种恶劣环境中正常使用,如煤矿、工业制造、户外、建筑等。 三防平板的优势在于其坚固耐用、性能稳定。它通常采用高强度的材料制成,具有较强的抗冲击性和…

如何在 openKylin 上使用 ONLYOFFICE 桌面编辑器

文章作者:ajun ONLYOFFICE 桌面编辑器是一款基于依据 AGPL v.3 许可进行分发的开源办公套件。使用这款应用,您无需保持网络连接状态即可处理存储在计算机上的文档。 本文章基于中国根操作系统 openKylin 操作系统,使用软件商店快速安装与手…

uniapp H5项目使用ucharts的Echart组件方式创建圆环

问题:没有报错但是图表不出来 【 调试了半天圆环图表没有不出来。是因为没有明示设置宽度与高度】 /* 请根据实际需求修改父元素尺寸,组件自动识别宽高 */ .charts-box { width: 100%; height: 300px; } 最终效果 先导入ucharts到项目 uniapp的项目…

零代码敲敲云与钉钉的完美集成,打造智能办公新生态

为满足企业对于高效沟通、协作和工作流程管理日益增长的需求,许多企业都在寻找能够与他们现有的工作平台无缝集成的工具。钉钉作为一款广受欢迎的企业通讯和协同工具,已经成为了众多企业的首选。目前敲敲云已于钉钉完美集成,通过这次集成&…

华为配置BGP的基本示例

组网需求 如图1所示,需要在所有Switch间运行BGP协议,SwitchA、SwitchB之间建立EBGP连接,SwitchB、SwitchC和SwitchD之间建立IBGP全连接。 说明 请确保该场景下互联接口的STP处于未使能状态。因为在使能STP的环形网络中,如果用交…

Navicat关闭自动检查更新版本教程

Navicat关闭自动检查更新版本教程 首先,点击菜单中的工具菜单,弹出了下拉菜单选中为选项点击选项 首先,点击菜单中的工具菜单,弹出了下拉菜单选中为选项 点击选项 去掉勾选上在启动时自动检查更新选项

SpringBoot 集成redis及开发使用、redis客户端工具、redis服务器安装配置、redis启动运行

一 导入redis包 <!--redis数据库--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!--spring2.0集成redis所需common-pool2--><depend…

SQLiteStudio安装指南

本博文源于笔者想要打开sqlite3的db文件&#xff0c;于是下载了SQLiteStudio&#xff0c;下载了它&#xff0c;sqlite3的文件随便查看&#xff0c;这里从零开始安装 文章目录 1、搜索官网网址2、开始下载3、开始安装4、开始使用5、总结 1、搜索官网网址 官网地址&#xff1a;…

C#基础——委托、Action和Func的使用

1、委托 委托&#xff08;Delegate&#xff09;是一种类型&#xff0c;可以用来表示对一个或多个方法的引用。委托提供了一种方便的方式来将方法作为参数传递给其他方法&#xff0c;或将方法存储在数据结构中以供以后调用。 不带参数且没返回值的委托 delegate void HDLDelega…

使用docker-compose管理docker服务

使用docker-compose管理docker服务 1&#xff0c;创建docker-compose.yml version: 3 services:javaapp:build: context: ./javaappdockerfile: Dockerfileports:- "9202:9202"- "19202:19202"goapp:build: context: ./goappdockerfile: Dockerfileports…

.netcore 控制台程序,在window操作系统中,怎么获取管理员权限运行此程序

在.NET Core控制台程序中设置管理员权限运行需要以下步骤&#xff1a; 在项目的app.manifest文件中指定管理员权限&#xff1a; <requestedExecutionLevel level"requireAdministrator" />将app.manifest文件设置为嵌入式资源 在程序中获取管理员权限&#…

acl过滤报文配置(hcia)

放火墙就是这样的 原理 问控制列表ACL&#xff08;Access Control List)是由一条或多条规则组成的集合。所谓规则&#xff0c;是 描述报文匹配条件的判断语句&#xff0c;这些条件可以是报文的源地址、目的地址、端口号等。 ACL本质上是一种报文过滤器&#xff0c;规则是过…

操作系统大会2023 | 麒麟信安根植openEuler社区,全场景·同生态·共未来

12月15-16日&#xff0c;以“崛起数字时代 引领数智未来”为主题的操作系统大会 &openEuler Summit 2023在北京举行。产业组织、开放原子开源基金会、学术领袖、行业用户、生态伙伴以及开发者等&#xff0c;共同探讨操作系统产业发展方向和未来机遇&#xff0c;展示最新合作…

SunTorque智能扭矩:扭矩衰减的原因以及如何减缓?

智能扭矩系统-智能拧紧系统-扭矩自动控制系统-SunTorque 在汽车工业中&#xff0c;扭矩衰减是一个令人头痛的问题。它指的是随着车辆使用时间的增长&#xff0c;发动机输出的扭矩逐渐减少。这种现象不仅会影响车辆的动力性能&#xff0c;还会导致燃油经济性下降&#xff0c;甚…

SQL 是一种声明式语言吗?

在学习SQL的时候&#xff0c;我们经常听到这样的说法&#xff1a;SQL是一种声明性语言。你只需要告诉它做什么,不用告诉它怎么做&#xff0c;它就会找到自己的实现方法。也就是说&#xff0c;你只需要用它来描述任务目标&#xff0c;而不需要解释计算过程&#xff0c;这与传统的…

搅拌站智能上料系统,无人值守,均匀布撒!

搅拌站中的骨料上料系统&#xff0c;遇上最新的人工智能技术&#xff0c;会碰撞出怎样的新发展和新突破&#xff1f;今天和砼行们分享一个现场案例&#xff0c;这是思伟软件在某数字化搅拌站中的应用。 上料无人值守 后场上料配合无人地磅系统&#xff0c;仅需1名操作员在控制…

[网络安全]在win2000虚拟机上创建隐藏账户

目录 1.winR->cmd->regedt32 2.新建账号&#xff0c;例如HiddenAccount$($表示在命令行下不现实此用户&#xff09; 3.winR->cmd->regedit 3.将HiddenAccount$删掉 4.最后一步 手工创建隐藏账户 1.你需要一台win2000 2.winR->cmd->regedt32 增加HEY_LOAC…

使用 Docker 部署企业培训系统 PlayEdu

1&#xff09;PlayEdu 介绍 官网&#xff1a;https://www.playedu.xyz/ GitHub&#xff1a;https://github.com/PlayEdu/PlayEdu PlayEdu 是一款适用于搭建内部培训平台的开源系统&#xff0c;旨在为企业/机构打造自己品牌的内部培训平台。PlayEdu 基于 Java MySQL 开发&…