HTTP实用指南 | 青训营

51 阅读3分钟

一、初识HTTP

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网服务器传输超文本到本地浏览器的传送协议,即是一种“客户端-服务器端”协议。HTTP是一个基于TCP/IP通信协议来传递数据,TCP的面向连接是传输层的,而HTTP的无连接则是应用层的。HTTP是可扩展的,比如在HTTP/1.0中出现的HTTP headers让协议扩展变得非常容易。HTTP协议是无状态协议,无状态是指协议对于事物处理没有记忆能力,如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。

二、协议分析-报文

  • 方式(method):客户端希望服务器对资源执行的动作。

    safe(安全的):不会修改服务器的数据方法。

    idempotent(幂等):同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的,所有safe的方法都是idempotent的

  • 状态码(status-code):状态码是一个由三位数组成的数字,描述了请求过程中所发生的情况。

    200 OK-客户端请求成功

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

    302-临时跳转

    401-UNAUTHORIZED-请求未经授权

    404-请求资源不存在,可能是输入了错误的URL

    500-服务器内部发生了不可预测的错误

    504 Gateway Timeout-网关或者代理的服务器无法在规定的时间内获得想要的响应

所有的HTTP报文都可以分为两类,请求报文和响应报文。请求和响应报文的基本报文结构大致是相同的,只有起始行的语法有所不同。请求报文由一个HTTP的method、要获取的资源的路径、HTTP协议版本号、为服务端表达其他信息的可选头部headers组成。响应报文由HTTP协议版本号、一个状态码、一个状态信息、HTTPheaders以及包含获取的资源body组成。

三、协议分析-发展

  • HTTP/2:在应用层和传输层之间增加了二进制分帧,突破了HTTP/1.1性能限制,改进传输性能,实现低延迟和高吞吐量。帧(frame)是HTTP/2最小通信单位,每个帧都包含帧头,至少也会标识出当前帧所属的数据流。HTTP/2连接都是永久的,而且仅需要每个来源一个连接。

  • HTTPS: HTTPS( HyperText Transfer Protocol over Secure Socket Layer )超文本传输安全协议,HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL。其对数据进行加密,建立一个安全通道,来确保传输过程中的数据安全,其次还会对网站服务器进行真实身份认证。

四、通信方式-扩展

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

  • QUIC:0-RTT建联(首次建联除外);类似TCP的可靠传输;类似TLS的加密传输,支持完美前向安全;用户空间的拥塞控制,最新的BBR算法;支持h2的基于流的多路复用,但没有TCP的HOL问题;前向纠错FEC;类似MPTCP的Connection migration。