日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

tcpdump 抓二层包_可能是我见过的最简单易懂且实用的 TCPDump 和 Wireshark 抓包及分析教程!( 强烈建议收藏 )...

發布時間:2023/12/2 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tcpdump 抓二层包_可能是我见过的最简单易懂且实用的 TCPDump 和 Wireshark 抓包及分析教程!( 强烈建议收藏 )... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
公眾號關注?「奇妙的 Linux 世界」設為「星標」,每天帶你玩轉 Linux !

本文將展示如何使用 tcpdump 抓包,以及如何用 tcpdump 和 wireshark 分析網絡流量。文中的例子比較簡單,適合作為入門參考。

1. 基礎環境準備

為方便大家跟著上手練習,本文將搭建一個容器環境。

1.1 Pull Docker 鏡像

$ sudo docker pull alpine:3.8

1.2 運行容器

$ sudo docker run -d --name ctn-1 alpine:3.8 sleep 3600d$ sudo docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES233bc36bde4b alpine:3.8 "sleep 3600d" 1 minutes ago Up 14 minutes ctn-1

進入容器:

$ sudo docker exec -it ctn-1 sh

查看容器網絡信息:

/ # ifconfigeth0 Link encap:Ethernet HWaddr 02:42:AC:11:00:09 inet addr:172.17.0.9 Bcast:0.0.0.0 Mask:255.255.0.0

1.3 安裝 tcpdump

/ # apk update/ # apk add tcpdump

2.?HTTP/TCP 抓包

接下來我們用 wget 獲取一個網站的首頁文件(index.html),同時 tcpdump 抓包,對抓 到的網絡流量進行分析。

2.1 HTTP 請求:下載測試頁面

example.com 是一個測試網站,wget 是一個 linux 命令行工 具,可以下載網絡文件。

如下命令可以下載一個 example.com 網站的首頁文件 index.html:

/ # wget http://example.comConnecting to example.com (93.184.216.34:80)index.html 100% |*****************************| 1270 0:00:00 ETA

雖然這看起來極其簡單,但背后卻涵蓋了很多復雜的過程,例如:

  • 域名查找:通過訪問 DNS 服務查找 example.com 服務器對應的 IP 地址

  • TCP 連接參數初始化:臨時端口、初始序列號的選擇等等

  • 客戶端(容器)通過 TCP 三次握手協議和服務器 IP 建立 TCP 連接

  • 客戶端發起 HTTP GET 請求

  • 服務器返回 HTTP 響應,包含頁面數據傳輸

  • 如果頁面超過一個 MTU,會分為多個 packet 進行傳輸(后面會看到,確實超過 MTU 了)

  • TCP 斷開連接的四次揮手

  • 2.2 抓包:打到標準輸出

    用下面的 tcpdump 命令抓包,另一窗口執行 wget http://example.com,能看到如下類 似的輸出。為了方便后面的討論,這里將一些字段去掉了,并做了適當的對齊:

    / # tcpdump -n -S -i eth0 host example.com1 02:52:44.513700 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [S] , seq 3310420140, length 02 02:52:44.692890 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [S.], seq 1353235534, ack 3310420141, length 03 02:52:44.692953 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [.] , ack 1353235535, length 04 02:52:44.693009 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [P.], seq 3310420141:3310420215, ack 1353235535, length 74: HTTP: GET / HTTP/1.15 02:52:44.872266 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [.] , ack 3310420215, length 06 02:52:44.873342 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [.] , seq 1353235535:1353236983, ack 3310420215, length 1448: HTTP: HTTP/1.1 200 OK7 02:52:44.873405 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [.] , ack 1353236983, length 08 02:52:44.874533 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [P.], seq 1353236983:1353237162, ack 3310420215, length 179: HTTP9 02:52:44.874560 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [.] , ack 1353237162, length 010 02:52:44.874705 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [F.], seq 3310420215, ack 1353237162, length 011 02:52:45.053732 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [.] , ack 3310420216, length 012 02:52:45.607825 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [F.], seq 1353237162, ack 3310420216, length 013 02:52:45.607869 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [.] , ack 1353237163, length 0

    參數說明:

    • -n:打印 IP 而不是 hostname,打印端口號而不是協議(例如打印 80 而不是 http)

    • -S:打印絕對時間戳

    • -i eth0:指定從 eth0 網卡抓包

    • host example.com:抓和 example.com 通信的包(雙向)

    更多 tcpdump 的常用命令,可以參考tcpdump: An Incomplete Guide。

    2.3 抓包:存文件

    -w 命令可以將抓到的包寫到文件,注意這和用重定向方式將輸出寫到文件是不同的。后者寫的只是標準輸出打印的 LOG,而 -w 寫的是原始包。

    / # tcpdump -i eth0 host example.com -w example.pcap^C13 packets captured13 packets received by filter0 packets dropped by kernel

    生成的 pcap 文件可以用 tcpdump 或者 wireshark 之類的網絡流量分析工具打開。

    3. 流量分析: tcpdump

    如果不指定輸出的話,tcpdump 會直接將信息打到標準輸出,就是我們上面看到的那樣。從 這些輸出里,我們看到很多信息。

    3.1 每列說明

    第 1 列是為了討論方便而加的行號,實際的 tcpdump 輸出并沒有這一列。接下來將用 # 號加數字表示第幾個包,例如 #3 表示第 3 個包。

    接下來依次為:

    • packet 時間戳,例如 02:52:44.513700 表示抓到這個包的時間是** 02 時 52 分 44 秒 513 毫秒**

    • packet 類型,這里是 IP 包

    • 源 (SRC) IP 和端口,目的 (DST) IP 和端口

    • packet TCP flags,其中

      • S 表示 syn 包

      • . 表示 ack 包

      • F 表示 fin 包

      • P 表示 push 包(發送正常數據)

    • 序列號(seq)

    • 應答號(ack)

    • 包的 payload 長度

    • 包的部分內容(ASCII)

    3.2 三次握手(1~3)

    wget 是基于 HTTP 協議,因此它在下載文件之前,必定要和服務端建立一個連接。

    而 TCP 建立連接的過程就是著名的三次握手 [4]:

  • client -> server: SYN

  • server -> client: SYN+ACK

  • client -> server: ACK

  • 我們可以看到,這剛好對應于前三個包:

    1 02:52:44.513700 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [S] , seq 3310420140, length 02 02:52:44.692890 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [S.], seq 1353235534, ack 3310420141, length 03 02:52:44.692953 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [.] , ack 1353235535, length 0

    第一次握手: SYN

    #1 包含以下信息:

  • 02:52:44.513700 時刻,客戶端主動向 server(93.184.216.34)發起一個 SYN 請求,請求建立連接

  • 客戶端請求的服務端端口是 80(HTTP 服務默認 80 端口),客戶端使用的是臨時端口(大于 1024)41038

  • #1 序列號是 3310420140,這是客戶端的初始序列號(客戶端和服務端分別維護自己的序列號,兩者沒有關系;另外,初始序列號是系統選擇的,一般不是 0)

  • #1 length 為 0,因為 SYN 包不帶 TCP payload,所有信息都在 TCP header

  • 第二次握手: SYN+ACK

    #2 的 ack 是 3310420140,等于 #1 的 seq 加 1,這就說明,#2 是 #1 的應 答包。

    這個應答包的特點:

  • TCP flags 為 S.,即 SYN+ACK

  • length 也是 0,說明沒有 payload

  • seq 為 1353235534,這是服務端的初始序列號

  • 到達 eth0 的時間為 02:52:44.692890,說明時間過了 18ms

  • 第三次握手: ACK

    同理,#3 的 ack 等于 #2 的 seq 加 1,說明 #3 是 #2 的應答包。

    這個包的特點:

  • TCP flags 為 .,即 ACK

  • 長度為 0,說明沒有 TCP payload

  • 至此,三次握手完成。

    3.3 正常數據傳輸

    三次握手完成后,client 和 server 開始 HTTP 通信,客戶端通過 HTTP GET 方法下載 index.html。

    4 02:52:44.693009 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [P.], seq 3310420141:3310420215, ack 1353235535, length 74: HTTP: GET / HTTP/1.15 02:52:44.872266 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [.] , ack 3310420215, length 06 02:52:44.873342 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [.] , seq 1353235535:1353236983, ack 3310420215, length 1448: HTTP: HTTP/1.1 200 OK7 02:52:44.873405 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [.] , ack 1353236983, length 08 02:52:44.874533 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [P.], seq 1353236983:1353237162, ack 3310420215, length 179: HTTP9 02:52:44.874560 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [.] , ack 1353237162, length 0

    這里可以看到:

  • #4: client 向 server 發起 HTTP GET 請求,請求路徑為根路徑(/),這個 packet 長度為 74 字節

  • #5: 發送了 ACK 包,對 #4 進行確認

  • #6: 發送了 1448 字節的數據給 client

  • #7: client 對 server 的 #6 進行應答

  • #8: server 向 client 端繼續發送 179 字節數據

  • #9: client 對 server 的 #8 進行應答

  • 3.4 四次揮手

    最后是四次揮手 [5]:

  • client -> server: FIN (我們看到的是 FIN+ACK,這是因為這個 FIN 包除了正常的關閉連接功能之外,還被用于應答 client 發過來的前一個包)

  • server -> client: ACK

  • client -> server: FIN+ACK

  • server -> client: ACK

  • 10 02:52:44.874705 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [F.], seq 3310420215, ack 1353237162, length 011 02:52:45.053732 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [.] , ack 3310420216, length 012 02:52:45.607825 IP 93.184.216.34.80 > 172.17.0.9.41038: Flags [F.], seq 1353237162, ack 3310420216, length 013 02:52:45.607869 IP 172.17.0.9.41038 > 93.184.216.34.80: Flags [.] , ack 1353237163, length 0

    4. 流量分析: wireshark

    tcpdump 可以指定 -r 讀取 pcap 文件,并以指定的格式輸出包的信息,最后輸出的內容 和上面看到的類似。我們上面的流量非常簡單,所以看 tcpdump 的輸出就夠了。

    對于復雜的 pcap,例如,其中包含了上百個 IP 地址、上千個端口、上萬個連接的 pcap, 通過 tcpdump 看輸出可能就比較低效了。

    這時,wireshark 這樣帶圖形用戶界面,且功能強大的網 絡流分析工具就派上了用場。

    wireshark 支持強大的過濾功能,支持按 IP、端口、協議、連接、TCP flag 以及它們的各 種組合進行過濾,然后進行分析,大大節省網絡排障的時間。

    wireshark 官方維護了一個 sample pcap列表 ,我們拿 iperf-mptcp-0-0.pcap 作為例子來展示如何使用 wireshark。

    4.1?追蹤 TCP 流

    下載后雙擊就可以用 wireshark 打開。看到有重傳(TCP Retransmition)的包:

    在重傳的包上,右鍵 -> Follow -> TCP Stream,會過濾出只屬于這個連接的包:

    我們看到,這個連接只有 3 個包:

  • #1 在 08:00:05.125 發送出去,請求建立連接

  • 大約 1s 后,客戶端仍然沒有收到服務端的 ACK 包,觸發客戶端 TCP 超時重傳

  • 又過了大約 2s,仍然沒有收到 ACK 包,再次觸發超時重傳

  • 這里其實還可以看出 TCP 重傳的機制:指數后退,比如第一次等待 1s,第二次等 待 2s,第三次等待 4s,第四次 8s

  • 因此,從這個抓包文件看,這次連接沒有建立起來,而直接原因就是 client 沒有收到 server 的應答包。要跟進這個問題,就需要在 server 端一起抓包,看應答包是否有發出來 。本文不對此展開。

    4.2 過濾流

    上面的截圖我們看到 wireshark 里有 tcp.stream eq 1,這其實就是其強大的過濾表達式。

    我們可以直接手寫表達式,然后回車,符合條件的包就會顯示出來。而且,在編輯表達式的 時候,wireshark 有自動提示,還是比較方便的。這些表達式和 tcpdump 的 filter 表達 式很類似,如果熟悉 tcpdump,那這里不會有太大困難。

    下面舉一些例子:

  • ip.addr == 192.168.1.1 過濾 SRC IP 或 DST IP 是 192.168.1.1 的包

  • ip.src_host == 192.168.1.1 and ip.dst_host == 192.168.1.2 過濾 SRC IP 是 192.168.1.1,并且 DST IP 是 192.168.1.2 的包

  • tcp.port == 80 源端口或目的端口是 80 的包

  • tcp.flags.reset == 1 過濾 TCP RST 包。先找到 RST 包,然后右鍵 Follow -> TCP Stream 是常用的排障方式

  • tcp.analysis.retransmission 過濾所有的重傳包

  • 4.3 導出符合條件的包

    有時 pcap 文件太大,導致 wireshark 非常慢,而大部分數據包可能是不需要的。在這種情況 下,可以先用過濾條件篩選出感興趣的包,然后 File -> Export Specified Packets ... ,彈出的對話框里,可以選擇當前顯示的包,或者某個指定區間的包另存為新 pcap。

    然后就可以關閉原來的 pcap,打開新的 pcap 進行分析。

    5. 總結

    tcpdump 和 wireshark 功能非常強大,組合起來更是網絡排障的首選利器。這里介紹的內 容只是九牛一毛,更多的時候,你需要 tcpdump+wireshark+google。

    References

  • Man Page of tcpdump

  • Wireshark

  • Wireshark: Sample Pcaps

  • TCP 3-way Handshaking

  • TCP 4-times Close

  • tcpdump: An Incomplete Guide

  • 本文轉載自:「ARTHURCHIAO'S BLOG」,原文:https://url.cn/5yCrirJ,版權歸原作者所有。歡迎投稿,投稿郵箱: editor@hi-linux.com 。

    你可能還喜歡

    點擊下方圖片即可閱讀

    天天都在用的 Iptables 你真的了解嗎?5 分鐘帶你看懂其底層架構 Netfilter!

    點擊上方圖片,打開小程序,加入「玩轉 Linux」圈子

    更多有趣的互聯網新鮮事,關注「奇妙的互聯網」視頻號全了解!

    總結

    以上是生活随笔為你收集整理的tcpdump 抓二层包_可能是我见过的最简单易懂且实用的 TCPDump 和 Wireshark 抓包及分析教程!( 强烈建议收藏 )...的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 亚州久久久 | 亚洲最大福利网 | 自拍 偷拍 欧美 | 国产美女在线免费观看 | www,超碰| 亚洲一区免费 | 免费成人电影在线观看 | 99视频免费| 体感预报日剧 | 不卡视频在线观看 | 四虎国产 | 欧美性大交 | 亚洲免费在线观看视频 | 蜜桃av噜噜一区二区三区网址 | 精品三级国产 | av黄色天堂| a级全黄 | 极品超粉嫩尤物69xx | 天天干夜夜做 | 韩国三级hd中文字幕有哪些 | 久久影| 欧美日韩一区二区三区在线播放 | 99久久99久久精品国产片桃花 | 在线观看视频日韩 | 国产高清免费观看 | 欧美一区二区三区在线播放 | 99久久婷婷国产综合精品 | 91精品国产乱码久久久久久久久 | 国产黑人 | 亚洲美免无码中文字幕在线 | 97在线公开视频 | 一级大黄毛片 | 天天干视频在线 | 在线国产精品视频 | 午夜亚洲AV永久无码精品蜜芽 | 爱搞国产 | 成人高清网站 | 2019毛片| 久久精品99久久 | 国产ts三人妖大战直男 | 国产xxxx | 日韩三级精品 | 久久久久久久久久久97 | 久久欧洲 | 99热这里精品 | 美女脱了裤子让男人桶 | 三级性生活视频 | 隣の若妻さん波多野结衣 | 日本在线不卡一区二区三区 | 三度诱惑免费版电影在线观看 | 欧美人与动物xxx | 国产拍拍拍拍拍拍拍拍拍拍拍拍拍 | 性色av一区二区三区红粉影视 | 草的我好爽| 男人天堂影院 | v99av| 深夜免费在线视频 | 亚洲av熟女高潮一区二区 | 亚洲tv在线观看 | 在线精品视频免费观看 | 中文乱码人妻一区二区三区视频 | 美日韩久久 | 91操人 | 日韩欧美国产综合 | 在线视频二区 | 国产毛片一区二区三区 | 99视频网站| 农村少妇久久久久久久 | 九九小视频 | 国产a∨精品一区二区三区仙踪林 | 欧洲一区在线观看 | 欧美精品久久久久久久久 | 欧美三级又粗又硬 | 欧美一区二区在线播放 | 日韩激情小说 | 欧美成人一区二区三区高清 | 亚洲色图综合在线 | 亚洲综合第一区 | 国产在线视频一区 | 精品成人无码久久久久久 | 日韩免费 | 黑人玩弄人妻一区二区三区影院 | 久久综合成人 | 寡妇高潮一级视频免费看 | 在线观看日本中文字幕 | 少妇高潮一区二区三区99欧美 | 日韩乱码一区二区 | 婷婷综合色 | av在线影视| 在线看片网站 | 日韩精品视频免费在线观看 | 少妇福利在线 | 夜色一区| 欧美国产成人在线 | 欧美日韩免费 | www.色婷婷.com| 亚洲色图自拍 | 高h全肉污文play带道具 | 国产十区 |