18888628835/Blog

HTTP 相关概念

18888628835 opened this issue · 0 comments

HTTP 相关的应用

Web 服务器

浏览器是 HTTP 中的请求方,而协议的另一方就是应答方==>服务器,Web Server

Web服务器有两个层面的含义:硬件和软件。

硬件指的就是物理形式或者云形式的机器,在多数情况下它不一定是服务器,而是利用反向代理、负载均衡等多种技术组成的集群。

软件就是提供 Web 服务的应用程序,通常运行在硬件含义的服务器上,它利用硬件能力响应海量的 HTTP 请求,处理各种网页、图片等文件,或者转发请求等等。

目前世界上最流行两类 Web 服务器,分别是老牌的 Apache 服务器(特点:功能完善,学习门槛低)和后起之秀 Nginx(特点:高性能、高稳定性)。

CDN

CDN 全称是内容分发网络Content Delivery Network,它是浏览器和服务器之间的内容架设,它应用了 HTTP 协议中的缓存和代理技术,能够代理源站响应客户端的请求。

它有什么好处呢?

它可以缓存源站数据,让浏览器不用再千里迢迢到达源站服务器,而是在半路直接获取响应。如果 cdn 的调度算法优秀,那么就可以找到距离用户跟进的节点,大幅度缩短响应时间。

爬虫

浏览器是一种用户代理,代替我们访问互联网。

但是这个代理也可以是机器人,这些机器人就称为爬虫。本质上是一种可以自动访问 Web 资源的应用程序。

爬虫是怎么来的呢?绝大多数都是由搜索引擎放出来的,它能够抓取网页并存入庞大的数据库中,再建立关键字索引,这样我们才可以在搜索引擎中搜索到互联网的各个页面。

爬虫也有一些不好的地方,比如导致敏感信息泄露。所以,现在也出现了一种反爬虫技术,通过各个手段来限制爬虫。

Web Service

Web Service 和 Web Server的名字很像,但是确实完全不同的东西。

它是基于 Web(HTTP)的服务架构技术,既可以运行在内网,也可以在适当保护后运行在外网。

因为采用了 HTTP 协议传输数据,所以在 Web Service 架构里服务器和客户端可以采用不同的操作系统或编程语言开发。例如服务器端用 Linux+Java,客户端用 Windows+C#,具有跨平台跨语言的优点。

小结

  • 互联网上绝大部分资源都使用 HTTP 协议传输,浏览器是 HTTP 协议里的请求方,即 User Agent; 服务器是 HTTP 协议里的应答方,常用的有 Apache 和 Nginx;

  • CDN 位于浏览器和服务器之间,主要起到缓存加速的作用;

  • 爬虫是另一类 User Agent,是自动访问网络资源的程序;

  • Web Service 是一种服务架构技术,具有跨平台跨语言的特点。

HTTP 相关的协议

TCP/IP

TCP/IP 协议是目前网络世界“事实上”的标准通信协议,是一系列网络通信协议的统称,其中最核心的两个协议是TCP和IP。

它还有其他协议例如:UDP、ICMP、ARP 等等。他们共同组成一个复杂的协议栈。

这个协议有四层

  1. 应用层
  2. 传输层(TCP 归属层)
  3. 网际层(IP 归属层)
  4. 链接层

IP 协议是Internet Protocol的缩写,它主要用来解决寻址和路由以及如何传送数据包的问题。

IP 系统用了 IP 地址这个概念来定位每一台计算机。对应电话系统,需要打电话必须要接入电话网,由通信公司分配一个号码,这个号码就相当于 IP 地址。

TCP 协议是Transmission Control Protocol的缩写,意思是“传输控制协议”,它位于 IP 协议之上,基于 IP 协议提供可靠的、字节流形式的通信,是 HTTP 协议得以实现的基础。

可靠指的是保证数据不流失,字节流则保证数据完整。

TCP/IP是可靠的、完整的协议

DNS

TCP/IP使用 IP 地址来标识计算机,由于计算机本身处理的就是数据,这样的地址对应计算机相当方便,但是却不利于人类记忆。

DNS 域名系统就可以解决这个问题。它用了一组有意义的名字来替代 ip 地址,并建立映射关系。比如:访问 www.baidu.com就是访问百度的 IP 地址14.215.177.38(不止这一个)

在 DNS 中,域名又称主机名,它被设计成一个非常有层次的结构。其中,最右边的比如.com,.cn等都是顶级域名

顶级域名下面是二级域名,它位于顶级域名的左侧。例如,在zh.wikipedia.org中,wikipedia是二级域名。w3.org中,w3也是二级域名。

二级域名下面是三级域名,它位于二级域名的左侧。例如,在zh.wikipedia.org中,zh是三级域名。

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

URI 和 URL

DNS 和 IP 地址标记了互联网上的主机,但是主机上有大量文本、网页等,需要找哪一个呢?

这就出现了 URI,全称统一资源定位符标识符。使用它可以唯一地标记互联网上的资源。

URI 的另一个表现形式是 URL(统一资源定位符),就是我们俗称的网址。它是 URI 的子集,但是两者相差不大。

URI是怎样的呢?

http://nginx.org/en/download.html

上面的URI 由三个基本部分组成:

1.协议名:http

2.主机名:主机标记位置,可以是域名或 ip 地址。这里是nginx.org

3.路径,也就是资源在主机上的位置,用/分隔成多个目录。这里是/en/download.html

HTTPS

这是 HTTP 的安全版本,由于 HTTP 协议不够安全,所以在 TCP/IP协议之上,又架设一层 SSL/TLS 的协议,而 HTTPS 的意思就是运行在在 SSL/TLS 协议上的 HTTP。

全称为HTTP over SSL/TLS

SSL/TLS是负责加密通信的安全协议,也是可靠的传输协议

SSL/TLS一开始叫 SSLSecure Socket Layer),后来改名叫 TLS(Transport Layer Security),由于历史原因很多人称之为 SSL/TLS。

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

如果有网址的协议名是 https,则代表其启用了 HTTPS 协议。

代理

代理(proxy)是 HTTP 协议中请求方和应答方中间的环境,作为中转站,可以转发请求,也可以转发响应。

以下列举代理的种类

  1. 匿名代理:完全“隐匿”了被代理的机器,外界看到的只是代理服务器;

  2. 透明代理:顾名思义,它在传输过程中是“透明开放”的,外界既知道代理,也知道客户端;

  3. 正向代理:靠近客户端,代表客户端向服务器发送请求;

  4. 反向代理:靠近服务器端,代表服务器响应客户端的请求;

CDN 实际上也是代理的一种,它替代服务器响应客户端的请求,通常扮演透明代理和反向代理的角色。

代理作为传输的中间层,可以做很多事情,例如:

  1. 负载均衡:把访问请求均匀分散到多台机器,实现访问集群化;

  2. 内容缓存:暂存上下行的数据,减轻后端的压力;

  3. 安全防护:隐匿 IP, 使用 WAF 等工具抵御网络攻击,保护被代理的机器;

  4. 数据处理:提供压缩、加密等额外的功能。

关于HTTP 代理还有一个特殊的代理协议(proxy protocol)。

小结

TCP/IP是世界上最常用的协议,具有可靠、完整的特点。HTTP 运行在 TCP/IP 之上。

DNS 域名是 IP 地址的等价替代,需要用域名解析实现到 IP 地址的映射

URI 由协议、主机名、路径构成。

HTTPS 由 HTTP+SSL/TLS+TCP/IP 组成。

代理是 HTTP 传输的中转站,可以实现缓存加速、负载均衡等功能。