HTTP
什么是Http
HTTP(超文本传输协议)是一个基于TCP/IP实现的,请求-响应的,无状态的,应用层协议。标准的客户端-服务器模型。HTTP协议定义了客户端和服务器之间交互的消息内容和步骤,首先,客户端会向服务器发送请求消息,请求消息包含的内容是“对什么”和“进行怎样的操作”两个部分。其中相当于“对什么”的部分称为URI(统一资源标识符),一般来说,URI的内容是一个存放网页数据的文件名或者是一个CGI程序的文件名。而相当于“进行怎样的操作”的部分称为方法或HTTP动词。 OSI7层参考模型
层号 | OSI层 | 描述 | 协议示例 |
---|---|---|---|
7 | 应用层 | 应用数据 | HTTP/SMTP |
6 | 表示层 | 数据表示/转换/加密 | ssl/tls |
5 | 会话层 | 多连接管理 | - |
4 | 传输层 | 包或流的可靠传输 | TCP/UDP |
3 | 网络层 | 网络节点间的路由与数据转发 | IP |
2 | 数据链路层 | 可靠的本地数据连接(LAN) | 以太网 |
1 | 物理层 | 物理连接(电缆) | CAT5 |
HTTP的主要方法
- GET:获取URI指定的信息。
- POST:向服务器发送数据,一般用于发送表单填写的数据等情况下。
- DELETE:删除URI指定的服务器上的文件。
- PUT:替换URI指定的服务器上的文件。
- HEAD:和GET基本相同,不过他只返回HTTP的消息头,用于获取文件最后更新时间等信息。
- OPTIONS:用于通知和查询通信选项。
HTTP请求消息
HTTP消息的格式是有严格规定的,首先请求消息的第一行是请求行 ,接下来的部分是消息头,每行包含一个头字段,消息头的行数根据具体情况可变,直到一个空行结束,空行下面就是消息体,其中包含客户端向服务器发送的数据。
1
2
3
4
5
6
7
POST /BOOK/1 HTTP/1.1
Connection: keep-alive
Content-Length: 98
Content-Type: text/html; charset=utf-8
Date: Wed, 31 May 2023 15:48:30 GMT
<空行>
<消息体>
HTTP响应消息
服务器在完成自己的工作后,会将结果存放在响应消息中。
1
2
3
4
5
6
7
8
HTTP/1.1 200 OK
Server: Apache
Connection: close
Content-Length: 98
Content-Type: text/html; charset=utf-8
Date: Wed, 31 May 2023 15:48:30 GMT
<空行>
<消息体>
在响应消息的开头有一个状态码,它用来表示操作的执行结果是成功还是发生了错误。状态码的第一位数字表示状态类型,第二,三位数字表示具体的情况。
状态码 | 含义 |
---|---|
1xx | 告知请求的处理进度和情况 |
2xx | 成功 |
3xx | 表示需要进一步操作,重定向等 |
4xx | 客户端错误 |
5xx | 服务端错误 |
本文由作者按照 CC BY 4.0 进行授权