首页 > 其他分享 >第三篇 计算机网络基础 - Http协议【 http报文 + http状态码 + http压缩协议 】

第三篇 计算机网络基础 - Http协议【 http报文 + http状态码 + http压缩协议 】

时间:2023-03-28 16:04:28浏览次数:39  
标签:协议 Http 请求 报文 http Content 服务器 HTTP

http 报文

HTTP 报文:用于 HTTP 协议 交互的信息 被称为 HTTP 报文

  1、请求 【 Request 】 端的报文叫 请求报文
  
  2、响应 【 response 】 端的报文叫 响应报文
http 请求报文
1、请求报文 示例

POST /index.html HTTP/1.1
HOST: www.XXX.com
User-Agent: Mozilla/5.0(Windows NT 6.1;rv:15.0) Firefox/15.0

Username=admin&password=admin

2、一个请求报文有以下 四个 部分组成
   
  1、请求行(request line)
     
  2、请求头(header) 
     
  3、空行 
     
  4、请求正文 
  
3、请求报文详解  
          
  1、请求行(request line)
  
    GET /index.html HTTP/1.1
     
    由 请求方法、URL 和 HTTP协议版本 3 个字段组成,它们用空格分隔
     
  2、请求头(header)
    
    请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号 “:” 分隔
      
    请求头部通知服务器有关于客户端请求的信息
      
    典型的请求头有
      
      User-Agent:产生请求的浏览器类型
        
      Accept:客户端可识别的内容类型列表
        
      Host:请求的主机名,允许多个域名同处一个IP地址,即 虚拟主机
        
  3、空行
    
    最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头
     
  4、请求数据  
    
    请求数据不在 GET 方法中使用,而是在 POST 方法中使用
      
    POST 方法适用于需要客户填写表单的场合
      
    与请求数据相关的最常使用的请求头是 Content-Type 和 Content-Length
HTTP 响应报文
1、响应报文 示例

HTTP/1.1 200 OK
Content-Encoding: gzip
Content-Type: text/html;charset=utf-8

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>Document</title>
</head>
<body>
    <p>this is http response</p>
</body>
</html>

2、HTTP 响应也由 四个 部分组成

  1、响应行
  
  2、响应头
  
  3、空行
  
  4、响应体
  
3、在响应中唯一真正的区别在于第一行中用 状态信息 代替了请求信息 也叫 状态行  

  状态行 : HTTP-Version Status-Code Reason-Phrase CRLF
  
    1、HTTP-Version 服务器 HTTP 协议的版本
    
    2、Status-Code 服务器发回的响应 状态代码
    
    3、Reason-Phrase 状态代码的 文本描述

http 状态码

1、HTTP状态码: 是客户端向服务端发送请求,描述请求的状态

2、HTTP状态码 以 3 位数字 【 第一位数字代表类别 】 和 原因短语 组成 

    200 OK 
    
    206 Partial Content
    
    ...
    
3、状态码就是前后端通信时对于状态的一种约定,原则上只要遵循状态码类别的定义,即使改变 RFC2616 定义的状态码,或自行创建都是没问题的    
http 常见的状态码
- 200 OK :请求被正常处理返回 200 OK,这也是我们最常见的啦
- 204 No Content :请求处理成功但是没有资源返回,就是报文中没有报文主体
- 206 Partial Content :客户端进行范围请求,就是请求资源一部分,服务器返回请求这部分(Content-Range)

- 301 Moved Permanently:永久重定向(资源的URL已经更新)
- 302 Found :临时重定向(资源的URI已经临时定位到其他位置了)
- 303 See Other: 对应的资源存在另一URL,资源的URL已经更新,是否按新的去访问
- 304 Not Modified:客户端发附带条件的请求,服务端允许请求访问资源,但没有满足条件
- 307 Temporary Redirect: 也是临时重定向

- 400 Bad Request : 请求报文中存在语法错误
- 401 Unauthorized : 需要有HTTP认证
- 403 Forbidden : 请求访问的资源被服务器拒绝了
- 404 Not Found : 服务器上没有找到资源
- 500 Internal Server Error: 服务器执行请求时出错
- 503 Service Unavailable : 服务器处于超负载,正在进行停机维护

http 压缩协议

1、在 HTTP/1.x 时代,支持 Body 压缩,Header 不支持压缩。而现在一个网页可能有几十到上百个请求,一个请求 Header 至少 600Byte 以上。那么这些页面的请求 Header 会消耗不必要的带宽,增加延迟

2、http2.0 引入了 Header Compression 头部压缩技术使用了 HPACK 实现了 请求头的压缩
1、http 请求头带:Accept-Encoding: gzip, deflate, br

  这是浏览器告诉服务器我支持什么样的压缩格式,优先级是什么样的
  
2、http 响应头带:Content-Encoding: gzip

  这是服务器告诉浏览器我已经按什么样子的格式压缩了,解压工作你拜托你了
  
所以在浏览器上需要根据请求头中的 Accept-Encoding 去告诉服务器端,浏览器支持什么压缩格式

服务器按格式 压缩之后 再告诉浏览器,我已经给你压缩成什么样子了

标签:协议,Http,请求,报文,http,Content,服务器,HTTP
From: https://www.cnblogs.com/caix-1987/p/17265548.html

相关文章

  • 第五篇 计算机网络基础 - 传输层协议【 TCP 协议 + UDP 协议 】
    传输层协议概述1、传输层协议的作用1、提供了一种端到端【endtoend】的连接,一般为前端和后台服务器的连接2、由于网络层只管传递数据,并不关心成功与否,TCP......
  • TAPI协议介绍
    TAPI协议介绍TAPI(电话应用程序接口)是一个标准程序接口,它可以使用户在电脑上通过电话或视频电话与电话另一端的人进行交谈。假设你的电脑上安装了TAPI,并且你安装了正确的应用......
  • org.apache.http.conn.scheme.SchemeRegistry
    出现此问题的机型:小米8,android系统版本为:9。应用为免费小说下载地址为 安卓免费小说点我下载解决方案见官方文档:https://developer.android.google.cn/about/versions/......
  • 【Java 并发】【三】MESI缓存一致性协议
    1 前言上节我们看了一下线程安全的原子性、有序性、可见性,这节我们回到CPU多级缓存的问题,就是各个缓存中一致性的问题,这节我们就来看一下MESI一致性协议。2  MESI缓......
  • WebForm之企业微信开发(1)——准备httphelper
    usingSystem;usingSystem.IO;usingSystem.Net;usingSystem.Text;publicclassHttpHelper{///<summary>///发起一个HTTP请求(以POS......
  • IP协议
    IP协议轻解网络系列又来了,今天咱们说说IP协议,这可是网络协议中最最核心的一个协议了,还记得我们刚刚知道什么是IP地址、怎么给电脑修改IP的时候吗?今天我们就来探究一下......
  • C# .net6 razor 注入 HttpContext
    1、  2、 ......
  • HTTP 协议常用返回状态码
    1、什么是Http状态码状态码是客户端向服务器发送请求的时候,描述返回的请求结果的参数,借助Http状态码,可以让用户知道这次请求是正常处理,还是出现了错误。状态码由3位数字和原......
  • 对象引用对于非静态的字段、方法或属性“HttpContext.User”是必需的
    控制器内的HttpContext是从ControllerBase继承的属性,如果在控制器外使用HttpContext只是一个类,因此只能访问它的静态成员。为了访问它,您必须通过或沿线路注入HttpContext......
  • RS485采集电表DLT645-1997/2007协议数据存入数据库方案
    DAQforIIOT通用工业数据采集系统是一套运行在边缘计算机、工业网关或普通电脑上的设备数据采集管理软件,主要用于对各种工业仪器设备、电表、PLC、注塑机、数控机床等数据......