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测试工具下载地址

Wireshark抓包分析TCP建立/释放链接的过程以及状态变迁分析的更多相关文章

  1. Wireshark抓包工具--TCP数据包seq ack等解读

    1.Wireshark的数据包详情窗口,如果是用中括号[]括起来的,表示注释,在数据包中不占字节 2.在二进制窗口中,如“DD 3D”,表示两个字节,一个字节8位 3.TCP数据包中,seq表示这个包 ...

  2. [转]Wireshark抓包工具--TCP数据包seq ack等解读

    原文: http://blog.csdn.net/wang7dao/article/details/16805337/ ---------------------------------------- ...

  3. WireShark抓包时TCP数据包出现may be caused by ip checksum offload

    最近用WireShark抓包时发现TCP数据包有报错:IP Checksum Offload,经过查阅资料终于找到了原因 总结下来就是wireshark抓到的数据包提示Checksum错误,是因为它截 ...

  4. [na]wireshark抓包排错-tcp.flags.reset

    这是以前处理无线portal问题时候的一个梗. 一 抓包思路-用抓包来解决问题 ,了解协议交互大概过程 ,抓包 抓包法则: .最小化原则,过滤到想要的最小数据,别忽略上下文数据包 .对比法, 正常的包 ...

  5. 网络知识===wireshark抓包出现“TCP segment of a reassembled PDU”的解释(载)

    网上胡说八道,众说风云,感觉这篇还算靠谱点. 原文链接:http://blog.csdn.net/dog250/article/details/51809566 为什么大家看到这个以后总是会往MSS, ...

  6. wireshark抓包图解 TCP三次握手/四次挥手详解[转]

    原文链接:http://www.seanyxie.com/wireshark%E6%8A%93%E5%8C%85%E5%9B%BE%E8%A7%A3-tcp%E4%B8%89%E6%AC%A1%E6% ...

  7. 记一次用WireShark抓包摆脱Si服后台限制的过程

    背景:闲着无聊找了个小众的手游,因为手游都是比较吃金的,所以就找了个Si服,鉴于小时候宝可梦的情怀,就TB买了个GM后台.谁知这玩意有限制,到了100级之后升级超级难,最多只能发送99999W点经验, ...

  8. wireshark抓包图解 TCP三次握手/四次挥手详解

    http://www.seanyxie.com/wireshark%E6%8A%93%E5%8C%85%E5%9B%BE%E8%A7%A3-tcp%E4%B8%89%E6%AC%A1%E6%8F%A1 ...

  9. TCP协议基础知识及wireshark抓包分析实战

    TCP相关知识 应swoole长连接开发调研相关TCP知识并记录. 数据封包流程 如图,如果我需要发送一条数据给用户,实际的大小肯定是大于你发送的大小,在各个数据层都进行了数据的封包,以便你的数据能完 ...

随机推荐

  1. Django REST framework API开发

    RESTful设计方法 1. 域名 应该尽量将API部署在专用域名之下. https://api.example.com 如果确定API很简单,不会有进一步扩展,可以考虑放在主域名下. https:/ ...

  2. 解压文件出错解决方法(invalid compressed data--format violated)

    解压缩出现这个报错: 1.考虑是否传输过程出错,重新传输试试. 2.使用传输工具时,选择二进制试试. 3.使用传输工具时,选择ASCII试试. 解压缩命令: gzip  -d filename gun ...

  3. Ubuntu 18 LTS netplan 网络配置

    一.配置网络 1.通过netplan配置网络 #配置网络 nulige@ubuntu:/etc/netplan$ sudo apt install ifupdown nulige@ubuntu:/et ...

  4. postgresql中使用distinct去重

    select语法 [ WITH [ RECURSIVE ] with_query [, ...] ] SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ...

  5. 如何在IIS上发布网站 在阿里云服务器windows server2012r iis上部署.net网站

    如何在IIS上发布网站   本片博客记录一下怎么用IIS发布一个网站,以我自己电脑上一个已经开发完成的网站为例: 1.打开项目 这是我电脑上的一个项目,现在我记录一下将这个项目发布到iis上的整个过程 ...

  6. Android中的指纹识别

    转载请注明出处:http://blog.csdn.net/wl9739/article/details/52444671 评论中非常多朋友反映,依据我给出的方案,拿不到指纹信息这个问题,在这里统一说明 ...

  7. Python Every Class Needs a __repr__

    一.思考 当我们在Python中定义一个类的时候,如果我们通过print打印这个类的实例化对象,或者我们直接输入这个类实例化对象会返回怎么样的结果,如下代码: >>> class P ...

  8. Atitit.如何文章写好 论文 文章 如何写好论文 技术博客

    Atitit.如何文章写好 论文  文章  如何写好论文 技术博客 1. 原则 1 1.1. 有深度, 有广度 1 1.2. 业务通用性有通用性 尽可能向上抽象一俩层..业务通用性与语言通用性. 2 ...

  9. amqp笔记

    1.exchange message的生产者可以将消息发送给exchange,然后由exchange路由到不同的queue中. exchange有4种类型: direct exchange:msg只会 ...

  10. TCP 协议简析

    TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的.可靠的.基于字节流的通信协议,数据在传输前要建立连接,传输完毕后还要断开连接.它是个超级麻烦的协议, ...