HTTP协议

一、简介

超文本传输协议(HTTP)是一个用于传输超媒体文档(例如 HTML)的应用层协议。它是为 Web 浏览器与 Web 服务器之间的通信而设计的,但也可以用于其他目的。HTTP 遵循经典的客户端-服务端模型,客户端打开一个连接以发出请求,然后等待它收到服务器端响应。HTTP 是无状态协议,这意味着服务器不会在两个请求之间保留任何数据(状态)。该协议虽然通常基于 TCP/IP 层,但可以在任何可靠的传输层上使用;也就是说,不像 UDP,它是一个不会静默丢失消息的协议。RUDP——作为 UDP 的可靠化升级版本——是一种合适的替代选择。

无状态协议是一种通信协议,在该协议中,接收方(通常是服务器)不保留任何会话信息。

二、总结

HTTP 是简单的,是可扩展的

HTTP本质是无状态的,使用Cookies可以创建有状态的会话。

HTTP依赖于面向连接的TCP进行消息传递,但连接并不是必须的。

HTTP/1.1以及更早的HTTP协议报文都是语义可读的。在HTTP/2中,这些报文被嵌入到了一个新的二进制结构,帧。

三、HTTP报文

1、请求

A basic HTTP request

1)method

方法 语法
GET 方法请求指定的资。 GET /index.html
POST方法 发送数据给服务器。 POST /index.html
OPTIONS 方法 用于获取目的资源所支持的通信选项。 OPTIONS /index.html HTTP/1.1 OPTIONS * HTTP/1.1
HEAD 方法 请求资源的头部信息, 并且这些头部与 HTTP GET方法请求时返回的一致 HEAD /index.html

HEAD 方法该请求方法的一个使用场景是在下载一个大文件前先获取其大小再决定是否要下载, 以此可以节约带宽资源.

2)Path

要获取的资源的路径,通常是上下文中就很明显的元素资源的URL,它没有protocolhttp://),domaindeveloper.mozilla.org),或是TCP的port(HTTP一般在80端口)。

3)Version of the protocol

HTTP协议版本号。

4)Headers

对于一些像POST这样的方法,报文的body就包含了发送的资源,这与响应报文的body类似。

2、响应

img

1)Version of the protocol

HTTP协议版本号。

2)Status code

一个状态码(status code),来告知对应请求执行成功或失败,以及失败的原因。

HTTP 响应状态代码指示特定 HTTP 请求是否已成功完成。响应分为五类:信息响应(100–199),成功响应(200–299),重定向(300–399),客户端错误(400–499)和服务器错误 (500–599)。

3)Status message

一个状态信息,这个信息是非权威的状态码描述信息,可以由服务端自行设定。

4)Headers

HTTP headers,与请求头部类似。

HTTP 消息头允许客户端和服务器通过 request和 response传递附加信息。一个请求头由名称(不区分大小写)后跟一个冒号“:”,冒号后跟具体的值(不带换行符)组成。该值前面的引导空白会被忽略。

4)资源body

可选项,比起请求报文,响应报文中更常见地包含获取的资源body。

参考文档

原文地址:https://www.cnblogs.com/ananing/p/13497398.html