传输层协议分析--第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.rhkb.cn/news/221812.html

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

相关文章

proxysql读写分离组件部署

一、前言 在mysql一主两从架构的前提下,引入读写分离组件,可以极大的提高mysql性能,proxysql可以在高可用mysql架构发生主从故障时,进行自动的主从读写节点切换,即当mysql其他从节点当选新的主节点时,proxy…

vscode开发python环境配置

前言 vscode作为一款好用的轻量级代码编辑器,不仅支持代码调试,而且还有丰富的插件库,可以说是免费好用,对于初学者来说用来写写python是再合适不过了。下面就推荐几款个人觉得还不错的插件,希望可以帮助大家更好地写…

Python游戏编程 – 猜数字游戏

Python游戏编程 – 猜数字游戏 Python Game Programming – Guessing Number Game By JacksonML 对Python有一定了解,并且熟知变量、数据类型、循环与分支、函数功能后,我们可以尝试来编写简单的游戏代码。 本文简要介绍如何编写猜数字游戏的Python代码…

研发管理-代码管理篇

前言: 工作了这些年,工作了三家公司,也用过主流的代码管理平台,比如SVN,git系列(gitlib,gitee),各有优点,我个人比较喜欢SVN,多人协作的代码管理难免会有代码冲突&#…

MaBatis使用`ResultMap`标签手动映射详解使用

文章目录 MaBatis使用ResultMap标签手动映射详解使用1、MyBatis只能自动维护库表”列名“与”属性名“相同时的对应关系,二者不同时无法自动ORM,如下:2、在SQL中使用 as 为查询字段添加列别名,以匹配属性名:但是如果我…

TCAX特效字幕保姆入门教程+效果演示+软件源码自取

目录 介绍 下载链接 初步使用 软件使用 tcc文件介绍 tcc文件版本 模式设置 ​编辑 k值提供方式举例 特效脚本设置 主要设置 ass全局风格设置 额外设置 常见问题 编码使用 使用其他tcax博主的进行编码测试 介绍 TCAX是一款专门用于制作特效字幕的软件。通过TCAX…

【中小型企业网络实战案例 一】规划、需求和基本配置

热门IT技术【视频教程】https://xmws-it.blog.csdn.net/article/details/134398330?spm1001.2014.3001.5502 案例拓扑图 案例需求 在中小园区中,S5735通常部署在网络的接入层,S8700通常部署在网络的核心,出口路由器一般选用AR系列路由器。 …

使用Windows批处理命令行和ImageMagick批量将文件夹中的图片转换为PDF文档的方法

目录 应用场景 实现思路 实现过程 1.下载安装imageMagick 2.遍历源文件夹 3.转换图片为pdf文档 4.最终执行的命令 5.结果验证 6.将以上命令改写为windows批处理文件 应用场景 图像是一种常见的数据。图片几乎是一个信息系统中必不可少的组成部分。为了方便阅读&…

Redis一些常用的技术

文章目录 第1关:Redis 事务与锁机制第2关:流水线第3关:发布订阅第4关:超时命令第5关:使用Lua语言 第1关:Redis 事务与锁机制 编程要求 根据提示,在右侧编辑器Begin-End补充代码,根据…

Mac managing Multiple Python Versions With pyenv 【 mac pyenv 管理多个python 版本 】

文章目录 1. 简介2. 安装2.1 brew 安装 pyenv2.2 脚本安装 3. pyenv 安装 Python4. 卸载 python5. 管理 python 1. 简介 Pyenv 是一个用于管理和切换多个 Python 版本的工具。它允许开发人员在同一台计算机上同时安装和使用多个不同的 Python 版本,而无需对系统进行…

基于EasyDarwin、ffmpeg实现rtsp推流

目录 1 安装EasyDarwin 2 编译安装ffmpeg 3 启动EasyDarwin 4 ffmepg推流 5 百度网盘备份 某项目中测试时需要用到推流,于是用EasyDarwin、ffmpeg实现了RTSP推流,简单记录下过程, 1 安装EasyDarwin 这个可以去官网下载:Eas…

【jvm从入门到实战】(九) 垃圾回收(2)-垃圾回收器

垃圾回收器是垃圾回收算法的具体实现。 由于垃圾回收器分为年轻代和老年代,除了G1之外其他垃圾回收器必须成对组合进行使用 垃圾回收器的组合使用关系图如下。 常用的组合如下: Serial(新生代) Serial Old(老年代) Pa…

Jenkins 构建环境指南

目录 Delete workspace before build starts(常用) Use secret text(s) or file(s) (常用) Add timestamps to the Console Output (常用) Inspect build log for published build scans Terminate a …

Python与Flink的完美融合:合流基本操作解析

更多资料获取 📚 个人网站:ipengtao.com Apache Flink 是一个流式处理框架,支持复杂事件处理和大规模数据分析。在 Flink 中,合流(Join)是一种常见的操作,用于将两个或多个流中的数据按照指定条…

【jsonview去除排序】如何让jsonview不自动排序(已解决)

✈️涉及知识 如何取消JSON默认数值排序,JSON.parse()函数排序关闭,取消JSON.parse排序,Json格式化校验,jsonview排序问题解决方法。 🥇专栏🥇:前端技术,json格式化 💂关…

【模式识别】解锁降维奥秘:深度剖析PCA人脸识别技术

​🌈个人主页:Sarapines Programmer🔥 系列专栏:《模式之谜 | 数据奇迹解码》⏰诗赋清音:云生高巅梦远游, 星光点缀碧海愁。 山川深邃情难晤, 剑气凌云志自修。 目录 🌌1 初识模式识…

【力扣100】543.二叉树的直径

添加链接描述 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def __init__(self):self.max 0def diamete…

【C语言】自定义类型——枚举、联合体

引言 对枚举、联合体进行介绍,包括枚举的声明、枚举的优点,联合体的声明、联合体的大小。 ✨ 猪巴戒:个人主页✨ 所属专栏:《C语言进阶》 🎈跟着猪巴戒,一起学习C语言🎈 目录 引言 枚举 枚举…

【JVM从入门到实战】(八)垃圾回收(1)

内存泄漏:指的是不再使用的对象在系统中未被回收,内存泄漏的积累可能会导致内存溢出 什么是垃圾回收 Java中为了简化对象的释放,引入了自动的垃圾回收(Garbage Collection简称GC)机制。通过垃 圾回收器来对不再使用的…

速度与稳定性的完美结合:深入横测ToDesk、TeamViewer和AnyDesk

文章目录 前言什么是远程办公?远程办公的优势 远程办公软件横测对象远程软件的注册&安装ToDeskTeamViewerAnyDesk 各场景下的实操体验1.办公文件传输及丢包率2.玩游戏操作延迟、稳定3.追剧画质流畅度、稳定4.临时技术支持SOS模式 收费情况与设备连接数总结 前言…