HTTP
HTTP 是一种可靠的数据传输协议,能够确保在数据传输过程中数据的完整性。
Web客户端和服务器
Web 客户端(web资源的宿主)发送请求,请求资源;服务器(又称为 HTTP 服务请,存储web资源)接受请求,并在 HTTP 响应中返回请求的资源。
媒体类型(MIME type)
对应于数千种不同的数据进行处理时,HTTP会给每种要通过web传输的对象都打上MIME类型的数据标签格式。Web服务器会为所有的HTTP对象数据附加一个MIME类型。大多数的浏览器否可以处理上百种常见的对象类型。
MIME格式一种文本标签,表示一种主要的对象类型和一个特定的子类型,中间有一道斜杠来分隔。
例如:
• HTML 格式的文本文档由 text/html 类型来标记。
• 普通的 ASCII 文本文档由 text/plain 类型来标记。
• JPEG 版本的图片为 image/jpeg 类型。
• GIF 格式的图片为 image/gif 类型。
• Apple 的 QuickTime 电影为 video/quicktime 类型。
• 微软的 PowerPoint 演示文件为 application/vnd.ms-powerpoint 类型。
URI
服务器资源名称,被称作统一资源标识符(Uniform Resource Identifier)。有URL和URN两种形式。
URL
统一资源定位符,URI最常见的形式。描述了一台特定的服务器上某资源的特定位置,可以准确的说明如何从一个精确、固定的位置获取资源。
大部分的URL都遵循一种标准:
• URL 的第一部分被称为方案(scheme),说明了访问资源所使用的协议类型。这部分通常就是 HTTP 协议(http://)、HTTPS协议((https://)、FTP协议((ft p://)。
• 第二部分给出了服务器的因特网地址(比如,www.joes-hardware.com)。
• 其余部分指定了 Web 服务器上的某个资源(比如,/specials/saw-blade.gif)。
URN
统一资源名,URN是作为特定内容的唯一名称使用的,与目前资源的存储位置无关。使用这些与位置无关的URN,可以将资源四处搬移,还可以通过使用同一个名字通过多种网络协议来访问资源。
事务
一个HTTP事务是由一条(从客户端发往服务器)请求命令和一条(从服务器发回客户端)响应结果组成的。这种通信是通过名为HTTP报文(HTTP message)的格式化数据块进行的。
报文
HTTP报文是由一行一行简单的字符串组成的,都是纯文本,不是二进制代码,人们可以很方便的读写。报文只有请求报文(从 Web 客户端发往 Web 服务器的 HTTP 报文)和响应报文(从 服务器发往客户端的报文称为响应报文)两种。
连接
HTTP是一个应用层协议,HTTP不关注网络通信的具体细节,把联网细节都交给了TCP/IP协议。
TCP 提供了:
• 无差错的数据传输;
• 按序传输(数据总是会按照发送的顺序到达);
• 未分段的数据流(可以在任意时刻以任意尺寸将数据发送出去)。
HTTP协议位于TCP层之上。HTTP使用TCP来传输其报文数据。与之类似,TCP 则位于 IP 的上层
HTTP 网络协议栈.png
连接、IP地址及端口号
HTTP客户端向服务器端发送报文之前,需要使用网际协议(IP)地址和端口号在客户端和服务器端建立一条TCP/IP连接。
步骤如下:
(a) 浏览器从 URL 中解析出服务器的主机名;
(b) 浏览器将服务器的主机名转换成服务器的 IP 地址; (c) 浏览器将端口号(如果有的话)从 URL 中解析出来; (d) 浏览器建立一条与 Web 服务器的 TCP 连接;
(e) 浏览器向服务器发送一条 HTTP 请求报文;
(f) 服务器向浏览器回送一条 HTTP 响应报文;
(g) 关闭连接,浏览器显示文档。
使用Telnet实例
Telnet 程序可以将键盘连接到某个目标 TCP 端口,并将此 TCP 端口的输出回送到 显示屏上。Telnet 常用于远程终端会话,但它几乎可以连接所有的 TCP 服务器,包 括 HTTP 服务器。
可以通过 Telnet 程序直接与 Web 服务器进行对话。通过 Telnet 可以打开一条到 某台机器上某个端口的 TCP 连接,然后直接向那个端口输入一些字符。Web 服务 器会将 Telnet 程序作为一个 Web 客户端来处理,所有回送给 TCP 连接的数据都 会显示在屏幕上。
Web的结构组件
• Web 浏览器
• Web 服务器
• 代理
位于客户端和服务器之间的 HTTP 中间实体,接收所有客户端的 HTTP 请求,并 将这些请求转发给服务器(可能会对请求进行修改之后转发)。
• 缓存
HTTP 的仓库,使常用页面的副本可以保存在离客户端更近的地方。
• 网关
连接其他应用程序的特殊 Web 服务器。
• 隧道
对 HTTP 通信报文进行盲转发的特殊代理。
• Agent 代理
发起自动 HTTP 请求的半智能 Web 客户端。
网友评论