| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> Fiddler抓包系列教程-入门到精通(一)-HTTP和HTTPS基础知识 -> 正文阅读 |
|
[网络协议]Fiddler抓包系列教程-入门到精通(一)-HTTP和HTTPS基础知识 |
目录 5.2URL (Uniform Resource Locator) 有的小伙伴或者童鞋们可能会好奇地问小编,不是讲解和分享抓包工具了怎么这里开始讲解HTTP和HTTPS协议了。这是因为你对HTTP协议越了解,你就能越掌握Fiddler的使用方法,反过来你越使用Fiddler,就越能帮助你了解HTTP协议。 Fiddler无论对开发人员或者测试人员来说,都是非常有用的工具。 前言超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。 为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。 1.HTTP和HTTPS基本概念HTTP(HyperText Transfer Protocol:超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。简单来说就是一种发布和接收 HTML 页面的方法,被用于在 Web 浏览器和网站服务器之间传递信息。是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。 HTTP 默认工作在 TCP 协议 80 端口,用户访问网站 http:// 打头的都是标准 HTTP 服务。 HTTP 协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。 HTTPS(Hypertext Transfer Protocol Secure:超文本传输安全协议)是一种透过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 HTTPS协议的主要作用可以分为两种: 一种是建立一个信息安全通道,来保证数据传输的安全; 另一种就是确认网站的真实性。 2.什么是http请求和响应?http的工作方式为一个简单的客户端请求与服务端响应的应答过程。它指定了客户端发送给服务器什么样的消息形式以及得到什么样的消息响应,所有的www文件都必须遵循这个标准协议, 目的是提供一种发布和接收html页面的方法。举个例子比如说 客户端(浏览器)向服务器提交一个http请求, 那么服务器又会向客户端这边返回响应信息。而这些响应信息包含关于客户端请求的状态信息以及客户端所需要的内容信息。如下图所示: ? 3.http协议和web之间的本质http协议和web之间的本质说白了就是就是浏览器和服务器打交道的。客户端向服务器端发送Http请求,然后服务器端向客户端返回http响应! http协议:所谓协议,就是指双方遵循的规范。http协议,就是浏览器和服务器之间进行“沟通”的一种规范。, 也就是以这个规范来向服务器发起请求, 服务器才会给客户端进行正确的响应, 所以http有的时候也可以理解为是一种 规范、规则、标准。http协议是属于“应用层的协议”,而且是基于TCP/IP协议的, 也就是说http通信发生在TCP/IP链接之上。 通俗一点说http协议就是基于TCP的一种应用层协议 它不会关系数据传输的细节问题,也就是说你不用去关心它下层TCP的运行逻辑, 它的核心只在于用来规定客户端和服务端的数据传输格式。最早http是用来向客户端传输html文件内容,默认的端口80 4.http请求和响应的基本原理HTTP 消息是服务器和客户端之间交换数据的方式。有两种类型的消息︰ 请求(requests)-- 由客户端发送用来触发一个服务器上的动作;响应(responses)-- 来自服务器的应答。 任何一个http请求都只会分为两个部分: 一个请求报文另外一个是响应报文。 请求报文是客户端按照一定的格式生成一段文本,然后发给我们的服务端, 而服务器接收到了这样一个请求报文就会解析里面的内容进行处理,然后做出反馈,也就是响应。 响应报文也就是服务器端根据请求报文反馈给客户端的文本信息。 4.1http请求(request)报文基本结构http请求(request)也叫请求报文,一个基本的HTTP请求报文由请求行(request line)、请求头部(request header)、空行和请求数据4个部分构成。
说了这么多是不是有点懵有点晕,那小编就使用抓包工具抓取实际例子,我们具体看一下: 那么我们在学习http知识的时候 就可以先直接使用Fiddler来抓取一个http请求和http响应来先看看到底是什么东西!这样也有助于我们来更好地理解http。我们可以通过Fiddler抓取网络数据包的手段,就可以看到一个基本的http请求结构都包含哪些信息!例如一个GET方式的请求(Request)信息,如下图所示: ? 4.2http响应(response)报文基本结构http响应(response)也叫响应报文,一个基本的HTTP响应报文由响应行、响应头、空行和响应体4个部分构成。
其实响应报文比请求报文更加简单, 你只要能够搞懂请求报文 那么响应报文就很容易搞懂,同样的道理,我们可以通过Fiddler抓取网络数据包的手段,就可以看到一个基本的http响应结构都包含哪些信息。 例如一个POST方式的请求(Request)信息 如下:例如一个POST方式的请求(Request)信息,如下图所示: ? 怎么样是不是看这一大堆脑壳都大了一直稳稳地响个不停呢 ?感觉无从下手,更不用说学习了, 哈哈哈不要着急,跟着小编慢慢来学!😁😁😁 5.Http请求(Request)报文结构图解我们先来看一张请求(Request)图解,如下图所示: ? 然后小编来逐一解剖上图中的各个部分,解剖结果如下: 5.1请求方法 (Request method)我们常见的一些请求方式也就是POST/GET,当然还有其他的一些请求方式, 如下表所示:
5.2URL (Uniform Resource Locator)URL中文名为统一资源定位符 英文全称Uniform Resource Locator ,可以使用一个URL地址来描述一个网络上的资源,而HTTP的 URL具体由4部分组成:协议、主机、域名、端口、路径文件、[附加资源] URL的一般语法格式为:
1.协议 (protocol):指底层使用的协议类型,如:http、ftp、https、等... 2.主机名 (hostname) + 域名:HTTP服务器的IP或者域名。主机名+域名 例如: www.xsphp.com 3.端口 (port):HTTP服务器端口,端口是一个数字, 端口是可选的 省略时使用方案是服务器默认配置的端口。例如 80、8080、..各种传输协议都有默认的端口号,如http协议的默认端口为80,如果URL地址省略端口,则使用默认端口号。 注意:有时候出于安全或其他考虑,可以在服务器配置上对端口进行重新定义,也就是采用非标准端口号,那么此时,URL地址中就不能省略端口号这一项。 4.路径文件 (path):访问资源的路径。由零或多个/符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。例如: /tpl/index.php 5.查询参数 附加资源 (query-parameters):发送给HTTP服务器的数据。 这一项在URL中也是可选的 用于给动态网页如 PHP/JSP/ASP/ASP.NET等后端页面 传递参数的一种方式,并且如果是GET请求方法, 那么可有多个参数, 它们彼此用&符号隔开,每个参数的名和值用=符号隔开 语法格式: ?参数=值&参数2=值 以此类推。例如: ?id=33&age=25&name=zhangsan。举个例子:一个比较常见的url地址, 如:https://www.xxxx.net/xxxx/xxxx/xxxx/100?num=1001.2014.3001.5501 6.anchor:锚点 5.3请消息求头 (Request Header)1.请求消息头也叫消息头告诉服务器发送的是什么数据类型,编码类型、请求的是哪台主机、以及客户端浏览器的一些系统环境 等等前面已经说过了, 并且请求头是可以由开发人员根据需求去进行自定义的。 这些消息头中有很多头部字段名 和 对应的值它的格式为 name:value。我们常见的一些请求头如下表所示:
2.我们可以用Fiddler截取一个请求头看看,如下图所示: ? 5.4空行空白行:也就是在消息头结束的下方,会存在一个空白行, 这是必须存在的, 是由HTTP标准规定的! 5.5请求体请求体它的出现是要根据请求的方式不同而不同, 也就是如果是POST那么就会以键与值的形式进行发送, 如果是GET请求那么这里就不会包含请求正文内容。 从7.3小编抓包可以看出这里是一个json数据:
6.http响应(Response)报文结构图解同样我们先来看一张http响应(response)图解,如下图所示: 然后小编来逐一解剖上图中的各个部分,解剖结果如下: 6.1响应行响应行也叫状态行, 上图中响应行内部其实包含了3个重要的信息部分: HTTP协议的版本、HTTP状态码、HTTP的状态描述 1.HTTP协议的版本现目前都是HTTP/1.1 版本 这个没什么好说的! 2.HTTP状态码 可以用来表示网页服务器端给客户端返回的HTTP响应状态, 通常都是3位数字的代码, 而这些常见的状态码又可以分为几种提示类型: 🙂 如下表所示:
3.HTTP的状态描述是紧跟在状态码后面的英文单词 每一种具体类别状态码+状态描述可以参考下表:
6.2响应头 (Response Header)1.响应头也叫消息报头 也就是服务器端要告诉客户端的一些附加信息, 但是也有可能这些响应头是由后端开发人员进行自定义的! 而且这里的响应头跟请消头 很类似, 格式也基本一样, 它的格式为 name:value。具体小编这里也列举了一些常见的响应头 如下表所示:
小编这里只列举一下常见和常用的,其实还有更多的 2.我们可以用Fiddler截取一个响应头看看,如下图所示: 6.3空白行空白行也就是http规范制定的必须存在的一个空行, 空行的目的就是一种格式,也就是要告诉用户接下来的内容就是正文内容了! 6.4响应体响应体也就是实际从服务器返回给客户端的正文内容,也可能是一些字符串, 也可以是任意的格式: 响应体大多数情况下都是html、json、文本、xml 这些格式! 从8.2小编抓包可以看出这里是一个json数据:
7.小结1.HTTP 请求和响应具有相似的结构,由以下部分组成︰ (1)一行起始行用于描述要执行的请求,或者是对应的状态,成功或失败。这个起始行总是单行的。 (2)一个可选的 HTTP 头集合指明请求或描述消息正文。 (3)一个空行指示所有关于请求的元数据已经发送完毕。 (4)一个可选的包含请求相关数据的正文 (比如 HTML 表单内容), 或者响应相关的文档。正文的大小有起始行的 HTTP 头来指定。 起始行和 HTTP 消息中的 HTTP 头统称为请求头,而其有效负载被称为消息正文。 好了,对于Http和Https相关的的知识点小编就说这么多了, 最后就是我和朋友们花了半个多月编写整理下面的《自动化测试进阶路线》和配套【视频教程资源】,应该会给你带来很大的帮助和方向。:需要的朋友可以在文末打包获取。 ?测试开发工程师技能成长路径
从此再也不用为如何系统学习软件测试苦苦寻觅资源了,距离高薪你就只差行动了?
我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,所以,我和朋友特意花了一段时间整理编写了下面的《测试开发工程师学习路线》,也整理了不少【网盘资源】,需要的朋友可以点击下方箭头所指获取领取地址。希望会给你带来帮助和方向。 测试开发视频教程、学习笔记领取传送门!!! |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/28 5:55:06- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |