本关任务:能够掌握简单的 UDP 包分析。
为了更好掌握本章内容,你需要了解的有:
UDP(User Datagram Protocol),用户数据报协议,是 OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。 UDP 协议与 TCP 协议一样用于处理数据包,在 OSI 模型中,两者都位于传输层,处于 IP 协议的上一层。UDP 有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。
许多应用只支持 UDP ,它不产生任何额外的数据,即使知道有破坏的包也不进行重发。当强调传输性能而不是传输的完整性时,如音频和多媒体应用,UDP 是最好的选择。数据传输时间很短,以至于此前的连接过程成为整个流量主体的情况下,UDP 也是一个好的选择。
UDP 首部有 8 个字节,由 4 个字段构成,每个字段都是两个字节:
注:端口是用来指明数据的来源(应用程序)以及数据发往的目的地(同样是应用程序)。字段包含了 16 比特的 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 进行过滤操作。
无论多大包,从 UDP 协议这一层级来说,并没有分为多个 UDP 包。在试验中,当包的长度达到 10153 时,接收端根本无法接收到发送的包(发送方并不能得到是否接收成功的消息)。
UDP 和 TCP 协议的主要区别是两者在如何实现信息的可靠传递方面不同。TCP 协议中包含了专门的传递保证机制,当数据接收方收到发送方传来的信息时,会自动向发送方发出确认消息。发送方只有在接收到该确认消息之后才继续传送其它信息,否则将一直等待直到收到确认信息为止。与 TCP 不同,UDP 协议并不提供数据传送的保证机制。如果在从发送方到接收方的传递过程中出现数据包的丢失,协议本身并不能做出任何检测或提示。因此,通常人们把 UDP 协议称为不可靠的传输协议。
TCP
是面向连接的传输控制协议,而UDP
提供了无连接的数据报服务,TCP
具有高可靠性,确保传输数据的正确性,不出现丢失或乱序;UDP
在传输数据前不建立连接,不对数据报进行检查与修改,无须等待对方的应答,所以会出现分组丢失、重复、乱序,应用程序需要负责传输可靠性方面的所有工作;UDP
具有较好的实时性,工作效率较TCP
协议高;UDP
段结构比TCP
的段结构简单,因此网络开销也小;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