• [Wireshark Lab v8.1] Lab1:Getting Started


    [Wireshark Lab v8.1] Lab 翻译与解题.
    以下实验步骤均来自实验指导手册。

    实验指导手册下载地址:Jim Kurose Homepage (umass.edu)

    Lab1:Getting Started

    一个人对网络协议的理解通常很大程度的依靠于在“实践中查看协议”和“玩弄协议”. 比如观察两个协议实体中报文序列是如何交换的, 钻研协议工作的细节, 或者操作协议使得产生特定行为并观察这些行为的后果. 这些操作可以在模拟环境下实现也可以在一个”真实“的网络环境, 如因特网中. 在本课程你要完成的 Wireshark lab 实验中, 你将要使用你自己的电脑在不同场景下运行各种类型的网络程序. 你将会“在实战中”观察到你电脑中的网络协议, 关于它们是如何在因特网中交互和通过协议实体执行来交换数据的. 因此, 你和你的电脑将会成为一个”实验者”, 通过实做来观察和学习.

    在第一个 Wireshark lab 中, 你将熟悉 Wireshark, 并使用它来进行简单的抓包和分析.

    观察协议执行实体间信息交换的一个基本工具是“pack sniffer”, 如其名称, 一个包嗅探器捕捉(嗅探)你电脑所发出和接收到的报文, 并通常将捕获到信息的不同协议的字段打印或存储下来. 报文嗅探器本身是被动的, 它观察应用和协议所接受和发送的报文, 但自身不主动发送报文, 接受到的报文也不会显式发送给嗅探器. 相反的, 报文嗅探器接受到一份应用与协议发送/接收报文的拷贝.

    图1展示了报文嗅探器的结构, 在图的左侧是运行在电脑上的协议栈(本例子中是因特网协议栈)和应用(如一个web浏览器或邮件客户端). 虚线框住的是一个报文嗅探器架构, 它包含两部分: 报文捕捉库接受电脑中通过特定接口所发送和接收的链接层(如WiFI或以太网)所有帧的拷贝. 回忆书中1.5节的讨论(图1.24), 高等级协议如HTTP,FTP,TCP,UDP,DNS和IP所交换的报文最终都被包装进链接层的帧中, 从而传输在如以太网电缆或 802.11 WIFI 广播这样的物理介质中. 因此捕捉链接层帧就可以获取电脑执行的所有协议和应用收发的信息.

    p1

    报文嗅探器的第二个组件是报文分析, 它展示协议报文中所有的内容. 为了能够这样做, 报文分析器必须理解协议所交换的所有报文的结构. 比如说, 我们对HTTP协议的报文内容感兴趣, 报文分析器就需要理解以太网帧, 从而解析出其中的IP报文, 进一步解析出TCP报文, 最终从TCP报文中提取出HTTP报文. 最终可以对HTTP报文进行解释, 比如报文的开头会包含请求的方法名字符串如“GET”,“POST”或“HEAD”

    我们将会使用 Wireshark, 它允许我们展示协议栈中不同层次的协议所收发的报文. (技术上来说, wireshark是一个报文嗅探器, 它使用计算机上的报文捕获库. 即捕获链路层帧, 但使用统一的名词“报文”来表示链路层帧, 网络层数据报, 传输层包和应用层消息, 我们也遵循这个习惯, 将它们统称为报文.). WireShark 是一个免费的网络协议分析工具, 可以运行在不同的操作系统上. 是这个lab理想的报文分析工具, 首先非常稳定, 有很多用户量且有良好的文档支持, 包括用户文档,man页面和详细的FAQ, 其次功能丰富, 提供上百种协议的分析支持, 且有良好的用户界面. 它能够运行在使用 Ethernet 以太网, PPP, 802.11 和其他许多链路层技术上的计算机.

    获取 Wireshark

    下载链接

    注意为了运行 Wireshark, 计算机需要有 libpcap 或 WinPCap 报文捕捉库的依赖.

    运行 Wireshark

    当你运行 Wireshark 时, 你会得到一个类似于下图的开始屏幕. 不同的 Wireshark 版本会有不同的开屏, 所以如果你的软件没有显示如下画面也不要担心.

    p2

    这个屏幕上没有太多有趣的东西。 但请注意,在 Capture 部分下,有一个所谓的接口列表。 我们从中截取这些屏幕截图的 Mac 电脑只有一个界面——“Wi-Fi en0”(图 2 中的蓝色阴影部分),它是 Wi-Fi 访问的界面。 所有进出这台计算机的数据包都将通过 Wi-Fi 接口,所以我们要在这里捕获数据包。 在 Mac 上,双击此接口(或在另一台计算机上,在启动页面上找到您正在通过其获得 Internet 连接的接口,例如,很可能是 WiFi 或以太网接口,然后选择该接口)。

    让我们来尝试一把 Wireshark 吧!如果您单击其中一个接口开始数据包捕获(即,Wireshark 开始捕获发送到/从该接口发送的所有数据包),将显示如下屏幕,显示有关正在捕获的数据包的信息。开始数据包捕获后,您可以使用 Capture 下拉菜单并选择 Stop(或单击图 2 中 Wireshark 鳍旁边的红色方形按钮)来停止它。 [如果您无法运行 Wireshark,您仍然可以查看在作者(Jim)的一台计算机上捕获的数据包跟踪。您可以下载 zip 文件 并提取跟踪文件 intro-wireshark-trace-1.pcap.

    p3

    现在看起来内容丰富了许多, Wireshark 界面有5个主要的部分组成:

    1. command menus, 包括在窗口最上方的标准下拉菜单, 我们介绍两个菜单, 1. File, 存储和加载捕获的数据, 2. Capture, 开始捕获数据, 也可以使用按钮, 蓝色鲨鱼鳍是开始捕获, 红色方块为停止捕获, 绿色鲨鱼鳍重新捕获, 第四个按钮为设置, 让我们选择输入网卡(通常选 eht0 / Wifi 就好), 输出和其他信息.

    2. packet-listing 窗口: 显示捕获的每个数据包的单行摘要,包括数据包编号(由 Wireshark 分配;请注意,这不是任何协议标头中包含的数据包编号)、捕获数据包的时间、数据包的源地址和目标地址 、协议类型和数据包中包含的协议特定信息。 通过单击列名,可以根据这些类别中的任何一个对数据包列表进行排序。 协议类型字段列出了发送或接收此数据包的最高级别协议,即作为此数据包的源或最终接收器的协议。

    3. packet-header detail 窗口: 提供有关在数据包列表窗口中选择(突出显示)的数据包的详细信息。 (要在数据包列表窗口中选择一个数据包,请将光标放在数据包列表窗口中数据包的单行摘要上,然后单击鼠标左键。)。 这些详细信息包括有关以太网帧的信息(假设数据包是通过以太网接口发送/接收的)和包含此数据包的 IP 数据报。 通过单击数据包详细信息窗口中以太网帧或 IP 数据报行左侧的加号/减号框或右/下三角形,可以扩展或最小化显示的以太网和 IP 层详细信息的数量。 如果数据包已通过 TCP 或 UDP 传输,则还将显示 TCP 或 UDP 详细信息,可以类似地展开或最小化。 最后,还提供了有关发送或接收此数据包的最高级别协议的详细信息。

    4. packet-contents 窗口: 同时以 ASCII 码形式和 16进制形式显示数据包的内容。

    5. packet display filter field, 在功能区按键下面一行, 可以在其中输入协议名称或其他信息,以便过滤显示在数据包列表窗口(以及因此数据包头和数据包内容窗口)中的信息。 在下面的示例中,我们将使用数据包显示过滤器字段让 Wireshark 隐藏(不显示)数据包,除了与 HTTP 消息对应的数据包。

    测试运行 Wireshark

    学习新软件的最好方式就是进行尝试, 首先将你的电脑进行联网, 然后进行下面步骤

    1. 打开浏览器

    2. 打开 Wireshark

    3. 点击设置按钮, 选择好网卡点击开始进行抓包

    4. 您将看到计算机上的接口列表以及迄今为止在该接口上观察到的数据包计数。 Wireshark 现在正在捕获从您的计算机发送/接收的所有数据包!

    5. 一旦开始数据包捕获,就会出现一个类似于图 3 所示的窗口。 此窗口显示正在捕获的数据包。 通过选择捕获下拉菜单并选择停止,或单击红色停止方块,您可以停止数据包捕获, 但先不要这样做。 让我们先捕获一些有趣的数据包。 为此,我们需要生成一些网络流量。 让我们使用 Web 浏览器来执行此操作,该浏览器将使用我们将在课堂上详细学习的 HTTP 协议从网站下载内容。

    6. 当 Wireshark 运行时,在浏览器输入 URL:
      http://gaia.cs.umass.edu/wireshark-labs/INTRO-wireshark-file1.html ,为了显示此页面,您的浏览器将联系 gaia.cs.umass.edu 上的 HTTP 服务器并与服务器交换 HTTP 消息以下载此页面,如书中第 2.2 节所述。 包含这些 HTTP 消息的以太网或 WiFi 帧(以及通过以太网或 WiFi 适配器的所有其他帧)将被 Wireshark 捕获。

    7. 在您的浏览器显示 INTRO-wireshark-file1.html 页面(这是简单的一行祝贺)后,通过在 Wireshark 捕获窗口中选择停止来停止 Wireshark 数据包捕获。 Wireshark 主窗口现在应该类似于图 3。您现在拥有包含计算机和其他网络实体之间交换的所有协议消息的实时数据包数据!与 gaia.cs.umass.edu Web 服务器交换的 HTTP 消息应该出现在捕获的数据包列表中的某个位置。但是还会显示许多其他类型的数据包(例如,参见图 3 中的协议列中显示的许多不同的协议类型)。尽管您采取的唯一行动是下载网页,但显然您的计算机上运行着许多其他用户看不到的协议。随着文本的推进,我们将更多地了解这些协议!现在, 你应该可以看到输入 url 后, 所发出的一系列协议报文. 从而回答经典面试题 url到页面的网络请求流程 .

    8. 在 Wireshark 主窗口顶部的显示过滤器规范窗口中输入“http”(不带引号,小写 - 所有协议名称在 Wireshark 中均为小写,并确保按 Enter/Return 键) . 然后选择应用(在您输入“http”的右侧)或直接回车。 这将导致仅 HTTP 消息显示在数据包列表窗口中。 下面的图 4 显示了将 http 过滤器应用于之前图 3 中所示的数据包捕获窗口后的屏幕截图。另请注意,在 Selected packet details 窗口中,我们选择显示超文本传输协议应用程序消息的详细内容 在 TCP 段中找到,该段位于以太网 II (WiFi) 帧内的 IPv4 数据报内。 关注特定消息、段、数据报和帧级别的内容让我们专注于我们想要查看的内容(在本例中为 HTTP 消息)。

    p4

    1. 找到从您的计算机发送到 gaia.cs.umass.edu HTTP 服务器的 HTTP GET 消息。 (在 Wireshark 窗口(参见图 3 和图 5)的“捕获的数据包列表”部分中查找 HTTP GET 消息,该消息显示“GET”,后跟您输入的 gaia.cs.umass.edu URL。当您选择HTTP GET 消息、以太网帧、IP 数据报、TCP 段和 HTTP 消息头信息将显示在数据包头窗口中[回想一下发送到 gaia.cs.umass.edu Web 服务器的 HTTP GET 消息包含在一个 TCP 段中,该段包含(封装)在一个 IP 数据报中,该数据报封装在一个以太网帧中。如果这个封装过程还不太清楚,请查看文本中的第 1.5 节]。通过单击“数据包详细信息窗口左侧的+'和'-'以及向右和向下箭头,最小化显示的帧、以太网、互联网协议和传输控制协议信息量。最大化显示的有关数据包的信息量HTTP协议。你的Wireshark显示现在应该大致如图 4 所示。(注意,最小化除 HTTP 协议外的其他协议头)

    2. 完成, 退出 Wireshark

    恭喜, 你已经完成了第一个lab

    现在尝试回答下列问题:

    1. 以下哪些协议显示在您的跟踪文件中(即列在 Wireshark“协议”列中):TCP、QUIC、HTTP、DNS、UDP、TLSv1.2?
    2. 从发送HTTP GET消息到收到HTTP OK回复需要多长时间? (默认情况下,数据包列表窗口中时间列的值是自 Wireshark 跟踪开始以来的时间量,以秒为单位。(如果要以时间格式显示时间字段,请选择 Wireshark 查看下拉菜单,然后选择时间显示格式,然后选择时间。)
    3. gaia.cs.umass.edu(又称www-net.cs.umass.edu)的网址是什么? 您的计算机或(如果您使用跟踪文件)发送 HTTP GET 消息的计算机的 Internet 地址是什么?

    要回答以下两个问题,您需要选择包含 HTTP GET 请求的 TCP 数据包, 接下来这两个问题的目的是让您熟悉使用 Wireshark 的“Detailes of selected packet”; 请参见图 3。

    1. 在 Wireshark “所选数据包的详细信息”窗口中展开 HTTP 消息的信息(参见上面的图 3),以便您可以看到 HTTP GET 请求消息中的字段。 什么类型的 Web 浏览器发出了 HTTP 请求? 答案显示在扩展 HTTP 消息显示中“User-Agent:”字段之后的信息右端。 [HTTP 消息中的此字段值是 Web 服务器了解您正在使用的浏览器类型的方式。]
      Firefox、Safari、Microsoft Internet Edge、其他

    2. 在 Wireshark “所选数据包的详细信息”窗口中展开有关此数据包的传输控制协议的信息(参见实验文章中的图 3),以便您可以看到承载 HTTP 消息的 TCP 段中的字段。 这个 HTTP 请求被发送到的目标端口号(“Dest Port:”后面的数字,表示包含 HTTP 请求的 TCP 段)是什么?

    3. 打印上面问题2中提到的两条HTTP消息(GET和OK)。为此,请从 Wireshark 文件命令菜单中选择打印,然后选择“Selected Packet Only”和“Print as displayed”单选按钮,然后单击确定。

    回答:

    1. 笔者除了UDP其他协议都看到了, 不过DNS和QUIC都是构建在UDP上的.
    2. 过滤过HTTP后会看到一次请求和对应的响应
    3. IP报文头承载了原地址和目标地址, 倒数4个位是原IP, 最后4个位是目的IP(假设是Ipv4), 注意网络字节序是大端序, 这样的好处是我们看到的按顺序解析就是IP地址.
    4. HTTP报文通常由两部分组成, http header和http body, 其中 header 就是一些冒号分割的键值对, 然后通过\r\n分割, 最终有一个空白的 \r\n 表示 header 结束, 剩余部分为 body, 可以为空. 并且抓包的 http 版本是1.1, 都是以 ASCII 编码的, 我们可以直接从报文中看到内容, 也可以从解析后的 packet-header detail 区域找 User-Agent 字段, 笔者的内容是 Mozilla/5.0 (Macintosh; Intel Mac OS X 12_0_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Edg/88.0.705.53 至于它为什么包了这么多, 一部分是历史原因, 也是浏览器的发展史.
    5. 与IP相反, TCP包的端口号在报文头一开始, 两位的原端口, 两位目的端口, 由于每个TCP连接都要有源端口, 连接发起的客户端通常会由操作系统绑定一个大于1024的随机端口号, 目的端口号就是HTTP端口号80.
    6. 可以打印成PDF看一下.
  • 相关阅读:
    ASP.NET MVC 2 RC 2 发布
    [备忘]XCode快捷键
    ASP.NET MVC v2 Priview 2发布
    Senparc.com Google Sitemap Builder v1.0提供免费定制服务申请
    [备忘]SQL Server 字符集更改
    ASP.NET MVC脚手架辅助工具——MvcScaffoldTool v2.0版本发布,支持Area自动映射
    [备忘]SQL Server 2005数据库varchar插入中文出现乱码的一种可能及解决办法
    [备忘]苹果系统MAC OS X 10.5.6 (雪豹 snowleopard 10.5.6) 启用root方法
    准备好好看看《编程珠玑》
    格式化输入/输出
  • 原文地址:https://www.cnblogs.com/xxrlz/p/16283114.html
Copyright © 2020-2023  润新知