简介
HTTP (Hypertext Transfer Protocol 超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP 协议定义了客户端如何从服务器请求 Web 页面,以及服务器如何把 Web 页面返回给客户端。HTTP 是万维网数据通信的基础。
特点
简单快速
灵活
无连接
无状态
URL
HTTP 资源在网络上用 URL 被标识和定位:
1 | userinfo host port |
请求 Request
请求信息由以下部分组成:
请求行
1
GET /images/logo.png HTTP/1.1
请求头
1
Accept-Language: en
空行
请求体(可选)
请求方法
GET
请求一个特定的资源。
HEAD
POST
请求服务器接收携带的实体,将其作为被 URI 标识的新的子项。
PUT
请求把携带的实体储存在提供的 URI 上。
DELETE
请求删除指定的资源。
TRACE
OPTTIONS
CONNECT
响应 Response
响应信息由以下部分组成:
状态行
1
HTTP/1.1 200 OK
响应头
1
Content-Type: text/html
空行
响应体(可选)
状态码
1xx:信息
2xx:成功
3xx:重定向
4xx:客户端错误
5xx:服务端错误
示例
客户端请求
1 | GET / HTTP/1.1 |
服务端响应
1 | HTTP/1.1 200 OK |
工作原理
客户端向服务器发送一个请求报文,服务器则返回一个响应报文。
具体步骤:
客户端连接到服务器
客户端,通常是浏览器,与 Web 服务器的 HTTP 端口(默认80)建立一个 TCP 套接字连接。
客户端发送 HTTP 请求
通过 TCP 套接字,客户端向 Web 服务器发送一个文本的请求报文(HTTP 2是二进制协议而不再是文本协议)。
服务器接受请求并返回 HTTP 请求
Web 服务器解析请求,定位请求资源。服务器将资源副本写到 TCP 套接字,由客户端读取。
释放 TCP 连接
客户端服务器解析 HTML 内容
客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。
如:在浏览器地址栏键入 URL,按下回车后会经历以下流程:
- 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
- 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立 TCP 连接;
- 浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;
- 服务器对浏览器请求作出响应,并把对应的 HTML 文本发送给浏览器;
- 释放 TCP 连接;
- 浏览器将该 HTML 文本并显示内容;
参考
待
2020-3-15 21:12:00