SDK emulator directory is missing
阿新 • • 發佈:2022-04-19
TCP 協議是在傳輸層中,一種面向連線的、可靠的、基於位元組流的傳輸層通訊協議。
環境準備
對介面測試工具進行分類,可以如下幾類:
- 網路嗅探工具:tcpdump,wireshark
- 代理工具:fiddler,charles,anyproxyburpsuite,mitmproxy
- 分析工具:curl,postman,chrome Devtool
抓包分析TCP協議
tcpdump是一款將網路中傳送的資料包的“頭”完全截獲下來提供分析的工具。它支援針對網路層、協議、主機、網路或埠的過濾,並提供 and、or、not 等邏輯語句去掉無用的資訊。
讓 tcpdump 時刻監聽 443 埠,如果有異樣就輸入到 log 檔案中
sudo tcpdump port 443 -v -w /tmp/tcp.log
利用這條命令,會把得到的報告放到目錄 /tmp/tcp.log 中。
wireshark 也是一款網路嗅探工具,它除了擁有 tcpdump 功能,還有更多擴充套件功能,比如分析工具,但是在介面測試中,抓包過程往往都是在伺服器進行,伺服器一般不提供 UI 介面,所以 wireshark 無法在伺服器工作,只能利用 tcpdump 抓包生成 log,然後將 log 給 wireshark 匯入使用,在有 UI 介面的客戶端上進行分析。
抓取一個 http 的 get 請求:
1.在百度上搜 mp3"mp3_百度搜索"
2.用 tcpdump 截獲這個 get 請求,並生成 log
3.用 wireshark 開啟 tcpdump 生成的 log
使用 wireshark 檢視 log:
1080×86 95.5 KB
log 的前幾段資訊是三次握手,原因是通道是不可靠的,在傳送資料前,就必須確保通道穩定,而三次握手就像是下面這些操作:
- 第一次握手:建立連線時,客戶端傳送 syn 包(syn=j)到伺服器,並進入 SYN_SENT 狀態,等待伺服器確認。
- 第二次握手:伺服器收到 syn 包,必須確認客戶的 SYN(ack=j+1),同時自己也傳送一個 SYN 包(seq=k),即 SYN+ACK 包,此時伺服器進入 SYN_RECV 狀態;
- 第三次握手:客戶端收到伺服器的 SYN+ACK 包,向伺服器傳送確認包 ACK(ack=k+1),此包傳送完畢,客戶端和伺服器進入 ESTABLISHED(TCP 連線成功)狀態,完成三次握手。
經過三次握手,就可以進一步交流,就像下面這樣:
1080×301 360 KB
結束交流時,也需要進行揮手:四次揮手:
1080×103 120 KB
- 第一次揮手:客戶端向伺服器端傳送一個 FIN,請求關閉資料傳輸。
- 第二次揮手:伺服器接收到客戶端的 FIN,向客戶端傳送一個 ACK,其中 ack 的值等於 FIN+SEQ
- 第三次揮手:伺服器向客戶端傳送一個 FIN,告訴客戶端應用程式關閉。
- 第四次揮手:客戶端收到伺服器端的 FIN,回覆一個 ACK 給伺服器端。其中 ack 的值等於 FIN+SEQ
更多技術文章