cidr斜线记法地址块网络前缀_基础篇:计算机网络-网络层
IP 数据报转发的特点:尽最大努力交付。是不可靠。网络互联的中间设备物理层中继系统:转发器 (repeater)。数据链路层中继系统:网桥 或 桥接器 (bridge)。网络层中继系统:路由器 (router)。网桥和路由器的混合物:桥路器 (brouter)。网络层以上的中继系统:网关 (gateway)。 IP 地址分类的 IP 地址IP 地址4个字节,共32位,由网络号与主机号组成。A 类地
IP 数据报转发的特点:尽最大努力交付。是不可靠。
网络互联的中间设备
- 物理层中继系统:转发器 (repeater)。
- 数据链路层中继系统:网桥 或 桥接器 (bridge)。
- 网络层中继系统:路由器 (router)。
- 网桥和路由器的混合物:桥路器 (brouter)。
- 网络层以上的中继系统:网关 (gateway)。
IP 地址
分类的 IP 地址
IP 地址4个字节,共32位,由网络号与主机号组成。
A 类地址网络号字段为 1 个字节,第一个字节分配范围:0~126,主机号字段为 3个字节,每个网络号可划分的主机号数 2^24,
127 网络号用于本地环回测试。
B 类地址网络号字段为2个字节,第一个字节分配范围:128 ~ 191,主机号字段为2个字节,每个网络号可划分的主机号 2^16。
C 类地址网络号字段为3个字节,第一个字节分配范围为:192 ~ 223,主机号字段为1个字节,每个网络号可划分的主机号为 2^8。
D 类地址为多播地址
特殊的 IP 地址
路由分组转发算法
- 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。
- 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行 (3)。
- 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行 (4)。
- 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行 (5)。
- 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行 (6)。
- 报告转发分组出错。
总结:路由器通过 IP 地址得到该 IP 地址的网络地址 -> 若该网络与路由器相连,直接转发到目的主机,否则下一步 -> 若路由器存在该网络的特定主机路由,直接转发到相应路由,否则下一步 -> 若路由表存在到达到该网络的路由,直接转发,否则下一步 -> 若路由表有默认路由,直接转发 ,否则下一步-> 报告失败。
网络相连 -> 特定主机路由 -> 路由表存在该网络路由 -> 默认路由
子网划分
划分子网后的 IP 地址格式
查找网络地址
默认子网掩码
A 类地址默认子网掩码为1个字节
B 类地址默认子网掩码为2个字节
C 类地址默认子网掩码为3个字节
划分子网后的路由分组转发算法
- 从收到的分组的首部提取目的 IP 地址 D。
- 先用与路由相连的各网络的子网掩码和 D 逐位相“与”,看是否和相应的网络地址匹配。若匹配,则将分组直接交付。否则就是间接交付,执行(3)。
- 若路由表中有目的地址为 D 的特定主机路由,则将分组传送给指明的下一跳路由器;否则,执行 (4)。
- 对路由表中的每一行,将子网掩码和 D 逐位相“与”。若结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行 (5)。
- 若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行 (6)。
- 报告转发分组出错。
无分类编址 CIDR
分类域间路由选择CIDR(Classless Inter-Domain Routing)。
使用各个长度的“网络前缀”代替分类地址中的网络号和主机号。
无分类的编址格式
CIDR 使用“斜线记法”(slash notation),它又称为 CIDR 记法,即在 IP 地址面加上一个斜线“/”,然后写上网络前缀所占的位数。220.78.168.0/24
主机号全 0 或者全 1,一般都不使用。
CIDR 把网络前缀都相同的连续的 IP 地址组成“CIDR 地址块”。
路由聚合
一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合,也称构成超网
例如
202.113.48.0/22
202.113.52.0/22
202.113.56.0/22
202.113.60.0/22
可以聚合成
202.113.48.0/20
节省了路由表的表项存储。
CIDR地址块的用途:将CIDR地址块划分为多个网络地址
题:假定 CIDR 地址块是 192.1.2.0/24,需要将其划分为6个子网,子网要求如下
子网 终端数
1 20
2 12
3 45
4 27
5 5
6 11
该 CIDR 地址块,网络前缀为 24 位,主机号为8位,所以共有 2^8 个 IP 地址
主机号化分,则划分为
子网3:45台 0000 0000 ~ 0011 1111 共64台 192.1.2.0/26
子网4:27台 0100 0000 ~ 0101 1111 共32台 192.1.2.64/27
子网1:20台 0110 0000 ~ 0111 1111 共32台 192.1.2.96/27
子网2:12台 1000 0000 ~ 1000 1111 共16台 192.1.2.128/28
子网6:11台 1001 0000 ~ 1001 1111 共16台 192.1.2.144/28
子网5:5台 1010 0000 ~ 1001 0111 共8台 192.1.2.160/29
最长匹配原则
使用 CIDR 时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。 应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配 (longest-prefix matching)。网络前缀越长,其地址块就越小,因而路由就越具体 (more specific) 。最长前缀匹配又称为最长匹配或最佳匹配。
例如:路由表有一下映射
目的网络 下一跳 输出端口
192.1.2.0/24 192.1.1.1 1
192.1.2.144/28 直接 2
当有一个 IP 包发给主机 192.1.2.148
按照路由表查找,两条记录都符合,按照最长匹配原则,这时候要选择 2 号端口,进行转发。
IP 数据报
IP 数据报格式
- 版本:占 4 位,指 IP 的版本,目前是 IP4
- 首部长度:占 4 位,记录首部的长度,单位是 32 位(4个字节)。 取值范围在 0101(5)~1111(15),即 IP 数据报的首部长度范围为 5 * 4(20个字节) ~ 15 * 4(60个字节)。
- 区分服务:占8位,又称服务类型,用来获得更好的服务。 只有在使用区分服务时,这个字段才起作用,在一般的情况下都不使用这个字段
- 总长度:占16位,首部和数据之和的长度,单位为字节。 IP数据报的最大总长度:2^16-1(65535)字节
- 标识:占16位,存放计数器产生的累积计数,用来作为分片后的各片的统一标识,即:首部中相同标识字段的各数据报分片应组装成同一个数据报
- 标志:占3位,目前只有两位有意义 最低位 MF (More Fragment):1 表示后面还有分片,0 表示这是最后一个分片 中间为 DF (Don't Fragment):0 表示允许分片,1表示不允许分片
- 片偏移:占13位,指较长的分组在分片后某片在原分组中的相对位置,单位是8字节
- 生存时间:占8位,记为TTL (Time To Live),指数据报在网络中的寿命,由发送端主机设置。每经过一个路由减一,TTL=0 终止转发。
- 协议:占8位,指出此数据报携带的数据使用何种协议,以便目的主机的IP层将数据部分上交给哪个处理进程。(TCP、UDP、ICMP、IGMP)
- 首部检验和:占16位,只检验数据报的首部,不检验数据部分(减少工作量) 采用反码计算方法
- 源地址:占 32 位
- 目的地址:占 32 位
IP 数据报分片
每个网络使用的技术不用,每种网络都规定了一个帧最多能携带的数据量,这称为传输最大单元 MTU。例如以太网中的帧所允许携带的最大数据量为 1518字节,超过 MTU 就要对数据报进行分片。
例题:设IP 数据报的总长度是3820字节,其数据部分长度是3800字节(固定首部20字节)。设MTU长度是1420字节。请问如何分片?分片后首部怎么设置。
如图所示,数据1和数据2 的数据长度为 1400字节,数据3的数据长度为 1000字节。
三个首部的标识位都是一样的数,首部1和首部2的标志位DF MF 为 01, 首部3的标志位DF MF为 00。
IP 数据报重组
根据标识位来确定分片是属于哪个 IP 数据报;根据标志位来确定分片是否为原 IP 的最后一个分片;根据偏移位来确定分片在原 IP 数据报中的位置。
ARP 地址解析协议
通信时,使用了两个地址:
- IP 地址(网络层以上)
- 硬件地址(数据链路层)
由于各网络数据链路层以下各层的组成可能不同,所以所使用的硬件地址的格式可能会有所不同,比如以太网使用 MAC 地址等,使用 IP 地址,屏蔽了各网络底层的实现细节,使底层不同实现的网络之间能够相互通信。
ARP 的作用
从网络层使用 IP 地址,解析出在数据链路层使用的硬件地址。
ARP 解析过程
每个主机都设有 ARP 高速缓存,里面存放着局域网各主机和路由器的 IP 地址到硬件地址的映射。
ARP 分组封装在物理网络的帧中传输。
- ARP 请求分组:包含发送方硬件地址 / 发送方 IP 地址 / 目标方硬件地址(未知填0)/ 目标方 IP 地址
- 本地广播 ARP 请求:(路由器不转发 ARP 请求)
- ARP 响应分组:包含发送方硬件地址 / 发送方 IP 地址 / 目标方硬件地址(未知填0)/ 目标方 IP 地址
当主机 A 想向本局域网某个主机 B 发送 IP 数据报时,先在本机的 ARP 高速缓存中查看是否存在主机 B 的 IP 地址映射,如果存在,直接将硬件地址封装到 MAC 帧中,如果不存在, ARP 进程向本局域网广播发送 ARP 请求分组,收到 ARP 响应分组后,将得到的 IP 地址和硬件地址的映射写入到 ARP 高速缓存中。
注意:ARP 地址解析是自动进行的,用户对此过程不知。
使用 ARP 的四种典型情况
- 发送方是主机,要把 IP 数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址。
- 发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。
- 发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址。
- 发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上另一个路由器的硬件地址。剩下的工作由这个路由器来完成
网际控制协议 ICMP(Internet Control Message Protocol)
ICMP 协议作用:用于探测并报告 IP 数据报传输中产生的各种错误。
ICMP 协议是网络层的协议,封装在 IP 数据报的数据部分。
ICMP 数据报的格式
ICMP 报文的种类
- ICMP 差错报告报文
- ICMP 询问报文
ICMP 前3个字节的格式是统一的,后4个字节与 ICMP 报文的种类有关。
ICMP 差错报告报文
- 终点不可达:当一个路由器无法将 IP 数据报转发到目的地时,它会将 IP 数据报丢弃,同时向该数据报的源主机发送一个目标不可达的ICMP报文。
- 时间超时
- 路由器发出超时报文:当一个数据报的 TTL(生存周期)为0,路由器将其抛弃,同时向该数据报的源主机发送一个 ICMP 超时差错报告。
- 主机发出超时报文:目的主机在对一个 IP 数据报的多个分片进行重组时,如果等待一定时间后剩下的分片还没有到达,就认为这些分片不会到达,目的主机会丢弃已收到的分片,并通知向源主机发送一个 ICMP 超时差错报告。
- 参数问题:由 IP 数据报首部字段出错而引起的差错报告。当路由器或目的主机发现错误的数据报首部和错误的数据报选项参数时,便丢弃该数据报,同时向源主机发送一个 ICMP 差错报告报文
- 改变路由(重定向):用于解决主机路由表更新的问题。主机路由表的下一跳路由可能并非是去往目的主机的最佳下一跳路由。当主机的下一跳路由收到 IP 数据报时,根据自身路由表,判断当前路由是否是去往目的主机的最佳下一跳路由,如果不是,路由器转发数据报的同时会向源主机发送一个 ICMP 重定向报文,通知源主机修改它的路由表。重定向报文将给源主机下一跳最佳路由的 IP 地址。
ICMP 询问报文
根据需要向一个特定主机设备发送不同的询问报文。
- 回送请求报文和回送响应报文:路由器或主机通过回送请求报文向一个特定主机设备发出询问。收到该报文的设备必须向发送回送请求报文的源设备回答一个回送响应报文。(路由器或主机向特定设备发送一个回送请求报文,收到该数据报的设备必须发送一个回答响应报文)
- 时间戳请求报文和时间戳响应报文:用于向某个目的设备询问当前日期和时间。
ICMP 的应用
ping 命令
ping 命令:用于测试两个设备之间的连通性。 使用了回送请求报文和回送响应报文。
ping 是应用层直接使用网络层 ICMP 的例子,没有通过运输层的 TCP 或 UDP。
ping 的过程:
源主机向目的主机发送一个 ICMP 回送请求报文,然后等待目的主机的响应。目的主机收到 ICMP 回送请求报文后,交换源、目的地址,然后将请求报文中的数据部分原封不动的封装到 ICMP 响应报文的的数据部分,并发送给源主机,源主机收到 ICMP 响应报文后,检验正确,就认为两个主机之间是连通的。
ping 不通的原因
如果 ping 不通,屏幕会显示 ping不通的原因,常见有以下两种情况:
- 目的网络不可达:说明没有到达目的地址的路由
- 请求超时:说明在指定超时时间内(默认 1000ms)没有对探测报文发出响应。 其原因可能为路由器关闭,目的主机关闭。没有路由返回主机或者响应的等待时间大于指定的超时时间。
ping 不通不一定是网络不同,可能目的主机或者网络中间设备开启了防火墙,屏蔽掉 ICMP 报文。
tracert 命令
作用:用来跟踪一个分组从源点到终点的路径。
路由选择协议
自治系统(Autonomous System) 定义:在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS之间的路由。
互联网的两大路由选择协议
- 内部网络协议 IGP (Interior Gateway Protocol) :在一个自治系统内部使用的路由协议
- 外部网关协议 EGP (External Gateway Protocol) :不同自治系统之间使用的协议
注意:路由器和网关属于同义词。
内部网关协议RIP
路由信息协议 RIP(Routing Information protocol)是一种分布式、基于距离向量的路由选择协议。该协议要求网络中的每一个路由器都要维护一个从它自己到每一个目标网络的距离记录。
RIP 中的 “距离” 也称为 “跳数”,每经过一个路由器,跳数就加1。跳数加到16,相当于目标不可达,因为 RIP 中允许一条路径最多包含15个路由器。
RIP 不能在两个网络之间同时使用多条路由。 RIP 选择一个具有最少路由器的路由,也就是最短路由。
RIP 的特点
- 仅和相邻路由器交换信息。
- 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
- 按固定的时间间隔交换路由信息,例如每隔 30s 交换一次。当网络拓扑发生变化时,路由器也会及时向相邻路由器通告拓扑变化后的路由信息。
路由表的更新过程
路由器收到相邻路由器(相邻路由器的地址为 X)的一个 RIP 报文后的更新过程
- 先修改该 RIP 报文中所有项目:把下一跳地址全部改为地址 X,并把所有的距离值加1
- 对修改后的 RIP 报文中的每一个项目,重复以下步骤:
- 若项目中的目的网络不在路由表中,则把该项目加到路由表中,否则进入2
- 若下一跳字段给出的路由器地址是同样的,则把原路由表中的项目替换成收到的 RIP 中的项目。否则进入3
- 若收到项目中的距离小于路由表中的距离,则进行更新。否则进入4
- 不进行任何更新
- 若 3 分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为 16(表示不可达)。
最终所有的路由器都拥有整个自治系统的全局路由信息。
RPI2 协议报文
RIP2 报文由首部和路由部分组成,整个RIP2 封装在 UDP 数据报中。
- 地址族标识符:用来标识所使用的地址协议
- 路由协议:区分不同自治系统的路由信息,填入自治系统的标识号码
RIP2 报文中的路由部分由若干个路由信息组成。每个路由信息需要用 20 个字节。一个RPI 报文最多可以包括 25 个路由,即 RIP2 报文的最大长度为 4+20*25=504 个字节。
优缺点
好消息传播得快,坏消息(链路故障等)传播的慢。
当一个网络出现故障时,要经过比较长的时间,才能将此消息传送到所有的路由器。
例如:
有一个路由 R1 刚开始网络还没发生异常,路由表中有 (网1,距离 1,直接交付)的记录,R2 路由表中有 (网1,距离 2, 下一跳 R1),当网1发生异常时,R1 的路由表记录变为 (网1,距离 16,直接交付)。此时 R2 还不知道发生网络故障(R1还没来得及发送错误报告),向 R1 发送原来的数据报(网1,距离 2, 下一跳 R1)。 R1 收到 RIP 报文后,误认为可以经过 R2 到达网1,于是更新记录为 (网1,距离 3, 下一跳 R2),然后将更新报文发送给 R2。 R2 收到后即更新为(网1,距离 4, 下一跳 R1),然后把更新报文发给 R1,如此往复,知道 R1 和 R2 中记录的距离都为 16,才停止更新。
上述过程就是坏消息传播慢的原因,需要经过几分钟后,才更新到16。
内部网关协议OSPF
开放最短路径优先(Open Shortest Path First),采用分布式的链路状态协议,使用 Dijkstra 提出的最短路径算法。
该协议是为了克服 RIP 的缺点而开发出来的。原理简单,但实现复杂。
特点
- 使用洪泛法向本自治系统中所有的路由器发送信息。
- 发送的信息是与本路由器相邻的所有路由的链路状态。
- 链路状态:说明本路由都和哪些路由相邻。
- 各路由之间频繁交换链路状态,最后每个路由器都能建立一个链路状态数据库
- 每个路由器使用 Dijkstra 最短路径算法计算本路由到其他路由之间的最短路径,更新路由器。
- 路由器的链路状态发生变化时,会使用泛洪(广播)自身路由器的链路状态信息到其他路由器。
- 支持可变长度的子网划分和无分类编织(CIDR)
- 每隔一段时间会刷新数据库中的链路状态
OSPF 分组格式
OSPF 使用 IP 数据报进行传送,它构成的数据报很短,减少了路由信息的通信量,同时避免了分片丢失而导致整个数据报重传。
OSPF 五种分类类型
- 类型1,问候 (Hello) 分组。
- 类型2,数据库描述 (Database Description) 分组。
- 类型3,链路状态请求 (Link State Request) 分组。
- 类型4,链路状态更新 (Link State Update) 分组,用洪泛法对全网更新链路状态。
- 类型5,链路状态确认 (Link State Acknowledgment)分组。
外部网关协议 BGP
BGP(Border Gateway Protocol)是不同自治系统的路由器之间交换路由信息的协议。
每一个自治系统管理员至少选择一个路由器作为该自治系统的 “BGP发言人”,两个 “BGP”发言人之间是通过一个共享网络连接。
“BGP发言人”之间交换的网络可达性信息就是要达到某个网络所要经过的一系列自治系统 AS。交换信息时首先要建立 TCP 连接,在此连接上交换 BGP 报文以建立 BGP 会话,利用 BGP 会话交换路由信息。
特点
- BGP 支持 CIDR
- 在 BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处。
BGP 使用的四种报文
- 打开 (OPEN) 报文,用来与相邻的另一个BGP发言人建立关系。
- 更新 (UPDATE) 报文,用来发送某一路由的信息,以及列出要撤消的多条路由。
- 保活 (KEEPALIVE) 报文,用来确认打开报文和周期性地证实邻站关系。
- 通知 (NOTIFICATION) 报文,用来发送检测到的差错。
BGP 报文格式
IPv6
IPv6 地址为 128 位。
IPv6 格式
IPv6 数据报由两部分组成
- 基本首部:固定长度为40个字节
- 有效载荷:存放零个或者多个扩展首部,随后存放的是数据部分。
版本:4位,指明协议的版本,IPv6 数据报该字段的值为 6。
通信量类:8位,区分不同的 IPv6 数据报的类型或优先级。
流标号:20位,“流”是互联网络上从特定源点到特定终点的一系列数据报, “流”所经过的路径上的路由器都保证指明的服务质量。所有属于同一个流的数据报都具有同样的流标号。
有效载荷量:16位,指明了 IPv6 数据报除了基本首部外的字节数,最大值为 64k。
下一个首部:8位,相当于 IPv4 的协议字段或可选字段。
跳数限制:8 位。源站在数据报发出时即设定跳数限制。路由器在转发数据报时将跳数限制字段中的值减 1。当跳数限制的值为零时,就要将此数据报丢弃。
路由的构成
路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。
更多推荐



所有评论(0)