草庐IT

计算机网络——第五章网络层笔记(4)

眉挑烟火 2023-04-09 原文

距离矢量路由选择协议(DV算法)

每个路由器维护一张表,表中列出了当前已知的到每个目标的最佳距离,以及为了到达那个目标,应该从哪个接口转发。

DV算法是动态的和分布式的,它常被用于小型网络,例子:RIP就是一个典型的DV。

每个路由器(节点)维护两个向量,Di和Si,分别表示从该路由器到其它路由器的距离以及相应的下一跳。

在邻居路由器之间交换路由信息(矢量),每个路由器(节点)根据收到的矢量信息,更新自己的路由表。

di1:从节点i到节点1的度量(代价)

Si1:沿着从节点i到节点1的最优路径上的下一跳

n:网络中的节点数,节点从1、2、......、n

优点:简单

缺点:交换的信息太大了,路由信息传播慢,可能导致路径信息不一致、收敛慢、度量计数到无穷、路由环、不适合大型的网络。

链路状态路由协议(LS)

主要思想:

       1、发现它的邻居节点们,了解它们的网络地址。(当一个路由器启动的时候,在每个点到点的线路发送一个特别的HELLLO分组,收到HELLO分组的路由器应该回送一个应答,应答中有它自己的名字)

        2、设置到它的每个邻居的成本度量。(为了决定线路的开销,路由器发送一个特别的ECHO分组, 另一端立刻回送一个应答;通过测量往返时间(roundtrip time),发送路由器可以获得一个合理的延迟估计值,了得到更好的结果,可多次测量,取均值;一种常用的选择,与链路带宽成反比)

        3、构造一个分组,包含它所了解到的所有信息。

链路状态分组构造后被发送给其他的路由器,分组中包含这些信息:发送方的标识、序列号、年龄、邻居列表、到邻居的成本/量度。

        4、发送这个分组给所有其他的路由器。

         5、计算到每个路由器的最短路径。

基本算法:

        1、每个分组都包含一个序列号,序列号随着新分组产生而递增。

         2、路由器记录下他看见的所有(源路由器, 序列号)对。

优点:每个路由器的认识一致、收敛快、适合在大型网络里使用。

缺点:每个路由器需要较大的存储空间,计算负担很大。

开放的最短路径优先(OSPF)

方法:使用图(graph)来表示真实的网络,每一个路由器都是一个节点,测量代价/量度。

概述:

1、OSPF是一种基于开放标准的链路状态路由协议,是目前IGP中应用最广、性能最优的一个协议。

2、OSPF可以在大型网络中使用。

3、无路由自环。

4、OSPF支持VLSM、CIDR等。

5、0使用带宽作为度量值(10^8/BW)。

6、收敛速度快。

7、通过分区实现高效的网络管理。

划分区域

所有子区域必须连到区域01上。

 OSPF运行步骤

1、建立路由器毗邻关系。

2、选举DR和BDR。(DR故障则BDR接替DR成为新的DR)

3、发现路由。

4、选择最佳路由。

5、维护路由信息。

SPF算法

为什么说OSPF克服了路由自环?

 无类域间路由(CIDR)

一、IP地址的问题

 好处:缓解地址枯竭的趋势,控制甚至缩短了路由表的开销。

基本思想:分配IP地址的时候不再以类别分,而是按照可变长的地址块来分配(按需分配)。

 路由表扩展

1、增加32bit子网掩码。

2、路由表表项(IP address,subnet mask,outgoing line)。

当一个分组到来时:

1、分组中的目标IP地址(Destination IP)被检查

2、目标IP和子网掩码进行与操作,得到网络地址。查找路由表。

3、若路由表中有许多表项匹配,选子网掩码最长的那个表项。

例子:

例子

 

​​​​​​​ 

 

 集合:

有关计算机网络——第五章网络层笔记(4)的更多相关文章

  1. ruby-on-rails - 使用一系列等级计算字母等级 - 2

    这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,

  2. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  3. 网络编程套接字 - 2

    网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识

  4. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  5. 计算机毕业设计ssm+vue基本微信小程序的小学生兴趣延时班预约小程序 - 2

    项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU

  6. ruby - 如何计算 Liquid 中的变量 +1 - 2

    我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我

  7. ruby - 使用 Ruby,计算 n x m 数组的每一列中有多少个 true 的简单方法是什么? - 2

    给定一个nxmbool数组:[[true,true,false],[false,true,true],[false,true,true]]有什么简单的方法可以返回“该列中有多少个true?”结果应该是[1,3,2] 最佳答案 使用转置得到一个数组,其中每个子数组代表一列,然后将每一列映射到其中的true数:arr.transpose.map{|subarr|subarr.count(true)}这是一个带有inject的版本,应该在1.8.6上运行,没有任何依赖:arr.transpose.map{|subarr|subarr.in

  8. arrays - 计算数组中的匹配元素 - 2

    给定两个大小相等的数组,如何找到不考虑位置的匹配元素的数量?例如:[0,0,5]和[0,5,5]将返回2的匹配项,因为有一个0和一个5共同;[1,0,0,3]和[0,0,1,4]将返回3的匹配项,因为0有两场,1有一场;[1,2,2,3]和[1,2,3,4]将返回3的匹配项。我尝试了很多想法,但它们都变得相当粗糙和令人费解。我猜想有一些不错的Ruby习惯用法,或者可能是一个正则表达式,可以很好地回答这个解决方案。 最佳答案 您可以使用count完成它:a.count{|e|index=b.index(e)andb.delete_at

  9. ruby - 检查网络文件是否存在,而不下载它? - 2

    是否可以在不实际下载文件的情况下检查文件是否存在?我有这么大的(~40mb)文件,例如:http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm这与ruby​​不严格相关,但如果发件人可以设置内容长度就好了。RestClient.get"http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm",headers:{"Content-Length"=>100} 最佳答案

  10. ruby - 404 未找到,但可以从网络浏览器正常访问 - 2

    我在这方面尝试了很多URL,在我遇到这个特定的之前,它们似乎都很好:require'rubygems'require'nokogiri'require'open-uri'doc=Nokogiri::HTML(open("http://www.moxyst.com/fashion/men-clothing/underwear.html"))putsdoc这是结果:/Users/macbookair/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/open-uri.rb:353:in`open_http':404NotFound(OpenURI::HT

随机推荐