结合Wireshark讲解HTTP协议及TCP三次握手

admin 2024年2月28日13:39:58评论9 views字数 3023阅读10分4秒阅读模式

本文为芳华绝代安全团队原创,未经授权不得转载。HTTP前言
HTTP(Hypertext Transfer Protocol,超文本传输协议)是一个简单的请求-响应协议,它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。

HTTP协议在Wireshark数据包中是如何体现的?在此之前,先熟悉HTTP协议流程。

关于HTTP的结构学习可跳转:一文讲清 HTTP协议

HTTP协议流程

在 HTTP 协议中,客户端发送请求包到服务器,服务器接收请求并返回响应包给客户端。流程如下:

1.客户端发起请求:

  • 客户端构建一个 HTTP 请求包,包括请求行、请求头和请求主体。

  • 请求行包含请求方法(GET、POST、PUT等)、请求的 URI(Uniform Resource Identifier)以及协议版本。

  • 请求头包含关于请求的附加信息,例如 Host、User-Agent、Content-Type 等。

  • 如果有请求主体,比如在 POST 请求中传递表单数据,它会被包含在请求主体中。

2.服务器接收请求:

  • 服务器接收到客户端发送的请求包。

  • 服务器解析请求行,确定请求的方法、URI 和协议版本。

  • 服务器解析请求头,获取关于请求的附加信息。

3.服务器处理请求:

  • 服务器根据请求的方法和 URI,执行相应的操作,例如获取资源、处理表单数据等。

  • 服务器生成响应内容,包括响应状态行、响应头和响应主体。

4.服务器发送响应

  • 服务器构建一个 HTTP 响应包,包括响应状态行、响应头和响应主体。

  • 响应状态行包含响应的状态码(例如 200 表示成功,404 表示未找到等)和状态描述。

  • 响应头包含关于响应的附加信息,例如 Content-Type、Content-Length 等。

  • 响应主体包含实际的响应内容,例如 HTML 页面、JSON 数据等。

5.客户端接收响应:

  • 客户端接收到服务器发送的响应包。

  • 客户端解析响应状态行,获取响应的状态码和状态描述。

  • 客户端解析响应头,获取关于响应的附加信息。

  • 如果有响应主体,客户端会读取响应主体中的数据。


6.客户端处理响应:

  • 客户端根据响应的状态码和状态描述,决定如何处理响应结果。

  • 客户端可以解析响应主体中的数据,根据需要进行显示、处理或其他操作。

Wireshark抓包分析

访问百度,触发HTTP协议:结合Wireshark讲解HTTP协议及TCP三次握手
ping命令得到ip后,用ip.addr过滤数据包:结合Wireshark讲解HTTP协议及TCP三次握手
结合Wireshark讲解HTTP协议及TCP三次握手

重点观察中间红框内的三个包

第一个包的内容:结合Wireshark讲解HTTP协议及TCP三次握手
讲解:

请求包包括请求行(包含请求方法、请求URL、HTTP版本)、请求头(包含请求的客户端的信息)、请求体(POST等类型的请求含有请求体)。

第一个包为请求包,先看请求行:

  • REQUEST METHOD:HEAD 表示请求方法为head,用来获取报文首部;

  • REQUEST URI:/ 表示我们没有请求特定的url,默认为/;

  • REQUEST VERSION:HTTP/1.1 表示HTTP版本为1.1。


再看请求头:
请求头的存在形式是每个请求头占一行

  • Host:baidu.comrn 表示目标主机为baidu.com,并且以 rn 结尾以便与下一个请求头字段进行分隔。

  • User-Agent表示代理,即浏览器类型,由于我们使用的是curl命令,所以显示curl/8.4.0。

  • Accept:浏览器可接受的MIME类型,这里为/,表示可以接受任何类型的响应,包括文本、图像、音频、视频等。

由于我们没有进行POST等请求,因此没有请求体。

接着观察第三个包

第三个包为响应包

结合Wireshark讲解HTTP协议及TCP三次握手
讲解:
状态行:包含响应版本和响应状态码、提示信息
响应头(以每个占一行的形式存在):包含响应的服务器的资源信息

先看状态行:

结合Wireshark讲解HTTP协议及TCP三次握手

  • Response Version:响应版本,这里表示版本为HTTP/1.1。

  • Status Code:响应状态码,这里 200 表示请求成功。

  • Response Phrase:响应状态码的提示信息,OK表示成功响应。


再看响应头:

结合Wireshark讲解HTTP协议及TCP三次握手1.Date表示服务端(即baidu.com)发送响应报文的时间
2.Server表示服务器版本
3.Last-Modified表示请求的对象创建或者最后修改的时间
4.ETag表示对象的标志值,如果对象修改了,这个值也会改变。
5.Accept-Ranges表示支持的范围单位,图中表示该服务器支持按字节范围请求资源
6.Content-Length表示内容长度,图中表示内容长度为81。
7.Cache-Control缓存控制,它指定了资源在被缓存之后可以被重用的最长时间,以秒为单位。图中"max-age=86400" 表示资源可以在缓存中保留一天(24小时)。
8.Expires表示该资源的缓存有效期截止时间,这个时间前,可以直接访问缓存副本。
9.Connection:连接类型,Keep-Alive表示这是一个长链接,可以继续用这个连接通信。
10.Content-Type用于指示响应主体的媒体类型,图中 "text/html" 表示响应的主体是 HTML 格式的文本内容,这意味着客户端收到这个响应后会知道要以 HTML 的方式进行解析和显示。

请求及响应报文可以通过追踪HTTP流显示:结合Wireshark讲解HTTP协议及TCP三次握手

TCP三次握手前言

TCP(传输控制协议)是一种面向连接的、可靠的传输层协议。在建立 TCP 连接时,需要进行三次握手,防止因为网络延迟、拥塞等原因导致的数据丢失或错误传输,确保双方都能够正常通信。

TCP三次握手在Wireshark数据包中是如何体现的?在此之前,先熟悉TCP三次握手的流程。

TCP三次握手流程

1.客户端发送 SYN 请求报文:

  • 客户端选择一个初始序列号(seq)并将 SYN 标志位置为 1,表示请求建立连接。

  • 客户端将该 SYN 报文发送给服务端,并进入 SYN_SET 状态,等待服务端的响应。


2.服务端接收 SYN 请求报文:

  • 服务端接收到客户端发来的 SYN 请求报文。

  • 服务端将 SYN 标志位置为 1,ACK 标志位置为 1,表示同意建立连接。

  • 服务端选择一个自己的初始序列号(seq)并分配资源,发送 SYN+ACK 响应报文给客户端。

3.客户端接收 SYN+ACK 响应报文:

  • 客户端接收到服务端发来的 SYN+ACK 响应报文。

  • 客户端将 ACK 标志位置为 1,表示确认服务端的同意。

  • 客户端将该 ACK 报文发送给服务端,建立起连接。


完成以上三个步骤后,TCP 连接建立成功,双方可以开始进行数据传输。

Wireshark抓包分析
第一步:开启抓包,ping百度结合Wireshark讲解HTTP协议及TCP三次握手第二步:过滤目标主机地址结合Wireshark讲解HTTP协议及TCP三次握手可以看到三个TCP数据包,下面进行逐个分析。

第一次握手数据包

结合Wireshark讲解HTTP协议及TCP三次握手由上图可以看到,seq为0,表示客户端的初始序列号为0;ack为0,代表本机还未确认服务端的同意;syn为1并进入set状态,说明本机请求建立连接并等待baidu.com的响应

第二次握手数据包

结合Wireshark讲解HTTP协议及TCP三次握手由上图可以看到,seq为0,表示服务端的初始序列号为0;ack为1,代表baidu.com同意接受连接;syn为1并进入set状态,说明baidu.com等待本机的响应

第三次握手数据包

结合Wireshark讲解HTTP协议及TCP三次握手由上图可以看到,seq为1,表示客户端期望收到的下一个序列号是1;ack为1代表本机同意接受连接;syn为1并进入set状态,表示确认服务端(baidu.com)的同意(即确认服务器的序列号为0)

至此,TCP三次握手就完成了,客户端(本机)将与服务端建立起连接

芳华绝代安全团队现已推出Web安全渗透教程,欢迎学习:
https://space.bilibili.com/602205041
结合Wireshark讲解HTTP协议及TCP三次握手

原文始发于微信公众号(芳华绝代安全团队):结合Wireshark讲解HTTP协议及TCP三次握手

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月28日13:39:58
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   结合Wireshark讲解HTTP协议及TCP三次握手https://cn-sec.com/archives/2530760.html

发表评论

匿名网友 填写信息