tcpdump分析IP协议

作者: 十毛tenmao | 来源:发表于2019-04-01 22:32 被阅读0次

IP协议是互联网最基础的协议,在使用tcpdump查看数据包的时候,有时候对一些字段的汉所以不是很明确

比如:

[tenmao@localhost ~]$ sudo tcpdump -i any -n icmp -vvvv
tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
21:11:21.505189 IP (tos 0x0, ttl 64, id 36112, offset 0, flags [DF], proto ICMP (1), length 84)
    192.168.58.100 > 14.215.177.38: ICMP echo request, id 61852, seq 1, length 64
21:11:21.509826 IP (tos 0x0, ttl 128, id 49303, offset 0, flags [none], proto ICMP (1), length 84)
    14.215.177.38 > 192.168.58.100: ICMP echo reply, id 61852, seq 1, length 64

我们仔细对照IP协议来分析上面的内容

IP协议字段解释


IP协议头
  • 版本号:IP协议的版本。对于IPv4来说值是4
  • 头部长度:4位最大为0xF,注意该字段表示单位是字(4字节)
  • 服务类型(Type Of Service,TOS):3位优先权字段(现已被忽略) + 4位TOS字段 + 1位保留字段(须为0)。4位TOS字段分别表示最小延时、最大吞吐量、最高可靠性、最小费用,其中最多有一个能置为1。应用程序根据实际需要来设置 TOS值,如ssh和telnet这样的登录程序需要的是最小延时的服务,文件传输ftp需要的是最大吞吐量的服务
  • 总长度: 指整个IP数据报的长度,单位为字节,即IP数据报的最大长度为65535字节(2的16次方)。由于MTU的限制,长度超过MTU的数据报都将被分片传输,所以实际传输的IP分片数据报的长度远远没有达到最大值

下来的3个字段则描述如何实现分片:

  • 标识:唯一地标识主机发送的每一个数据报,其初始值是随机的,每发送一个数据报其值就加1。同一个数据报的所有分片都具有相同的标识值

  • 标志: 位1保留,位2表禁止分片(DF),若设置了此位,IP模块将不对数据报进行分片,在此情况下若IP数据报超过MTU,IP模块将丢弃数据报并返回一个ICMP差错报文;位3标识更多分片(MF),除了数据报的最后一个分片,其他分片都要把它设置为1

  • 位偏移:分片相对原始IP数据报数据部分的偏移。实际的偏移值为该值左移3位后得到的,所以除了最后一个IP数据报分片外,每个IP分片的数据部分的长度都必须是8的整数倍

  • 生存时间:数据报到达目的地之前允许经过的路由器跳数。TTL值被发送端设置,常设置为64。数据报在转发过程中每经过一个路由该值就被路由器减1.当TTL值为0时,路由器就将该数据包丢弃,并向源端发送一个ICMP差错报文。TTL可以防止数据报陷入路由循环

  • 协议: 区分IP协议上的上层协议。在Linux系统的/etc/protocols文件中定义了所有上层协议对应的协议字段,ICMP为1,TCP为6,UDP为17

  • 头部校验和: 由发送端填充接收端对其使用CRC算法校验,检查IP数据报头部在传输过程中是否损坏

  • 源IP地址和目的IP地址: 表示数据报的发送端和接收端。一般情况下这两个地址在整个数据报传递过程中保持不变,不论中间经过多少个路由器

  • 选项:可变长的可选信息,最多包含40字节。选项字段很少被使用。可用的IP可选项有:

    • 记录路由: 记录数据包途径的所有路由的IP,这样可以追踪数据包的传递路径
    • 时间戳: 记录每个路由器数据报被转发的时间或者时间与IP地址对,这样就可以测量途径路由之间数据报的传输的时间
    • 松散路由选择: 指定路由器的IP地址列表数据发送过程中必须经过所有的路由器
    • 严格路由选择: 数据包只能经过被指定的IP地址列表的路由器
    • 上层协议(如TCP/UDP)的头部信息

tcpdump抓取二进制数据

  • 二进制数据
[tenmao@localhost ~]$ sudo tcpdump -i any -nxt icmp -vvvv
tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
IP (tos 0x0, ttl 64, id 8012, offset 0, flags [DF], proto ICMP (1), length 84)
    192.168.58.100 > 14.215.177.38: ICMP echo request, id 9198, seq 1, length 64
    0x0000:  4500 0054 df3d 4000 4001 a060 c0a8 3a64
    0x0010:  0ed7 b127 0800 cbae 472e 0001 5d71 a35c
    0x0020:  0000 0000 1e81 0700 0000 0000 1011 1213
    0x0030:  1415 1617 1819 1a1b 1c1d 1e1f 2021 2223
    0x0040:  2425 2627 2829 2a2b 2c2d 2e2f 3031 3233
    0x0050:  3435 3637

IP头部对照解析

IP (tos 0x0, ttl 64, id 8012, offset 0, flags [DF], proto ICMP (1), length 84)
    192.168.58.100 > 14.215.177.38: ICMP echo request, id 9198, seq 1, length 64
4500 0054 1f4c 4000 4001 6053 c0a8 3a64
字段 协议 内容 对应的tcpdump文字描述
0x4 4位的版本号 IP版本号
0x5 4位的头部长度 头部长度为5个字(20字节)
0x00 8位的服务类型TOS 普通服务 tos 0x0
0x0054 16位的总长度 数据包总长度(84字节) length 84
0x1f4c 16位的标识 数据报标识 id 8012
0x4 3位的标志 禁止分片,因没携带数据 flags [DF]
0x000 13位的位偏移 为0表没发生位偏移 offset 0
0x40 8位的生存时间 生存时间为64跳 ttl 64
0x01 8位的协议字段 为1表上层协议是ICMP协议 proto ICMP (1)
0x6053 16位的IP头部校验和 头部校验和
0xc0a8 3a64 32位的源端IP地址 源端IP地址192.168.58.100 192.168.58.100
0x0ed7 b126 32位的目的端IP地址 目的端IP地址14.215.177.38 14.215.177.38

更多字段

tos(Type of Service):

8个优先级的定义如下:
111--Network Control(网络控制);
110--Internetwork Control(网间控制);
101--Critic(关键);
100--Flash Override(疾速);
011--Flash(闪速);
010--Immediate(快速);
001--Priority(优先);
000--Routine(普通)

常见proto协议号

  • 1 ICMP Internet 控制消息
  • 6 TCP 传输控制
  • 17 UDP 用户数据报

参考

相关文章

  • tcpdump分析IP协议

    IP协议是互联网最基础的协议,在使用tcpdump查看数据包的时候,有时候对一些字段的汉所以不是很明确 比如: 我...

  • tcpdump常用命令总结

    tcpdump -nn -i 网卡 dst host 目的ip and src host 源IP and 协议(t...

  • Tcpdump 用法详解

    Tcpdump 是信息安全领域常用的嗅探和网络分析工具,运行在命令行下。虽然要用好它需要对 TCP/IP 协议有足...

  • tcpdump分析ICMP协议

    IP协议是一种无连接的,不可靠的数据包协议,它并不能保证数据一定被送达,那么我们要保证数据送到就需要通过其它模块来...

  • iOS开发之玩转蓝牙

    之前详细谈过不少关于HTTP协议的知识点,TCP/IP也通过tcpdump做过简单的介绍,但网络协议的本质其实是连...

  • tcpdump

    yum install tcpdump tcpdump 3、 proto 给定协议限定匹配的...

  • 【tcpdump】tcpdump抓包工具教程

    tcpdump的host和net过滤规则 tcpdump的基于端口的过滤规则 tcpdump的基于协议的过滤规则 ...

  • 常见网络协议

    最近用tcpdump抓包时,经常需要用到tcp、ip等网络协议,在此记录下,备忘;在网络上找了下,发现roclin...

  • dump获取get post

    tcpdump -A -s 0 'tcp port 443 and (((ip[2:2] - ((ip[0]&0x...

  • 常用的抓包工具

    常用的抓包工具: tcpdump、sniffer tcpdump的介绍和使用抓取源ip是10.10.10.59且目...

网友评论

    本文标题:tcpdump分析IP协议

    本文链接:https://www.haomeiwen.com/subject/xstibqtx.html