首页 > 其他分享 >HTTP 协议详解

HTTP 协议详解

时间:2024-07-09 14:58:37浏览次数:9  
标签:协议 Fiddler HTTP 请求 响应 详解 浏览器

1. HTTP 协议介绍
基本介绍:

HTTP(Hyper Text Transfer Protocol): 全称超文本传输协议,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。

HTTP 是一种应用层协议,是基于 TCP/IP 通信协议来传递数据的,其中 HTTP1.0、HTTP1.1、HTTP2.0 均为 TCP 实现,HTTP3.0 基于 UDP 实现。现主流使用 HTTP1.0 和 HTTP3.0

协议: 为了使数据在网络上从源头到达目的,网络通信的参与方必须遵循相同的规则,这套规则称为协议,它最终体现为在网络上传输的数据包的格式。

通俗点讲,协议就是要保证网络通信的双方,能够互相对接上号。就像是两个人传递纸条通过互相指定的暗号,如果发送天亮了,表示可以打游戏了等等

注意: 当我们访问一些网页时,是显示通过 HTTPS 来进行通信的,并且当下大多数的网页都是通过 HTTPS 来进行通信的,因为 HTTPS 在 HTTP 的基础上做了一个加密的工作。HTTPS 将在本文末尾具体介绍

2. HTTP 协议的工作过程
当我们在浏览器输入一个网址,此时浏览器就会给对应的服务器发送一个 HTTP 请求,对应的服务器收到这个请求之后,经过计算处理,就会返回一个 HTTP 响应。并且当我们访问一个网站时,可能涉及不止一次的 HTTP 请求和响应的交互过程。

基础术语:

客户端: 主动发起网络请求的一端
服务器: 被动接收网络请求的一端
请求: 客户端给服务器发送的数据
响应: 服务器给客户端返回的数据
HTTP 协议的重要特点: 一发一收,一问一答

注意: 网络编程中,除了一发一收之外,还有其它的模式

多发一收:例如上传大文件
一发多收:例如看直播时,搜索一个词条可以得到多个视频源
多发多收:例如串流(steam link、moonlight 等等)
3. Fiddler 抓包工具介绍
3.1 抓包工具的使用
当我们访问一个网站时,可能涉及不止一次的 HTTP 请求和响应的交互,为此为了更加清楚的了解我们访问一个网站时 HTTP 请求/协议是怎么交互的,由于 HTTP 是一个文本格式的协议,就可以通过以下两种方式:

方式一: 通过 F12 打开浏览器的开发者工具,点击 Network 标签页,然后刷新页面就行。显示的每一条记录都是一次 HTTP 请求/响应

这里通过访问搜狗浏览器为例,来进行演示

方式二(推荐): 抓包工具,这里以 Fiddler 为例,它能够直接读取你电脑上网卡的信息,网卡上有什么数据流动,它都能感知到并且显示出来

Fiddler 下载官网: https://www.telerik.com/fiddler

Fiddler 使用方式:

打开 Fiddler,然后打开你要访问的网站,访问该网站的 HTTP 请求和响应就会显示在 Fiddler 上

这里以访问搜狗浏览器为例,来进行演示

当我们选择好我们具体要查看的 HTTP/HTTPS 请求和响应时,右上栏就会显示具体的请求报文内容,右下角就会显示具体的响应报文内容(需要点击 Raw 标签来查看详细的数据格式)

请求和响应的详细数据,可以通过右下角的 view in Notepad 键通过记事本打开

为了方便我们抓取我们自己想查看的抓包结果,可以通过 ctrl + a 全选左侧的抓包结果,ctrl + x 删除选中的所有抓包结果,再进行网页的刷新就行

响应的正文往往是被显示在浏览器上,最常见的响应格式就是 html,很多网站返回的 html 是压缩过的(因为压缩之后,网络传输的数据量就变少了,即节省了网络带宽),所以需要进行解压缩 decode

注意: 直接安装的 Fiddler 是无法抓取 HTTPS 的请求的,需要按照以下步骤配置以下才能够抓取

3.2 抓包结果
接下来我们来抓取搜狗首页的 HTTP 请求,抓取到的结果如下

完整的 HTTP 请求:

完整的 HTTP 响应:

3.3 抓包工具原理
Fiddler 之所以能够获取到这些 HTTP 请求的详细情况,主要是因为此处的 Fiddler 相当于一个”代理“程序

代理,也可以理解为中介或代购,就比如你想通过中介去租房或者买房,你会将你的需求告诉给中介,中介就会去寻找房源并将找到的结果的详细情况反应给你。

上述我们通过 Fiddler 来抓取搜狗首页的 HTTP 请求时,首选我们会访问 sogo.con,即把 HTTP 请求发送给 Fiddler,Fiddler 再把请求转发给搜狗的服务器,当搜狗的服务器返回数据时,Fiddler 就会先拿到返回数据,再把数据交给浏览器
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/weixin_51367845/article/details/123313047

标签:协议,Fiddler,HTTP,请求,响应,详解,浏览器
From: https://blog.csdn.net/tyurtyuu/article/details/140296156

相关文章

  • HTTP与HTTPS
    一、HTTP的概念HTTP是超文本传输协议,是一种应用层协议,是基于为浏览器/服务器间提供统一的信息交换格式而出现的,其发展历程为HTTP/1.0、HTTP/1.1、HTTP/2、HTTP/3。1.HTTP版本区别HTTP/1.0:HTTP/1.0为短连接,即客户端单次请求后就关闭TCP连接。这样效率显然是很低的HTTP/1.1:H......
  • DLT698协议
    DLT698协议为提高用电信息采集系统的业务适应性、采集效率、安全性和数据溯源性,规范用电信息数据交换协议的通信架构、数据链路层、应用层、接口类与对象标识,制定本标准。使用范围本标准规定了用电信息数据交换协议的通信架构、数据链路层、应用层、接口类与对象标识。本标准适......
  • windows 7 安装IPP协议,支持Internet打印
    1windows7安装IPP协议,支持Internet打印#控制面板--打开或关闭Windows功能3复制Printers文件夹到c:\inetpub\wwwroot\,复制msw3prt.dll到c:\windows\system32\4打开IIs管理器#报错:模块列表中不存在此处理程序所需的指定模块。如果您添加脚本映射处理程序映......
  • 详解 | 什么是GeoTrust
    GeoTrust是一家全球知名的数字证书颁发机构(CertificateAuthority,简称CA),专注于提供SSL/TLS证书和其他相关的网络安全产品。1、历史背景:GeoTrust成立于2001年,最初作为一个独立的公司运营。2006年,GeoTrust被VeriSign收购。后来,在2010年,VeriSign的SSL业务又被Symantec收购。而现......
  • 单链表详解(1)
    一、顺序表的弊端1.往顺序表中间插入元素时时间要移动顺序表的一部分,当顺序表足够大时,这时时间复杂度会时O(n),运行效率会降低;2.顺序表在空间不够时增容用到realloc函数,这个函数需要拷贝原数据,申请新空间,释放旧空间,这也降低了运行效率;3.顺序表增容后可能存在空间浪费的问题......
  • 3.2 Ansible lineinfile模块详解
    1简介之所以专门说一说这个模块,是因为lineinfile在实际使用中非常有用。lineinfile模块用于在源文件中插入、删除、替换行,和sed命令的功能类似,也支持正则表达式匹配和替换。实际上,在大多数时候,我们在linux上的操作,就是针对文件的操作,通过配置管理工具对配置文件作统一的配置修......
  • 2 Ansible Inventory配置详解
    在使用Ansible来批量管理主机的时候,通常我们需要先定义要管理哪些主机或者主机组,而这个用于管理主机与主机组的文件就叫做Inventory,也叫主机清单。AnsibleInventory是包含静态Inventory和动态Inventory两部分的,静态Inventory指的是在文件中指定的主机和组,动态Inventory......
  • 详解Web应用安全系列(10)文件上传漏洞
    文件上传漏洞(FileUploadVulnerabilities)是Web攻击中常见的一种安全漏洞,它允许攻击者上传并执行恶意文件,从而可能对Web服务器造成严重的安全威胁。一、定义与原理文件上传漏洞是指Web应用程序在处理用户上传的文件时,由于缺乏对上传文件的类型、大小、内容等属性的严格检查和......
  • MySQL 进阶(二)【索引详解】
    前言    程序员避不开和数据库打交道,大数据更是如此,不管是MySQL、Oracle、SQLServer这些OLTP数据库,还是Greeplum、StarRocks、Hive、SparkSQL、FlinkSQL、ClickHouse等OLAP数据库,SQL都是最基础最重要的能力,数据库知识也是每一个程序员必备的知识。  ......
  • Python的utils库详解
    Python的utils库并不是一个官方标准库,而是指一系列提供实用功能的工具库或模块,这些库或模块通常包含了一系列帮助开发人员加速日常工作、提高开发效率的工具函数或类。由于Python社区的开放性和活跃性,存在多个不同的utils库,每个库都有其特定的功能和用途。不过,尽管没有一个统一......