HTTP 和 HTTPS(请求响应报文格式 + 请求方法 + 响应状态码 + HTTPS 加密流程 + Cookie 和 Session)

简介: 1. HTTP 是什么2. HTTP 请求报文和响应报文的格式1)请求报文格式2)响应报文格式3)报文中空行的作用3. HTTP 的长连接和短连接4. URL1)在浏览器中输入 www.baidu.com 后执行的全部过程5. HTTP 常用的请求方法6. GET 和 POST 的区别7. HTTP 常见的响应状态码8. HTTPS 是什么1)SSL 协议9. HTTPS 怎么进行 “加密”1)对称加密2)非对称加密3)CA 证书4)HTTPS 加密的完整流程10. HTTPS 的优缺点11. HTTPS 和 HTTP 的区别

1. HTTP 是什么

HTTP 全称 “ 超文本传输协议 ”,是一种基于传输层 TCP 协议实现的应用非常广泛的 应用层协议


我们平时打开一个网站,就是通过 HTTP 协议来传输数据的


当我们在浏览器中访问一个 “ 网址 ”(URL),浏览器就会给这个 URL 的服务器发送一个 HTTP 请求,服务器返回一个 HTTP 响应,这个响应被浏览器解析之后,就展现出我们看到的网页内容


所谓 “ 超文本 ”,就是传输的内容不仅仅是文本,还可以是一些图片、视频、音频等二进制的数据


HTTP 默认端口号:80


2. HTTP 请求报文和响应报文的格式

1)请求报文格式

请求首行:请求方法 + URL + HTTP协议版本

请求头:请求报文的属性,冒号分隔的键值对,每组属性各占一行

空行

请求体:如果请求体存在,请求头中会有一个 Content-Length 属性来表示请求体的长度


61.png

2)响应报文格式

响应首行:HTTP 协议版本 + 响应状态码 + 状态码解释短句

响应头:响应报文的属性,冒号分隔的键值对,每组属性各占一行

空行

响应体:如果响应体存在,响应头中就会有一个 Content-Length 属性来表示响应体长度,如果服务器返回一个 html 页面,那么 html 页面内容就出现在响应体中

62.png


3)报文中空行的作用

因为 HTTP 协议没有规定报文头部的键值对有多少个,空行就相当于 “ 报头的结束标志 ” 或者 “ 报头和主体之间的分隔符 ”


3. HTTP 的长连接和短连接

在 HTTP/1.0 中,默认使用短连接,短连接就是,客户端访问的某个 HTML 网页中包含其他 Web 资源,如 JS 文件、图像文件、CSS 文件等,客户端每遇到一个 Web 资源,就会建立一个 HTTP 连接,访问结束就关闭连接


HTTP/1.1 开始,默认使用长连接,在使用长连接的情况下,客户端和服务器用于传输数据的 TCP 连接在一定时间内不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这条已经建立的连接。长连接的保持时间可以在不同服务器中进行指定,实现长连接要求客户端和服务器都支持长连接


HTTP 的长连接和短连接,实质上是 TCP 的长连接和短连接


4. URL

平时我们俗称的 “ 网址 ” 就是 URL(统一资源定位符)


互联网上的每一个文件都有一个唯一的 URL,它包含的信息指出文件的位置以及浏览器怎么处理它


基本格式:

63.png


1)在浏览器中输入 www.baidu.com 后执行的全部过程

域名解析:将 www.baidu.com 解析成 IP 地址


浏览器搜索自己的 DNS 缓存(维护一张域名和 IP 的映射表);若没有,则搜索操作系统的 hosts 文件


若都没有,则去本地 DNS 服务器进行查询,本地 DNS 服务器会查询自己的 DNS 缓存,如果没有,本地 DNS 服务器会向根域名服务器发起请求,来查询域名所对应的 IP 地址,得到结果之后本地 DNS 服务器将结果返回给浏览器,同时缓存本次解析的 IP


发起 TCP 三次握手,建立 TCP 连接。浏览器会以一个随机端口号(1024-65535)向服务器 web 程序的 80 端口发起 TCP 连接


建立 TCP 连接后,发起 HTTP 请求


服务器处理请求,对浏览器的请求进行响应,浏览器得到网页的 html 文件和一些资源文件


浏览器解析 html 文件和资源文件,对页面进行渲染并呈现出来


5. HTTP 常用的请求方法

1683887127913.png


6. GET 和 POST 的区别

GET 是从服务器上获取数据,POST 是向服务器传送数据

GET 把参数包含在 URL 中,POST 的参数包含在请求体中,因此 POST 相较 GET 更安全些

GET 请求有长度限制,POST 没有

GET 请求是幂等性的,POST 不是。幂等性指对同一个 URL 的多次请求应该返回同样的结果


7. HTTP 常见的响应状态码

200:服务器已成功处理了请求。

301:请求的网页已被永久重定向网页,服务器响应此状态码时,会自动将请求者转到新位置

302:请求的网页被临时重定向到其他网页

400:客户端请求有语法错误,不能被服务器所理解

403:服务器收到请求,但拒绝提供服务,有的页面需要一定权限才能访问,就可能会出现 403

404:服务器未找到请求的页面

405:使用了服务器不允许的请求方法

500:服务器内部遇到错误,无法完成请求

504:服务器负载过大,在处理请求时消耗的时间就会很长,就可能导致出现超时的情况


8. HTTPS 是什么

HTTPS 也是一个应用层协议,是在 HTTP 协议的基础上引入了一个加密层


HTTPS 协议运行在 SSL 协议之上,SSL 协议运行在 TCP 协议之上


HTTP 协议内容都是按照文本的方式明文传输的,这就可能会导致传输过程中出现被篡改的情况


在互联网上,明文传输是比较危险的事情


HTTPS 就是在 HTTP 的基础上进行了加密,进一步保证用户的信息安全


HTTPS 默认端口号:443


1)SSL 协议

SSL 协议是一种用于保证互联网通信中数据安全的标准技术,SSL 协议使用公钥、私钥、和对称密钥来加密和解密数据,还会使用证书来验证服务器和客户端的身份


9. HTTPS 怎么进行 “加密”

加密就是把明文(要传输的信息)进行一系列变换,生成密文,在互联网上传输时,以密文的形式传输,在到达接收方时,接收方再进行一系列变换,将密文转换成明文


在加密解密的过程中,都会有一个被称为 “密钥” 的中间数据来辅助进行解密或解密


加密的方式有很多,但整体上分为两大类:对称加密 和 非对称加密


1)对称加密

对称加密其实就是信息的发送方和接收方使用同一个密钥对密文进行加密和解密。


但是在一开始发送方和接收方是不知道这个密钥的,所以发送信息之前还需要先传输密钥,但是如果密钥在传输过程中被截获,那么后续的密文传输就与明文传输就没什么区别了


因此就需要引入 非对称加密 先对对称密钥进行加密传输


2)非对称加密

非对称加密要用到两个密钥,一个叫做 “公钥”,一个叫做 “私钥”


通过公钥对明文加密,变成密文

通过私钥对密文解密,变成明文

也可以反着用


通过私钥对明文加密,变成密文

通过公钥对密文解密,变成明文

引入非对称加密之后


客户端在 本地生成对称密钥,通过 公钥加密,发送给服务器

由于中间的其他网络设备没有私钥,即使截获了数据,也无法还原出内部的对称密钥

服务器通过 私钥解密,还原出客户端发送的对称密钥,并且使用这个对称密钥加密对客户端进行响应

后续服务器和客户端的通信只需要用到对称密钥即可

对称加密的效率比非对称加密的效率高很多,所以只是在开始传输对称密钥时使用非对称加密,后续的传输使用对称加密


但是还存在一些问题


客户端怎么获取公钥

怎么确定这个公钥不是伪造的

这就需要引入 CA 证书


3)CA 证书

CA 证书是在非对称加密传输对称密钥时使用的,客户端和服务器交换对称密钥时,使用非对称加密对对称密钥进行加密,非对称加密中的公钥就是由 CA 证书提供的,CA 证书在使用之前客户端会对其进行合法性校验,确保 CA 证书不是伪造的


CA 证书中包含的信息:


公钥

证书持有者的域名等信息

证书认证机构的信息

数字签名以及使用的算法

证书有效期

为了让服务器的公钥被客户端信任,服务器的证书都是由 CA(证书认证机构)签名的,CA 在网络中相当于公安局,具有极高的可信度,所以由它来给证书签名,证书必然是被信任的


CA 对证书签名的过程:


首先 CA 会把证书持有者的公钥、证书认证机构、证书有效期、持有者的域名等信息进行整合,对这些信息使用特定的 Hash 算法计算 Hash 值

然后 CA 会使用自己的私钥对 Hash 值进行加密,作为证书的签名

客户端对证书验证的过程:


客户端在得到证书之后会使用相同的 Hash 算法获取证书的 Hash 值

通常客户端中都会集成 CA 的公钥,客户端可以使用 CA 的公钥对签名进行解密,得到一个 Hash 值

对比两次结果的 Hash 值,如果值相同,则为可以信赖的证书

4)HTTPS 加密的完整流程

HTTPS 的加密过程大致可以分为三个阶段:


第一阶段(非对称加密):对证书进行合法性验证,客户端内置 CA 的公钥,服务器在申请证书时同时获取 CA 的私钥和自己的公钥私钥

第二阶段(非对称加密):对对称密钥进行密文传输,客户端使用证书中服务器的公钥对随机生成的对称密钥进行加密传输,服务器使用自己的私钥进行解密,得到对称密钥

第三阶段(对称加密):客户端与服务端在互通对称密钥之后,使用对称加密传输数据


64.jpg

10. HTTPS 的优缺点

优点:


安全性:


HTTPS 在数据传输过程中保证绝对的密文传输,可以防止数据在传输过程中被窃取或改变,保证数据的完整性


缺点:


在相同的网络环境下,HTTPS 比 HTTP 的响应时间更长

HTTPS 的安全是有范围的,在服务器被劫持等情况下几乎起不到作用

HTTPS 需要更多的服务器资源,会导致成本升高


11. HTTPS 和 HTTP 的区别


1683887226865.png


12. Cookie 和 Session

1)什么是 Cookie

Cookie 是服务器发送给客户端并保存到本地的一小块数据,它会在客户端下一次向同一个服务器发起请求时被携带并发送到服务器上。用于告知服务器两次请求来自同一个客户端,从而在本次请求中响应之前的访问状态


Cookie 的应用:


记录会话的状态:如用户的登录状态

记录个性化设置:如用户自定义的设置、主题等


2)什么是 Session

Session 代表着服务器和客户端一次会话的过程,Session 中保存着用户会话所需的属性和配置信息,当用户在应用程序的各个网页之间跳转时,存储在 Session 对象中的属性和配置信息不会丢失,而是在整个会话中一直存在下去。


3)Cookie 和 Session 的区别

Cookie 保存在客户端,Session 保存在服务端

Cookie 可以设置长时间保存,Session 一般在客户端关闭之后就会失效

Cookie 相对不安全,容易被窃取和伪造,Session 相对安全,因为 Session 数据保存在服务端,客户端无法直接访问

Cookie 有大小限制,一般单个 Cookie 不能超过 4 KB,Session 没有限制


4)Cookie 和 Session 如何配合工作

客户端在首次访问服务器时,服务器会根据用户状态信息生成对应的 Session 对象,将唯一的 SessionID 发送给客户端

客户端在收到 SessionID 之后,会创建 Cookie 对象,将 SessionID 放入 Cookie 对象,并且在 Cookie 中记录 此 SessionID 属于哪个域名

在之后访问同一个域名时,客户端在发起请求时会将 Cookie 一并发送给服务器

服务器会根据得到的 Cookie 得到 SessionID,再通过 SessionID 查找对应的 Session,如果没找到就说明用户未登录或 Session 已经过期,需要重新登录或者创建 Session

如果找到了就说明用户已经登录,服务器就会根据 Session 中对应的用户信息对网页进行处理,再将处理后的页面响应给客户端


65.jpg




目录
相关文章
|
22天前
Servlet 教程 之 Servlet 服务器 HTTP 响应 2
Servlet教程讲解了如何通过HttpServletResponse设置HTTP响应,包括编码URL、添加cookie、设置报头、控制缓冲区、发送错误或重定向响应。方法如encodeURL、addCookie、sendError、sendRedirect等,涉及状态码、报头、字符编码和内容长度的管理。
21 2
|
22天前
|
XML Java 数据格式
Servlet 教程 之 Servlet 服务器 HTTP 响应 3
`Servlet`教程示例展示了如何创建一个HTTP响应,使用`@WebServlet("/Refresh")`的`Refresh`类继承`HttpServlet`。在`doGet`方法中,设置了`Refresh`头以每5秒自动刷新,并用`setContentType("text/html;charset=UTF-8")`设定内容类型。还使用`Calendar`和`SimpleDateFormat`获取并格式化当前时间显示。相应的`web.xml`配置指定了Servlet路径。当访问此Servlet时,页面将每5秒更新一次显示的系统时间。
20 4
|
5天前
|
缓存 安全 算法
网络原理 HTTP _ HTTPS
网络原理 HTTP _ HTTPS
10 0
|
13天前
|
缓存 负载均衡 网络协议
【亮剑】一次完整的HTTP请求的重要性和详细过程
【4月更文挑战第30天】本文介绍了HTTP请求的重要性和详细过程。首先,DNS解析将域名转换为IP地址,通过递归和迭代查询找到目标服务器。接着,TCP三次握手建立连接。然后,客户端发送HTTP请求,服务器处理请求并返回响应。最后,理解这个过程有助于优化网站性能,如使用DNS缓存、HTTP/2、Keep-Alive、CDN和负载均衡等实践建议。
|
14天前
|
安全 网络协议 算法
【计算机网络】http协议的原理与应用,https是如何保证安全传输的
【计算机网络】http协议的原理与应用,https是如何保证安全传输的
|
15天前
|
网络协议 安全 算法
HTTP协议与HTTPS协议
HTTP协议与HTTPS协议
|
15天前
|
数据采集 缓存 网络协议
静态代理IP是否支持HTTP和HTTPS?
静态代理IP支持HTTP、HTTPS、FTP、Socks5等协议,HTTP协议因其简单、灵活而常用,通常比HTTPS速度快,因无需加密处理。HTTP代理比SOCKS5代理通常更快,因为HTTP专注于HTTP请求,而SOCKS5处理多种网络流量。静态HTTP代理适合浏览器和爬虫,SOCKS5代理支持更多协议,如TCP、UDP。选择取决于应用场景和需求。
|
15天前
|
网络协议 安全
【专栏】`curl`是广泛用于网络编程和自动化脚本的命令行工具,支持HTTP、HTTPS等协议
【4月更文挑战第28天】`curl`是广泛用于网络编程和自动化脚本的命令行工具,支持HTTP、HTTPS等协议。在处理大文件或慢速服务器时,设置超时参数至关重要。本文介绍了`curl`的超时参数,如`-m`(最大操作时间)、`-c`(连接超时)、`--dns-timeout`(DNS解析超时)和`-t`(时间条件)。通过示例展示了如何设置这些超时,并提到了一些高级技巧和注意事项,如错误处理和带宽限制。合理设置超时能提高效率和可靠性,对编写健壮的自动化脚本非常有用。
|
20天前
|
安全 Go
解决https页面加载http资源报错
请注意,混合内容可能导致安全性问题,因此在使用上述方法时要小心。最好的方式是尽量减少或完全消除混合内容,以确保页面的安全性。
23 0
|
24天前
|
存储 缓存
Servlet 教程 之 Servlet 服务器 HTTP 响应 1
Servlet服务器的HTTP响应包括状态行(如HTTP/1.1 200 OK)、响应头部(如Content-Type, Cache-Control)和HTML文档。关键头部有:Allow指示支持的请求方法;Cache-Control定义缓存策略;Content-Type指定MIME类型;Expires和Last-Modified管理缓存;Location用于重定向;Set-Cookie用于设置cookie。
26 8