通过一个tcpdump抓包来分析IPv4数据包
2019-08-04 本文已影响0人
飞跑的蛤蟆

- 版本号:4位,用于标明IP版本号。
- 首部长度:4位,表示IP报头长度, 包括选项字段。
- 服务类型(TOS):4位,优先级标志位和服务类型标志位,被路由器用来进行流量的优先排序。
- 总长度:16位,IP头与数据包中数据的长度。
- 标识符:16位,一个唯一的标识数字,用来识别一个数据包或者被分片数据包的次序。
- 标记:3位,用来标记一个数据包是否是一组分片数据包的一部分。
- 分段偏移:13位,一个数据包是一个分片,这个域中的值就会被用来将数据包以正确的顺序重新组装。
- 存活时间:8位,用来定义数据包的生存周期,以经过路由器的跳数/秒数进行描述。
- 协议:8位,用来识别在数据包序列中上层协议数据包的类型。
- 首部校验和:16位,一个错误检测机制,用来确认IP头的内容没有被损坏或者篡改。
- 源IP地址:发出数据包的主机的IP地址。
- 目的IP地址:数据包目的地的IP地址。
- 选项:保留作额外的IP选项。
- 数据:使用IP传递的实际数据。
下面我们使用tcpdump
抓一个包看看
tcpdump -ntx -c 1
- -n 显示IP地址而非域名地址
- -t 不显示时间戳
- -x 以十六进制显示包内内容
- -c tcpdump将在接受到几个数据包后退出
然后再打开另一个终端,执行下面的命令
ping -c1 www.baidu.com

首先看到开头的
192.168.32.141.22222 > 192.168.32.1.55943
代表的是源IP为192.168.32.141,端口 22222,目的IP为192.168.32.1,端口 55943。然后看到
0x0000
那行:
- 协议版本:
0x4
表示的是协议版本为IPv4
。 - 首部长度:
0x5
,5*4=20
,表示IP报头长度为20字节。一个字节通常等于8位,所以这里可以知道IP报头为4510
到2001
。 - TOS服务类型:
0x10
。 - 总长度:
0x00fc
,换算下来为374
字节。 - 标识:
0x5742
- 3bit标志 + 13bit片偏移:
0x4000
- 生存时间:
0x40
,值为64 - 协议:
0x06
,代表TCP协议 - 首部校验和:
0x20cb