tcpdump(六)输出解读

[root@test ~]# tcpdump -i ens39 -nn -X 'port 22' -c 1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens39, link-type EN10MB (Ethernet), capture size 262144 bytes
14:31:53.579814 IP 192.168.146.6.62625 > 192.168.146.131.22: Flags [P.], seq 614429695:614429763, ack 3852162272, win 4101, length 68
	0x0000:  4500 006c 4cc9 4000 8006 07e8 c0a8 9206  E..lL.@.........
	0x0010:  c0a8 9283 f4a1 0016 249f 73ff e59b 54e0  ........$.s...T.
	0x0020:  5018 1005 b7e2 0000 0000 0020 8b78 77e3  P............xw.
	0x0030:  d830 0129 84fe 2b2e b27e cebb 8b81 ca8d  .0.)..+..~......
	0x0040:  1dde fb10 3e63 0694 e48e 773d 9fcd 072d  ....>c....w=...-
	0x0050:  6fd9 30a1 73be c6bb a8f3 64a2 f406 4acf  o.0.s.....d...J.
	0x0060:  6aec 95b2 656f 2d67 0344 f6de            j...eo-g.D..
1 packet captured
3 packets received by filter
0 packets dropped by kernel

解释第2行

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

这是一句贴心的提醒,就是说你的命令里没有用到-v和-vv,如果希望看到更多的内容,可以使用这两个命令。


解释第3行

listening on ens39, link-type EN10MB (Ethernet), capture size 262144 bytes

这一句表示我们监听的是流经ens39这个网卡的网络包,且它的链路层是基于以太网的,要抓的包大小限制是262144字节。


解释第4行

14:31:53.579814 IP 192.168.146.6.62625 > 192.168.146.131.22: Flags [P.], seq 614429695:614429763, ack 3852162272, win 4101, length 68

”14:31:53.579814“  :分别对应着这个包被抓到的 ‘时’、‘分’、‘秒’、‘微秒’ 。

“IP”  :表示这个包在网路层,是IP包 。

“192.168.146.6.62625”  : 表示这个包的源IP为192.168.146.6,源端口为62625  。

“ > ” : 表示数据包的传输方向 。

“192.168.146.131.22” :表示这个包要发向的目的端IP是192.168.146.131,目的端口为22 。

解释5/6/7/8 行

    0x0000:  4500 006c 4ce2 4000 8006 07cf c0a8 9206  E..lL.@.........
    0x0010:  c0a8 9283 f4a1 0016 249f 7667 e59b 5668  ........$.vg..Vh
    0x0020:  5018 1009 8eae 0000 0000 0020 a29f 050f  P...............
    0x0030:  014f e8f7 9bea 266e aa78 43bc 89be 4b6e  .O....&n.xC...Kn 

这几行便是IP包的内容了,是除去以太网之后剩下的内容,其中,左侧部分是十六进制内容,右侧部分是相应的ASCII码内容。

如上,最外层是IP数据包,最开始的一个字节(8位)中,前4位(bit)表示IP的版本,此处为4,表示这是一个IPv4版本的IP包。后4位(bit)表示此IP的首部长度此处的数字是5,由于单位是“4字节”,因此可以计算得出这个IP包的首部长度是固定的20字节。


    0x0000:  4500 006c 4ce2 4000 8006 07cf c0a8 9206  E..lL.@.........
    0x0010:  c0a8 9283 f4a1 0016 249f 7667 e59b 5668  ........$.vg..Vh
    0x0020:  5018 1009 8eae 0000 0000 0020 a29f 050f  P...............
    0x0030:  014f e8f7 9bea 266e aa78 43bc 89be 4b6e  .O....&n.xC...Kn 

如上所示,在IP版本和首部长度之后,接下来的一个字节(8位)是“00”,这是IP协议的服务类型域(TOS),由于很少使用,因此此处设置为00.


    0x0000:  4500 006c 4ce2 4000 8006 07cf c0a8 9206  E..lL.@.........
    0x0010:  c0a8 9283 f4a1 0016 249f 7667 e59b 5668  ........$.vg..Vh
    0x0020:  5018 1009 8eae 0000 0000 0020 a29f 050f  P...............
    0x0030:  014f e8f7 9bea 266e aa78 43bc 89be 4b6e  .O....&n.xC...Kn 

如上所示,后面的2字节(16位)是“006c”,表示整个IP包的总长度(首部长度+数据长度),单位是字节。因此可以知道这个IP包的总长度是108字节.


    0x0000:  4500 006c 4ce2 4000 8006 07cf c0a8 9206  E..lL.@.........
    0x0010:  c0a8 9283 f4a1 0016 249f 7667 e59b 5668  ........$.vg..Vh
    0x0020:  5018 1009 8eae 0000 0000 0020 a29f 050f  P...............
    0x0030:  014f e8f7 9bea 266e aa78 43bc 89be 4b6e  .O....&n.xC...Kn 

如上所示,这是2字节(16位)的“表示域”,如果IP包的大小超过了数据链路层的MTU限制,就需要对IP包进行分拆,此时就要用这个域来表示哪些在分拆前是同一组的。


    0x0000:  4500 006c 4ce2 4000 8006 07cf c0a8 9206  E..lL.@.........
    0x0010:  c0a8 9283 f4a1 0016 249f 7667 e59b 5668  ........$.vg..Vh
    0x0020:  5018 1009 8eae 0000 0000 0020 a29f 050f  P...............
    0x0030:  014f e8f7 9bea 266e aa78 43bc 89be 4b6e  .O....&n.xC...Kn 

如上所示,便是3位(bit)的标志位,最高位为保留位,中间一位为DF(don't fragment),最低位为MF(more fragment),这三位是用来控制IP拆包后的组装所用。


    0x0000:  4500 006c 4ce2 4000 8006 07cf c0a8 9206  E..lL.@.........
    0x0010:  c0a8 9283 f4a1 0016 249f 7667 e59b 5668  ........$.vg..Vh
    0x0020:  5018 1009 8eae 0000 0000 0020 a29f 050f  P...............
    0x0030:  014f e8f7 9bea 266e aa78 43bc 89be 4b6e  .O....&n.xC...K

如上所示,是8位(bit)的TTL(Time To Live,即生存周期),此包的值位0x80,换算成十进制是128,这表明这个网络包,如果经过超过128个中间路由节点,则认为目的地不可达,中间路由器会将此包抛掉。


    0x0000:  4500 006c 4ce2 4000 8006 07cf c0a8 9206  E..lL.@.........
    0x0010:  c0a8 9283 f4a1 0016 249f 7667 e59b 5668  ........$.vg..Vh
    0x0020:  5018 1009 8eae 0000 0000 0020 a29f 050f  P...............
    0x0030:  014f e8f7 9bea 266e aa78 43bc 89be 4b6e  .O....&n.xC...K

如上所示,8位(bit)为协议域,用于指代上一层协议类型,此处的值为0x06,对应 十进制是6,而6是TCP协议的代号,因此可以知道这个网络包所用的传输协议是TCP。(UDP的协议号是17,TCMP的协议号是1).


    0x0000:  4500 006c 4ce2 4000 8006 07cf c0a8 9206  E..lL.@.........
    0x0010:  c0a8 9283 f4a1 0016 249f 7667 e59b 5668  ........$.vg..Vh
    0x0020:  5018 1009 8eae 0000 0000 0020 a29f 050f  P...............
    0x0030:  014f e8f7 9bea 266e aa78 43bc 89be 4b6e  .O....&n.xC...K

如上所示,2个字节表示IP首部校验和,此处计算出来的结果是07cf。


    0x0000:  4500 006c 4ce2 4000 8006 07cf c0a8 9206  E..lL.@.........
    0x0010:  c0a8 9283 f4a1 0016 249f 7667 e59b 5668  ........$.vg..Vh
    0x0020:  5018 1009 8eae 0000 0000 0020 a29f 050f  P...............
    0x0030:  014f e8f7 9bea 266e aa78 43bc 89be 4b6e  .O....&n.xC...K

如上所示,这就是我们非常熟悉的4字节的IP源地址,即 “coa8 9206”,转换成IP地址为192.168.146.6 。


    0x0000:  4500 006c 4ce2 4000 8006 07cf c0a8 9206  E..lL.@.........
    0x0010:  c0a8 9283 f4a1 0016 249f 7667 e59b 5668  ........$.vg..Vh
    0x0020:  5018 1009 8eae 0000 0000 0020 a29f 050f  P...............
    0x0030:  014f e8f7 9bea 266e aa78 43bc 89be 4b6e  .O....&n.xC...K

如上所示,这个4字节为IP目的地址,即 “c0a8 9283”,转成IP地址为 192.168.146.131 .


以上,网络层IP协议的首部20字节,下面是进入传输层UDP协议的包分析阶段。


UDP协议包分析

UDP包的首部总共有8个字节 (如下)

    0x0000:  4500 006c 4ce2 4000 8006 07cf c0a8 9206  E..lL.@.........
    0x0010:  c0a8 9283 f4a1 0016 249f 7667 e59b 5668  ........$.vg..Vh
    0x0020:  5018 1009 8eae 0000 0000 0020 a29f 050f  P...............
    0x0030:  014f e8f7 9bea 266e aa78 43bc 89be 4b6e  .O....&n.xC...K


    0x0000:  4500 006c 4ce2 4000 8006 07cf c0a8 9206  E..lL.@.........
    0x0010:  c0a8 9283 f4a1 0016 249f 7667 e59b 5668  ........$.vg..Vh
    0x0020:  5018 1009 8eae 0000 0000 0020 a29f 050f  P...............
    0x0030:  014f e8f7 9bea 266e aa78 43bc 89be 4b6e  .O....&n.xC...K

UDP首部的前2个字节为源端口,此处为 f4a1 ,即62625.后面的2字节是目的端口,值为 0016 ,即22 (ssh服务).


    0x0000:  4500 006c 4ce2 4000 8006 07cf c0a8 9206  E..lL.@.........
    0x0010:  c0a8 9283 f4a1 0016 249f 7667 e59b 5668  ........$.vg..Vh
    0x0020:  5018 1009 8eae 0000 0000 0020 a29f 050f  P...............
    0x0030:  014f e8f7 9bea 266e aa78 43bc 89be 4b6e  .O....&n.xC...K

如上所示,这2字节则表示UDP包的总长度 ( 报头+数据部分) 此处为 249f,转换成十进制是9375,表示UDP包的总长度为9375字节,减去首部的8字节还有9367字节来存储真正要传输的数据。而UDP首部的最后2个字节是“校验和”部分,此处的值为7667。


    0x0000:  4500 006c 4ce2 4000 8006 07cf c0a8 9206  E..lL.@.........
    0x0010:  c0a8 9283 f4a1 0016 249f 7667 e59b 5668  ........$.vg..Vh
    0x0020:  5018 1009 8eae 0000 0000 0020 a29f 050f  P...............
    0x0030:  014f e8f7 9bea 266e aa78 43bc 89be 4b6e  .O....&n.xC...K

如上所示,则是应用层协议的内容。

 

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值