HTTP协议 | 青训营笔记

116 阅读5分钟

这是我参与第五届青训营伴学笔记创造活动的第四天!

一、初识HTTP协议

0、了解

  • 网络划分:
    一般划分为两类:
    (1)局域网(Local Area Network):简称 LAN;
    注意:如果局域网没有连接到公网,局域网中的主机就无法访问公网的资源(如:HTML网页、css 文件、js 文件、图片、视频等)
    (2)广域网( Wide Area Network),简称 WAN;开放的网络,连接上的主机都能访问
  • IP地址:
    • 用于标识网络主机、其他网络设备(如:路由器)的网络地址
    • 格式: IP地址是一个32位的二进制数,通常被分割为4个8位二进制数(也就是4个字节),通常用点分十进制的方式来表示,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的十进制整数);
    • 特殊情况:
      本机IP地址:127.0.0.1
      本机域名:localhost
  • 端口号:
    • 端口号用于标识主机中发送数据与接收数据的进程;
    • 类似于发快递:不仅需要指定发货地址(IP地址),还需要指定收货人(端口号)
    • 端口号一般为 0~65535 范围的数字;

1、初识

  • HTTP是超文本传输协议,即HyperText Transfer Protocol,是一个在计算机世界里专门在两点之间传输文字,图片,音频,视频等超文本的规定和规范,应用层协议,基于TCP协议,简单可扩展,无状态,目前常用的是HTTP 1.1

image.png

image.png

2、协议分析--报文

  • 一般在浏览器中输入网址访问资源都是通过 GET 方式请求,在 FORM 提交中,可以通过 Method 指定提交方式为 GET 或者 POST,如果没有设置都是默认为 GET 提交,HTTP 定义了与服务器交互的不同方法,最基本的方法有4种,分别是 GET、POST、PUT、DELETE。
  • 常见状态码
    • 1xx---提示信息
      是协议处理中的一种中间状态
    • 2xx---成功
      表示服务器成功处理了客户端的请求
      200 OK:如果是非HEAD请求,服务器返回的响应头会有body数据
      204 No Content:响应头没有body数据
      206 No Cpntent:应用于HTTP分块下载或断点续传,表示响应返回的body数据并不是资源的全部,而是其中的一部分
    • 3xx---需要重定向
      表示客户端请求的资源发生了变动,需要客户端用新的URL新发送请求获取资源
      301 Moved Pemanently:表示永久定向,说明请求的资源已经不存在,需要用新的URL再次访问
      302 Found:表示临时定向,说明请求的资源还在,但暂时需要另一个URL访问
      301和302都会在响应头里使用字段Location,指明后续要跳转的URL,浏览器会自动定向的URL
      304 Not Modified:不具有跳转意义,表示资源未修改,定向已存在的缓冲文件,也称缓存定向,用于缓存控制
    • 4xx---客户端请求报文有误(笼统)
      401 Unauthorized:请求未经授权
      403 Forbidden:表示服务器禁止访问资源,并不是客户端的请求出错
      404 Not Found:表示请求的资源在服务器上不存在或未找到,所以无法提供给客户端
    • 5xx---服务端错误码
      表示客户端请求正确,但服务器处理内部发生错误
      500 Internal Server Error:服务器内部发生了不可预期的错误
      501 Not Implemented:表示客户端的功能还不支持
      502 Bad Gateway:表示服务器自身工作正常,访问后端服务器发生了错误
      503 Service Unavailable:表示服务器当前很忙,暂时无法响应服务器
      504 Gateway Timeout:网关或者代理的服务器无法在规定时间内获得想要的响应
  • 常见字段

image.png
Host:客户端发送请求时用来指定服务器的域名 www.baidu.com
Content-Length:服务器在返回数据时表明本次回应的数据长度
Content:最常用于客户端要求服务器使用TCP持久连接以便其他请求复用
Content-Type:用于服务器回应时告诉客户端本次数据是什么格式
Content-Encoding:说明数据的压缩方法,说明数据使用了什么压缩格式

  • RESTful API
    一种API设计风格,遵循
    (1)每个URL代表一种资源
    (2)客户端和服务器之间,传递这种资源的某种表现层
    (3)客户端通过HTTP method,对服务器端资源进行操作,实现“表现层状态转化”
  • 常用请求头 image.png
  • 常用响应头 image.png
  • 缓存
    • 强缓存
      • Expires,时间戳
      • Cache-Control
        (1)可缓存性:
        no-cache:协商缓存验证
        no-store:不使用任何缓存
        (2)到期:
        max-age:单位是秒,存储的最大周期,相对于请求的时间
        (3)重新验证*重新加载
        must-revalidate:一旦资源过期,在成功向原始服务器验证之前,不能使用
    • 协商缓存
      • Etag/If-None-Match:资源的特定版本的标识符,类似于指纹
      • Last-Modified/If-Modified-Since:最后修改时间 image.png
  • cookie image.png

HTTP/2

  • 更快,更稳定,更简单

3、常用场景

  • 打开控制台
    • 右键--->检查
  • 切换到network
  • 静态资源 image.png

image.png

image.png

静态资源方案:缓存+CDN+文件名hash   
CDN:Content Delivery Network  
通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务  
  • 登录 image.png

image.png

  跨域 (下图最后两个为同域)
  预请求:获知服务端是否允许该跨源请求(复杂请求) 

image.png

    跨域解决方案:
* CORS
* 代理服务器(同源策略是浏览器的安全策略,不是HTTP的)
* Iframe 诸多不便    

image.png

1、 使用POST方法
    目标域名 https://sso.toutiao.com
    目标path/quick_login/v2/
2、 携带信息:
        Post body,数据格式为from
        希望获取的数据格式为json
        已有的cookie
    返回信息:
        数据格式json
        种cookie的信息

为什么HTTP无状态下一次进入页面能记住登录态呢? image.png

SSO:单点登录 image.png

4、实际应用

  • 浏览器 image.png

image.png

  • node image.png

  • 用户体验
    网络优化
    image.png 稳定性
    image.png

5、了解更多

  • 通信方式 WebSocket
  • QUIC

参考

blog.csdn.net/m0_52083255…