在通讯层,针对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