Wireshark抓包分析TCP建立/释放链接的过程以及状态变迁分析
一、介绍计算机网络体系结构
1.计算机的网络体系结构
在抓包分析TCP建立链接之前首先了解下计算机的网络通信的模型,我相信学习过计算机网络的都比较熟悉,如下图所示是一个OSI七层模型、TCP/IP四层模型以及五层模型的对比图。(此图来源于计算机网络第七版-谢希仁版本书)。
其中OSI模型以及TCP/IP的模型大伙都应该熟悉,至于说五层模型,就是讲网络接口层分成 数据链路层、和物理层,关于这个问题,谢老这么解释的
2.计算机网络模型每层所包含的信息内容
内容介绍
- 物理层
- 通过线路传送原始的比特流
- 只完成一个节点到另一个节点的传送
- 数据链路层
- 通过物理网络传送包(这里的包指的是数据报)
- 只完成一个节点到另一个节点的传送
- 实现点到点的可靠传输
- 网络层
- 把包里面的目的地址拿出来,进行路由选择,决定要往哪个方向传输
- 负责从源通过路由选择到目的地的过程,达到从源主机传输数据到目标主机的目的
- 传输层
- 网络层只是把数据送到主机,但不会送到进程,传输层负责进程与主机间的传输,主机到主机的传输交由网络层负责
- 传输层实现端到端的可靠传送
- 会话层
- 通过数据流建立会话关系
- 展示层
- 数据压缩、解压、加密、解密、数据类型、格式变换等一切与数据展示有关的操作
- 应用层
- 专门针对某些应用提供服务
- 物理层
针对以上内容展现一个图例
此图来源于https://www.jianshu.com/p/c793a279f698 不定非常准确,参考
二、使用抓包工具分析TCP链接过程
1.安装Wireshark(自己百度下载安装)
我使用版本Version 1.4.9 ,工具有好多比如Sniffer等等,这个工具自己解决
2.开启wireshark
双击打开本软件--点击接口列表或者单击这个图标 ,弹出网卡监听的界面对话框,可以选择对应的网卡监听、鼠标点击ip地址可以从IPV4与IPV6相互切换,点击开始即可。
点击开始即可监听该网卡所流经过的数据
我使用俩台机器来测试抓取报文 如下图所示,服务开启端口为4455,客户端随机开启一个 我测试过程中的为40183
可以看到头部的Filter 过滤规则、如果为空白,则会将流经本网卡的所有数据均监听采集上来,为了方便抓取我们所需要的数据包,我们需要过滤掉无关的消息
3.输入过滤规则进行过滤
过滤规则
- tcp->只显示TCP协议的记录;
- http->只看HTTP协议的记录;
- ip.src ==192.168.0.110 ->显示源地址为192.168.0.110的记录;
- ip.dst==192.168.0.1120 ->目标地址为192.168.0.120的记录;
- ip.addr == 42.121.252.58 ->只显示与某主机的通信;
- tcp.port ==80->端口为80的;
- tcp.srcport == 80 ->只显示TCP协议的源端口为80的;
- http.request.method=="GET" ->只显示HTTP GET方法的;
- eth.type == 0x806->只显示ARP报文,这个字段的值表示是ARP报文,如果是ip报文此值为0x8000
- 注:Type后面的值记不住的话,可以在Expression中选择,
例如:ip.src == 192.168.0.109 or ip.dst == 192.168.0.109 and tcp 表示ip地址来源是192.168.0.120 或者ip地址目的为192.168.0.120并且通信协议是tcp
我输入的是:tcp.srcport == 4455 or tcp.dstport == 4455 表示只查看目的端口和来源端口为4455的信息
过滤报文如下
过滤规则也有说明打击表达式可以查看别的规则语法
查看具体抓到的数据包对应的协议层
4.TCP的链接建立
TCP的三次握手
包数据
TCP的三次握手建立链接图(此图依然来源于计算机网络-谢希仁)
由上图可以看出TCP的链接三次握手信号的过程 A为客户端,B为服务器
建立过程的描述请看谢老的讲述、以及报文抓取截图中的信号
5.数据的发送
6.TCP的链接释放
TCP链接释放报文交互信息
TCP链接释放的过程,也就是通常说的四次挥手
7.TCP的有限状态机
为了能够更加清晰的看清楚TCP链接过程的状态变化情况,以及状态之间的关系下图介绍了TCP的有限状态机
6.TCP建立链接和断开所用到的工具
开启客户端和服务端程序并且启动服务的监听
开启服务端
开启客户端
TCP测试工具下载地址