Wireshark之Intro, HTTP, DNS

2023-12-01 12:36
文章标签 http wireshark dns intro

本文主要是介绍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)接收的是机器的应用程序和协议,发送 / 接收分组的 “副本”

👆上图是 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

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

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

其他尝试👇

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

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

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

🎧课后问题

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

(1)3种不同的协议

HTTP,TCP,OICQ

(2)两次POST时间差

(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

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

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

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

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

才得到了GET

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

解答

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

浏览器 1.1👆

服务器 1.1👆

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

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

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

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

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

200 OK

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

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

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

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

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

💴HTTP消息格式

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

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

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

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

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

根据结果回答下列问题

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

没有

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

返回了 HTML 文本

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

(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

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

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

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

解答

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

一个 555 GET

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

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

HTTP/1.1 200 OK

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

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

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

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

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

过程 

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

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

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

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

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数据包

  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认证和安全性

每次开始前清除一下缓存👇

再介绍一个概念

过程 

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

然而,我一个 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 字符串,被解码为 用户名👇

解答

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

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

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

第一次

第二次

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

🌼DNS

📱前置

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

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

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

清除 DNS 缓存 

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

C:\Users\1>ipconfig /flushdnsWindows IP ConfigurationSuccessfully flushed the DNS Resolver Cache.

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

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

(图片引自阿里云)

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

当用户在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.254Non-authoritative answer:
Name:    www.google.com
Addresses:  2a03:2880:f11c:8083:face:b00c:0:25de142.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地址

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

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

(二)ipconfig

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

(三)WireShark 追踪 DNS

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

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

ipconfig查询WLAN的IPv4地址

WireShark查询👇

问题解答

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

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

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

6. Destination

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

没有包含Answers

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

9. 根据 8. 得到的 addr👇

这里涉及 WireShark 过滤器

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

所以,是相对应的

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

下一个链接👇

使用nslookup查询 www.mit.edu

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之Intro, HTTP, DNS的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/441178

相关文章

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

如何确定 Go 语言中 HTTP 连接池的最佳参数?

确定 Go 语言中 HTTP 连接池的最佳参数可以通过以下几种方式: 一、分析应用场景和需求 并发请求量: 确定应用程序在特定时间段内可能同时发起的 HTTP 请求数量。如果并发请求量很高,需要设置较大的连接池参数以满足需求。例如,对于一个高并发的 Web 服务,可能同时有数百个请求在处理,此时需要较大的连接池大小。可以通过压力测试工具模拟高并发场景,观察系统在不同并发请求下的性能表现,从而

Anaconda 中遇到CondaHTTPError: HTTP 404 NOT FOUND for url的问题及解决办法

最近在跑一个开源项目遇到了以下问题,查了很多资料都大(抄)同(来)小(抄)异(去)的,解决不了根本问题,费了很大的劲终于得以解决,记录如下: 1、问题及过程: (myenv) D:\Workspace\python\XXXXX>conda install python=3.6.13 Solving environment: done.....Proceed ([y]/n)? yDownloa

构建高性能WEB之HTTP首部优化

0x00 前言 在讨论浏览器优化之前,首先我们先分析下从客户端发起一个HTTP请求到用户接收到响应之间,都发生了什么?知己知彼,才能百战不殆。这也是作为一个WEB开发者,为什么一定要深入学习TCP/IP等网络知识。 0x01 到底发生什么了? 当用户发起一个HTTP请求时,首先客户端将与服务端之间建立TCP连接,成功建立连接后,服务端将对请求进行处理,并对客户端做出响应,响应内容一般包括响应

Golang支持平滑升级的HTTP服务

前段时间用Golang在做一个HTTP的接口,因编译型语言的特性,修改了代码需要重新编译可执行文件,关闭正在运行的老程序,并启动新程序。对于访问量较大的面向用户的产品,关闭、重启的过程中势必会出现无法访问的情况,从而影响用户体验。 使用Golang的系统包开发HTTP服务,是无法支持平滑升级(优雅重启)的,本文将探讨如何解决该问题。 一、平滑升级(优雅重启)的一般思路 一般情况下,要实现平滑

Java http请求示例

使用HttpURLConnection public static String httpGet(String host) {HttpURLConnection connection = null;try {URL url = new URL(host);connection = (HttpURLConnection) url.openConnection();connection.setReq

3.比 HTTP 更安全的 HTTPS(工作原理理解、非对称加密理解、证书理解)

所谓的协议 协议只是一种规则,你不按规则来就无法和目标方进行你的工作 协议说白了只是人定的规则,任何人都可以定协议 我们不需要太了解细节,这些制定和完善协议的人去做的,我们只需要知道协议的一个大概 HTTPS 协议 1、概述 HTTPS(Hypertext Transfer Protocol Secure)是一种安全的超文本传输协议,主要用于在客户端和服务器之间安全地传输数据

DNS协议基础笔记

1.定义 DNS(Domain Name System,域名系统)是互联网的一项核心服务,它作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。 2.域名解析过程 当用户在浏览器中输入一个域名,浏览器首先会检查自己的缓存中是否有该域名对应的 IP 地址。本地 DNS 服务器收到查询请求后,首先会检查自己的缓存中是否有该域名对应的 IP 地址。根域名服务器收到查询请

IEEE会议投稿资料汇总http://cadcg2015.nwpu.edu.cn/index.htm

最近投了篇IEEE的顶级会议文章,一下是比较有用的一些资料,以供参考。 1.会议主页:http://cadcg2015.nwpu.edu.cn/index.htm     (The 14th International Conference on Computer-Aided Design and Computer Graphics (CAD/Graphics 2015)) 2.I