HTTP协议
超文本传输协议(HyperText Transfer Protocol, HTTP),无状态的,以请求/应答方式运行的协议,灵活支持自适应扩展及自描述信息格式
HTTP报文格式
http协议请求报文和响应报文基本相同,由三大部分组层
| 起始行 | 请求:GET /index.html HTTP/1.1 |
|---|---|
| 响应:HTTP/1.1 200 OK | |
| 头部字段集合 | Connection: keep-alive |
| 空行 | |
| 消息正文 | 请求url返回的Response |
起始行(start line)
描述请求或响应的基本信息
头部字段集合(header)
以Key-Value形式描述的相关报文
消息正文(entity)
实际传输的数据,类型可以是纯文本、图片、视频等二进制数据
请求行报文格式
GET /index.html HTTP/1.1
| METHOD | 空格 | URI | 空格 | VERSION | 换行 |
|---|
METHOD:请求的方式(GET、HEAD、PUT、POST、DELETE、PATCH)
URI:请求的地址
VERSION:发起的请求使用的HTTP协议版本
响应行报文格式
HTTP/1.1 200 OK
| VERSION | 空格 | STATUS CODE | 空格 | REASON | 换行 |
|---|
VERSION:响应报文使用的HTTP协议版本
STATUS CODE:响应状态码(200、401、500、502、503)
REASON:状态码的补充(OK、NOT_FOUND)
HTTP头部字段
以key-value的方式定义,多个可通过回车换行分隔
Connection: keep-alive
头部字段注意事项
字段名不区分大小写
字段名不允许出现空格
字段名可以使用“-”字符,但不可使用“_”字符
字段名后需紧跟“:”字符
字段原则上不可重复,除非这个字段本身的语义允许,如Set-Cookie
HTTP请求流程
- 请求指定网址
- 浏览器根据请求地址解析域名,并在浏览器缓存中是否存在对应ip
- 如浏览器中不存在ip,则去本机hosts中去查找
- 如本机hosts中也不存在,则一层层去顶级DNS中去查找
- 得到域名服务器IP地址
- TCP三次握手 TLS握手
- 发起HTTP请求
- HTTP响应
- 浏览器解析响应报文,渲染页面
- TCP四次挥手


浙公网安备 33010602011771号