HTTP实用指南 | 字节青训营笔记

136 阅读5分钟

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



1、初始HTTP

🍻1.1、HTTP 概述


🚦HTTP超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而 [消息内容则具有一个类似MIME的格式。

🍻1.2、http的特点

  • 超文本传输协议(Hyper Text Transfer Protocol,HTTP)
  • 应用层协议,基于TCP协议
  • 请求响应
  • 简单可扩展性
  • 无状态

2、协议分析

🍻2.1、HTTP发展历程图解

image.png

🍻2.2、HTTP/2协议

HTTP/2 (原名HTTP/2.0)即 超文本传输协议 2.0,是下一代 HTTP协议 。 是由 互联网工程任务组 ( IETF )的Hypertext Transfer Protocol Bis (httpbis)工作小组进行开发。 是自1999年 http 1.1发布后的首个更新。

🍻2.2.1、请求报文

http的请求报文由:请求行、头部、空行、主体(请求数据)四个部分组成。其中请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。

请求行:请求行由请求方法、统一资源定位符(URL) 、HTTP协议及版本。

请求方法:HTTP请求中,有八种请求方式,分别为GET、POST 、HEAD、OPTIONS、PUT、DELETE、TRACE 、CONNECT 。

  • 请求方式如下图

image.png


Safe(安全的):不会修改服务器的数据的方法(GET HEAD OPTIONS)

ldempotent(幂等)︰同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的 所有safe的方法都是ldempotent的(GET HEAD OPTIONS PUT DELETE)

🍻2.2.2、常见的请求头

image.png

🍻2.2.3、常见的响应头

一个响应由状态行、响应头部、空行和响应数据4部分组成。

行     HTTP/1.1    200     OK
头     Host:atguigu.com
       Content-Type:text/html;charset=utf-8
       Content-length:2048
       Content-encoding:gzip
空行
体   <html>
        <head>
        </head>
        <body>
           <h1>请求体</h1>
        </body>
     </html>
复制代码

image.png

🍻2.2.4状态码

image.png

状态码:常用的响应状态码为

  • 200:客户端请求成功。

  • 301:资源(网页等)被永久转移到其他URL。

  • 302:重定向。

  • 401:Unauthorized-请求未经授权。

  • 403:服务器拒绝请求。

  • 404:服务器找不到请求的网页,请求资源不存在。

  • 500:服务器内部发生不可预期的错误。

  • 503:服务不可用。


3.HTTPS协议


image.png

HTTPS概述:(Hypertext Transfer Protocol Secure)超文本传输安全协议,是以网络安全为目标的HTTP通道,经过TSL/SSL加密,简单来讲就是HTTP的安全版

image.png 加密有两种方式:

🚦对称加密:加密和解密都是使用同一个密钥

🚦非对称加密:加密和解密需要使用两个不同的密钥:公钥(public key)和私钥(private key)

HTTPS与HTTP原理区别

👀HTTPS 主要由两部分组成:HTTP + SSL / TLS,也就是在 HTTP 上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过 TLS 进行加密,所以传输的数据都是加密后的数据。

HTTP 原理

🚦客户端的浏览器首先要通过网络与服务器建立连接,该连接是通过TCP 来完成的,一般 TCP 连接的端口号是80。建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是 MIME 信息包括请求修饰符、客户机信息和许可内容。

🚦服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是 MIME 信息包括服务器信息、实体信息和可能的内容。

HTTPS 原理

🚦客户端将它所支持的算法列表和一个用作产生密钥的随机数发送给服务器。

🚦服务器从算法列表中选择一种加密算法,并将它和一份包含服务器公用密钥的证书发送给客户端;该证书还包含了用于认证目的的服务器标识,服务器同时还提供了一个用作产生密钥的随机数。

🚦客户端对服务器的证书进行验证(有关验证证书,可以参考数字签名),并抽取服务器的公用密钥;然后,再产生一个称作 pre_master_secret 的随机密码串,并使用服务器的公用密钥对其进行加密(参考非对称加 / 解密),并将加密后的信息发送给服务器。

🚦客户端与服务器端根据 pre_master_secret 以及客户端与服务器的随机数值独立计算出加密和 MAC密钥(参考 DH密钥交换算法)。

🚦客户端将所有握手消息的 MAC 值发送给服务器。

🚦服务器将所有握手消息的 MAC 值发送给客户端。

4、通信方式WebSocket

WebSocket是一种在 单个TCP连接上 进行 全双工通信 的协议。 WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范。 WebSocket API也被 W3C定为标准 。

👀特点

  • 浏览器与服务器进行全双工通讯的网络技术。
  • 实时性要求高,例如聊天室。
  • URL使用ws://或wss://等开头。

5、👀总结

今天我主要学习了HTTP协议的一些基础知识、方法。对于我来说,我的基础不加薄弱,对HTTP的基础原理等知识不是很清楚没有深度,所以我根据老师上课和ppt整理了一些http的基础点,主要针对前端需要涉及到的一些HTTP的基础原理,希望可以和大家一起学习一起进步。