前一篇介紹完 Client 的 HTTP 封包監看方式,但有時候還是找不出問題,就像一開始在前言提到的,複雜的網路環境都有可能造成問題。因此學習如何在 Server 監聽封包也是必要的除錯工作,在 Windows 環境已經有很多現成的圖型介面軟體可以使用,像是免費的 WireShark Packet Sniffer 就很好用 (還是 Open-Source 喔) 了。那我們來介紹一下 Linux 系統下如何監聽封包囉,大多數的 Linux Server 都不會安裝圖型介面,那我們可要找個文字介面的封包監聽工具。Linux 中最基本的方式就是透過 TCPDUMP 這個套件,透過「tcpdump」指令即可抓取封包,使用方式如下:
[root@dev ~]# tcpdump -i eth0 tcp port 80 -A -nn
上述命令中「-i eth0」參數表示擷取 eth0 Input 封包;並可使用「tcp」指定通訊協定(HTTP 走 TCP)與「port 80」來指定 HTTP Server 的監聽埠號;「-A」參數表示使用 ASCII 顯示擷取的封包內容;「-nn」參數表示不做 IP 反解,速度才會比較快。執行後如有 TCP 80 Port 連線就會被抓到,由於 TCPDUMP 是屬於極底層的封包擷取機制,因此會看到一些 TCP Handshaking 的封包,擷取的畫面如下: