HTTP和HTTPS-八股

文章目录

HTTP和HTTPS

HTTP的请求报文和响应报文

都是 首行-请求/响应头-空行-正文 结构

请求报文

首行

GET URL http/1.1

请求方法 请求资源地址 http版本号

请求头

每行都是一个键值对, 中间由":"分隔

是http标准规定的字段, 有具体的含义

也允许用户添加自定义的字段

常见的有

host 访问的域名

authorization 用户认证凭证信息, 比如token

user-agent 包含了用户客户端, 浏览器等信息

空行

正文

有些请求有, 有些没有

响应报文

首行

http/1.1 200

版本号 状态码

响应头

content-type 传输数据的媒体类型

空行

正文

服务器返回客户端的信息

通常是 html/css/js/json/图片/音频等

HTTP有哪些请求方式

最常见的是POST, GET, 其他还要PUT, DELETE

他们有具体的语义

POST是提交资源

GET是获取资源

PUT是更新资源

DELETE是删除资源

GET和POST请求的区别

他们没有实际的区别, GET能用的, POST也能用, 反之亦然

使用习惯上有区别

语义区别:GET是向服务器获取资源, POST是向服务器提交资源

传输数据: GET是通过query string 把自定义数据提交给服务器, POST是通过body

幂等性:GET通常是幂等的,就是多次请求返回的结果一样, POST没有这个要求

HTTP的状态码

2XX 成功

200 OK

3XX 重定向

301 Moved Permanently 永久重定向

302 Found 临时重定向 就是这一次转到另一个URL, 下一次访问还是原地址, 例如登陆时跳转到登陆页面

4XX 客户端错误

401 Unauthorized 未认证, 需要验证用户身份或者凭证无效

403 Forbidden 用户通过认证, 但没有权限

404 Not Found 访问资源在服务器上不存在

5XX 服务端错误

501 Internal Server Error 服务器发生了未预期的内部错误

504 Gateway Timeout 连接服务器超时

HTTP和HTTPS的区别

一个是明文, 一个是加密

一个是在TCP三次握手之后就可以传输, 一个还要在TCP三次握手后增加SSL/TLS握手

一个端口是80, 一个是443

HTTPS需要向CA机构申请证书来验证服务器的身份是可信的

HTTPS的工作原理(HTTPS建立连接的过程)

  1. 客户端向服务端发送建立HTTPS请求
  2. 服务端发给客户端公钥证书
  3. 客户端通过CA机构验证证书的合法性, 并验证证书的有效性
  4. 验证通过后, 生成一对随机对称加密密钥, 通过公钥加密发给服务端
  5. 服务端通过私钥解密对称加密密钥, 此时客户端服务端都拥有相同密钥
  6. 两方用对称加密密钥加密和解密数据进行通信

HTTP的Keep-Alive是什么?TCP 的 Keepalive 和 HTTP 的 Keep-Alive 是一个东西吗?

HTTP的连接建立是通过 TCP建立资源-HTTP请求资源-响应资源-断开连接

但是每次建立连接只能响应一次资源

HTTP的keep-alive实现同一个TCP来发送和接收多个HTTP请求和应答, 减少建立和释放的开销, 这就是HTTP的长连接

通过设置HTTP头 Connection:keep-alive来实现

TCP的keep-alive是内核实现的, 称为TCP保活机制, 是一种用于在TCP连接上检测空闲连接状态的机制

在TCP连接建立后, 如果一段事件没有任何数据传输, TCP keep-alive会发送探测包检查连接是否有效

相关推荐
阿钱真强道1 分钟前
13 JetLinks MQTT:网关设备与网关子设备 - 温控设备场景
python·网络协议·harmonyos
寻星探路6 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
王达舒19946 小时前
HTTP vs HTTPS: 终极解析,保护你的数据究竟有多重要?
网络协议·http·https
朱皮皮呀6 小时前
HTTPS的工作过程
网络协议·http·https
Binary-Jeff6 小时前
一文读懂 HTTPS 协议及其工作流程
网络协议·web安全·http·https
那就回到过去13 小时前
MPLS多协议标签交换
网络·网络协议·hcip·mpls·ensp
胖咕噜的稞达鸭18 小时前
网络基础:初识TCP/IP协议
网络·网络协议·tcp/ip
全栈工程师修炼指南19 小时前
Nginx | stream content 阶段:UDP 协议四层反向代理浅析与实践
运维·网络·网络协议·nginx·udp
cur1es19 小时前
【UDP的报文结构】
网络·网络协议·udp·md5
闲人编程19 小时前
使用FastAPI和WebSocket构建高性能实时聊天系统
websocket·网络协议·网络编程·fastapi·持久化·实时聊天·codecapsule