网络分层 DNS CDN简单概念梳理

embedded/2025/3/5 2:38:57/

目录

    • 网络分层
    • 常见的网络负载均衡策略
    • DNS
      • DNS查询例子
      • /etc/hosts与域名解析
      • 域名解析流程
    • CDN(Content Delivery Network, 内容分发网络)
      • CDN内容分发网络的基本工作机制
        • 阿里云cdn官网给的例子
      • CDN中的负载均衡技术
      • 使用 CDN 有什么好处?

网络分层

常见的4层,5层,7层的分法

在这里插入图片描述

各层功能和例子
在这里插入图片描述

OSI 7层网络模型

  1. 物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。
  2. 数据链路层:定义了如何让格式化数据以帧为单位进行传输,以及如何让控制对物理介质的访问。该层对连接相邻的通路进行差错控制、数据成帧、同步等控制。检测差错一般采用循环冗余校验(CRC),纠正差错采用计时器恢复和自动请求重发(ARQ)等技术。
  3. 网络层:网络层规定了网络连接的建立、维持和拆除的协议。它的主要功能是利用数据链路层所提供的相邻节点间的无差错数据传输功能,通过路由选择和中继功能,实现两个系统之间的连接。在计算机网络系统中,网络层还具有多路复用的功能。
  4. 传输层:定义了一些传输数据的协议和端口号(WWW端口80等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据);UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组。常常把这一层数据叫做段。
  5. 会话层:通过传输层(端口号:传输端口接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)。
  6. 表示层:可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。例如,PC程序与另一台计算机进行通信,其中一台计算机使用扩展二一十进制交换码(EBCDIC),而另一台则使用美国信息交换标准码(ASCII)来表示相同的字符。如有必要,表示层会通过使用一种通格式来实现多种数据格式之间的转换。
  7. 应用层:应用层是OSI参考模型的最高层。其功能是实现应用进程(如用户程序、终端操作员等)之间的信息交换。同时,还具有一系列业务处理所需要的服务功能。

常见的网络负载均衡策略

  • 随机均衡(Random):把来自网络的请求随机分配给内部中的多个服务器。

  • 轮循均衡(Round Robin):每一次来自网络的请求轮流分配给内部中的服务器,从1至N然后重新开始。此种均衡算法适合于服务器组中的所有服务器都有相同的软硬件配置并且平均服务请求相对均衡的情况。

  • 权重轮循均衡(Weighted Round Robin):根据服务器的不同处理能力,给每个服务器分配不同的权值,使其能够接受相应权值数的服务请求。例如:服务器A的权值被设计成1,B的权值是 3,C的权值是6,则服务器A、B、C将分别接受到10%、30%、60%的服务请求。此种均衡算法能确保高性能的服务器得到更多的使用率,避免低性能的服务器负载过重。

  • 权重随机均衡(Weighted Random):此种均衡算法类似于权重轮循算法,不过在处理请求分担时是个随机选择的过程。

  • 响应速度均衡(Response Time):负载均衡设备对内部各服务器发出一个探测请求(例如Ping),然后根据内部中各服务器对探测请求的最快响应时间来决定哪一台服务器来响应客户端的服务请求。此种均衡算法能较好的反映服务器的当前运行状态,但这最快响应时间仅仅指的是负载均衡设备与服务器间的最快响应时间,而不是客户端与服务器间的最快响应时间。

  • 最少连接数均衡(Least Connection):客户端的每一次请求服务在服务器停留的时间可能会有较大的差异,随着工作时间加长,如果采用简单的轮循或随机均衡算法,每一台服务器上的连接进程可能会产生极大的不同,并没有达到真正的负载均衡。最少连接数均衡算法对内部中需负载的每一台服务器都有一个数据记录,记录当前该服务器正在处理的连接数量,当有新的服务连接请求时,将把当前请求分配给连接数最少的服务器,使均衡更加符合实际情况,负载更加均衡。此种均衡算法适合长时处理的请求服务,如FTP。

  • 处理能力均衡:此种均衡算法将把服务请求分配给内部中处理负荷(根据服务器CPU型号、CPU数量、内存大小及当前连接数等换算而成)最轻的服务器,由于考虑到了内部服务器的处理能力及当前网络运行状况,所以此种均衡算法相对来说更加精确,尤其适合运用到第七层(应用层)负载均衡的情况下。

  • DNS响应均衡(Flash DNS):在Internet上,无论是HTTP、FTP或是其它的服务请求,客户端一般都是通过域名解析来找到服务器确切的IP地址的。在此均衡算法下,分处在不同地理位置的负载均衡设备收到同一个客户端的域名解析请求,并在同一时间内把此域名解析成各自相对应服务器的IP地址(即与此负载均衡设备在同一位地理位置的服务器的IP地址)并返回给客户端,则客户端将以最先收到的域名解析IP地址来继续请求服务,而忽略其它的IP地址响应。这种均衡策略适合应用在全局负载均衡的情况下,对本地负载均衡是没有意义的。

DNS

网域名称系统(英语:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。 DNS使用TCP和UDP端口53 。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

域名认识,例如域名 example.com.

  • “.” 是根域

  • “.com”是顶级域;

  • “example.com”是主域名,主要指企业名;

  • “example.example.com”是子域名;

  • “www.example.example.com”是子域名的子域。

DNS查询例子

DNS查询有两种方式:递归和迭代。 DNS客户端设置使用的DNS服务器一般都是递归服务器,它负责全权处理客户端的DNS查询请求,直到返回最终结果。而DNS服务器之间一般采用迭代查询方式。

以查询zh.wikipedia.org 为例:

客户端发送查询报文"query zh.wikipedia.org"至DNS服务器,DNS服务器首先检查自身缓存,如果存在记录则直接返回结果。
如果记录老化或不存在,则:

  1. DNS服务器向根域名服务器发送查询报文"query zh.wikipedia.org",根域名服务器返回顶级域.org 的顶级域名服务器地址。
  2. DNS服务器向.org 域的顶级域名服务器发送查询报文"query zh.wikipedia.org",得到二级域.wikipedia.org 的权威域名服务器地址。
  3. DNS服务器向.wikipedia.org 域的权威域名服务器发送查询报文"query zh.wikipedia.org",得到主机zh 的A记录,存入自身缓存并返回给客户端。

/etc/hosts与域名解析

/etc/hosts 是一个计算机文件,用于在Unix和类Unix操作系统(比如Linux、macOS等)中映射主机名和IP地址。它允许将特定的主机名映射到指定的IP地址,从而绕过DNS解析过程,实现本地对特定主机名的自定义解析。

通常情况下,/etc/hosts 文件包含了一些基本的条目示例,如:

127.0.0.1 localhost
::1 localhost# Example entries:
192.168.1.1 myserver

在这个例子中:

  • 127.0.0.1::1 是本地回环地址,通常用于指向本地计算机。
  • localhost 是标准的本地主机名。
  • 192.168.1.1 是一个示例IP地址,它映射到主机名 myserver

通过编辑这个文件,你可以添加自定义的主机名和IP地址映射,以便在本地系统中进行解析,而无需依赖公共的DNS服务器。

域名解析流程

在这里插入图片描述

CDN(Content Delivery Network, 内容分发网络)

内容分发网络 (CDN) 是一个分布在不同地理位置的服务器群,用于缓存靠近最终用户的内容。CDN 可以快速传输加载互联网内容所需的资产,包括 HTML 网页、JavaScript 文件、样式表、图像和视频。

CDN内容分发网络的基本工作机制

域名开通CDN之后,要先在域名的CDN解析设置后台添加一条CDN专用的解析记录;

  • 浏览器输入网址当发起请求时,这条解析记录会让域名被解析之后会去指向一个专门处理DNS请求的服务器即CDN网络专用DNS服务器;

  • CDN网络专用的服务器会给浏览器一个ip地址去找负载均衡系统服务器;

  • 负载均衡系统服务器则根据浏览器的网络地址去匹配出一条比较适合的CDN设备ip地址;

  • 浏览器再根据这个ip地址去访问CDN服务器(好比叫A服务器)拿网站资源;

    • A服务器有缓存的话:把资源响应给浏览器,结束。
    • A服务器没有缓存:继续像上层服务器(B服务器)找,要是B服务器也没有,就继续往上上层CDN服务器(C服务器)找,以此类推,直到找到为止;要是所有的CDN服务器都没有找到,就会找源站服务器。(注意:当拿到资源后,会把刚刚查找不到资源的CDN服务器A、B、C…都做缓存,最后A服务器返回资源给浏览器。下次该浏览器再次发起请求,或者其他浏览器也需要该资源的请求,就会拿到缓存的CDN服务上的资源直接返回。)
阿里云cdn官网给的例子

在这里插入图片描述

CDN中的负载均衡技术

在CDN中,负载均衡技术尤为重要,因为它需要确保所有节点高效、公平地处理流量,避免单点过载或资源浪费。CDN中的负载均衡通常分为全局负载均衡本地负载均衡两个层次。全局负载均衡负责将用户请求分发到最合适的CDN节点(边缘节点),而本地负载均衡则在节点内部将请求分发到具体的服务器或缓存实例上。常见的负载均衡算法包括轮询加权轮询最少连接源地址哈希一致性哈希等‌

使用 CDN 有什么好处?

在这里插入图片描述

尽管使用 CDN 的好处取决于互联网资产的大小和需求,但对于大多数用户而言,主要好处可以分为以下四个不同的部分:

  • 缩短网站加载时间 – 通过将内容分发到访问者附近的 CDN 服务器(以及其他优化措施),访问者体验到更快的页面加载时间。由于访问者更倾向于离开加载缓慢的网站,CDN 可以降低跳出率并增加人们在该网站上停留的时间。换句话说,网站速度越快,用户停留的时间越长。
  • 减少带宽成本 – 网站托管的带宽消耗成本是网站的主要费用。通过缓存和其他优化,CDN 能够减少源服务器必须提供的数据量,从而降低网站所有者的托管成本。
  • 增加内容可用性和冗余 – 大流量或硬件故障可能会扰乱正常的网站功能。由于 CDN 具有分布式特性,因此与许多源服务器相比,CDN 可以处理更多流量并更好地承受硬件故障。
  • 改善网站安全性 – CDN 可以通过提供 DDoS 缓解、安全证书的改进以及其他优化措施来提高安全性。

http://www.ppmy.cn/embedded/170062.html

相关文章

VUE3+Vite使用TailwindCSS【若依前后端分离框架】

参考:https://tailwind.nodejs.cn/docs/guides/vite#vue 和 https://blog.csdn.net/hjl_and_djj/article/details/144694485依次运行命令: cnpm install -D tailwindcss3.4.17 postcss autoprefixernpx tailwindcss init -p修改配置文件tailwind.config.…

用大白话解释搜索引擎Elasticsearch是什么,有什么用,怎么用

Elasticsearch是什么? Elasticsearch(简称ES)就像一个“超级智能的图书馆管理系统”,专门帮你从海量数据中快速找到想要的信息。它底层基于倒排索引技术(类似书籍的目录页),能秒级搜索和分析万…

深度学习-140-RAG技术之Agentic Chunking分块技术的实现细节和完备实现

文章目录 1 类AgenticChunker1.1 add_propositions添加命题列表1.2 add_proposition添加单个命题1.3 add_proposition_to_chunk命题添加到块中1.4 _update_chunk_summary更新块摘要1.5 _update_chunk_title更新块主题1.6 _get_new_chunk_summary获取新块摘要1.7 _get_new_chunk…

P8772 [蓝桥杯 2022 省 A] 求和

P8772 [蓝桥杯 2022 省 A] 求和 - 洛谷 题目描述 给定 n 个整数 a1​,a2​,…,an​,求它们两两相乘再相加的和,即 Sa1​⋅a2​a1​⋅a3​⋯a1​⋅an​a2​⋅a3​⋯an−2​⋅an−1​an−2​⋅an​an−1​⋅an​ 输入格式 输入的第一行包含一个整数 n…

Spark主备切换了解么

如果是在 spark standalone集群模式下,也就是使用spark自带的集群管理模式,那么spark的master阶段管理worker的资源分配,为防止master主节点宕机导致,可以对master节点进行高可用设置。 也就是备份几个stand master节点。实现主要…

DeepSeek 提示词:常见指令类型

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…

第十五届蓝桥杯:dfs之数字接龙

#include <iostream> using namespace std; const int N 300; int a[N][N];//存值 int b[N][N];//判断某个点是否出现过 int n,k; string path; int dx[] {-1,-1,0,1,1,1,0,-1}; int dy[] {0,1,1,1,0,-1,-1,-1}; bool dfs(int x,int y,int cur,int pos) {if(pos n*n…

iOS接入Flutter项目

首先要把iOS项目和flutter项目统一目录下&#xff0c;而且需要注意的是flutter是module。 第一步&#xff1a;Flutter相关内容的创建 module创建命令&#xff1a; flutter create --templatemodule my_flutter&#xff0c;之后再执行 flutter pub get flutter build ios …