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

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.kler.cn/a/273207.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

腾讯云优惠券领取指南:让你省钱又省心

随着云计算技术的日益发展,越来越多的企业和个人开始采用云服务来满足业务需求。腾讯云作为国内领先的云服务提供商,以其高效、稳定、安全的服务赢得了众多用户的青睐。为了回馈广大用户,腾讯云经常推出各种优惠券活动,旨在帮助用…

文件系统I/O FATFS RW 源码分析

文件系统I/O FATFS RW 源码分析 0 参考 FatFs 是用于小型嵌入式系统的通用 FAT/exFAT 文件系统模块。FatFs 整个项目都按照 ANSI C (C89) 编写。与存储器 I/O 解耦良好,便于移植到 8051、PIC、AVR、ARM、Z80、RX 等小型微控制器中。 下面是关于 FAT 文件系统格式…

win修改图标自定义QQ桌面图标

当安装了TIM后,想把图标改成QQ 图标见顶部,或通过网盘下载 提取码:9Ayc 操作步骤: 1.桌面右键图标,点击属性 2.选择快捷方式-更改图标 3.浏览选择下载的ico图标即可

粤嵌6818开发板通过MobaXterm使用SSH连接开发板

链接:https://pan.baidu.com/s/18ISP4Ub1HtQx6jCvTQTUHw?pwdfjmu 提取码:fjmu 1.把SSH_config.tar.bz 下载到开发板中 2.解压 SSH_config.tar.bz 解压命令:tar -xzvf SSH_config.tar.bz 3.配置SSH 进入SSH/openssh目录&am…

前端入职配置新电脑!!!

前端岗位入职第一天到底应该做些什么呢?又该怎样高效的认识、融入团队?并快速进入工作状态呢?这篇文章就来分享一下,希望对即将走向或初入前端职场的你,能够有所帮助。内含大量链接,欢迎点赞收藏&#xff0…

力扣思路题:最长特殊序列1

int findLUSlength(char * a, char * b){int alenstrlen(a),blenstrlen(b);if (strcmp(a,b)0)return -1;return alen>blen?alen:blen; }

kingbase 服务器配置(参数修改)

引言: 人大金仓作为国产数据库的佼佼者(单机),也是每位数据库从业者必须数据库之一 配置文件 kingbase 参数配置 主要由 kingbase.conf 和 kingbase.auto.conf 设置 kingbase.conf 该参数文件为主配置文件,一般情况下,需要 重启…

Linux TCP参数——tcp_adv_win_scale

文章目录 tcp_adv_win_scaleip-sysctl.txt解释buffering overhead内核缓存和应用缓存示例计算深入理解从2到1(tcp_adv_win_scale的值)总结 tcp_adv_win_scale adv-advise;win-window; 用于指示TCP中接收缓存比例的值。 static inline int tcp_win_from_space(int …

luceda ipkiss教程 63:器件端口延伸ExtendPorts

案例分享:通过picazzo3库中的ExtendPorts函数实现器件的端口延伸 如: 所有代码如下: from si_fab import all as pdk from ipkiss3 import all as i3 from picazzo3.container.extend_ports import ExtendPorts# Building the MMI PCell wi…

C++——字符串、读写文件、结构体、枚举

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…

【人工智能】英文学习材料03(每日一句)

🌻个人主页:相洋同学 🥇学习在于行动、总结和坚持,共勉! 目录 Chain Rule (链式法则) Dimensionality Reduction (降维) Long Short-Term Memory (LSTM) (长短期记忆网络) Gradient Explosion (梯度爆炸) Gradie…

es 聚合操作(二)

书接上文,示例数据在上一篇,这里就不展示了 一、Pipeline Aggregation 支持对聚合分析的结果,再次进行聚合分析。 Pipeline 的分析结果会输出到原结果中,根据位置的不同,分为两类: Sibling - 结果和现有…

kerberos验证协议安装配置使用

一、kerberos是什么 Kerberos 是一个网络身份验证协议,用于在计算机网络中进行身份验证和授权。它提供了一种安全的方式,允许用户在不安全的网络上进行身份验证,并获取访问网络资源的权限。 二、安装配置kerberos服务端 1、安装kerberos #检…

6语言交易所/多语言交易所php源码/微盘PHP源码

6语言交易所PHP源码,简单测试了一下,功能基本都是正常的。 由于是在本地测试的运行环境的问题,K线接口有点问题,应该在正式环境下是OK的。 源码下载地址:6语言交易所/多语言交易所php源码/微盘PHP源码.zip 程序截图…

数据结构 二叉树 力扣例题AC——代码以及思路记录

LCR 175. 计算二叉树的深 某公司架构以二叉树形式记录,请返回该公司的层级数。 AC int calculateDepth(struct TreeNode* root) {if (root NULL){return 0;}else{return 1 fmax(calculateDepth(root->left), calculateDepth(root->right));} } 代码思路 …

由浅到深认识C语言(13):共用体

该文章Github地址:https://github.com/AntonyCheng/c-notes 在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址:https://blog.csdn…

分享一个不错的three.js开源项目

项目将three.js相关内容封装为相应库 很值得学习,可以模仿项目学习three.js vue-vite-three.js threejs-park: 基于vue3,threeJS智慧园区 threejs-park

鸿蒙 Harmony 初体验

前言 看现在网上传得沸沸扬扬的鸿蒙,打算弄个 hello world 玩一下, 不然就跟不上时代的发展了 环境安装 我的环境 Windows 11 家庭中文版HarmonyOS SDK (API 9)DevEco Studio (3.1.1 Release)Node.js (16.19.1) 开发IDE下载 官方下载链接 配置 nodejs 这里帮…

Linux——动静态库的制作及使用与动态库原理

目录 一、静态库 1.静态库的制作 2.静态库的使用 加载静态库方法一:安装头文件与库文件 加载静态库方法二:指定文件目录 二、动态库 1.动态库的制作 2.动态库的使用 方法一:安装到系统中 方法二:软链接 方法三&…

hadoop分布式环境搭建

准备三台centos虚拟机 。(master,slave1,slave2) (hadoop、jdk文件链接:https://pan.baidu.com/s/1wal1CSF1oO2h4dkSbceODg 提取码:4zra) 前四步可参考hadoop伪分布式环境搭建详解-CSDN博客 1.修改主机名…
最新文章