OSI-开发系统互联通信参考模型
一、物理层:光纤
二、数据链路层:以太网(ARP协议通过IP地址找到MAC地址,基于MAC地址转发数据帧)交换机
三、网络层:(基于IP地址转发报文)路由器
四、传输层:TCP、UDP
五、会话层
六、表示层
七、应用层:HTTP、FTP
URI 与 URL
URI(统一资源标识符)用字符串标识某一互联网资源,URL(统一资源定位符)表示资源地点。URL是URI子集。
HTTP的请求方法
HTTP协议用于客户端和服务器端的通信,客户端发出的请求类型包括以下几种:
- GET:请求获取资源
- POST:传输实体主体,注册、登陆、提交表单数据等操作都是用POST来完成
- PUT:传输文件,方法自身不带验证机制
- DELETE:删除文件,同样没有验证机制
- HEAD:获得报文头部,与GET 一样,只是不返回报文主题部分,用于确认URI 有效性及资源更新日期等
- OPTIONS:询问支持的方法
HTTP报文
HTTP报文按照结构可以分为:报文首部(服务器或客户端需处理的请求或响应的内容及属性,必要) + 报文主体(指应被发送的数据,可无)
- 请求报文
- 请求行 = 请求方法(GET、POST…) + URI + 协议版本
- 首部字段(可选):请求首部字段、通用首部字段、实体首部字段
- 其他:可能包含RFC 里没有定义的首部如Cookie
- (可选)报文主体
- 响应报文
- 响应行 = 协议版本 + 状态码 + 状态码原因短语
- 首部字段(可选):响应首部字段、通用首部字段、实体首部字段
- 其他:可能包含RFC 里没有定义的首部如Cookie
- (可选)报文主体
(首部字段:表示请求和响应的各种条件和属性)
举例:
报文主体 与 实体主体
报文(message)
HTTP通信中的基本单位,由8位组字节流组成?通过HTTP通信传输
实体(entity)
作为请求或响应的有效载荷数据(补充项)被传输,由实体首部和实体主体构成
报文主体用于传输请求或响应的实体主体。
一般的,报文主体即实体主体,只有在实体主体进行编码后传输时,两者不一致。实体内容的编码格式主要有:
- identity 不进行编码
- deflate (zlib)
- compress (UNIX 系统的标准压缩)
- gzip (GNU zip)
含有多类型实体的报文-多部分对象集合
发送的一份报文主体内可能含有多种类型的实体,这时需要在首部字段里加上 Content-type,使用boundary 划分各类实体。
获取部分内容的范围请求
下载文件中断,可从中断部分继续下载,即指定下载的实体范围。
内容协商
客户端与服务端进行“协商”,返回最适合的响应资源,协商的内容包括响应资源的语言、编码方式等,请求报文中特定的首部字段就是“协商”的标准。
HTTP状态码
状态码按照开头数字分为5类:
- 1XX:信息性 —— 接收的请求正在处理中
- 2XX:成功 —— 请求正常处理完毕
- 200
- 204
- 206
- 3XX:重定向 —— 需要进行附加操作以完成请求
- 301
- 302
- 303
- 304
- 307
- 4XX:客户端错误 —— 服务器无法处理请求
- 400
- 401
- 403
- 404
- 5XX:服务器错误 —— 服务器处理请求出错
- 500
- 503
HTTP报文首部
首部字段按照官方/非官方定义可分为:
- RFC 定义的首部字段
- 通用首部字段
- Cache-Control 控制缓存行为
- 请求首部字段
- 响应首部字段
- 实体首部字段
- 通用首部字段
- 其他非RFC定义的非正式首部字段,如Cookie
一种还没看懂的分类方式:
- End to end 端到端首部
- Hop by hop 逐跳首部
###