HTTP权威指南 -- 读书笔记 -- 第一部分 HTTP:Web的基础
HTTP权威指南 -- 读书笔记
第一部分 HTTP:Web的基础
第一章 HTTP概述
1.Web(http)服务器与客户端
??可能你每天都在使用 HTTP 客户端。最常见的客户端就是Web浏览器, 比如微软的Internet Explorer。Web浏览器向服务器请求HTTP对象,并将这些对象显示在你的屏幕上。
??浏览一个页面时,浏览器会向服务器www.oreilly.com发送一条HTTP请求。服务器会去寻找所期望的对象(在这个例子中就是 /index.html,如果成功,就将对象、对象类型、对象长度以及其他一些信息放在 HTTP 响应中发送给客户端
2.资源
??注意:一切能提供web内容的东西都是web资源包括:图片文件,文本文件,摄像头网关,搜索引擎网关等.
- http对全部通过web传输的对象都带上MIME(mime.type)类型的数据格式标签,标记类型
URI(统一资源标识符) 包含两类 URL(统一资源定位符) 以及 URN(统一资源名)
- URL的第一部分被称为方案(scheme),说明了访问资源所使用的协议类型。这部分通常就是HTTP协议(http://)。
- 第二部分给出了服务器的因特网地址(比如,www.joes-hardware.com)。
- 其余部分指定了Web服务器上的某个资源(比如,/specials/,saw-blade.gif)。
现在,几乎所有的URI都是URL。
URN作为特定内容的唯一名称使用,与目前的资源所在地无关,在试验阶段并未大范围使用.无特殊说明,资源定位使用URL
3.事务
??一个 HTTP 事务由一条(从客户端发往服务器的)请求命令和一个(从服务器发回客户端的)响应结果组成。这种通信是通过名HTTP 报文(HTTPmessage)的格式化数据块进行的
3.1 方法
??HTTP 支持几种不同的请求命令,这些命令被称为HTTP方法(HTTP method).每条 HTTP 请求报文都包含一个方法。 这个方法会告诉服务器要执行什么动作.
http方法 | 动作 |
---|---|
GET | 从服务器向刻划断发送命名资源 |
PUT | 将来自客户端的数据存储到一个命名的服务器资源中去 |
DELETE | 从服务器删除命名资源 |
POST | 将客户端数据发送到一个服务器网关应用软件 |
HEAD | 仅发送命名资源相应中的http首部 |
3.2 状态码
? ? 每条 HTTP 响应报文返回时都会携带一个状态码。 状态码是一个三位数字的代码,告知客户端请求是否成功, 或者是否需要采取其他动作。
常见HTTP状态码 | 描述 |
---|---|
200 | ok,文档正确返回 |
302 | 重定向(Redirect) |
404 | Not Found 无法找到资源 |
注意:web页面可以包含多个对象,一般的web页面是一组资源的集合,并且对每一个嵌入式资源使用一个单独的http事务
4.报文
??从 Web 客户端发往 Web 服务器的 HTTP 报文称为请求报文(request_message)。从服务器发往客户端的报文称为响应报文(response message),此外没有其他类型的HTTP 报文。 HTTP 请求和响应报文的格式很类似。
HTTP 报文包括以下三个部分。
- 起始行
报文的第一行就是起始行,在请求报文中用来说明要做些什么,在响应报文中说明出现了什么情况。 - 首部字段
起始行后面有零个或多个首部字段。 每个首部字段都包含一个名字和一个值,为了便于解析,两者之间用冒号(:)来分隔。首部以一个空行结束。 添加一个首部字段和添加新行一样简单。 - 主体
空行之后就是可选的报文主体了,其中包含了所有类型的数据。请求主体中包括了要发送给 Web 服务器的数据; 响应主体中装载了要返回给客户端的数据。 起始行和首部都是文本形式且都是结构化的,而主体则不同, 主体中可以包含任意的二进制数据( 比如图片、视频、音轨、软件程序)。当然,主体中也可以包含文本
5.连接
??HTTP 是个应用层协议。HTTP无需操心网络通信的具体细节;它把联网的细节都交给了通用、可靠的因特网传输协议TCP/IP。
- 浏览器从 URL 中解析出服务器的主机名;
- 浏览器将服务器的主机名转换成服务器的 IP 地址;
- 浏览器将端口号(如果有的话) 从URL中解析出来;
- 浏览器建立一条与 Web 服务器的 TCP 连接;
- 浏览器向服务器发送一条 HTTP 请求报文;
- 服务器向浏览器回送一条 HTTP 响应报文;
- 关闭连接, 浏览器显示文档。
6.Telnet模拟web客户端
??Telnet 程序可以将键盘连接到某个目标 TCP 端口,并将此TCP端口的输出回送到显示屏上。Telnet 常用于远程终端会话, 但它几乎可以连接所有的 TCP 服务器,包括 HTTP 服务器。
??可以通过 Telnet 程序直接与 Web 服务器进行对话。通过 Telnet 可以打开一条到某台机器上某个端口的 TCP 连接,然后直接向那个端口输入一些字符。 Web 服务器会将 Telnet 程序作为一个 Web 客户端来处理,所有回送给 TCP 连接的数据都会显示在屏幕上。
【问题】: http 版本的区别? 1.0,2.0,3.0?
7.web组件
- 代理
位于客户端和服务器之间的HTTP中间实体。
出于安全考虑,通常会将代理作为转发所有Web流量的可信任中间节点使用。代理还可以对请求和响应进行过滤。 - 缓存
HTTP的仓库,使常用页面的副本可以保存在离客户端更近的地方。
Web缓存(Web cache)或代理缓存(proxy cache)是一种特殊的HTTP代理服务器,可以将经过代理传送的常用文档复制保存起来。下一个请求同一文档的客户端就可以享受缓存的私有副本所提供的服务了.
客户端从附近的缓存下载文档会比从远程Web服务器下载快得多。HTTP定义了很多功能,使得缓存更加高效,并规范了文档的新鲜度和缓存内容的隐私性。 - 网关
连接其他应用程序的特殊 Web 服务器。
网关( gateway) 是一种特殊的服务器, 作为其他服务器的中间实体使用。 通常用于将 HTTP 流量转换成其他的协议。 网关接受请求时就好像自己是资源的源端服务器一样。 客户端可能并不知道自己正在与一个网关进行通信 - 隧道
对 HTTP 通信报文进行盲转发的特殊代理。
隧道( tunnel) 是建立起来之后, 就会在两条连接之间对原始数据进行盲转发的HTTP 应用程序。 HTTP 隧道通常用来在一条或多条 HTTP 连接上转发非 HTTP 数据, 转发时不会窥探数据。
HTTP 隧道的一种常见用途是通过 HTTP 连接承载加密的安全套接字层( SSL,Secure Sockets Layer) 流量, 这样 SSL 流量就可以穿过只允许 Web 流量通过的防火墙了。 HTTP/SSL 隧道收到一条 HTTP 请求, 要求建立一条到目的地址和端口的输出连接, 然后在 HTTP 信道上通过隧道传输加密的 SSL 流量, 这样就可以将其盲转发到目的服务器上去了。 - Agent 代理
发起自动 HTTP 请求的半智能 Web 客户端
用户 Agent 代理( 或者简称为 Agent 代理) 是代表用户发起 HTTP 请求的客户端程序。 所有发布 Web 请求的应用程序都是 HTTP Agent 代理。到目前为止, 我们只提到过一种 HTTP Agent 代理: Web 浏览器, 但用户 Agent 代理还有很多其他类型
2022/4/30 22:27:36 未完待续