精华内容
下载资源
问答
  • 数据抓包分析实例

    2018-11-01 23:16:29
    数据包分析,内容为典型服务器系统反应延时导致ping、FTP等异常
  • 网页抓包数据分析工具
  • httpwatch 9.3中文破解版(网页抓包数据分析工具) .rar
  • WireShark抓包数据分析

    千次阅读 多人点赞 2020-10-14 12:32:53
    分析数据之前,我们先了解一下我们传输数据的结构体系,如下图: 这是两种体系,我们常知的一般都是TCP/IP体系结构。 TCP/IP体系架构分析 ...这是我自己抓包的一个例子,我从我自己的QQ发了一条消息给朋友,

    在分析数据之前,我们先了解一下我们传输数据的结构体系,如下图:

    这是两种体系,我们常知的一般都是TCP/IP体系结构。
    这是两种体系,我们常用的一般都是TCP/IP体系结构。

    TCP/IP体系架构分析

    在这里插入图片描述

    不难发现,TCP/IP体系中包含着很多我们熟悉的协议,比如说:http、smtp、https等。而我们人(使用者)是站在应用层之上的,我们想把数据上传或者说发送给别人,就要通过一些应用,如:QQ、微信、百度网盘等。然后就经过一层层加密(在数据包前加个“头”),一层层的传递。

    Frame层(物理层)分析

    这是我自己抓包的一个例子,我从我自己的QQ发了一条消息给朋友,然后截了一个数据包,现在我们来分析一下。
    在这里插入图片描述

    1.在这里我们可以看见的是我发信息到达对方QQ的时间(Arrival Time).
    2.与之前捕获的数据帧时间差0.016937秒(captured frame).
    3.与之前显示的帧时间差0.02171秒(displayed frame).
    4.帧的长度(Frame Length)和捕获到的长度(Capture Length)都是89字节.
    5.使用的色彩规则是UDP.

    Ethernet层(数据链路层)分析

    在这里插入图片描述

    这里我们就可以看见我和别人的Mac地址(物理地址),Destination是目标的,相对的Source就是我的啦,IPv4是我发的数据包类型。

    IPv4协议(互联网层)分析

    在这里插入图片描述

    1.头部数据长度(Header Length)为20字节.
    2.源IP地址(Source).
    3.目标IP地址(Destination).

    UDP/TCP协议(传输层)分析

    在这里插入图片描述

    因为我是发送的QQ信息,UDP传输较快(TCP传输数据比较完整),so我这里用的是UDP协议。
    1.源端口(我发送信息出去用的端口)为4011.
    2.目标端口(这里是发送到QQ,所以用QQ发信息都是这个)为8000.

    OICQ协议(应用层)分析

    在这里插入图片描述

    QQ发信息用的是oicq协议,所以这里不同的数据包,所用的协议不一样,比如说:DNS、HTTP等。
    这里我就不漏我的QQ号了。

    展开全文
  • 1.1.2 Wireshark安装入门之抓包原理.mp4 1.1.3 WireShark安装入门之初始安装.mp4 1.1.4 WireShark安装入门之快速抓包.mp4 1.1.5 Wireshark安装入门之界面介绍.mp4 1.2.1 Wireshark进阶调试之显示界面设置.mp4 1.2.2 ...
  • Wireshark数据抓包分析 网络协议篇

    热门讨论 2014-09-28 14:11:15
    Wireshark数据抓包分析 网络协议篇
  • 封包分析工具,可与wireshark配合使用,比wireshark更为直观,功能更强大
  • 网络抓包和发包工具

    2019-04-29 12:08:22
    网络调试过程中,我们往往需要对通信过程中的数据进行分析,这个时候网络抓包和发包数据就显得格外重要了@~@
  • 手机网络抓包工具,可以抓取手机网络包括4g 3g 2g 网络数据,可用于监控, 协议分析
  • Wireshark-win64-2.9.0网路抓包数据分析工具,网络分析工具,方便分析网络流量工具
  • 网络通信的抓包分析

    千次阅读 2018-07-01 13:47:12
    首先 ping 交大官网地址,可以 ping 202.117.1.13,也可以 ping www.xjtu.edu.cn,可到结果如下在 wireshark 中,搜索对应的 ip 地址 202.117.1.13,可得到结果如下分析可知,最初的源地址是 192.168.3.11,然后经过...
    首先 ping 交大官网地址,可以 ping 202.117.1.13,也可以 ping www.xjtu.edu.cn,可到结果如下
    


    在 wireshark 中,搜索对应的 ip 地址 202.117.1.13,可得到结果如下分析可知,最初的源地址是 192.168.3.11,然后经过 icmp 协议,传到目的地址 202.117.1.13。其中,这个过程的初始时间为 ttl=128,每经过一个路由器, ttl 减 1,当 ttl 变为 0 的时包被丢弃,路由器向源地址发送一个超时通知。如图可知,在传输过程中,目的地址会经过很多的路由,当目的地址接收到原地址发来的消息,并进行返回后,可以观察到,此时的时间变为 ttl=60,说明往返的时间为 68.

    对交大官网的地址进行追踪, tracert 202.117.1.13,可以发现,他经过了四个路由,最终到达目的地址


    根据 wireshark 抓包情况可以发现, 每次记录输出三个延时结果,说明原地址每次默认发送三个数据包。Tracert 能够通过 seq 唯一识别返回的包 。

    我们选择一个包进行分析:

    从该界面可以看出显示了五行信息,默认这些信息是没有被展开的。各行信息如下所示:
    Frame:物理层的数据帧概况。
    Ethernet II:数据链路层以太网帧头部信息。
    Internet Protocol Version 4:互联网层 IP 包头部信息。
    Transmission Control Protocol:传输层的数据段头部信息,此处是 TCP 协议。
    有时会出现: Hypertext Transfer Protocol:应用层的信息,此处是 HTTP 协议。


    下面分层介绍:

    1、 物理层数据帧

    Frame 5: 54 bytes on wire (432 bits), 54 bytes captured (432 bits) on interface 0
    //5 号帧,线路 54 字节,实际捕获 54 字节
    Interface id: 0 (\Device\NPF_{D98252F7-48A9-4610-9F08-8044426093CF}) //接口 id
    Encapsulation type: Ethernet (1) //封装类型
    Arrival Time: Mar 9, 2018 15:20:13.149458000 中国标准时间 //捕获日期和时间
    [Time delta from previous captured frame: 0.049416000 seconds] //此包与前一个包
    间隔时间
    [Time delta from previous displayed frame: 0.049416000 seconds] //此包与第一帧间
    隔时间
    Frame Number: 5 //帧序号
    Frame Length: 54 bytes (432 bits) //帧长度
    Capture Length: 54 bytes (432 bits) //捕获长度
    [Frame is marked: False] //此帧是否被标记:否
    [Frame is ignored: False] //此帧是否被忽略:否
    [Protocols in frame: eth:ethertype:ip:tcp] //此帧内封装的协议层次结构

    [Coloring Rule Name: TCP] //着色标记的协议名称: TCP
    [Coloring Rule String: tcp] //着色规则显示的字符串: TCP

    2、 数据链路层以太网帧头部信息


    Destination: Hangzhou_b4:e0:01 (38:97:d6:b4:e0:01) //目标 MAC 地址
    Source: ChiconyE_8f:a0:03 (4c:bb:58:8f:a0:03) //源 MAC 地址
    Type: IPv4 (0x0800) //ip 类型 IPv4

    3、 互联网层 IP 包头部信息


    0100 .... = Version: 4 //互联网协议 IPv4
    .... 0101 = Header Length: 20 bytes (5) //IP 包头部长度 20bytes
    Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT) //差分服务字段
    Total Length: 40 //IP 包的总长度
    Identification: 0x12ea (4842) //标志字段
    Flags: 0x02 (Don't Fragment) //标记字段
    Fragment offset: 0 //碎片偏移量

    Time to live: 128 //生存周期 TTL
    Protocol: TCP (6) //此包内封装的上层协议为 TCP
    Header checksum: 0xaa44 [validation disabled] //头部数据的校验和
    Source: 10.169.6.40 //源 IP 地址
    Destination: 207.148.93.60 //目的 IP 地址
    4、 传输层 TCP 数据段头部信息


    Source Port: 56361 //源端口号
    Destination Port: 443 //目的端口号
    Sequence number: 376 (relative sequence number) //序列号: 376
    Acknowledgment number: 30 (relative ack number) //确认 ACK: 30
    0101 .... = Header Length: 20 bytes (5) //头部长度: 20
    Flags: 0x010 (ACK) //标记字段
    Window size value: 256 //流量控制窗口大小
    Checksum: 0x8c74 [unverified] //TCP 数据段的校验和




    展开全文
  • 这个是本人在GPRS编程中,为分析GPRS协议而抓包分析数据。花了好大精力,愿这个资料能帮得上你的忙!
  • 网络数据数据包抓包分析教程
  • 计算机网络大作业——抓包分析

    千次阅读 多人点赞 2021-01-21 10:16:02
    (1)了解网络通信的分层实现过程,了解不同层次PDU的逐层封装与解封过程; (2)了解数据通信的过程,进一步认知协议的构成与通信过程,进而对TCP/IP分层体系结构有更深刻的了解。 二.大作业内容 在局域网范围内...

    一.大作业目的
    (1)了解网络通信的分层实现过程,了解不同层次PDU的逐层封装与解封过程;
    (2)了解数据通信的过程,进一步认知协议的构成与通信过程,进而对TCP/IP分层体系结构有更深刻的了解。

    二.大作业内容

    1. 在局域网范围内从协议层面分析ping命令的执行过程,包括所使用协议,以及不同层级的数据包封装与解封的过程。
    2. 访问www.ujs.edu.cn网站,分析其中所使用的协议,以及数据包的逐层封装与解封过程。
    3. 思考在数据链路层的数据包与网络层数据包的异同,包括包长度和数据构成等,并进一步思考为何会存在这些区别?

    三.大作业要求
    (1)能够正确捕捉ping命令执行过程中所产生的数据包,并逐层分析其构成,进而了解数据包的封装与解封过程;
    (2)能够正确捕捉访问www.ujs.edu.cn网站过程所产生的相关数据包,分析出其所使用的协议,以及各协议的访问流程;
    (3)能够正确分析数据链路层的数据包与网络层数据包的异同。
    (4)了解并熟悉常见的抓包工具,例如Wireshark、Sniffer等,熟悉以太网数据帧和IP数据包的结构
    (5)以PDF文档提交本次作业报告。

    四.实现过程
    (一)软件的安装
    我下载的是wireshark软件
    在这里插入图片描述
    安装完成后打开界面如下:
    在这里插入图片描述
    (二)捕捉ping命令执行过程中产生的数据包
    1用Wireshark观察ARP协议以及ping命令的工作过程:打开windows命令行,键入“ipconfig-all”命令获得本机的MAC地址和缺省路由器的IP地址。结果如下:
    在这里插入图片描述
    2.(1)用“arp -a”命令查看本机的arp高速缓存,结果如下:
    在这里插入图片描述
    (2)用“arp -d”命令清空本机的缓存,结果如下:
    在这里插入图片描述
    (3)执行命令:ping www.ujs.edu.cn ,观察执行后的结果并记录。图一是在命令行中实行ping命令的过程,
    在这里插入图片描述
    4.点击捕获,网站访问结束后停止即可。下面是 ping后WireShark软件自己对数据包进行捕捉,停止捕获后的界面
    图二
    抓取若干数据包,对照理论所学数据包,辨别、分析数据包结构。
    (1)TCP分析:一个TCP报文段分为首部和数据两部分。TCP报文段首部的前二十个字节是固定的,后面有4N个字节是根据需要而增加的选项。因此TCP的最小长度是20个字节。
    (2)源端口和目的端口字段:各占两个字节,分别写入源端口号和目的端口号。在抓取的数据报中,源端口号和目的端口号的值分别是:80和5677
    在这里插入图片描述
    序号字段:占4个字节。序号范围是0到2^32-1 ,
    共2^32个序号
    在这里插入图片描述
    (3)确认号字段:在四个字节,是期望收到对方下一个报文段的第一个字节的序号。
    在这里插入图片描述
    (4)数据偏移字段:占4位,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。这个字段实际上是指出TCP报文段的首部长度。由于首部中还有长度不确定的选项字段。因此数据偏移字段是必要的。现在本字段的值是20,说明首部不包含选项字段。
    在这里插入图片描述
    (5)保留字段:占6位,保留为今后使用;
    (6)窗口字段:占两个字节。窗口值是0到216-1之间的整数。窗口指的是发送本报文段的一方的接收窗口,而不是自己的发送窗口。本数据包中窗口字段的值是8212。
    在这里插入图片描述

    (7)校验和字段:占2个字节。校验和字段检验的范围包括首部和数据这两部分。
    在这里插入图片描述

    (8)紧急指针字段:占两个字节。紧急指针仅仅在URG=1时才有意义,它指出+选项字段:长度可变最长可达40个字节,当没有使用选项时,TCP的首部长度是20个字节。本数据包中没有选项字段。

    5.网络分层构成
    现在我以抓取www.ujs.edu.cn数据包为例,了解该数据包的层次结构。在输入过滤条件获取待分析数据包列表 ping命令后获得的IP地址,并在过滤器中输入ip.addr == 202.195.160.182,并出现以下情况:
    在这里插入图片描述

    此时在 Packet Details 面板上显示的息就是该数据包的层次结构信息。这里显示了 5 个层次,每个层次的含义如下:
    Frame:该数据包物理层的数据帧概况。
    Ethernet II:数据链路层以太网帧头部信息。
    Internet Protocol Version 4:网际层 IP 包头部信息。
    Transmission Control Protocol:传输层的数据段头部信息。
    Hypertext Transfer Protocol:应用层的信息,此处是 HTTP 协议。
    由此可见,Wireshark 对 HTTP 协议数据包进行解析,显示了 HTTP 协议的层次结构。
    上图中所显示的信息从上到下分布在 3 个面板中,每个面板包含的信息含义如下:
    (1)Packet List 面板:上面部分,显示 Wireshark 捕获到的所有数据包,这些数据包从 1 进行顺序编号。
    (2)Packet Details 面板:中间部分,显示一个数据包的详细内容信息,并且以层次结构进行显示。这些层次结构默认是折叠起来的,用户可以展开查看详细的内容信息。
    (3)Packet Bytes 面板:下面部分,显示一个数据包未经处理的原始样子,数据是以十六进制和 ASCII 格式进行显示。
    同时,WireShark已经捕获完数据后,其格式如下:第一列是捕获数据的编号;第二列是捕获数据的相对时间;第三列是源地址, 第四列是目的地址;第五列是数据包的信息。选中第一个数据帧, 然后从整体上看看 Wireshark 的窗口,主要被分成三部分。上面部分是所有数据帧的列表; 中间部分是数据帧的描述信息;下面部分是帧里面的数据。

    6.数据链路层的数据包与网络层数据包的异同

    (1)数据链路层:
    任意选中一帧,可以看到该帧所在的各层分组的头部如下,展开 Ethernet II 层,显示信息如下:
    在这里插入图片描述

    点开Ethernet II前面的>号,可以看到该帧在数据链路层的详细信息:
    在这里插入图片描述

    数据链路层以太网帧数据包头部信息
    Ethernet II, Src: Giga-Byt_c8:4c:89 (1c:6f:65:c8:4c:89), Dst: Tp-LinkT_f9:3c:c0 (6c:e8:73:f9:3c:c0)
    Destination: Tp-LinkT_f9:3c:c0 (6c:e8:73:f9:3c:c0) #目标MAC地址
    Source: Giga-Byt_c8:4c:89 (1c:6f:65:c8:4c:89) #源MAC地址
    Type: IP (0x0800)

    (2)网络层:
    在Wireshark的过滤器(filter)中输入http,按回车键进行过滤。过滤的结果就是和刚才打开的网页相关的数据包。
    在这里插入图片描述

    网络层IP数据包头部信息
    Internet Protocol Version 4, Src: 192.168.0.104 (192.168.0.104), Dst: 61.182.140.146 (61.182.140.146)
    Version: 4 #互联网协议IPv4
    Header length: 20 bytes #IP包头部长度
    Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport)) #差分服务字段
    Total Length: 254 #IP包的总长度
    Identification: 0x5bb5 (23477) #标志字段
    Flags: 0x02 (Don’t Fragment) #标记字段
    Fragment offset: 0 #分的偏移量
    Time to live: 64 #生存期TTL
    Protocol: TCP (6) #此包内封装的上层协议为TCP
    Header checksum: 0x52ec [validation disabled] #头部数据的校验和
    Source: 192.168.0.104 (192.168.0.104) #源IP地址
    Destination: 61.182.140.146 (61.182.140.146) #目标IP地址

    通过头部信息可以看出,该帧在数据链路层使用的是Ethernet II协议,到网络层被封装为IP数据包,到传输层被封装为UDP数据包,没有应用层协议。总的来说数据链路层的数据包与网络层数据包的异同如下:

    (一)数据链路层
    数据链路层在物理层提供的服务的基础上向网络层提供服务。数据链路层的作用:
    1、IP数据模块发送和接收IP数据报;
    2、为ARP模块发送ARP请求和接收ARP协议;
    3、为RARP发送RARP请求和接受RARP应答。
    Ethernet II, Src: CompalIn_d7:16:dd (20:89:84:d7:16:dd), Dst: LcfcHefe_c2:30:05 (68:f7:28:c2:30:05) 以太网协议版本,源地址:网卡地址,目的地址:网卡地址
    Destination: LcfcHefe_c2:30:05 (68:f7:28:c2:30:05) 目的地址:网卡地址
    Address: LcfcHefe_c2:30:05 (68:f7:28:c2:30:05) 网卡地址
    … …0. … … … … = LG bit: Globally unique address (factory default) 多点传送
    … …0 … … … … = IG bit: Individual address (unicast) 本地管理地址
    Source: CompalIn_d7:16:dd (20:89:84:d7:16:dd) 源地址:网卡地址
    Address: CompalIn_d7:16:dd (20:89:84:d7:16:dd) 网卡地址
    … …0. … … … … = LG bit: Globally unique address (factory default) 本地管理地址
    … …0 … … … … = IG bit: Individual address (unicast) 多点传送
    Type: IPv4 (0x0800) 帧内封装的上层协议类型为IP(十六进制码0800)

    (二)网络层
    在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向运输层提供最基本的端到端的数据传送服务。
    主要内容有:
    1、虚电路分组交换和数据报分组交换
    2、路由选择算法
    3、阻塞控制方法
    4、X.25协议
    5、综合业务数据网(ISDN)
    6、异步传输模式(ATM)及网际互连原理与实现。
    wireshark解析:
    Internet Protocol Version 4, Src: 192.168.16.2, Dst: 192.168.16.1 互联网协议,源IP地址,目的IP地址
    0100 … = Version: 4 互联网协议IPv4
    … 0101 = Header Length: 20 bytes IP首部长度
    Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT) 差分,服务字段
    0000 00… = Differentiated Services Codepoint: Default (0) 区分服务模块
    … …00 = Explicit Congestion Notification: Not ECN-Capable Transport (0) 源端设置以显示源端节点的传输协议

    Total Length: 53 IP数据包的总长度
    Identification: 0x3b6d (15213) 标志字段
    Flags: 0x02 (Don’t Fragment) 标记字段
    0… … = Reserved bit: Not set 保留不用
    .1… … = Don’t fragment: Set 分片标志位,1表示分片,0表示不分片
    …0. … = More fragments: Not set 最后一片标志位,0表示最后一片,1表示不是最后一片
    Fragment offset: 0 分段偏移量
    Time to live: 64 生存期
    Protocol: TCP (6) 此包内封装的上层协议为TCP
    Header checksum: 0x0000 [validation disabled] 头部数据的检验和
    [Good: False] 数据完整
    [Bad: False] 数据不完整
    Source: 192.168.16.2 源IP地址
    Destination: 192.168.16.1 目的IP地址
    [Source GeoIP: Unknown]
    [Destination GeoIP: Unknown]

    展开全文
  • (1) 捕获网络中的IP数据包,解析数据包的内容,并将结果显示出来。 (2) 显示内容包括:捕获的IP的版本、源地址、目的地址、源端口、目的端口、协议类型、IP总长度、IP包头总长度、IP数据包长度等内容。 (3) 设置...
  • 更加小巧、强大、直观、方便的的网络嗅探器。监听网卡数据包,分析出HTTP数据。数据包列表使用两种颜色区分发送和接收,更直观软件背景色使用草绿色,用
  • Wireshark好用的抓包工具,便于分析网络数据
  • L2TP抓包分析pcapng

    2020-10-16 10:12:49
    该协议是一种工业标准的Internet隧道协议,功能大致和PPTP协议类似,比如同样可以对网络数据流进行加密。不过也有不同之处,比如PPTP要求网络为IP网络,L2TP要求面向数据包的点对点连接;PPTP使用单一隧道,L2TP...
  • 网络抓包工具Fiddler

    2017-07-17 10:57:56
    Fiddler官方版是一个强大的HTTP调试抓包工具。Fiddler官方版可以用其检测网页和服务器的交互情况,Fiddler能够记录所有客户端和服务器间的http请求,支持监视、设置断点、甚至修改输入输出数据等功能。Fiddler对开发...
  • 网络抓包网络抓包网络抓包网络抓包网络抓包网络抓包网络抓包网络抓包网络抓包网络抓包网络抓包网络抓包网络抓包网络抓包网络抓包网络抓包网络抓包网络抓包
  • 使用wireshark抓包软件分析微信协议 计算机网络大作业 压缩包包含做实验时候配套抓取的包文件 超级详细- -,不服找我,写了好久
  • 网络抓包工具

    2019-04-08 14:13:36
    这个一个网络抓包的工具,方便大家分析网络数据、协议
  • 无须安装,解压运行可执行文件即可,可根据系统进程自定义网络请求截分析所有网络请求接口。
  • 网络抓包分析

    千次阅读 2020-12-16 20:50:54
    网络抓包分析 1,网络抓包介绍 1、Tcpdump简介 tcpdump 命令是基于unix系统的命令行的数据报嗅探工具,可以抓取流动在网卡上的数据包。它的原理大概如下:**linux 抓包是通过注册一种虚拟的底层网络协议来完成对网络...

    网络抓包分析

    1,网络抓包介绍

    1、Tcpdump简介

    tcpdump 命令是基于unix系统的命令行的数据报嗅探工具,可以抓取流动在网卡上的数据包。它的原理大概如下:**linux 抓包是通过注册一种虚拟的底层网络协议来完成对网络报文(准确的是网络设备)消息的处理权。**当网卡接收到一个网络报文之后,它会遍历系统中所有已经注册的网络协议,如以太网协议、x25协议处理模块来尝试进行报文的解析处理。当抓包模块把自己伪装成一个网络协议的时候,系统在收到报文的时候就会给这个伪协议一次机会,让它对网卡收到的包进行一次处理,此时该模块就会趁机对报文进行窥探,也就是将报文完完整整的复制一份,假装是自己接收的报文,汇报给抓包模块。

    2、Wireshark 简介

    Wireshark 是一个网络协议检测工具,支持Windows平台、Unix平台、Mac平台,一般只在图形界面平台下使用Wireshark,如果是Linux的话,直接使用 tcpdump了,因为一般而言 Linux 都自带的 tcpdump,或者用 tcpdump 抓包以后用 Wireshark 打开分析。

    在Mac平台下,Wireshark 通过 WinPcap 进行抓包,封装的很好,使用起来很方便,可以很容易的制定抓包过滤器或者显示过滤器,具体简单使用下面会介绍。Wireshark是一个免费的工具。

    所以,tcpdump是用来抓取数据非常方便,Wireshark则是用于分析抓取到的数据比较方便。

    2、Tcpdump 语法

    1、查看本地网卡状态

    [root@qfedu.com ~]# netstat -i
    Kernel Interface table
    Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
    docker0   1500    40409      0      0 0         20376      0      0      0 BMU
    eth0      1500 22999894941      0      0 0      25581016784      0      0      0 BMRU
    lo        65536 850291094      0      0 0       850291094      0      0      0 LRU
    
    • Iface:存在的网卡。

    • MTU:最大传输单元。

    • RX-OK RX-ERR RX-DRP RX-OVR:正确接收数据报的数量以及发生错误、流式、碰撞的总数。

    • TX-OK TX-ERR TX-DRP TX-OVR:正确发送数据报的数量以及发生错误、流式、碰撞的总数。

      [root@qfedu.com ~]# tcpdump --help
       tcpdump version 4.9.0
       libpcap version 1.5.3
       OpenSSL 1.0.1e-fips 11 Feb 2013
       Usage: tcpdump [-aAbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ]
       [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]
       [ -i interface ] [ -j tstamptype ] [ -M secret ] [ --number ]
       [ -Q|-P in|out|inout ]
       [ -r file ] [ -s snaplen ] [ --time-stamp-precision precision ]
       [ --immediate-mode ] [ -T type ] [ --version ] [ -V file ]
       [ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z postrotate-command ]
       [ -Z user ] [ expression ]
      

    2、 Tcpdump 抓包分类

    1、类型的关键字
    • host:指明一台主机。如:host 192.168.152.110
    • net:指明一个网络地址,如:net 192.168.152.0
    • port:指明端口号:如:port 8090
    2、确定方向的关键字
    • src:ip包的源地址,如:src 192.168.152.110
    • dst:ip包的目标地址。如:dst 192.168.152.110
    3、协议的关键字(缺省是所有协议的信息包)
    • fddi、ip、arp、rarp、tcp、udp。
    4、其它关键字
    • gateway、broadcast、less、greater。
    5、常用表达式
    • ! or not
    • && or and
    • || or or

    3、Tcpdump 参数详解

    • A:以ascii编码打印每个报文(不包括链路的头)。
    • a:将网络地址和广播地址转变成名字。
    • c:抓取指定数目的包。
    • C:用于判断用 -w 选项将报文写入的文件的大小是否超过这个值,如果超过了就新建文件(文件名后缀是1、2、3依次增加);
    • d:将匹配信息包的代码以人们能够理解的汇编格式给出;
    • dd:将匹配信息包的代码以c语言程序段的格式给出;
    • ddd:将匹配信息包的代码以十进制的形式给出;
    • D:列出当前主机的所有网卡编号和名称,可以用于选项 -i;
    • e:在输出行打印出数据链路层的头部信息;
    • f:将外部的Internet地址以数字的形式打印出来;
    • F<表达文件>:从指定的文件中读取表达式,忽略其它的表达式;
    • i<网络界面>:监听主机的该网卡上的数据流,如果没有指定,就会使用最小网卡编号的网卡(在选项-D可知道,但是不包括环路接口),linux 2.2 内核及之后的版本支持 any 网卡,用于指代任意网卡
    • l:如果没有使用 -w 选项,就可以将报文打印到 标准输出终端(此时这是默认);
    • n:显示ip,而不是主机名
    • nn:显示port,而不是服务名
    • N:不列出域名;
    • O:不将数据包编码最佳化;
    • p:不让网络界面进入混杂模式;
    • q:快速输出,仅列出少数的传输协议信息;
    • r<数据包文件>:从指定的文件中读取包(这些包一般通过-w选项产生);
    • s<数据包大小>:指定抓包显示一行的宽度,-s0表示可按包长显示完整的包,经常和-A一起用,默认截取长度为60个字节,但一般ethernet MTU都是1500字节。所以,要抓取大于60字节的包时,使用默认参数就会导致包数据丢失;
    • S:用绝对而非相对数值列出TCP关联数;
    • t:在输出的每一行不打印时间戳;
    • tt:在输出的每一行显示未经格式化的时间戳记;
    • T<数据包类型>:将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议);
    • v:输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息
    • vv:输出详细的报文信息
    • x/-xx/-X/-XX:以十六进制显示包内容,几个选项只有细微的差别,详见man手册;
    • w<数据包文件>:直接将包写入文件中,并不分析和打印出来;
    • expression:用于筛选的逻辑表达式;

    4、Tcpdump 参数含义

    [root@qfedu.com ~]# tcpdump host 192.168.152.110 -i eth0 -c 10 -l -n
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on ens5f0, link-type EN10MB (Ethernet), capture size 262144 bytes
    10:59:51.071567 IP 192.168.152.21.ssh > 192.168.152.110.7608: Flags [P.], seq 1715331653:1715331865, ack 2259278754, win 65535, length 212
    10:59:51.071699 IP 192.168.152.21.ssh > 192.168.152.110.7608: Flags [P.], seq 212:408, ack 1, win 65535, length 196
    10:59:51.071794 IP 192.168.152.21.ssh > 192.168.152.110.7608: Flags [P.], seq 408:572, ack 1, win 65535, length 164
    10:59:51.071861 IP 192.168.152.21.ssh > 192.168.152.110.7608: Flags [P.], seq 572:736, ack 1, win 65535, length 164
    10:59:51.071910 IP 192.168.152.21.ssh > 192.168.152.110.7608: Flags [P.], seq 736:900, ack 1, win 65535, length 164
    10:59:51.071958 IP 192.168.152.21.ssh > 192.168.152.110.7608: Flags [P.], seq 900:1064, ack 1, win 65535, length 164
    10:59:51.072006 IP 192.168.152.21.ssh > 192.168.152.110.7608: Flags [P.], seq 1064:1228, ack 1, win 65535, length 164
    10:59:51.072053 IP 192.168.152.21.ssh > 192.168.152.110.7608: Flags [P.], seq 1228:1392, ack 1, win 65535, length 164
    10:59:51.072141 IP 192.168.152.21.ssh > 192.168.152.110.7608: Flags [P.], seq 1392:1556, ack 1, win 65535, length 164
    10:59:51.077438 IP 192.168.152.110.7608 > 10.1.87.25.ssh: Flags [.], ack 212, win 63360, length 0
    10 packets captured
    13 packets received by filter
    0 packets dropped by kernel
        
    1、第一行:`tcpdump: verbose output suppressed, use -v or -vv for full protocol decode`
    使用选项`v``vv`,可以看出更全的详细内容。
    
    2、第二行:`listening on ens5f0, link-type EN10MB (Ethernet), capture size 262144 bytes`,说明监听的是`ens5f0`这个NIC设备的网络包,且它的链路层是基于以太网的,要抓的包大小限制`262144`,装包大小限制可以用利用`-s`来控制。
    
    3、第三行:`10:59:51.071567 IP 192.168.152.21.ssh > 192.168.152.110.7608: Flags [P.], seq 1715331653:1715331865, ack 2259278754, win 65535, length 212`。
    
    - `10:59:51.071567`:抓包时间为时、分、秒、微妙。
    - `IP 192.168.152.21.ssh > 192.168.152.110.7608: Flags [P.], seq 1715331653:1715331865, ack 2259278754, win 65535, length 212`,这里用`man dump`这个命令引用说明:
    
    上面视图简单的解释就是该包`192.168.152.21`传到`192.168.152.110`,通过的端口是`22`(ssh的端口)向`7608`,前几个是使用的是`PUSH`的标识,最后一个是返回的`ACK`标识。
    

    5、Tcpdump 命令实践

    1、直接启动tcpdump,将抓取所有经过第一个网络接口上的数据包

    [root@qfedu.com ~]# tcpdump
    

    2、抓取所有经过指定网络接口上的数据包

    [root@qfedu.com ~]# tcpdump -i eth0
    

    3、抓取所有经过 eth0,目的或源地址是 192.168.152.255 的网络数据:

    [root@qfedu.com ~]# tcpdump -i eth0 host 192.168.152.100
    

    4、抓取主机192.168.152.255和主机192.168.152.61或192.168.152.95的通信:

    [root@qfedu.com ~]# tcpdump host 192.168.152.100 and 192.168.152.101  (或者用 or) 
    

    5、抓取主机192.168.1523.210除了和主机192.168.152.61之外所有主机通信的数据包:

    [root@qfedu.com ~]# tcpdump -n host 192.168.152.100 and ! 192.168.152.101
    

    6、抓取主机192.168.152.255除了和主机192.168.152.61之外所有主机通信的ip包

    [root@qfedu.com ~]# tcpdump ip -n host 192.168.152.100 and ! 192.168.152.101
    

    7、抓取主机192.168.152.3发送的所有数据:

    [root@qfedu.com ~]# tcpdump -i eth0 src host 192.168.152.100 (注意数据流向)
    

    8、抓取主机192.168.152.3接收的所有数据:

    [root@qfedu.com ~]# tcpdump -i eth0 dst host 192.168.152.100 (注意数据流向)
    

    9、抓取主机192.168.152.3所有在TCP 80端口的数据包:

    [root@qfedu.com ~]# tcpdump -i eth0 host 192.168.152.3 and tcp port 80
    

    10、抓取HTTP主机192.168.152.3在80端口接收到的数据包:

    [root@qfedu.com ~]# tcpdump -i eth0 host 192.168.152.3 and dst port 80
    

    11、抓取所有经过 eth0,目的或源端口是 25 的网络数据

    [root@qfedu.com ~]# tcpdump -i eth0 port 25
    #源端口
    [root@qfedu.com ~]# tcpdump -i eth0 src port 25
    #目的端口
    [root@qfedu.com ~]# tcpdump -i eth0 dst port 25 # 网络过滤
    

    12、抓取所有经过 eth0,网络是 192.168上的数据包

    [root@qfedu.com ~]# tcpdump-i eth0 net 192.168
    [root@qfedu.com ~]# tcpdump -i enh0 src net 192.168
    [root@qfedu.com ~]# tcpdump -i eth0 dst net 192.168 
    [root@qfedu.com ~]# tcpdump-i eth0 net 192.168.152
    [root@qfedu.com ~]# tcpdump -i eth0 net 192.168.152.0/24
    

    13、协议过滤

    [root@qfedu.com ~]# tcpdump -i eth0 arp
    [root@qfedu.com ~]# tcpdump-i eth0 ip
    [root@qfedu.com ~]# tcpdump -i eth0 
    [root@qfedu.com ~]# tcptcpdump -i eth0 udp
    [root@qfedu.com ~]# tcpdump -i eth0 icmp
    

    14、抓取所有经过 eth0,目的地址是 192.168.152.254 或 192.168.152.200 端口是 80 的 TCP 数据

    [root@qfedu.com ~]# tcpdump -i eth0 '((tcp) and (port 80) and ((dst host 192.168.152.254) or (dst host 192.168.152.200)))
    

    15、抓取所有经过 eth0,目标 MAC 地址是 00:01:02:03:04:05 的 ICMP 数据

    [root@qfedu.com ~]# tcpdump -i eth1 '((icmp) and ((ether dst host 00:01:02:03:04:05)))
    

    16、抓取所有经过 eth0,目的网络是 192.168,但目的主机不是 192.168.152.200 的 TCP 数据

    [root@qfedu.com ~]# tcpdump -i eth0 '((tcp) and ((dst net 192.168) and (not dst host 192.168.152.200)))'
    

    17、只抓 SYN 包

    [root@qfedu.com ~]# tcpdump -i eth0 'tcp[tcpflags] =tcp-syn
    

    18、抓 SYN, ACK

    [root@qfedu.com ~]# tcpdump -i eth0 'tcp[tcpflags]'
    

    19、抓 SMTP 数据,抓取数据区开始为”MAIL”的包,”MAIL”的十六进制为 0x4d41494c

    [root@qfedu.com ~]# tcpdump -i eth0 '((port 25) and (tcp[(tcp[12]>>2):4] = 0x4d41494c))'
    

    20、抓 HTTP GET 数据,”GET “的十六进制是 0x47455420

    [root@qfedu.com ~]# tcpdump -i eth0 'tcp[(tcp[12]>x2):4] =0x47455429'
    # 0x4745为"GET"前两个字母"GE",0x4854为"HTTP"前两个字母"HT"
    [root@qfedu.com ~]# tcpdump -XvvennSs 0 -i eth0  tcp[20:2]=0x4745 or tcp[20:2]=0x4854
    

    21、抓 SSH 返回,”SSH-“的十六进制是 0x5353482D

    [root@qfedu.com ~]# tcpdump -i eth0 'tcp[(tcp[12]2):4]-0x5353482D'
    # 抓老版本的SSH返回信息,如"SSH-1.99.."
    [root@qfedu.com ~]# tcpdump -i eth0 (tcp (tcp[12]>>2):4] = 0x5353482D) and (tcp[((tcp[12]>2)+4):2] = 0x312E3)'
    

    22、高级包头过滤如前两个的包头过滤,首先了解如何从包头过滤信息:

    proto[x:y]  # :过滤从x字节开始的y字节数。比如ip[2:2]过滤出3、4字节(第二字专从研始排)
    操作符: >, =,
    抓取端口大于1024的TCP数据包
    [root@qfedu.com ~]# tcpdump -i eth0 'tcp[0:2] > 1024‘
    

    23、抓 DNS 请求数据

    [root@qfedu.com ~]# tcpdump -i eth0 udp dst port 53
    

    24、其他-c 参数对于运维人员来说也比较常用,因为流量比较大的服务器,靠人工 CTRL+C 还是抓的太多,于是可以用-c 参数指定抓多少个包。

    [root@qfedu.com ~]# time tcpdump -nn -i eth0 'tcp[tcpflags] = tcp-syn' -C 10000 > /dev/null
    上面的命令计算抓10000个SYN包花费多少时间,可以判断访问量大概是多少。实时抓取端口号8000的GET包,然后写入GET.log
    [root@qfedu.com ~]# tcpdump -i eth0 '((port 8000) and (tcp[(tcp[12]>>2):4]=0x47455420))' -nnAL -w /tmp/GET.log
    

    6、Tcpdump 抓包示例

    想抓取访问某个网站时的网络数据。比如网站 http://www.baidu.com/ 怎么做?

    1、通过tcpdump截获主机 www.baidu.com 发送与接收所有的数据包

    [root@qfedu.com ~]# tcpdump -i eth0 host www.baidu.com
    

    2、访问这个网站

    [root@qfedu.com ~]# wget www.baidu.cn
    查看控制台输出
    确认序列号ack为何是1。这是相对值,如何显示绝对值
    [root@qfedu.com ~]# tcpdump -S -i eth0 host www.baidu.com
    [root@qfedu.com ~]# wget www.baidu.com
    再次查看控制输出
    

    3、想要看到详细的http报文。怎么做?

    [root@qfedu.com ~]# tcpdump -A -i eth0 host www.baidu.com
    将抓取的结果存到文件,比如文件file1
    [root@qfedu.com ~]# tcpdump -A -i eth0 -w filel host www.baidu.com
    如何读取这个文件的基本信息 
    [root@qfedu.com ~]# tcpdump -r filel
    想要了解更多,比如上面的http报文 
    [root@qfedu.com ~]# tcpdump -A -r filel
    也同时想要将确认序列号ack打印成绝对值 
    [root@qfedu.com ~]# tcpdump -AS -r filel
    注:无参数的选项比如-A,-S,-e,等。均可以共用一个减号 'src host www.baidu.cn' 属于expression ,如果太长,可以用单引号括起来:
    [root@qfedu.com ~]# tcpdump -i eth0 'src host www. baidu.com'
    

    4、分析抓取到的报文

    16:50:11.916308 IP 192.168.152.3.52346 > 61.135.169.121.http: Flags [P.], seq 1888894293:1888894434, ack 2526934942, win 8192, Length 14 1: HTTP: GET/ HTTP/1.1
    
    第一列是时间戳:时、分、秒、微秒
    第二列是网际网路协议的名称
    第三列是报文发送方的十进制的网际网路协议地址,以及紧跟其后的端口号(偶尔会是某个协议名如http,如果在此处仍然显示端口号加上-n选项
    第四列是大于号
    第五列是报文接收方的十进制的网际网路协议地址,以及紧跟其后的端口号(偶尔会是某个协议名如http,如果在此处仍然显示端口号加上-n选项)
    第六列是冒号第七列是Flags标识,可能的取值是[S.] [] [P.] [F.]
    第八、九、.…列是tcp协议报文头的一些变量值:
    seq是请求同步的序列号
    ack是已经同步的序列号
    win是当前可用窗口大小
    length是tcp协议报文体的长度
    如果加入了-5选项,会看到的seg, ack是两个冒号分割的值,分别表示变更前后的值。
    

    7、Tcpdump 抓取 TCP 包分析

    TCP传输控制协议是面向连接的可靠的传输层协议,在进行数据传输之前,需要在传输数据的两端(客户端和服务器端)创建一个连接,这个连接由一对插口地址唯一标识,即是在IP报文首部的源IP地址、目的IP地址,以及TCP数据报首部的源端口地址和目的端口地址。TCP首部结构如下:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-42excr6h-1608122997108)(assets/image-20200304004851192.png)]

    注意:通常情况下,一个正常的TCP连接,都会有三个阶段:1、TCP三次握手;2、数据传送;3、TCP四次挥手

    其中在TCP连接和断开连接过程中的关键部分如下:

    • 源端口号:即发送方的端口号,在TCP连接过程中,对于客户端,端口号往往由内核分配,无需进程指定;

    • 目的端口号:即发送目的的端口号;

    • 序号:即为发送的数据段首个字节的序号;

    • 确认序号:在收到对方发来的数据报,发送确认时期待对方下一次发送的数据序号;

    • SYN:同步序列编号,Synchronize Sequence Numbers;

    • ACK:确认编号,Acknowledgement Number;

    • FIN:结束标志,FINish;

    1、TCP三次握手

    三次握手的过程如下:

    • step1. 由客户端向服务器端发起TCP连接请求。Client发送:同步序列编号SYN置为1,发送序号Seq为一个随机数,这里假设为X,确认序号ACK置为0;
    • step2. 服务器端接收到连接请求。Server响应:同步序列编号SYN置为1,并将确认序号ACK置为X+1,然后生成一个随机数Y作为发送序号Seq(因为所确认的数据报的确认序号未初始化);
    • step3. 客户端对接收到的确认进行确认。Client发送:将确认序号ACK置为Y+1,然后将发送序号Seq置为X+1(即为接收到的数据报的确认序号);

    为什么是三次握手而不是两次对于step3的作用,假设一种情况,客户端A向服务器B发送一个连接请求数据报,然后这个数据报在网络中滞留导致其迟到了,虽然迟到了,但是服务器仍然会接收并发回一个确认数据报。但是A却因为久久收不到B的确认而将发送的请求连接置为失效,等到一段时间后,接到B发送过来的确认,A认为自己现在没有发送连接,而B却一直以为连接成功了,于是一直在等待A的动作,而A将不会有任何的动作了。这会导致服务器资源白白浪费掉了,因此,两次握手是不行的,因此需要再加上一次,对B发过来的确认再进行一次确认,即确认这次连接是有效的,从而建立连接。

    对于双方,发送序号的初始化为何值有的系统中是显式的初始化序号是0,但是这种已知的初始化值是非常危险的,因为这会使得一些黑客钻漏洞,发送一些数据报来破坏连接。因此,初始化序号因为取随机数会更好一些,并且是越随机越安全。

    1.Tcpdump抓TCP三次握手抓包分析
    [root@qfedu.com ~]# tcpdump host 192.168.152.3 -i lo and tcp port 8080 
    # 接着再运行:
    [root@qfedu.com ~]# curl http://192.168.152.3:8080/atbg/doc
    
    2.控制台输出
    # TCP三次握手start
    16:00:13.486776 IP 192.168.152.3.61725 > 192.168.152.3.8080: Flags [S], seq 1944916150,win 65535,options [mss 16344 ,nop ,wscale 5 , nop,nop,TS val 906474698 ecr O,sackoK,eol], length 0
    16:00:13.486850 IP 192.168.152.3.8080 > 192.168.152.3.61725: Flags [S.], seq 1119565918, ack 1944916151, win 65535, options_ [mss 16344 ,nop,wscale 5,nop ,nop,TS val 906474698 ecr 906474698, sackOK, eol], length 0
    16:00:13.486860 IP 192.168.152.3.61725 > 192.168.152.3.8080: Flags [.],ack 1119565919,win 12759,options [nop ,nop,TS val 906474698 ecr 906474698], length0
    16:00:13. 486868 IP 192.168.152.3.8080 > 192.168.152.3.61725: Flags [.], ack 1944916151, win 12759, options [nop ,nop,TS val 906474698 ecr 906474698], length0
    # TCP三次握手end
    #传输数据start
    16:00:13.486923 IP 192.168.152.3.61725 > 192.168.152..3.8080: Flags [P.], seq 1944916151:1944916238,ack 1119565919, win 12759,options [nop,nop,TS val 906474698 ecr 906474698], length 87: HTTP: GET /atbg/doc HTTP/1.1
    16:00:13. .486944 IP 192.168.152.3.8080 > 192.168.152.3.61725: FLags [.],ack 1944916238, win 12756,options [nop ,nop,TS val 906474698 ecr 906474698], length0
    16:00:13.489750 IP 192.168.152.3.8080 > 192.168.152.3.61725: Flags [P.], seq 1119565919:1119571913, ack 1944916238, win 12756, options [nop , nop,p,ts val 906474701 ecr 906474698], length 5994: HTTP: HTTP/1.1 200 0K
    16:00:13.489784 IP 192.168.152.3.61725 > 192.168.152.3.8080: FLags [.],ack 1119571913, win 12572, options [nop,nop,TS val 906474701 ecr 906474701], length❷
    #传输数据end
    # TCP四次挥手start
    16:00:13.490836 IP 192.168.152.3.61725 > 192.168.152.3.8080: Flags_ [F.], seq 1944916238, ack 1119571913,win 12572,options [nop,nop,TS val 906474702 ecr906474701],length 0
    16:00:13490869 IP 192.168.152.3. 8080 > 10.37. 63.3.61725: Flags [.],ack 1944916239, win 12756, options [nop ,nop,TS val 906474702 ecr 906474702], length0
    16:00:13.490875 IP 192.168.152.3.61725 > 192.168.152.3.8080: Flags [.], ack_ 1119571913, win 12572, options [nop,nop,TS val 906474702 ecr 906474702], length0
    16:00:13.491004 IP 192.168.152.3.8080 > 192.168.152.3.61725: Flags [F.],seq 1119571913, ack 1944916239,win 12756, options [nop,nop,TS val 906474702 ecr906474702],length
    16:00:13.491081 IP 10.37. 63.3.61725 > 192.168.152.3. 8080: Flags [.],ack 1119571914, win 12572, options [nop ,nop,TS val 906474702 ecr 906474702], length0
    # TCP四次挥手end
    

    每一行中间都有这个包所携带的标志:

    • S=SYN,发起连接标志。
    • P=PUSH,传送数据标志。
    • F=FIN,关闭连接标志。
    • ack,表示确认包。
    • RST=RESET,异常关闭连接。
    • .,表示没有任何标志。

    第1行:16:00:13.486776,从192.168.152.3(client)的临时端口61725向192.168.152.3(server)的8080监听端口发起连接,client初始包序号seq为1944916150,滑动窗口大小为65535字节(滑动窗口即tcp接收缓冲区的大小,用于tcp拥塞控制),mss大小为16344(即可接收的最大包长度,通常为MTU减40字节,IP头和TCP头各20字节)。【seq=1944916150,ack=0,syn=1】

    第2行:16:00:13.486850,server响应连接,同时带上第一个包的ack信息,为client端的初始包序号seq加1,即1944916151,即server端下次等待接受这个包序号的包,用于tcp字节流的顺序控制。Server端的初始包序号seq为1119565918,mss也是16344。【seq=1119565918,ack=1944916151,syn=1】

    第3行:15:46:13.084161,client再次发送确认连接,tcp连接三次握手完成,等待传输数据包。【ack=1119565919,seq=1944916151】

    2、TCP四次挥手

    连接双方在完成数据传输之后就需要断开连接。由于TCP连接是属于全双工的,即连接双方可以在一条TCP连接上互相传输数据,因此在断开时存在一个半关闭状态,即有有一方失去发送数据的能力,却还能接收数据。因此,断开连接需要分为四次。主要过程如下:

    • step1. 主机A向主机B发起断开连接请求,之后主机A进入FIN-WAIT-1状态;
    • step2. 主机B收到主机A的请求后,向主机A发回确认,然后进入CLOSE-WAIT状态;
    • step3. 主机A收到B的确认之后,进入FIN-WAIT-2状态,此时便是半关闭状态,即主机A失去发送能力,但是主机B却还能向A发送数据,并且A可以接收数据。此时主机B占主导位置了,如果需要继续关闭则需要主机B来操作了;
    • step4. 主机B向A发出断开连接请求,然后进入LAST-ACK状态;
    • step5. 主机A接收到请求后发送确认,进入TIME-WAIT状态,等待2MSL之后进入CLOSED状态,而主机B则在接受到确认后进入CLOSED状态;

    为何主机A在发送了最后的确认后没有进入CLOSED状态,反而进入了一个等待2MSL的TIME-WAIT主要作用有两个:

    第一,确保主机A最后发送的确认能够到达主机B。如果处于LAST-ACK状态的主机B一直收不到来自主机A的确认,它会重传断开连接请求,然后主机A就可以有足够的时间去再次发送确认。但是这也只能尽最大力量来确保能够正常断开,如果主机A的确认总是在网络中滞留失效,从而超过了2MSL,最后也无法正常断开;

    第二,如果主机A在发送了确认之后立即进入CLOSED状态。假设之后主机A再次向主机B发送一条连接请求,而这条连接请求比之前的确认报文更早地到达主机B,则会使得主机B以为这条连接请求是在旧的连接中A发出的报文,并不看成是一条新的连接请求了,即使得这个连接请求失效了,增加2MSL的时间可以使得这个失效的连接请求报文作废,这样才不影响下次新的连接请求中出现失效的连接请求。

    为什么断开连接请求报文只有三个,而不是四个因为在TCP连接过程中,确认的发送有一个延时(即经受延时的确认),一端在发送确认的时候将等待一段时间,如果自己在这段事件内也有数据要发送,就跟确认一起发送,如果没有,则确认单独发送。而我们的抓包实验中,由服务器端先断开连接,之后客户端在确认的延迟时间内,也有请求断开连接需要发送,于是就与上次确认一起发送,因此就只有三个数据报了。

    3、Wireshark 分析 Tcpdump 抓包结果

    1、Tcpdump 抓包

    tcpdump host 10.37.63.3 -i lo and port 8080 -n -w ./Desktop/tcpdump_10.37.63.3_8080_20160525.cap
    # 然后再执行curl
    curl http://10.37.63.3:8080/atbg/doc
    

    2、Wireshark 分析

    使用Wireshark打开tcpdump_10.37.63.3_8080_20160525.cap文件

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ymVN4l2x-1608122997113)(assets/image-20200304005033561.png)]

    • No. 1-4 行:TCP三次握手环节;
    • No. 5-8 行:TCP传输数据环节;
    • No. 9-13 行:TCP四次挥手环节;

    3、查看 http 请求和响应的方法

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3ugKxuCe-1608122997115)(assets/image-20200304005118038.png)]

    弹窗如下图所示,上面红色部分为请求信息,下面蓝色部分为响应信息:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xL0WCm3P-1608122997117)(assets/image-20200304005147620.png)]

    以上是 Wireshark 分析 tcpdump 的简单使用,Wireshark更强大的是过滤器工具,大家可以自行去多研究学习Wireshark.

    展开全文
  • Linux服务器端网络抓包分析实战

    千次阅读 2019-02-07 17:39:14
    本文实战了CentOS7下的网络抓包,以及windows下通过wireshark分析抓包数据
  • 该文档详细描述了wireshark抓包分析tcp三次握手四次挥手详解及网络命令,亲自整理,适合新手借鉴
  • 可以导入导出其他捕捉程序支持的包数据格式 可以通过多种方式过滤包 多种方式查找包 通过过滤以多种色彩显示包 创建多种统计分析 …还有许多 不管怎么说,要想真正了解它的强大,您还得使用它才行
  • Java抓包+分析网络数据包

    千次阅读 热门讨论 2020-01-16 14:44:33
              Java抓包+分析网络数据包   本程序基于java语言,需安装winpcap和配置Jpcap.jar库文件(需要的可以评论留下邮箱),成功实现了对本主机网卡接口的显示和网络数据包的抓取,并调用函数对IP...
  • 网络抓包,并分析的源码,用c写的,模仿比较好的抓包工具wireshark
  • 分享一个好用的网络网络抓包分析工具-NetAnalyzer

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 55,427
精华内容 22,170
关键字:

网络抓包数据分析