计算机网络之网络层概念整理(上)

Ping背后协议的原理

Ping是一个网络工具,用于测试网络连接质量和设备可达性。它背后的协议是互联网控制消息协议(Internet Control Message Protocol,简称ICMP)。Ping通过发送ICMP回显请求消息给目标主机,并等待接收ICMP回显回复消息来工作。这个过程帮助用户判断目标主机是否可达,并测量往返时间(RTT)以评估网络延迟。

ICMP的工作原理

  • 回显请求和回显回复:Ping程序发送一个ICMP回显请求消息给目标主机。当目标主机收到这个请求时,它会回送一个ICMP回显回复消息。这个请求-回复过程帮助确定目标主机是否在线并响应。

  • 测量时间:Ping计算发送ICMP请求和接收到回复之间的时间差,即往返时间(RTT)。这个时间被用来估算数据包到达目标主机所需的时间。

  • 诊断网络问题:通过重复发送一系列的ICMP请求,并接收回复,Ping可以帮助诊断网络连接的质量,包括网络延迟、包丢失率等。

ICMP消息类型

ICMP定义了多种消息类型,其中与Ping直接相关的是:

  • 类型0:回显回复(Echo Reply)
  • 类型8:回显请求(Echo Request)

当使用Ping命令时,设备发送类型为8的ICMP回显请求消息到目标地址。如果目标设备在线并能够响应,它会回送类型为0的ICMP回显回复消息。

使用Ping的目的

  • 网络可达性测试:确认一台主机在网络上是否可达。
  • 网络性能测量:测量数据包往返目标主机所需的时间(延迟)。
  • 路径跟踪:结合其他工具(如traceroute),可以显示数据包通过的路由路径。

以太网适配器VMnet

有过linux相关操作经验的读者肯定对这个术语不陌生,在虚拟机网络配置的时候,需要修改本机的VMnet,而且通常是VMnet8,那么它到底是什么呢?

VMnet 是 VMware 虚拟网络适配器的标识,它在 VMware 虚拟化软件中用来表示虚拟机的网络接口。这些虚拟网络适配器允许虚拟机与主机计算机的物理网络进行通信,以及不同虚拟机之间的相互通信。VMware 提供了几种不同类型的虚拟网络,通常用 VMnet 加数字来表示,例如 VMnet1、VMnet8 等。(说白了就是实现虚拟机通信的网络接口)

VMnet 类型

  • VMnet0:通常用于桥接模式直接连接到物理网络,使虚拟机表现得就像连接到该网络的物理机一样。
  • VMnet1:通常用于主机模式,它创建一个网络,只有主机(物理机器)和虚拟机之间可以通信,而不与外部网络通信
  • VMnet8:通常用于NAT(网络地址转换)模式,虚拟机通过主机机器上的NAT服务连接到外部网络。这种模式允许虚拟机共享主机的IP地址来访问外部网络

配置 VMnet8

在配置 Linux 虚拟化环境时选择VMnet8,意味着虚拟机将通过 NAT 模式连接到网络。在这种模式下:

  • 虚拟机使用一个私有IP(如 192.168.179.1),这个IP是在VMware虚拟网络内部分配的。
  • 虚拟机通过主机的物理网络接口访问外部网络,但使用的是主机的IP地址
  • 这种设置有助于简化网络配置,并在虚拟机和外部网络之间提供一定程度的隔离,因为虚拟机不会直接暴露在外部网络上

选择 VMnet8 或任何其他类型的 VMnet 取决于希望虚拟机如何连接到网络。例如,如果希望虚拟机像主机上的一个独立设备一样直接访问网络,则应选择桥接模式(VMnet0)。如果想要虚拟机在受限制的环境中运行,与主机共享网络连接但不直接暴露在外部网络上,则NAT模式(VMnet8)是一个好选择。


RIP距离向量算法

距离向量算法是一种用于计算网络中最佳路由路径的算法,Routing Information Protocol (RIP) 是该算法的一个著名实现。距离向量算法基于简单的原则:每个路由器维护一张路由表,记录到达网络中每个目的地的最短距离(通常是跳数)和下一跳路由器。该算法的核心在于通过路由器之间的定期信息交换,逐步更新和维护这些路由表

工作原理

  1. 初始状态:每个路由器开始时只知道直接连接的邻居路由器和到达这些邻居的成本(通常情况下,每个跳数的成本为1)。

  2. 路由信息分享:每个路由器定期(通常每30秒)向其所有邻居发送其路由表的副本。这个过程可以通过广播或多播来完成。

  3. 路由表更新:当一个路由器收到邻居的路由表时,它会使用一个简单的算法更新自己的路由表。对于收到的每个目的地,如果该路由器通过这个邻居到达目的地的总成本(即邻居到目的地的成本加上到该邻居的成本)比现有路由成本更低,或者目的地在路由器的路由表中尚未存在,它就会更新其路由表以反映这条更优或新的路径。

  4. 无穷计数和路由环路问题:RIP使用了一种称为“计数到无穷”的机制来处理路由环路问题,即将16作为不可达的标记。这是因为RIP规定最大跳数为15跳,超过这个跳数的路径被认为是不可达的,以此来限制环路问题的影响范围。

  5. 触发更新:除了定期更新,如果路由器的路由表发生变化(例如,发现了一条更短的路径),它会立即发送触发更新消息给邻居,这样可以更快地传播重要的路由变化信息。

RIP特性

  • 简单性:RIP的设计非常简单,易于实现和管理。
  • 跳数限制:RIP路由的最大跳数限制为15,这限制了RIP在大型网络中的使用。
  • 慢收敛:由于定期更新的机制,RIP可能需要较长的时间来适应网络结构的变化,特别是在网络故障情况下。
  • 跳数计数算法:RIP使用跳数作为度量标准,而不考虑带宽、延迟或其他可能影响路径选择的因素。

尽管RIP因其简单性和在小到中型网络中的有效性而受到欢迎,但由于其慢收敛性、跳数限制和缺乏对路径质量细粒度控制的能力,它在现代网络中被更高级的协议(如OSPF和IS-IS)所取代。


作者的想法

如果把当前某个路由器到某一网络的最小距离视为最优解,那么根据邻居路由器更新最小距离,不就是将一个子问题的最优解(暂时)解决了之后再更新到现有的最优解吗?这不是一种动态规划的思路吗?

解释如下:

动态规划是一种算法策略,它用于解决具有重叠子问题和最优子结构特性的复杂问题。它通过将问题分解为较小的子问题,并存储这些子问题的解(通常在一个表格中),来避免重复计算,从而实现高效率。动态规划确保了每个子问题只解决一次,并通过组合这些子问题的解来解决整个问题。

在距离向量算法中,每个路由器通过接收来自邻居的信息来更新自己到网络中各个目的地的最佳距离。这里的“最佳距离”可以看作是到达某个特定目的地的最优解。每次从邻居接收到新的信息时,路由器就会重新计算到各个目的地的最佳距离,如果找到了更短的路径,就会更新自己的路由表。这个过程反复进行,直到网络中的所有路由器都达到了一个稳定状态,即不再有更优的路径可以被发现。

这个过程确实与动态规划中解决重叠子问题和最优子结构的思想相似。在距离向量算法中,每个路由器的更新可以看作是利用已知的子问题的解(即通过邻居路由器已知的最短距离)来更新当前问题的解(即更新到达特定目的地的最短距离)。这种方式确实是动态地在更新和优化路由选择,以达到全局的最优路由状态。

然而,尽管距离向量算法的这种更新过程与动态规划有相似之处,但通常不直接将其归类为动态规划算法。动态规划特别强调的是对重叠子问题的解进行存储和复用,以避免重复计算,而距离向量算法的焦点更多在于通过分布式的、迭代的方式来达到路由信息的共享和更新。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/744944.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

window server2012 卸载iis后,远程连接黑屏

原因分析: 因为自己在卸载IIS的时候,不小心卸载了.net framework,系统没有了图形界面(由完整模式Full变为了核心模式core),需要重新恢复.net framework4.5。 解决方法分析: 需要将核心模式co…

cool-admin node.js 实现分页 数据获取 直接框架

1.需求 获取当前的分页数据 cool有自己的封装的一套东西 2.解决 controller 注意注意注意 在这之前 配置 数据表和service Provide() CoolController({api: [],entity: BusinessOrderEntity,service: BusinessOrderService, }) /*** 获取分页数据*/Post(/page, { summary…

基于Vue移动端电影票务服务APP设计与实现

目 录 摘 要 I Abstract II 引 言 1 1 相关技术 3 1.1 Vue框架 3 1.2 数据库MongoDB 3 1.3 Axios请求 3 1.4 H5、CSS3和JavaScript 4 1.5 本章小结 4 2 系统分析 5 2.1 功能需求 5 2.2 用例分析 5 2.3 用户功能 6 2.4本章小结 6 3 基于Vue电影票务服务APP设计 7 3.1 页面设计 …

YOLOv9改进策略:注意力机制 |通道注意力和空间注意力CBAM | GAM超越CBAM,不计成本提高精度

💡💡💡本文改进内容:通道注意力和空间注意力CBAM,全新注意力GAM:超越CBAM,不计成本提高精度 改进结构图如下: YOLOv9魔术师专栏 ☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️…

使用hive数组函数查找哪些用户在不同的时间点购买了同样的商品

背景 有一张用户购买过的商品的记录表,记录着每个小时不同用户购买的商品的记录,有一个需求是查找哪些用户在两个不同的时间点都购买了同样的商品 哪些用户在不同的时间点购买了同样的商品的实现 1.分别获取每个商品不同时间点的用户集合,…

Kotlin/Java中String的equals和==

Kotlin/Java中String的equals和 在Java中,如果定义一个常量String和new出一个String对象,是不同的: String s1 "zhang" String s2 new String("zhang") 因为在Java看来,s1只是一个常量,会放在…

大模型prompt提示词如何调优?

当使用大型模型(如GPT-3.5)时,可以通过优化提示(prompt)来引导模型生成更加符合预期的内容。以下是一些调优提示词的建议: 1、清晰的问题陈述:确保你的问题或提示清晰、简明,能够准…

Let’s Move Sui , 一起来学习吧

Let’s Move Sui是一个全新的交互式学习平台,通过SuiFrens的帮助教您如何在Sui上构建。设计供新手和经验丰富的开发者使用,Let’s Move Sui提供了一次非凡的Sui开发之旅,利用了Move在Sui上的独特之处,从基于对象的数据模型的基础知…

飞桨图像分割套件PaddleSeg初探

飞桨图像分割套件PaddleSeg初探 PaddleSeg是基于飞桨PaddlePaddle的端到端图像分割套件,内置45模型算法及140预训练模型,支持配置化驱动和API调用开发方式,打通数据标注、模型开发、训练、压缩、部署的全流程,提供语义分割、交互式…

项目性能优化—性能优化的指标、目标

项目性能优化—性能优化的指标、目标 性能优化的终极目标是什么 性能优化的目标实际上是为了更好的用户体验: 一般我们认为用户体验是下面的公式: 用户体验 产品设计(非技术) 系统性能 ≈ 系统性能 快 那什么样的体验叫快呢…

粒子群算法优化支持向量机回归分析,PSO-SVM回归分析

目录 背影 支持向量机SVM的详细原理 SVM的定义 SVM理论 粒子群算法原理 SVM应用实例,粒子群算法优化支持向量机回归分析,PSO-SVM回归分析 代码 结果分析 展望 完整代码:粒子群算法优化支持向量机回归分析,PSO-SVM回归分析(代码完整,数据齐全)资源-CSDN文库 https://dow…

交换机/路由器的存储介质-华三

交换机/路由器的存储介质-华三 本文主要介绍网络设备的存储介质组成。 ROM(read-only memory,只读存储器) 用于存储 BootROM程序。BootROM程序是一个微缩的引导程序,主要任务是查找应用程序文件并引导到操作系统,在应用程序文件或配置文件出…

Learn OpenGL 10 Assimp+网格+模型

Assimp 一个非常流行的模型导入库是Assimp,它是Open Asset Import Library(开放的资产导入库)的缩写。Assimp能够导入很多种不同的模型文件格式(并也能够导出部分的格式),它会将所有的模型数据加载至Assim…

Java的锁机制

在Java中,有几种锁机制可以用于实现并发控制,包括synchronized关键字、ReentrantLock类、ReadWriteLock接口以及Lock接口的其他实现类。下面分别介绍这些锁机制,并提供相应的代码示例。 synchronized关键字: synchronized是Java中…

WebAssembly探索篇(四)emcc和cmake编译opencv复杂案例

文章目录 开发环境工程目录CMakeLists.txtmain.cpp web端index.html效果图 遇到的问题JS与C传值Uncaught TypeError: Module._malloc is not a functioncanvas像素RGBA四通道 经验&&教训参考 最近因为项目原因,研究了一下WebAssembly。2015年上线与JS、HTML…

C语言——详解字符函数和字符串函数(一)

Hi,铁子们好呀!今天博主来给大家更一篇C语言的字符函数和字符串函数~ 具体讲的内容如下: 文章目录 🎆1.字符分类函数💯💯⏩1.1 什么是字符分类函数的?💯💯⏩1.2 字符函数的类型有哪…

基于Python的中医药知识问答系统设计与实现

[简介] 这篇文章主要介绍了基于Python的中医药知识问答系统的设计与实现。该系统利用Python编程语言,结合中医药领域的知识和技术,实现了一个功能强大的问答系统。文章首先介绍了中医药知识的特点和传统问答系统的局限性,然后提出了设计思路…

【Java探索之旅】运算符解析 算术运算符,关系运算符

🎥 屿小夏 : 个人主页 🔥个人专栏 : Java编程秘籍 🌄 莫道桑榆晚,为霞尚满天! 文章目录 📑前言一、什么是运算符二、算术运算符2.1 基本四则运算(-*/%)2.2 增…

ThreadLocal基本原理

ThreadLocal基本原理 一、定义 ThreadLocal是java中所提供的线程本地存储机制,可以利用改机制将数据缓存在线程内部,该线程可以在任意时刻、任意方法中获取数据 二、底层原理 ThreadLocal底层是通过ThreadLocalMap来实现的,每个Thread对象中…

Java代码基础算法练习---2024.3.14

其实这就是从我学校的资源,都比较基础的算法题,先尽量每天都做1-2题,练手感。毕竟离我真正去尝试入职好的公司(我指的就是中大厂,但是任重道远啊),仍有一定的时间,至少要等我升本之后…