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报文按照结构可以分为:报文首部(服务器或客户端需处理的请求或响应的内容及属性,必要) + 报文主体(指应被发送的数据,可无)

  • 请求报文
  1. 请求行 = 请求方法(GET、POST…) + URI + 协议版本
  2. 首部字段(可选):请求首部字段、通用首部字段、实体首部字段
  3. 其他:可能包含RFC 里没有定义的首部如Cookie
  4. (可选)报文主体
  • 响应报文
  1. 响应行 = 协议版本 + 状态码 + 状态码原因短语
  2. 首部字段(可选):响应首部字段、通用首部字段、实体首部字段
  3. 其他:可能包含RFC 里没有定义的首部如Cookie
  4. (可选)报文主体

首部字段:表示请求和响应的各种条件和属性)

举例:

报文主体 与 实体主体

  • 报文(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 逐跳首部

###