HTTP简要介绍
- web客户端与服务器是如何通信的。
- 表示web内容的资源来自何方。
- web事物是怎么样工作的。
- HTTP通信所使用的报文格式。
- 底层TCP网络传输。
- 不同的HTTP协议变体。
- 因特网上安装的大量的HTTP架构组件中的一部分。
1. web客户端与服务器是如何通信的。
客户端向服务器发送HTTP请求,服务器向客户端返回HTTP响应,并在响应中附带所请求的数据。
2. 表示web内容的资源来自何方?
所有能够提供web内容的东西都是web资源。
MIME Type 媒体类型,表示返回的web资源的类型。
MIME Type 格式为:
对象类型 / 特定的子类型
如:
text / html html 文本
text / plain ASCII 文本
URI 同意资源标识符,就是URL的超集。
URL 统一资源定位符。表示web资源在web服务器上的位置,精确的说明了资源位置。
URL 格式如下:
协议类型 + 主机地址 + 主机上的文件路径
如: http://www.baidu.com/html/index.html
······协议 ·····主机地址 ·······文件路径
3. web事物是怎样工作的。
HTTP事物由请求命令 和 响应结果 组成,通过HTTP报文的格式化数据块进行通信。
事物的载体就是 HTTP报文,也就是说HTTP事物由请求报文和响应报文组成。
请求报文中 包含请求指令,常用的请求指令有:GET POST
响应报文中 包含响应状态码,常用的状态码有:200 请求正确返回,302 重定向, 404 请求资源部存在。
状态码:
状态码由三位整数组成,用来告知客户端,服务器响应结果。
4. HTTP通信所使用的报文格式
HTTP报文是纯文本格式字符串。
HTTP报文包括三个部分:
- 起始行
- 首部字段
-
主体
起始行,首部字段 都是结构化纯文本形式
主体 可以是 二进制数据 和 文本形式。
响应报文中:
content-length 响应报文主体长度
content-Type 响应报文主体的MIME(媒体类型)
image.png
5. 底层TCP网络传输
TCP:传输控制协议
- 无差错的数据传输。
- 按序传输(数据总是按照发送的顺序到达)
- 未分段的数据流(可以在任意时刻以任意尺寸将数据发送出去)
由上可看出:TCP是可靠的传输控制协议。
还有一种UDP用户数据报协议,UDP是不可靠的传输控制协议
IP: 网际协议(网络地址协议)
···网际协议由 IP地址 和 端口号 组成。
···通过网际协议来标识,服务器(客户端)在互联网世界中的位置。
···只有找到服务器(客户端)的具体位置,才能进行通信。
···就像打电话,必须先知道对方的电话号码,才能进行通话
所以 TCP/IP 也可称为 寻址--传输协议
···通过IP协议来寻址。
···通过TCP协议来传输信息。
IP地址和端口号在客户端与服务器之间建立一条TCP/IP链接。
HTTP协议位于 TCP协议上层
TCP协议 位于 IP协议上层
HTTP通过TCP来传输报文数据。
image.png
浏览器与服务器通信的步骤:
- 浏览器从URL中解析出服务器主机名。
- 浏览器将主机名转换为IP地址。
- 浏览器将端口号(如果有的话,没有默认为80端口)解析出来。
- 浏览器通过IP地址,端口号 找到服务器,并在客户端与服务器之间建立一条TCP链接。
- 浏览器向服务器发送HTTP请求报文。
- 服务器向浏览器发送HTTP响应报文。
- 关闭链接,浏览器显示文档。
6. 不同的HTTP协议变体
- HTTP/0.9
HTTP最初的版本,已过时。 - HTTP/1.0
第一个广泛使用的HTTP版本。
增加了版本号,首部,对多媒体对象的支持,使得包含生动图片的web网页和交互式表格成为可能。 - HTTP/1.0+
非正式扩展板。
增加了keep-alive,虚拟主机,代理支持。 - HTTP/1.1
当前使用的HTTP版本。
校正HTTP设计缺陷,明确语义,引入重要的性能优化措施,对复杂的web应用程序,和部署方式的支持。 - HTTP-NG(又叫HTTP/2.0)
目前暂未使用。
重点关注性能优化,服务器逻辑远程执行框架。
7. 因特网上安装的大量的HTTP架构组件中的一部分。
- 代理服务器
位于服务器与客户端直接的HTTP实体 - 缓存服务器
HTTP仓库,使常用网页的副本可以保存在鱼客户端更近的地方。 - 网关
连接与其他应用程序的特殊web服务器 - Agent 代理
发起自动HTTP请求的半智能web客户端。
-
代理服务器
代理服务器位于客户端和服务器之间,接收所有客户的请求,并将请求转发非目标服务器。
代理服务器就像路由器的信号中继器一样。
因为信号的传输距离是有限制的,超出有效传输距离,信号就会衰减,甚至丢失。所有必须搞一个或者N个像路由器中继器一样的东西。这就是代理服务器。 -
缓存服务器
一种特殊的HTTP代理服务器。
将常用的文档复制保存,下一个请求同一文档的客户端就可以直接从缓存服务器中取得文档。
因为目标服务器距离客户端越远,通信一次所耗时就越长。从附近的代理服务器上下载文档比从远程目标服务器中下载文件要快的多。
HTTP中规范了缓存文档的新鲜度,以及隐私性。 -
Agent代理
代表发起HTTP请求的客户端程序。
所以发起web请求的都是 HTTP Agent 代理。
HTTP Agent代理 通常是web浏览器。
HTTP 请求报文 首部字段中 有个 User-Aagent.
User-Agent 用户代理:
可以理解为浏览器标识,就是标识出你用的什么牌子的浏览器。 -
网关
image.png
网关也是一个特殊的代理服务器。
通常用于将HTTP协议转换为其他协议。
就像一个翻译一样,将你说的汉语翻译成别人的语言,如:英语,日语等。
客户端完全不知道自己在与网关通信。因为网关也是代理服务器,与其他代理服务器没有任何区别。
服务器:从硬件上讲,就是一台电脑主机。从逻辑上讲 运行上服务器上的web程序。
网关:也就是 运行在服务器主机上的 网关程序。
。