计算机网络04
第四章 网络层
一、网络层概述
网络层的作用
网络层提供主机到主机的运输服务,具备路由和分组转发的功能,并使用IP地址标识网络中的节点。
在路由器中,每个路由器都有它的转发表。路由器通过分析到达的分组数据的首部字段,根据路由协议和路由算法,根据链路层协议封装数据帧并从对应的端口进行转发。
当路由器转发分组时数据长度超过链路层最大数据长度时进行数据分片,并在目的主机进行数据重组。
网络层主要功能
- 转发
将分组从路由器的输入端口转移到合适的输出端口 - 路由选择
确定分组从源到目的经过的路径的网络范围处理过程
数据平面与控制平面
- 数据平面
每个路由器都具备,它决定输入端口到来的数据报怎样发送到输出端口,具有转发功能 - 控制平面(在第五章详解)
确定数据报如何在路由器之间沿着从源主机到目标主机之间的路由转发,有传统路由算法 与 SDN远程服务实现两种方法
二、 IPv4协议
1 · IP首部格式
- 版本号 4位,规定你够了数据报的IP协议版本,路由器能够确认如何解释IP数据报的剩余部分
- 首部长度 4位,用于确定IP数据报载荷
- 服务类型 8位,指示期望获得哪种类型的服务,只有在网络提供区分服务时使用,一般时不使用,为00H.
- 数据报长度 16位,代表IP分组的总字节数(首部+数据)。因此IP数据报的理论最大长度为65535字节。
- 标识、标示位、片偏移 与IP分片有关
- 生存时间 8位,IP分组在网络中可以通过的路由器数。每路由器转发一次,TTL减一。
- 协议 8位,指示了IP数据报的数据部分应该给哪个特定的运输层协议
- 首部检验和 16位,用于帮助路由器检测收到的IP数据报中的比特错误
- 源IP地址、目的IP地址 32位
- 选项 携带安全、源 选路径、时间戳和路由记录等内容。不经常被使用
- 数据包含要交付给目的地的运输层报文段(TCP或者UDP),也可以承载其他类型的数据(如ICMP)
2 · 分片与重组
一个链路层帧能够承受的最大数据量叫做最大传送单元。而当IP分组过大的时候,就需要将IP数据报中的数据 分片 成多个较小的IP数据报,用单独的链路层帧封装传送。
其中,标识、标志位与片偏移规定了哪些数据报是同一较大的数据报片,并规定了该数据报片实际上是源IP数据报的哪个位置。这些数据报片将在端系统接收时进行 重组 。
在分片的时候规划:
- 标识 IP协议利用一个计数器,每产生IP分组计数器加1,作为该IP分组的标识
- 标志位 3位,包含DF与MF.DF =1:禁止分片;DF =0:允许分片。MF =1:非最后一片;MF =0:最后一片(或未分片)
- 片偏移 占13位,以8字节为单位,表示一个IP分组分片封装原IP分组数据的 相对偏移量
数据报分片计算方法:
Q:一数据报的总长度为 3820 字节,其数据部分的长度为 3800 字节(使用固定首部),需要分片为长度不超过 1420 字节的数据报片,该如何划分?
A:
总长度 | 标识 | MF | DF | 片偏移 | |
---|---|---|---|---|---|
原始数据报 | 3820 | 12345 | 0 | 0 | 0 |
数据报片1 | 1420 | 12345 | 1 | 0 | 0 |
数据报片2 | 1420 | 12345 | 1 | 0 | 175 |
数据报片3 | 1020 | 12345 | 0 | 0 | 350 |
3 · 可变长度子网划分计算方法
什么是IP
ip地址占据32比特(IPv4),是编号标识主机、路由器的接口,而一个IP地址中也可以划分出网络号与主机号。
划分IP子网的依据是IP地址具有相同网络号的设备接口,不跨越路由器中可以彼此物理联通的接口。
传统的IP地址可以划分为ABC、EF五类,其中ABC三类为私有ip地址:
- A类地址ip范围为
0.0.0.0~127.255.255.255
。其网络号为8位,主机号为24位。默认子网掩码为:255.0.0.0 - B类地址ip范围为
128.0.0.0~191.255.255.255
。其网络号与主机号都为16位。默认子网掩码为:255.255.0.0 - C类地址ip范围为
192.0.0.0~223.255.255.255
。其网络号为24位,主机号为8位。默认子网掩码为:255.255.255 - D类地址ip范围为
224.0.0.0~239.255.255.255
。 - E类地址ip范围为
240.0.0.0~255.255.255.255
。
什么是CIDR
Classless InterDomain Routing,消除传统的 A 类、B 类和 C 类地址界限,融合子网地址与子网掩码,方便子网划分。
无类地址格式:a.b.c.d/x,其中x为前缀长度。它将将多个子网聚合为一个较大的子网,实现了路由聚合。
在 有类路由协议 中不支持全0子网与全1子网,但cidr无类路由协议中是支持的。
那么如何将一个c类ip地址划分出更小的子网范围呢?
Q: 企业申请到一个C类IP地址200.1.1.0/24,其中网段1需要80主机 IP 地址,网段2需要28主机IP地址,网段3需要26主机IP地址,网段4需要10主机地址。
A:
(按照有类路由协议划分:)
- 对于网段1来说能容纳80台主机ip的最小的子网规模为128,即2^7。
那么要求主机位得有7位才能表示128台主机号,25位网络位。因此在c类默认24位网络位8位主机位的基础上需要借用一个主机位,所以子网络为200.1.1.0/25开始,子网掩码也为25位。
c类默认掩码 255.255.255.0 转为二进制 11111111 11111111 11111111 00000000在原来24位1基础上加一位变为11111111 11111111 11111111 10000000,即255.255.255.128。
网段1的子网ip范围: 200.1.1.1~200.1.1.126,广播地址200.1.1.127。 - 对于网段2需要28,能容纳的最小的子网规模为32主机IP地址,即2^5。
那么就要5位表示主机位,32-5=27位网络位。因此要借用3个主机位,ip开始子网络地址在网段1的基础上,为200.1.1.128/27,范围为200.1.1.129~200.1.1.158广播地址200.1.1.159。子网掩码27位,在原来25基础上加两位变为11111111 11111111 11111111 11100000,即255.255.255. 224 - 对于网段3需要26,能容纳的最小的子网规模为32主机IP地址,同样要5位表示主机位,27位网络位。
在网段2的基础上,同上分析网段3子网位为200.1.1.160/27,范围为200.1.1.161~200.1.1.190广播地址200.1.1.191。子网掩码由于其借位数依旧是27不变,所以依旧为255.255.255.224 - 对于网段4 需要10,能容纳的最小子网规模为16,即2^4,要4位表示主机位,28位网络位。
在网段3的基础上,网段4的子网位为200.1.1.192/28,范围为200.1.1.193~200.1.1.206广播地址200.1.1.207。子网掩码28位,在原来27基础上加两位变为了 255.255.255. 240,即11111111 11111111 11111111 11110000。