京东可以免费做特效的网站,网站定制开发哪家厉害,南通seo排名公司,山西建设投资集团有限公司「作者主页」#xff1a;士别三日wyx 「作者简介」#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」#xff1a;对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 使用WireShark工具抓取「HTTP协议」的数据包#… 「作者主页」士别三日wyx 「作者简介」CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 使用WireShark工具抓取「HTTP协议」的数据包分析HTTP协议「执行流程」分析HTTP请求响应「报文」中各个字段的作用。 第一步访问百度第二步过滤HTTP协议的数据包第三步分析HTTP协议执行流程第四步分析HTTP协议报文第五步查看HTTP追踪流 第一步访问百度
1打开wireshark开启「抓包」在cmd中执行 curl -I baidu.com也就是访问百度触发HTTP协议。 2ping baidu.com 拿到百度的IP地址 第二步过滤HTTP协议的数据包
1「显示过滤器」输入 ip.addr 39.156.66.10过滤我和百度之间的数据包 第三步分析HTTP协议执行流程
HTTP是简单的「请求-响应协议」「建立TCP链接」后客户端向服务端发送「请求」服务端根据请求做出「响应」然后「关闭TCP链接」。 1先看前三个包HTTP是基于TCP的需要先通过「三次握手」建立连接 第一个包是「第一次握手」我192.168.2.121向百度39.156.66.10发送一个 SYN 表示这是一个「建立连接的请求」第二个包是「第二次握手」百度39.156.66.10响应我192.168.2.121一个 SYNACK 表示这是一个「接受连接的应答」第三个包是「第三次握手」我192.168.2.121向百度39.156.66.10发送一个 ACK 表示这一个「确认请求」发送完确认请求后我开启到百度的「单向连接通道」百度收到我的确认请求后就开启到我这边的单向连接通道「两边通道」都开启以后就可以通信了。
2再看中间三个包TCP连接建立以后开始「HTTP的请求和响应」 第一个包是我192.168.2.121向百度39.156.66.10发送了一个「HTTP请求」请求类型是HEAD第三个包是百度39.156.66.10向我192.168.2.121发送了一个「HTTP响应」响应状态码是 200 OK
3再看最后四个包请求响应结束后「TCP四次挥手」断开连接。 第一个包是第一次挥手我192.168.2.121向百度39.156.66.10发送一个FINACK表示这是一个释放连接的请求第二个包是第二次挥手百度39.156.66.10向我192.168.2.121响应一个ACK表示这是一个确认请求我收到后就会释放我到百度的单向连接第三个包是第三次挥手百度39.156.66.10向我192.168.2.121发送一个FINACK表示这是一个释放连接的请求第四个包是第四次挥手我192.168.2.121向百度39.156.66.10响应一个ACK表示这是一个确认请求百度收到后就会释放到我这边的单向连接双向的连接都释放后TCP连接就关闭了此次通信结束
第四步分析HTTP协议报文
HTTP协议请求、响应报文如下图
请求报文分为三个部分请求行、请求头、请求体响应报文分为四个部分状态行、响应头、响应空行、响应体
1先来看HTTP请求包找到HyperText Transfer Protocol这一栏就是HTTP的报文了 主要看我圈中的地方上面是请求行中间是请求头
请求行包含请求方法、请求URL、HTTP版本请求头包含请求的客户端的信息一行一个请求头请求体POST等类型的请求才有请求体这里没有
点开请求行看里面的三个字段 Request Method请求方法这里的请求方法是HEAD用来获取报文首部Request URI请求的URL因为我们没指定所以默认是/Request Version请求的版本因为用的是HTTP协议所以这里显示HTTP协议的版本
再看下面的几个请求头 Host目标主机User-Agent代理也就是浏览器的类型。我们用的不是浏览器所以这里显示的是命令curlAccept浏览器可接受的MIME类型
2再看HTTP响应包找到HyperText Transfer Protocol这一栏也就是HTTP的报文 注意看我圈中的地方上面是状态行下面是响应头。
状态行包含版本和响应状态码、状态信息响应头包含响应的服务器的资源信息一行一个响应头响应空行用来间隔/区分响应头和响应体响应体服务器响应的内容通常是一个HTML页面的代码或者给客户端的数据。
响应报文跟我们命令执行的返回结果其实是一样的。因为请求方式是 HEAD只是获取头部信息所有这里没有响应体但能明显看到最后多了一行空格也就是响应空行。 点开状态行可以看到里面有三个字段 Response Version响应版本因为使用的是HTTP协议所以这里显示了HTTP的版本Status Code响应状态码这里的 200 表示请求成功。Response Phrase响应状态码的提示信息
再看下面的这些响应头 Date服务端发送响应报文的时间Server服务器和相对应的版本Last-Modified请求的对象创建或者最后修改的时间ETag对象的标志值如果对象修改了这个值也会变用来判断对象是否改变Accept-Ranges支持的范围单位Content-Length内容长度Cache-Control缓存控制Expires这个时间前可以直接访问缓存副本Connection连接类型Keep-Alive表示这是一个长链接可以继续用这个连接通信Content-Type资源文件类型
第五步查看HTTP追踪流
选中HTTP协议的数据包 - 右键 - 【追踪流】-【HTTP追踪流】可以看到请求跟响应的报文
或者使用快捷键 ctrl alt shift h