03 HTTP相关的概念 -- 应用 + 协议

Posted by CodingWithAlice on April 19, 2021

03 HTTP相关的概念 – 应用 + 协议

下图是和HTTP相关的各个知识点,左侧是各个协议,右侧是相关应用 image-20210419154703570

各种应用

先看右边部分,都是与 HTTP 相关的各种应用,接下来着重介绍互联网、浏览器、Web 服务器等常见且重要的概念

image-20210419154750754

  • 总结:

    1、互联网上绝大部分资源都使用 HTTP 协议传输

    2、浏览器是 HTTP 协议里的请求方,即 User Agent 3、服务器是 HTTP 协议里的应答方,常用的有 ApacheNginx 4、CDN 位于浏览器和服务器之间,主要起到 缓存加速 的作用 5、爬虫是另一类 User Agent,是自动访问网络资源的程序

网络世界

实际的互联网是 由许许多多个规模略小的网络连接而成的,这些“小网络”可能是只有几百台电脑的局域网,可能是有几万、几十万台电脑的广域网,可能是用电缆、光纤构成的固定网络,也可能是用基站、热点构成的移动网络……

浏览器 – 客户端

image-20210419154840648

浏览器 – Web Browser,检索、查看互联网上网页资源的应用程序。

  • 本质上是一个 HTTP 协议中的 请求方,使用 HTTP 协议获取网络上的各种资源,当然也集成了很多额外的功能

Web 服务器

服务器 – Web Server,是 HTTP 协议里 响应请求的主体,通常也把控着绝大多数的网络资源,在网络世界里处于强势地位

大体分为几种类型:

1、Apache 是老牌的服务器,到今天已经快 25 年了,功能相当完善,相关的资料很多,学习门槛低,是许多创业者建站的入门产品

2、NginxWeb 服务器里的后起之秀,特点是高性能、高稳定,且易于扩展。自 2004 年推出后就不断蚕食 Apache 的市场份额,在高流量的网站里更是不二之选。

3、此外,还有 Windows 上的 IIS、Java 的 Jetty/Tomcat 等,因为性能不是很高,所以在互联网上应用得较少。

CDN

CDN – Content Delivery Network,即 内容分发网络,应用了 HTTP 协议里的 缓存和代理技术,代替源站响应客户端的请求

  • CDN 也是现在互联网中的一项重要基础设施,除了基本的网络加速外,还提供负载均衡、安全防护、边缘计算、跨运营商网络等功能,能够成倍地“放大”源站服务器的服务能力

爬虫

爬虫 – Crawler,是一种可以自动访问 Web 资源的应用程序

  • 来源 绝大多数是由各大搜索引擎“放”出来的,抓取网页存入庞大的数据库,再建立关键字索引,这样我们才能够在搜索引擎中快速地搜索到互联网角落里的页面
  • 反爬虫 通过各种手段来限制爬虫。其中一项就是“君子协定” - robots.txt,约定哪些该爬,哪些不该爬

HTML/WebService/WAF

  • HTMLHTTP 协议传输的主要内容之一,它描述了超文本页面,用各种“标签”定义文字、图片等资源和排版布局,最终由浏览器渲染出可视化页面。
  • Web Service 是一种由 W3C 定义的应用服务开发规范,是一个基于 Web(HTTP) 的服务架构技术,既可以运行在内网,也可以在适当保护后运行在外网
  • WAF(网络应用防火墙),专门检测 HTTP 流量,是防护 Web 应用的安全技术,WAF 通常位于 Web 服务器之前,可以阻止如 SQL 注入、跨站脚本等攻击。

各种协议

左边部分的详细图如下: image-20210419155002676

  • 总结:

    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 协议实际上是一系列网络通信协议的统称,其中最核心的两个协议是 TCPIP,其他的还有 UDPICMPARP 等等,共同构成了一个复杂但有层次的协议栈。

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、数据处理:提供压缩、加密等额外的功能