| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 第一:Fiddler抓包教程(1)-HTTP和HTTPS基础知识 -> 正文阅读 |
|
[网络协议]第一:Fiddler抓包教程(1)-HTTP和HTTPS基础知识 |
一.前言 1.超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。 2.为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。 二.HTTP和HTTPS基本概念 1.HTTP超文本传输协议是一种用于分布式、协作式和超媒体信息系统的应用层协议。 简单来说就是一种发布和接收 HTML 页面的方法,被用于在Web浏览器和网站服务器之间传递信息。是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准TCP,用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。 2.HTTP 默认工作在 TCP 协议80端口,用户访问网站 http:// 打头的都是标准 HTTP服务。 3.HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。 4.HTTPS超文本传输安全协议是一种透过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 5.HTTPS协议的主要作用可以分为两种: 5.1.一种是建立一个信息安全通道,来保证数据传输的安全 5.2.另一种就是确认网站的真实性。 三.什么是http请求和响应? 1.HTTP的工作方式为一个简单的客户端请求与服务端响应的应答过程。它指定了客户端发送给服务器什么样的消息形式以及得到什么样的消息响应,所有的www文件都必须遵循这个标准协议, 目的是提供一种发布和接收html页面的方法。 2.举个例子比如说:客户端(浏览器)向服务器提交一个http请求, 那么服务器又会向客户端这边返回响应信息。而这些响应信息包含关于客户端请求的状态信息以及客户端所需要的内容信息。 四.http协议和web之间的本质 1.http协议和web之间的本质就是浏览器和服务器打交道的。客户端向服务器端发送Http请求,然后服务器端向客户端返回http响应。 2.http协议:所谓协议,就是指双方遵循的规范。http协议就是浏览器和服务器之间进行“沟通”的一种规范,也就是以这个规范来向服务器发起请求,服务器才会给客户端进行正确的响应,所以http有的时候也可以理解为是一种规范、规则、标准。http协议是属于“应用层的协议”,而且是基于TCP/IP协议的,也就是说http通信发生在TCP/IP链接之上。 3.通俗说http协议就是基于TCP的一种应用层协议它不会关系数据传输的细节问题,也就是说不用去关心它下层TCP的运行逻辑,它的核心只在于用来规定客户端和服务端的数据传输格式。最早http是用来向客户端传输html文件内容,默认的端口80 五.扩展:iso网络七层模型 1.如果接触过socket网络编程,就应该明白TCP和UDP这两种使用广泛的通信协议(建立连接、三次握 手等等。 2.既然TCP/UDP是广泛使用的网络通信协议,那为啥有多出个http协议来呢? 3.TCP协议是基于连接和三次握手的,虽然具有可靠性,但人具有一定的缺陷。但试想一下,普通的C/S架构软件,顶多上千个Client同时连接,而B/S架构的网站,十万人同时在线也是很平常的事儿。如果十万个客户端和服务器一直保持连接状态,那服务器如何满足承载呢? 4.这就衍生出了http协议。基于TCP的可靠性连接。通俗点说,就是在请求之后,服务器端立即关闭连接、释放资源。这样既保证了资源可用,也吸取了TCP的可靠性的优点。 5.正因为这点,所以大家通常说http协议是“无状态”的,也就是“服务器不知道你客户端干了啥”,其实很大程度上是基于性能考虑的。以至于后来有了session之类的玩意。 6.通俗点说http,就是在请求和响应之后,服务器端立即关闭连接,并释放资源,这样既保证了资源可显示与可用性,也吸取了TCP协议的可靠性优点,但是缺点就无法跟踪用户的操作了,所以在后端开发的学习中才会接触一个东西叫session和cookie技术。 7.所以也可以理解为http是基于请求与响应的模式,并且是无状态的应用层协议。 六.http请求和响应的基本原理 1.HTTP消息是服务器和客户端之间交换数据的方式。 2.有两种类型的消息︰ 2.1.请求(requests)–由客户端发送用来触发服务器上的动作 2.2.响应(responses)–来自服务器的应答 3.任何http请求都只会分为两个部分: 一个请求报文另外一个是响应报文。 4.请求报文是客户端按照一定的格式生成一段文本,然后发给服务端,而服务器接收到了这样的请求报文就会解析里面的内容进行处理,然后做出反馈,也就是响应。 5.响应报文也就是服务器端根据请求报文反馈给客户端的文本信息。 七.http请求(request)报文基本结构 1.http请求(request)也叫请求报文,一个基本的HTTP请求报文由请求行(request line)、请求头部(request header)、空行和请求数据4个部分构成。
2.使用抓包工具抓取实际例子:通过Fiddler抓取网络数据包的手段,就可以看到一个基本的http请求结构都包含哪些信息。 3.例如:一个post方式的请求(Request)信息 八.http响应(response)报文基本结构 1.http响应(response)也叫响应报文,一个基本的HTTP响应报文由响应行、响应头、空行和响应体4个部分构成。
2.其实响应报文比请求报文更加简单, 只要能够搞懂请求报文 那么响应报文就很容易搞懂,同样的道理,可以通过Fiddler抓取网络数据包的手段,就可以看到一个基本的http响应结构都包含哪些信息。 3.例如:一个POST方式的请求(Request)信息 九.Http请求(Request)报文结构图解 1.请求方法 (Request method):常见的一些请求方式也就是POST/GET,当然还有其他的一些请求方式 2.URL:URL中文名为统一资源定位符,可以使用一个URL地址来描述一个网络上的资源,而HTTP的GET、POST、PUT、DELETE对应着对这个资源的查、改、增、删四个操作。网络中的每一信息资源都有统一的且在网上唯一的地址! 3.URL具体由4部分组成:协议、主机、域名、端口、路径文件、[附加资源] 4.URL的一般语法格式为:
4.1.协议 (protocol):指底层使用的协议类型,如:http、ftp、https等 4.2.主机名 (hostname) + 域名:HTTP服务器的IP或者域名。主机名+域名 例如: www.xsphp.com 4.3.端口 (port):HTTP服务器端口,端口是一个数字, 端口是可选的 省略时使用方案是服务器默认配置的端口。例如 80、8080、…各种传输协议都有默认的端口号,如http协议的默认端口为80,如果URL地址省略端口,则使用默认端口号。 注意:有时候出于安全或其他考虑,可以在服务器配置上对端口进行重新定义,也就是采用非标准端口号,那么此时,URL地址中就不能省略端口号这一项。 4.4.路径文件 (path):访问资源的路径。由零或多个/符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。例如: /tpl/index.php 4.5.查询参数 附加资源 (query-parameters):发送给HTTP服务器的数据。 4.5.1.这一项在URL中也是可选的 用于给动态网页如 PHP/JSP/ASP/ASP.NET等后端页面 传递参数的一种方式,并且如果是GET请求方法,那么可有多个参数,它们彼此用&符号隔开,每个参数的名和值用=符号隔开。 4.5.2.语法格式: ?参数=值&参数2=值 以此类推。例如: ?id=33&age=25&name=zhangsan。举个例子:一个比较常见的url地址, 如:https://www.xxxx.net/xxxx/xxxx/xxxx/100?num=1001.2014.3001.5501 5.anchor:锚点 6.请消息求头 (Request Header) 6.1.请求消息头也叫消息头告诉服务器发送的是什么数据类型,编码类型、请求的是哪台主机、以及客户端浏览器的一些系统环境 等等前面已经说过了, 并且请求头是可以由开发人员根据需求去进行自定义的。 6.2.这些消息头中有很多头部字段名 和 对应的值它的格式为 name:value。
6.4.请求体:请求体它的出现是要根据请求的方式不同而不同,也就是如果是POST那么就会以键与值的形式进行发送,如果是GET请求那么这里就不会包含请求正文内容。 6.5.从抓包可以看出这里是一个json数据
十.http响应(Response)报文结构图解 1.响应行也叫状态行, 上图中响应行内部其实包含了3个重要的信息部分:HTTP协议的版本、HTTP状态码、HTTP的状态描述 2.HTTP协议的版本现目前都是HTTP/1.1 3.HTTP状态码:可以用来表示网页服务器端给客户端返回的HTTP响应状态,通常都是3位数字的代码 4.HTTP的状态描述是紧跟在状态码后面的英文单词 1xx: 提示消息类型 2xx: 成功消息类型 3xx: 重定向类型 4xx: 客户端错误信息 5xx: 服务器错误信息 5.响应头 (Response Header):也叫消息报头也就是服务器端要告诉客户端的一些附加信息
7.响应体:也就是实际从服务器返回给客户端的正文内容,也可能是一些字符串, 也可以是任意的格式。 8.响应体大多数情况下都是html、json、文本、xml 这些格式!
十一.小结 1.HTTP请求和响应具有相似的结构,由以下部分组成︰ (1)一行起始行用于描述要执行的请求,或者是对应的状态,成功或失败。这个起始行总是单行的。 (2)一个可选的 HTTP 头集合指明请求或描述消息正文。 (3)一个空行指示所有关于请求的元数据已经发送完毕。 (4)一个可选的包含请求相关数据的正文 (比如 HTML 表单内容),或者响应相关的文档。 正文的大小有起始行的 HTTP 头来指定。 2.起始行和 HTTP消息中的 HTTP 头统称为请求头,而其有效负载被称为消息正文。 |
|
网络协议 最新文章 |
使用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年11日历 | -2024/11/25 20:50:36- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |