网站群站优化,品牌网络推广运营公司,做网站行业现状,html静态网页制作成品目录 一、关于Wireshark
1.1、 什么是Wireshark
1.2、下载及安装
二、HTTP介绍
2.1、HTTP请求过程介绍
2.2 、TCP协议基础知识
2.2.1、概念介绍
2.2.2、TCP协议的工作原理
2.2.3、三次握手建立连接 2.3.4、四次挥手断开连接
2.3、Wireshark抓包分析过程
2.3.1、三次握…目录 一、关于Wireshark
1.1、 什么是Wireshark
1.2、下载及安装
二、HTTP介绍
2.1、HTTP请求过程介绍
2.2 、TCP协议基础知识
2.2.1、概念介绍
2.2.2、TCP协议的工作原理
2.2.3、三次握手建立连接 2.3.4、四次挥手断开连接
2.3、Wireshark抓包分析过程
2.3.1、三次握手
2.3.2、发送请求
2.3.3、服务器响应
2.3.4、四次挥手 一、关于Wireshark
1.1、 什么是Wireshark
Wireshark前身 Ethereal是一个网络包分析工具。该工具主要是用来捕获网络数据包并自动解析数据包为用户显示数据包的详细信息供用户对数据包进行分析。
它可以运行在 Windows 和 Linux 操作系统上。可以使用该工具捕获并分析各类协议数据包本文将讲解该工具的安装及基本使用方法。
1.2、下载及安装 Kali Linux 系统自带 Wireshark 工具而 Windows 系统中默认没有安装该工具。因此本节讲解如何在 Windows 系统中安装 Wireshark 工具。 打开网址 http://www.wireshark.org进入 Wireshark 官网如图所示。 选择合适的平台进行下载 一直下一步安装即可安装完打开Wireshark如下 二、HTTP介绍
HTTPHyperText Transfer Protocol超文本传输协议是用于传输超文本信息的协议它是互联网上应用最为广泛的一种网络协议。了解完整的HTTP请求过程有助于我们更深层次的去分析问题尤其是网络安全问题同时也更能清楚为什么现在网站很少再用HTTP了而改为使用更为安全的HTTPS协议。
2.1、HTTP请求过程介绍
HTTP连接本质就是使用TCP协议建立起的可靠连接进行请求发送与请求响应。HTTP请求过程大致可以分为五个步骤见上图每个步骤细节如下
DNS解析当客户端如浏览器尝试访问一个网站时它首先会尝试从本地缓存中查找域名对应的IP地址。如果本地缓存中没有找到客户端会发送DNS查询请求到本地的DNS服务器。 建立TCP连接客户端如浏览器向服务器发起连接请求通常使用TCP/IP协议建立一个到服务器的TCP连接。这个过程称为三次握手Three-way handshake确保连接的可靠性。客户端发送请求客户端向服务器发送HTTP请求消息。 服务端响应请求服务器接收到请求后会检查请求头和请求体然后根据请求方法如GET、POST和资源路径来决定如何响应。释放TCP连接请求完成后客户端和服务器可以关闭连接。
2.2 、TCP协议基础知识
2.2.1、概念介绍
TCPTransmission Control Protocol传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP是互联网核心协议之一位于OSI模型的传输层负责在互联网上的计算机之间提供可靠的数据传输服务。 2.2.2、TCP协议的工作原理
TCP连接的建立与断开正常过程至少需要客户端与服务端来回发送7个包请求才能完成。其中客户端发送4个1、3、4、7服务端发送3个256具体原理参照下图。 传输控制依赖首部包含的6个标志
URG:紧急指针ACK确认序号是否有效PSH:接收方应尽快将这个报文段交给应用层RST:重建连接SYN:同步序号用来发起一个连接FIN:发送端完成发送任务
2.2.3、三次握手建立连接
TCP建立连接的过程包括客户端和服务器总共发送3个包此过程称为三次握手 第一次握手客户端发送一个带有SYN标志的TCP段请求与服务器建立连接。 第二次握手服务器接收到SYN请求后发送一个带有SYN和ACK标志的TCP段作为响应。 第三次握手客户端接收到服务器的SYNACK响应后发送一个带有ACK标志的TCP段完成连接建立。 三次握手完成后便建立了TCP连接便可进行数据传输TCP负责将数据分割为多个段Segment并按顺序发送。 2.3.4、四次挥手断开连接
TCP断开连接的过程包括客户端和服务器总共发送4个包此过程称为四次挥手 第一次挥手客户端发送一个带有FIN标志的TCP段请求断开连接 第二次挥手服务器接收到FIN请求后发送一个带有ACK标志的TCP段作为响应 第三次挥手服务器发送一个带有FIN标志的TCP段请求断开连接 第四次挥手客户端接收到服务器的FIN请求后发送一个带有ACK标志的TCP段完成连接断开。
2.3、Wireshark抓包分析过程
①打开Wireshark工具选择以太网 因为此时捕获的是本地网络所以会有很多信息先不管 ②打开cmd窗口以此执行 ping www.baidu.com然后执行curl www.baidu.com 到这里我们执行的这两条命令Wireshark也已经捕获到了
为避免其他无用的数据包影响分析可在显示过滤器display filter输入过滤条件ip.addr ip.addr157.0.148.3 来自ping返回的百度ip过滤与百度发生交互的数据包 上半部分是ping命令的数据包不管下面的是curl命令的数据包我们以此来分析TCP连接的三次握手和四次挥手。
2.3.1、三次握手
前三个包完成了三次握手建立了连接。 第一个包是「第一次握手」我192.168.1.52向百度157.0.148.3发送一个 SYN 表示这是一个「建立连接的请求」 第二个包是「第二次握手」百度157.0.148.3响应我192.168.1.52一个 SYNACK 表示这是一个「接受连接的应答」 第三个包是「第三次握手」我192.168.1.52向百度157.0.148.3发送一个 ACK 表示这一个「确认请求」。 发送完确认请求后我开启到百度的单向连接通道百度收到我的确认请求后就开启到我这边的单向连接通道两边通道都开启以后就可以通信了。 2.3.2、发送请求
第一个HTTP协议包序号103执行了HTTP 的GET请求。 客户端向服务器发送HTTP请求消息。请求消息通常包括以下部分 请求行包含请求方法如GET、POST、请求的资源路径、HTTP版本。 请求头包含客户端信息、请求参数等例如User-Agent、Accept、Cookie等。 请求体对于某些请求方法如POST可能包含额外的数据用于向服务器发送信息。
点开请求行看里面的三个字段下图所示 Request Method请求方法这里的请求方法是GET Request URI请求的URI没指定默认是/因为我们只请求了域名www.baidu.com并没指定要获取的资源所以是默认的/ Request Version请求的版本因为用的是HTTP协议所以这里显示HTTP协议的版本。
再看下面的几个请求头 Host目标主机 User-Agent用户代理也就是浏览器的类型。由于我们没用浏览器所以这里显示的是命令curl版本为8.9.1 Accept浏览器可接受的MIMEMultipurpose Internet Mail Extensions类型。 浏览器通常使用 MIME 类型而不是文件扩展名来确定如何处理URL因此 We b服务器在响应头中添加正确的 MIME 类型非常重要。如果配置不正确浏览器可能会无法解析文件内容网站将无法正常工作并且下载的文件也会被错误处理。
2.3.3、服务器响应
第二个HTTP协议包序号106执行了HTTP响应。 状态行包含版本和响应状态码、状态信息 响应头包含响应的服务器的资源信息一行一个响应头 响应空行用来间隔/区分响应头和响应体 响应体服务器响应的内容通常是一个HTML页面的代码或者给客户端的数据上图中可以看到本次响应的内容是一个文件数据File Data。
点开状态行可以看到里面有三个字段 Response Version响应版本因为使用的是HTTP协议所以这里显示了HTTP的版本 Status Code响应状态码这里的 200 表示请求成功 Response Phrase响应状态码的提示信息。
最后看下几个响应头 Accept-Ranges: 告知客户端资源是否支持范围请求。当前取值bytes表明资源支持范围请求可以使用Range头进行请求。 Cache-Control: 控制缓存行为包括是否缓存、缓存的有效期、缓存策略等。 Connection: 服务器是否需要保持连接。 keep-alive表示服务器希望在发送响应后不立即关闭连接而是保持连接状态以供后续请求复用。这种设置可以提高服务器的响应效率减少TCP连接的建立和断开的开销特别是在处理大量并发请求的场景下。 Content-Length: 响应内容的字节数本例是2381字节。 Content-Type: 响应内容的类型和编码方式text/html。 Date: 指示响应消息生成的时间。 Etag: 资源的实体标签Entity Tag用于缓存控制和验证。 Last-Modified: 资源的最后修改时间 Pragma: 历史遗留的HTTP头它最初用于缓存控制但现在已不推荐使用。取值no-cache表明不使用缓存。 Server: 服务器的名称或版本。 Set-Cookie: 用于设置客户端的Cookie
当打开响应体会发现它的内容是明文的对于机密通信来说HTTP通信很容易产生信息泄露。另外以上介绍的整个交互过程中并不验证通信方的身份第三方可以冒充他人身份参与通信。后续会发图文详解带你搞清楚HTTPS协议的工作机制。 2.3.4、四次挥手
最后四个包通过四次挥手断开了连接。 第一个包是「第一次挥手」我192.168.1.52向百度157.0.148.3发送一个「FINACK」表示这是一个「释放连接」的请求 第二个包是「第二次挥手」百度157.0.148.3向我192.168.1.52响应一个「ACK」表示这是一个「确认请求」我收到后就会释放我到百度的单向连接 第三个包是「第三次挥手」百度157.0.148.3向我192.168.1.52发送一个「FINACK」表示这是一个「释放连接」的请求 第四个包是「第四次挥手」我192.168.1.52向百度36.155.132.76响应一个「ACK」表示这是一个「确认请求」百度收到后就会释放到我这边的单向连接。 双向的连接都释放后TCP连接就关闭了对于本例来说就是百度响应结束此次通信结束。