概述
Http是基于客户端/服务端(C/S)的架构模型,通过一个可靠链接(TCP)来交换数据.
无连接:服务端处理完客户的请求,并收到客户的应答后,即断开连接.
早期html网页面都是静态的简单的,这样做能节省服务端的资源,尽可能多的为更多客户端提供服务.
后来html页面变得非常复杂,可能嵌入很多图片等资源,如果每次访问一个图片都要重新建立tcp连接就太低效了,所以人们提出了Keep-Alive来解决低效问题,客户端和服务器之间的HTTP连接会被保持不会断开(超过Keep-Alive规定的时间,意外断电等情况除外).当客户端发送另外一个请求时,就使用这条已经建立的连接.无状态:是指服务器端不知道客户端是什么状态,每个请求都是独立的.现在http的请求也是无状态的.人们使用Cookie或者session来解决无状态问题.
请求报文结构
请求报文:从客户端向服务端发送器请求报文.结构如下:
由四部分组成:
- 请求行 -- > 请求方法+URL+协议版本
- 请求头部 --> 头部字段名 : 值
- 空行
- 请求数据
请求方法
指请求报文的类型,实际上就是一些命令,表示对请求对象的操作.常用方法如下表:
方法 | 含义 |
---|---|
OPTION | 请求一些选项的信息 |
GET | 请求读取由URL所标志的信息 |
HEAD | 请求读取由URL所标志的信息的首部 |
POST | 给服务器添加信息(例如,注释) |
PUT | 在指明的URL下存储一个文档 |
DELETE | 删除指明的URL所标志的资源 |
TRACE | 用来进行回环测试的请求报文 |
CONNECT | 用于代理服务器 |
响应报文结构
响应报文:从服务端到客户端的应答.
由四部分组成:
- 状态行 --> 协议版本 + 状态码 + 短语
- 响应头部 --> 头部字段名:值
- 空行
- 响应数据
状态码
- 1XX:提示信息---请求已经收到,继续处理.
- 2XX:成功 --- 请求已经收到,理解,接受
- 3XX:重定向 --- 要完成请求必须进行更进一步的处理
- 4XX:客户端错误 --- 请求有语法错误或无法实现
- 5XX:服务端错误 --- 服务器未能实现合法的请求