HTTP权威指南

阅读《 HTTP权威指南 》
记录一下要点和收获

介绍:

HTTP

  • Hypertext Transfer Protocol
  • 超文本传输协议

软硬件工程师

  • HTTP及相关Web技术参考书使用

系统架构师、网络管理员

  • 了解如何设计、实现并管理复杂的网络架构

性能工程师、分析人员

  • 缓存和性能优化

市场营销、咨询专家

  • 更好了解Web技术前景

HTTP: Web的基础

HTTP概述

Web内容(资源)

  • 存储在Web服务器上

Web服务器

  • 使用HTTP协议
  • 也被称为HTTP服务器

万维网基本组件

  • HTTP客户端-发送请求
  • HTTP服务器-提供数据

HTTP客户端

  • 最常见的就是Web浏览器

    如:微软的Internet Explorer
    网景Navigator


简易过程:

  • 浏览网页-浏览器向服务器发送一条HTTP请求
  • 服务器寻找所期望的对象
  • 成功就将对象、对象类型、对象长度、及其他信息
  • 放在HTTP响应中发送给客户端

Web资源:
客户端-因特网-(服务器-资源)

媒体类型
HTTP为每种要通过Web传输的对象都打上了MIME类型的数据格式标签
(Multipurpose Internet Mail Extension,多用途因特网邮件扩展)

  • 解决在不同电子邮件系统间 搬移报文存在的问题
  • 当Web浏览器从服务器取回一个对象
  • 会去查看相关的MIME类型,然后处理对象-数百种常见对象类型

MIME类型

  • HTML格式的文本文档由text/html类型来标记
  • 普通的ASCII文本由text/plain类型来标记
  • JPEG格式的图片 image/jpeg类型
  • GIF格式 image/gif类型
  • Apple的QuickTime电影为 video/quicktime类型
  • 微软的PowerPoint演示文件为 application/vnd.ms-powerpoint类型

URI
每一个Web服务器资源都有一个名字

  • 服务器资源
  • 被称为-统一资源标识符(Uniform Resource Identifier, URI)
  • 在世界范围内,唯一标识并定位信息资源

URI两种形式

  • URL和URN

URL
URL说明了协议、服务器、本地资源

URL三部分

  1. 访问资源使用的协议类型-一般HTTP协议
  2. 指定服务器的因特网地址-www.joes-hardware.com
  3. 服务器上的某个资源-/specials/saw-blade.gif
  4. 几乎所有的URI都是URL

URN

  • URI第二种形式
  • 统一资源名
  • 作为特定内容的唯一名称使用
  • 与位置无关-可以将资源四处搬移
  • 可以通过多种网络协议来访问资源
  • 尚未大范围使用

事务:
一个HTTP事务

  • 由一条请求命令-从客户端发往服务器
  • 响应结果-从服务器发回客户端
  • 通过HTTP报文进行-格式话数据块

方法:
HTTP支持几种不同的请求命令

  • 称为HTTP方法
  • 每条HTTP请求报文都包含一个方法
  • 告诉服务器执行什么动作-CRUD
  • 常见五种方法
  • GET- 服务器向客户端发送-命名资源
  • PUT- 客户端向服务器发送-来自客户端的数据存储到服务器中
  • DELETE- 服务器删除命名资源
  • POST- 客户端向服务器发送-发送到服务器网关应用程序???
  • HEAD- 仅发送命名资源响应中的HTTP首部

状态码:
每条HTTP响应报文返回时都会携带一个状态码

  • 一个三位数字的代码
  • 告诉客户端是否成功
  • 200-OK,文档正确返回
  • 302-Redirect重定向,到其他地方去获取资源
  • 404-Not Found没找到,无法找到资源

报文:
HTTP报文包括三部分

  1. 起始行-请求报文-做什么 响应报文-出现什么情况
  2. 首部字段-K V
  3. 主体-包含数据

连接:
TCP-Transmission Control Protocol
传输控制协议

  • 报文通过传输控制协议 连接 从一个地方搬移到另一个地方

TCP/IP
HTTP是给应用层协议-无需关心网络具体细节

  • 细节交给了TCP/IP

TCP提供了:

  • 无差错的数据传输
  • 按序传输
  • 未分段的数据流

网络协议层次

  • HTTP-应用层
  • TCP-传输层
  • IP-网络层
  • 网络特有的链路接口-数据链路层
  • 物理网络硬件-物理层

连接、IP地址及端口号

过程:HTTP客户端向服务器发送报文前,需要用网际协议-IP的地址 和 端口号
在客户端和服务器之间建立一条TCP/IP连接——想想网络层次

URL连接案例:

http://207.200.83.29:80/index.html--IP地址+端口号
http://www.netscape.com:80/index.html--DNS转化为IP地址+端口号
http://www/netscape.com/index.html----默认端口号80

浏览器通过HTTP显示服务器资源过程

  1. 用户输入URL
  2. 获取主机名
  3. DNS
  4. 获取端口号
  5. 连接到服务器-ip地址+端口号
  6. 发送一条HTTP GET请求
  7. 服务器读取HTTP 响应
  8. 关闭连接-浏览器显示文档

协议版本

  • HTTP/0.9-只支持GET,不支持MIME、各种HTTP首部、版本号
  • HTTP/1.0-版本号、MIME、
  • HTTP/1.0+ -持久的keep-alive连接、虚拟祝你、代理连接-非正式的HTTP扩展版
  • HTTP/1.1-校正HTTP中结构性缺陷,明确语义,引入性能优化措施
  • HTTP-NG-重点关注性能大幅优化,服务逻辑远程执行框架-未普及

Web的结构组件

URL与资源

HTTP报文

连接管理


HTTP结构

Web服务器

代理

缓存

集成点:网关、隧道及中继

Web机器人

HTTP-NG


识别、认证与安全

客户端识别与cookie机制

基本认证机制

摘要认证

安全HTTP


实体、编码和国际化

实体和编码

国际化

内容协商与转码


内容发布与分发

Web主机托管

发布系统

重定向与负载均衡

日志记录与使用情况跟踪

附录

URI方案

HTTP状态码

HTTP首部参考

MIME类型

Base-64编码

摘要认证

语言标记

MIME字符集注册表