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 等等。他们共同组成一个复杂的协议栈。
这个协议有四层
- 应用层
- 传输层(TCP 归属层)
- 网际层(IP 归属层)
- 链接层
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
一开始叫 SSL
(Secure Socket Layer
),后来改名叫 TLS
(Transport Layer Security
),由于历史原因很多人称之为 SSL/TLS。
它使用了许多密码学的研究成果,综合了对称加密、非对称加密、摘要算法、数字签名、数字证书等技术,能够在不安全的环境中为通信的双方创建出一个秘密的,安全的传输通道。
如果有网址的协议名是 https,则代表其启用了 HTTPS 协议。
代理
代理(proxy
)是 HTTP 协议中请求方和应答方中间的环境,作为中转站,可以转发请求,也可以转发响应。
以下列举代理的种类
-
匿名代理:完全“隐匿”了被代理的机器,外界看到的只是代理服务器;
-
透明代理:顾名思义,它在传输过程中是“透明开放”的,外界既知道代理,也知道客户端;
-
正向代理:靠近客户端,代表客户端向服务器发送请求;
-
反向代理:靠近服务器端,代表服务器响应客户端的请求;
CDN 实际上也是代理的一种,它替代服务器响应客户端的请求,通常扮演透明代理和反向代理的角色。
代理作为传输的中间层,可以做很多事情,例如:
-
负载均衡:把访问请求均匀分散到多台机器,实现访问集群化;
-
内容缓存:暂存上下行的数据,减轻后端的压力;
-
安全防护:隐匿 IP, 使用 WAF 等工具抵御网络攻击,保护被代理的机器;
-
数据处理:提供压缩、加密等额外的功能。
关于HTTP 代理还有一个特殊的代理协议(proxy protocol)。
小结
TCP/IP是世界上最常用的协议,具有可靠、完整的特点。HTTP 运行在 TCP/IP 之上。
DNS 域名是 IP 地址的等价替代,需要用域名解析实现到 IP 地址的映射
URI 由协议、主机名、路径构成。
HTTPS 由 HTTP+SSL/TLS+TCP/IP 组成。
代理是 HTTP 传输的中转站,可以实现缓存加速、负载均衡等功能。