http请求过程
从源端到终端,请求报文和响应报文要经过四层关口,才可以传输,分为:
- 应用层 (如http)
- 传输层 (如TCP)
- 网络层 (如IP)
- 链接层 (设备驱动程序以及网卡)
协议
经过约定,使通信两端以相同规则来存储,接收,发送数据
分层初探
应用层
应用程序将数据以相应规则进行包装,发给传输层【HTTP,FTP,SMTP,SNMP】
传输层
将应用层传来的数据进行分组,标记,交给网络层【TCP,UDP】
分组和标记是为了保证顺序及完整性
网络层
以最快的方式将数据发送到目标终端【IP,ICMP,IGMP】
链路层
为网络层发送和接收数据单元【ARP,RARP】
[!IMPORTANT]
在这整个过程中,数据在发送及接收时,需要进行封装和分用的操作
- 封装:报文==>向下层,添加协议标识【此后递归操作到最底层】
- 分用:去掉报文首部(协议标识)==>向上层【递归到最上层直至接收】
HTTP应用层
报文分类
- 用户触发交互的行为数据
- 服务端对此做出的响应
报文作为了客户端和服务端沟通的载体
起始行
- 请求:
方法+请求URL+协议版本
- 响应:
协议版本+状态码+描述文本
方法的分类
方法 | 含义 | 有无主体 |
---|---|---|
GET | 从服务端获取资源 | 无 |
HEAD | 只获取资源头部 | 无 |
POST | 向服务端发送数据 | 有 |
…还有其他的没有列出来
状态码的分类
范围 | 已定义范围 | 含义 |
---|---|---|
100~199 | 100~101 | 信息提示 |
200~299 | 200~206 | 成功 |
300~399 | 300~305 | 重定向 |
400~499 | 400~415 | 客户端错误 |
500~599 | 500~505 | 服务端错误 |
首部
形式为键值对==>为了协商具体行为
首部可分类为
请求 | 响应 | 通用 | 实体 | 扩展 |
---|
- 请求为告诉服务端的信息
- 响应为告诉客户端的信息
- 通用为大家都可用到的,如时间相关的信息
- 实体可有在报文实体中数据的类型,长度等等 【可有可无】
- 扩展为了在一些对应传输中进行一些个性化的操作