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说明了协议、服务器、本地资源
- 统一资源定位符
- 描述了一台特定服务器上某资源的特定位置
- http://www.joes-hardware.com/specials/saw-blade.gif
- 1.使用HTTP协议 2.进入www.joes-hardware.com 3. 获取名为/specials/saw-blade.gif的资源
URL三部分
- 访问资源使用的协议类型-一般HTTP协议
- 指定服务器的因特网地址-www.joes-hardware.com
- 服务器上的某个资源-/specials/saw-blade.gif
- 几乎所有的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报文包括三部分
- 起始行-请求报文-做什么 响应报文-出现什么情况
- 首部字段-K V
- 主体-包含数据
连接:
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显示服务器资源过程
- 用户输入URL
- 获取主机名
- DNS
- 获取端口号
- 连接到服务器-ip地址+端口号
- 发送一条HTTP GET请求
- 服务器读取HTTP 响应
- 关闭连接-浏览器显示文档
协议版本
- HTTP/0.9-只支持GET,不支持MIME、各种HTTP首部、版本号
- HTTP/1.0-版本号、MIME、
- HTTP/1.0+ -持久的keep-alive连接、虚拟祝你、代理连接-非正式的HTTP扩展版
- HTTP/1.1-校正HTTP中结构性缺陷,明确语义,引入性能优化措施
- HTTP-NG-重点关注性能大幅优化,服务逻辑远程执行框架-未普及
Web的结构组件