网络协议三

数据中心

一、DNS

现在网站的数目非常多,常用的网站就有二三十个,如果全部用 IP 地址进行访问,恐怕很难记住
在这里插入图片描述
根 DNS 服务器 :返回顶级域 DNS 服务器的 IP 地址

顶级域 DNS 服务器:返回权威 DNS 服务器的 IP 地址

权威 DNS 服务器 :返回相应主机的 IP 地址

1 电脑客户端会发出一个 DNS 请求,问 www.163.com 的 IP 是啥啊,并发给本地域名服务器 (本地 DNS)。那本地域名服务器 (本地 DNS) 是什么呢?如果是通过 DHCP 配置,本地 DNS 由你的网络服务商(ISP),如电信、移动等自动分配,它通常就在你网络服务商的某个机房。

2 本地 DNS 收到来自客户端的请求。你可以想象这台服务器上缓存了一张域名与之对应 IP 地址的大表格。如果能找到 www.163.com,它直接就返回 IP 地址。如果没有,本地 DNS 会去问它的根域名服务器:“老大,能告诉我 www.163.com 的 IP 地址吗?”根域名服务器是最高层次的,全球共有 13 套。它不直接用于域名解析,但能指明一条道路。

3 根 DNS 收到来自本地 DNS 的请求,发现后缀是 .com,说:“哦,www.163.com 啊,这个域名是由.com 区域管理,我给你它的顶级域名服务器的地址,你去问问它吧。”

4 本地 DNS 转向问顶级域名服务器:“老二,你能告诉我 www.163.com 的 IP 地址吗?”顶级域名服务器就是大名鼎鼎的比如 .com、.net、 .org 这些一级域名,它负责管理二级域名,比如 163.com,所以它能提供一条更清晰的方向。

5 顶级域名服务器说:“我给你负责 www.163.com 区域的权威 DNS 服务器的地址,你去问它应该能问到。”

6 本地 DNS 转向问权威 DNS 服务器:“您好,www.163.com 对应的 IP 是啥呀?”163.com 的权威 DNS 服务器,它是域名解析结果的原出处。为啥叫权威呢?就是我的域名我做主。

7 权限 DNS 服务器查询后将对应的 IP 地址 X.X.X.X 告诉本地 DNS。

8 本地 DNS 再将 IP 地址返回客户端,客户端和目标建立连接。

至此,我们完成了 DNS 的解析过程。现在总结一下,整个过程我画成了一个图。
在这里插入图片描述

负载均衡

一个应用要访问数据库,在这个应用里面应该配置这个数据库的 IP 地址,还是应该配置这个数据库的域名呢?显然应该配置域名,因为一旦这个数据库,因为某种原因,换到了另外一台机器上,而如果有多个应用都配置了这台数据库的话,一换 IP 地址,就需要将这些应用全部修改一遍。但是如果配置了域名,则只要在 DNS 服务器里,将域名映射为新的 IP 地址,这个工作就完成了,大大简化了运维。
另外一个坏了,还可以更换另一个

肯定希望北京的用户访问北京的数据中心,上海的用户访问上海的数据中心,这样,客户体验就会非常好,访问速度就会超快。这就是全局负载均衡的概念。

在域名和 IP 的映射过程中,给了应用基于域名做负载均衡的机会,可以是简单的负载均衡,也可以根据地址和运营商做全局的负载均衡。
DNS 的两项功能,第一是根据名称查到具体的地址,另外一个是可以针对多个地址做负载均衡,而且可以在多个地址中选择一个距离你近的地方访问。

二、HTTPDNS:网络世界的地址簿也会指错路

HTTPDNS是一种基于HTTP协议实现的域名解析服务。它主要用于解决传统DNS(域名系统)服务中存在的一些问题,如解析速度慢、解析不稳定、解析结果被劫持等。

解决的问题:

  1. 解析速度:HTTPDNS通过直接向HTTPDNS服务器发送HTTP请求来获取域名对应的IP地址,可以减少DNS查询的延迟,提高解析速度。
  2. 稳定性:HTTPDNS服务通常由大型云服务商提供,具有较高的稳定性和可靠性。
  3. 安全性:由于HTTPDNS使用HTTPS等加密协议,可以防止DNS劫持和污染,确保域名解析的安全性。
  4. 准确性:HTTPDNS可以提供更准确的地理位置解析,优化访问速度。

运转方式:

HTTPDNS的工作原理相对简单,可以概括为以下几个步骤:

  1. 域名请求:当客户端(如手机应用或网站)需要访问一个域名时,它会向HTTPDNS服务器发送一个HTTP请求。
  2. 解析域名:HTTPDNS服务器接收到请求后,会查找其内部数据库,将域名解析为IP地址。
  3. 返回结果:解析完成后,HTTPDNS服务器通过HTTP响应将IP地址返回给客户端。
  4. 缓存结果:客户端接收到IP地址后,通常会将其缓存起来,以便后续使用时可以直接从缓存中获取,减少对HTTPDNS服务器的请求。

举例说明:

假设你正在使用一个在线视频播放应用,当你点击一个视频链接时,应用需要解析视频服务器的域名以获取视频内容。如果没有使用HTTPDNS,应用可能会通过传统的DNS服务来解析域名,这个过程可能受到网络环境的影响,解析速度较慢,且存在被劫持的风险。

使用HTTPDNS后,应用会向HTTPDNS服务器发送一个HTTP请求,请求解析视频服务器的域名。HTTPDNS服务器快速响应,返回了视频服务器的真实IP地址。应用接收到IP地址后,就可以直接连接到视频服务器,开始播放视频。由于HTTPDNS的解析速度快,稳定性好,整个视频播放体验会得到显著提升。

https 和 http

HTTP(HyperText Transfer Protocol)和HTTPS(HyperText Transfer Protocol Secure)都是用于从网络传输超文本到本地浏览器的传输协议,但它们之间存在一些关键的区别:

  1. 安全性

    • HTTP:是超文本传输协议的非安全版本,它在传输数据时不会进行加密,这意味着数据在传输过程中可能会被截获或篡改。
    • HTTPS:在HTTP的基础上加入了SSL/TLS协议,提供了数据加密、完整性校验和身份验证。这使得传输的数据更安全,可以防止数据在传输过程中被窃听或篡改。
  2. 端口

    • HTTP:默认使用80端口进行通信。
    • HTTPS:默认使用443端口进行通信。
  3. URL 表示

    • HTTP:网址通常以http://开始。
    • HTTPS:网址以https://开始,这个额外的"s"代表"secure",即安全。
  4. 搜索引擎优化(SEO)

    • 使用HTTPS的网站可能会获得搜索引擎如Google的轻微偏好,因为它们提供了更安全的连接。
  5. 信任和认证

    • HTTPS需要安装SSL证书,这通常涉及到购买证书和配置服务器的过程。证书颁发机构(CA)会对网站进行身份验证,确保访问者连接的是他们想要访问的网站。
  6. 性能

    • 由于加密和解密过程需要消耗计算资源,HTTPS通常会比HTTP有稍微的性能开销,但随着现代硬件和优化算法的发展,这种差异已经变得非常小。
  7. 用户信任

    • 当用户访问一个使用HTTPS的网站时,浏览器会显示一个锁形图标,这可以增加用户对网站的信任度。
  8. 兼容性

    • 几乎所有的现代浏览器都支持HTTPS,并且鼓励网站使用HTTPS来保护用户数据。

简而言之,HTTPS是HTTP的安全版本,它通过加密技术保护数据传输的安全,是当前推荐的网站连接方式,特别是在处理敏感信息(如登录凭据、支付信息等)时。

三、CDN:你去小卖部取过快递么?

CDN 的分发系统的架构

由于边缘节点数目比较多,但是每个集群规模比较小,不可能缓存下来所有东西,因而可能无法命中,这样就会在边缘节点之上。有区域节点,规模就要更大,缓存的数据会更多,命中的概率也就更大。在区域节点之上是中心节点,规模更大,缓存数据更多。如果还不命中,就只好回源网站访问了。
在这里插入图片描述

很多 CDN 还提供预处理服务,也即文件在分发之前,经过一定的处理。例如将视频转换为不同的码流,以适应不同的网络带宽的用户需求;再如对视频进行分片,降低存储压力,也使得客户端可以选择使用不同的码率加载不同的分片。这就是我们常见的,“我要看超清、标清、流畅等”。

CDN 和电商系统的分布式仓储系统一样,分为中心节点、区域节点、边缘节点,而数据缓存在离用户最近的位置。

CDN 最擅长的是缓存静态数据,除此之外还可以缓存流媒体数据,这时候要注意使用防盗链。它也支持动态数据的缓存,一种是边缘计算的生鲜超市模式,另一种是链路优化的冷链运输模式。

冷链运输模式就像优化的物流网络,确保数据从源站到用户的传输路径是最优的。通过CDN节点的分布和路径优化,数据传输变得更加高效和可靠。这样,即使数据不是在边缘节点生成的,也能通过路径优化和CDN的分布网络,实现快速、可靠的数据下发。

DNS和 CDN

1 用户在浏览器中输入一个域名。
2 本地DNS解析这个域名,可能会得到CDN网络中某个边缘节点的IP地址。
3 用户的请求被发送到这个边缘节点。
4 CDN根据用户的地理位置、网络条件和服务器负载情况,将请求定向到最佳的服务器。
5 用户从最近的服务器获取内容,享受快速的访问体验。

四、数据中心

数据中心的入口和出口也是路由器,由于在数据中心的边界,就像在一个国家的边境,称为边界路由器(Border Router)。为了高可用,边界路由器会有多个。
一般家里只会连接一个运营商的网络,而为了高可用, 为了当一个运营商出问题的时候,还可以通过另外一个运营商来提供服务,所以数据中心的边界路由器会连接多个运营商网络。

好的,让我们一步一步来解释这段话中的概念,以便你更容易理解。

什么是AS(自治系统)?

AS(Autonomous System,自治系统) 是指在一个网络内,由一个或多个网络运营商控制和管理的一个独立的网络。每个AS都有一个唯一的AS号码(ASN),用于标识它们。

  • 例子:想象有一个大公司,这个公司在全国有多个分部,每个分部都有自己的小网络。这些分部网络在内部是自己管理的,但对外它们被视为一个整体。这个整体就是一个AS。

什么是BGP协议?

BGP(Border Gateway Protocol,边界网关协议) 是一种用于在不同AS之间交换路由信息的协议。BGP帮助网络找到最合适的路径,把数据从一个AS传送到另一个AS。

  • 例子:如果你在纽约,而你要寄包裹到洛杉矶,BGP就像是快递公司用来选择最佳路线的系统,确保你的包裹能够经过最有效率的路线到达目的地。

数据中心的AS和BGP

数据中心是一个大型的网络设施,里面有大量的服务器和网络设备。这个数据中心通常被视为一个独立的AS,因为它内部有自己独立的网络管理和路由系统。

  • 访问外部网站:当数据中心内部的机器需要访问外部网站(例如,访问Google),它需要知道如何把数据发送出去。
  • 对外提供服务:数据中心里面有些机器对外提供服务(例如,运行一个网站),这些服务需要让外部的用户能找到并访问到数据中心的服务器。

为了实现内外互通,数据中心会使用BGP协议来与其他AS交换路由信息。这意味着:

  1. 数据中心内的路由信息:数据中心内部的路由器会使用内部协议来管理和分发路由信息。
  2. 通过BGP获取路由信息:当数据中心需要与外部世界通信时,它使用BGP协议来获取和交换路由信息。

多线BGP的概念

多线BGP 是指一个数据中心通过多个互联网服务提供商(ISP)连接到外部网络,每个ISP可能属于不同的AS。这样可以确保更高的可靠性和速度,因为如果一个ISP的线路出现问题,数据中心还可以通过其他ISP的线路进行通信。

  • 例子:想象你家有多条不同的宽带连接(例如,电信和联通),这样即使一条线路断了,你还可以通过另一条线路上网。多线BGP就是这个概念在大型数据中心中的应用。

总结

  1. AS(自治系统) 是一个独立的网络系统,拥有自己的管理和路由规则。
  2. BGP(边界网关协议) 是一种用来在不同AS之间交换路由信息的协议。
  3. 数据中心作为AS:数据中心内部作为一个AS管理自己的网络,但通过BGP协议与外部世界通信。
  4. 多线BGP:数据中心通过多个ISP连接到外部网络,以提高可靠性和网络性能。

希望这些解释能帮你更好地理解AS、BGP协议以及它们在数据中心中的应用。

如果数据中心非常简单,没几台机器,那就像家里或者宿舍一样,所有的服务器都直接连到路由器上就可以了。但是数据中心里面往往有非常多的机器,当塞满一机架的时候,需要有交换机将这些服务器连接起来,可以互相通信。
这些交换机往往是放在机架顶端的,所以经常称为TOR(Top Of Rack)交换机。这一层的交换机常常称为接入层(Access Layer)。注意这个接入层和原来讲过的应用的接入层不是一个概念。
当一个机架放不下的时候,就需要多个机架,还需要有交换机将多个机架连接在一起。这些交换机对性能的要求更高,带宽也更大。这些交换机称为汇聚层交换机(Aggregation Layer)。
在这里插入图片描述

数据中心里面的每一个连接都是需要考虑高可用的。这里首先要考虑的是,如果一台机器只有一个网卡,上面连着一个网线,接入到 TOR 交换机上。如果网卡坏了,或者不小心网线掉了,机器就上不去了。所以,需要至少两个网卡、两个网线插到 TOR 交换机上,但是两个网卡要工作得像一张网卡一样,这就是常说的网卡绑定(bond)。
这就需要服务器和交换机都支持一种协议LACP(Link Aggregation Control Protocol)。它们互相通信,将多个网卡聚合称为一个网卡,多个网线聚合成一个网线,在网线之间可以进行负载均衡,也可以为了高可用作准备。

LACP

当你通过LACP聚合多个网卡或网线时,单个数据流(例如,一个客户端传输一个大文件)通常只能使用其中一条物理链路的带宽,而不能同时使用所有聚合链路的总带宽。这是因为LACP的负载均衡算法是基于数据流的分配,而不是单个数据流的带宽叠加。

更详细的解释

什么是单个数据流?

单个数据流是指一对一的通信连接,例如一个客户端与服务器之间的文件传输。这个流可能由TCP连接组成,并且有特定的源IP、目的IP、源端口和目的端口。

LACP的负载均衡

LACP的负载均衡算法通常基于某些特征来分配数据流,例如:

  • 源IP地址
  • 目的IP地址
  • 源MAC地址
  • 目的MAC地址
  • 源端口号
  • 目的端口号

这些特征会被用来决定某个数据流通过哪条物理链路传输。一旦一个数据流被分配到某条链路,它就会一直使用这条链路直到连接结束。这种机制有助于保持数据包的顺序和连接的稳定性。

实际带宽利用
  1. 单个数据流的局限

    • 如果只有一个客户端在传输大文件(一个数据流),该流会被分配到其中一条物理链路。例如,如果有四条1Gbps的链路,这个数据流可能只会使用其中的一条1Gbps链路。
  2. 总带宽的利用

    • 因此,即使你有4Gbps的总带宽(四条1Gbps链路),单个数据流只能使用1Gbps。这个数据流无法利用所有四条链路的带宽。
  3. 多数据流的优势

    • 如果有多个数据流(例如多个客户端同时进行文件传输),这些数据流会被分配到不同的物理链路上,总带宽利用率会更高,接近4Gbps。

示例

假设你有四条1Gbps的链路通过LACP聚合在一起:

  • 单个数据流

    • 客户端A在下载一个大文件,这个数据流被分配到链路1。因此,这个下载过程只能使用1Gbps的带宽,即使总带宽是4Gbps。
  • 多个数据流

    • 客户端A、B、C、D分别在下载不同的大文件。客户端A的流被分配到链路1,客户端B的流被分配到链路2,依此类推。这时,总带宽利用率可以接近4Gbps,因为多个数据流被均匀分配到不同的物理链路上。

总结

单个数据流受限于LACP的负载均衡机制,通常只能使用一条物理链路的带宽。因此,在有多个并发数据流时,LACP能够更好地发挥聚合带宽的优势,提高整体网络性能和带宽利用率。

交换机

在这里插入图片描述

五、

六、

七、

八、

九、

十、

相关推荐

  1. 网络协议要素是什么

    2024-06-06 13:52:04       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-06 13:52:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-06 13:52:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-06 13:52:04       87 阅读
  4. Python语言-面向对象

    2024-06-06 13:52:04       96 阅读

热门阅读

  1. 计算机网络——网络安全

    2024-06-06 13:52:04       35 阅读
  2. 【TB作品】msp430f5529单片机,dht22,烟雾传感器

    2024-06-06 13:52:04       27 阅读
  3. Selenium自动化测试入门:设置等待时间

    2024-06-06 13:52:04       28 阅读
  4. 【车载开发系列】自动驾驶技术--HUD技术

    2024-06-06 13:52:04       29 阅读
  5. idea2024年最新激活码,即拿即用

    2024-06-06 13:52:04       36 阅读
  6. SQL入门详细教程

    2024-06-06 13:52:04       34 阅读
  7. 学习VUE3——组件(一)

    2024-06-06 13:52:04       27 阅读