經過前面的學習,tcpdump的用法相信應該都掌握了,今天我們來學習對tcpdump輸出內容的學習和瞭解。我們以第一個示例進行講解如下所示: IP協議包分析 第一行 這裡僅僅是提示如果想獲取和查看更詳細的命令可以嘗試添加的參數。 第二行 tcpdump監聽的網路設備介面和 ...
經過前面的學習,tcpdump的用法相信應該都掌握了,今天我們來學習對tcpdump輸出內容的學習和瞭解。我們以第一個示例進行講解如下所示:
IP協議包分析
[root@localhost ~]# tcpdump -i ens5f1 -nn -X 'port 22' -c 1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens5f1, link-type EN10MB (Ethernet), capture size 262144 bytes
22:34:11.334916 IP 192.168.8.8.22 > 112.64.61.186.37035: Flags [P.], seq 3341229570:3341229782, ack 1999159071, win 31152, length 212
0x0000: 4510 00fc 7e99 4000 4006 44a8 c0a8 0808 E...~.@[email protected].....
0x0010: 7040 3dba 0016 90ab c727 1e02 7728 bf1f p@=......'..w(..
0x0020: 5018 79b0 7799 0000 0000 00b0 823d 4cf1 P.y.w........=L.
0x0030: 1108 58fc 3686 2bd2 5220 fe37 85ab 74cc ..X.6.+.R..7..t.
0x0040: bfb1 8831 7d1c 3b57 52ae aa91 28a2 67d8 ...1}.;WR...(.g.
0x0050: 08fb a257 7fc8 7186 39dc d266 3d32 cce8 ...W..q.9..f=2..
0x0060: 3eb7 130b a7d3 833b 59c9 bdf8 2141 6863 >......;Y...!Ahc
0x0070: 7cae 25ff 459e c94a a635 7098 6925 db48 |.%.E..J.5p.i%.H
0x0080: a9b0 32ab 5393 737f cf8c f2ed b47a 7d8b ..2.S.s......z}.
0x0090: 346c 39df 3ecc d2b0 e0ad 5104 272d 6513 4l9.>.....Q.'-e.
0x00a0: 4b8d 5ee6 6c7d 9477 e40b 8637 996a bb5a K.^.l}.w...7.j.Z
0x00b0: 471a 2ac4 3335 266d 0485 2e52 b2c2 f6e8 G.*.35&m...R....
0x00c0: 0549 5ae0 9c7b ad45 da0a eef2 1ccb b2ac .IZ..{.E........
0x00d0: a4a2 0a96 cc5f 238c 9570 0d15 984e 6f58 ....._#..p...NoX
0x00e0: d8ff 8034 1165 cf44 02e4 ed6b 631e 2548 ...4.e.D...kc.%H
0x00f0: 56fd 4c8a 664c e5ee d845 2e50 V.L.fL...E.P
1 packet captured
1 packet received by filter
0 packets dropped by kernel
第一行
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens5f1, link-type EN10MB (Ethernet), capture size 262144 bytes
這裡僅僅是提示如果想獲取和查看更詳細的命令可以嘗試添加的參數。
第二行
listening on ens5f1, link-type EN10MB (Ethernet), capture size 262144 bytes
tcpdump監聽的網路設備介面和鏈路層類型(乙太網)要抓包的大小限制
第三行
22:34:11.334916 IP 192.168.8.8.22 > 112.64.61.186.37035: Flags [P.], seq 3341229570:3341229782, ack 1999159071, win 31152, length 212
- 22:34:11.334916 :抓包的時間
- IP : 抓取的數據包位於網路層,即IP包
- 192.168.8.8.22:抓取包的源IP地址和埠
>
:數據的傳輸方向- 112.64.61.186.37035:抓取的包目的地IP和埠
- Flags和後面內容:建立三次握手信息
第4~16行
0x0000: 4510 00fc 7e99 4000 4006 44a8 c0a8 0808 E...~.@[email protected].....
0x0010: 7040 3dba 0016 90ab c727 1e02 7728 bf1f p@=......'..w(..
0x0020: 5018 79b0 7799 0000 0000 00b0 823d 4cf1 P.y.w........=L.
0x0030: 1108 58fc 3686 2bd2 5220 fe37 85ab 74cc ..X.6.+.R..7..t.
0x0040: bfb1 8831 7d1c 3b57 52ae aa91 28a2 67d8 ...1}.;WR...(.g.
0x0050: 08fb a257 7fc8 7186 39dc d266 3d32 cce8 ...W..q.9..f=2..
0x0060: 3eb7 130b a7d3 833b 59c9 bdf8 2141 6863 >......;Y...!Ahc
0x0070: 7cae 25ff 459e c94a a635 7098 6925 db48 |.%.E..J.5p.i%.H
0x0080: a9b0 32ab 5393 737f cf8c f2ed b47a 7d8b ..2.S.s......z}.
0x0090: 346c 39df 3ecc d2b0 e0ad 5104 272d 6513 4l9.>.....Q.'-e.
0x00a0: 4b8d 5ee6 6c7d 9477 e40b 8637 996a bb5a K.^.l}.w...7.j.Z
0x00b0: 471a 2ac4 3335 266d 0485 2e52 b2c2 f6e8 G.*.35&m...R....
0x00c0: 0549 5ae0 9c7b ad45 da0a eef2 1ccb b2ac .IZ..{.E........
0x00d0: a4a2 0a96 cc5f 238c 9570 0d15 984e 6f58 ....._#..p...NoX
0x00e0: d8ff 8034 1165 cf44 02e4 ed6b 631e 2548 ...4.e.D...kc.%H
0x00f0: 56fd 4c8a 664c e5ee d845 2e50 V.L.fL...E.P
以上這些是IP包的內容,左側是16進位,右側是ASCII部分。如果想看到這些具體的數據則需要查看前一期中TCP數據報的格式。
- 4510
4:IP版本,此處代表為IPv4
5:代表首部長度,此處代表為20B
10:代表協議的服務類型 - 00fc
表示數據總長度,00FC:代表總長度為252B - 7e99
表示標識,如果IP包的大小超過了數據鏈路層的MTU限制,就需要對IP包進行拆分,此時就要用這個域來表示哪些包在拆分前是同一組的。此處的標識域為0x7e99 - 4
再繼續向後看,就是3位標誌位,用來控制IP抓分後重新組裝用,最低位為MF(More Fragment),中間位為DF(Don't Fragment)不能分片 - MF=1:表示後面還有分片
- MF=0:表示這已經是若幹分片中的最後一個
- DF=0:允許分片
- 000:片偏移量,本次沒有拆分包,所以全為0
- 40:TTL(Time To Life),數據包在網路中的壽命。此處為0x40,進位為64,表示如果中間超過了這個路由節點,則認為目的不可達,中間路由器將進行丟棄處理。
- 06:指上一層協議類型,此處為0x06,可以看出協議編號為6,代表為TCP協議。
- 44a8:表示IP首部校驗和,此處為0x44a8
- c0a8 0808:IP源地址,此處為192.168.8.8
- 7040 3dba:IP目的地址:此處為:112.64.60.186
到此,數據包頭部已經全部解釋完成。
UDP協議包分析
我們先來抓取一個UDP包,如下所示:
[root@localhost ~]# tcpdump -i ens5f1 -nn -X 'udp' -c 1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens5f1, link-type EN10MB (Ethernet), capture size 262144 bytes
18:18:12.499924 IP 192.168.8.101.137 > 192.168.8.255.137: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
0x0000: 4500 004e 31ab 0000 8011 763f c0a8 0865 E..N1.....v?...e
0x0010: c0a8 08ff 0089 0089 003a 1277 ddc1 0110 .........:.w....
0x0020: 0001 0000 0000 0000 2046 4b46 4545 4643 .........FKFEEFC
0x0030: 4e44 4344 4144 4244 4744 4144 4944 4144 NDCDADBDGDADIDAD
0x0040: 4245 4945 4645 4841 4100 0020 0001 BEIEFEHAA.....
1 packet captured
1 packet received by filter
0 packets dropped by kernel
相對於IP包來講,UDP的包要簡單很多,其首部總共就8個位元組。而UDP位於傳輸層,自然前面也增加了IP包相關的頭部。
- 0089:源埠為0x0089即:137
- 0089:目的埠為0x0089即:137
- 003a:UDP包的總長度,即58位元組,去掉首部的8位元組後,真正可以用來傳輸的只有50位元組。
- 1277:UDP校驗和。為0x1277
本文同步在微信訂閱號上發佈,如各位小伙伴們喜歡我的文章,也可以關註我的微信訂閱號:woaitest,或掃描下麵的二維碼添加關註: