1. 程式人生 > 其它 >SDK emulator directory is missing

SDK emulator directory is missing

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

 

原文連結

更多技術文章