HTTP世界全览(下):与HTTP相关的各种协议

HTTP世界全览(下):与HTTP相关的各种协议

  • TCP/IP
  • DNS
  • URI/URL
  • HTTPS
  • 代理
  • 小结
  • 课下作业

在上一讲中,介绍了与HTTP相关的浏览器、服务器、CDN、 络爬虫等应用技术。

今天要讲的则是比较偏向于理论的各种HTTP相关协议,重点是TCP/IP、DNS、URI、HTTPS等,希望能够帮你理清楚它们与HTTP的关系。

同样的,还是画了一张详细的思维导图,你可以点击后仔细查看。

但想要使用TCP/IP协议来通信仍然要使用IP地址,所以需要把域名做一个转换,“映射”到它的真实IP,这就是所谓的“域名解析”。

继续用刚才的打电话做个比喻,你想要打电话给小明,但不知道电话 码,就得在手机里的 码簿里一项一项地找,直到找到小明那一条记录,然后才能查到 码。这里的“小明”就相当于域名,而“电话 码”就相当于IP地址,这个查找的过程就是域名解析。

域名解析的实际操作要比刚才的例子复杂很多,因为互联 上的电脑实在是太多了。目前全世界有13组根DNS服务器,下面再有许多的顶级DNS、权威DNS和更小的本地DNS,逐层递归地实现域名查询。

HTTP协议中并没有明确要求必须使用DNS,但实际上为了方便访问互联 上的Web服务器,通常都会使用DNS来定位或标记主机名,间接地把DNS与HTTP绑在了一起。

URI/URL

HTTP世界全览(下):与HTTP相关的各种协议

有了TCP/IP和DNS,是不是我们就可以任意访问 络上的资源了呢p>

还不行,DNS和IP地址只是标记了互联 上的主机,但主机上有那么多文本、图片、页面,到底要找哪一个呢小明管理了一大堆文档,你怎么告诉他是哪个呢p>

所以就出现了URI(Uniform Resource Identifier),中文名称是 统一资源标识符,使用它就能够唯一地标记互联 上资源。

URI另一个更常用的表现形式是URL(Uniform Resource Locator), 统一资源定位符,也就是我们俗称的“ 址”,它实际上是URI的一个子集,不过因为这两者几乎是相同的,差异不大,所以通常不会做严格的区分。

我就拿Nginx 站来举例,看一下URL是什么样子的。

http://nginx.org/en/download.html
你可以看到,URL主要有三个基本的部分构成:

  1. 协议名:即访问该资源应当使用的协议,在这里是“http”;
  2. 主机名:即互联 上主机的标记,可以是域名或IP地址,在这里是“nginx.org”;
  3. 路径:即资源在主机上的位置,使用“/”分隔多级目录,在这里是“/en/download.html”。

URI = URL – HOST
所以上例中的URI为/en/download.html

HTTPS

在TCP/IP、DNS和URI的“加持”之下,HTTP协议终于可以自由地穿梭在互联 世界里,顺利地访问任意的 页了,真的是“好生快活”。

但且慢,互联 上不仅有“美女”,还有很多的“野兽”。

假设你打电话找小明要一份广告创意,很不幸,电话被商业间谍给窃听了,他立刻动用种种手段偷窃了你的快递,就在你还在等包裹的时候,他抢先发布了这份广告,给你的公司造成了无形或有形的损失。

有没有什么办法能够防止这种情况的发生呢有。你可以使用“加密”的方法,比如这样打电话:

  • 你:“喂,小明啊,接下来我们改用火星文通话吧。”
  • 小明:“好啊好啊,就用火星文吧。”
  • 你:“巴拉巴拉巴拉巴拉……”
  • 小明:“巴拉巴拉巴拉巴拉……”

如果你和小明说的火星文只有你们两个才懂,那么即使窃听到了这段谈话,他也不会知道你们到底在说什么,也就无从破坏你们的通话过程。

HTTPS就相当于这个比喻中的“火星文”,它的全称是“HTTP over SSL/TLS”,也就是运行在SSL/TLS协议上的HTTP。

注意它的名字,这里是SSL/TLS,而不是TCP/IP,它是一个负责加密通信的安全协议,建立在TCP/IP之上,所以也是个可靠的传输协议,可以被用作HTTP的下层。

因为HTTPS相当于“HTTP+SSL/TLS+TCP/IP”,其中的“HTTP”和“TCP/IP”我们都已经明白了,只要再了解一下SSL/TLS,HTTPS也就能够轻松掌握。

SSL的全称是“Secure Socket Layer”,由 景公司发明,当发展到3.0时被标准化,改名为TLS,即“Transport Layer Security”,但由于历史的原因还是有很多人称之为SSL/TLS,或者直接简称为SSL。

SSL使用了许多密码学最先进的研究成果,综合了对称加密、非对称加密、摘要算法、数字签名、数字证书等技术,能够在不安全的环境中为通信的双方创建出一个秘密的、安全的传输通道,为HTTP套上一副坚固的盔甲。

你可以在今后上 时留心看一下浏览器地址栏,如果有一个小锁头标志,那就表明 站启用了安全的HTTPS协议,而URI里的协议名,也从“http”变成了“https”。

代理

代理(Proxy)是HTTP协议中请求方和应答方中间的一个环节,作为“中转站”,既可以转发客户端的请求,也可以转发服务器的应答。

代理有很多的种类,常见的有:

  1. 匿名代理:完全“隐匿”了被代理的机器,外界看到的只是代理服务器;
  2. 透明代理:顾名思义,它在传输过程中是“透明开放”的,外界既知道代理,也知道客户端;
  3. 正向代理:靠近客户端,代表客户端向服务器发送请求;
  4. 反向代理:靠近服务器端,代表服务器响应客户端的请求;

上一讲提到的CDN,实际上就是一种代理,它代替源站服务器响应客户端的请求,通常扮演着透明代理和反向代理的角色。
由于代理在传输过程中插入了一个“中间层”,所以可以在这个环节做很多有意思的事情,比如:

  1. 负载均衡:把访问请求均匀分散到多台机器,实现访问集群化;
  2. 内容缓存:暂存上下行的数据,减轻后端的压力;
  3. 安全防护:隐匿IP,使用WAF等工具抵御 络攻击,保护被代理的机器;
  4. 数据处理:提供压缩、加密等额外的功能。

关于HTTP的代理还有一个特殊的“代理协议”(proxy protocol),它由知名的代理软件HAProxy制订,但并不是RFC标准,我也会在之后的课程里专门讲解。

小结

这次我介绍了与HTTP相关的各种协议,在这里简单小结一下今天的内容。

  1. TCP/IP是 络世界最常用的协议,HTTP通常运行在TCP/IP提供的可靠传输基础上;
  2. DNS域名是IP地址的等价替代,需要用域名解析实现到IP地址的映射;
  3. URI是用来标记互联 上资源的一个名字,由“协议名+主机名+路径”构成,俗称URL;
  4. HTTPS相当于“HTTP+SSL/TLS+TCP/IP”,为HTTP套了一个安全的外壳;
  5. 代理是HTTP传输过程中的“中转站”,可以实现缓存加速、负载均衡等功能。

经过这两讲的学习,相信你应该对HTTP有了一个比较全面的了解,虽然还不是很深入,但已经为后续的学习扫清了障碍。

课下作业

  1. DNS与URI有什么关系li>
  • DNS 是将域名解析出真实IP地址的系统URI 是统一资源标识符,标定了客户端需要访问的资源所处的位置,如果URI中的主机名使用域名,则需要使用DNS来讲域名解析为IP。
  1. 在讲代理时我特意没有举例说明,你能够用引入一个“小强”的角色,通过打电话来比喻一下吗li>
  • 我们为了更安全的和小明交流,选择通过和小强交流,让其再告诉小明,这是匿名代理,也是正向代理,而如果让小明知道我们的存在则不是匿名代理,是透明代理;小明由于某些原因不能直接响应我们,找了小强来代为响应我们,这是反向代理。

文章知识点与官方知识档案匹配,可进一步学习相关知识 络技能树支撑应用程序的协议HTTP协议22972 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年3月6日
下一篇 2021年3月6日

相关推荐