Wireshark之Intro, HTTP, DNS

源码地址

moranzcw/Computer-Networking-A-Top-Down-Approach-NOTES: 《计算机网络-自顶向下方法(原书第6版)》编程作业,Wireshark实验文档的翻译和解答。 (github.com)

目录

Introduce

前置

过程

课后问题

HTTP

GET / response交互 

HTTP消息格式

检索大型HTML文件(长文件)

检索具有嵌入对象的HTML文件

HTTP认证和安全性

DNS

前置

过程

(一)nslookup

(二)ipconfig

(三)WireShark 追踪 DNS


Introduce

结合这个视频做WireShark实验

2.WireShark抓包入门操作_哔哩哔哩_bilibili

Introduce的博客

Wireshark实验——入门 - 乌漆WhiteMoon - 博客园 (cnblogs.com)

新手全流程Wireshark博客(建议跟一遍)

wireshark抓包新手使用教程 - jack_Meng - 博客园 (cnblogs.com)

前置

首先,WireShark 是一个使用计算机中 packet capture(pcap) 的 packet analyzer,是免费的网络协议分析器,可在 Windows,Mac 和 Linux / Unix 计算机上运行

可以运行在使用 以太网,串行(PPP 和 SLIP),802,11无线局域网 和 许多其他链路层技术的计算机上

packet sniffer(分组嗅探器)

观察执行协议实体之间交换信息的基本工具

(1)sniffer 计算机发送 / 接收的消息

(2)存储并捕获消息中的协议字段内容

(3)接收的是机器的应用程序和协议,发送 / 接收分组的 “副本”

Wireshark之Intro, HTTP, DNS_第1张图片

上图是 packet sniffer 的结构,右侧为应用层,传输层,网络层,链路层,物理层的协议

(当前为 Internet 协议)和应用程序(比如Web浏览器 或 ftp客户端)

虚线框的 packet sniffer 包含 2 部分:

(1) packet capture(分组捕获库)

接收链路层的副本

较高层协议(HTTP,FTP,DNS;TCP,UDP;IP...)交换的消息最终被封装在(通过物理介质传输的)链路层中,例如以太网电缆。

图中,假设物理介质是以太网,那么所有上层协议最终被封装在以太网帧中

捕获所有链路层帧,即可获得所有协议和应用程序 发送 / 接收 的消息

(2) packet analyzer(分组分析器)

显示协议消息中所有字段的内容

为了做到这一点,packet analyzer 需要 “理解” 协议交换所有消息的结构

举个例子

假设在 HTTP 协议交换消息显示各种字段,packet analyzer

了解以太网帧的格式 --> 识别以太网帧的 IP 数据报

理解 IP 数据报格式 --> 提取 IP 数据包里的 TCP 段

理解 TCP 段结构 --> 提取 TCP 段中包含的 HTTP 消息

理解 HTTP 协议 --> 知道 HTTP 消息第一部分包含字符串 "GET", "POST", "HEAD"

过程

教程:3.WireShark过滤器使用_哔哩哔哩_bilibili 

先cmd,输入 ipconfig,找到已连接的网络,而不是 disconnection

Wireshark之Intro, HTTP, DNS_第2张图片

我连接的是学校的 wifi,所以选择 WLAN,开始抓包后,访问网址gaia.cs.umass.edu/wireshark-labs/INTRO-wireshark-file1.html

稍等一会,先让它抓个30秒,然后暂停,进行 http 的 filter,得到 

Wireshark之Intro, HTTP, DNS_第3张图片

其他尝试

Wireshark之Intro, HTTP, DNS_第4张图片

但是,并没有看到 HTTP GET 的消息,只有POST,估计这个网站我GET不到

但是抓百度,是可以直接抓到的

Wireshark之Intro, HTTP, DNS_第5张图片

或者先开始抓包,再在 cmd Ping

Wireshark之Intro, HTTP, DNS_第6张图片

Wireshark之Intro, HTTP, DNS_第7张图片

课后问题

第一个实验的目的是,介绍 WireShark,安装,启动,运动

Wireshark之Intro, HTTP, DNS_第8张图片

(1)3种不同的协议

HTTP,TCP,OICQ

(2)两次POST时间差

Wireshark之Intro, HTTP, DNS_第9张图片

(3)源IP 和目标IP

Source 和 Destination可以看

HTTP

在这个实验中,我们会探索HTTP协议的几个方面

(1)基本的GET/response交互(2)HTTP消息格式(3)检索大型HTML文件(4)检索具有嵌入对象的HTML文件(5)HTTP认证和安全性

GET / response交互 

过程 

gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file1.html

Wireshark之Intro, HTTP, DNS_第10张图片

destination没啥问题,但是HTTP那里,没有出现GET,只有POST

上面的结果也可能是对的,因为不同操作系统 或 不同WireShark版本,有所区别 

然后我从压缩的网址, http://gaia.cs.umass.edu/wireshark-labs/wireshark-traces.zip

解压到本地并在WireShark打开 http-ethereal-trace-1

Wireshark之Intro, HTTP, DNS_第11张图片

才得到了GET

不是没有GET字段,而是自顶向下提供的网站,确实抓不到,我尝试打开其他网站,有些有GET,有些只有POST

Wireshark之Intro, HTTP, DNS_第12张图片

解答

1. 您的浏览器是否运行HTTP版本1.0或1.1?服务器运行什么版本的HTTP?

Wireshark之Intro, HTTP, DNS_第13张图片

浏览器 1.1

Wireshark之Intro, HTTP, DNS_第14张图片

服务器 1.1

2. 您的浏览器会从接服务器接受哪种语言(如果有的话)?

Wireshark之Intro, HTTP, DNS_第15张图片

但是开发者工具里,并没有看到 Accept-Language,也许不是每个请求都有

3. 您的计算机的IP地址是什么? gaia.cs.umass.edu服务器地址呢?

我的计算机是 10.252.120.241,服务器地址是 110.249.194.68

4. 服务器返回到浏览器的状态代码是什么?

200 OK

5. 服务器上HTML文件的最近一次修改是什么时候?

别人的有,但是我的没有 Last-Modified

Wireshark之Intro, HTTP, DNS_第16张图片

6. 服务器返回多少字节的内容到您的浏览器?

Wireshark之Intro, HTTP, DNS_第17张图片

很奇怪,POST 浏览器发出的1000多字节,但是服务器返回的 0 bytes

7. 通过检查数据包内容窗口中的原始数据,你是否看到有协议头在数据包列表窗口中未显示? 如果是,请举一个例子

Wireshark之Intro, HTTP, DNS_第18张图片

HTTP消息格式

前面没显示 GET,应该是没有清除Edge浏览器缓存的原因

先打开火狐,清楚最近历史记录,我的是第一次安装的

然后先WireShark开始抓包,接着火狐打开该网址

http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file2.html

打开后,再次刷新,然后停止抓包

Wireshark之Intro, HTTP, DNS_第19张图片

根据结果回答下列问题

8. 检查第一个从您浏览器到服务器的HTTP GET请求的内容。您在HTTP GET中看到了“IF-MODIFIED-SINCE”行吗?

没有

9. 检查服务器响应的内容。服务器是否显式返回文件的内容? 你是怎么知道的?

Wireshark之Intro, HTTP, DNS_第20张图片

返回了 HTML 文本

10. 现在,检查第二个HTTP GET请求的内容。 您在HTTP GET中看到了“IF-MODIFIED-SINCE:”行吗? 如果是,“IF-MODIFIED-SINCE:”头后面包含哪些信息?

Wireshark之Intro, HTTP, DNS_第21张图片

(1)If-Modified-Since是标准的HTTP请求头标签,在发送HTTP请求时,把浏览器端缓存页面的最后修改时间一起发到服务器去

(2)这个头部告诉服务器,客户端认为资源在"Tue, 21 Nov 2023 06:59:01 GMT"之后进行了修改。服务器将使用这个信息来判断,是否返回更新后的资源或者返回一个状态码304(Not Modified)

(3)304 表示客户端缓存的资源仍然有效,无需重新传输

(4)这样的条件性请求可以减少不必要的数据传输,节省网络带宽和服务器资源

11. 针对第二个HTTP GET,从服务器响应的HTTP状态码和短语是什么?服务器是否明确地返回文件的内容?请解释

304 Not Modified

表示当前这个页面的缓存还保存着,并且服务器没有修改,因此这个缓存还能拿来用,就不需要服务器再发一遍了

检索大型HTML文件(长文件)

过程 

Historical Documents:THE BILL OF RIGHTS

清除缓存 -- 抓包 -- 打开网址 -- 停止抓包

Wireshark之Intro, HTTP, DNS_第22张图片

Wireshark之Intro, HTTP, DNS_第23张图片

清除缓存清除历史记录,而且清除完历史,缓存要连续清除2次,等下打开网址,要在原页面打开

Wireshark之Intro, HTTP, DNS_第24张图片

但是我连接到的不是预定的页面....WireShark也没啥问题,不知道为啥,只能选择打开文件http-ethereal-trace-3

Wireshark之Intro, HTTP, DNS_第25张图片

解答

12. 您的浏览器发送多少HTTP GET请求消息?哪个数据包包含了美国权利法案的消息?

一个 555 GET

200 OK 的数据包,包含了 4500 bytes 的信息

13. 哪个数据包包含响应HTTP GET请求的状态码和短语?

HTTP/1.1 200 OK

14. 响应中的状态码和短语是什么?

200 OK,表示请求成功,信息在返回的报文里

15. 需要多少包含数据的TCP段来执行单个HTTP响应和权利法案文本?

Wireshark之Intro, HTTP, DNS_第26张图片

根据别人的答案,需要5个,但是我抓不到这个 HTML 网页的包,只能打开提供好的文件

检索具有嵌入对象的HTML文件

过程 

http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file4.html

您的浏览器应显示包含两个图像的短HTML文件。这两个图像在基本HTML文件中被引用。也就是说,图像本身不包含在HTML文件中;相反,图像的URL包含在已下载的HTML文件中

第一次,只收到了一个 .jpg

第二次,打开后,刷新,多等了1分钟

Wireshark之Intro, HTTP, DNS_第27张图片

GPT的解释

  1. 第一行:IP地址10.252.121.239向178.79.137.164发出第一次GET请求,请求的资源是"8E_cover_small.jpg"
  2. 第二行:178.79.137.164服务器返回状态码302,表示请求的资源被重定向
  3. 第三行:IP地址10.252.121.239向202.116.36.202发出第二次GET请求,请求的资源是一个带有缓存路径的图片文件
  4. 第四行:202.116.36.202服务器成功返回了一张JPEG格式的图片,状态码为200
  5. 第五行:IP地址10.252.121.239向178.79.137.164发起第三次GET请求,请求的资源仍然是"8E_cover_small.jpg"
  6. 最后一行:178.79.137.164服务器返回状态码301,表示请求的资源被永久性重定向

第 3 次,打开提供的文件 http-ethereal-trace-4数据包

Wireshark之Intro, HTTP, DNS_第28张图片

  1. 192.168.1.102向128.119.245.12请求HTML页面
  2. 128.119.245.12返回HTML页面给192.168.1.102,状态码为200 OK
  3. 192.168.1.102向165.193.123.218请求GIF图片
  4. 192.168.1.102向134.241.6.82请求JPG图片
  5. 165.193.123.218返回GIF图片给192.168.1.102,状态码为200 OK
  6. 134.241.6.82返回JPEG图片给192.168.1.102,状态码为200 Document follows

解答

16. 您的浏览器发送了几个HTTP GET请求消息? 这些GET请求发送到哪个IP地址?

3个,三个不同 IP 地址

17. 浏览器从两个网站串行还是并行下载了两张图片?请说明。

先解释下概念

串行:逐个执行任务,一个任务完成后才能执行下一个,顺序执行,适用于单处理器系统

并行:同时执行多个任务,并发执行,缩短总体执行时间,提高效率,适用于多处理器系统或分布式系统

根据第3,4行,两行 GET 的时间戳,相差了 0.003 秒(3毫秒),而通常串行时间间隔在几十到几百毫秒之间,所以是并行

HTTP认证和安全性

每次开始前清除一下缓存

Wireshark之Intro, HTTP, DNS_第29张图片

再介绍一个概念

Wireshark之Intro, HTTP, DNS_第30张图片

Wireshark之Intro, HTTP, DNS_第31张图片

Wireshark之Intro, HTTP, DNS_第32张图片

过程 

访问受密码保护的网站,并检查网站的HTTP消息交换的序列。URL http://gaia.cs.umass.edu/wireshark-labs/protected_pages/HTTP-wireshark-file5.html 是受密码保护的。用户名是“wireshark-students”(不包含引号),密码是“network”(再次不包含引号)

Wireshark之Intro, HTTP, DNS_第33张图片

然而,我一个 HTTP 的包都没抓到,只能打开 http-ethereal-trace-5 数据包

 GPT解释

  1. 192.168.1.102向128.119.245.12请求一个受保护的HTML页面
  2. 128.119.245.12返回401错误状态码,要求进行身份验证
  3. 192.168.1.102再次向128.119.245.12请求相同的受保护的HTML页面
  4. 128.119.245.12返回状态码200 OK,即请求成功,返回HTML页面

虽然您的用户名和密码可能加密,但它们只是以一种称为Base64格式的格式进行编码。用户名和密码并没有加密!要确认这些,请访问

http://www.motobit.com/util/base64-decoder-encoder.asp

并输入base64编码的字符串 d2lyZXNoYXJrLXN0dWRlbnRz 并进行解码 

选择 decode,可以看到 base64 字符串,被解码为 用户名

Wireshark之Intro, HTTP, DNS_第34张图片

解答

18. 对于您的浏览器的初始HTTP GET消息,服务器响应(状态码和短语)是什么响应?

401 Authorization Required,该状态码表示用户没有访问权限,需要进行身份认证

19. 当您的浏览器第二次发送HTTP GET消息时,HTTP GET消息中包含哪些新字段?

第一次

Wireshark之Intro, HTTP, DNS_第35张图片

第二次

Wireshark之Intro, HTTP, DNS_第36张图片

多了 Authorization 字段,向网页提交密码

DNS

前置

(1)DNS 的全称是 Domain Name System(域名系统) 。它是一个用于将域名解析成 IP 地址的分布式数据库系统

(2)客户端发起 DNS 查询请求后,DNS 服务器会返回一个 IP 地址,从而使得客户端能够连接到所请求的网站或服务

DNS用于将域名解析为对应的IP地址,而后续的数据包则根据DNS提供的IP地址进行通信 

清除 DNS 缓存 

 windows 用 ipconfig /flushdns,不清除缓存结果一般无法正常显示

C:\Users\1>ipconfig /flushdns

Windows IP Configuration

Successfully flushed the DNS Resolver Cache.

基本概念(20分钟过一遍)

DNS的基本概念是什么_云解析 DNS-阿里云帮助中心 (aliyun.com)

(图片引自阿里云)

本地域名服务器/ 没有缓存 /前提下,DNS解析过程

Wireshark之Intro, HTTP, DNS_第37张图片

当用户在Web浏览器中输入"example.com"时,以下是DNS查询的简单步骤:

  1. 用户在浏览器中输入"example.com"。
  2. 本地域名服务器开始进行递归查询。
  3. 本地域名服务器向根域名服务器查询。
  4. 根域名服务器告诉本地域名服务器顶级域名服务器(.com TLD)的IP地址。
  5. 本地域名服务器向顶级域名服务器(.com TLD)查询。
  6. .com TLD服务器告诉本地域名服务器example.com权威域名服务器的IP地址。
  7. 本地域名服务器向example.com权威域名服务器发送查询。
  8. example.com权威域名服务器告诉本地域名服务器查询的主机IP地址。
  9. 本地域名服务器将查询的IP地址响应给Web浏览器。

一旦得到了example.com的IP地址,浏览器可以发出对该IP地址的HTTP请求,并从该IP地址处的Web服务器获取要显示在浏览器中的网页

DNS术语

递归查询:当你在浏览器中输入网址时,DNS服务器会帮助你找到对应的IP地址。递归查询是指DNS服务器从别的服务器上获取准确的查询结果,然后将结果返回给你

迭代查询:当DNS服务器无法直接回答你的查询,它会告诉你去问另一个DNS服务器。这个过程可能会进行多次,直到找到查询结果为止

DNS缓存:DNS服务器会将解析结果存储在靠近你的位置,这样下次查询相同的网址时可以更快地获取结果,减少了递归查询的时间

TTL(Time To Leave):这是一个时间值,告诉DNS服务器可以将解析结果缓存多长时间。当缓存时间到期后,DNS服务器会删除该解析记录,需要重新进行查询

IPV4、IPV6双栈技术:在一个系统中同时使用IPv4和IPv6协议,以便能够连接到不同类型的网络(双栈 Dual IP Stack)

TLD服务器:顶级域名服务器(Top-level domains Server),负责管理顶级域名(如.com、.net等)的IP地址

DNS Resolver:也称为本地域名服务器,是处理你发出的初始DNS请求的第一站。它可以是由你的互联网服务提供商(ISP)分配的DNS服务器,也可以是像Google的8.8.8.8这样的公共DNS服务器

根域名服务器:当本地域名服务器无法找到查询结果时,它会向根域名服务器进行查询,并获取顶级域名服务器的IP地址

DNS记录和消息

What are DNS records? | Cloudflare (cloudflare-cn.com)

DNS报文格式解析(非常详细) (biancheng.net)

nslookup

nslookup命令详解:nslookup是一种网络管理命令行工具 - 习久性成 - 博客园 (cnblogs.com)

过程

DNS实验中一个服务器已经不在使用,且部分现象无法解释,速通~

(一)nslookup

nslookup -option1 -option2 host-to-find dns-server

nslookup解答

1. 运行*nslookup*以获取一个亚洲的Web服务器的IP地址。该服务器的IP地址是什么?

C:\Users\1>nslookup www.google.com
Server:  UnKnown
Address:  202.116.32.254

Non-authoritative answer:
Name:    www.google.com
Addresses:  2a03:2880:f11c:8083:face:b00c:0:25de
          142.251.42.228

142.251.42.228

2. 运行*nslookup*来确定一个欧洲的大学的权威DNS服务器。

解释 

(1)-type=NS 是一个选项,表示查询的类型是 NS(Name Server)记录

(2)nslookup 命令后加上 -type=NS 选项,那么查询结果会返回与所查询域名相关的权威DNS服务器的信息。这些信息包括权威DNS服务器的域名和对应的IP地址

(3)如果不加 -type=NS 选项,则默认的查询类型是 A 记录,即查询域名对应的IPv4地址

(不同的查询类型,会返回不同的信息)

Wireshark之Intro, HTTP, DNS_第38张图片

3. 运行*nslookup*,使用问题2中一个已获得的DNS服务器,来查询Yahoo!邮箱的邮件服务器。它的IP地址是什么?

Wireshark之Intro, HTTP, DNS_第39张图片

(二)ipconfig

ipconfig命令图文教程,查看本机网络ip,dns刷新缓存 - 腾讯云开发者社区-腾讯云 (tencent.com)

(三)WireShark 追踪 DNS

清除DNS缓存,清除FIreFox浏览器记录,打开WireShark抓包WLAN,浏览器输入

http://www.ietf.org,停止抓包

ipconfig查询WLAN的IPv4地址

WireShark查询

Wireshark之Intro, HTTP, DNS_第40张图片

问题解答

Wireshark之Intro, HTTP, DNS_第41张图片

点击第一个,下方第一行 Frame 的最后

4. DNS查询和响应消息,通过UDP发送

5. 下方 User Datagram Protocal,显示 port: 53

6. Destination

7. Type 为 “A”,表示查询 IP 地址(IPv4);“AAAA”,表示查询 IPv6 地址

Wireshark之Intro, HTTP, DNS_第42张图片

没有包含Answers

Wireshark之Intro, HTTP, DNS_第43张图片

8. 找到DNS响应,Domain Name System点击,我这里有5条,包含类型和 IPv4 地址

Wireshark之Intro, HTTP, DNS_第44张图片

9. 根据 8. 得到的 addr

这里涉及 WireShark 过滤器

Wireshark过滤器写法总结 - willingtolove - 博客园 (cnblogs.com)

Wireshark之Intro, HTTP, DNS_第45张图片

所以,是相对应的

10. 只是部分需要发起新的DNS查询(未缓存 / 缓存过期 -- 才需要)

下一个链接

使用nslookup查询 www.mit.edu

Wireshark之Intro, HTTP, DNS_第46张图片

Wireshark之Intro, HTTP, DNS_第47张图片

11. 目标和源端口都53,参考上面User Datagram Protocal

12. 目标 IP 地址,是默认本地DNS的IP地址,参考 Internet Protocol Version 和 nslookup里Server下的Address

13. 上面做过了

14. 同上

现在输入下面两个网址,同时使用Wireshark和cmd ipconfig,重复上面实验

(1)nslookup -type=NS mit.edu

(2)nslookup www.aiit.or.kr bitsy.mit.edu(这个DNS服务器,好像有点问题)

That's the end ~

其实,还是建议用 源码提供的 wireshark 数据包,在 wireshark 里打开,不然很多干扰

你可能感兴趣的:(网络编程,wireshark,计算机网络)