Wireshark数据抓包分析之传输层协议(TCP协议)

使用TCP协议传输数据相对来说更安全,因为通信双方拥有一个专属的通信通道,每发送一个数据包都有确认回复,若数据包丢失。如果发送放没收到确认包,就可以重发这个数据包。

最经典的例子就是三次握手。三次握手是通信双方建立TCP连接前的必须步骤。第一次握手时请求方向接收方发送友好问候,请求建立连接。第二次握手接收方礼貌回复,表示收到请求。第三次握手请求方坚定交往信息,向接收方表示已做好了连接准备。于是双方的TCP连接就建好啦~

完成三次握手后,双方就可以开始传输数据了。当然,握手很严谨,说再见也是一丝不苟的。详细内容可以在合天网安实验室里进行实验操作《Wireshark数据抓包分析之传输层协议(TCP协议)》了解。下面开始实战。

根据已经搭建好的实验环境,本次实战步骤如下:

1. 在测试环境使用发包工具和Wireshark抓取TCP三次握手和四次断开的数据包

2. 详细分析TCP协议的三次握手以及四次断开。

本次的任务可以拆分成:安装发包工具,配置TCP客户端(请求方),服务端(接收方),与学习Wireshark软件懂使用。咱开始吧~

我们使用" TCP&UDP测试工具"来制作和发送TCP数据包,双击实验机器桌面的" TCP&UDP测试工具",会出现下图显示页面:

下面我们需要配置TCP的服务端以及客户端。首先配置服务器端:选择地址为10.1.1.33的机器,双击桌面的" TCP&UDP测试工具",右键点击服务器模式,在下拉列表中,选择创建服务器,如下图:

选择"创建服务器"之后,会弹出服务器端口设置,本次使用默认工具给的6000端口即可,点击"确定"按钮。

点击"确定"按钮之后,在左侧的服务器模式列表中,会出现创建的列表,选择我们创建的服务器,右键点击,选择"启动服务器",即完成了服务器端的配置。

接下来配置客户端,步骤与前面的类似:选择地址为10.1.1.142的机器,双击桌面的" TCP&UDP测试工具",右键点击客户端模式,在下拉列表中,选择"创建连接",如下图:

在弹出的窗口中,选择TCP协议,服务器IP为10.1.1.33.端口6000,本机随意IP,如下图:

点击创建后,如下图:

那么我们看看Wireshark软件获取到的客户端与服务器端之间发送到TCP数据包吧。

获取的TCP协议的数据包分为两部分,即TCP三次握手,四次断开的数据。在实际的操作中,我们往往还会抓到除了目标地址之外往来到数据包,因此先使用过滤器过滤一下IP源,方便我们查看。

启动Wireshark,在Filter中输入tcp,点击Apply会看到很多的数据包,这是因为测试环境中,有很多的应用程序,与其服务器连接,使用TCP协议。如下图:

在这里,我们已知两台机器的IP情况下,可以在filter中输入"ip.addr == 10.1.1.142 and ip.addr == 10.1.1.33"来过滤出我们想要的数据,点击工具中的"apply连接"按钮。如下图:

在上图中,70,73,74帧是tcp的三次握手,428,429,430,431帧是四次断开的数据。

分析握手

通过前面到工作,我们已经找到了想要的数据包,接下来我们将对TCP的三次握手进行详细分析。

首先我们看TCP包的首部。TCP首部的通用格式如下图所示:

在上面的图中,标出了每一个字段,咱今天就说说比较重要的源端口、目标端口、标记。

源端口表明了发送方的输出端口号。目标端口表示数据包进入接收方的端口号端口对上了,才能正确地将数据包传达。标记用来表示所传输的TCP数据包类型,包括URG、ACK、PSH、RST、SYN和FIN,其中SYN表示同步序号,使用在建立连接时;ACK是确认标志,表示应答域有效,就是前面所说的接收方对请求方的问候表示礼貌致意;FIN表示发送端以及达到数据末尾,此时双方就准备挥手告别了。

那么接下来咱具体分析下三次握手。

干货来了!

TCP第一次握手,捕获的数据包信息如下所示:

从Wireshark的Packet List面板中的Info列可以看到显示的TCP标志位是SYN,所以该数据包是客户端向服务器发送的第一次握手连接。在Packet Details面板中,显示了该包的详细信息,下面详细介绍。

以上信息,表示该包的大小为62个字节。

以上内容表示源IP是10.1.1.142,目的IP为10.1.1.33。

以上内容是传输层首部的详细信息,这里使用TCP协议,其中源端口为56678,目标端口为6000。

更多详细的信息,可以进入合天实战实验课程查询。

接下来是第二次握手,TCP第二次握手捕获数据包相信信息,如下:

在该界面显示了第二次握手数据包的详细信息,其中位于TCP上面的信息与第一次握手时相类似,留给文后照着上面的分析独立思考。

同样地,第三次握手也一定没问题,看下图:

于是这样就完成了TCP连接的建立啦~

五 再来看看再见

TCP的四次断开,也是TCP协议的主要工作之一。那咱也看看四次分手,偶不,四次断开~TCP第一次断开连接的数据包如下:

在该界面显示了TCP第一次断开,数据包的详细信息,是不是和握手时的数据包很像?

查看tcp数据包可以看到客户端向服务器发送FIN和ACK标志的数据包开始断开连接,其中FIN和ACK标志位都为1。

Source Port: 56678(56678) #源端口号

Destination Port: 6000(6000) #目标端口号

Stream index: 0 #流节点号

TCP Segment Len: 0 #分段长度

Sequence number: 1 (relative sequence number) #序列号

Acknowledgment number: 1 (relative ack number) #确认编号

Header Length: 20 bytes #首部长度

.... 0000 0001 0001 = Flags: 0x011 (FIN,ACK) #标志位,此处为(FIN,ACK)

\000. .... .... = Reserved: Not set

...0 .... .... = Nonce: Not set

.... 0... .... = Congestion Window Reduced (CWR): Not set

.... .0.. .... = ECN-Echo: Not set

.... ..0. .... = Urgent: Not set

.... ...1 .... = Acknowledgment: Not set #确认编号已设置

.... .... 0... = Push: Not set

.... .... .0.. = Reset: Not set

.... .... ..0. = Syn: Set #请求位

.... .... ...1 = Fin: Not set #FIN标志位

Expert Info (Chat/Sequence): Connection finish (FIN) #专家信息

Connection finish (FIN) #消息内容,连接完成(FIN)

Severity level: Chat #安全级别

Group: Sequence

Window size value: 64240 #窗口大小

Calculated window size: 64240 #估计的窗口大小

Window size scaling factor: -1 (unknown) 窗口大小缩放比例因素

Checksum: 0x16cb [validation disabled] #校验和

Good Checksum: False

Bad Checksum: False

Urgent pointer: 0

FIN是1表示要分手啦~

在TCP第二次断开连接的数据包是服务器向客户端发送的ACK包,其中ACK标志位为1。

TCP第三次断开连接的数据包是服务器向客户端发送的FIN和ACK包。其中FIN和ACK标志位为1。

TCP第四次断开连接的数据包,客户端向服务器发送ACK的包。其中,ACK标志位都为1。

(0)

相关推荐

  • wireshark抓包新手使用教程

    Wireshark是非常流行的网络封包分析软件,可以截取各种网络数据包,并显示数据包详细信息.常用于开发测试过程各种问题定位.本文主要内容包括: 1.Wireshark软件下载和安装以及Wiresha ...

  • 抓包神器 Wireshark,帮你快速定位线上网络故障(3)

    回顾:TCP 三次握手&四次挥手 正式分享之前,先简单回顾一下 TCP 的三次握手.四次挥手. TCP 通过三次握手建立连接(一图解千愁) TCP 协议通过四次挥手断开连接(一图知所有) Wi ...

  • 一文包你学会网络数据抓包

    本篇彭老师将图文并茂教你如何使用抓包工具,并在文章最后教大家如何偷取FTP的用户名密码. 一.安装 本文为大家介绍一个非常好用的抓包工具,科来. 下载地址: http://www.colasoft.c ...

  • wireshark如何抓取分析https的加密报文

    [问题概述] https流量基于ssl/tls加密,无法直接对报文进行分析. [解决方案] 方案1 -- 利用"中间人攻击"的代理方式抓包分析.整个方案过程比较简单,这里不赘述,大 ...

  • wireshark怎么抓包、wireshark抓包详细图文教程

    wireshark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示网络封包的详细信息.使用wireshark的人必须了解网络协议,否则就看不懂wireshark了.为了安全考虑, ...

  • linux环境下用TcpDump抓包分析总结

    linux环境下用TcpDump抓包分析总结

  • wireshark抓包工具的使用及分析

    Wireshark简介 Wireshark 是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料. Wireshark下载.安装 下载链接: https: ...

  • 一文搞定 Wireshark 网络数据包分析

    为了让大家更容易「看得见」 TCP,我搭建不少测试环境,并且数据包抓很多次,花费了不少时间,才抓到比较容易分析的数据包. 接下来丢包.乱序.超时重传.快速重传.选择性确认.流量控制等等 TCP 的特性 ...

  • Fiddler抓包12-返回本地数据(mock)

    前言 mock可以说是面试必问的话题的,我第一次接触mock的时候也是一脸懵逼.虽然fiddler工具用了很久,里面的打断点,设置自动返回数据功能都用过. mock说的通俗一点就是模拟返回数据,只是面 ...

  • 玩玩抓包-Wireshark的使用(1)

    下载安装就不再讲解了,直接官网下载安装即可.启动Wireshark软件后的界面如下,如果不做任何设置(如捕获过滤器,界面布局等),选择网卡直接双击就进行数据包的捕获状态了. 然后就进入下面的状态,可以 ...

  • 使用Wireshark给电视抓包去广告 | 艾利克斯部落

    上期讲了如何使用红米AC2100路由器通过自定义hosts方式去除小米电视广告,很多朋友反馈效果不错,但是还有一些朋友使用的是其他品牌的电视也想要去广告,要怎么做呢,hosts的内容如何获取,本期将以 ...