IP协议
目录
网络层
理解路由选择
IP协议
IP首部
IP分片原理
IP校验和原理
网段划分
IP地址数量限制
私有和公网IP地址
路由
什么是IP地址,IP地址有什么特征?IP地址和MAC地址有什么区别和联系?
IP报文由IP头部和IP数据两个部分组成,IP头部一般占用多少个字节?
IP头部包含哪些数据?
IP头部的TTL数据有什么作用?
网络层是怎么界定区分一个IP报文的?
路由表是网络层重要的数据结构,路由表有什么作用?
ARP协议有什么作用?如何清理本机的ARP缓存?
ARP协议的设计有一定的缺陷,请通过搜索引擎自行搜索了解利用ARP漏洞攻击的方法。
IP地址一共4Bytes,32bits,理论上可以表示多少个IP?
为了科学的使用IP地址,早期的科学家把IP地址划分为A、B、C三类IP地址,这些IP地址有什么特点?
A类地址理论上可以有多少个子网,每个子网理论上有多少个主机号?
请列举特殊的网络号和特殊的主机号。
如何计算一个IP的网络号是什么?
一个网络的掩码是255.255.255.248,请问这个网络可以连接多少台主机?
网络地址转换技术(NAT)解决了什么问题?
NAT技术的实现原理。
ICMP报文和IP报文一样,也是由头部和数据两个部分组成,请简述ICMP报文的头部字段。
ICMP报文和IP报文由什么关系?ICMP报文是怎么样传输的。
常见的利用ICMP协议的计算机应用有ping和traceroute,请简述这两个应用的功能,以及这两个应用是怎么利用ICMP协议完成工作的。
网络层路由可以抽象成一个图算法问题,按照网络的大小可以分为内部网关协议和外部网关协议,请列举与网络路由相关的算法。
请简述RIP协议的过程。
RIP协议有什么优点和缺点?
请简述OSPF协议的过程,OSPF协议中起到重要的算法是什么算法?
OSPF协议有什么优点和缺点?
网络层有了RIP协议和OSPF协议,为什么还需要BGP协议?BGP协议解决了什么问题?
网络层
概念及介绍:
在网络体系中,每一层都是服务于对应的上下层的,网络层也是服务于上层的传输层和下层的数据链路层
网络层介于传输层和数据链路层之间,其主要作用是实现两个不同网络系统之间的数据透明传送,具体包括路由选择,拥塞控制和网际互连等(注:负责不同的网络之间(基于数据包的IP地址)尽力转发数据包,不负责丢包重传和接收顺序)
网络层在数据从数据链路层向传输层进行数据传输的通信中,起到构建一个中间通信子网的作用。不同网络有不同的网络层协议和地址规范,不同网络有不同的设计规范,属于不同的组织来管理,必须通过授权,并由专门的协议来负责网络间的通信
如果只是同一局域网内的各个计算机之间的通信,单靠物理层和数据链路层就可以建立通信链路完成用户间的数据通信,但要扩大应用范围,连接不同的局域子网,就需要借助网络层处理各个网络子网的协议,从而进行计算机的网络互连,所以网络层在 TCP/IP 协议体系中叫网际互连层
网络层的主要作用:
1.屏蔽网络差异,提供透明传输
网络层就是为了解决不同网络有不同的规范要求的差异问题,寻找一个不同网络间都能共同遵守的网络通信规范,以便不同网络间能相互识别,并接受对方的网络请求。也就是一个中转站的作用,两个毫无交集的网络通过这个中转站来建立交集
2.为网络间通信提供路由选择
路由选择是根据一定的原则和路由选择算法在多个结点的通信子网中选择一条到达目的节点的最佳路径的过程。确定路由选择的策略称为路由算法。在无连接的数据包服务中,网络节点要为每个数据包做出路由选择,即选择到达目的节点的最佳路线,而在面向连接的虚电路服务中,存在一条专门的逻辑线路,在建立连接时就已经确定了路有路径,无需额外选择
3.拥塞控制
拥塞控制是为了避免网络传输路径中数据的传输延迟或死锁。数据链路层中的流量控制功能,是针对数据链路中点对点传输速率的控制,这里的拥塞控制是针对在网络层传输路径中的端到端传输效率的控制。主要采用预约缓冲区、许可证和分组丢弃等方式
理解路由选择
- 通常一个计算机网络就是一个管理边界,一般是属于一个特定的公司,有一个特定的管理者负责,所以在进行计算机网络互连时,要同时考虑两方面的问题:一是授权用户可以在不同网络间互访,共享双方的资源;另一方面又要保持各计算机网络管理原来的独立性
- 而不同用户之间进行通信,首先得知道彼此的地址,局域网内部的用户访问(物理层和数据链路层就可以构建一个局域网)是通过MAC地址进行,但不同网络之间进行访问需要网络层对应的一个网络地址来进行访问,每个网络都通过其网络地址即NSAP(网络服务访问点)来标识,网络中的每个节点都有一个NSAP。这个NSAP就是由对应网络所运行的网络层通信协议来定义的,在目前最常见的TCP/IP协议网络中,这个协议就是IP协议,对应的NSAP就是IP地址
- 在数据链路层中传输的是一个个以许多字节为单位的帧,在每个帧的帧头都有源节点的MAC地址和目的节点的MAC地址,局域网内部的寻址就是通过MAC地址进行的,而在网络层中传输的是数据报(Packet,也叫分组),一个数据报是一个数据帧经过网络层协议重封装后得到的,每个数据报的报头(IP头)都有源节点和目的节点的IP地址,网路间的寻址就是通过IP地址进行的
- 即网络通信只有两种情况:如果通信双方在同一个局域网内,可直接通过数据链路层进行相互通信,但因为主机其实也有网络层的路由功能,所以两台主机间进行网络通信时通常也是通过三层来进行的(IP协议则是IP地址寻址);如果通信双方在不同网络内,需要网络层中的网络地址进行寻址,即必须通过三层进行
IP协议
IP协议是互联网上最基本的协议之一,它主要负责实现数据包的传输和路由选择。
IP协议主要特点包括:
- 无连接:IP协议在传输数据时,不需要在发送方与接收方之间建立一个持久的连接,每个数据包都是独立的、没有关联的。
- 不可靠:IP协议不保证数据包的可靠传输,它只是尽可能地将数据包传输到目的地。如果出现网络拥塞或其他问题,数据包可能会丢失或延迟。
- 分组交换:IP协议将数据分成若干个数据包进行传输,每个数据包都有自己的目的地址和源地址,路由器会根据这些地址将数据包转发到下一个网络节点,直到最终到达目的地。
IP协议主要功能包括:
- 分配IP地址:IP协议为每个连接到互联网上的设备分配一个唯一的IP地址,它用于标识设备的位置。
- 路由选择:IP协议根据路由表选择最佳的路径将数据包传输到目的地。
- 分组传输:IP协议将数据分成若干个数据包进行传输,每个数据包都有自己的目的地址和源地址。
- 分片和重组:IP协议可以将大的数据包进行分片,传输到接收方后再进行重组。
IP首部
IP头部固定信息的长度为20字节,IP头部选项(Options)为可选字段,用于传递一些特殊的控制信息,如时间戳或安全选项等。
IP头部固定信息包括以下字段:
版本:4位,表示IPv4协议的版本号,IPv4协议的版本号为4。
头部长度:4位,指示该IPv4头部信息的长度,单位为4字节,因此它的最小值为20字节。
服务类型:8位,用于指示该数据包的服务类型,包括优先级、延迟和吞吐量等信息。
总长度:16位,指示整个IPv4数据包的长度,单位为字节,包括头部和数据部分。
标识:16位,由发送方生成并用于标识数据包的唯一性,当一个IP数据包分片后,IP分片使用同一个标识,目的端根据IP标识进行数据包重组。
标志:3位,用于指示数据包是否分片和是否是最后一片数据包,三位分别为:
Reserved bit 保留位,Don`t fragment(DF)禁止分片,More fragments(MF)更多分片。
DF为0指示IP数据包为分片包。MF为1指示IP数据包不是最后一个分片,为0指示为最后一个分片包。
片偏移:13位,指示该数据包的偏移量,用于将分片的数据包重新组装成原始数据包,片偏移为该IP分片在整个IP包的位置(单位为字节),具体数值为数据包偏移的字节数除以8。
生存时间:8位,表示数据包在互联网上可以经过的最大路由器数量,用于避免数据包在互联网上循环传输。
协议:8位,指示该数据包所使用的上层协议,如TCP、UDP或ICMP等。
首部校验和:16位,用于检查IPv4头部信息的完整性和正确性。
源地址:32位,表示发送方的IP地址。
目标地址:32位,表示接收方的IP地址。
IP分片原理
IP分片是将一个大的IP数据包分成多个较小的数据包进行传输的过程。
IP分片的原理是在发送端将原始IP数据包分割成多个较小的数据包,每个数据包都有自己的IP头部,并且这些数据包都有相同的标识符。在接收端,当所有的分片都到达后,它们会被重新组合成原始的IP数据包。
最大传输单元MTU:
- MAC帧作为数据链路层的协议,它会将IP传下来的数据封装成数据帧,然后发送到网络当中。但MAC帧携带的有效载荷的最大长度是有限制的,也就是说IP交给MAC帧的报文不能超过某个值,这个值就叫做最大传输单元(Maximum Transmission Unit,MTU),这个值的大小一般是1500字节
- 由于MAC帧无法发送大于1500字节的数据,因此IP层向下交付的数据的长度不能超过1500字节(IP的报头和有效载荷),如果超过了1500字节,那么就需要先在IP层对该数据进行分片,然后再将分片后的数据交给下层MAC帧进行发送
IP校验和原理
发送方IP校验和计算
- IP首部校验和清零。
- 校验数据(IP首部)以16bit为单位进行累加求和,校验数据需为偶数字节,奇数字节末尾填充0变为偶数字节。
- 如果累加和超过16bit,产生了进位,需将高16bit和低16bit累加求和。
- 循环步骤3,直至未产生进位为止。
- 累加和取反得到校验和。
接收方IP校验和验证
- 接收方接收IP数据报文。
- 校验数据(IP首部)以16bit为单位进行累加求和,校验数据需为偶数字节,奇数字节末尾填充0变为偶数字节。
- 如果累加和超过16bit,产生了进位,需将高16bit和低16bit累加求和。
- 循环步骤3,直至未产生进位为止。
- 累加和和校验和相加得到0xffff,校验成功,否则失败。
网段划分
- IP地址分为两个部分, 网络号和主机号
- 网络号: 保证相互连接的两个网段具有不同的标识
- 主机号: 同一网段内, 主机之间具有相同的网络号, 但是必须有不同的主机号
- 不同的子网其实就是把网络号相同的主机放到一起
- 如果在子网中新增一台主机, 则这台主机的网络号和这个子网的网络号一致, 但是主机号必须不能和子网中的其他主机重复
- 通过合理设置主机号和网络号, 就可以保证在相互连接的网络中, 每台主机的IP地址都不相同
- 手动管理子网内的IP, 而有一种技术叫做DHCP, 能够自动的给子网内新增主机节点分配IP地址, 避免了手动管理IP的不便
- 一般的路由器都带有DHCP功能. 因此路由器也可以看做一个DHCP服务
5类IP地址:
A类 0.0.0.0到127.255.255.255
B类 128.0.0.0到191.255.255.255
C类 192.0.0.0到223.255.255.255
D类 224.0.0.0到239.255.255.255
E类 240.0.0.0到247.255.255.255
随着Internet的飞速发展,这种划分方案的局限性很快显现出来,大多数组织都申请B类网络地址, 导致B类地址很快就分配完了, 而A类却浪费了大量地址,然而实际网络架设中, 不会存在一个子网内有这么多的情况. 因此大量的IP地址都被浪费掉了,针对这种情况提出了新的划分方案, 称为CIDR
子网掩码:
引入一个额外的子网掩码来区分网络号和主机号
子网掩码也是一个32位的正整数. 通常用一串 "0" 来结尾
将IP地址和子网掩码进行 "按位与" 操作, 得到的结果就是网络号
网络号和主机号的划分与这个IP地址是A类、B类还是C类无关
IP地址与子网掩码做与运算可以得到网络号, 主机号从全0到全1就是子网的地址范围
IP地址和子网掩码还有一种更简洁的表示方法:例如140.252.20.68/24,表示IP地址为140.252.20.68, 子网掩码的高24位是1,也就是255.255.255.0
- 将IP地址中的主机地址全部设为0, 就成为了网络号, 代表这个局域网;
- 将IP地址中的主机地址全部设为1, 就成为了广播地址, 用于给同一个链路中相互连接的所有主机发送数据包
- 127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1
IP地址数量限制
概念介绍:
- IP地址(IPv4)是一个4字节32位的正整数. 那么一共只有 2的32次方 个IP地址, 大概是43亿左右. 而TCP/IP协议规定, 每个主机都需要有一个IP地址
- 实际上, 由于一些特殊的IP地址的存在, 数量远不足43亿,另外IP地址并非是按照主机台数来配置的, 而是每一个网卡都需要配置一个或多个IP地址
- CIDR在一定程度上缓解了IP地址不够用的问题(提高了利用率, 减少了浪费, 但是IP地址的绝对上限并没有增加), 仍然不是很够用
三种解决方式:
- 动态分配IP地址:只给接入网络的设备分配IP地址. 因此同一个MAC地址的设备, 每次接入互联网中, 得到的IP地址不一定是相同的
- NAT技术:能够让不同局域网当中同时存在两个相同的IP地址,NAT技术不仅能解决IP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机
- IPv6:IPv6并不是IPv4的简单升级版. 这是互不相干的两个协议, 彼此并不兼容; IPv6用16字节128位来表示一个IP地址,目前IPv6还没有普及
私有和公网IP地址
私有IP地址范围:
如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到Internet上,理论上使用任意的IP地址都可以,但是RFC1918规定了用于组建局域网的私有IP地址
- 10.* ,前8位是网络号,共16,777,216个地址
- 172.16.到172.31.,前12位是网络号,共1,048,576个地址
- 192.168.*,前16位是网络号,共65,536个地址
包含在这个范围中的, 都成为私有IP, 其余的则称为全局IP(或公网IP)
- 一个路由器可以配置两个IP地址, 一个是WAN口IP, 一个是LAN口IP(子网IP)
- 路由器LAN口连接的主机, 都从属于当前这个路由器的子网中
- 不同的路由器, 子网IP其实都是一样的(通常都是192.168.1.1). 子网内的主机IP地址不能重复. 但是不同子网的IP地址就可以重复了
- 每一个家用路由器, 其实又作为运营商路由器的子网中的一个节点. 这样的运营商路由器可能会有很多级,最外层的运营商路由器, WAN口IP就是一个公网IP了
- 子网内的主机需要和外网进行通信时, 路由器将IP首部中的IP地址进行替换(替换成WAN口IP), 这样逐级替换, 最终数据包中的IP地址成为一个公网IP. 这种技术称为NAT(Network Address Translation,网络地址转换)
- 如果希望我们自己实现的服务器程序, 能够在公网上被访问到, 就需要把程序部署在一台具有外网IP的服务器上. 这样的服务器可以在阿里云/腾讯云上进行购买
运营商的作用:
- 实际网络通信的基础设施都是运营商搭建的,我们访问服务器的数据并不是直接发送到了对应的服务器,而是需要经过运营商建设的各种基站以及各种路由器,最终数据才能到达对应的服务器
- 用户上网的数据首先必须经过运营商的相关网络设备,然后才能发送到互联网公司对应的服务器,而所谓的网段划分、子网划分等工作实际都是运营商做的
NAT技术
什么是NAT:
NAT(Network Address Translator,网络地址转换)是用于在本地网络中使用私有地址,在连接互联网时转而使用全局 IP 地址的技术,NAT实际上是为解决IPv4地址短缺而开发的技术。
NAT的工作机制:
以 10.0.0.10 的主机与 163.221.120.9 的主机进行通信为例讲解 NAT 的工作机制。利用 NAT,途中的 NAT 路由器将发送源地址从 10.0.0.10 转换为全局的 IP 地址(202.244.174.37)再发送数据
反之,当响应数据从 163.221.120.9 发送过来时,目标地址(202.244.174.37)先被转换成私有 IP 地址 10.0.0.10 以后再被转发
-
网络被分为私网和公网两个部分,NAT网关设置在私网到公网的路由出口位置,双向流量必须都要经过NAT网关
-
NAT 路由器在两个访问方向上完成两次地址的转换或翻译,出方向做源信息替换,入方向做目的信息替换
-
网络访问只能先由私网侧发起,公网无法主动访问私网主机(不存在替换会话,无法找到对应的私网主机)
-
NAT 路由器的存在对通信双方是保持透明的
-
NAT 路由器为了实现双向翻译的功能,需要维护一张关联表,把会话的信息保存下来
NAT类型:
1.静态NAT
内部本地地址一对一转换成内部全局地址,相当内部本地的每一台PC都绑定了一个全局地址。一般用于在内网中对外提供服务的服务器
2.动态NAT
在内部本地地址转换的时候,在地址池中选择一个空闲的,没有正在被使用的地址,来进行转换,一般选择的是在地址池定义中排在前面的地址,当数据传输或者访问完成时就会放回地址池中,以供内部本地的其他主机使用,但是,如果这个地址正在被使用的时候,是不能被另外的主机拿来进行地址转换的
3.端口复用NAPT
面对私网内部数量庞大的主机,如果NAT只进行IP地址的简单替换,就会产生一个问题:当有多个内部主机去访问同一个服务器时,从返回的信息不足以区分响应应该转发到哪个内部主机。此时,需要 NAT 设备根据传输层信息或其他上层协议去区分不同的会话,并且可能要对上层协议的标识进行转换,比如 TCP 或 UDP 端口号。这样 NAT 网关就可以将不同的内部连接访问映射到同一公网IP的不同传输层端口,通过这种方式实现公网IP的复用和解复用。这种方式也被称为端口转换PAT、NAPT或IP伪装,但更多时候直接被称为NAT,因为它是最典型的一种应用模式
NAT的优点和缺点:
优点
节省合法的公有 IP 地址(最大的优点)
当网络发生变化时,避免重新编址
对外隐藏内部地址,增加网络安全性(网络访问只能先由私网侧发起,公网无法主动访问私网主机)
缺点
无法从NAT 的外部向内部服务器建立连接(NAT穿越)
转换表的生成和转换操作都会产生一定的开销
通信过程中一旦 NAT 遇到异常需重新启动时,所有的 TCP 连接都将被重置。即使备置两台 NAT 做容灾备份,TCP 连接还是会被断开
路由
- 数据的发送和转发就是在复杂的网络结构中, 找出一条通往终点的路线
- 路由的过程, 就是这样一跳一跳(Hop by Hop) "问路" 的过程
- 数据在路由的过程中,实际就是一跳一跳(Hop by Hop)“问路”的过程。所谓“一跳”就是数据链路层中的一个区间,具体在以太网中指从源MAC地址到目的MAC地址之间的帧传输区间
- IP数据包的传输过程也和问路一样
- 当IP数据包, 到达路由器时, 路由器会先查看目的IP
- 路由器决定这个数据包是能直接发送给目标主机, 还是需要发送给下一个路由器
- 依次反复, 一直到达目标IP地址
- 而判定当前这个数据包该发送位置就是依靠每个节点内部维护一个路由表
路由器的查找结果处理行为:
- 得知该数据下一跳应该跳到哪一个子网,转发给下一个子网
- 没有发现匹配的子网,此时路由器会将该数据转发给默认路由
- 目标网络就是当前所在的网络,此时路由器就会将该数据转给当前网络中对应的主机
路由表查询的具体过程:
每个路由器内部会维护一个路由表,我们可以通过route命令查看云服务器上对应的路由表
路由表生成算法:
- 静态路由:是指由网络管理员手工配置路由信息
- 动态路由:是指路由器能够通过算法自动建立自己的路由表,并且能够根据实际情况进行调整
什么是IP地址,IP地址有什么特征?IP地址和MAC地址有什么区别和联系?
IP地址是唯一标记互联网中计算机的标识,IP地址共占用4个字节,使用点分十进制表示。IP地址和MAC地址都是一种标识,IP地址标记网络中的计算机,MAC地址标记网络硬件设备。
IP报文由IP头部和IP数据两个部分组成,IP头部一般占用多少个字节?
IP头部一般占用20个字节。
IP头部包含哪些数据?
版本: 占4位,指的是IP协议的版本,通信双方的版本必须一致,当前主流版本是4,即IPv4,也有IPv6
首部位长度: 占4位,最大数值为15,表示的是IP首部长度,单位是“32位字”(4个字节),也即是IP首部最大长度为60字节
服务类型(TOS): 占8位
总长度: 占16位,最大数值为65535,表示的是IP数据报总长度(IP首部+IP数据)
标识 :16位
标志 :3位
片偏移: 13位
TTL: 占8位,表明IP数据报文在网络中的寿命,每经过一个
设备,TTL减1,当TTL=0时,网络设备必须丢弃该报文
协议: 占8位,表明IP数据所携带的具体数据是什么协议(如:TCP、UDP等)
首部校验和: 占16位,校验IP首部是否有出错
源IP地址: 32位
目的IP地址: 32位
IP头部的TTL数据有什么作用?
TTL占用一个字节,表示IP数据包在网络中的寿命,当TTL为0时,网络设备将丢弃这个报文。
网络层是怎么界定区分一个IP报文的?
IP协议头部有个字段为报文总长度,占用16个比特位,网络层根据这个字段划分报文。
路由表是网络层重要的数据结构,路由表有什么作用?
路由表存储着目的地址和下一跳地址的映射关系,路由表是网络层可以正常工作的重要数据结构。
ARP协议有什么作用?如何清理本机的ARP缓存?
ARP协议全称是地址解析协议(Address Resolution Protocol)。ARP协议可以将IP地址翻译成物理地址。在Windows系统下使用arp -d命令就可以清除arp缓存。
ARP协议的设计有一定的缺陷,请通过搜索引擎自行搜索了解利用ARP漏洞攻击的方法。
最常见的方法是:利用ARP欺骗,造成局域网内主机通信的失败。
原理:其局域网内的"攻击机"通过冒充同网络号下的"受害者主机"的物理地址(mac地址),欺骗网关,让网关原来应该发给“受害者主机”的数据包转而发给“攻击机”,这就导致了“受害者主机”无法收到应答的数据包,也就等于断网了,这个过程就是常说的ARP欺骗。
IP地址一共4Bytes,32bits,理论上可以表示多少个IP?
2^32个。
为了科学的使用IP地址,早期的科学家把IP地址划分为A、B、C三类IP地址,这些IP地址有什么特点?
IP地址可以分为网络号和主机号两个部分,A类地址网络号为8位,主机号为24位;B类地址网络号为16位,主机号为16位;C类地址网络号为24位,主机号为8位。
A类地址理论上可以有多少个子网,每个子网理论上有多少个主机号?
A类地址网络号为8位,其首位为0,故理论上可以表示2的7次方个网络,主机号为24位,每个子网可以有2的24次方个主机。
请列举特殊的网络号和特殊的主机号。
主机号全0、主机号全1的IP地址为特殊的主机号,不可分配。
主机号全0 表示当前网络段,不可分配为特定主机;
主机号为全1 表示广播地址,向当前网络段所有主机发消息。
如何计算一个IP的网络号是什么?
使用子网掩码和IP地址进行按位与运算就可得到IP地址对应的网络号。
一个网络的掩码是255.255.255.248,请问这个网络可以连接多少台主机?
这个网络的主机号只有3位,最多可以表示8个主机,减去全0、全1两个特殊主机号,一共可以连接6台主机。
网络地址转换技术(NAT)解决了什么问题?
NAT技术解决了网络IP地址不够用的问题。
NAT技术的实现原理。
NAT技术在网络设备中通过维护一个映射表,通过映射表可以将外部地址转换为内部地址。
ICMP报文和IP报文一样,也是由头部和数据两个部分组成,请简述ICMP报文的头部字段。
ICMP报文的头部字段由三个部分组成,分别是8位类型、8位代码和16位校验和。
ICMP报文和IP报文由什么关系?ICMP报文是怎么样传输的。
ICMP协议(Internet Control Message Protocol 因特网报文控制协议)和IP协议虽然同为网络层协议,但是ICMP是不能单独传输的,ICMP报文需要传输时作为IP报文的数据进行传输。
常见的利用ICMP协议的计算机应用有ping和traceroute,请简述这两个应用的功能,以及这两个应用是怎么利用ICMP协议完成工作的。
Ping用于向特定的目的主机发送 ICMP Echo请求报文,测试目的站是否可达及了解其有关状态。
Traceroute 可以探测IP数据报在网络中走过的路径。
网络层路由可以抽象成一个图算法问题,按照网络的大小可以分为内部网关协议和外部网关协议,请列举与网络路由相关的算法。
距离矢量算法、Dijkstra(迪杰斯特拉)算法。
请简述RIP协议的过程。
路由器初始化路由信息(两个向量𝐸𝑗 和S𝑗 )
对相邻路由器X发过来的信息,对信息的内容进行修改(下一跳地址设置为X,所有距离加1)
i. 检索本地路由,将信息中新的路由插入到路由表里面
ii. 检索本地路由,对于下一跳为X的,更新为修改后的信息
iii. 检索本地路由,对比相同目的的距离,如果新信息的距离更小,则更新本地路由表
如果3分钟没有收到相邻的路由信息,则把相邻路由设置为不可达(16跳)
RIP协议有什么优点和缺点?
优点: 实现简单,开销很小
缺点: 限制了网络的规模;“坏消息“传得慢,更新收敛时间过长, 这也使得RIP协议整体性能较差。
请简述OSPF协议的过程,OSPF协议中起到重要的算法是什么算法?
1. 向所有的路由器发送消息;
2. 消息描述该路由器与相邻路由器的链路状态;
3. 只有链路状态发生变化时,才发送更新信息。
OSPF协议有什么优点和缺点?
OSPF协议解决了RIP协议的问题,对整个网络有一定的 “全局观”,但是OSPF协议本身较为复杂,实现开销较大。
网络层有了RIP协议和OSPF协议,为什么还需要BGP协议?BGP协议解决了什么问题?
BGP协议全称为边际网关协议(Border Gateway Protocol),
是一种运行在AS之间的协议。BGP协议是因为计算机网络中不同的AS之间人为因素的复杂性而提出的,在实际网络环境中,不同AS之间数据的传输还受政治、安全等方面的影响。为了在协调多个影响因素的同时又能够找到一条能够到达目的的比较好的路由,就需要用到BGP协议。
相关文章:

IP协议
目录 网络层 理解路由选择 IP协议 IP首部 IP分片原理 IP校验和原理 网段划分 IP地址数量限制 私有和公网IP地址 路由 什么是IP地址,IP地址有什么特征?IP地址和MAC地址有什么区别和联系? IP报文由IP头部和IP数据两个部分组成&#…...

使用sqlplus连接oracle,提示ORA-01034和ORA-27101
具体内容如下 PL/SQL Developer 处 登录时 终端处 登录时 ERROR: ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist Process ID: 0 Session ID: 0 Serial number: 0 解决方法是执行以下命令 sqlplus /nolog conn / as sysdba startup …...
TLS协议
目录 什么是TLS协议? TLS的基本流程? 两种密钥交换算法? 基于ECDHE密钥交换算法的TLS握手过程? 基于RSA密钥交换算法的TLS握手过程? 基于RSA的握手和基于ECDHE的握手有什么区别? 什么是前向保密&…...

Academic Inquiry|国外文献查找
一个失去了男子气概的人总有很多忧虑,这样就可以分散注意力,而不必为那件特别的羞耻而苦恼不堪。 ——《狂野之夜》〔美〕乔伊斯卡罗尔欧茨著 樊维娜译 许多研究者在进行研究的时候,都会查找对应主体的国内外引用文献,而大多得出的…...

opencv图片灰度二值化
INCLUDEPATH D:\work\opencv_3.4.2_Qt\include LIBS D:\work\opencv_3.4.2_Qt\x86\bin\libopencv_*.dll #include <iostream> #include<opencv2/opencv.hpp> //引入头文件using namespace cv; //命名空间 using namespace std;//opencv这个机器视…...

短肥网络的 RTT 敏感性
周二下班路上发了一则朋友圈: 长肥管道的特征和问题谈得够多了,但这里谈的是短肥管道,因为下面趋势,短肥管道才是未来大势: 云计算致使数据中心网络快速发展,而数据中心网络时延短,带宽大。CD…...

Nonebot实战之编写插件1
前言 应粉丝群内粉丝要求,我也决定写一个Nonebot插件编写教程,从0开始教学。有些不对的地方也欢迎大家指正,修改。 开始 准备 合适的代码编辑器一定的python基础懂得提问的方式 代码编辑器 代码编辑器有很多种选择,比如 vsc…...

Linux-C++开发项目:基于主从Reactor模式的高性能并发服务器
目录 1.项目介绍2.1项目部署2.2安装版本较高的编译器 2.项目开发过程2.1网络库模块开发2.1.1简单日志宏的实现2.1.2Buffer模块实现2.1.3Socket模块实现2.1.4Channel模块实现2.1.5Poller模块实现2.1.6TimerWheel模块实现2.1.7EventLoop模块实现2.1.8整合测试12.1.9LoopThread模块…...

【Linux的开胃小菜】Linux系统安装后初始化配置操作
我们刚接手一台刚安装好服务器系统之后,可以对系统进行一些基础优化: 常规设定: centos: 1.关闭 iptables 2.关闭 selinux 3.设定 ChronyUbuntu: 4. /etc/security/limits.conf 5. /etc/sysctl.conf1.首先使用国内阿里云的yum源(…...
Java批量下载书籍图片并保存为PDF的方法
背景 因为经常出差火车上没网、不方便电子书阅读器批注,需要从某网站上批量下载多本书籍的图片并自动打包成PDF文件。 分析 1、尝试获得图片地址,发现F12被禁 解决方法:使用Chrome浏览器,点击右上角三个点呼出菜单,…...
flutter 创建lib
在根目录下创建 packages 文件夹创建lib (flutter create --templatepackage xxx)需要在pubspec.yaml中的根目录下添加 publish_to: ‘none’ # 如果你想发布到pub.dev,请删除这一行配置 lib_rock_utils:path: packages/lib_rock_utils...

深度剖析堆栈指针
为什么打印root的值与&root->value的值是一样的呢 测试结果: *号一个变量到底取出来的是什么? 以前我写过一句话,就是说,如果看到一个*变量,那就是直逼这个变量所保存的内存地址,然后取出里面保存的…...

C++笔记之静态成员函数的使用场景
C笔记之静态成员函数的使用场景 C静态成员函数的核心特点是不与特定类实例相关,可通过类名直接调用,用于执行与类相关的操作而无需创建类对象。其主要用途是在类级别上共享功能,管理全局状态或提供工具函数。 code review! 文章目录 C笔记之…...

Nginx的优化和防盗链
一、Nginx的优化 1、隐藏版本号 curl -I http://192.168.79.28 #查看信息(版本号等)方法一:修改配置文件 vim /usr/local/nginx/conf/nginx.conf vim /usr/local/nginx/conf/nginx.conf http {include mime.types;default_type ap…...
第二十次CCF计算机软件能力认证
数学专场 第一题:称检测点查询 解题思路:计算欧几里得距离 #include<iostream> #include<vector> #include<algorithm>using namespace std;typedef pair<int , int> PII; int n , x , y; vector<PII>v;int main() {ci…...

一篇文章带你了解Java发送邮件:使用JavaMail API发送电子邮件的注意事项、发送附件等
Java发送邮件:使用JavaMail API发送电子邮件 作者:Stevedash 发表于:2023年8月13日 15点48分 来源:Java 发送邮件 | 菜鸟教程 (runoob.com) 电子邮件在现代通信中扮演着至关重要的角色,而在Java编程中,…...
kubernetes的日志
1、日志在哪里 kubelet组件,systemd方式部署,journalctl -u kubelet 查看 其他组件,pod方式部署,kubectl logs 查看 容器运行时将日志写入 /var/log/pods 系统日志,/var/log/message 2、查看服务日志 #首先检查服…...
设计HTML5文本
网页文本内容丰富、形式多样,通过不同的版式显示在页面中,为用户提供最直接、最丰富的信息。HTML5新增了很多文本标签,它们都有特殊的语义,正确使用这些标签,可以让网页文本更严谨、更符合语义。 1、通用文本 1.1、标…...

msvcr120.dll丢失怎样修复?总结三个dll修复方法
当我遇到msvcr120.dll丢失的问题时,我感到有些困惑和焦虑。因为这个问题会导致我无法运行依赖这个文件的应用程序。msvcr120.dll是运行时库文件的一部分,为应用程序提供了必要的运行时支持。它的丢失会导致应用程序无法正常运行,这让我意识到…...
选择题方法论——颉斌斌
文章目录 一、仔细阅读文章结构Ⅰ 时间对比Ⅱ 抛砖引玉Ⅲ 开门见山Ⅳ 一分为二Ⅴ 两者关系Ⅵ 研究性文章 1 如何精准定位1.1 定位明显的题1.2 定位不明显的题1.3 定位找不到出题句的题 2 对比选项两点2.1 接收信息2.2 对比信息 3 选择题答案特点4 评估选项5 选择题的固有缺陷5.…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...

Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...

React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...

ArcGIS Pro+ArcGIS给你的地图加上北回归线!
今天来看ArcGIS Pro和ArcGIS中如何给制作的中国地图或者其他大范围地图加上北回归线。 我们将在ArcGIS Pro和ArcGIS中一同介绍。 1 ArcGIS Pro中设置北回归线 1、在ArcGIS Pro中初步设置好经纬格网等,设置经线、纬线都以10间隔显示。 2、需要插入背会归线…...