赞
踩
目录
(3)Authoritative nameservers(授权区域)
1、打开wireshark,然后输入网站地址,我这里输入的是:
2、成功访问网站之后,打开运行中的wireshark,关闭wiresahrk。
3、我们可以看到已经有很多的DNS报文了,在这里只分析一份对应请求和应答的报文。
1、打开wireshark,然后输入网站地址,我这里输入的是:
2、成功访问网站之后,打开运行中的wireshark,关闭wiresahrk。
DNS(Domain Name System,域名系统)是互联网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
通过DNS,用户可以方便地通过域名找到对应的IP地址,从而访问目标网站或服务。DNS的工作原理基于一个分布式的数据库系统,其中包含大量的域名和IP地址的映射记录。当用户输入一个域名时,DNS系统会在其数据库中查找对应的IP地址,并将结果返回给用户。这样,用户就可以通过域名来访问互联网资源,而无需知道具体的IP地址。
DNS系统由多个DNS服务器组成,它们之间通过层次化的结构进行协作。这些服务器负责解析域名,并将其转换为相应的IP地址。当用户发起域名解析请求时,本地DNS服务器会首先尝试解析域名。如果本地DNS服务器无法解析该域名,则会向根DNS服务器或其他上级DNS服务器发起递归查询,以获取正确的IP地址。
DNS不仅提供了域名到IP地址的解析功能,还支持反向解析,即将IP地址解析为域名。此外,DNS还支持各种记录类型,如A记录(将域名解析为IPv4地址)、AAAA记录(将域名解析为IPv6地址)、CNAME记录(将域名解析为另一个域名)等,以满足不同的网络需求。
(1)会话标识(2字节):是DNS报文的ID标识,对于请求报文和其对应的应答报文,这个字段是相同的,通过它可以区分DNS应答报文是哪个请求的响应。
(2)标志(2字节):
QR:查询/响应标志,0表示查询报文;1表示响应报文。
Opcode:0表示标准查询,1表示反向查询;2表示服务器状态请求。
AA:表示授权回答(autboritstive answer)。
TC:表示可截断的(trupcsted)。
RD:表示期望递归。
RA:表示可用递归,随后3bit必须为0。
Rcode:返回码,表示返回码,0表示没有差错,3表示名字差错,2表示服务器错误(Server Failure)。
(3)Questions(问题数)字段占2个字节,表示在DNS请求中待解析的城名数目,一般是1,也即 0x0001。
(4)Answer RRs(国答资源记录数)字段占2个字节,在DNS应答报文中,表示 DNS 回答的资源记录数目。在DNS请求报文中,Answer RRs的值为0。
(5)Authority RRS(授权资源记录数)字段占2个字节,在DNS的应答报文中,表示投权服务器的记录个数。在DNS请求报文中,Authority RRs的值为0。
(6)Additional RRs(附加资源记录数)字段占2个字节,在DNS应答报文中,表示附件信息记录的个数。在DNS请求报文中,Additional RRs的值为0。
正文包括 Queries(查询问题区域)、Answers(回答区域)、Authoritative nameservers(授权区域)和 Additional records(附加区域)。
Queries 区域存放DNS客户端询问的问题,报文格式如图:
1 | A | 由域名获得IPv4地址 |
2 | NS | 查询域名服务器 |
5 | CHANE | 查询规范名称 |
6 | SOA | 开始授权 |
11 | WKS | 熟知服务 |
12 | PTR | 把IP地址转换成域名 |
13 | HINFO | 主机信息 |
15 | MX | 邮件交换 |
28 | AAAA | 由域名获得IPv6地址 |
252 | AXFR | 传送整个区的请求 |
255 | ANY | 对所有记录的请求 |
包含所查询的DNS域名的资源记录,资源记录格式如图:
包含权威服务器的记录,如提供该域名解析服务的服务器的主机名。
包含其他信息记录,如 Authoritative nameservers(授权区域)中服务器的 IP 地址。
http://www.zhihu.com
随便查看一个请求报文
进去之后,我们可以看到DNS的端口:53,表示我们提出请求,要做出回应的是DNS服务器。下面是,我对于DNS请求报文的一些分析。(有什么分析的不对,欢迎大家指出)
在上图,我们可以看出Transaction ID:0x4d95。所以下面的分析的响应报文就是这个请求报文相对应的响应报文。
根据Transaction ID:0x4d95,找到对应的响应报文
这次的源端口变成了53,这是因为这是响应报文,由DNS服务器发出的响应。而目的端口就是我们自己。
注:有些字段我并没有分析,如果你需要分析某些字段,可以往前翻一翻,详细的字段内容、介绍都在前面有所介绍。
HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种应用层协议,用于分布式、协作式和超媒体信息系统。它是互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。
作为应用层的协议,HTTP协议遵循客户一服务器模式,使用HTTP协议通信过程如下图:
利用 HTTP 协议交互的过程是非常简单的,Web浏览器发送请求,Web服务器给出应答,Web浏览器再发出请求,Web服务器再给出应答……Web服务器不去记忆哪一个客户曾经访问过它,也不去记忆某个客户曾经访问过哪一个文件。当同一个客户连续向Web服务器发出两个相同的请求时,Web服务器会认为这是两个单独的请求。所以,HTTP 协议是一个无状态的协议。
HTTP协议支持非持久连接和持久连接。HTTP1.1默认使用持久连接。
(1)非持久连接
在非持久连接下,访问过程如下图:
在非持久连接的方式中,一个连接只传送一个文件,文件传送完毕,连接就会关闭。当浏览器解析 index.html发现需要图片文件 1.jpg时,因为前一个连接已经关闭,浏览器需要和服务器再次建立连接,传送 1.jpg 文件。
(2)持久连接
在持久连接方式下,访问过程如下图:
在持久连接中,使用一个连接可以传送多个文件,因此省去了反复创建、关闭连接的过程,提高了协议的效率。
Web浏览器和Web服务器通过交换HTTP报文来实现HTTP协议。
有两种HTTP报文:请求报文和应答报文。请求报文是浏览器发给服务器的,指明所需文档的名字和位置。应答报文是服务器发给浏览器的,里面包含服务器的应答和浏览器所需的文档。这两种报文的控制信息都是以文本的形式发送的,非常易于阅读和理解。
第一行是请求行,方法字段指明要进行的操作,URL字段给出要操作文档的URL地址,版本号字段用来告诉服务器浏览器所支持的HTTP协议版本。方法字段的值有五种。分别是:
请求行后面就是首部行,每个首部行都有其特定的意思,告诉服务器一些特殊的信息。
Accept | 表示浏览器接受的文档类型 |
Accept-Language | 表示浏览器优先接受的语言类型 |
Accept-Encoding | 表示浏览器能够理解的编码方式 |
User-Agent | 告诉服务器浏览器的类型 |
Host | 表示所访问的主机 |
Connection | 告诉服务器在对浏览器做了应答后,是否保持和浏览器的连接 |
HTTP应答报文(Response Message)是服务器在接收到客户端的HTTP请求后,返回给客户端的响应数据。HTTP应答报文主要由状态行(Status Line)、响应头部(Headers)和响应体(Body)三个部分组成。
第一行就是状态行,状态行包含了HTTP协议版本、状态码以及状态描述,格式如下:
<HTTP-version> <status-code> <reason-phrase>
<HTTP-version>
:HTTP协议的版本,如HTTP/1.1。<status-code>
:一个三位数的状态码,表示请求的处理结果。<reason-phrase>
:状态码对应的文本描述。常见的状态码包括:
200 OK
:请求成功。404 Not Found
:请求的资源未找到。500 Internal Server Error
:服务器内部错误。状态行后面是若干个首部行,用来存放告诉浏览器的其它一些信息。
<header-name>: <header-value>
常见的响应头部包括:
Content-Type
:指定返回数据的类型,如text/html
、application/json
等。Content-Length
:返回数据的长度(以字节为单位)。Date
:响应创建的日期和时间。Server
:服务器的名称或类型。Cache-Control
:缓存控制指令,如no-cache
、max-age
等。响应体是可选的,它包含了服务器返回给客户端的数据。响应体的格式和内容取决于Content-Type
头部字段的值。例如,如果Content-Type
是text/html
,那么响应体就是HTML文档;如果Content-Type
是application/json
,那么响应体就是JSON格式的数据。
一个完整的HTTP响应报文,可能如下:
- HTTP/1.1 200 OK
- Content-Type: text/html; charset=UTF-8
- Content-Length: 1234
- Date: Mon, 27 Jul 2023 12:34:56 GMT
- Server: Apache/2.4.52 (Unix)
- Cache-Control: no-cache, no-store, must-revalidate
-
- <!DOCTYPE html>
- <html>
- <head>
- <title>Example Page</title>
- </head>
- <body>
- <h1>Welcome to the Example Page!</h1>
- <p>This is an example response body.</p>
- </body>
- </html>
http://www.baidu.com
这里的操作与DNS报文的过程大致相同,就不过多描述了。
注:我这里只是一个简单的访问百度网站的一个HTTP报文,并没有涉及过多的内容。
其实,这篇博客本来就是想记录实验抓包的记录和分析的成果,后来想了想,还是把DNS和HTTP的特点、报文格式也写了进来,算是记录。May the Force be with you!别太放肆,没什么用。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。