03 HTTP相关的概念 – 应用 + 协议
下图是和HTTP相关的各个知识点,左侧是各个协议,右侧是相关应用
各种应用
先看右边部分,都是与 HTTP 相关的各种应用,接下来着重介绍互联网、浏览器、Web 服务器等常见且重要的概念
-
总结:
1、互联网上绝大部分资源都使用
HTTP
协议传输2、浏览器是
HTTP
协议里的请求方,即User Agent
3、服务器是HTTP
协议里的应答方,常用的有Apache
和Nginx
4、CDN
位于浏览器和服务器之间,主要起到 缓存加速 的作用 5、爬虫是另一类User Agent
,是自动访问网络资源的程序
网络世界
实际的互联网是 由许许多多个规模略小的网络连接而成的,这些“小网络”可能是只有几百台电脑的局域网,可能是有几万、几十万台电脑的广域网,可能是用电缆、光纤构成的固定网络,也可能是用基站、热点构成的移动网络……
浏览器 – 客户端
浏览器 – Web Browser
,检索、查看互联网上网页资源的应用程序。
- 本质上是一个
HTTP
协议中的 请求方,使用HTTP
协议获取网络上的各种资源,当然也集成了很多额外的功能
Web 服务器
服务器 – Web Server
,是 HTTP
协议里 响应请求的主体,通常也把控着绝大多数的网络资源,在网络世界里处于强势地位
大体分为几种类型:
1、Apache
是老牌的服务器,到今天已经快 25 年了,功能相当完善,相关的资料很多,学习门槛低,是许多创业者建站的入门产品
2、Nginx
是 Web
服务器里的后起之秀,特点是高性能、高稳定,且易于扩展。自 2004 年推出后就不断蚕食 Apache
的市场份额,在高流量的网站里更是不二之选。
3、此外,还有 Windows
上的 IIS
、Java 的 Jetty/Tomcat
等,因为性能不是很高,所以在互联网上应用得较少。
CDN
CDN – Content Delivery Network
,即 内容分发网络,应用了 HTTP
协议里的 缓存和代理技术,代替源站响应客户端的请求
- CDN 也是现在互联网中的一项重要基础设施,除了基本的网络加速外,还提供负载均衡、安全防护、边缘计算、跨运营商网络等功能,能够成倍地“放大”源站服务器的服务能力
爬虫
爬虫 – Crawler
,是一种可以自动访问 Web 资源的应用程序
- 来源 绝大多数是由各大搜索引擎“放”出来的,抓取网页存入庞大的数据库,再建立关键字索引,这样我们才能够在搜索引擎中快速地搜索到互联网角落里的页面
- 反爬虫
通过各种手段来限制爬虫。其中一项就是“君子协定” -
robots.txt
,约定哪些该爬,哪些不该爬
HTML/WebService/WAF
HTML
是HTTP
协议传输的主要内容之一,它描述了超文本页面,用各种“标签”定义文字、图片等资源和排版布局,最终由浏览器渲染出可视化页面。Web Service
是一种由 W3C 定义的应用服务开发规范,是一个基于Web(HTTP)
的服务架构技术,既可以运行在内网,也可以在适当保护后运行在外网WAF
(网络应用防火墙),专门检测HTTP
流量,是防护 Web 应用的安全技术,WAF
通常位于 Web 服务器之前,可以阻止如 SQL 注入、跨站脚本等攻击。
各种协议
左边部分的详细图如下:
-
总结:
1、
TCP/IP
是网络世界最常用的协议,HTTP
通常运行在TCP/IP
提供的可靠传输基础上2、
DNS
域名是IP
地址的等价替代,需要用 域名解析 实现到IP
地址的映射3、
URI
是用来标记互联网上资源的一个名字,由“协议名 + 主机名 + 路径”构成;4、
HTTPS
=HTTP
+SSL/TLS
+TCP/IP
,为HTTP
套了一个安全的外壳;5、代理是
HTTP
传输过程中的“中转站”,可以实现缓存加速、负载均衡等功能
TCP/IP
TCP/IP
协议实际上是一系列网络通信协议的统称,其中最核心的两个协议是 TCP
和 IP
,其他的还有 UDP
、ICMP
、ARP
等等,共同构成了一个复杂但有层次的协议栈。
TCP/IP
协议栈有四层,最上层是“应用层”,最下层是“链接层”,TCP 和 IP 则在中间:TCP 属于“传输层”,IP 属于“网际层”。
-
IP
主要目的是解决 寻址和路由 问题,以及如何在两点间传送数据包
-
TCP 协议
即传输控制协议,它位于
IP
协议之上,基于IP
协议提供可靠的、字节流形式的通信,是HTTP
协议得以实现的基础
DNS - 域名系统
“域名” 又称为 “主机名”(Host),域名用 “.” 分隔成多个单词,级别从左到右逐级升高,最右边的被称为 “顶级域名”,例如 .com/.cn/.edu
。
主要目的是把域名做一个转换,“映射” 到它的真实 IP,这就是所谓的 “域名解析”
URI/URL
URI – 统一资源标识符,使用它就能够唯一地标记互联网上资源 URL – 统一资源定位符,也就是我们俗称的“网址”,它实际上是 URI 的一个子集
URI 主要有三个基本的部分构成:http://nginx.org/en/download.html
-
1、协议名
访问该资源应当使用的协议,在这里是
http
-
2、主机名
互联网上主机的标记,可以是 域名或 IP 地址,在这里是
nginx.org
-
3、路径
资源在主机上的位置,使用
/
分隔多级目录,在这里是/en/download.html
HTTPS
HTTP
over SSL/TLS
— 也就是 运行在 SSL/TLS
协议上的 HTTP
HTTPS
=HTTP
+SSL/TLS
+TCP/IP
SSL/TLS
– 是一个负责加密通信的安全协议,建立在 TCP/IP
之上,所以也是个可靠的传输协议,可以被用作 HTTP 的下层
- SSL 使用了许多密码学最先进的研究成果,综合了对称加密、非对称加密、摘要算法、数字签名、数字证书等技术,能够在不安全的环境中为通信的双方创建出一个秘密的、安全的传输通道,为
HTTP
套上一副坚固的盔甲。
代理
常见代理种类:
1、匿名代理:完全“隐匿”了被代理的机器,外界看到的只是代理服务器
2、透明代理:顾名思义,它在传输过程中是“透明开放”的,外界既知道代理,也知道客户端
3、正向 代理:靠近 客户端,代表客户端向服务器发送请求
4、反向 代理:靠近 服务端,代表服务器响应客户端的请求
代理可以做很多事情,比如说:
1、负载均衡:把访问请求均匀分散到多台机器,实现访问集群化
2、内容缓存:暂存上下行的数据,减轻后端的压力
3、安全防护:隐匿 IP, 使用 WAF 等工具抵御网络攻击,保护被代理的机器
4、数据处理:提供压缩、加密等额外的功能