通过 HTTP 协议访问 Web
提问: 在 Web browser 地址栏输入 URL 时, Web 页面时如何呈现的? 回答: Web 浏览器从 Web 服务器中获取服务器相关资源(resorce)等信息,其中 Web使用 HTTP(超文本传输协议) 协议作为规范,来完成客户端到服务端的整个过程,因此 Web 是建立在 HTTP 协议上通信的。
HTTP 制定初衷
当年 HTTP 协议的出现主要是为了解决文本传输的难题 ,协议本身非常简单,但现在 HTTP 协议已经超出 Web 这个框架的局限。
网络基础 TCP/IP
TCP/IP 是互联网相关的各类协议族的总称。
通常我们使用的网络(包括互联网)是在 TCP/IP 协议族的基础上运作,而 HTTP 属于它内部的一个子集。
TCP/IP 协议族的层次:应用层、传输层、网络层和数据链路层。层次化的优点:如果互联网只由一个协议统筹,当某个地方需要更改时,需要整个替换;分层后只需要替换掉响应的层。
TCP/IP 协议族各层的作用如下:
- 应用层:应用层决定向用户提供给服务是通信的活动,如 FTP(文本传输协议)、DNS(域名系统)服务以及 HTTP 协议。
- 传输层:对应用层,提供处于网络连接中的两台服务器之间的数据传输,传输层协议有 TCP(传输控制协议)、UDP(用户数据报协议)。
- 网络层:用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过怎样的路径到达对方的计算机,并把数据包传送给对方。
- 数据链路层:用来连接网络的硬件部分。
TCP/IP 通信传输过程: 发送端层与层之间传输数据时,经过一层就打上该层首部信息 接收端通过一层删除对应层的首部信息,这种数据信息包装称为封装。
IP、TCP 和 DNS
负责传输的 IP 协议
IP 网际协议位于网络层,其作用是把各种数据包传送给对方。而要保证确实传送到对方那儿需要满足各类条件,其中最重要的两个条件是 IP 地址和 MAC 地址。
IP地址指明了节点被分配的地址,MAC 地址是指网卡所属的固定地址。 IP 地址可与 MAC 地址配对。IP 地址可变换,但 MAC 地址基本不变。
IP 间的通信依赖于 MAC 地址,而 ARP 协议是用以解析地址的协议,可以根据通信方的 IP 地址反查出对应的 MAC 地址。
确保可靠性的 TCP 协议
TCP 位于传输层,提供可靠的字节流服务。
字节流服务是指为了方便传输,将大块数据分割成以报文段为单位的数据包进行管理。
可靠的传输服务是指能够把数据准确地传给对方。
TCP 协议为了更容易传送大数据才将数据分割,而 TCP 协议能够确认数据最终是否送达到对方。
为确保准确无误将数据传到目标处, TCP 协议采用了三次握手策略。握手过程使用了 TCP 的标志—— SYN 和 ACK。若某个阶段莫名中断,TCP 协议会再次以相同的顺序发送相同的数据包。
负责域名解析的 DNS 服务
DNS 服务和 HTTP 协议一样位于应用层。它提供域名到 IP 地址之间的解析服务。
计算机既可以被赋予 IP 地址,也可以被赋予主机名和域名。用户通常使用主机名或域名来访问对方的计算机。与 IP 地址相比,字母配合数字的主机名更符合人类记忆习惯。
但计算机去理解主机名相对困难,因此 DNS 服务提供通过域名查找 IP 地址,或者逆向从 IP 地址反查域名的服务。
各种协议与 HTTP 的关系
URI 和 URL
URI (统一资源标识符) : 由某个协议方案表示的资源的定位标识符。协议方案是指访问资源资源是所使用的协议类型名称(如:http、ftp、file 等)
URL(统一资源定位符) : 使用 Web 浏览器等访问 Web 页面时需要输入的网页地址。
URI 格式
HTPP/1.1 协议结构
-
HTTP 协议用于客户端和服务器端之间的通信 -
通过请求和响应达成通信 -
HTTP 是不保存状态的协议,意思是 HTTP 协议自身不具备保存之前发送过的请求或相应的功能 -
HTTP 协议使用 URI 定位互联网上的资源 -
告知服务器意图的 HTTP 方法, GET:获取资源; POST:传输实体主体 -
Cookie 的状态管理,解决 HTTP 不保留状态的问题,通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态。
HTTP 状态码
HTTP 的缺点
- 通信使用明文,内容可被窃听
- 不验证通信方身份,有可能遇到伪装
- 无法证明报文的完整性,因此有可能被篡改
HTTP + 加密 + 认证 + 完整性保护 = HTTPS
- HTTP 加上加密处理和认证以及完整性保护之后即时 HTTPS
- HTTPS 是身披 SSL 外壳的 HTTP
那么为什么不一直用 HTTPS,因为加密通信会消耗更多的 CPU 及内存资源,非敏感信息采用 HTTP,包含个人信息时使用 HTTPS 加密通信
HTTP 的瓶颈
- 一条连接一个请求
- 请求只可起于客户端
- 请求 / 响应未经压缩就发送
- 首部冗长
- 可任意选择数据压缩格式,非强制压缩
Ajax 的解决办法
和以前的同步通信相比,由于它只更新一部分页面,响应中传输的数据量会因此而减少
未完待续…
|