目录
4.1 IP地址、子网划分、合并超网
4.1.1 IP地址、子网掩码、网关
4.1.2 IP地址的编址方法1:IP地址分类(A~E类地址、保留的IP地址)
4.1.4 IP地址的编址方法2:子网划分(等长、变长)
4.1.5 IP地址的编址方法3:超网(合并网段)
小结
4.2 静态路由和动态路由
4.2.1 网络层实现的功能
4.2.2 路由信息的来源/路由表的生成、路由优先级
4.2.3 静态路由
如果余数是1,则最后一位是1。
如果余数是2,就把2写成二进制,最后两位10。
如果余数是5,就把5写成位二进制,最后三位101。
如果余数是6,就把6写成二进制,最后四位0110。
数据包的目标IP地址决定了数据包最终到达哪一个计算机,而目标MAC地址决定了该数据包下一跳由哪个设备接收,不一定是终点。
- IP地址:
- 组成:网络标识 + 主机标识
- 同一网段的计算机网络部分相同
- 路由器连接不同网段,负责不同网段之间的数据转发
- 交换机连接同一网段的计算机
- 格式:32位二进制 或 32比特 或 4个字节
- 点分二进制表示法:10101100.00010000.00011110.00111000
- 点分十进制表示法:172.16.30.56
- 子网掩码(Subnet Mask)/网络掩码/地址掩码:指明IP地址的网络部分和主机部分
- 同一个网段中的计算机子网掩码相同
- 表示方法1:IP地址有“类”的概念,A类地址默认子网掩码255.0.0.0,B类地址默认子网掩码255.255.0.0,C类地址默认子网掩码255.255.255.0。
- 表示方法2:等长子网划分和变长子网划分,打破了IP地址“类”的概念,子网掩码也打破了字节的限制,引入VLSM(Variable Length Subnet Masking,可变长子网掩码)。这种方式使得Internet上路由器的路由表大大精简,被称为CIDR(无类域间路由,Classless Inter-Domain Routing),子网掩码中1的个数被称为CIDR值。
- 网关(Gateway):计算机到其他网段的出口,即路由器的接口地址。
- 取值(重要!!!):本网段中任何一个地址(为了尽可能避免和网络中的计算机地址冲突,通常使用该网段的第一个可用地址或最后一个可用地址)
计算机的通信流程(重要!!!)
- Step1:使用自己的IP地址和自己的子网掩码做与运算,得到自己所在的网段。
- Step2:使用目标IP地址和自己的子网掩码做与运算,得到目标主机是哪个网段。(无需关心目标的子网掩码)
- Step3:比较上述两个网段是否一样
- 同一网段:目标MAC地址是目标计算机的接口MAC地址
- 不同网段:目标MAC地址是路由器的接口MAC地址(或 网关的MAC地址)
思考题
判断下面的计算机能否进行通信?
A、B之间可以相互通信:
- 当A给B发送数据时
- Step1:计算A所在的网段 131.107.0.0
- Step2:计算B所在的网段 131.107.0.0
- Step3:A和B处于同一网段,则目标MAC地址为B的MAC地址
- 当B给A发送数据时
- Step1:计算B所在的网段 131.107.41.0
- Step2:计算A所在的网段 131.107.41.0
- Step3:A和B处于同一网段,则目标MAC地址为A的MAC地址
A可以给B发送数据,B不能给A发送数据:
- 当A给B发送数据时
- Step1:计算A所在的网段 131.107.0.0
- Step2:计算B所在的网段 131.107.0.0
- Step3:A和B处于同一网段,则目标MAC地址为B的MAC地址
- 当B给A发送数据时
- Step1:计算B所在的网段 131.107.41.0
- Step2:计算A所在的网段 131.107.42.0
- Step3:A和B处于不同网段,则目标MAC地址为路由器的MAC地址(B没有配置网关)
除了A不能发送数据给C和D,其他都正常。
- A类地址:网络地址的最高位是0的地址
- 网络ID:第1部分
- 第1部分的取值范围为1~126(0不能用,127作为保留网段/环回地址)
- 主机ID:第2、3、4部分
- 对于每个A类网络,其容纳的最大主机数量为256×256×256-2=166777214 (主机ID全0的地址为网络地址,主机ID全1的地址为广播地址)
- 子网掩码:255.0.0.0 (默认)
- B类地址:网络地址的最高位是10的地址
- 网络ID:第1、2部分
- 第1部分的取值范围为128(1 000 0000)~191(1011 1111)
- 主机ID:第3、4部分
- 对于每个B类网络,其容纳的最大主机数量为256×256-2=65534
- 子网掩码:255.255.0.0(默认)
- C类地址:网络地址的最高位是110的地址
- 网络ID:第1、2、3部分
- 第1部分的取值范围为192(1100 0000)~223(1101 1111)
- 主机ID:第4部分
- 对于每个C类网络,其容纳的最大主机数量为256-2=254
- 子网掩码:255.255.255.0(默认)
- D类地址:网络地址的最高位是1110的地址(多播地址/组播地址)
- 第1部分的取值范围为224(1110 0000)~239(1110 1111)
- 组播地址没有子网掩码
- E类地址:网络地址的最高位是11110的地址
- 第一部分的取值范围为240~254,保留为今后使用
- 注:本书并不讨论该类地址(无需了解)
本机共享资源的建立 → 本机共享资源的访问 → 本地共享资源的取消
- 问题引入:IP地址传统的分类方法 à 地址浪费
- Case1:假设一个网段有200台计算机,分配一个C类网络212.2.3.0 255.255.255.0。可见,可用的地址范围212.2.3.1~212.2.3.254(254个可用地址),虽然没有全部用完,这种情况还不算是极大浪费(预留地址给新增计算机使用)。
- Case2:假设一个网段中有400台计算机,分配一个C类网络,地址就不够用了。此时,如果分配一个B类网络131.107.0.0 255.255.0.0,可用的地址范围131.107.0.1~131.107.255.254(56634个可用地址),从而造成了极大浪费。
- 解决方案:子网划分 à 将现有网段的主机位借用做网络位(子网位),划分出多个子网。子网划分的任务包括两部分:
- 确定子网掩码的长度
- 确定子网中第一个可用的IP地址和最后一个可用的IP地址
等长子网划分
等长子网划分:将一个网段等分成多个网段,也就是等分成多个子网。
- C类网络子网划分:
- 1个C类网络等分为2个子网:将子网掩码往右移动一位
- 子网A、B的子网掩码:255.255.255.128
- 子网A可用的地址范围:192.168.0.1(0000 0001)~192.168.0.126(0111 1110)
- 子网B可用的地址范围:192.168.0.129(1000 0001)~192.168.0.254(1111 1110)
- 1个C类网络等分为4个子网:将子网掩码往右移动两位
- 子网A~D的子网掩码:255.255.255.192
- 子网A可用的地址范围:192.168.0.1(0000 0001)~192.168.0.62(0011 1110)
- 子网B可用的地址范围:192.168.0.65(0100 0001)~192.168.0.126(0111 1110)
- 子网C可用的地址范围:192.168.0.129(1000 0001)~192.168.0.190(1011 1110)
- 子网D可用的地址范围:192.168.0.193(1100 0001)~192.168.0.254(1111 1110)
- 1个C类网络等分为8个子网:将子网掩码往右移动三位
- 子网A~H的子网掩码:255.255.255.224
- 子网A可用的地址范围:192.168.0.1(0000 0001)~192.168.0.30(0001 1110)
- 子网B可用的地址范围:192.168.0.33(0010 0001)~192.168.0.62(0011 1110)
- 子网C可用的地址范围:192.168.0.65(0100 0001)~192.168.0.94(0101 1110)
- 子网D可用的地址范围:192.168.0.97(0110 0001)~192.168.0.126(0111 1110)
- 子网E可用的地址范围:192.168.0.129(1000 0001)~192.168.0.158(1001 1110)
- 子网F可用的地址范围:192.168.0.161(1010 0001)~192.168.0.190(1011 1110)
- 子网G可用的地址范围:192.168.0.193(1100 0001)~192.168.0.222(1101 1110)
- 子网H可用的地址范围:192.168.0.225(1110 0001)~192.168.0.254(1111 1110)
- B类网络子网划分:
- 1个B类网络等分为2个子网:将子网掩码往右移动一位
- 子网A、B的子网掩码:255.255.128.0
- 子网A可用的地址范围:131.107.0.1~131.107.127.254
- 子网B可用的地址范围:131.107.128.1~131.107.255.254
- A类网络子网划分:
- 1个A类网络等分为4个子网:将子网掩码往右移动两位
- 子网A~D的子网掩码:255.192.0.0
- 子网A可用的地址范围:42.0.0.1~42.63.255.254
- 子网B可用的地址范围:42.64.0.1~42.127.255.254
- 子网C可用的地址范围:42.128.0.1~42.191.255.254
- 子网D可用的地址范围:42.192.0.1~42.255.255.254
变长子网划分
- 规律:如果一个子网地址块是原来网段的 ,子网掩码就在原网段的基础上后移n 位,不等长子网,子网掩码也不同。
- 点到点网络:路由器之间的互连为点到点连接,也需要一个单独的网段(2个可用地址)。
- 每个子网是原来网络的12×12×12×12×12×12 ,即
- 子网掩码向后移动6位,即255.255.255.252。
- 子网D的可用地址:192.168.0.1(0000 0001)~192.168.0.2(0000 0010)(刚好有2个可用地址)
- 子网E的可用地址:192.168.0.5(0000 0101)~192.168.0.6(0000 0110)(刚好有2个可用地址)
练习题
- 判断192.168.0.101/26所属的子网。
- 判断192.168.0.101/27所属的子网。
- 思考1:假设一共有200台计算机,其中一个网段有140台,另一个网段有60台。能否通过子网划分,将1个C类网络进行划分,得到满足要求的2个子网?
- 不能,通过子网划分(无论是等长还是变长),1个C类网络所能得到的子网的最大容纳数量为128,不满足140的要求。此时,只能通过划分2个C类网络来达到上述要求(此种浪费无法避免)。
- 问题引入:最初,网络中有200台电脑,因此需要分配一个C类网络(子网掩码为255.255.255.0)。后来,网络中又新增200台电脑,此时原本的C类网络中的剩余IP地址数量不够,因此需要重新分配一个C类网络(子网掩码为255.255.255.0)。值得注意的是,计算机A和计算机B并不在同一个网段中,相互通信时需要经过路由器的转发,效率低下(路由器的一个接口可以设置两个地址)。从逻辑上看,图中存在两个网段(子网掩码不同);从物理连接上看,图中仅存在一个网段(两个交换机之间并没有被路由器隔开)。有没有更好的办法,让这两个C类网段的计算机认为在一个网段?
- 解决方案:将192.168.0.0/24和192.168.1.0/24 两个C类网络合并
- 合并后的网段的可用地址:192.168.0.1~192.168.1.254
- 注:合并之后,IP地址192.168.0.255/23(主机位不是全1)就可以给计算机使用
- 规律:子网掩码往左移1位,能够合并两个连续的网段
- 注意事项:不是任何连续的网段都能合并
- 案例1:尽管192.168.1.0和192.168.2.0两个网段是连续的,但是仅仅将子网掩码向左移动1位,并不能够合并网段(此时网络位还是不同)。进一步地,将子网掩码向左移动2位,可以将上述两个网段合并。但是,向左移动2位子网掩码,实际上是合并了4个网段。
- 结论:子网掩码左移1位能够将能够合并两个网段;左移2位,能够合并四个网段;左移3位,能够合并8个网段。
- 判断连续的2个网段是否能够合并,只要第一个网络号能被2整除,就能够通过左移1位子网掩码合并。
- 判断连续的4个网段是否能够合并,只要第一个网络号能被4整除,就能够通过左移2位子网掩码合并将这4个网段合并。
- 判断连续的8个网段是否能够合并,只要第一个网络号能被8整除,这8个连续的网段就能够通过左移3位子网掩码合并。
练习题
练习题1:子网、超网的区分
- 182.2.1.2 255.255.255.0:划分了子网的一个B类地址
- 第一部分为182 à 该地址为B类地址
- B类地址的子网掩码为255.255.0.0 à 题中子网掩码右移 à 该地址为B类地址划分子网后的地址
- 12.2.1.2 255.255.0.0:划分了子网的一个A类地址
- 第一部分为12 à 该地址为A类地址
- A类地址的子网掩码为255.0.0.0 à 题中子网掩码右移 à 该地址为A类地址划分子网后的地址
- 192.2.1.2 255.255.0.0:超网合并了256个C类网段
- 第一部分为192 à 该地址为C类地址
- C类地址的子网掩码为255.255.255.0 à 题中子网掩码左移 à 该地址为C类地址合并网段后的地址
- 结论:判断一个网段是超网还是子网
- 通过左移子网掩码合并多个网段,右移子网掩码将一个网段划分成多个子网,使得IP地址打破了传统的A类、B类、C类的界限。
- Step1:判断该网段是A类网络、还是B类网络、还是C类网络,默认A类子网掩码/8,B类子网掩码是/16,C类子网掩码是/24。
- Step2:如果该网段的子网掩码比默认子网掩码长,则是子网;如果该网段的子网掩码比默认子网掩码短,则是超网。
练习题2:将IP地址拖拽到正确的位置。
练习题3:下列哪些IP地址能够分配给计算机使用?(双选题)
- 205.7.8.32/27:主机号全0,不能给计算机使用
- 191.168.10.2/23:可以给计算机使用
- 127.0.0.1:本地回环地址,不能给计算机使用
- 224.0.0.10:第一部分为224,为多播地址,不能给计算机使用
- 203.123.45.47/28:主机号全1,不能给计算机使用
- 10.10.0.0/13:可以给计算机使用
IP地址的编址方法
- 分类的IP地址:最基本的编址方法,在1981年就通过了相应的标准协议。
- 子网的划分:对最基本的编址方法的改进,其标准[RFC 950]在1985年通过。
- 构成超网:比较新的无分类编址方法。1993年提出后很快就得到推广应用。
- 问题引入:在计算机网络领域,网络层应该向运输层提供怎样的服务(“面向连接”还是“无连接”)曾引起了长期的争论。争论焦点的实质就是:在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统?
- 观点1(虚电路服务):
- 这种观点认为,应借助于电信网的成功经验,让网络负责可靠交付,计算机网络应模仿电信网络,使用面向连接的通信方式。
- 面向连接:通信之前先建立虚电路(Virtual Circuit),以保证双方通信所需的一切网络资源。
- 网络通信建立的虚电路是逻辑连接,分组都沿着这条逻辑连接按照存储转发方式传送,而并不是真正建立了一条物理连接。
- 电话通信建立的电路是物理连接(真正的连接)。
- 分组交换的虚连接和电路交换的连接只是类似,但并不完全一样。
- 网络层提供可靠服务:如果再使用可靠传输的网络协议,就可使所发送的分组无差错、按序到达终点、不丢失、不重复。
- 观点2(数据报服务):
- 无连接:网络在发送分组时不需要先建立连接。每一个分组(即IP数据报)独立发送,与其前后的分组无关(不进行编号)。
- 网络层不提供可靠服务:网络层不提供服务质量的承诺,即所传送的分组可能会出现差错、丢失、重复和乱序,当然也不保证分组传送的时限。
- 路由器直接丢弃传输过程中出错的数据包
- 如果网络中待发的数据包太多,路由器处理不了就直接丢弃
- 路由器不判断数据包是否重复
- 路由器不确保数据包按发送顺序到达终点
- 网络层提供数据包服务:网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
- 观点1(虚电路服务) VS. 观点2(数据报服务):
- 网络层最终选择提供的服务:数据报服务(重要!!!)
- 网络层功能就是给传输层协议提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
- 通俗一点来讲,网络中的路由器为每一个数据报单独的选择转发路径,网络层不提供服务质量的承诺。
补充知识点:网络畅通的条件
计算机网络畅通的条件:数据包能去能回,道理很简单、也很好理解,却是我们排除网络故障的理论依据。
- Case1:目标主机不可达 à 数据包没有到达目的地
- 原因:沿途路由器不存在到达目标网段的路由
- Case2:请求超时 à 数据包已经到达目的地,但是返不回来
- 原因1:沿途路由器不存在到达源网段的路由
- 原因2:目标主机B关机了
- 原因3:目标主机B开启了防火墙
- 网络排错:先检查数据包是否能够到达目标网络,再检查数据包是否能够返回来
- Step1:检查计算机是否配置了正确的IP地址、子网掩码、网关
- Step2:逐一检查沿途路由器上的路由表,查看是否有到达目标网络的路由
- Step3:逐一检查沿途路由器上的路由表,查看是否有数据包返回所需的路由
- 来源1(直连路由Direct Route):路由器自动发现的路由信息
- 原理:根据路由器接口的IP地址和子网掩码,自动获得到达该网段的下一条地址
- 路由信息:
- 网段(Destination):接口IP地址和子网掩码“相与”
- 子网掩码(Mask):接口的子网掩码
- 下一条地址(NextHop):接口IP地址
- 网络设备启动之后,当路由器接口状态为UP时,路由器就能够自动发现去往自己接口直接相连的网络的路由。
- 来源2(静态路由Static Route):在路由器上手工(命令)配置的路由信息
- 说明:对于路由器来说,它只知道自己直连的网段。对于没有直连的网络,管理员需要手工添加到这些网段的路由
- 适用场景:规模较小的网络、不怎么变化的网络
- 来源3(动态路由Dynamic Route):路由器使用动态路由协议(RIP、OSPF)而获得路由信息
- 说明:同一个路由器可以同时运行多种动态路由协议
- 适用场景:规模较大的网络,能够针对网络的变化自动选择最佳路径
- 路由优先级:0~255
- 规定:路由优先级的值越小,则路由优先级就越高
- 工作原理:当存在多条目的地址/掩码相同,但来源不同的路由时,则具有最高优先级的路由便成为了最优路由,并被加入到路由表中,而其他路由则处于未激活状态,不显示在IP路由表中。
- 注:设备上的路由优先级一般都具有缺省值。不同厂家的设备上对于优先级的缺省值的规定可能不同。(下图为华为路由器的默认优先级)
- 注意事项:
- 点到点链路的静态路由:下一跳可以写路由器的接口名,也可以写下一跳地址
- 以太网链路的静态路由:最好写下一跳地址
简化路由表1:路由汇总/路由汇聚
- 问题引入:如果Internet(全球最大的互联网)上的路由器把全球所有的网段都添加到路由表,则路由表将会非常庞大。路由器每转发一个数据包,都要检查路由表为该数据包选择转发接口,庞大的路由表势必会增加处理时延。
- 解决方案:通过合理的地址规划,可以通过路由汇总简化路由表。将物理位置连续的网络分配地址连续的网段,就可以在边界路由器上将远程的网络合并成一条路由,这就是路由汇总。
- 案例分析1(正常情况):
- 路由汇总前:路由表非常庞大(管理员需要逐条配置,工作量大)
- 对于北京市的路由器R1:需要添加到石家庄市中每个网段的路由;对于北京市的其他路由器:需要重复上述操;添加的总路由条数 = 北京市路由器的个数 * 石家庄市网段的个数
- 对于石家庄市的路由器R2:需要添加到北京市中每个网段的路由;对于石家庄市的其他路由器:需要重复上述操作;添加的总路由条数 = 石家庄市路由器的个数 * 北京市网段的个数
- 路由汇总后:路由表得到精简
- 案例分析2(特殊情况):路由汇总的例外
- 问题引入:石家庄市路由器的所在网段都是172.16网段,但是172.16网段并不都在石家庄市(北京市也存在该网段)
- 解决方案:到石家庄的网络照样可以汇总成一条路由,但是需要针对例外的那个网段单独添加路由。
- 分析:当计算机A给计算机B(192.168.10.5/24)发送数据时,此时路由器R1中存在2条匹配的路由(究竟选择哪一个)。根据最长前缀匹配算法(见下),路由器会选择第②条路由进行转发,即下一条地址为10.0.1.2,而不是10.0.0.2。
- 最长前缀匹配(Longest Prefix Match)/最长匹配/最佳匹配:在IP协议中,路由器用于在路由表中进行选择的一种算法。因为路由表中的每个表项都指定了一个网络,所以一个目的地址可能与多个表项匹配。最明确(子网掩码最长)的一个表项就叫做最长前缀匹配。
- 示例:在路由器R1中添加如下的3条路由
- [R1]ip route-static 172.0.0.0 255.0.0.0 10.0.0.2 --第1条路由
- [R1]ip route-static 172.16.0.0 255.255.0.0 10.0.1.2 --第2条路由
- [R1]ip route-static 172.16.10.0 255.255.255.0 10.0.3.2 --第3条路由
- 路由器R1收到一个目标地址是172.16.10.12的数据包,会使用第3条路由转发该数据包。路由器R1收到一个目标地址是172.16.7.12的数据包,会使用第2条路由转发该数据包。路由器R1收到一个目标地址是172.18.17.12的数据包,会使用第1条路由转发该数据包。
- 注:CIDR灵活地将对连续的子网进行精确合并
简化路由表2:默认路由
- 全球最大的网段:子网掩码越短,主机位越多,该网段的地址数量就越大。如果想让一个网段包括全部的IP地址,就要求子网掩码短到极限,最短就是0,子网掩码变成了0.0.0.0,这也意味着该网段的32位二进制形式的IP地址都是主机位,任何一个地址都属于该网段。
- [R1]ip route-static 0.0.0.0 0.0.0.0 10.1.1.2 --默认路由
- [R1]ip route-static 172.0.0.0 255.0.0.0 10.0.0.2 --第1条路由
- [R1]ip route-static 172.16.0.0 255.255.0.0 10.0.1.2 --第2条路由
- [R1]ip route-static 172.16.10.0 255.255.255.0 10.0.3.2 --第3条路由
- 默认路由:在路由器中添加到0.0.0.0 0.0.0.0网段的路由
- 作用:当路由器没有为数据包找到更为精确匹配的路由时,使用默认路由作为最后匹配的一条路由。
- 适用场景:使用默认路由作为指向Internet的路由
- 问题引入1:默认路由造成路由环路(环路拓扑)
- 计算机A与计算机B通信:
- A给B发送数据:A → RA → RB → RC → RD → B
- B给A发送数据:B → RD → RE → RF → RA → A
- 此种情况下,网络实现了负载均衡
- 计算机A与计算机C通信:
- A给C发送数据:A → RA → RB → RC → RD → RE → RF → B(此条路径并非最佳路由)
- C给A发送数据:C → RF → RA → A
- 计算机A与不存在的地址通信(ping):A → RA → RB → RC → RD → RE → RF → RA → ……(路由环路)
- 问题引入2:默认路由造成路由环路(直连拓扑)
- 解决方案:TTL字段(Time To Live,生存时间)
- 原理:计算机发送数据包时,都会设置初始的TTL。数据包每经过一个路由器,TTL就会减1,等到TTL减为0时,路由器就会丢弃该数据包。
- Windows:TTL=128(默认)
- Linux:TTL=64(默认)
- 可视化TTL:
- 案例1:ping网关(沿途不经过任何路由器,故TTL没有任何变化)
- 案例2:ping非网关(沿途经过路由器,故TTL会递减)
- 案例3:ping非网关(人工指定TTL,不使用默认值,观察TTL过期现象)
- 案例4:跟踪发送数据所经过的路由
小结
- 末端路由器使用默认路由精简路由表
- 骨干网中的路由器使用路由汇总精简路由表