通过一个tcpdump抓包来分析IPv4数据包

image.png
  • 版本号: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

image.png

首先看到开头的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
  • 首部长度:0x55*4=20,表示IP报头长度为20字节。一个字节通常等于8位,所以这里可以知道IP报头为45102001
  • TOS服务类型:0x10
  • 总长度:0x00fc,换算下来为374字节。
  • 标识:0x5742
  • 3bit标志 + 13bit片偏移:0x4000
  • 生存时间:0x40,值为64
  • 协议:0x06,代表TCP协议
  • 首部校验和:0x20cb

你可能感兴趣的:(通过一个tcpdump抓包来分析IPv4数据包)