HTTP协议--HTTP报文格式

HTTP协议

http 报文格式

1.Requset 请求报文结构

请求报文:

分为请求行请求头部空行请求数据四个部分

请求行包括 请求方法 URL 协议版本

请求头部 都是一对对的key-value值

空行 请求报文用空行表示hander和请求数据的分隔

请求数据 GET方法没有携带数据 POST方法会携带一个body

2.Reponse 报文结构

响应报文

分为状态行响应头部空行数据(响应体)四个部分

状态行包括 HTTP版本号,状态码和状态值

响应头类似请求头,是一系列的key-value值

空行 响应报文也用空行来分隔header和数据

响应体 响应的数据

HTTP 请求的完整过程

1.建立TCP连接(之前可能还需要一次DNS解析)

2.三次握手建立TCP完成后,客户端向服务器发送请求命令

例如 GET https://www.baidu.com?name=xx&addr=xxHTTP1.1

3.客户端发送请求头信息,发送完header后会继续发送一个空行,GET请求没有数据,POST请求要发送body数据

4.服务器接收到以上数据后,开始处理业务,处理完获得结果后,服务器开始应答

5.服务器返回响应头信息,发送完response header后,再发送一个空行

6.服务器向客户端发送数据

7.发送完成后服务器完成四次挥手断开TCP连接

报文格式各部分解析

method 方法

客户端希望服务器对资源执行操作,是一个单独的词,例如GET HEAD POST

requset-URL (请求URL)

命名所请求的资源,或者URL路径组件完整的URL

version(版本)

报文所使用的的HTTP版本,格式如下

HTTP/.

其中主要版本号major 和次要版本号minor 都是整数

status(状态码)

由三位数字组成,描述了请求过程中所发生的情况

reason-phrase(原因短语)

上面的数字状态码的可读版本,包含行终止序列之前的所有文本

headers(头部)

可以有多个或者没有首部,每个首部都包含一个名字,后面跟着一个冒号“:”,然后是一个可选的空格,接着是一个值,最后是一个空行(CRLF)。

首部是由一个空行(CRLF)结束的,表示首部列表的结束和实体主体部分的开始

entity-body(实体的主体部分)

包含一个由任意数据组成的数据块,并不是所有的报文都包含实体的主体部分,有时候,报文只是以一个CRLF结束。

HTTP GET POST 请求方法

GET

从指定的资源请求数据

POST

向指定资源发送要被处理的数据

对比

GET请求可被缓存,保留在历史记录,可被收藏为书签,不应在处理敏感数据时使用,有长度限制,应用于取回数据

POST请求不会被缓存,不会有历史记录,不能被收藏,对长度无要求

posted @ 2022-03-31 00:01  ShadowMurloc  阅读(225)  评论(0编辑  收藏  举报