wireshark工具

  • 一、wireshark分析示例
    • 二、curl命令查看HTTP响应头信息

一、wireshark分析示例

1.清空缓存
在进行跟踪之前,首先清空Web浏览器的高速缓存来确保Web网页是从网络中获取的,而不是从高速缓冲中取得的。之后,还要在客户端清空DNS高速缓存,来确保Web服务器域名到IP地址的映射是从网络中请求。
2.启动wireshark

3.选择接口en0,开始捕获。

4.在浏览器地址栏中输入www.baidu.com,在过滤器中选择HTTP,点击apply。


5.分析数据
在协议框中选择“GET/HTTP/1.1”所在的分组会看到这个基本请求行后跟随着一系列额外的请求首部。在首部后的“\r\n”表示一个回车和换行,以此将该首部与下一个首部隔开。
“Host”首部在HTTP1.1版本中是必须的,它描述了URL中机器的域名,本测试中是www.baidu.com。这就允许了一个Web服务器在同一时间支持许多不同的域名。有了这个首部,Web服务器就可以区别客户试图连接哪一个Web服务器,并对每个客户响应不同的内容。
User-Agent首部描述了提出请求的Web浏览器及客户机器。
接下来是一系列的Accpet首部,包括Accept、Accept-Language、Accept-Encoding、Accept-Charset。它们告诉Web服务器客户Web浏览器准备处理的数据类型。Web服务器可以将数据转变为不同的语言和格式。这些首部表明了客户的能力和偏好。
Keep-Alive及Connection首部描述了有关TCP连接的信息,通过此连接发送HTTP请求和响应。它表明在发送请求之后连接是否保持活动状态及保持多久。大多数HTTP 1.1连接是持久的(persistent),意思是在每次请求后不关闭TCP连接,而是保持该连接以接受从同一台服务器发来的多个请求。

已经查看了由Web浏览器发送的请求,现在来观察Web服务器的应答。响应首先发送“HTTP/1.1 200 ok”,指明它开始使用HTTP 1.1版本来发送网页。同样,在响应分组中,它后面也跟随着一些首部。最后,被请求的实际数据被发送。第一个Cache-control首部,用于描述是否将数据的副本存储或高速缓存起来,以便将来引用。一般个人的Web浏览器会高速缓存一些本机最近访问过的网页,随后对同一页面再次进行访问时,如果该网页仍存
储于高速缓存中,则不再向服务器请求数据。在HTTP请求中,Web服务器列出内容类型及可接受的内容编码。此例中Web服务器选择发送内容的类型是text/html。

二、curl命令查看HTTP响应头信息

客户端(浏览器)从服务器请求数据经历如下基本步骤:

1.用户发起一个http请求,缓存获取到URL,根据URL查找是否有匹配的副本,这个副本可能在内存中,也可能在本地磁盘。2.如果请求命中本地缓存则从本地缓存中获取一个对应资源的"copy"。3.检查这个"copy"是否过期,没过期则直接返回,过期则继续向服务器转发请求。
HTTP中,通过Cache-Control首部和Expires首部为文档指定了过期时间,通过对过期时间的判断,缓存就可以知道文档是不是在保质期内。
Expires首部和Cache-Control:max-age首部都是来告诉缓存文档有没有过期,为什么需要两个响应首部来做这件简单的事情?
其实这一切都是历史原因,Expires首部是HTTP 1.0中提出来的,因为使用的是绝对日期,如果服务端和客户端时钟不同步的话(实际上这种情况非常常见),缓存可能就会认为文档已经过了保质期。4.服务器接收到请求,然后判断资源是否变更,是则返回新内容,否则返回304,未变更,更新过期时间。


命令行输入命令

[root@localhost ~]# curl -I http://www.baidu.com/
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Connection: keep-alive
Content-Length: 277
Content-Type: text/html
Date: Mon, 22 Feb 2021 07:42:44 GMT
Etag: "575e1f59-115"
Last-Modified: Mon, 13 Jun 2016 02:50:01 GMT
Pragma: no-cache
Server: bfe/1.0.8.18

HTTP响应头的信息
(1)HTTP返回码

状态码 意义
1xx client的请求,server已经接收,正在处理。
2xx 成功。表示client请求,server端已经接收、理解并处理。
3xx client请求被重定向其它的server(其它的URL)。
4xx 表示client请求不正确,server不能识别。
5xx server端服务不正常。

(2)Cache-Control
web站点对缓存的设置:Cache-Control指定请求和响应遵循的缓存机制。
缓存分类

私有缓存:常见就是浏览器里内置的缓存。公有缓存:常见的就是代理缓存。

Cache-Control可选的参数:private、public、no-cache、max-age、must-revalidate等。

no-cache:响应不会被缓存,而是实时向服务器端请求资源。no-store:在任何条件下,响应都不会被缓存,并且不会被写入到客户端的磁盘里,这也是基于安全考虑的某些敏感的响应才会使用这个。Private:指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅描述当前用户的部分响应消息,此响应消息对于其他用户的请求无效。不能在用户间共享。Public:响应会被缓存,并且在多用户间共享。正常情况,如果要求HTTP认证,响应会自动设置为private。max-age:指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。
例如:Cache-control: max-age=5表示当访问此网页后的5秒内再次访问不会去服务器。must-revalidate:响应在特定条件下会被重用,以满足接下来的请求,但是它必须到服务器端去验证它是不是最新的(强制所有缓存都验证响应)。proxy-revalidate:类似于must-revalidate,它要求对公共缓存进行验证。

(3)Connection
server是否支持长连接;如果是keep-alive,说明web的server支持长连接。但是TCP的长连接是双向的;必须是client和server都支持长连接,才可以建立长连接。
一般client浏览器都是默认支持长连接;所以只要sever端支持长连接,就可以建立长连接。
通过curl的-w参数可以自定义curl的输出,%{http_code}代表http状态码。

[root@localhost ~]# curl -I -o /dev/null -s -w %{http_code}"\n" www.baidu.com
200

wireshark分析http协议详解相关推荐

  1. DNS协议详解及报文格式分析

    https://blog.csdn.net/tianxuhong/article/details/74922454 目录 一. DNS协议理论知识 1.1. 域名结构 1.2. 域名服务器 1.3. ...

  2. FPGA学习之路—接口(2)—I2C协议详解+Verilog源码分析

    FPGA学习之路--I2C协议详解+Verilog源码分析 定义 I2C Bus(Inter-Integrated Circuit Bus) 最早是由Philips半导体(现被NXP收购)开发的两线时 ...

  3. 网络-IP协议详解(报文格式、分类、NAT、子网、CIDR、抓包分析)

    目录 简介 报文格式 IPv4地址 分类 网络地址转换NAT 子网划分与子网掩码 CIDR 实战 参考 简介 IP(网际互连协议,Internet Protocol)是TCP/IP协议族中最为核心的协 ...

  4. nbns协议_网络协议详解1 - NBNS

    NetBIOS 简介 NetBIOS,Network Basic Input/Output System的缩写,一般指用于局域网通信的一套API,相关RFC文档包括 RFC 1001, RFC 100 ...

  5. TCP/IP网络协议栈:ARP协议详解

    <TCP/IP网络协议栈:以太网数据包结构.802.3> <TCP/IP网络协议栈:ARP协议详解> <TCP / IP攻击:ARP缓存中毒的基本原理.TCP序列号预测和 ...

  6. RTMP协议封装H264和H265协议详解

    RTMP协议封装H264和H265协议详解 文章目录 RTMP协议封装H264和H265协议详解 1 RTMP和FLV 2 RTMP协议封装H264视频流 2.1 RTMP发送AVC sequence ...

  7. ARP协议详解之Gratuitous ARP(免费ARP)

    ARP协议详解之Gratuitous ARP(免费ARP) Gratuitous ARP(免费ARP) Gratuitous ARP也称为免费ARP,无故ARP.Gratuitous ARP不同于一般 ...

  8. HTTP协议详解(真的很经典)

    转自:http://blog.csdn.net/gueter/archive/2007/03/08/1524447.aspx Author :Jeffrey 引言 HTTP是一个属于应用层的面向对象的 ...

  9. Http协议 详解(转载)

    http://blog.csdn.net/gueter/archive/2007/03/08/1524447.aspx 引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分 ...

最新文章

  1. python函数可选参数传递_Python中函数的参数传递
  2. 获取web.py上面的示例code
  3. 解决问题Can’t connect to local MySQL server through socket
  4. Laravel 多用户认证
  5. Web程序员的Mysql进阶序二之sql多条数据插入、多条数据更新、多表同时查询
  6. [LeetCode]Distinct Subsequences,解题报告
  7. B君的圆锥(51Nod-1629)
  8. 用异或的性质实现简单加密解密
  9. echart vue 图表大小_vue中echarts图表大小适应窗口大小且不需要刷新案例
  10. oir 用image j打开的插件_Windows 上使用 VSCode Remote 插件进行远程开发
  11. 三进制计算机_要做一个编程界优秀的攀登者,首先要认真计算机中的0和1
  12. android eventbus view,Android-EventBus框架详细介绍与简单实现
  13. 高精度地图领域常见术语解释
  14. 龙芯2F处理器PMON的编译、加载
  15. 原创 | 最近程序员频繁被抓,如何避免面向监狱编程?!
  16. 微信添加好友、加群的限制
  17. java系统化基础-day02-运算符、选择结构、循环结构
  18. 2022最受欢迎开源免费CMS建站系统排行榜
  19. 2021-2027全球与中国自动卡车装卸系统市场现状及未来发展趋势
  20. 熏蒸也要有讲究,蒸妙十三坊让熏蒸更有针对性

热门文章

  1. 点击pv转化率_点击转化率缩写
  2. 无盘服务器要开ahci,开启硬盘的ahci模式提升磁盘性能教程
  3. labview 嵌入matlab,labview中嵌入matlab
  4. 常用的算法最好的讲解地址
  5. 360环物如何发布html,制作网页上的360度旋转全景图PixMaker使用详细教程
  6. QDir 类 -属性详解
  7. 关于单片机IO口输入输出的理解!
  8. 各种License介绍
  9. 有感FOC算法学习与实现总结(转)
  10. MATLAB批量处理