(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四次挥手过程