创作不易,赏个赞吧!!!
任务描述
本关任务:能分析出 HTTP 请求与应答中各字段的作用及取值。
相关知识
为了完成本关任务,你需要掌握:
- 了解 HTTP协议;
- 识别 HTTP 请求报文构成及各字段含义;
- 识别 HTTP 响应报文构成及各字段含义;
- Wireshark 中加载保存的报文文件。
HTTP请求
HTTP 请求包括三部分,分别是请求行(请求方法)、请求头(消息报头)和请求正文。HTTP 请求第三行为请求正文,请求正文是可选的,它最常出现在 post 请求方式中,get 请求无正文,所以回车之后为空。示例如下:
请求行
由三部分构成:第一部分说明请求类型为 get 方法请求,第二部分(用/分开)是资源 URL,第三部分说明使用的是 HTTP1.1 版本。 GET /success.txt HTTP/1.1\r\n
常见的请求方法如下图所示:
其中用得最多的方法是 get 方法和 post 方法,二者的区别:
- get 直接在浏览器输入,post 需要工具发送请求;
- get 用 url 或者 cookie 传参,post 将数据放在 body 中;
- get 的 URL 有长度限制,post 数据可以非常大;
- post 比 get 安全,因为 URL 看不到数据;
- get 用来获取数据,post 用来发送数据。
请求头
请求头(消息头)包含(客户机请求的服务器主机名,客户机的环境信息等)。具体内容及含义如下:
- Accept:用于告诉服务器,客户机支持的数据类型 (例如:
Accept:text/html,image/*
); - Accept-Charset:用于告诉服务器,客户机采用的编码格式;
- Accept-Encoding:用于告诉服务器,客户机支持的数据压缩格式;
- Accept-Language:客户机语言环境;
- Host:客户机通过这个头,告诉服务器想访问的主机名;
- If-Modified-Since:客户机通过这个头告诉服务器,资源的缓存时间;
- Referer:客户机通过这个头告诉服务器,它(客户端)是从哪个资源来访问服务器的(防盗链);
- User-Agent:客户机通过这个头告诉服务器,客户机的软件环境(操作系统,浏览器版本等);
- Cookie:客户机通过这个头,将 Coockie 信息带给服务器;
- Connection:告诉服务器,请求完成后,是否保持连接;
- Date:告诉服务器,当前请求的时间。
请求正文
浏览器端通过 HTTP 协议发送给服务器的实体数据。get 请求时,通过 url 传给服务器的值 name=dylan&id=110
。post 请求时,通过表单发送给服务器的值。也可以为空。
HTTP响应
一个 HTTP 响应代表服务器端向客户端回送的数据,它包括:一个状态行,若干个消息头,以及实体内容。示例如下:
响应行
包括 HTTP 版本HTTP/1.1
,状态码200
,以及消息OK
; 其中 HTTP 响应常见的状态码及其含义如下:
响应头
响应头有若干个字段组合(根据具体情况选择),常见字段及其含义如下: Content-Type
:服务器给客户端传回来的文件格式; Content-Length
:这个是返回的实体在压缩之之后的长度为 8 byte; Last-Modified
:文档的最后改动时间; ETag
:这个响应头中有种Weak Tag
,值为W/“xxxxx”
。它声明Tag
是弱匹配的,只能做模糊匹配,在差异达到一定阈值时才起作用; Accept-Ranges
:表示该服务器是否支持文件的范文请求; Server
:设置服务器名称; Date
:当前 GMT 时间,这个就是你请求的东西被服务器创建的时间。
响应正文
响应包含浏览器能够解析的静态内容,例如:HTML,纯文本,图片等等信息。
Wireshark中加载保存的报文文件
利用抓包软件 Wireshark 进行抓包,过滤出 HTTP 协议报文。如下图:
查看报文内容:双击展开HTTP
请求和响应报文的内容。如下图:
为了避免网络原因带来的问题,完成任务时也可以通过加载以前保存的报文文件。如下图所示,在 Wireshark 的菜单中,依次单击“文件”-“打开”,选中需要加载的文件后,单击“打开”按钮文件中的报文就可以加载到 Wireshark 中,同样可以筛选出"HTTP"报文。
操作要求
双击打开桌面上的工作区文件夹"wireshark",再打开实训文件夹"myshixun",并查询到的信息保存到文件message-1.txt
。具体要求如下:
(1)打开 Wireshark,加载实训文件夹中的http-ethereal-trace-1
文件,并筛选出其中的“HTTP”报文;
(2)选择列表窗口第一条 HTTP 分组,获取分组信息;
(3)展开该 HTTP 分组,查看浏览器运行 HTTP 的版本号,并填写到文件中;
(4)查看 Accept-Language ,查看服务器接受哪种语言,并填写到文件中;
(5)查看客户端的 IP 地址,并填写到文件中;
(6)查看服务器的 IP 地址,并填写到文件中;
(7)选择列表窗口第二条 HTTP 分组,从响应报文中,展开 HTTP 查找服务器返回的状态编码,填写到文件中;
(8)再从响应报文中,查找Content-Length
,找到服务器返回的正文字节数,并填写到文件中;文章来源:https://www.toymoban.com/news/detail-765577.html
message-1.txt
文章来源地址https://www.toymoban.com/news/detail-765577.html
到了这里,关于第1关:HTTP 基本请求与应答的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!