banner
NEWS LETTER

四、OSI第三层:数据链路层

Scroll down

第三层:网络层

  • Overview of the Network Layer
  • IP Addresses and Subnets
  • Layer 3 Devices
  • ARP Protocol
  • Network Layer Services
  • Routed and Routing Protocols
  • VLSM
  • ICMP
  • 为什么我们不用硬件地址进行通信?
    1. (设备数量问题)因为设备比较多,供应商也比较多
    2. (规格问题)不同供应商的解决方案不同,所以使用硬件地址进行通信的通用性比较低。
    3. (寻址问题)全球设备太多,如果使用硬件设备,那么进行定位比较复杂
    • 因为如上情况我们选择使用IP地址(逻辑地址)。

一、网络层概述

1. 第三层职责

  1. 通过网络移动数据
  2. 使用分层寻址 hierarchical addressing方案(与MAC寻址相反,后者平坦)
    • 分层寻址(Hierarchical Addressing)是一种网络地址分配和管理方法,它将地址空间划分为多个层次,每个层次都有不同的作用和范围(网络+子网+主机)。
  3. 分段网络(segment network)和控制流量(control flow of traffic)
    • 根据网络的大小和流量需求,将大型网络分割成多个较小的子网络(子网)。这些子网通常使用子网掩码来划分。
  4. 减少交通拥堵(Reduce congestion)
  5. 与其它网络通信

2. Devices

  • Routers(重点!)
    • 互连网段或网络(不同网段的分割)
    • 根据IP地址做出合理的决定
    • 确定最佳路径(根据路由表
    • 数据包从入站端口切换到出站端口

二、IP地址和子网划分(IP Addresses and Subnets)

1. Layer 3 Packet/Datagram 第三层数据报格式

alt text

  • IP地址在报文中占据一部分(一个IP地址32bit)

2. IPv4报文主要结构

alt text

  1. 首部部分:上面蓝框部分的整体
    • 固定部分+可变部分
  2. 版本号:占 4 bit,指IP协议的版本。目前的 IP 协议版本号为 4 (即 IPv4)(6也就对应IPv6)
  3. 首部长度:占 4 bit,可表示的最大数值是15个单位(一个单位为 4 字节), 因此IP的首部长度的最大值是60字节(15个单位)
    • 首部长度不确定,所以需要进行标识
    • 4bit->15个单位;
    • 首部长度的32 bit为一行,也就是4个字节为一个单位
  4. 服务类型:占8 bit,用来获得更好的服务,这个字段以前一直没有被人们使用。
  5. 总长度:占 16 bit,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节(由于放到帧里面,所以大多数不比1500字节长)。总长度必须不超过最大传送单元 MTU。
  6. 标识(identification):占 16 bit,它是一个计数器,用来产生数据报的标识。
  7. 标志:占 3 bit,最高位为 0;
    • MF(More fragement):MF 为 0 表示最后一个分片;1 是指后面还有分片
    • DF(Don’t fragement):是否允许做分片,0 允许做分片,1 不允许做分片
  8. 片偏移 (13 bit) 指出:较长的分组在分片后某片在原分组中的相对位置
    • 片偏移以8个字节偏移单位
      • 分片:由于网络中传输的数据报可能会超过某些网络的最大传输单元(MTU),因此需要将较大的数据报分成多个较小的片段进行传输。
      • 片偏移字段帮助接收方正确地重组这些片段。
  • 报文分片举例
    alt text
    alt text
  1. 生存时间8 bit,记为 TTL (Time To Live),表示数据报在网络中可通过的路由器数的最大值
    • 是通过计数的方式来进行统计
    • 最大值是255(最多经过255个路由器)
    • 路由器每转发一次,就会对生存时间-1
    • 减小为0后,就会丢弃掉,并且通知给发送方我已经丢弃掉这个报文。
    • 防止在环上进行传输,避免由于回路问题,造成过大的网络资源浪费
  2. 协议8 bit,协议字段指出此数据报携带的数据使用何种协议 ,以便目的主机的IP层将数据部分上交给哪个处理过程
    alt text
  3. 首部检验和:(16 bit)只检验数据报的首部,不包括数据部分。
    • 这里不采用 CRC 检验码而采用简单的计算方法。算法过程如下(比较形式化的问题,并不能解决数据报错误的形式)
      alt text
  4. 源地址和目的地址都各占 4 字节(32 bit)

3. 网络层地址 Network Layer Addresses

  1. IP地址32位长(32 bits long)
  2. 它们以点分十进制格式表示为四个(八位)字节:133.14.17.0
    • 点分十进制:用十进制表示每个字节的值,然后用点(.)分隔这些字节
  3. IP地址包含两个组成部分:
    • 网络ID(The network ID)
      • 由ARIN(American Registry for Internet Numbers,www.arin.net)分配
      • 标识设备所连接(attached)的网络
      • 可以由前三个八位位组(octets)中的一个,两个或三个来标识
    • 主机ID(The host ID)
      • 由网络管理员分配
      • 识别该网络上的特定设备
      • 可以由最后三个八位位组中的一个,两个或三个来标识
    • alt text

4. IP地址

  1. 不同的类地址为地址的网络部分和主机部分保留不同数量的位
    • N是Net ID,H 是 Host ID
    1. A: NHHH
    2. B: NNHH
    3. C: NNNH
      alt text

4.1 分类

alt text

  • IP 地址主要通过第一个字节进行划分
  1. 0–127 (0xxxxxxx):Class A address
  2. 128-191 (10xxxxxx):Class B address
  3. 192–223 (110xxxxx):Class C address
  4. 224–239 (1110xxxx):Class D – Multicast 多播地址
  5. 240–255 (1111xxxx):Class E - Research 研究地址
  • host 不能全取 0,也不能全取 1
    • 全取 0 时用来标识网段地址
    • 全取 1 时用来标识网段的广播地址

4.2 主机(Hosts)的数量

  • 每个类别的最大主机数量各不相同。(不包含网络号)
  1. A 类拥有 16,777,214 个可用主机(2^24 - 2
  2. B 类具有 65,534 个可用主机(2^16 - 2
  3. C 类具有 254 个可用主机(2^8 -2
  • 为什么每一类地址中都要减去 2?
    • 每个网络中的第一个地址都保留用于该网络地址(全取1)
      • 最后是.0
    • 最后一个地址是为广播地址保留的(全取1)。
      • 最后是.255

4.3 保留(Reserved)地址

  1. 网络地址:在地址的主机部分以二进制 0 结尾的 IP 地址
    • A 类网络地址示例:113.0.0.0
    • 网络上的主机只有具有相同网络 ID 的其他主机才能直接通信。(用来确定是不是在一个网段里面)
  2. 广播地址:用于将数据发送到网络上的所有设备。(一般是一个网段之间的)
    • 广播 IP 地址在地址的主机部分以二进制 1 结尾
    • B 类地址的广播地址的示例:176.10.255.255(decimal 255 = binary 11111111)
  • 类别示例
  1. Class A
    • 99.0.0.0: a reserved network number
    • 99.255.255.255: a broadcast number
  2. Class B
    • 156.1.0.0: a reserved network number
    • 156.1.255.255: a broadcast number
  3. 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地址范围包括:
  1. 10.0.0.0 - 10.255.255.255
  2. 172.16.0.0 - 172.31.255.255
  3. 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位的地址格式

5. Subnet(子网)

  • 网络管理员有时需要将网络划分为较小的网络,称为子网 subnet,以提供额外的灵活性.
  • 从主机字段借来的位被指定为子网字段(Subnet Fields)
1
2
借的是Host字段从左往右开始数的位数!!
Netwoek|Subnet|Host

alt text

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位主机号任何数字
    • 原因也同上
      alt text

5.3.子网划分的副产品:地址浪费Waste Addresses

  • 我们必须在所需的子网数每个子网可接受的主机以及地址的浪费之间取得平衡(strike a balance)。
  • hostID 里面的全 0 和全 1 不能使用
  • subnet 不可以使用全 0 和全 1
  • 借用 4 位是最高效率的,提升了划分灵活性,影响了效率
  • C类例图
    alt text
  1. (C类) 借用n位,则有了2^n-2个子网,每个子网可以有2^(8-n)-2台主机(host)
    • 主机总数量=子网数×每个子网的主机数
    • 使用率=主机总数量/255

5.4 Subnet Mask子网掩码

  • 网络位全赋值为 1host 位全部赋值为 0,这样我们就明白哪些位上面是 net,哪些位上面是 host
  1. 别名:扩展网络前缀
  2. 定义我们用来构建网络的位数,以及描述主机地址的位数
1
2
3
- Class A 255.0.0.0
- Class B 255.255.0.0
- Class C 255.255.255.0

6. 计算子网

例子:

  • 我们将对IP地址进行子网划分:
    • 223.14.17.0
  • 需要:13个子网,每个子网10台主机

Step 1

  1. 确定默认的子网掩码
    • C类:192~223,所以此IP地址在C类
  2. C 类网络的默认子网掩码是:255.255.255.0

Step 2

  1. 通过从主机 ID 借用位来计算子网和主机的实际数量
    • 13 subnets
    • 10 hosts on each subnet
    1. 2^4-2=14,由此:子网借4位
    2. 每个子网10个主机, 也是至少需要4位(2^4 - 2 =14), 主机位数为4位
  2. 我们对每一个子网需要借用 4 位来满足一个子网有 10 台可用的主机

Step 3

alt text

  1. 产生16个子网和每个子网16台主机
    • 对于借用的 4 位,每个位可以是 1 或 0,从而有 16 种可能的组合。
    • 4 个剩余主机位也是如此。
  2. 【重要】每个子网上只有14个可用子网和14台主机
    1. 因为不能使用第一个和最后一个子网。(即全 0 和全 1)
    2. 因为不能使用每个子网中的第一个和最后一个地址
    • 对于每个,一个是广播地址,一个是网络地址。

Step 4

  1. 确定子网掩码。
    alt text
  2. 其中X表示用于子网划分的借用位
  • X的位值相加,得到子网掩码的最后一个八位字节的十进制值:128 + 64 + 32 + 16 = 240
    • 也等于255-15
  • 子网掩码是:255.255.255.240
  • 子网掩码用于显示IP地址中的子网和主机地址字段

Step 5

  1. 确定主机地址的范围
    alt text
    alt text
  2. 16个子网,14个可用子网
  3. 每个子网16个主机,14个可用主机

7. 计算子网网络地址

  1. 第一步:将 IP 主机地址转换为二进制
  2. 第二步:将子网掩码转换为二进制
  3. 第三步:使用布尔运算符 AND 将两者进行运算。
  4. 第四步:将网络二进制地址转换为点分十进制
    alt text
  • 这是子网的网络地址
  • 它可以帮助确定路径(即发送到哪一个具体的子网(网段)):用来确定是否是一个网段,是否可以通过网关进行转发

7.1 路由器与IP地址

alt text

  • 为了找到子网的网络 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. 路径选择
    2. 路径转发

1. 路径选择 Path determination

  • 路由器根据链路带宽、跳数、延迟等因素,选择数据包到达目的地路径中的下一跳。
    alt text

2. IP 地址

  • IP地址在软件中实现,指的是设备所在的网络
    • IP地址是网络中每个设备的唯一标识符。每个设备(例如电脑、手机、服务器等)在连接到网络时都会被分配一个IP地址。
    • IP地址通过软件协议来进行分配、识别和管理,而非硬件本身决定的。
  • 路由器连接网络,每个网络必须有一个唯一的网络号,以确保路由成功。
    • 路由器根据IP地址子网掩码来判断数据包应该发送到哪个网络。
  • 唯一的网络号被包含在分配给连接到该网络的每个设备的IP地址中。
    • 假设一个设备的IP地址是 192.168.1.5,并且子网掩码是 /24,这表示:
      • 网络号是 192.168.1.0
      • 主机号是 5
    • 所有属于同一网络的设备的IP地址都会共享相同的网络号

3. 路由器端口 Router Interface

alt text

  1. 路由器端口记录了网段的 IP 地址(和连接的地方是相同的)
  2. 在计算需要分配的端口总数时,注意路由器端口也需要被计算上

4. 路由器发送的过程 Router function

alt text

  1. A5 主机发送报文给 B5 主机,这个报文的 IP 地址是 B5 所在的 IP 地址,形成帧,然后放上总线。
  • 路由器剥离由帧携带的数据链路层头部
    • (数据链路层头部包含源和目的地的MAC地址。)
      alt text
  1. 路由器收到帧,然后进行理解,看到报文,知道目的地是B5(解封装)
  • 检查网络层地址以确定目的网络
    alt text
  1. 检查自己的路由表,找到目的地对应的端口
  • 查询其路由表以确定将使用哪个接口发送数据,以便到达目的网络。
    alt text
  1. 在B1端口进行转发,形成新的帧
  • 通过接口B1发送数据,路由器会将数据封装在适当的数据链路层帧中。
    alt text
  1. 形成一个全新的帧,这个帧的MAC地址是B1的MAC的地址

5. 路由器端口示例

alt text

  1. 接口是路由器连接到网络的方式,在IP路由中也可以称为端口
  2. 每个接口必须有一个单独的、唯一的网络地址
    • 比如上图中 S1 和 S2 不能是相同的 IP 地址
    • 路由器的连接的网段一定要是不同的

6. IP地址分配 IP address assignment

  1. 静态地址分配(Static addressing)
  • 为每个设备配置一个IP地址。
  • 你应该保持非常详细的记录,因为使用重复的IP地址可能会导致问题。
  1. 动态地址分配(Dynamic addressing)
  • 有几种不同的方法可以用来动态分配IP地址:
    • RARP: 反向地址解析协议(Reverse Address Resolution Protocol)
    • BOOTP: 引导协议(BOOTstrap Protocol)
    • DHCP: 动态主机配置协议(Dynamic Host Configuration Protocol)

四、ARP Protocol

1. Address Resolution Protocol(ARP)地址解析协议

  1. 为了使设备能够通信,发送设备需要目标设备IP地址和MAC地址
  • ARP使计算机能够找到与IP地址关联的计算机的MAC地址

2. ARP示例

alt text

  1. source主机访问destination
  2. 不知道目的主机在哪里

3. ARP表的缓存

alt text

  1. 可以通过lookup命令进行。
  2. 在RAM里面,如果ARP没有本条目的对应MAC地址。
  3. MAC地址在ARP中是有时效性的。到时间不更新不激活就会删除

4. ARP 操作

alt text

  1. 使用ARP机制
  2. 上图中是一个示意图
  3. 此时ARP table中没有缓存
  4. 图的一个问题:目的MAC地址应该在前面,源MAC地址在后面
  • 步骤如下

4.1 ARP request

alt text

  1. 向目的方请求MAC地址
    2。 命令如图:广播询问找谁是这个主机,你的MAC地址是啥
  2. 将MAC地址设置为全1,作为广播发送

4.2 Checking

alt text

  1. 10.0.2.5发现不是自己的主机,那么解析到这里丢掉就行,同样会记录下来对应的发送方的MAC地址。(攻击原理)
  2. 10.0.2.9发现自己的MAC地址,然后形成ARP应答
  3. 同时10.0.2.9会同时记录下A主机的MAC地址,更新到自己ARP地址中去(会记录对方的)

4.3 ARP reply

alt text

  1. 向A主机进行MAC地址应答

4.4 Caching

  1. A的主机将刚刚得到的目标主机的MAC地址和IP地址的映射关系存储到ARP Table中
  2. 然后再次形成一个数据帧发送出去即可。

总结 ARP协议工作原理:

  1. ARP请求:
    1. 数据链路层中目标地址(MAC地址)未知, 网络层中目标地址(IP地址)已知, 广播询问IP地址为目标地址(IP地址)的主机
    2. 你的MAC地址是多少
  2. ARP检查
    1. 目标主机发现, 这个IP地址就是自己
  3. ARP回复
    1. 目标主机将自己的MAC地址回复给源主机
  4. ARP缓存
    1. 将刚刚得到的目标主机的MAC地址和IP地址的映射关系存储到ARP表中

5. ARP: Destination local 目的地址为本地

alt text

  • 当目标设备在本地网络中时,ARP协议用于解析目标设备的MAC地址。
  • 发送设备广播ARP请求,询问目标IP地址 对应的MAC地址
  • 目标设备收到ARP请求后,会回复其MAC地址
  • 发送设备将目标设备的IP地址和MAC地址映射关系存储在ARP缓存中,以便后续通信使用。

6. ARP: Internetwork Communication 网络交流

alt text

  1. 如何与不在同一物理网段上的设备通信?如下是两种解决方案。
    • Default gateway 默认网关
    • Proxy ARP 代理ARP

6.1 默认网关 Default gateway:

  • 为了使设备能够与另一个网络上的设备通信,必须为其提供一个默认网关
  • 默认网关是路由器上连接到源主机所在网络段接口的IP地址
  • 为了使设备将数据发送到另一个网络段上的设备地址,源设备将数据发送到默认网关

6.2 Proxy ARP 代理ARP:

  • 代理ARP代理ARP是ARP的一种变体。
  • 在源主机没有配置默认网关的情况下,代理ARP可以发挥作用。
    alt text
  • 发送ARP请求,然后路由器给你一个ARP的reply,告诉你MAC地址(一般为本端口的IP地址)
  1. 源主机发送ARP请求
    • 当源主机没有配置默认网关时,它会发送ARP请求,询问目标IP地址的MAC地址。
  2. 路由器响应ARP请求
    • 路由器配置了代理ARP功能,会拦截并响应这个ARP请求。
    • 路由器会回复其自己的MAC地址,作为目标IP地址的MAC地址。
  3. 源主机发送数据
    • 源主机接收到路由器的ARP回复后,会将数据发送到路由器的MAC地址。
  4. 路由器转发数据
    • 路由器接收到数据后,会根据其路由表将数据转发到目标网络上的实际目标设备。

7. ARP: Destination not local

alt text

  • 路由器会把Router MAC的地址给你(连接本网段的MAC地址)

8. ARP Flowchart ARP流程图

alt text

五、网络层服务

1. 面向连接的网络服务 Connection-oriented

alt text

  • 在数据传输之前先建立连接

1.1 电路交换 Circuit-switched

  1. 面向连接vs电路交换
    • 这两个术语并不相同
  • 面向连接:首先与接收方建立连接,然后开始数据传输。
  • 电路交换:所有数据包依次通过相同的通道传输,或者更常见的是,通过相同的虚拟电路传输。

2. 无连接的网络服务 Connectionless

alt text

  1. 他们分别separately对待每个数据包。
  2. IP 是无连接系统。 IP 就是提供无连接的网络服务
  • 不要求发送方和接收方在发送前先建立一个连接(不打招呼)。

2.1 数据包交换 Packet switched

  1. 无连接网络vs数据包交换
    • 这两个术语并不相同
  2. 当数据包从源传输到目的地时,它们可以:
    • 切换到不同的路径
    • 到达顺序可能不同
  3. 设备会根据多种标准为每个数据包确定传输路径。某些标准可能会因数据包而异。

六、Routed and Routing protocol 路由和路由协议

  • 网络协议操作
    alt text

1. Routed protocol 被动可路由协议

  1. 为网络层提供支持的协议称为路由协议可路由协议
  2. IP 是网络层协议,因此,它可以通过互联网进行路由。

2. Non-routable protocol 不可路由协议

  1. 不支持第三层
  2. 这些不可路由协议中最常见的是 NetBEUI。
  3. NetBEUI 是一种小型,快速且高效的协议,仅限于在一个网段上运行。

3. 被动可路由协议的寻址 Addressing of a routable protocol

alt text
alt text

  • 路由器连接三个网段(列出来的是网络号)
  1. 目的主机131.108.2.2
  2. 将目的主机和掩码进行逻辑AND操作,得到对应的网段,为131.108.2.0
  3. 请求路由表可以发现,E2端口为目的网段
  4. 再次将报文封装,转发给对应的主机
  5. 路由表是存储在内存中的

4. 路由协议分类1:Static and Dynamic 静态和动态

  1. 静态路由 Static routes:
    • 网络管理员在路由器中手动输入路由信息。
  2. 动态路由 Dynamic routes:
    • 路由器可以在运行过程中互相学习信息。
    • 使用**路由协议 (routing protocol)**更新路由信息。
    • RIP, IGRP, EIGRP, OSPF …
    • 人工维护的代价比较大
  • 区别:
  1. 静态路由
    • 用于隐藏部分网络。安全(不必进行路由表的交换)
    • 测试网络中的特定链接。
    • 用于在只有一条路径到目标网络时维护路由表。
  2. 动态路由
    • 维护路由表。
    • 以路由更新的形式及时分发信息。
    • 依靠路由协议共享知识。
    • 路由器可以调整以适应不断变化的网络状况。
    • 打开后会启动进程,按照不同的协议,和网上的不同设备学习信息,然后根据算法生成路由表

4.1 Routing protocol 主动路由协议(Routing)

  1. Routing protocols 确定 routed protocols遵循的到达目的地的路径。
  2. 是用来构建路由表的,所以叫做routing
  3. 公平、简单、适应变化等特点

4.2 Routed vs. Routing protocol

alt text

  1. Routed Portocol 用于路由器之间,用来保证路由器之间连通(完成转发),保证路由器有效连通。
      • 功能:实际承载和传输数据。
    • 示例:IP、IPX等
  2. Routing Protocol 用于做各自的路由表的生成:路由器彼此交换信息。
      • 功能:帮助路由器构建和维护路由表。
    • 示例:RIP、OSPF、EIGRP、BGP等。
  • Routing Protocol 决定 Routed Protocals
  1. 简单来说,路由协议(routing)用于帮助路由器决定数据包的最佳传输路径,而路由协议(routed)是实际用于传输数据的协议。

5. 路由协议分类2(动态路由协议):IGP and EGP

  • 皆为动态路由
  1. 内部网关协议 IGP(Interior Gateway Protocols)
  • 示例:RIP、IGRP、EIGRP、OSPF
  • 用途:在一个自治系统内使用,例如公司网络、学校网络或政府机构网络。
  1. 外部网关协议 EGP(Exterior Gateway Protocols)
  • 示例:EGP、BGP
  • 用途:在不同自治系统之间路由数据包,例如跨组织或跨地区的互联网连接。

6. 路由协议分类3(内部网关协议):DVP and LSP

  1. 距离矢量协议 (Distance-Vector Protocols):RIP, IGRP
  • 邻居的角度查看网络拓扑。
  • 添加从路由器到路由器的距离+矢量
    • 距离 (Distance):通常是路由器与目标网络之间的跳数(hop count)。每个跳数代表从一个路由器到另一个路由器的路径。
    • 矢量 (Vector):在距离矢量协议中,矢量通常指的是从源路由器到目标路由器的下一跳信息。每个路由器会保存一张路由表,记录到每个目标网络的最短跳数和下一跳路由器。
  • 频繁、定期periodic更新
    • 周期性地交换路由信息来计算最佳路径
      1. 到达每个目标网络的跳数(距离)。
      2. 用于到达目标网络的下一跳路由器(方向)。
  • 路由表的副本传递给邻居路由器。
  1. 链路状态协议 (Link State Protocols):OSPF*
  • 每个路由器获取整个网络拓扑的共同视图。
  • 计算到其他路由器的最短路径
  • 事件触发更新
  • 传递链路状态路由更新到其他路由器。

6.1 距离矢量协议DVP的示例

alt text

  • 初始的时候,各自持有的是黑色的部分(直连的线路)
  • 定时路由表会相互交换给邻居,下一时刻 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(本图的问题)
    alt text
  1. 彼此交换连接情况,交换的是Link state而不是路由表,包含 link 的信息,以 NetID 作为主键(无相同网段),包含的是 link 上的路由器邻接关系、链路类型(4 种)、链路带宽,会指定谁连接了谁,这个条目就被称为 Database(表)。这样子就不仅仅知道链路,还知道更多的全局信息。
  2. LSP 操作过程:
    • 相互交换彼此学到对应的 Tpological Database(是全局的信息)
    • 之后使用 SPF 算法,以自己为根,通过最短路径优先算法,生成以自己为根的树
    • 根据这一个树再生成路由表(了解全局的信息),逻辑是树的逻辑。
  3. LSP 不是进行定时进行交换的,而是初始的时候进行交换,稳定之后,根据事件触发的时候才会更新数据。
    • 更新后发送给所有的路由器,需要将 Database 发送给所有的路由器
    • 收到的路由器的,根据 database 更新自己的树,然后再次生成路由表。
  4. LSP 是指从所有可达的道路上找到代价最小的路径。
  5. 全局可能会比较大,考虑负载进行处理
  6. 但是没有路由回路,单域内一般不超过 20 个路由器
  7. 路由表一般只保存一个最优的转发点的(负载均衡)

6.2.1 OSPF(Open Shortest Path First)开放最短路径优先

  • 开放最短路径优先。
  • 内部网关协议IGP
  • 链路状态协议LSP
  • 度量由成本、速度、流量、可靠性和安全性组成。
  • 事件触发更新。

七、VLSM 可变长度子网掩码

  • Variable Length Subnet Mask

1. Classful Routing(类路由)

  1. 类路由协议要求一个网络使用相同的子网掩码
  2. 例如:如果网络是 192.168.187.0,那么它必须使用一个单一的子网掩码,如 255.255.255.0。
  • 也就是说,类路由协议不允许在同一个网络中存在多个子网掩码,所有子网都需要使用相同的掩码
  • 类路由的这种特性比较简单,但它不具备灵活性,无法根据需求进行更精细的子网划分。
    • 会造成一些浪费

2. VLSM — Variable Length Subnet Mask

  1. VLSM是一种允许在同一个自治系统内使用不同子网掩码的特性。
    • 有效地解决浪费问题
  2. 为什么要使用VLSM
    • VLSM允许一个组织在同一个网络地址空间内使用多个子网掩码。
    • 实施VLSM通常被称为“子网的子网”,可以用来最大化地址分配的效率。
    • VLSM是帮助弥合IPv4和IPv6之间差距的修改之一。
  3. 优点
    • 高效使用IP地址 Efficient use of IP addresses
    • 更好的路由聚合 Better route aggregation
  4. 支持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
  5. 缺点:
    • 地址空间的浪费:广播地址和网络号都无法被使用。
      • 过去,建议不要使用第一个和最后一个子网。但从Cisco IOS 12.0版本开始,可以使用子网0。
      • 从IOS 12.0版本开始,Cisco路由器默认使用子网0。
    • 如果想要禁止零子网,使用该指令:router(config)#no ip subnet-zero()
      alt text
  • 上图解释了子网长度相同会造成怎样的浪费(在路由器所在的子网段我们只需要满足2个主机,也就是需要2位的主机号就可以完成操作)

3. 如何使用VLSM

alt text

  • 斜杠的含义是指前面多少位保留给网络位
  • 此时也就是/30 就可以满足路由器之间的网络连通所需(减少浪费),剩下的网络地址可以在以后网络进行扩展
    • 这个例子中不使用 VLSM 还是可以进行解决的
      alt text

3.0 划分背景

  • 已分配 192.168.10.0/24 的 C 类地址。
    • 珀斯、悉尼和新加坡有一个到吉隆坡(KL)的广域网连接。
    • 珀斯需要60个主机。
    • 吉隆坡需要28个主机。
    • 悉尼和新加坡各需要12个主机。
  1. 要计算 VLSM,子网和相应的主机首先从地址范围中分配最大的要求。需求级别应从大到小列出。

3.1 第一步:满足珀斯的主机需求(需求最大)

  1. 珀斯需要60个主机。
  2. 2^6-2=62个可用主机地址,所以使用6位
    • 将从第四个八位位组开始使用 2 位来表示/26 的扩展网络前缀,其余 6 位将用于主机地址。
  3. 在地址 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
      alt text
  • 第一个给 Perth 使用,剩下的用作保留未使用的

3.2 第二步:为吉隆坡划分子网(需求第二)

  1. 吉隆坡需要28个主机
    • 下一个可用地址是192.168.10.64/26。
    • 0100 0000
  2. 由于需要28个主机,5位将用于主机地址,2^5 - 2 = 30个可用主机地址。
  3. 因此,5位用于表示主机3位用于表示扩展网络前缀/27
  4. 在地址 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
      alt text

3.3 第三步:为悉尼和新加坡进行分配地址(需求第三)

  1. 悉尼和新加坡各需要12个主机:
    • 下一个可用地址是192.168.10.96/27。
  2. 由于需要12个主机,4位将用于主机地址,2^4 = 16,16 - 2 = 14个可用主机地址。
  3. 因此,4位用于表示主机,4位用于表示扩展网络前缀/28
  4. 在地址 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
  • 新加坡同理(12个主机):
    • 下一个可用地址是192.168.10.112/28
    • 需要12个主机——4位表示主机,4位表示扩展网络前缀
  1. 在地址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
      alt text

3.4 第四步:为之间的路由地址进行划分

  1. 现在为 WAN 连接分配地址。请记住,每个 WAN 连接都需要两个 IP 地址
    • 下一个可用的子网是 192.168.10.128/28。
  2. 由于每个 WAN 链路需要 2 个网络地址,因此主机地址需要 2 位,即 2^2 -2 = 2 个可用地址。
  3. 因此,2位用于表示链接,6位用于表示扩展网络前缀/30。
  4. 在 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
      alt text
      alt text
  5. 下一个WAN链接
    • 子网地址:192.168.10.132/30
    • 可用地址范围:192.168.10.133 - 192.168.10.134
    • 广播地址:192.168.10.135
  6. 下一个WAN链接
    • 子网地址:192.168.10.136/30
    • 可用地址范围:192.168.10.137 - 192.168.10.138
    • 广播地址:192.168.10.139

总结:

  • 重要的是要记住,只有未使用的子网才能进一步子网划分。
  • 如果子网中的任何地址已被使用,则该子网不能进一步子网划分。
  • 一般是从主机多到主机少(路由间网络)进行划分
  • 最后不要忘了路由地址的划分

4. Route Aggregation 路由聚合

  1. 使用无类域间路由(CIDR,Classless InterDomain Routing)和VLSM不仅可以防止地址浪费,而且还可以促进路由聚合或汇总。
  2. 路由聚合(也称为路由汇总)是一种将多个连续的IP地址块合并为一个单一的路由条目的技术。
    • 通过路由聚合,可以减少路由表中的条目数量,从而简化路由器的处理和提高网络效率。
  3. 优点:
    1. 减少路由表条目的数量。
    2. 可用于隔离拓扑更改
      • 当网络拓扑发生变化时,路由聚合可以帮助隔离这些变化,减少对整个网络的影响。
  4. 为了使路由聚合正常工作,需要以层次化的方式仔细分配地址,以确保汇总地址能够共享相同的高阶位(高位部分)。
  5. VLSM可以通过基于地址的**高阶位(左边高位部分)**来实现路由的汇总和灵活性,即使网络地址不一定是连续的。
  • 比如下图:3个/24的子网合并成一个/16的网络高速远端
    alt text

4.0 例子

alt text

4.1 如何进行路由聚合

alt text

  • 将尽可能多的位进行聚集,将之后的不通过的位置,作为 Host 位,就得到了上图的结果

八、ICMP 因特网控制报文协议

  1. ICMP (Internet Control Message Protocol):为了提高
    IP 数据报交付成功的机会
  2. ICMP 允许主机或路由器报告差错情况和提供有关异常情况
    的报告
  3. ICMP 只是IP 层的协议
  4. ICMP 报文作为IP 层数据报的数据,加上数据报的首部,组成IP 数据报发送出去

1. ICMP 报文的格式

alt text

  1. 前4个字节和普通数据报的格式一样
    • 类型
    • 代码
    • 检验和
  2. 后面都是要根据类型

2. 两种ICMP报文

alt text

  1. 查询报文:一般这种情况不是很多
  2. 差错报告报文:一般这种类型会多一些

3. 目的站不可到达

  • 网络不可到达(net unreachable)

  • 主机不可到达(host unreachable)

  • 协议不可到达(protocol unreachable)

  • 端口不可到达(port unreachable)

  • 源路由选择不能完成(source route failed)

  • 目的网络不可知(unknown destination network)

  • 目的主机不可知(unknown destination host)

  • 注:不可知是完全不可以解析,不可达是可以解析但是不可以到达

4. ICMP 差错报告报文的数据字段的内容

alt text

  1. 一般会把原始的 IP 数据报文的数据报首部 + 8 字节(数据的,可能会包含端口信息)作为 ICMP 的数据部分
  2. ICMP 的前 8 个字节的是确定的(前 4 个字节是类型,校验位,后面四个字节是确定的)
  3. 然后添加一个首部作为 IP 数据报进行发送。

5. 不应发生ICMP差错报告报文的几种情况

  1. 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文
  2. 对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文
  3. 对具有多播地址的数据报都不发送 ICMP 差错报告报文
  4. 对具有特殊地址(如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.

Other Articles
Article table of contents TOP
  1. 1. 第三层:网络层
  2. 2. 一、网络层概述
    1. 2.1. 1. 第三层职责
    2. 2.2. 2. Devices
  3. 3. 二、IP地址和子网划分(IP Addresses and Subnets)
    1. 3.1. 1. Layer 3 Packet/Datagram 第三层数据报格式
    2. 3.2. 2. IPv4报文主要结构
    3. 3.3. 3. 网络层地址 Network Layer Addresses
    4. 3.4. 4. IP地址
      1. 3.4.1. 4.1 分类
      2. 3.4.2. 4.2 主机(Hosts)的数量
      3. 3.4.3. 4.3 保留(Reserved)地址
    5. 3.5. 5. Subnet(子网)
      1. 3.5.1. 5.1.Basics of Subnetting
      2. 3.5.2. 5.2.How many bits can I borrow(可以借多少位给子网)
      3. 3.5.3. 5.3.子网划分的副产品:地址浪费Waste Addresses
      4. 3.5.4. 5.4 Subnet Mask子网掩码
    6. 3.6. 6. 计算子网
      1. 3.6.1. Step 1
      2. 3.6.2. Step 2
      3. 3.6.3. Step 3
      4. 3.6.4. Step 4
      5. 3.6.5. Step 5
    7. 3.7. 7. 计算子网网络地址
      1. 3.7.1. 7.1 路由器与IP地址
      2. 3.7.2. 实践:IP寻址问题
  4. 4. 三、第三层设备
    1. 4.1. 1. 路径选择 Path determination
    2. 4.2. 2. IP 地址
    3. 4.3. 3. 路由器端口 Router Interface
    4. 4.4. 4. 路由器发送的过程 Router function
    5. 4.5. 5. 路由器端口示例
    6. 4.6. 6. IP地址分配 IP address assignment
  5. 5. 四、ARP Protocol
    1. 5.1. 1. Address Resolution Protocol(ARP)地址解析协议
    2. 5.2. 2. ARP示例
    3. 5.3. 3. ARP表的缓存
    4. 5.4. 4. ARP 操作
      1. 5.4.1. 4.1 ARP request
      2. 5.4.2. 4.2 Checking
      3. 5.4.3. 4.3 ARP reply
      4. 5.4.4. 4.4 Caching
      5. 5.4.5. 总结 ARP协议工作原理:
    5. 5.5. 5. ARP: Destination local 目的地址为本地
    6. 5.6. 6. ARP: Internetwork Communication 网络交流
      1. 5.6.1. 6.1 默认网关 Default gateway:
      2. 5.6.2. 6.2 Proxy ARP 代理ARP:
    7. 5.7. 7. ARP: Destination not local
    8. 5.8. 8. ARP Flowchart ARP流程图
    9. 5.9.
  6. 6. 五、网络层服务
    1. 6.1. 1. 面向连接的网络服务 Connection-oriented
    2. 6.2. 1.1 电路交换 Circuit-switched
    3. 6.3. 2. 无连接的网络服务 Connectionless
    4. 6.4. 2.1 数据包交换 Packet switched
  7. 7. 六、Routed and Routing protocol 路由和路由协议
    1. 7.1. 1. Routed protocol 被动可路由协议
    2. 7.2. 2. Non-routable protocol 不可路由协议
    3. 7.3. 3. 被动可路由协议的寻址 Addressing of a routable protocol
    4. 7.4. 4. 路由协议分类1:Static and Dynamic 静态和动态
      1. 7.4.1. 4.1 Routing protocol 主动路由协议(Routing)
      2. 7.4.2. 4.2 Routed vs. Routing protocol
    5. 7.5. 5. 路由协议分类2(动态路由协议):IGP and EGP
    6. 7.6. 6. 路由协议分类3(内部网关协议):DVP and LSP
      1. 7.6.1. 6.1 距离矢量协议DVP的示例
      2. 7.6.2. 6.2 链路状态协议LSP的示例
  8. 8. 七、VLSM 可变长度子网掩码
    1. 8.1. 1. Classful Routing(类路由)
    2. 8.2. 2. VLSM — Variable Length Subnet Mask
    3. 8.3. 3. 如何使用VLSM
      1. 8.3.1. 3.0 划分背景
      2. 8.3.2. 3.1 第一步:满足珀斯的主机需求(需求最大)
      3. 8.3.3. 3.2 第二步:为吉隆坡划分子网(需求第二)
      4. 8.3.4. 3.3 第三步:为悉尼和新加坡进行分配地址(需求第三)
      5. 8.3.5. 3.4 第四步:为之间的路由地址进行划分
      6. 8.3.6. 总结:
    4. 8.4. 4. Route Aggregation 路由聚合
      1. 8.4.1. 4.0 例子
      2. 8.4.2. 4.1 如何进行路由聚合
  9. 9. 八、ICMP 因特网控制报文协议
    1. 9.1. 1. ICMP 报文的格式
    2. 9.2. 2. 两种ICMP报文
    3. 9.3. 3. 目的站不可到达
    4. 9.4. 4. ICMP 差错报告报文的数据字段的内容
    5. 9.5. 5. 不应发生ICMP差错报告报文的几种情况
    6. 9.6. 6. PING(Packet InterNet Groper)
Please enter keywords to search