数据包分析与网络协议

312 阅读5分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

数据包分析,也叫数据包嗅探或协议分析,是指捕获和解析网络上传输数据的过程,通常是为了更好地了解网络上正在发生的事。分析这一过程需要借助工具,数据包嗅探器就是这样一种用来在网络媒介上捕获原始传输数据的工具。

数据包分析简介

通常分析数据包主要是为了以下目的:

  1. 了解网络特征(主要是学习协议)
  2. 查看通信主体(可用于取证)
  3. 了解哪些应用在占用网络带宽
  4. 识别网络使用的高峰期
  5. 查找可能攻击或恶意活动
  6. 寻找不安全以及滥用网络资源的应用 目前市面上有许多数据包嗅探器,现在也叫抓包软件,有免费的也有商业的。流行的有tcpdump、OmniPeek、Wireshark等。我们在选择一块嗅探软件时,需要考虑一些因素。例如以下几种情况:
  7. 支持的协议:对协议解析和支持范围是怎样的。一般的软件都能解析常见的网络层协议,比如IPv4、ICMP等;传输层协议,比如TCP和UDP;应用层协议,比如DHCP、DNS、HTTP等。可能一些比较老的工具不支持比较小众或者比较新的协议,比如IPv6、SMBv2、SIP等。如果你需要分析特定的协议,需要看看你选择的工具支不支持。
  8. 用户友好性:这个好理解,比如界面布局、安装容易程度、操作系统的跨平台性等等。这里要注意一下跨平台,假设你使用软件A,你电脑用的是Windows系统,如果你熟悉之后,后来又因为某种原因换了Mac电脑,而软件A又没有Mac版的,那么可能会带来不便。
  9. 费用,有的软件价格高昂,如果经济上不支持,那么还是得另寻出路。一些免费软件功能上也可以与商业产品媲美,他们的主要差别可能在报告引擎上。商业软件有很多花里胡哨的报告生成模块,而免费软件一般缺乏。
  10. 技术支持。这点往往被我们忽略。我们使用软件时会遇到很多问题,需要得到一些技术指导。我们往往会寻找开发人员手册、论坛、博客园、csdn等地方去查看。如果软件特别小众,可能网上相关的文档和问答就很少,所以选择工具时也得考虑这一点。

嗅探器工作原理

嗅探过程涉及到软件和硬件之间的协作。大致为3个步骤:

第一步,收集。嗅探软件从网络线缆或者无线网络上收集原始的二进制数据。通常情况下,将选定的网卡设置为混杂模式来完成抓包。在混杂模式下,网卡将抓取一个网段上所有的网络通信流量,而不仅是发给自己的数据包。

第二步,转换。将捕获的二进制数据转换为可读形式。网络上的数据包将以一种基础的解析形式展示。

第三步,分析。对捕获和转换后的数据进行真正的深入分析。软件一般会识别和验证它们的协议,然后按照协议格式解析各个属性和字段,最后展示出来。

通信协议

协议是为了让不同设备进行通信。主要考虑到平台的异构性,不同的CPU架构,比如x86和ARM、不同的操作系统,比如Windows、Linux、Mac等等。他们之间都可以进行互相通信。这就需要一套共同的网络协议。比如上面提到的那些。协议栈就是一组网络协议进行协同工作的组合。

网络协议通常要考虑以下问题:

  1. 发起连接。是由客户端发起还是服务端发起?在真正通信之前需要交换哪些信息?
  2. 协商连接参数。通信是否需要加密,加密密钥如何在通信双方进行传输?
  3. 数据格式。通信数据在数据包中如何排列,数据到达后又以怎样的顺序处理。
  4. 错误检测和校正。当数据包太长时间没到目的地或者到达目的地该如何处理,当客户端暂时无法和服务器建立通信又该如何恢复连接。
  5. 连接终止。一台主机如何告知另一台主机通信结束?

为此国际标准化组织提出了OSI模型。

OSI参考模型最初在1983年由国际标准化组织出版,标准号为ISO 7498。OSI参考模型只是一个行业建议标准,协议开发并不需要严格地遵守它。

image.png

OSI模型不同层次的协议在数据封装下进行传输。协议栈中的每层协议都负责在传输数据上增加一个协议头部或尾部,其中包含了使协议栈之间能够进行通信的额外信息。例如,当传输层从会话层接收数据时,它会在将数据传递到下一层之前,增加自己的头部信息。

接收计算机收到PDU后,逐层剥去协议头部和尾部。