热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

wireshark捕获http协议_Wireshark之抓包原理剖析

1.网卡网卡(NIC)是局域网(LAN,全称是:LocalAreaNetWork)中连接计算机和传输介质的接口,它工作在物理

1. 网卡

网卡(NIC)是局域网(LAN,全称是:Local Area NetWork)中连接计算机和传输介质的接口,它工作在物理层(L1)。它是处于主机箱内的一块网络接口板,因为它的存在,从而使得本机能够与外部局域网进行连接通信。任何一台计算机,想要进行上网、通信功能,就必须使用网卡。网卡的书面语是网络适配器/网络接口卡。如图1所示,为Inter I250网卡示意图。

v2-1eb0219c9e5c3ad6a0e5c6e52b541a33_b.jpg


                         图1 Intel i350网络适配器(网卡)

  • 局域网LAN
         用于机构内部通信与信息传递。通常使用以太网技术在公司、学习等局部的范围内部构建一个网络。LAN可以分为有线(使用双绞线,光纤、电缆等)LAN和无线(使用电波)LAN。
  • 网卡位于主机中的位置
v2-ea163953f43bd2af50e14bf71cbc9aa7_b.jpg


                        图2 主机中的网卡位置

1.1 网卡工作原理

      LAN(局域网)可以使用以太网帧格式的以太网(Ethernet)协议标准进行通信。同时在网络中还可以使用支持该标准协议的交换机、路由器等。在使用线缆连接局域网LAN时候,个人计算机可以使用以太网(Ethernet)双绞线连接到交换机,然后交换机连接到路由器,而最终路由器处理跨越异构子网和发送至互联网进行通信。以太网上传输的数据在数据链路层(TCP/IP网络模型或OSI(Open Systems Interconnection)开发系统互联-网络模型)以数据帧(以太网帧-Ethernet II格式)的形式存在。当本机发送数据时候,会将数据帧/MAC帧并行写到网卡的缓存中,然后网卡对缓存中要传输的数据进行编码(常见的编码格式有:曼彻斯特、4B5B、4D-PAM5等,如图2所示),并最终转换为传输媒介UTP线缆上的电气信号进行网络传输。

v2-98bd1f7de092fe5f60ed5706862874fa_b.jpg


                         图3 不同传输速率的以太网加密方式

     接收数据时候,则采用相反的一个处理流程。以太网采用小端(Little Endian)顺序来传输比特流,即对于一个字节(8bit)的数据,会从最低位开始传送。

  • 小端模式
       高字节存放在高存储器地址,低字节存放在低存储器地址

网路上传输的二进制数据使用的字节排列顺序也称呼为网路字节序,TCP/IP网路模型中数据是采用大端(Big Endian)顺序来传输数据。

  • 大端模式
       低字节存放在高存储器地址,高字节存放在低存储器地址

这也就是为什么在网络编程的时候,需要对数据进行网络字节序的转换再进行发送的缘故。假如现在有一个点分十进制表示的IPv4地址192.168.1.254, 那么在大端模式和小端模式下内存中数据的存放顺序如下图3所示。

v2-f71c41355db6c29369c1fb6de862b664_b.png


                         图4 大端与小端存放数据顺序的比较

1.2 网卡分类

     网卡种类很多,若按照数据链路层的控制来分,则有:以太网卡、令牌环网卡和ATM网卡等;若是按照物理层来分,则有无线网卡、光线网卡、同轴电缆网卡等。它们在数据链路层的控制、寻址及帧结构不同;物理上的链接方式不同、编码方式不同、信号传输介质不同以及电平高低位不同等。

1.3 网卡产商

     网卡生产厂商比较有名的几个分别是:Intel、Realtek、Broadcom、VIA和SIS。最为常用的要数Intel了,其官网地址《英特尔® 以太网网络适配器》, 可以看到当前形形色色的网路适配器。如图3所示。里面有对各种网卡参数,如传输速率、网卡工作模式(VF混杂模式,非混杂模式)、CPU消耗等详细参数。

v2-a90251ebd16341c8715b99c6f69dbe6a_b.jpg


                         图5 Intel 各种类型的网路适配器(网卡)

2. Wireshark简介

     协议分析(Protocol Analysis)(也称呼为网络分析-Network Analysis)是进入网络通信系统,捕获穿行在网络中的数据,搜集网络统计信息,将数据包解码为可阅读形式的过程。Wireshark 是使用最为广泛的网络协议分析器,从本质上来说,协议分析器是窃听网络通信。Wireshark通常被用来 诊断网络通信故障、测试网络、搜集网络性能趋势数据等 。其官网是《Wireshark》, 在官网的首页有下面这一段描述:

v2-97d12b7a9a112251a8f089f9b1e38573_b.jpg


                         图6 Wireshark官网描述

     总而言之,Wireshark就一个用于分析网络协议的工具。通常将分析器安装在网络上,并配置为捕获存在问题的通信序列。通过读取电缆系统中传输的数据包,能够识别出通信过程中存在的缺陷和错误。

2.1 Wireshark协议分析器原理图

     网络上传输的数据包通过网卡进入到网络协议分析器系统。协议分析器所使用的网卡和网卡 驱动程序必须能够支持“混杂模式操作(Promiscuous Mode Operation)”。因为只有运行在混杂模式下的网卡才能够捕获到网络中传输到其他设备的“广播数据包、多播数据包、单播数据包以及错误数据包等等”,两者一起协同工作。图7为分析器原理图。

v2-6b18ff05b5b3ef0b0407b69cf834be64_b.jpg


                                 图7 协议分析器原理图和要素

      正如上面所描述,分析器所使用的网卡需要支持“混杂模式”,这样才能使用分析器抓取网卡上面的流通的数据包。如 Intel i325 网卡官方说明书中就有特别强调过该网卡支持:VF Promiscuous modes(VF 混杂模式),表明该Intel i325网卡处于“混杂模式”工作状态,支持 VLAN ,单播,多播等。如图8所示。

v2-3964eeccf2dcbeef1b526a1ee257017e_b.jpg


                               图8 Intel i325网卡支持VF混杂模式

2.1.1 混杂模式与监视模式区别

      要弄清混杂模式和监视模式之间的区别:监视模式仅用于无线卡,混杂模式用于无线和有线。 监控模式使卡无需关联接入点即可侦听无线数据包。 混杂模式使卡可以侦听所有数据包,即使不是针对其的数据包。

2.1.2 数据包过滤器

     包过滤器可以告知协议分析器想要捕获的数据包类型。上面的图7展示了数据包流的流动方向,如果想要捕获特定类型的协议数据包,则可以在图7中的“捕获过滤器”处设置一个特定的过滤器,则最终经过该过滤器的数据包流便为我们想要的特定类型的数据包流。即位于“捕获过滤器”上层的数据。此处的捕获过滤器也称为预过滤器。对应Wireshark中的 菜单栏[捕获]-[捕获过滤器], 或是Wireshark主界面处的捕获过滤器功能。如图9所示。

v2-51f10cf5d15f1d881e727261c796b550_b.png


                                图9 Wireshark中的捕获过滤器

通过图7可以看到,在“捕获过滤器”的上一层中,还有一个“显示过滤器”, 这里的显示过滤器类似于Wireshark界面中左上角的Filter功能。如图10所示,使用“显示过滤器”可以更容易的解析出我们想要的某个具体的数据包。因为前面的“捕获过滤器”得到的数据包是大批量的,因此需要使用“显示过滤器”来筛选出我们最终需要的某条具体数据包信息。

v2-e5b4a6b4d984a772001e1fd3b24f3daa_b.jpg


                               图10 显示过滤器和Wireshark中的Filter功能

显示过滤器支持若干的过滤选项:源MAC, 目的MAC, 源IP, 目的IP, TCP/UDP传输协议,应用层协议(HTTP, DHCP等待), 源端口Port, 目的端口Port等。如图11所示。

v2-26d53f054288e96dff21122c2ce5ceee_b.jpg


                               图11 Wireshark中的显示过滤器

  • 显示过滤器
    Wireshark官网描述到:
         Wireshark’s most powerful feature is its vast array of display filters (over 242000 fields in 3000 protocols as of version 3.0.6). They let you drill down to the exact traffic you want to see and are the basis of many of Wireshark’s other features, such as the coloring rules.(Wireshark最强大的功能是其广泛的显示过滤器列表(从3.0.6版开始,共有3000协议的242000个字段)。它们使您能够深入了解想要查看的确切流量,并且是Wireshark其他功能(例如着色规则)的基础)。

2.1.3 跟踪缓存区

     每一个协议分析器内部都维护有一个“跟踪缓冲区”内存空间区域。它用于暂存从网络上面复制而来的数据包流。数据包流从“捕获过滤器”流入到协议分析器的跟踪缓存区中,该缓冲区中的数据包能够在被捕获之后立即查看或是以其他文件格式保持到磁盘上面。比如Wireshark协议分析器工具,打开之后,点击[开始捕获], 然后便可立刻查看捕获到的数据包信息。此时的这些数据包就是放在协议分析器的“跟踪缓冲区”中的。Wireshark的内置跟踪缓冲区大小,暂时没有找到资料信息,不过肯定是有一个大小限制的。

2.1.4 解码功能

     协议分析器的解码功能使得我们可以直观且以可读的方式去读取,分析跟踪缓冲区中的数据包。解码是数据包的翻译工具。如图12所示,协议分析器的解码功能能够分离数据包的首部、源ip地址、目的ip地址、报文协议、数据包长度、数据包的详细信息等等。如果没有协议分析器的解码功能,若想要查看和阅读数据包,还需借助其他工具。因此,协议分析器的解码功能为我们提供了极大的便利。

v2-d45a8797ac9b27436d713d33b0cbc71d_b.jpg


                           图12 Wireshark协议分析器的解码功能

3. 总结

     本节提到了计算机中网卡所扮演的重要角色,以及说明了网卡对于每一台计算机上网通信的功能与作用。正因为网卡的存在,才使得我们计算和能够上网,并且与其他计算机之间进行通信。而Wireshark协议分析器主要是用来对网络中流入到本机计算机的数据包进行捕获并分析,因此它和网卡的关系极为亲近,没有网卡就没有协议分析器。这也是本文在讲解Wireshark工具之前先对网卡进行说明的重要原因。


本文来自个人博客 · 【此处不归牛顿管】



推荐阅读
author-avatar
katsulyl_266
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有