本节主要介绍HTTP相关的各种协议。
计算机网络里通信标准有两套,一套是OSI制定的标准协议,即OSI七层模型,另一套则是TCP/IP协议,即我们常说的四层模型。
OSI七层模型是国际标准组织制定的标准协议,而TCP/IP协议由于在OSI七层模型出来之前已经实施多年,得到了市场的认可,因此我们现在使用的都是TCP/IP协议,OSI更多的是对TCP/IP细节上的补充,偏向于学术。
TCP/IP 协议实际上是一系列网络通信协议的统称,其中核心的两个协议是TCP和IP,其他的还有 UDP、ICMP、ARP 等等,共同构成了一个复杂的协议栈。
这个协议栈有四层:
TCP 协议是“Transmission Control Protocol”的缩写,即传输控制协议,它位 于 IP 协议之上,基于 IP 协议提供可靠的、字节流形式的通信,是 HTTP 协议得以实现的基础。
“可靠”是指保证数据不丢失,“字节流”是指保证数据完整,所以在 TCP 协议的两端可以如同操作文件一样访问传输的数据,就像是读写在一个密闭的管道里“流动”的字节。
HTTP 是一个"传输协议",但它不关心寻址、路由、数据完整性等传输细节,而要求这些工作都由下层来处理。因为互联网上流行的是 TCP/IP 协议,而它 刚好满足 HTTP 的要求,所以互联网上的 HTTP 协议就运行在了 TCP/IP 上,HTTP 也就可以更准确地称为“HTTP over TCP/IP”。
在 DNS 中,“域名”(Domain Name)又称为“主机名”(Host),为了更好地标记不 同国家或组织的主机,让名字更好记,所以被设计成了一个有层次的结构。
域名用“.”分隔成多个单词,级别从左到右逐级升高,右边的被称为“顶级域名”,例如表示商业公司的“com”、表示教育机构 的“edu”,表示国家的“cn”等。
HTTP 协议中并没有明确要求必须使用 DNS,但实际上为了方便访问互联网上的 Web 服 务器,通常都会使用 DNS 来定位或标记主机名,间接地把 DNS 与 HTTP 绑在了一起。
为了标识主机上的每个资源,因此出现了 URI(Uniform Resource Identifier),中文名称是统一资源标识符,使用它就能够唯一地标记互联网上资源。
URI 另一个更常用的表现形式是 URL(Uniform Resource Locator), 统一资源定位符,也就是我们俗称的“网址”,它实际上是 URI 的一个子集,不过因为这两者几乎是相同的,差异不大,所以通常不会做严格的区分。
https://mp.csdn.net/postedit?not_checkout=1
例如上面的网址,一般域名由三部分组成:
通过TCP/IP,DNS,URL,终于可以找到网络上的某个资源,可以进行通信获取,但HTTP协议进行数据传送时都是明文的,因此出现了很多安全问题,尤其是近几年网络安全问题越来越引人重视,因此出现了HTTPS协议。
HTTPS协议简单来理解就是HTTP协议的安全版本,将HTTP协议通信时的明文进行了加密,这样即便通信数据报被黑客截获也无法破解,保证了通信的安全。HTTPS同样基于TCP协议,只是在HTTP协议和TCP协议之间加了一层SSL/TLS层,这是一个负责加密通信的安全协议。
SSL 的全称是“Secure Socket Layer”,由网景公司发明,当发展到 3.0 时被标准化,改名为 TLS,即“Transport Layer Security”,但由于历史的原因还是有很多人称之为 SSL/TLS,或者直接简称为 SSL。
SSL 使用了许多密码学先进的研究成果,综合了对称加密、非对称加密、摘要算法、数字签名、数字证书等技术,能够在不安全的环境中为通信的双方创建出一个秘密的、安全的传输通道,保证通信的安全。
如上面那个网址,就是采用了HTTPS协议。
代理(Proxy)是 HTTP 协议中请求方和应答方中间的一个环节,作为“中转站”,既可以转发客户端的请求,也可以转发服务器的应答。
代理有很多的种类,常见的有:
CDN,实际上就是一种代理,它代替源站服务器响应客户端的请求,通常扮演着透明代理和反向代理的角色。
由于代理在传输过程中插入了一个“中间层”,所以可以在这个环节做很多事, 比如:
关于 HTTP 的代理还有一个特殊的“代理协议”(proxy protocol),它由知名的代理软件 HAProxy 制订。
因篇幅问题不能全部显示,请点此查看更多更全内容