程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

tcpdump抓udp包示例 及IP、TCP、UDP协议格式

balukai 2025-02-03 11:22:00 文章精选 6 ℃

用tcpdump抓udp数据包时,抓到的数据由:20字节IP首部+8字节udp首部+负载数据 构成。

tcpdump - i wlan0 udp -nn port 9877 -X

按源IP和端口匹配udp包:

[root@wen~]# tcpdump -i wlan0 udp -nn port 9877 and src 192.168.0.108 -X

按目的IP和端口匹配udp包:

[root@wen~]# tcpdump -i wlan0 udp -nn port 9877 and dst 192.168.0.106 -X


以下内容整理自网络

IP包头详解

ip包头最小度 20字节,具体多大,取决于可选项有多大

可选项最大度:10*4=40个字节

IP最大的度:20字节+40个字节 = 60字节

所以是20~ 60字节,但 一般是:20字节

1.版本(4)

告诉别人,IP包里的IP地址使用的是ipv4还是ipv6 4bit的版本字段表示IP的版本号。

如果为0100表示IPv4,

如果为0110表示IPv6。

2.首部度(4)

表示IP首部的总度

在没有可选项时,普通的IP包头度20byte 最小:20字节,最大:60字节

3.优先级与服务类型(8)

前三个bit代表优先级,中间四个bit表示服务类型,最后一个bit没有被启用

优先级最高为5,用于语音流量,优先级应用:大公司的专线;

服务类型:低延迟、多通道

4.总度(16)

表示整个IP数据报(三层+四层+五层)的度,以字节为单位。

5.标识符(16)

唯一的标识主机发送的报文,如果IP报文在数据链路层被分片了, 那么每一个片里面的这个id是相同的

6.标志(3)

第1个bit是保留位(一般置为0,代表未启用)

第2个bit代表数据包是否分片(0分片,1未分片)

第3个bit代表是否为最后一个分片(0是,1不是)

7.段偏移量(13)

是分片相对于原始IP报文开始处的偏移. 其实就是在表示当前分片在原报文中处在哪个位置

8.TTL(8)

生存时间(Time To Live, TTL),数据报到达目的地的最大报文跳数,如果ttl减为0,则被路由器干掉。变相的节省网络资源,TTL防止一个数据包在网络上永久的循环

Ping 返回的TTL值是初始TTL值,处理的TTL值在可选项

ping 回显的TTL值大于100一般是window,小于100一般是Liunx;

Time To Live :0~255

9.协议号(8)

表示上层协议的类型

3个

ICMP 协议号:1

tcp 协议号:6

udp 协议号:17

10.首部/头部校验和(16)

使用CRC进行校验, 来鉴别头部是否损坏,校验的位置:首部20个字节

11.源地址(32)和目标地址(32)

表示发送端和接收端的地址

12.可选项(最多40)

不定, 最多40字节

TCP协议头格式:

TCP包头为20字节

TCP包头解释

line 1:源端口号、目的端口号,用于建立连接时,确认源端口(本机)和目的主机的端口号

line 2:序号,用来表示发送端到接收端的数据字节流

line 3:确认序号,表示下一次所期望收到的数据的序列号,只有ACK标志为1时,确认号字段才有效。一旦建立连接,ACK标志被设置为1

line 4:数据偏移、保留、TCP的标志位、窗口

标志位:

URG:紧急指针有效

ACK:确认序号有效

PSH:接收方应该尽快将这个报文交给应用层

RST:重置连接

SYN:同步序号用来发起了一个新连接

FIN:释放一个连接

line 5:校验和、紧急指针

line 6:参数

UDP协议头格式

1)端口号表示发送进程和接收进程。

2)UDP长度字段指的是UDP首部和UDP数据的字节长度。该字段的最小值为8字节(发送一份0字节的UDP数据报是OK)。这个UDP长度是有冗余的。IP数据报长度指的是数据报全长,因此UDP数据报长度是全长减去IP首部的长度。

3)UDP检验和 覆盖UDP首部和UDP数据。UDP检验和是一个端到端的检验和。它由发送端计算,然后由接收端验证。其目的是为了发现UDP首部和数据在发送端到接收端之间发生的任何改动。

UDP检验和的基本计算方法 与 IP首部检验和计算方法相类似(16 bit字的二进制反码和),但是它们之间存在不同的地方。首先,UDP数据报的长度可以为奇数字节,但是检验和算法是把若干个16 bit字相加。解决方法是必要时在最后增加填充字节0,这只是为了检验和的计算。

其次,UDP数据报和TCP段都包含一个12字节长的伪首部,它是为了计算检验和而设置的。伪首部包含IP首部一些字段。其目的是让UDP两次检查数据是否已经正确到达目的地(例如,IP没有接受地址不是本主机的数据报,以及IP没有把应传给另一高层的数据报传给UDP)。UDP数据报中的伪首部格式如图所示。

考链接https://blog.csdn.net/weixin_46044975/article/details/121927436

参考链接:https://blog.csdn.net/bin080808jie/article/details/124034941

参考链接:https://blog.csdn.net/qq_38314112/article/details/80776542

Tags:

最近发表
标签列表