Wireshark抓包工具的使用

对于网络请求相关的异常,抓包是一个很有效的方法,要习惯于抓包,而不是单纯地打印日志。日志能看到的是我们预想的,抓包抓到的则是意外的我们预想不到的。比如在实际生产中,常常出现程序异常崩溃的情况,这个时候往往日志是来不及记录的,如果这个崩溃是网络请求导致的,这个时候你用抓包工具,就很容易定位到问题原因。比如之前我一个同事写的程序总是在服务器停止几秒钟后崩溃,我们看了所有的日志,研究了windows的日志记录器,都未能找出有用的信息,后来我们想既然是服务器引起的,那么抓包应该是没问题的,就尝试了一下。最终我们发现他写的程序在每隔几秒钟就往服务器请求一次接口,这是他用来做心跳用的。但是他的源码并没有对这部分代码try...catch...。他是在程序的最上层进行的try...catch...。但他这个心跳是在一个子线程里面,这就导致catch不到任何异常,一旦服务器停止了,他的网络请求就会异常,导致程序崩溃。比如下面的代码:

        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            try
            {
                Thread thread = new Thread(() =>
                {
                    throw new Exception();
                });
                thread.Start();
            }
            catch (Exception ex)
            {

            }
            Console.ReadLine();
        }

这种情况不管是在java中还是在c#中都是如此,主线程catch不到子线程的异常。

我们当时用的抓包工具是Wireshark,还有另外一个抓包工具Fiddler,但是它好像只能抓http的包,我很少用它。使用wireshark有可能会出现找不到接口的情况,大部分情况下,通过安装WinPcap都能解决,下载网址:https://www.winpcap.org/install/default.htm

打开之后界面如下:

这个是我的电脑能够抓到的接口,只有以太网这一个。双击它,可以看到具体的网络请求信息:

工具的使用网上有很多教程,这里就不赘述了,只说几个有用的过滤条件。一般我们都是抓指定地址的指定端口和指定协议的包,那么这个过滤该怎么写呢,如下:

ip.dst==112.80.248.75 and ip.src==127.0.0.1 and http and tcp.port==80 and tcp.srcport==8080

上面的意思是过滤出目标地址为112.80.248.75,请求地址为127.0.0.1,且端口为80,且源端口为8080的所有http请求,当然了,这样写出来的过滤条件是冲突的,这里只是为了演示所有的常用命令,所以全部列出来了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值