DAY7 HTTP 使用指南|青训营笔记

144 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的第7天

初识HTTP

HTTP是什么?

  • HTTP全称为Hyper Text Transfer Protocol,被译为超文本传输协议。是互联网上应用最为广泛的一种网络协议。

HTTP的特点

灵活可扩展
应用层协议,基于TCP协议
请求 响应
无状态

协议分析

HTTP协议历史与发展

HTTP/O.9: 1991年制定,有严重设计缺陷,只支持GET方法,不支持MIIME类型,很快被HTTP/1.0取代。
HTTP/1.0: 1996年制定,支持多种请求方法,支持多媒仲对象,得到广泛应用。
HTTP/10+:支持持久连接、虚拟主机、代理连接等新特性,成为非官方的事实标准。
HTTP/11: 1999年制定,校正HTTP中的设计缺陷,性能优化,删除一些不好的特性。
HTTP-NG(或HTTP/20):关注HTTP协议的性能优化以及更强大的服务逻

报文

请求报文

  • 请求行
  • 消息报头/请求头
  • 空行
  • 请求正文

HTTP请求方法如图: image.png 常用请求头 image.png

响应报文

  • 状态行
  • 消息报头/响应头
  • 空行
  • 响应正文

状态码分类 image.png 状态码列表 image.png 常用响应头 image.png

常见场景

静态分析

登录

实际应用

浏览器

image.png image.png

node

image.png

了解更多

image.png

image.png

HTTPS

什么是HTTPS

HTTPS (Hyper Text Transfer Protocol over SecureSocket Layer),基于安全套接字协议 SSL,是以安全为目标的 HTTP 通道,在 HTTP 的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTP2.0和HTTP3.0都只用于HTTPS。

HTTPS建立SSL连接

  1.  Client Hello:客户端将支持 SSL 版本、加密算法、密钥交换算法等发送服务端
  2.  Server Hello:服务端确定 SSL 版本、算法、会话 ID 发给客户端
  3.  Certificate:服务端将携带公钥的数字证书发给客户端
  4.  Server Hello Done:通知客户端版本和加密套件发完,准备交换密钥
  5.  Client Key Exchange:客户端验证证书合法性,随机生成premaster secret用公钥加密发给服务端
  6.  Change Cipher Spec:通知服务端后续报文采用协商好的密钥和加密套件
  7.  Finished:客户端用密钥和加密套件计算已交互消息的Hash值发给服务端。服务端进行同样计算,与收到的客户端消息解密比较,相同则协商成功
  8.  Change Cipher Spec:通知客户端后续报文采用协商好的密钥和加密套件
  9.  Finished:服务端用密钥和加密套件计算已交互消息的Hash值发给客户端。客户端进行同样计算,与收到的服务端消息解密比较,相同则协商成功

HTTPS和HTTP的区别

  • HTTP 协议以明文方式发送内容,数据都是未加密的,安全性较差。HTTPS 数据传输过程是加密的,安全性较好。
  • HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是 80 端口,后者是 443 端口。
  • HTTPS 协议需要到数字认证机构(Certificate Authority, CA)申请证书,一般需要一定的费用。
  • HTTP 页面响应比 HTTPS 快,主要因为 HTTP 使用 3 次握手建立连接,客户端和服务器需要握手 3 次,而 HTTPS 除了 TCP 的 3 次握手,还需要经历一个 SSL 协商过程。