超文本传输协议(Hyper Text Transfer Protocol,HTTP),通常运行在TCP之上,主要功能是为了,建立起客户端和服务端的沟通桥梁。
HTTP主要特点
简单快速
每个资源固定的(每张图片每个地址)访问只需输入uri灵活
通过一个http协议可以传输不同数据类型无连接
连接一次就会断开,不会保持连接无状态
无法判断每次连接都是谁
HTTP报文
客户端与服务端通信的内容,如同两个人互相写信
请求报文
写给服务端的 "信"
-
请求行
包含:HTTP方法 / 页面地址 / HTTP协议版本 -
请求头
格式:key: value(与服务端进行一些约定,比如:用什么语言写的 "信";如何看懂我发给你的 "信") -
空行
作用:服务端碰到空行就知道下面的内容是请求体了 -
请求体
写给服务端的 "信"
响应报文
写给客户端的 "信",具体的含义与请求报文一致
响应行
包含:HTTP协议版本 / 状态码 / 状态描述响应头
空行
响应体
HTTP方法
只是客户端和服务端的一个约定,服务端也可以不遵循,比如客户端发送GET,服务端也可以执行删除操作。但为了代码的可读性和维护性,我们一般是遵循这个规则的。
GET
获取资源POST
传输资源PUT
更新资源DELETE
删除资源HEAD
获取报文首部OPTIONS
获取目的资源所支持的通信选项。
可以对指定的URL
使用该方法,也可以对整站使用。一般不会主动发起这个OPTIONS
请求,这里扯出一个新概念:简单请求
和复杂请求
,复杂请求浏览器会自动发起OPTIONS
请求(比如跨域请求就是一个复杂请求)
HTTP状态码
表示发送过去的"信"的状态(有没有收到等)
1xx(指示信息)
表示请求已接收,继续处理
2xx(成功)
表示请求已被成功接收
200 OK
:客户端请求成功206 Partial Content
:客户发送了一个带有Range头的GET请求,服务器完成了它
3xx(重定向)
想要完成请求,必须进行更进一步的操作
301 Moved Permanently
:所请求的页面已被转移到新的URL302 Found
:所请求的页面已被临时转移到新的URL304 Modified
:客户端有缓冲的文档并发出了一个条件性的请求,服务器告诉客户端,原来的缓冲文档还可以继续使用
4xx(客户端错误)
请求有语法错误或请求无法实现
400 Bad Request
:客户端请求有语法错误,不能被服务器所理解401 Unauthorized
:请求未经授权,这个状态码必须和WWW-Authenticate报头域一起使用403 Forbidden
:对被请求页面的访问被禁止(资源禁止被访问)404 Not Found
:请求资源不存在
5xx(服务器错误)
服务器未能实现合法的请求
500 Internal Server Error
:服务器发生不可预期的错误,原来缓冲的文档还可以继续使用503 Server Unavailable
:请求未完成,服务器临时过载或当机,一段时间后可能恢复正常
5层网络模型
要了解HTTP,就需要先了解下计算机网络的五层网络模型,知道HTTP在计算机网络中起到什么作用。
应用层
为应用软件提供了很多服务,构建于TCP协议之上,屏蔽网络传输相关细节。
本层相关协议:
- HTTP
- FTP
传输层
向用户提供可靠的端到端(End-to-End)服务
传输层向高层屏蔽了下层数据通信的细节
本层相关协议:
- TCP
- UDP
网络层
数据在节点之间传输创建逻辑链路
数据链路层
在通信的实体间建立数据链路连接(01010101)
物理层
定义物理设备如何传输数据(硬件设备)