【总结】图解HTTP

职责

  • HTTP:生成针对目标服务器的HTTP报文:请给我某个页面的资源
  • TCP:为了方便通信,将HTTP切成多个报文段,按照序号进行发送,把每个报文段可靠传给对方。
  • IP:搜索对方的地址,一边中转,一边传送

URI

  • URI:统一资源标识符,
  • URL:统一资源定位符,资源的地点
    绝对定位符:

  • 查询字符串:可以传入参数
  • 片段标识符:可标记出已获取资源的子资源(文档的某个位置)

HTTP

定义:用于服务器端和客户端之前通信的协议。
一定是从客户端开始发起通信的

  • 请求: 方法,资源的地址,版本号,请求首部字段,内容实体
  • 响应:协议版本,状态码,状态码原因短语,响应首部字段

HTTP是不保存状态的协议:可以快速处理大量的事务。

方法:GET & POST

GET

GET:告诉服务器端我要访问某个资源
GET /index.html HTTP/1.1
HOST : www.hackr.jp
if-Modified-Since Jul2012

只是返回从2012年以后更新过的页面。
如果此时间之后没有更新则返回304 Not Modified。

###  POST
POST:我要把这个信息告诉服务器端。

HTTP/1.0和HTTP/1.1支持的方法
方法说明
GET获取资源
POST传输给服务器端实体主体
PUT传输文件
HEAD获得报文首部
DELETE删除文件
OPTIONS询问支持的方法
TRACE追踪路径
CONNECT要求用隧道协议连接代理

  持久连接

持久连接使得多数请求以管线化方式发送。不需要等待,直接发送下一个请求
** 使用Cookie进行状态管理:**
服务器使用Set-Cookie(响应报文的首部字段信息),客户端保存Cookie
客户端第二次发起连接的时候,会加入Cookie

HTTP报文格式

首部 +主体
首部:

  • 请求行
  • 请求首部行
  • 通用首部行
  • 实体首部行

不同的编码方式

  • 压缩
  • 分块发送:Chunked Transfer Coding

发送多种数据的多部分对象集合:MIME

获取部分内容范围请求:206 Partial Content

内容协商返回最合适的内容:

  • 服务器驱动协商:
  • 客户端驱动协商
  • 透明协商

HTTP状态码

成功状态码

## 重定向状态码

客户端错误

服务器错误

与HTTP协作的Web服务器

VM:一台服务器搭建多个站点,使用DNS解析以后IP地址会相同。所以必须在HOST的首部指定主机名或者域名的URL

  • 代理:有转发功能的程序,接收客户端的请求并发送给服务器。
  • 网关:转发其他服务器的数据的服务器。可以直接处理请求。
  • 隧道:中转程序,主要用于客户端和服务器端相隔比较远的时候。

代理

接收客户端的请求并转发,不改变URL,直接转发。
每次通过代理转发请求或者响应时,会追加到Via首部中。
代理的作用:

  • 缓存技术:可以减少流量:缓存代理 & 透明代理
  • 访问控制:针对特定的URL进行控制,

缓存

服务器返回请求的同时,代理服务器也会保存一份副本
但是缓存有可能和源资源不同步,所以需要设定有效期。
客户端缓存:

网关

将HTTP转换为其他的协议。

隧道

使用SSL建立一条与其他服务器的通道。

首部

通用首部

请求和响应都会用到的首部

Cache-Control


### Connection

作用:

  • 控制不再转发给代理的首部字段:Connection:Upgrade
  • 管理持久连接:Connection:close

请求首部字段


响应首部字段


## 实体首部字段

请求和响应都含有与实体相关的首部字段

Cookie相关的字段

Set-Cookie

服务器端在准备开始管理客户端的状态的时候,会事先告知各种信息

posted @ 2017-07-24 15:45  dy2903  阅读(262)  评论(0编辑  收藏  举报