当前位置: 首页 > article >正文

HTTP协议和HTTPS协议

一、HTTP 和 HTTPS 介绍

HTTP(HyperText Transfer Protocol) 是一种无状态的通信协议,通常用于在客户端(例如浏览器)和服务器之间传输超文本(如 HTML 页面)。但这仅仅是一个单向通信协议,数据传输过程中并未加密,所以它比较容易被中间人攻击。无状态,即不能保存每次提交的信息,如果用户发来一个新的请求,服务器无法知道它是否与上次请求有关联。

HTTPS(HyperText Transfer Protocol Secure),则是在 HTTP 的基础上增加了加密层,使用 SSL/TLS 协议来保护数据的传输。可以理解为 HTTP 的“高级版”,带有加密的护航,让数据在传输过程中更安全。

特性

HTTP

HTTPS

安全性

无加密,易受攻击

加密传输,安全性高

端口号

默认端口为 80

默认端口为 443

性能

较快(没有加密负担)

较慢(加密解密有一定开销)

证书

不需要证书

需要 SSL/TLS 证书

浏览器表现

没有“安全”标记

显示锁形标志,用户感到安全

 

二、互联网消息如何传递

在互联网中,信息传递就像是一场复杂的邮递过程,消息需要通过一系列的“邮局”(即路由器),逐步从发送方传递到接收方。为了让这个过程更具逻辑性,我们可以将其比作寄送包裹的过程。

1、互联网通信的路径

1.访问某个网站

访问网站 www.example.com。这个网址在互联网上并不是唯一的地址,它只是一个更易于记忆的字符串。真正定位到网站的地址,必须通过它的 IP 地址。这就好比你想找一个朋友的住址,但只知道他的名字,你需要通过电话簿(类似 DNS 解析)来查找他具体的住址(IP 地址)。

2.浏览器发送请求

在浏览器中输入网址后,浏览器会发起一个请求,这个请求会包含想要访问的信息。例如,HTTP 请求头中可能包含要访问的页面路径、浏览器类型、语言等信息。就像向邮局递交一个包裹,包裹里带着想要发送的内容(即请求信息)。

3.DNS 解析

由于 IP 地址很不好记忆,所以 DNS(域名系统)起到了将易记的域名(如 www.example.com)转换为计算机能够理解的 IP 地址(如 192.168.1.1)的作用。这是通过向 DNS 服务器查询来实现的。

4.路由器的作用

拿到正确的 IP 地址后,消息会通过一系列路由器(路由器就像邮递员一样,负责在各个“邮局”之间传递包裹)逐步转发到目标服务器。每个路由器根据接收到的包裹信息,决定将包裹转发给哪个下一个路由器或最终目标。这些路由器会通过 MAC 地址 来标识彼此,就像每个邮局都有一个地址和“邮递员”一样。

在这个过程中,MAC 地址 是每台网络设备(如路由器、计算机等)唯一标识的地址。MAC 地址常常在局域网内起作用,而在互联网上,数据包会依赖 IP 地址进行转发。

例如,当你的包裹从一个路由器(网络节点)到达下一个节点时,包裹的 "收件人地址"(即 MAC 地址)会发生变化,每经过一个路由器,包裹的封面上的 “地址” 会更新为当前路由器的 MAC 地址,直到最终到达目标服务器。

5.目标服务器响应请求

当数据包最终到达目标服务器时,服务器会处理你的请求(例如返回一个网页、图片或文件)。服务器根据请求的信息,选择正确的数据进行返回。就像邮局在接收到包裹后,将其交给收件人。

6.响应回传

一旦目标服务器生成了响应,它会通过与请求时相同的路径,逆向发送回给浏览器。由于路由器和中间设备的作用,数据包在路由过程中仍然会更新其 MAC 地址和其它信息,但最终会正确到达浏览器,呈现出网页内容。

2、IP 地址和 MAC 地址的作用

1.IP 地址

是每个网络主机的唯一地址,主要用于寻址,让数据包能够找到目的地。你可以把 IP 地址看作“邮寄地址”,帮助路由器知道数据应该发往哪里。

2.MAC 地址

是硬件设备(如网卡)的一种物理地址,它在局域网内用于设备间的通信。可以理解为设备的“身份证”,每个设备都有一个独特的 MAC 地址。

3.DNS 解析

人们使用域名而不是 IP 地址,主要是因为域名更容易记忆。但计算机只能通过 IP 地址找到目标服务器,因此需要使用 DNS(域名解析系统)将域名转换成 IP 地址。

三、端口号

网卡中具有许多和网络通信的软件,数据帧到达网卡后,根据端口号来区别不同的软件或进程,端口后是用来确定数据目的程序的

服务类型

默认端口号

HTTP

80

HTTPS

443

FTP

21

MySQL

3306

SSH

22

 

四、HTTP协议

HTTP(Hypertext Transfer Protocol),即 超文本传输协议,是一种无状态的请求-响应协议,用于客户端(通常是浏览器)和服务器之间的通信。它是互联网中最基础、最常用的协议之一。HTTP 协议在实现网页浏览时起着核心作用,它是浏览器和服务器之间交换数据的语言。

1、什么是超文本

“超文本”指的是网页上的内容,通常以 HTML(Hypertext Markup Language)格式呈现。HTML 是用来描述网页结构的标记语言,因此,HTTP 协议常常被用于传输 HTML 文件,当然它也传输其他格式的文件,如图片、视频、JSON 数据等。

2、HTTP请求和响应

HTTP 协议通过 请求(Request)和 响应(Response)进行数据交换。客户端向服务器发送请求,服务器处理请求后返回响应。

1.HTTP请求

客户端(如浏览器)向服务器发起请求。通常情况下,客户端不会主动向服务器发起请求,而是由用户触发的操作(例如点击链接、提交表单等)来生成请求。每个 HTTP 请求都由三个主要部分组成:

请求的组成

(1)请求行(Request Line):

请求方法(GET、POST、PUT、DELETE 等)

请求目标(例如 /index.html)

HTTP 版本(例如 HTTP/1.1)

(2)请求头(Request Header):

请求头包含了客户端的相关信息。常见的请求头如下:

Accept-Encoding:指定客户端能够接受的编码方式,例如 gzip, deflate,用来压缩响应内容。

Host:指定服务器的主机名,通常是网站的域名(如 www.baidu.com)。

User-Agent:指定发起请求的浏览器类型,例如 Mozilla/5.0。

Cookie:客户端保存的 Cookie 信息,用于跟踪用户状态。

(3)请求正文(Request Body):

请求正文包含实际请求的数据,通常用于 POST 或 PUT 请求,用于发送表单数据或文件。GET 请求一般没有请求正文。

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept-Encoding: gzip, deflate, br

这段请求的含义是:客户端通过 GET 方法请求服务器上的 /index.html 页面,使用 HTTP/1.1 协议,且告诉服务器浏览器类型是 Mozilla/5.0,支持 gzip, deflate, br 等压缩方式。

请求方式

GET:用于请求指定的资源,数据通过 URL 参数传递。适用于查询数据。

POST:用于向服务器提交数据。适用于提交表单、文件上传等操作。

PUT:用于更新指定资源,通常带有请求正文。

DELETE:用于删除指定资源。

GET请求

通过URL传递参数,URL与参数之间用?隔开,多个参数用&隔开,也是表单的默认提交方式

GET传送的数据量较小,主要是因为收到URL长度的限制

GET会将数据显示到URL当中,不安全

GET请求一般用于直接获取数据,提高查询速度。

GET是无副作用的,因此可以被缓存、书签和分享

POST请求

POST的数据在请求主体内,所以相对比较安全,但不是绝对安全

POST对上传数据的大小无限制,POST请求可以做文件的上传和下载。POST适用于增删改操作

2.HTTP响应

服务器接收到客户端的请求后,会根据请求的内容返回一个响应。HTTP 响应通常包含以下几个部分:

响应组成

(1)响应状态行(Response Status Line):

HTTP 版本(如 HTTP/1.1)

状态码(例如 200 OK、404 Not Found、500 Internal Server Error 等)

状态描述(简短的文字描述)

(2)响应头(Response Header):

响应头包含了服务器和返回数据的一些元数据:

Content-Type:指定响应数据的类型,如 text/html, application/json。

Content-Length:响应内容的长度。

Set-Cookie:服务器设置的 Cookie,用于客户端保存状态。

(3)响应正文(Response Body):

响应正文包含实际的响应数据,例如 HTML 文件、JSON 数据或图片等内容。

响应状态码

200 OK:请求成功,服务器成功返回数据。

400 Bad Request:请求有语法错误,服务器无法理解。

404 Not Found:请求的资源不存在。

405 Method Not Allowed:请求方法不被服务器支持。

500 Internal Server Error:服务器内部错误,无法处理请求。

502 Bad Gateway:服务器作为网关或代理,从上游服务器收到无效响应。

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234

<html>
  <body>
    <h1>Welcome to Example!</h1>
  </body>
</html>

在这个响应中,服务器告诉客户端,/index.html 页面已成功返回,并且响应的内容为 HTML 格式,长度为 1234 字节,包含了网页的内容。

五、HTTPS

为了解决 HTTP 协议的安全问题,引入了 HTTPS(安全超文本传输协议)。HTTPS 在 HTTP 的基础上加入了加密层,利用 SSL(安全套接字层)或 TLS(传输层安全协议)对数据进行加密。通过 HTTPS 协议,数据在传输过程中会被加密,这不仅保证了数据的机密性(防止数据被窃取),还确保了数据的完整性(防止数据在传输过程中被篡改)。

1、HTTPS的加密方式

1.对称加密

产生秘钥,加密解密使用同一个秘钥。对称加密速度快,但秘钥的安全性较低,若秘钥在传输过程中被窃取,攻击者就能轻易解密数据。

2.非对称加密

产生公钥和私钥,公钥加密的数据需要私钥解密,私钥加密的数据需要公钥解密。处理速度相对较慢,但是安全性较高。

2、HTTPS的加密过程

1.握手阶段:

客户端与服务器之间首先进行一系列的加密握手。客户端请求服务器时,服务器会返回一个数字证书,证书包含了公钥和服务器的身份信息。客户端通过验证证书的合法性来确认服务器的身份是否可信。

2.密钥交换:

在握手阶段,客户端和服务器会使用非对称加密来交换密钥。客户端用服务器的公钥加密生成的“会话秘钥”(对称秘钥),然后将加密后的会话秘钥发送给服务器。服务器用自己的私钥解密出会话秘钥。这样,客户端和服务器就建立了一个加密的通信通道,并可以使用会话秘钥进行后续的数据加密和解密。

3.数据加密传输阶段:

在后续的数据传输过程中,客户端和服务器会使用共享的对称秘钥进行加密与解密操作。由于对称加密的效率高,数据传输速度较快。

3、数字证书

为了防止第三方攻击者伪装成服务器进行钓鱼攻击,HTTPS 使用 数字证书 来验证服务器的身份。数字证书就像是一个网站的“身份证”,它由 认证机构(CA) 颁发,包含了服务器的公钥和身份信息。

证书组成
  • 证书的持有者信息(如公司名称、网站域名等)
  • 公钥
  • 证书颁发机构(CA)的信息
  • 证书的有效期
  • 数字签名(确保证书的完整性,防止篡改

认证机构(CA)是经过各国政府认可的权威机构,它们负责签发和验证证书的合法性。客户端在访问 HTTPS 网站时,浏览器会验证证书的有效性,确保该证书由受信任的 CA 签发并且没有过期。

证书验证过程

当客户端访问 HTTPS 网站时,首先会收到服务器发送的数字证书。客户端会检查证书的有效性,向证书的发布机构(CA)确认证书是否合法。如果证书有效,客户端会提取公钥来加密生成的会话秘钥,并将加密后的秘钥发送给服务器。

六、Cookie和Session

1、Cookie

Cookie 是存储在客户端浏览器中的小文件,用于保存用户的状态信息。由于 HTTP 协议是无状态的,即每次请求都无法自动携带上次的状态信息,因此需要借助 Cookie 来维护状态。

1.Cookie特点

  • 存储在客户端,容易被篡改或盗用。
  • 可以设置过期时间。
  • 每次请求都会随请求头一起发送,可能会影响请求性能。

2、Session

Session 是在服务器端保存的用户会话信息,每个客户端在访问服务器时,服务器会分配一个唯一的 session ID。这个 ID 通常存储在客户端的 Cookie 中,当客户端再次请求时,浏览器会自动带上这个 session ID,服务器通过 session ID 找到对应的会话信息。

1.Session特点

  • 存储在服务器端,相对更加安全。
  • 需要借助客户端的 Cookie 来维持会话。
  • 不会暴露在客户端,防止被篡改。

3、Cookie和Session对比

特性

Cookie

Session

存储位置

存储在客户端浏览器中

存储在服务器端

安全性

相对不安全,容易被篡改或盗用

较为安全,数据存储在服务器端,客户端只有 Session ID

容量

通常每个 Cookie 大小为 4KB

受服务器资源限制,一般较大

生命周期

可以设置过期时间,过期后自动删除

会话结束或浏览器关闭时,Session 会话数据丢失

存储内容

可以存储少量信息(如用户偏好、登录信息等)

通常存储较为重要的用户信息,如用户身份、购物车等

数据传输

每次请求都会随着请求头一起发送给服务器

每次请求时只会发送 Session ID(通常存储在 Cookie 中)

性能

每次请求发送 Cookie 可能会增加网络负担

性能较好,只传输 Session ID,数据存储在服务器端

跨域问题

不能跨域使用,不同域名下的 Cookie 无法共享

跨域时需要特别处理(如通过共享 Session ID)

存储大小限制

每个域名最多存储 20 个 Cookie,每个 Cookie 4KB

没有硬性大小限制,但受服务器内存限制

常见用途

用户偏好、用户登录状态、跟踪用户行为等

用户会话管理、验证用户身份等

 七、总结HTTP和HTTPS

特性

HTTP

HTTPS

全称

超文本传输协议(Hypertext Transfer Protocol)

安全超文本传输协议(Hypertext Transfer Protocol Secure)

协议类型

无加密协议

加密协议

安全性

不安全,数据以明文传输,容易受到中间人攻击

安全,数据通过加密传输,防止数据被窃取或篡改

加密方式

无加密,数据传输过程中没有保护

使用 SSL/TLS 协议对数据进行加密

端口号

使用 80 端口

使用 443 端口

验证身份

不提供身份验证

提供身份验证,通过数字证书确保服务器的身份

数据完整性

数据传输过程中容易被篡改

数据在传输过程中使用加密,保证完整性,防止篡改

性能

性能较高,因为没有加密解密过程

性能稍低,因为需要加密解密,但使用的加密算法对比一般不影响正常使用

数据传输方式

明文传输数据

加密传输数据

适用场景

适用于无需保密的内容,如公共信息、非敏感数据

适用于需要保密和安全传输的内容,如登录信息、支付信息等

浏览器显示

URL 以http://开头

URL 以https://开头,并通常带有锁形图标,表示安全

数字证书

无需数字证书

需要通过 CA 认证机构颁发的数字证书验证服务器身份

受信任

无法验证网站的真实身份,容易被钓鱼网站伪造

提供可信的身份验证,确保用户访问的是合法网站


http://www.kler.cn/a/566961.html

相关文章:

  • 山石-Ultrasonic-好久不见45
  • 【计算机网络】常见tcp/udp对应的应用层协议,端口
  • 2025年4月1日-2日AutoCable 中国汽车线束线缆及连接技术创新峰会即将开幕
  • Apache DolphinScheduler系列3-任务配置经验分享
  • 模型优化之强化学习(RL)与监督微调(SFT)的区别和联系
  • 【多模态】Magma多模态AI Agent
  • 黑马Java面试教程_P5_微服务
  • 用大白话解释缓存Redis +MongoDB是什么有什么用怎么用
  • [Lc双指针_2] 盛水最多的容器 | 有效三角形的个数 | 和为S的两个数字
  • Spring Boot 消息队列(以RabbitMQ为例)
  • Java注释/JDK开发工具生成API/关键字、标识符规范
  • 企业级本地知识库部署指南(Windows优化版)
  • 什么是 Prompt?——一篇详细的介绍
  • FloodFill 算法(典型算法思想)—— OJ例题算法解析思路
  • Win 11 C盘相邻的分区是恢复分区导致无法扩容
  • PDF文件转换为PNG图像
  • DH法建立6自由度机械臂正运动学模型
  • 数据库设计报告
  • 介绍一款飞算JavaAI编程工具,集成到idea,图文并茂
  • Graph Convolutional Networks(GCN)图卷积网络