计算机网络

HTTP 的结构和 HTTPS 的原理

HTTP 的报文结构可以分为两类:请求报文和响应报文。两者在结构上相似,都包含了起始行、头部和消息正文。

HTTP 请求报文结构
powershell 复制代码
GET /index.html HTTP/1.1
Host: www.javabetter.cn
Accept: text/html
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3
  1. 请求行
    包括方法(如 GET、POST)、请求的 URL 和 HTTP 协议的版本。例如:GET /index.html HTTP/1.1。
  2. 请求头部
    包含请求的附加信息,如客户端想要接收的内容类型、浏览器类型等。
    请求头部由键值对组成,键和值之间用冒号分隔,每一行一个键值对。例如:
  • Host: www.javabetter.cn,表示请求的主机名(域名)
  • Accept: text/html,表示客户端可以接收的媒体类型
  • User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3,表示客户端的浏览器类型
  1. 空行

    请求头部和消息正文之间有一个空行,表示请求头部结束。

  2. 消息正文(可选)

    请求的具体内容,如 POST 请求中的表单数据;GET 请求中没有消息正文。

HTTP 响应报文结构
powershell 复制代码
HTTP/1.0 200 OK
Content-Type: text/plain
Content-Length: 137582
Expires: Thu, 05 Dec 1997 16:00:00 GMT
Last-Modified: Wed, 5 August 1996 15:55:28 GMT
Server: Apache 0.84
<html>
  <body>沉默王二很天真</body>
</html>
  1. 状态行
    包括 HTTP 协议的版本、状态码(如 200、404)和状态消息(如 OK、NotFound)。例如:HTTP/1.0 200 OK。
  2. 响应头部
    包含响应的附加信息,如服务器类型、内容类型、内容长度等。也是键值对,例如:
  • Content-Type: text/plain,表示响应的内容类型
  • Content-Length: 137582,表示响应的内容长度
  • Expires: Thu, 05 Dec 1997 16:00:00 GMT,表示资源的过期时间
  • Last-Modified: Wed, 5 August 1996 15:55:28 GMT,表示资源的最后修改时间
  • Server: Apache 0.84,表示服务器类型
  1. 空行
    表示响应头部结束。
  2. 消息正文(可选)
    响应的具体内容,如 HTML 页面。不是所有的响应都有消息正文,如 204 No Content 状态码的响应。
HTTPS 的原理

使用 HTTPS 主要是为了解决 HTTP 传输过程中的一些安全问题,因为 HTTP 是明文传输,所以 HTTPS 在 HTTP 的基础上加入了 SSL/TLS 协议。

SSL(安全套接字)/TLS(传输层安全)协议可以用来加密通信内容,保证通信过程中的数据不被窃取和篡改。整个加密过程主要涉及两种类型的加密方法:

  • 非对称加密:服务器向客户端发送公钥,然后客户端用公钥加密自己的随机密钥,也就是会话密钥,发送给服务器,服务器用私钥解密,得到会话密钥。
  • 然后双方用会话密钥加密通信内容。

客户端会通过数字证书来验证服务器的身份,数字证书由 CA(证书权威机构)签发,包含了服务器的公钥、证书的颁发机构、证书的有效期等信息。

HTTPS 主要解决了以下几个问题:

  • 窃听风险:第三方可以截获传输的数据包,获取敏感信息。
  • 篡改风险:第三方可以在传输过程中篡改数据包,修改数据。
  • 冒充风险:第三方可以冒充服务器,与客户端通信。
相关推荐
00后程序员张20 小时前
iOS混淆与IPA文件加固全流程实战 防止苹果应用被反编译的工程级方案
android·ios·小程序·https·uni-app·iphone·webview
2501_9151063221 小时前
iOS 应用加固与苹果软件混淆指南,如何防止 IPA 被反编译与二次打包?
android·ios·小程序·https·uni-app·iphone·webview
陈大鱼头1 天前
摸鱼搭子知乎你怎么了?访问抛出的 525 错误码是什么啊?
运维·后端·http
Wadli1 天前
小林coding|计算机网络
计算机网络
川石课堂软件测试1 天前
CSS中常用的几种定位。
开发语言·css·python·网络协议·http·html·pytest
程序员莫小特1 天前
网络管理员从零到一|数据通信基础
计算机网络·网络管理员
卓码软件测评2 天前
第三方软件质量检测:RTSP协议和HLS协议哪个更好用来做视频站?
网络·网络协议·http·音视频·web
卓码软件测评2 天前
第三方媒体流压力测试:k6插件xk6-webrtc的使用来测试媒体流的性能
网络协议·测试工具·http·https·webrtc·ssl·媒体
唐古乌梁海2 天前
WebSocket vs HTTP 对比
websocket·http
周杰伦_Jay2 天前
【计算机网络三层深度解析:应用层、传输层与网络层】HTTP、TCP、UDP、IP、ICMP、ARP
tcp/ip·计算机网络·http