第三层:网络层
- Overview of the Network Layer
- IP Addresses and Subnets
- Layer 3 Devices
- ARP Protocol
- Network Layer Services
- Routed and Routing Protocols
- VLSM
- ICMP
- 为什么我们不用硬件地址进行通信?
- (设备数量问题)因为设备比较多,供应商也比较多
- (规格问题)不同供应商的解决方案不同,所以使用硬件地址进行通信的通用性比较低。
- (寻址问题)全球设备太多,如果使用硬件设备,那么进行定位比较复杂
- 因为如上情况我们选择使用IP地址(逻辑地址)。
一、网络层概述
1. 第三层职责
- 通过网络移动数据
- 使用分层寻址 hierarchical addressing方案(与MAC寻址相反,后者平坦)
- 分层寻址(Hierarchical Addressing)是一种网络地址分配和管理方法,它将地址空间划分为多个层次,每个层次都有不同的作用和范围(网络+子网+主机)。
- 分段网络(segment network)和控制流量(control flow of traffic)
- 根据网络的大小和流量需求,将大型网络分割成多个较小的子网络(子网)。这些子网通常使用子网掩码来划分。
- 减少交通拥堵(Reduce congestion)
- 与其它网络通信
2. Devices
- Routers(重点!)
- 互连网段或网络(不同网段的分割)
- 根据IP地址做出合理的决定
- 确定最佳路径(根据路由表)
- 将数据包从入站端口切换到出站端口
二、IP地址和子网划分(IP Addresses and Subnets)
1. Layer 3 Packet/Datagram 第三层数据报格式
- IP地址在报文中占据一部分(一个IP地址32bit)
2. IPv4报文主要结构
- 首部部分:上面蓝框部分的整体
- 固定部分+可变部分
- 版本号:占 4 bit,指IP协议的版本。目前的 IP 协议版本号为 4 (即 IPv4)(6也就对应IPv6)
- 首部长度:占 4 bit,可表示的最大数值是15个单位(一个单位为 4 字节), 因此IP的首部长度的最大值是60字节(15个单位)。
- 首部长度不确定,所以需要进行标识
- 4bit->15个单位;
- 首部长度的32 bit为一行,也就是4个字节为一个单位
- 服务类型:占8 bit,用来获得更好的服务,这个字段以前一直没有被人们使用。
- 总长度:占 16 bit,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节(由于放到帧里面,所以大多数不比1500字节长)。总长度必须不超过最大传送单元 MTU。
- 标识(identification):占 16 bit,它是一个计数器,用来产生数据报的标识。
- 标志:占 3 bit,最高位为 0;
- MF(More fragement):MF 为 0 表示最后一个分片;1 是指后面还有分片
- DF(Don’t fragement):是否允许做分片,0 允许做分片,1 不允许做分片
- 片偏移 (13 bit) 指出:较长的分组在分片后某片在原分组中的相对位置。
- 片偏移以8个字节为偏移单位
- 分片:由于网络中传输的数据报可能会超过某些网络的最大传输单元(MTU),因此需要将较大的数据报分成多个较小的片段进行传输。
- 片偏移字段帮助接收方正确地重组这些片段。
- 片偏移以8个字节为偏移单位
- 报文分片举例
- 生存时间:8 bit,记为 TTL (Time To Live),表示数据报在网络中可通过的路由器数的最大值。
- 是通过计数的方式来进行统计
- 最大值是255(最多经过255个路由器)
- 路由器每转发一次,就会对生存时间-1
- 减小为0后,就会丢弃掉,并且通知给发送方我已经丢弃掉这个报文。
- 防止在环上进行传输,避免由于回路问题,造成过大的网络资源浪费
- 协议:8 bit,协议字段指出此数据报携带的数据使用何种协议 ,以便目的主机的IP层将数据部分上交给哪个处理过程
- 首部检验和:(16 bit)只检验数据报的首部,不包括数据部分。
- 这里不采用 CRC 检验码而采用简单的计算方法。算法过程如下(比较形式化的问题,并不能解决数据报错误的形式)
- 这里不采用 CRC 检验码而采用简单的计算方法。算法过程如下(比较形式化的问题,并不能解决数据报错误的形式)
- 源地址和目的地址都各占 4 字节(32 bit)
3. 网络层地址 Network Layer Addresses
- IP地址为32位长(32 bits long)
- 它们以点分十进制格式表示为四个(八位)字节:133.14.17.0
- 点分十进制:用十进制表示每个字节的值,然后用点(.)分隔这些字节
- IP地址包含两个组成部分:
- 网络ID(The network ID)
- 由ARIN(American Registry for Internet Numbers,www.arin.net)分配
- 标识设备所连接(attached)的网络
- 可以由前三个八位位组(octets)中的一个,两个或三个来标识
- 主机ID(The host ID)
- 由网络管理员分配
- 识别该网络上的特定设备
- 可以由最后三个八位位组中的一个,两个或三个来标识
- 网络ID(The network ID)
4. IP地址
- 不同的类地址为地址的网络部分和主机部分保留不同数量的位
- N是Net ID,H 是 Host ID
- A: NHHH
- B: NNHH
- C: NNNH
4.1 分类
- IP 地址主要通过第一个字节进行划分
- 0–127 (0xxxxxxx):Class A address
- 128-191 (10xxxxxx):Class B address
- 192–223 (110xxxxx):Class C address
- 224–239 (1110xxxx):Class D – Multicast 多播地址
- 240–255 (1111xxxx):Class E - Research 研究地址
- host 不能全取 0,也不能全取 1。
- 全取 0 时用来标识网段地址
- 全取 1 时用来标识网段的广播地址
4.2 主机(Hosts)的数量
- 每个类别的最大主机数量各不相同。(不包含网络号)
- A 类拥有 16,777,214 个可用主机(2^24 - 2)
- B 类具有 65,534 个可用主机(2^16 - 2)
- C 类具有 254 个可用主机(2^8 -2)
- 为什么每一类地址中都要减去 2?
- 每个网络中的第一个地址都保留用于该网络地址(全取1)
- 最后是.0
- 最后一个地址是为广播地址保留的(全取1)。
- 最后是.255
- 每个网络中的第一个地址都保留用于该网络地址(全取1)
4.3 保留(Reserved)地址
- 网络地址:在地址的主机部分中以二进制 0 结尾的 IP 地址
- A 类网络地址示例:113.0.0.0
- 网络上的主机只有具有相同网络 ID 的其他主机才能直接通信。(用来确定是不是在一个网段里面)
- 广播地址:用于将数据发送到网络上的所有设备。(一般是一个网段之间的)
- 广播 IP 地址在地址的主机部分中以二进制 1 结尾。
- B 类地址的广播地址的示例:176.10.255.255(decimal 255 = binary 11111111)
- 类别示例
- Class A
- 99.0.0.0: a reserved network number
- 99.255.255.255: a broadcast number
- Class B
- 156.1.0.0: a reserved network number
- 156.1.255.255: a broadcast number
- Class C
- 203.1.17.0: a reserved network number
- 203.1.17.255:a broadcast number
私有地址空间 Private Address Space
- 私有IP地址是指在内部网络中使用的IP地址,这些地址在互联网中是不可路由的。
- 私有IP地址用于局域网(LAN)中的设备之间的通信,避免了公共IP地址的浪费。
- 私有IP地址与公网IP地址的区别:
- 公网IP地址是唯一的、全球可访问的IP地址,用于设备之间的互联互通。
- 私有IP地址是保留给内网使用的,不会在互联网中传递,因此它们在全球范围内不唯一。多个不同的私有网络可以使用相同的私有IP地址范围。
- 私有IP地址范围由IANA(互联网号码分配机构)定义,常见的私有IP地址范围包括:
- 10.0.0.0 - 10.255.255.255
- 172.16.0.0 - 172.31.255.255
- 192.168.0.0 - 192.168.255.255
- **IP地址耗尽(IP address depletion)**及其解决方案:
- NAT(网络地址转换)
- 通过在路由器或防火墙上将私有网络的IP地址转换为公网IP地址,使得多个内网设备可以共享一个公网IP地址访问互联网。
- CIDR(无类别域间路由)
- 一种更灵活的IP地址分配方法,它突破了传统的类A、类B、类C的限制,通过可变子网掩码(VLSM)来实现更精细的IP地址划分,从而提高IP地址的利用率,延缓了IPv4地址的枯竭。
- IPv6
- 是IPv4的继任者,采用128位的地址格式
- NAT(网络地址转换)
5. Subnet(子网)
- 网络管理员有时需要将网络划分为较小的网络,称为子网 subnet,以提供额外的灵活性.
- 从主机字段借来的位被指定为子网字段(Subnet Fields)
1 | 借的是Host字段从左往右开始数的位数!! |
5.1.Basics of Subnetting
- 子网是网络的更小划分,提供地址灵活性。
- 子网地址是本地分配的,通常由网络管理员分配。
- 子网减少了广播域。
5.2.How many bits can I borrow(可以借多少位给子网)
- 可以借用的最小位数是2。
- 如果只借用 1 位以创建一个子网,那么将只有一个网络号<.0 网络>和广播号<.1 网络>,没有可以使用的专用网络。
- 两位的时候,01 和 10 给 Host,00 表示网络 ID,11 表示广播地址
- 全 0 可能导致误判
- 最大位数:保留至少2位主机号的任何数字
- 原因也同上
- 原因也同上
5.3.子网划分的副产品:地址浪费Waste Addresses
- 我们必须在所需的子网数,每个子网可接受的主机以及地址的浪费之间取得平衡(strike a balance)。
- hostID 里面的全 0 和全 1 不能使用
- subnet 不可以使用全 0 和全 1
- 借用 4 位是最高效率的,提升了划分灵活性,影响了效率
- C类例图
- (C类) 借用n位,则有了2^n-2个子网,每个子网可以有2^(8-n)-2台主机(host)
- 主机总数量=子网数×每个子网的主机数
- 使用率=主机总数量/255
5.4 Subnet Mask子网掩码
- 把网络位全赋值为 1,host 位全部赋值为 0,这样我们就明白哪些位上面是 net,哪些位上面是 host
- 别名:扩展网络前缀
- 定义我们用来构建网络的位数,以及描述主机地址的位数
1 | - Class A 255.0.0.0 |
6. 计算子网
例子:
- 我们将对IP地址进行子网划分:
- 223.14.17.0
- 需要:13个子网,每个子网10台主机
Step 1
- 确定默认的子网掩码
- C类:192~223,所以此IP地址在C类
- C 类网络的默认子网掩码是:255.255.255.0
Step 2
- 通过从主机 ID 借用位来计算子网和主机的实际数量
- 13 subnets
- 10 hosts on each subnet
- 2^4-2=14,由此:子网借4位
- 每个子网10个主机, 也是至少需要4位(2^4 - 2 =14), 主机位数为4位
- 我们对每一个子网需要借用 4 位来满足一个子网有 10 台可用的主机。
Step 3
- 产生16个子网和每个子网16台主机
- 对于借用的 4 位,每个位可以是 1 或 0,从而有 16 种可能的组合。
- 4 个剩余主机位也是如此。
- 【重要】每个子网上只有14个可用子网和14台主机
- 因为不能使用第一个和最后一个子网。(即全 0 和全 1)
- 因为不能使用每个子网中的第一个和最后一个地址。
- 对于每个,一个是广播地址,一个是网络地址。
Step 4
- 确定子网掩码。
- 其中X表示用于子网划分的借用位。
- 将X的位值相加,得到子网掩码的最后一个八位字节的十进制值:128 + 64 + 32 + 16 = 240
- 也等于255-15
- 子网掩码是:255.255.255.240
- 子网掩码用于显示IP地址中的子网和主机地址字段
Step 5
- 确定主机地址的范围
- 16个子网,14个可用子网
- 每个子网16个主机,14个可用主机
7. 计算子网网络地址
- 第一步:将 IP 主机地址转换为二进制。
- 第二步:将子网掩码转换为二进制。
- 第三步:使用布尔运算符 AND 将两者进行运算。
- 第四步:将网络二进制地址转换为点分十进制。
- 这是子网的网络地址
- 它可以帮助确定路径(即发送到哪一个具体的子网(网段)):用来确定是否是一个网段,是否可以通过网关进行转发
7.1 路由器与IP地址
- 为了找到子网的网络 ID,路由器必须采用 IP 地址和子网掩码,并且在逻辑上将它们取与
- 131开头,说明是B类
- 上图中的子网掩码 255.255.255.0 是 255.255.0.0 借用了 8 位产生的(而不要理解成为 C 类地址的子网掩码)
实践:IP寻址问题
- 给定195.137.92.0并且需要8个可用子网,请找到子网号,主机号范围和子网广播号。
- 借用2位会产生2个可用子网,借用3位会产生6个可用子网,因此我们借用4位才能获得14个可用子网,其中我们需要8个可用地址。
- 这将使子网掩码为255.255.255.240。 因此,网络号为195.137.92.NNNN HHHH,其中Ns代表网络扩展位(子网),Hs代表主机号。
- 接下来,我们必须为子网编号。 4位二进制数有16种组合,但它们在最后一个八位位组中保留其位置值。
- 借用4-6位都可以,因为并没有规定子网中主机数量。
- 为什么是6位是因为一个子网中最少用2位给主机。
三、第三层设备
- 路由器
- 路由器2个功能:
- 路径选择
- 路径转发
1. 路径选择 Path determination
- 路由器根据链路带宽、跳数、延迟等因素,选择数据包到达目的地路径中的下一跳。
2. IP 地址
- IP地址在软件中实现,指的是设备所在的网络。
- IP地址是网络中每个设备的唯一标识符。每个设备(例如电脑、手机、服务器等)在连接到网络时都会被分配一个IP地址。
- IP地址通过软件协议来进行分配、识别和管理,而非硬件本身决定的。
- 路由器连接网络,每个网络必须有一个唯一的网络号,以确保路由成功。
- 路由器根据IP地址和子网掩码来判断数据包应该发送到哪个网络。
- 唯一的网络号被包含在分配给连接到该网络的每个设备的IP地址中。
- 假设一个设备的IP地址是 192.168.1.5,并且子网掩码是 /24,这表示:
- 网络号是 192.168.1.0
- 主机号是 5
- 所有属于同一网络的设备的IP地址都会共享相同的网络号
- 假设一个设备的IP地址是 192.168.1.5,并且子网掩码是 /24,这表示:
3. 路由器端口 Router Interface
- 路由器端口记录了网段的 IP 地址(和连接的地方是相同的)
- 在计算需要分配的端口总数时,注意路由器端口也需要被计算上
4. 路由器发送的过程 Router function
- A5 主机发送报文给 B5 主机,这个报文的 IP 地址是 B5 所在的 IP 地址,形成帧,然后放上总线。
- 路由器剥离由帧携带的数据链路层头部。
- (数据链路层头部包含源和目的地的MAC地址。)
- (数据链路层头部包含源和目的地的MAC地址。)
- 路由器收到帧,然后进行理解,看到报文,知道目的地是B5(解封装)
- 检查网络层地址以确定目的网络。
- 检查自己的路由表,找到目的地对应的端口
- 查询其路由表以确定将使用哪个接口发送数据,以便到达目的网络。
- 在B1端口进行转发,形成新的帧
- 通过接口B1发送数据,路由器会将数据封装在适当的数据链路层帧中。
- 形成一个全新的帧,这个帧的MAC地址是B1的MAC的地址。
5. 路由器端口示例
- 接口是路由器连接到网络的方式,在IP路由中也可以称为端口。
- 每个接口必须有一个单独的、唯一的网络地址。
- 比如上图中 S1 和 S2 不能是相同的 IP 地址
- 路由器的连接的网段一定要是不同的
6. IP地址分配 IP address assignment
- 静态地址分配(Static addressing)
- 为每个设备配置一个IP地址。
- 你应该保持非常详细的记录,因为使用重复的IP地址可能会导致问题。
- 动态地址分配(Dynamic addressing)
- 有几种不同的方法可以用来动态分配IP地址:
- RARP: 反向地址解析协议(Reverse Address Resolution Protocol)
- BOOTP: 引导协议(BOOTstrap Protocol)
- DHCP: 动态主机配置协议(Dynamic Host Configuration Protocol)
四、ARP Protocol
1. Address Resolution Protocol(ARP)地址解析协议
- 为了使设备能够通信,发送设备需要目标设备的IP地址和MAC地址。
- ARP使计算机能够找到与IP地址关联的计算机的MAC地址。
2. ARP示例
- source主机访问destination
- 不知道目的主机在哪里
3. ARP表的缓存
- 可以通过lookup命令进行。
- 在RAM里面,如果ARP没有本条目的对应MAC地址。
- MAC地址在ARP中是有时效性的。到时间不更新不激活就会删除
4. ARP 操作
- 使用ARP机制
- 上图中是一个示意图
- 此时ARP table中没有缓存
- 图的一个问题:目的MAC地址应该在前面,源MAC地址在后面
- 步骤如下
4.1 ARP request
- 向目的方请求MAC地址
2。 命令如图:广播询问找谁是这个主机,你的MAC地址是啥 - 将MAC地址设置为全1,作为广播发送
4.2 Checking
- 10.0.2.5发现不是自己的主机,那么解析到这里丢掉就行,同样会记录下来对应的发送方的MAC地址。(攻击原理)
- 10.0.2.9发现自己的MAC地址,然后形成ARP应答
- 同时10.0.2.9会同时记录下A主机的MAC地址,更新到自己ARP地址中去(会记录对方的)
4.3 ARP reply
- 向A主机进行MAC地址应答
4.4 Caching
- A的主机将刚刚得到的目标主机的MAC地址和IP地址的映射关系存储到ARP Table中
- 然后再次形成一个数据帧发送出去即可。
总结 ARP协议工作原理:
- ARP请求:
- 数据链路层中目标地址(MAC地址)未知, 网络层中目标地址(IP地址)已知, 广播询问IP地址为目标地址(IP地址)的主机
- 你的MAC地址是多少
- ARP检查
- 目标主机发现, 这个IP地址就是自己
- ARP回复
- 目标主机将自己的MAC地址回复给源主机
- ARP缓存
- 将刚刚得到的目标主机的MAC地址和IP地址的映射关系存储到ARP表中
5. ARP: Destination local 目的地址为本地
- 当目标设备在本地网络中时,ARP协议用于解析目标设备的MAC地址。
- 发送设备会广播ARP请求,询问目标IP地址 对应的MAC地址。
- 目标设备收到ARP请求后,会回复其MAC地址。
- 发送设备将目标设备的IP地址和MAC地址映射关系存储在ARP缓存中,以便后续通信使用。
6. ARP: Internetwork Communication 网络交流
- 如何与不在同一物理网段上的设备通信?如下是两种解决方案。
- Default gateway 默认网关
- Proxy ARP 代理ARP
6.1 默认网关 Default gateway:
- 为了使设备能够与另一个网络上的设备通信,必须为其提供一个默认网关。
- 默认网关是路由器上连接到源主机所在网络段的接口的IP地址。
- 为了使设备将数据发送到另一个网络段上的设备地址,源设备将数据发送到默认网关。
6.2 Proxy ARP 代理ARP:
- 代理ARP代理ARP是ARP的一种变体。
- 在源主机没有配置默认网关的情况下,代理ARP可以发挥作用。
- 发送ARP请求,然后路由器给你一个ARP的reply,告诉你MAC地址(一般为本端口的IP地址)
- 源主机发送ARP请求:
- 当源主机没有配置默认网关时,它会发送ARP请求,询问目标IP地址的MAC地址。
- 路由器响应ARP请求:
- 路由器配置了代理ARP功能,会拦截并响应这个ARP请求。
- 路由器会回复其自己的MAC地址,作为目标IP地址的MAC地址。
- 源主机发送数据:
- 源主机接收到路由器的ARP回复后,会将数据发送到路由器的MAC地址。
- 路由器转发数据:
- 路由器接收到数据后,会根据其路由表将数据转发到目标网络上的实际目标设备。
7. ARP: Destination not local
- 路由器会把Router MAC的地址给你(连接本网段的MAC地址)
8. ARP Flowchart ARP流程图
五、网络层服务
1. 面向连接的网络服务 Connection-oriented
- 在数据传输之前先建立连接
1.1 电路交换 Circuit-switched
- 面向连接vs电路交换
- 这两个术语并不相同
- 面向连接:首先与接收方建立连接,然后开始数据传输。
- 电路交换:所有数据包依次通过相同的通道传输,或者更常见的是,通过相同的虚拟电路传输。
2. 无连接的网络服务 Connectionless
- 他们分别separately对待每个数据包。
- IP 是无连接系统。 IP 就是提供无连接的网络服务
- 不要求发送方和接收方在发送前先建立一个连接(不打招呼)。
2.1 数据包交换 Packet switched
- 无连接网络vs数据包交换
- 这两个术语并不相同
- 当数据包从源传输到目的地时,它们可以:
- 切换到不同的路径。
- 到达顺序可能不同。
- 设备会根据多种标准为每个数据包确定传输路径。某些标准可能会因数据包而异。
六、Routed and Routing protocol 路由和路由协议
- 网络协议操作
1. Routed protocol 被动可路由协议
- 为网络层提供支持的协议称为路由协议或可路由协议。
- IP 是网络层协议,因此,它可以通过互联网进行路由。
2. Non-routable protocol 不可路由协议
- 不支持第三层
- 这些不可路由协议中最常见的是 NetBEUI。
- NetBEUI 是一种小型,快速且高效的协议,仅限于在一个网段上运行。
3. 被动可路由协议的寻址 Addressing of a routable protocol
- 路由器连接三个网段(列出来的是网络号)
- 目的主机131.108.2.2
- 将目的主机和掩码进行逻辑AND操作,得到对应的网段,为131.108.2.0
- 请求路由表可以发现,E2端口为目的网段
- 再次将报文封装,转发给对应的主机
- 路由表是存储在内存中的
4. 路由协议分类1:Static and Dynamic 静态和动态
- 静态路由 Static routes:
- 网络管理员在路由器中手动输入路由信息。
- 动态路由 Dynamic routes:
- 路由器可以在运行过程中互相学习信息。
- 使用**路由协议 (routing protocol)**更新路由信息。
- RIP, IGRP, EIGRP, OSPF …
- 人工维护的代价比较大
- 区别:
- 静态路由
- 用于隐藏部分网络。安全(不必进行路由表的交换)
- 测试网络中的特定链接。
- 用于在只有一条路径到目标网络时维护路由表。
- 动态路由
- 维护路由表。
- 以路由更新的形式及时分发信息。
- 依靠路由协议共享知识。
- 路由器可以调整以适应不断变化的网络状况。
- 打开后会启动进程,按照不同的协议,和网上的不同设备学习信息,然后根据算法生成路由表
4.1 Routing protocol 主动路由协议(Routing)
- Routing protocols 确定 routed protocols遵循的到达目的地的路径。
- 是用来构建路由表的,所以叫做routing
- 公平、简单、适应变化等特点
4.2 Routed vs. Routing protocol
- Routed Portocol 用于路由器之间,用来保证路由器之间连通(完成转发),保证路由器有效连通。
- 功能:实际承载和传输数据。
- 示例:IP、IPX等
- Routing Protocol 用于做各自的路由表的生成:路由器彼此交换信息。
- 功能:帮助路由器构建和维护路由表。
- 示例:RIP、OSPF、EIGRP、BGP等。
- Routing Protocol 决定 Routed Protocals
- 简单来说,路由协议(routing)用于帮助路由器决定数据包的最佳传输路径,而路由协议(routed)是实际用于传输数据的协议。
5. 路由协议分类2(动态路由协议):IGP and EGP
- 皆为动态路由
- 内部网关协议 IGP(Interior Gateway Protocols)
- 示例:RIP、IGRP、EIGRP、OSPF
- 用途:在一个自治系统内使用,例如公司网络、学校网络或政府机构网络。
- 外部网关协议 EGP(Exterior Gateway Protocols)
- 示例:EGP、BGP
- 用途:在不同自治系统之间路由数据包,例如跨组织或跨地区的互联网连接。
6. 路由协议分类3(内部网关协议):DVP and LSP
- 距离矢量协议 (Distance-Vector Protocols):RIP, IGRP
- 从邻居的角度查看网络拓扑。
- 添加从路由器到路由器的距离+矢量。
- 距离 (Distance):通常是路由器与目标网络之间的跳数(hop count)。每个跳数代表从一个路由器到另一个路由器的路径。
- 矢量 (Vector):在距离矢量协议中,矢量通常指的是从源路由器到目标路由器的下一跳信息。每个路由器会保存一张路由表,记录到每个目标网络的最短跳数和下一跳路由器。
- 频繁、定期periodic更新。
- 周期性地交换路由信息来计算最佳路径
- 到达每个目标网络的跳数(距离)。
- 用于到达目标网络的下一跳路由器(方向)。
- 周期性地交换路由信息来计算最佳路径
- 将路由表的副本传递给邻居路由器。
- 链路状态协议 (Link State Protocols):OSPF*
- 每个路由器获取整个网络拓扑的共同视图。
- 计算到其他路由器的最短路径。
- 事件触发更新。
- 传递链路状态路由更新到其他路由器。
6.1 距离矢量协议DVP的示例
- 初始的时候,各自持有的是黑色的部分(直连的线路)
- 定时路由表会相互交换给邻居,下一时刻 C 学习到 B,B 学习到 AC,A 学习到 B,在下一刻进行再次的转发。
- DVP 只知道到达一个网段的最少跳数hops(但是不知道最佳路径)。
- 可能导致问题:生成路由回路
6.1.1 RIP (Route Information Protocol)路由信息协议
- 最流行的协议。
- 内部网关协议TGP。
- 距离矢量协议DVP。
- 唯一的度量是跳数hops。
- 最大跳数为15。
- 每30秒更新一次。
- 并不总是选择最快的路径。
- 生成大量网络流量。
- RIP v2是RIP v1的改进版本。
6.1.2 IGRP (Interior Gateway Route Protocol) and EIGRP (Enhanced IGRP)
- IGRP(内部网关路由协议)和EIGRP(增强型IGRP)
- Cisco专有协议。
- 内部网关协议IGP。
- 距离矢量协议DVP。
- 度量由带宽、负载、延迟和可靠性组成。
- 最大跳数为255。
- 每90秒更新一次。
- EIGRP是IGRP的高级版本,是一种混合路由协议。
6.2 链路状态协议LSP的示例
- 下图中的 Routing table 应该叫做初始时刻的 Routing Table(本图的问题)
- 彼此交换连接情况,交换的是Link state而不是路由表,包含 link 的信息,以 NetID 作为主键(无相同网段),包含的是 link 上的路由器邻接关系、链路类型(4 种)、链路带宽,会指定谁连接了谁,这个条目就被称为 Database(表)。这样子就不仅仅知道链路,还知道更多的全局信息。
- LSP 操作过程:
- 相互交换彼此学到对应的 Tpological Database(是全局的信息)
- 之后使用 SPF 算法,以自己为根,通过最短路径优先算法,生成以自己为根的树
- 根据这一个树再生成路由表(了解全局的信息),逻辑是树的逻辑。
- LSP 不是进行定时进行交换的,而是初始的时候进行交换,稳定之后,根据事件触发的时候才会更新数据。
- 更新后发送给所有的路由器,需要将 Database 发送给所有的路由器
- 收到的路由器的,根据 database 更新自己的树,然后再次生成路由表。
- LSP 是指从所有可达的道路上找到代价最小的路径。
- 全局可能会比较大,考虑负载进行处理
- 但是没有路由回路,单域内一般不超过 20 个路由器
- 路由表一般只保存一个最优的转发点的(负载均衡)
6.2.1 OSPF(Open Shortest Path First)开放最短路径优先
- 开放最短路径优先。
- 内部网关协议IGP。
- 链路状态协议LSP。
- 度量由成本、速度、流量、可靠性和安全性组成。
- 事件触发更新。
七、VLSM 可变长度子网掩码
- Variable Length Subnet Mask
1. Classful Routing(类路由)
- 类路由协议要求一个网络使用相同的子网掩码。
- 例如:如果网络是 192.168.187.0,那么它必须使用一个单一的子网掩码,如 255.255.255.0。
- 也就是说,类路由协议不允许在同一个网络中存在多个子网掩码,所有子网都需要使用相同的掩码。
- 类路由的这种特性比较简单,但它不具备灵活性,无法根据需求进行更精细的子网划分。
- 会造成一些浪费
2. VLSM — Variable Length Subnet Mask
- VLSM是一种允许在同一个自治系统内使用不同子网掩码的特性。
- 有效地解决浪费问题
- 为什么要使用VLSM
- VLSM允许一个组织在同一个网络地址空间内使用多个子网掩码。
- 实施VLSM通常被称为“子网的子网”,可以用来最大化地址分配的效率。
- VLSM是帮助弥合IPv4和IPv6之间差距的修改之一。
- 优点
- 高效使用IP地址 Efficient use of IP addresses
- 更好的路由聚合 Better route aggregation
- 支持VLSM的 Routing Protocol:
- 开放最短路径优先Open Shortest Path First (OSPF)
- 集成中间系统到中间系统 Integrated Intermediate System to Intermediate System (Integrated IS-IS)
- 增强型内部网关路由协议 Enhanced Interior Gateway Routing Protocol (EIGRP)
- RIP v2
- 静态路由 Static routing
- 缺点:
- 地址空间的浪费:广播地址和网络号都无法被使用。
- 过去,建议不要使用第一个和最后一个子网。但从Cisco IOS 12.0版本开始,可以使用子网0。
- 从IOS 12.0版本开始,Cisco路由器默认使用子网0。
- 如果想要禁止零子网,使用该指令:
router(config)#no ip subnet-zero()
- 地址空间的浪费:广播地址和网络号都无法被使用。
- 上图解释了子网长度相同会造成怎样的浪费(在路由器所在的子网段我们只需要满足2个主机,也就是需要2位的主机号就可以完成操作)
3. 如何使用VLSM
- 斜杠的含义是指前面多少位保留给网络位
- 此时也就是/30 就可以满足路由器之间的网络连通所需(减少浪费),剩下的网络地址可以在以后网络进行扩展
- 这个例子中不使用 VLSM 还是可以进行解决的
- 这个例子中不使用 VLSM 还是可以进行解决的
3.0 划分背景
- 已分配 192.168.10.0/24 的 C 类地址。
- 珀斯、悉尼和新加坡有一个到吉隆坡(KL)的广域网连接。
- 珀斯需要60个主机。
- 吉隆坡需要28个主机。
- 悉尼和新加坡各需要12个主机。
- 要计算 VLSM,子网和相应的主机首先从地址范围中分配最大的要求。需求级别应从大到小列出。
3.1 第一步:满足珀斯的主机需求(需求最大)
- 珀斯需要60个主机。
- 2^6-2=62个可用主机地址,所以使用6位
- 将从第四个八位位组开始使用 2 位来表示/26 的扩展网络前缀,其余 6 位将用于主机地址。
- 在地址 192.168.10.0/24 上应用 VLSM 可得到:
- 子网掩码:255.255.255.192(/26)
- 子网地址:192.168.10.0/26
- 可用地址范围:192.168.10.1 - 192.168.10.62
- 广播地址: 192.168.10.63
- 第一个给 Perth 使用,剩下的用作保留未使用的
3.2 第二步:为吉隆坡划分子网(需求第二)
- 吉隆坡需要28个主机
- 下一个可用地址是192.168.10.64/26。
- 0100 0000
- 由于需要28个主机,5位将用于主机地址,2^5 - 2 = 30个可用主机地址。
- 因此,5位用于表示主机,3位用于表示扩展网络前缀/27。
- 在地址 192.168.10.64/26 上应用VLSM可得到
- 子网掩码:255.255.255.224(/27)
- 1110 0000
- 子网地址:192.168.10.64/27
- 192.168.10.010 hhhhh /27
- 可用地址范围:192.168.10.65 - 192.168.10.94
- 广播地址:192.168.10.95
- 子网掩码:255.255.255.224(/27)
3.3 第三步:为悉尼和新加坡进行分配地址(需求第三)
- 悉尼和新加坡各需要12个主机:
- 下一个可用地址是192.168.10.96/27。
- 由于需要12个主机,4位将用于主机地址,2^4 = 16,16 - 2 = 14个可用主机地址。
- 因此,4位用于表示主机,4位用于表示扩展网络前缀/28。
- 在地址 192.168.10.96/27 上应用 VLSM 可得到:
- 子网掩码:255.255.255.240(/28)
- 1111 0000
- 子网地址:192.168.10.96/28
- 192.168.10.0110 hhhh/28
- 可用地址范围:192.168.10.97 - 192.168.10.110
- 广播地址:192.168.10.111
- 子网掩码:255.255.255.240(/28)
- 新加坡同理(12个主机):
- 下一个可用地址是192.168.10.112/28
- 需要12个主机——4位表示主机,4位表示扩展网络前缀
- 在地址192.168.10.112/28上应用VLSM得到:
- 子网掩码:255.255.255.240(/28)
- 1111 0000
- 子网地址:192.168.10.112/28
- 192.168.10.0111 hhhh/28
- 可用地址范围:192.168.10.113 - 192.168.10.126
- 广播地址:192.168.10.127
- 子网掩码:255.255.255.240(/28)
3.4 第四步:为之间的路由地址进行划分
- 现在为 WAN 连接分配地址。请记住,每个 WAN 连接都需要两个 IP 地址。
- 下一个可用的子网是 192.168.10.128/28。
- 由于每个 WAN 链路需要 2 个网络地址,因此主机地址需要 2 位,即 2^2 -2 = 2 个可用地址。
- 因此,2位用于表示链接,6位用于表示扩展网络前缀/30。
- 在 192.168.10.128/28 上应用 VLSM 可得到:
- 子网掩码:255.255.255.252(/30)
- 1111 1100
- 子网地址:192.168.10.128/30
- 192.168.10.011000 hh /30
- 可用地址范围:192.168.10.129 - 192.168.10.130
- 广播地址:192.168.10.131
- 子网掩码:255.255.255.252(/30)
- 下一个WAN链接:
- 子网地址:192.168.10.132/30
- 可用地址范围:192.168.10.133 - 192.168.10.134
- 广播地址:192.168.10.135
- 下一个WAN链接:
- 子网地址:192.168.10.136/30
- 可用地址范围:192.168.10.137 - 192.168.10.138
- 广播地址:192.168.10.139
总结:
- 重要的是要记住,只有未使用的子网才能进一步子网划分。
- 如果子网中的任何地址已被使用,则该子网不能进一步子网划分。
- 一般是从主机多到主机少(路由间网络)进行划分
- 最后不要忘了路由地址的划分
4. Route Aggregation 路由聚合
- 使用无类域间路由(CIDR,Classless InterDomain Routing)和VLSM不仅可以防止地址浪费,而且还可以促进路由聚合或汇总。
- 路由聚合(也称为路由汇总)是一种将多个连续的IP地址块合并为一个单一的路由条目的技术。
- 通过路由聚合,可以减少路由表中的条目数量,从而简化路由器的处理和提高网络效率。
- 优点:
- 减少路由表条目的数量。
- 可用于隔离拓扑更改
- 当网络拓扑发生变化时,路由聚合可以帮助隔离这些变化,减少对整个网络的影响。
- 为了使路由聚合正常工作,需要以层次化的方式仔细分配地址,以确保汇总地址能够共享相同的高阶位(高位部分)。
- VLSM可以通过基于地址的**高阶位(左边高位部分)**来实现路由的汇总和灵活性,即使网络地址不一定是连续的。
- 比如下图:3个/24的子网合并成一个/16的网络高速远端
4.0 例子
4.1 如何进行路由聚合
- 将尽可能多的位进行聚集,将之后的不通过的位置,作为 Host 位,就得到了上图的结果
八、ICMP 因特网控制报文协议
- ICMP (Internet Control Message Protocol):为了提高
IP 数据报交付成功的机会 - ICMP 允许主机或路由器报告差错情况和提供有关异常情况
的报告 - ICMP 只是IP 层的协议
- ICMP 报文作为IP 层数据报的数据,加上数据报的首部,组成IP 数据报发送出去
1. ICMP 报文的格式
- 前4个字节和普通数据报的格式一样
- 类型
- 代码
- 检验和
- 后面都是要根据类型
2. 两种ICMP报文
- 查询报文:一般这种情况不是很多
- 差错报告报文:一般这种类型会多一些
3. 目的站不可到达
网络不可到达(net unreachable)
主机不可到达(host unreachable)
协议不可到达(protocol unreachable)
端口不可到达(port unreachable)
源路由选择不能完成(source route failed)
目的网络不可知(unknown destination network)
目的主机不可知(unknown destination host)
注:不可知是完全不可以解析,不可达是可以解析但是不可以到达
4. ICMP 差错报告报文的数据字段的内容
- 一般会把原始的 IP 数据报文的数据报首部 + 8 字节(数据的,可能会包含端口信息)作为 ICMP 的数据部分
- ICMP 的前 8 个字节的是确定的(前 4 个字节是类型,校验位,后面四个字节是确定的)
- 然后添加一个首部作为 IP 数据报进行发送。
5. 不应发生ICMP差错报告报文的几种情况
- 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文
- 对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文
- 对具有多播地址的数据报都不发送 ICMP 差错报告报文
- 对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送 ICMP 差错报告报文
6. PING(Packet InterNet Groper)
- PING 是用**ICMP的”Echo request”和”Echo reply”**消息来实现的
- PING 用来测试两个主机之间的连通性
- PING 使用了ICMP 回送请求与回送回答报文
- PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的TCP或UDP
If you like my blog, you can approve me by scanning the QR code below.