HTTP常用基本概念

第一部分:概述

问题 :

  • Web客户端与服务器是如何通信的?
  • 表示Web内容的资源来自何方?
  • Web事务是怎样工作的?
  • HTTP通信所使用的报文格式.
  • 底层TCP网络传输.
  • 因特网上安装大量HTTP架构组件中的一部分.

答案 :

问题1:Web客户端与服务器是如何通信的?

  • Web客户端像Web服务端发送HTTP请求,服务端会向客户端相应所请求的数据.

问题2:表示Web内容的资源来自何方?

  • 最简单的Web资源就是Web服务器文件系统中的静态文件,但是资源还包括根据需要生成的软件程序.

问题3:Web事务是怎样工作的?

  • 一个HTTP事务是由一条请求命令(客->服)和一条响应(服->客)结果组成.

问题4:HTTP通信所使用的报文格式.

  • 报文包括”起始行”,”首部字段”,”主体”.
    起始行就是报文的第一行,在请求报文中用来说明要做些什么,在响应报文中说明出现了什么情况.
    每一个首部字段都包含一个名字和一个值,中间用冒号来分隔,以一个空行结束
    主体包含了所有类型的数据(客户端发给服务器的数据或者服务端响应给客户端的所有数据),主体中可以包含任意的二进制数据

问题5:底层TCP网络传输.

  • HTTP是一个应用层程序,网路通讯部分都是利用传输协议TCP/IP协议进行的.
  • 无差别的数据传输
  • 按序传输(按照数据发送的顺序到达)
  • 未分段的数据流(任意时刻任意尺寸将数据发送出去)
    #####基本浏览器连接处理步骤:

    1. 浏览器从URL中解析出服务器的主机名.
    2. 浏览器将服务器的主机名转换成服务器的IP地址.
    3. 浏览器将端口号(如果有端口号)从URL中解析出来.
    4. 浏览器建立一条与Web服务器的TCP连接.
    5. 浏览器向服务器发送一条HTTP请求报文.
    6. 服务器向浏览器回送一条HTTP响应报文.
    7. 关闭连接,浏览器显示文档.

问题6:因特网上安装大量HTTP架构组件中的一部分.

  • 代理:位于客户端和服务端之间的HTTP中间实体.
  • 缓存:HTTP的仓库,使常用页面的副本可以保存在离客户端更近的地方.
  • 网关:连接其他应用程序的Web服务器.
  • 隧道:对HTTP通信报文进行盲转发的特殊代理.
  • Agent代理:发起自动HTTP请求的半智能Web客户端.

第二部分:URL与资源

问题:

  • URL语法,以及各种URL组件的含义以及其所做的工作.
  • 很多Web客户端都支持的URL快捷方式,包括相对URL和自动扩展URL.
    RN这种框架可以在对象从一处搬移到另一处时,保持稳定的访问名称.

答案:

问题1:URL语法

URI,URL,URN之间的关系.
URL通用格式 : (scheme)://(user):(password)@(host):(post)/(path);(params)?(query)#(frag)
URL三部分:
  • 第一部分:URL方案(客户端怎样访问资源,比如URL要说明使用HTTP协议)
  • 第二部分:服务器的位置.
  • 第三部分:服务器上的资源路径.

问题2:URL快捷方式.

  • 相对URL
  • 自动扩展URL

第三部分:HTTP报文

问题 :

  • 报文是如何流动的
  • HTTP报文的三个组成部分
  • 请求报文和响应报文之间的区别
  • 请求报文支持的各种功能(方法)
  • 和响应报文一起返回的各种状态码
  • 各种各样的HTTP首部都是用来做什么的

HTTP缓存

基本概念

  • 命中和未命中
  • 再验证
  • 缓慢命中(再验证命中)
  • 再验证未命中
  • 缓存命中率
  • 200响应码的两种情况

缓存的处理步骤

  • 接收
  • 解析
  • 查找(元数据:例如缓存的对象包含的在缓存中停留的时间)
  • 新鲜度检测
  • 创建响应(首部改造,插入新鲜度信息)
  • 发送
  • 日志(根据缓存的命中和未命中统计数目)

保持副本的新鲜度

  • Expires/Cache-Control/Date [文档过期(Expires(绝对时间)首部,Cache-Control(相对时间:秒)首部)]
  • 服务器再验证(确定文档过期以后是否真的发生改变了)
  • 条件方法再验证(向服务器发送get请求,加上条件首部)
  • 缓存验证的常用首部:
  • If-Modified-Since 验证Date(结果是:304 Not Modified||Last-Modified)
  • If-None-Match 验证ETag(结果是:304 Not Modified||200 OK并且更新ETag)(P188)
  • 304 Not Modified响应码的出现
  • 强弱验证器(ETag: W/”2.5”)
  • 客户端的缓存在什么情况下应该使用实体标签或者最近修改日期?(主要还是看服务器返回的标签类型)

控制缓存的能力

  • Cache-Control:no-store (严格)
  • Cache-Control:no-cache (有缓存,只不过是每次都要向服务器验证新鲜度)
  • Cache-Control:must-revalidate(没发现与no-cache有啥区别)
  • Cache-Control:max-age (max-age||s-maxage)
  • Expires
  • 试探性过期(LM-Factor算法):
  • Heuristic Expiration Warning首部

控制Apache的HTTP首部

  • 控制Apache的HTTP首部
  • 通过HTTP-EQUIV控制HTML缓存

你可能感兴趣的:(http,http基本概念)