• 传输层 HTTP 的报文结构


    HTTP 有两类报文:

    请求报文——从客户向服务器发送请求报文。(发送哪些请求,如GET获取网页内容。账户名,密码提交给服务器,需要POST

    响应报文——从服务器到客户的回答。(服务器收到请求给客户端一个状态,请求成功或者失败,有没有权限访问)

    由于 HTTP 是面向正文的 (text-oriented),因此在报文中的每一个字段都是一些 ASCII 码串,因而每个字段的长度都是不确定的。(明文的,不加密)

    HTTP 的报文结构(请求报文)


    http报文有两种,一种是请求报文(从请求端发出的),另外一种叫响应报文(从服务器发出的),而里面的信息就是HTTP协议交互的信息。

    报文标准结构与报文压缩

    报文分为两个部分,一部分为为请求头,另外一部分叫做请求体,需要说明一点,请求体是可以忽略的。

    比如请求方法header方法,它就不会去获取请求体,而对于请求头来说,它是由多行数据构成的字符串文本,数据都是通过换行符隔开。

    而这就是一个一个的请求头信息。请求方法,状态码。

    在请求头当中,有两个参数是有特定名字的,第一行是请求行,另外一个有单独名字的叫做状态码。

    也就是在请求头当中,第一行叫做请求行(里面包含了请求方法,请求的uri,以及http的版本号。)

    另外一个就是状态码,比如说200 ok。

    它们有单独的名字就说明这些必须包含在请求头当中。

    除了这两个参数以外,其他的都叫首部字段,并且首部字段是可以扩展的,你甚至可以自定义。

    如果首部再去划分,可以划分为,通用的首部,请求首部,响应的首部,以及实体首部。

    由于请求头也是http传输协议报文当中的一部分,它的数据量越大,也会间接影响http协议的传输速率。

    传输速率:将要传输的数据信息分为实体,实体需要借助http协议传输。而在http协议当中,有个基本的数据单位叫做报文,它是http协议当中的基本单位,由8位组的字节流。

    实体信息想要通过http协议传输,首先就要将实体拆分为诺干的报文,也就是实体=报文,而这种传输方式我们也可以称为按照数据原样输出,而为了提升传输的速率我们可以通过压缩技术来减小数据的体量,并且客户端也可以通过解压来获取数据的原样。

    而一般情况下会对外部的文本文件进行压缩,这会有解压缩的性能消耗。

    下面可以看到使用了gizp的压缩格式。这个字段来阐明这个字段是否被压缩。一般只压缩文本文件,不压缩二进制文件,因为压缩不明显。 

     

     HTTP 请求报文的一些方法

     

    HTTP 的报文结构(请求报文)


     

    状态码都是三位数字


    1xx 表示通知信息的,如请求收到了或正在进行处理。

    2xx 表示成功,如接受或知道了。

    3xx 表示重定向,表示要完成请求还必须采取进一步的行动。

    4xx 表示客户的差错,如请求中有错误的语法或不能完成。

    5xx 表示服务器的差错,如服务器失效无法完成请求。

  • 相关阅读:
    Redis incr实现流水号自动增长
    浅谈 Raft 分布式一致性协议|图解 Raft
    C语言-面试题实现有序序列合并
    带你进入桌面数控机床金工实训室
    I2C知识大全系列一 —— I2C相关概念
    扭线机控制
    Java 获取远程excel内容-修改excel内容
    ffmpeg云服务器推流
    Python实现连连看1
    auto 推导
  • 原文地址:https://blog.csdn.net/qq_34556414/article/details/125932501