工欲善其事,必先利其器 – 网络抓包

发布时间:2020-07-26 02:53:22 作者:hongliang_liu
来源:网络 阅读:597

抓包(packet capture)就是将网络传输发送与接收的数据包进行截获、分析,甚至可以用来转发,重传等等,抓包可使用的场景很多,排错、验证、测试、核对等,我就举几个例子来说明吧。


场景一、在一台存储上启用了SNMP服务,随后想通过验证UDP161/162的侦听状态来确认服务是否确实启动了。


详情:最简单的方式就是用进入存储的OS运行类似netstat –anop查看UDP端口状态,还有些同学会条件反射的说telnet一下呗或者用nmap的工具做端口扫描,但是最后发现结果是Open | Filtered,这又有什么意思?除非找到这些工具的使用说明,否则无法明白其输出的意思。但有的时候就是没有太多参考文档,比如netstat显示的UDP端口状态列都是空的,没有任何状态,这代表什么呢?其实网络抓包可以帮助我们。你可以在telnet的同时抓包,结果会发现telnet发起了TCP SYN包,立刻就被对端给Reset掉了,所以用telnet的提议是错误的,用TCP去验证一个UDP端口是否在侦听,显然是南辕北辙了。同样,做nmap扫描的同时抓包,你会发现原来UDP使用ICMP返回消息来判断端口状态。如果端口关闭,那么对端会返回port unreachable,如果没有任何ICMP返回呢?那就说明中间存在包过滤逻辑,这也是为什么nmap扫描显示open | filtered,nmap也无法确认端口状态,因为没有任何ICMP消息返回。所以,nmap的扫描结果不能判断端口状态,必须采取其它手段。不过这不是这个场景的重点,我们的重点是可以通过抓包看到应用程序的行为。

总结:判断端口状态的方式很多,但你是否采用了正确的方式,完全可以通过抓包来判断,它会告诉你一个应用程序的行为,帮助你发现原因。


场景二、发现应用程序与服务器之间的通信很慢。


详情:为什么拿这个场景来说,因为抓包和对TCP的分析在这个场景里几乎就直接问题原因所在了。通过分析TCP分段,我们发现了traffic pattern的变化,延迟由正常的几个ms逐渐转变为了十几个ms,并在之后的流量中看到了Window Full以及最终的ZeroWindow消息。对TCP熟悉的同学立马能够判断出接收端存在处理能力的问题,导致无法及时清理TCP接收缓存,使得队列长度越来越长,根据Little Law和Utilization Law,响应时间会呈指数上升,这也为什么我们会观察到响应时间的变化。还有同学提问中间的交换机/路由器是否有可能发生这样的过载?当然是肯定的,但我们这个场景里不是这个问题,为什么?因为我们抓包没有看到任何重传。

总结:抓包在这个case帮你排除了看起来最有可能是网络问题的问题,TCP的行为非常清晰的指出了问题所在。


最后,给到大家一些建议:


推荐阅读:
  1. pytorch 实现在一个优化器中设置多个网络参数的例子
  2. Ubuntu系统下网络配置文件解析与说明

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

网络 数据包 网络抓包

上一篇: LAMP环境安装1之php编译报错

下一篇:CSS 3 3D 转换

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》