在通訊層,針對SOAP和HTTP消息的跟蹤有多種方法可選。web
tcpmon程序是一個能夠自由下載和無償使用的可執行jar文件。這個程序帶有用戶界面,所以很容易上手。tcpmon只須要3個設置:服務名稱,默認是「localhost「;服務端口,好比前面例子TimeServer在發佈服務時使用的9876端口;還有一個本地監聽端口,默認是8080,tcpmon用來監聽HTTP請求的端口。啓動tcpmon後,將前面例子中TimeClient須要發送的服務請求端口由9876更改成8080。tcpmon攔截客戶端和服務器之間的HTTP通訊內容並將其顯示在用戶界面中。如圖:shell
其實還有許多開源的和商業產品可用來進行對SOAP通訊的跟蹤。在這些產品或工具中,有幾個值得咱們瞭解,其中有SOAPscope、NetSniffer和Wireshark。tcpdump廣泛應用在Unix類型的操做系統中,Linux和OS X操做系統中每每也會有這個程序,在windows操做系統中經常使用的工具是WinDump。除了免費以外,tcpdump一個明顯的好處就是對於客戶端和web服務來講,不須要修改任何代碼便可以完成對SOAP和HTTP通訊的跟蹤。tcpdump工具將消息輸出到標準輸出設備。與之伴隨出現的tcptrace工具能夠用來對輸出的消息進行分析。下面將簡要地介紹tcpdump的強大功能和靈活性。
windows
在一些Unix類型的操做系統中, tcpdump程序必須使用超級用戶權限,才能執行。tcpdump可設置不一樣參數用來完成不一樣的跟蹤須要。下面是一個簡單的例子:服務器
% tcpdump -i lo -A -s 1024 -l 'dst host localhost and port 9876' | tee dump.log
實際上tcpdump能夠攔截經過它出去的任何網絡接口的通訊包。經過參數 -D運行tcpdump,會顯示其能夠支持的網絡接口列表,-D命令相似於Unix類型的操做系統中ipconfig -a命令。在上面這個例子中,標識/值對 -i lo告訴tcpdump從lo接口中攔截通訊包,lo在Unix類型的操做系統中是localhost網絡接口的縮寫。標誌 -A告訴tcpdump,截獲的通訊包以ASCII方式標示,因爲web包一般都是文本類型,所以以這種方式顯示容易閱讀。-s 1024標識用來設置每次抓包長度,每個攔截包所需要獲取的字節數。標識 -l標識將包強制爲每行輸出,方便閱讀,「|」標示將標準輸出重定向到本地文件dump.log中。最後,看下面這個表示式:
網絡
'dst host localhost and port 9876'
它表示爲一個過濾器,只針對地址localhost和端口9876進行通訊包的攔截。tcp