# Lecture04 - 网络层
# 网络层概述
# 网络层职责
- 通过网络移动数据:不同网段之间的通信,不同的广播域,两个广播域之间的进行了划分,互不干扰
- 使用分层寻址方案 (与 MAC 寻址相反,后者没有层次)
- 细分网络并控制流量
- 减少交通拥堵,基于 IP 做分段和传达,用来减少拥塞
- 与其他网络通讯
# 网络层设备
- 路由器
- 互连网段或网络 (不同网段的分割)
- 根据 IP 地址做出合理的决定
- 确定最佳路径,根据路由表。
- 将数据包从入站端口切换到出站端口
- 如果 A 网段的设备向路由器发送了一个 B 网段的广播地址,那么路由器会进行转发,然而如果 A 网段设备发送的是本网段的广播地址,路由器则不会进行转发。(广播域划分)
# IP 地址和子网划分
# 第三层数据报格式
# 报文详解
# 首部
# 首部部分
上面蓝框部分的整体是首部部分,包括固定部分和可变部分
# 版本号
占 4 bit,指 IP 协议的版本。
目前的 IP 协议版本号为 4 (即 IPv4)(6 也就对应 IPv6)
# 首部长度
占 4 bit,可表示的最大数值是 15 个单位 (一个单位为 4 字节) 因此 IP 的首部长度的最大值是 60 字节。
一行是 5 个字节,固定部分有 20 个字节,可变部分最多有 40 个字节。
# 服务类型
占 8bit,用来获得更好的服务,这个字段以前一直没有被人们使用。
# 总长度
占 16 bit,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节 (由于放到帧里面,所以大多数不比 1500 字节长)。总长度必须不超过最大传送单元 MTU。
# 标识
标识 (identification):占 16 bit,它是一个计数器,用来产生数据报的标识。
解决报文分片的问题。相同的标识可以合并成一个大报文。
# 标志
标志占 3 bit,最高位为 0
- 让发送方对报文进行控制,让中间路由器对其进行控制
- DF (Don’t fragment):是否允许做分片,0 允许做分片,1 不允许做分片
- MF (More Fragment):MF 为 0 表示最后一个分片,1 是指后面还有分片
# 片偏移
片偏移 (13 bit) 指出:较长的分组在分片后某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位。
- 相同标识号,然后根据片偏移进行重排
- 因为 16-3 = 13,2^3 = 8 (因为单位是字节,所以用 13 位就可以补齐)
# 生存时间
生存时间 (8 bit) 记为 TTL (Time To Live) 数据报在网络中可通过的路由器数的最大值。
是通过计数的方式来进行统计,最大值是 255 (最多经过 255 个路由器),路由器每转发一次,就会对生存时间 - 1,减小为 0 后,就会丢弃掉,并且通知给发送方我已经丢弃掉这个报文。
防止在环上进行传输,避免由于回路问题,造成过大的网络资源浪费
# 协议
协议 (8 bit) 字段指出此数据报携带的数据使用何种协议以便目的主机的 IP 层将数据部分上交给哪个处理过程
有的协议是上层的,有的协议是第三层协议,具体协议的情况如上
# 首部检验和
首部检验和 (16 bit) 字段:只检验数据报的首部,不包括数据部分。这里不采用 CRC 检验码而采用简单的计算方法。
一般不用,一是只检验首部,不检验数据;二是消耗性能
# 源地址和目的地址
各占 4 个字节
# 网络层地址
IP 地址为 32 位长 (Ipv4 中)
它们以点分十进制格式表示为四个八位字节:133.14.17.0
IP 地址包含两个组成部分:
网络 ID
主机 ID
# 网络地址:用来标识网段
一个网络中,共享一个网络地址
- 原来由 ARIN (美国互联网号码注册机构,www.arin.net) 分配,现在已经更换
- 标识设备所连接 (attached) 的网络
- 可以由前三个八位位组 (octets) 中的一个,两个或三个来标识
# 主机 ID:IP 地址后面占据 1-3 个字节
- 由网络管理员分配
- 识别该网络上的特定设备
- 可以由最后三个八位位组中的一个,两个或三个来标识
# IP 地址
不同的类地址为地址的网络部分和主机部分保留不同数量的位
# 分类
A 类第一位必为 0,B 开头为 10,C 为 110
根据第一个地址的数值确定是哪类地址
每个类别的最大主机数量各不相同。(不包含网络号)
A 类拥有 16,777,214 个可用主机 (224 – 2)
Class B has 65,534 available hosts (216 – 2) B 类具有 65,534 个可用主机 (216 – 2)
Class C has 254 available hosts (28 – 2) C 类具有 254 个可用主机 (28 –2)
为什么每一类地址中都要减去 2?
每个网络中的第一个地址都保留用于该网络地址
最后一个地址是为广播地址保留的。
# 保留地址
网络地址:在地址的主机部分中以二进制 0 结尾的 IP 地址
- A 类网络地址示例:113.0.0.0
- 网络上的主机只有具有相同网络 ID 的其他主机才能直接通信。(用来确定是不是在一个网段里面)
广播地址:用于将数据发送到网络上的所有设备。(一般是一个网段之间的)
- 广播 IP 地址在地址的主机部分中以二进制 1 结尾。
- B 类地址的广播地址的示例:176.10.255.255 (decimal 255 = binary 11111111)
例子
用于局域网内部使用
IP 地址耗尽(IP address delpetion)
# 子网划分
网络管理员有时需要将网络划分为较小的网络,称为子网,以提供额外的灵活性.
从主机字段借来的位被指定为子网字段 (Subnet Fields)
# 子网的基本概念
- 子网是网络的较小部分
- 提供寻址灵活性
- 子网地址通常由网络管理员在本地分配
- 子网减少了广播域:使得广播域变小,提高网络利用率,避免接受到大量的无用的广播,广播只能在对应子网中进行广播。
# 我们可以借多少位?
最少借 2 位
借用的最小位数是 2,为什么?
I 如果只借用 1 位以创建一个子网,那么您将只有一个网络号 -.0 网络 - 和广播号 -.1 网络,没有可以使用的专用网络。
两位的时候,01 和 10 给 Host,00 给网络 ID,11 位广播地址
可以借用的最大位数可以是保留至少 2 位主机号的任何数字 (给 Host 至少保留 2 位,因为 1 位的话,要么一个是 NET 无法使用,要么一个是广播地址)
# 副作用:浪费地址
我们必须在所需的子网数,每个子网可接受的主机以及地址的浪费之间取得平衡 (strike a balance)。
# 子网掩码
别名:扩展网络前缀
定义我们用来构建网络的位数,以及描述主机地址的位数
# 计算一个子网
路由器需要做一个与运算,交换机不用
# 第三层设备 —— 路由器
# 路径选择
路由器选择下一路径,根据带宽、跳数、延迟等
# IP 地址
- IP 地址是用软件实现的,是指设备所在的网络。
- 路由器连接网络,每个网络必须具有唯一的网络号才能成功进行寻找路径。
- 唯一的网络号包含在分配 (incorporated) 给该网络上每个设备的 IP 地址中
- IP 地址是逻辑的,是我们配置的。(不同于 MAC 地址)
- IP 地址是有层次,做转发的依据是网段而不是具体的 IP,同一网段设备都有相同的 IP 地址,也就是我们只要到达网段即可
路由器每个端口需要配一个地址,和所连接的网段是同一个信息的
# 路由器转发实例
A5 发到 B5
查询路由表
形成一个新的帧,MAC 地址是 B1 的
接口是路由器连接到网络的附加装置,在 IP 路由中也可以称为端口。这个 IP 地址往往被作为这个网络的网关
每个接口必须具有一个单独的唯一网络地址。
比如上图中 S1 和 S2 不能是相同的 IP 地址,否则会发生歧义,S0 不知道转发给谁,路由器的连接的网段一定要是不同的
# IP 地址分配
静态地址分配 (Static addressing)
- 为每个单独的设备配置一个 IP 地址
- 您应该保留非常细致的记录,因为如果使用重复的 IP 地址,可能会出现问题。
动态地址分配 (Dynamic addressing)
有几种不同的方法可用于动态分配 IP 地址:
- RARP: Reverse Address Resolution Protocol. RARP:反向地址解析协议。发起请求
- BOOTP: BOOTstrap Protocol. BOOTP:BOOTstrap 协议。用于工作栈
- DHCP: Dynamic Host Configuration Protocol. (比较多用) DHCP:动态主机配置协议
# ARP 协议
Address Resolution Protocol 地址解析协议
- 为了使设备进行通信,发送设备需要目标设备的 IP 地址和 MAC 地址。
- ARP 使计算机能够查找与 IP 地址关联的计算机的 MAC 地址。
- 目的方 IP 地址 -> 目的方 MAC 地址
- 需要知道对方的 MAC 地址,来形成数据地址。
ARP Table
ARP 缓存
# ARP 操作,MAC 地址解析
此时目的地 MAC 地址不知道
向目的地地址请求,发出广播
C 回应
写入 ARP 缓存,发送正常的帧
# 目的地本地
# 网络交流
# 默认网关
- 为了使设备与另一网络上的另一设备通信,您必须为其提供默认网关。
- 默认网关是路由器上连接到源主机所在网段的接口的 IP 地址。
- 为了使设备将数据发送到另一个网段上的设备的地址,源设备将数据发送到默认网关。
# 代理
无法设置默认网关的情况
- 代理 ARP 是 ARP 的一种变体 (variation)。
- 如果源主机未配置默认网关。
# 目的地址不是本地
路由器把自己的 MAC 地址给 Host Y
# ARP 流程图
# 网络层服务
# 面向连接的网络服务
面向连接的网络服务 —— 在数据传输之前,在传输方和接收方之间建立连接
就是任何发送数据的行为之前,先要建立好连接,协商好参数才会开始传输,所有数据进行有序传输
网络情况导致数据出现问题,需要接受方进行一定处理来保证数据正确
传输过程中要保持连接距离,只有完成传输后才能断开连接。
传输比较可靠,代价高。
(虚)电路交换 vs 面向连接的网络服务
但是,两个名词并不一样。
面向连接:在数据传输之前,与接收方建立一个连接
所有 packet(报文)在同一条道路上依次传输,更普遍的,是在同一条虚电路上
虚电路要强于面向连接的,传输更加可靠,保证传输先后关系。
# 无连接的网络服务
他们分别对待每个数据包。
IP 是无连接系统。
# 报文交换
- 无连接网络与数据包交换:这两个词都不一样
- 当数据包从源传递到目标时,它们可以:
- 切换到其他路径。(每一报文有各自的发送方和接收方,可以根据当前的网络情况,进行路由选择)
- 乱序到达。
- 设备根据各种标准为每个数据包进行路径选择。不同的报文可能有不同的标准。
大部分的 Connetionless network 都是基于 packet switched 进行实现,控制网络拥塞。
# 路由协议
# 网络协议操作
ABC 之间都是通过帧进行计算的,直到第三层。
# 被动路由协议
- 为网络层提供支持的协议称为路由协议或可路由协议。
- IP 是网络层协议,因此,它可以通过互联网络进行路由。
# 不可路由协议
不可路由协议是不支持第 3 层的协议。
这些不可路由协议中最常见的是 NetBEUI。
直接根据目的方的地址在局域网中进行生成定位
这个协议不支持第三层,也就是跨局域网是不可以的。
NetBEUI 是一种小型,快速且高效的协议,仅限于在一个网段上运行
# 可路由协议的寻址
# 分类 1:静态 vs 动态
静态路由:网络管理员在路由器中手动输入路由信息。
动态路由
路由器可以在运行过程中互相学习信息。
使用路由协议更新路由信息。
RIP, IGRP, EIGRP, OSPF …
静态路由
用于隐藏部分网络。
安全 (不必进行路由表的交换)
测试网络中的特定链接。
在到达目标网络的路径只有一条通路时,维护路由表。
动态路由
- 维护路由表。
- 以路由更新的形式及时分发信息。
- 依靠路由协议共享知识。
- 路由器可以调整以适应不断变化的网络状况。
- 打开后会启动进程,按照不同的协议,和网上的不同设备学习信息,然后根据算法生成路由表
# 主动路由协议
# 被动路由协议和主动路由协议
- Routed Portocol 用于路由器之间,用来保证路由器之间连通 (完成转发)。
- Routing Protocol 用于做各自的路由表的生成:路由器彼此交换信息。
- Routing Protocol 决定 Routed Protocals
# 分类 2:IGP VS EGP
动态路由
内部网关协议 Interior Gateway Protocols
RIP,IGRP,EIGRP,OSPF
可在自治系统 (autonomous system,大的单位或者管理方) 中使用,该系统是一个主管部门下的路由器网络,例如公司 (corporate) 网络,学区的网络或政府机构的网络。
外部网关协议 Exterior Gateway Protocols
EGP,BGP
用于在自治系统之间路由数据包。
自治系统是逻辑的划分,而未必是物理层次的划分。
# 分类 3:IGP 分为两类:DVP VS LSP
DVP
距离矢量协议 Distance-Vector Protocols
RIP, IGRP
- 从邻居的角度查看网络拓扑。(注意不基于全局)
- 在路由器之间添加距离向量。(根据跳数来决定,经过一个路由器 + 1 一次)
- 经常定期 (periodic) 更新。(定时)
- 将路由表的副本传递到邻居路由器。
LVP
链路状态协议 Link State Protocols
OSPF
- 获取全局网络拓扑的通用视图。
- 计算到其他路由器的最短路径。(基于带宽计算出来的 cost,形成 cost 拓扑图,然后计算出对应的路径代价作为评判依据)
- 事件触发的更新。
- 将链接状态路由更新传递给其他路由器
Link State
用 SPF 算法
# RIP 路由信息协议(DVP)
- 很受欢迎
- 内部网关协议
- 距离矢量协议
- 基于跳数
- 最远可达跳数 15
- 每 30 秒更新
- 不选择最快路径(选择跳数最短的路径)
- 产生很多网络流量(network traffic)
- v2 是 v1 的一个进阶版本
# IGRP vs EIGRP(DVP)
- 思科知识产权的。
- 内部网关协议。
- 距离矢量协议
- 指标由 ** 带宽 (bandwidth),负载 (load),延迟 (delay) 和可靠性 (reliability)** 组成。加权进行运算。
- IGRP 最大跳数为 255。
- 每 90 秒更新一次。
- EIGRP 是 IGRP 的高级版本,它是混合路由协议 (不全是根据跳数来计算)。
比 RIP 性能好很多
# OSPF(LVP)
- 最短路径优先协议
- 内部网关协议
- 链路状态协议,消耗内存和 CPU
- 指标由带宽,速度,流量,可靠性和安全性组成,本科阶段只考虑带宽的。
- 事件触发的更新。
- 最快和什么有关?(最快指的是带宽)
- 和实时各条链路上的通信冗余有关,也和管理方案有关,简单来说是和带宽有关
- 带宽表示为代价,带宽和代价成反比。
# VLSM (Variable Length Subnet Mask) 可变长度子网掩码
# 经典路由和可变长度子网掩码
有类路由
有类的路由协议要求单个网络使用相同的子网掩码。
例如:网络 192.168.187.0 必须仅使用一个子网掩码,例如 255.255.255.0。
可变长度子网掩码
VLSM 只是一个特征,它允许单个自治系统的网络具有不同的子网掩码。
可有效解决网络号浪费的问题
- 使用 VLSM,网络管理员可以在主机少的网络上使用长掩码,而在主机多的子网上使用短掩码。(提供了很高的灵活性)
- 如果路由协议允许 VLSM
- 在路由网络连接上使用 30 位子网掩码 255.255.255.252(两个路由器相连)
- 用户网络的 24 位掩码 255.255.255.0
- 或者,对于最多 1000 个用户的网络,甚至是 22 位掩码 255.255.252.0。(保留 10 位)
- 在 CIDR 的基础上发展的,报文中包含有子网掩码。
# 为什么使用 VLSM
- VLSM 允许组织在同一网络地址空间内使用多个子网掩码。
- 实施 VLSM 通常被称为 "子网划分",可用于最大化寻址效率。
- VLSM 是有助于缩小 IPv4 和 IPv6 之间差距的修改 (modifications) 之一。
# VLSM 的优缺点
- 高效使用 IP 地址
- 更好的路由聚合 (aggregation): 构建超网
很多协议都支持 VLSM 协议,只有 RIP v1 不支持
会导致地址空间的浪费:广播地址和网络号都无法被使用。
- 过去,建议不要使用第一个和最后一个子网。但是我们可以使用 Cisco IOS ver12.0 中的子网 0。
- 从 IOS ver12.0 起,Cisco 路由器默认使用零子网。
- 如果想要禁止零子网,使用该指令:
router(config)#no ip subnet-zero()
路由器之间不需要那么多地址,可以进行优化
# 例子
为了计算 VLSM 子网,各个主机首先从地址范围分配最大的需求。需求级别应从最大到最小列出。
Octet 八位字节
没被用过的子网才能进一步划分
# 路由聚集
Classless InterDomain Routing (CIDR) 无类域间路由
将 3 个 / 24 的子网合并成一个 / 16 的网络
多层聚集
# 如何计算路由聚集
提取尽可能多的相同的位作为 net 位,其他作为 host 位
减少路由表条目的数量。
可用于隔离拓扑更改
# ICMP
Internet Control Message Protocol 因特网控制报文协议
# ICMP 报文格式
# 两种 ICMP 报文
# ICMP 差错报告报文的数据字段的内容
# 不应发送 ICMP 差错报告报文的几种情况
# PING
PING Packet InterNet Groper
# 一些其他
基于 IP 地址,而不是 MAC 地址。
【IP 地址和 MAC 地址的区别】IP 地址是一个框架,有逻辑和层次。MAC 地址较为平坦(谁生产的商品)
G 0/0/0 模块 板子 接口
s 0/1/0 模块 板子 接口
802.3
The maximum size of the L-PDU for a 10Mbps network is 1500 bytes. Because 8 bytes are used within the L-PDU for the LLC header, this means that the maximum size of the data field is 1492 bytes.
802.11
The frame body of the 802.11 packet can range from 0-2312 bytes.
Routed protocol
被动路由协议
基于路由表
Non-routable protobal
不基于路由表
多播地址
D 类地址,开头为 1110
多播地址范围为 224.0.0.0~239.255.255.255