HTTP协议

(1)HTTP版本

 HTTP/1.0:HTTP短连接

 HTTP/1.1:HTTP长连接

 HTTP/2.0:HTTP长连接+优化,支持更多并发连接

说明:可以使用curl -v www.baidu.com命令查看版本(curl相当于Linux的浏览器)

(2)HTTP请求方法

方法

说明

支持的HTTP协议版本

GET

获取资源(查看)

1.0、1.1

POST

传输实体主体(注册)

1.0、1.1

PUT

传输文件

1.0、1.1

HEAD

获得报文首部

1.0、1.1

DELETE

删除文件

1.0、1.1

OPTIONS

询问支持的方法

1.1

TRACE

追踪路径

1.1

CONNECT

要求用隧道协议连接代理

1.1

LINK

建立和资源之间的联系

1.0

UNLINK

断开连接关系

1.0

(3)HTTP状态码

常见状态码

状态码

描述

200-OK

请求成功

301-Moved Permanently

永久跳转URL

302-Moved Temporarily

临时跳转URL

404-Not Found

请求的资源(网页等)不存在

500-Internal Server Error

内部服务器错误,服务器遇到了意料不到的情况,不能完成客户的请求。

502-Bad Gateway

坏的网关

503-Service Unavailable

服务不可用

504-Gateway Timeout

网关超时

 

状态码通用说明(下表)

状态码范围

描述

200~299

表示请求成功

300~399

表示已经移动的文件

200~299

指出客户端错误

200~299

指出服务端错误

参考网址:https://www.jianshu.com/p/369db1ba04ea

参考书籍:《老男孩Web集群》P117

查看状态码的方法:

1)curl -I www.baidu.com

2)curl -I -s -w %{http_code}" " -o /dev/null www.baidu.com

 (5)HTTP报文

1)请求报文

请求报文格式

 ①请求行:包括请求方法,URL,协议版本等。举例:GET  /index.html  HTTP/1.1(GET表示方法,/index.html是根目录下的首页文件,HTTP/1.1是协议版本)

查看方法:curl -v www.baidu.com

②请求头部

结构:关键字:值

常见的请求头部信息包括媒体类型、语言类型(字符集)、是否支持压缩、客户端类型(可用Chrome浏览器测试手机客户端)、主机名等

③CRLF:回车换行,仅仅是分隔“请求头部”和“实体主体”两部分

④请求主体:包含了要发送给Web服务器的数据信息。Get不用,Post采用(例如:网站注册)

2)响应报文

响应报文

①状态行:协议版本、状态码等

②响应头部

结构:关键字:值

常见的响应头部信息包括数据类型、字符集、服务器软件信息等

③CRLF

④响应主体:返回给客户端的数据,通常是HTML文本

(6)用户在浏览器中输入网址浏览网站的全过程(网站页面访问流程)

00. 客户端 浏览器输入网址信息点击回车(www.baidu.com)
01. 客户端 完成域名的解析(DNS)过程
02. 客户端 直接访问相应网站服务器,完成TCP三次握手过程
03. 客户端 访问网站服务器 发送HTTP请求报文 多次
04. 服务端 响应客户端  回复HTTP响应报文 多次
05. 客户端 浏览器看到网站页面
06. 客户端 结束访问网站过程 完成TCP四次挥手过程

原文地址:https://www.cnblogs.com/zxjcwang/p/14826147.html