使用wireshark这款软件来分析UDP包,UDP报文为了方便读者复现,直接使用官网提供的包文件说明

准备UDP分析报文

从wireshark官网下载UDP分析包:tpncp_udp.pcap,使用wireshark打开tpncp_udp.pcap,这里我们选择第4个UDP报文,数据长度len=12,选择一个尽可能小一点的数据包,后面计算校验和字段减少些运算

在这里插入图片描述

分析UDP报文

点击/双击第4个UDP报文,可以看到运输层的协议使用UDP协议,UDP数据大小为12,IP网际层也需要使用到,运输层在首部字段校验和需要使用到伪首部信息,也就是IP网际层的信息
在这里插入图片描述

1. 分析UDP的首部格式

贴一个UDP 的首部格式,方便对应
在这里插入图片描述
我们可以看出,字段分别对应(16进制)

  • 源端口:097c
  • 目的端口:0978
  • 长度:0014
  • 校验和:60e3

在这里插入图片描述

2. 校验UDP的首部格式值来源

长度:0014,10进制为20字节
在这里插入图片描述

从UDP 用户数据报计算得出,UDP 用户数据报长度 = UDP 首部 + UDP 用户数据报的数据部分,计算得出20字节,正确
在这里插入图片描述
从IP数据报计算得出,UDP 用户数据报长度 = IP数据报长度 - IP首部长度,计算得出20字节,正确
在这里插入图片描述
校验和:60e3,二进制为0110 0000 1110 0011
计算方法可以参考上一篇博客:

校验和字段计算需要使用到伪首部
在这里插入图片描述
伪首部字段对应
在这里插入图片描述
计算,将数据每16位为一组

二进制含义说明报文中信息
00001010 00000100源IP地址10.4(10进制)
00000010 001011002.44(10进制)
00001010 00000100目的IP地址10.4(10进制)
01100000 0110010096.100 (10进制)
00000000 00010001全0 IP数据报文协议字段0.17(10进制)
00000000 00010100长度20 (10进制)
00001001 01111100源端口2428(10进制)
00001001 01111000目的端口2424(10进制)
00000000 00010100长度20 (10进制)
00000000 00000000校验和置为0
00010101 00011001数据09(16进制)
00000000 00001000数据7c(16进制)
00000000 00000010数据09(16进制)
00000000 00000000数据78(16进制)
00000000 00000000数据00(16进制)
00000000 00110100数据(共12字节)14(16进制)

校验和详细计算过程

	0000101000000100
	0000001000101100
  +	----------------
  =	0000110000110000
------------------------
	0000110000110000
	0000101000000100
  +	----------------
  =	0001011000110100
------------------------
	0001011000110100
	0110000001100100
  +	----------------
  =	0111011010011000
------------------------
	0111011010011000
	0000000000010001
  +	----------------
  =	0111011010101001
------------------------
	0111011010101001
	0000000000010100
  +	----------------
  =	0111011010111101
------------------------
	0111011010111101
	0000100101111100
  +	----------------
  =	1000000000111001
------------------------
	1000000000111001
	0000100101111000
  +	----------------
  =	1000100110110001
------------------------
	1000100110110001
	0000000000010100
  +	----------------
  =	1000100111000101
------------------------
	1000100111000101
	0000000000000000
  +	----------------
  =	1000100111000101
------------------------
	1000100111000101
	0001010100011001
  +	----------------
  =	1001111011011110
------------------------
	1001111011011110
	0000000000001000
  +	----------------
  =	1001111011100110
------------------------
	1001111011100110
	0000000000000010
  +	----------------
  =	1001111011101000
------------------------
	1001111011101000
	0000000000000000
  +	----------------
  =	1001111011101000
------------------------
	1001111011101000
	0000000000000000
  +	----------------
  =	1001111011101000
------------------------
	1001111011101000
	0000000000110100
  +	----------------
  =	1001111100011100
------------------------

计算结果为1001111100011100

取反为0110000011100011,对应16进制6e03
在这里插入图片描述
将校验和6e03填写值该字段
在这里插入图片描述

以上就是分析用户数据报UDP全过程

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐