Wireshark介绍
Wireshark(前称Ethereal)是一个免费的网络报文分析软件。网络报文分析软件的功能是抓取网络报文,并逐层显示报文中各字段取值。网络报文分析软件有个形象的名字“嗅探工具”,像一只猎狗,忠实地守候在接口旁,抓获进出该进口的报文,分析其中携带的信息,判断是否有异常,是网络故障原因分析的一个有力工具。
网络报文分析软件曾经非常昂贵,Ethereal/wireshark 开源软件的出现改变了这种情况。在GNUGPL通用许可证的保障范围底下,使用者可以以免费的代价取得软件与其源代码,并拥有针对其源代码修改及客制化的权利。Ethereal/wireshark 是目前世界使用最广泛的网络报文分析软件之一。
下载链接:https://www.wireshark.org/
查看本机的网络适配器列表
操作:单击菜单Capture中的Interfaces选项
适配器的地址,还有具体的型号:
开始监听
记录一个TCP三次握手过程
本机ip
使用cmd命令行,输入ipconfig查看IP地址
如图4所示。可以看到本机的IPv4地址是192.168.1.133
接下来我清除所有监听,并且重新开始。打开一个干净的百度网页,开始抓包。
我打开百度之后,wireshark一瞬间就抓到了很多包,我并不提前知道百度的网址,然后我先就着这一瞬间涌入的包进行检索。发现了一个三次握手的记录。其中图5是第一次握手,可以看到源IP地址和目的IP地址。这个包是SYN包,并且目的IP地址是本机地址。源地址是119.75.217.26
第二次握手也成功抓到了,如图6所示。看到了SYN和ACK。目的IP变成了119.75.217.26,源地址是本机。
第三次握手也成功抓到了。有ACK,如图7所示。目的地址变为本机,源地址是119.75.217.2。
接着我对这个119.75.217.2进行了搜索,很幸运,刚好就是百度的IP地址。这是在网上查到的,如图8所说。
开启telnet服务
问题:'telnet’不是内部或外部命令,也不是可运行的程序或批处理文件。
解决:手动在win10功能那里开启Telnet客户端
一个TCP握手不成功的例子
这里需要说明一点是,由于回到宿舍做实验,IP地址发生了变化,如图11所示。这是连接了学校网线之后的IP,可以看见这是一个B类地址,学校应该设了子网。
接着打开wireshark监听,并在win10命令行窗口并输入:telnet 192.168.1.101,然后停止继续侦听网络信息。
接着在wireshark上输入相应的过滤表达式,查看到了TCP失败结果:
在命令行中显示:
失败原因分析:
端口23是Telnet的服务端口,192.168.1.101是本地局域网。其实本地就我一台电脑,所示失败原因是因为这台192.168.1.101没有开启Telnet服务,也即是远程登录服务。
TCP三次握手抓包小结:
TCP三次握手是成功抓到了。不过还是有疑问,就是Seq并不是一个随机值,而是0或者1.看了别的三次握手包,也都如此。后来上网查找,才知道这是wireshark进行了计算。这里的0和1都是相对的。其实其余版本的wireshark是可以看到原始的数值的。
TCP四次挥手
在尝试抓TCP连接成功之后,我尝试抓TCP四次挥手。
在TCP三次连接的基础上,我立即关闭百度首页。尝试抓到四次挥手的包。其中百度的IP没有变化,依旧是119.75.217.26。从图14中可以看见,本机(125.216.247.234)和百度首页(119.75.217.26)的整个挥手过程。
四次挥手抓包小结:
其实一开始没有找到四次挥手的整个过程。后来学会如何使用筛选,从大量的包中提取出所要监听的地址就可以。可能是由于关掉特别迅速,所以四次挥手的流程是在一起的。
踩过的坑
如果盲目在大量包中寻找要的包是非常费时费神的,要学会使用wireshark命令行的过滤器。
参考资料
https://www.cnblogs.com/bylijian/p/8565601.html
https://www.cnblogs.com/Chilam007/p/6973990.html