Search This Blog

2013-05-14

网络调试工具简介

1 ping

跨平台命令行工具。可以用来检查网络能否连接到某台服务器。

2 telnet

跨平台命令行工具。用这个命令测试一下远程服务器的特定端口有没有打开,能不能连接,很方便(服务器没开启,或者相应端口没有在防火墙配置,都会造成连不上)。连接上以后,可以输入一些文本,如果是文本协议,那可以直接交互。
有时候服务器会在这个连接里自动返回一些有用的信息,对发现问题有帮助。

3 netstat

跨平台命令行工具。可以用来查看本地应用建立了哪些外部连接。

4 traceroute

跨平台命令行工具。查看路由信息。Windows上的命令叫做tracert。

5 Wireshark

跨平台抓包工具,带界面。前身是Ethreal。使用第三方抓包的库,我觉得这个软件的核心是提供各种协议的分析器,让人可以直观地查看,特别是文本协议,比如HTTP。
我只会最简单的用法:"Capture > Interfaces",选择一个网络接口Start就可以了。在抓取到的包列表点右键,选择"Follow TCP Stream"就可以看具体的某个或几个请求跟响应了。

记得Windows上无法抓取本机的数据包,我后来在Linux上看到有loopback(127.0.0.1),勾选以后可以抓取本机数据包,不知道是不是新版本的关系。

如果在写某种协议的客户端,那这个工具非常有用,尤其是纯文本协议,可以直观地跟协议规范对照,看看写的对不对。

6 tcpdump

跨平台命令行工具。可用于抓包。Unix/Linux/MacOSX上都有。
> sudo /usr/sbin/tcpdump -X -s 0 -w package.cap
package.cap可以用Wireshark打开。

7 主动代理

让请求通过一个指定的代理软件,这个代理软件会把请求跟响应显示出来。

7.1 org.apache.axis.utils.tcpmon

我以前用过Axis自带的一个工具,很方便的,可以代理本机请求。运行本工具需要Java跟几个jar包,命令如下(我是在Linux运行的,如果在Windows,把-cp后面的':'都改为';'):
> java -cp axis.jar:commons-logging-1.1.1.jar:commons-discovery-0.2.jar:jaxrpc.jar:saaj.jar:wsdl4j-1.5.1.jar org.apache.axis.utils.tcpmon

运行以后会出现一个界面,有几个地方可以设置:
* "Listen Port #"设置监听哪个端口,比如8080。
* "Target Host"设置目标域名,默认是127.0.0.1,也可以设置为某个网站的域名。
* "Target Port#"设置目标端口,比如80。
"Add"之后就在监听了。在浏览器访问localhost:8080(这需要是一个可访问的页面),tcpmon就会显示请求跟响应。

=文章版本=

20130512
20130513 添加org.apache.axis.utils.tcpmon

No comments:

Post a Comment