课程地址:【计算机网络微课堂(有字幕无背景音乐版)】 https://www.bilibili.com/video/BV1c4411d7jb/?share_source=copy_web\&vd_source=b1cb921b73fe3808550eaf2224d1c155
目录
[4 网络层](#4 网络层)
[4.1 网络层概述](#4.1 网络层概述)
[4.1.1 网络层的主要任务](#4.1.1 网络层的主要任务)
[4.1.2 网络层要解决的问题](#4.1.2 网络层要解决的问题)
[1 向运输层提供可靠/不可靠服务](#1 向运输层提供可靠/不可靠服务)
[2 寻址问题](#2 寻址问题)
[3 路由选择](#3 路由选择)
[4 TCP/IP协议栈](#4 TCP/IP协议栈)
[4.2 网络层提供的2种服务](#4.2 网络层提供的2种服务)
[4.2.1 面向连接的虚电路服务](#4.2.1 面向连接的虚电路服务)
[4.2.2 无连接的数据报服务](#4.2.2 无连接的数据报服务)
[4.3 IPv4地址](#4.3 IPv4地址)
[4.3.1 IPv4地址概述](#4.3.1 IPv4地址概述)
[1 IPv4地址介绍](#1 IPv4地址介绍)
[2 IPv4地址表示方法-点分十进制表示](#2 IPv4地址表示方法-点分十进制表示)
[3 8位无符号二进制整数转十进制数](#3 8位无符号二进制整数转十进制数)
[4 十进制正整数转8位无符号二进制整数](#4 十进制正整数转8位无符号二进制整数)
[4.3.2 分类编址的IPv4地址](#4.3.2 分类编址的IPv4地址)
[1 A类地址](#1 A类地址)
[2 B类地址](#2 B类地址)
[3 C类地址](#3 C类地址)
[4.3.3 划分子网的IPv4地址](#4.3.3 划分子网的IPv4地址)
[1 为什么需要划分子网](#1 为什么需要划分子网)
[2 子网掩码](#2 子网掩码)
[3 默认子网掩码](#3 默认子网掩码)
[4.3.4 无分类编址的IPv4地址](#4.3.4 无分类编址的IPv4地址)
[1 CIDR](#1 CIDR)
[2 路由聚合](#2 路由聚合)
[4.3.5 IPv4地址的应用规划](#4.3.5 IPv4地址的应用规划)
[1 定长的子网掩码](#1 定长的子网掩码)
[2 变长的子网掩码](#2 变长的子网掩码)
[4.4 IP数据报的发送和转发过程](#4.4 IP数据报的发送和转发过程)
[4.4.1 直接交付和间接交付](#4.4.1 直接交付和间接交付)
[4.4.2 广播数据报情况](#4.4.2 广播数据报情况)
[4.4.3 练习题](#4.4.3 练习题)
[4.5 静态路由配置及其可能产生的路由环路问题](#4.5 静态路由配置及其可能产生的路由环路问题)
[4.5.1 静态路由配置](#4.5.1 静态路由配置)
[4.5.2 默认路由](#4.5.2 默认路由)
[4.5.3 特定主机路由](#4.5.3 特定主机路由)
[4.5.4 静态路由配置错误导致路由环路](#4.5.4 静态路由配置错误导致路由环路)
[4.5.4 聚合了不存在的网络而导致路由环路](#4.5.4 聚合了不存在的网络而导致路由环路)
[4.5.5 网络故障而导致路由环路](#4.5.5 网络故障而导致路由环路)
[4.6 路由选择协议](#4.6 路由选择协议)
[4.6.1 路由选择协议概述](#4.6.1 路由选择协议概述)
[1 因特网采用分层次的路由选择协议](#1 因特网采用分层次的路由选择协议)
[2 常见的路由选择协议](#2 常见的路由选择协议)
[3 路由器的基本结构](#3 路由器的基本结构)
[4.6.2 路由信息协议RIP的基本工作原理](#4.6.2 路由信息协议RIP的基本工作原理)
[4.6.3 开放最短路径优先OSPF的基本工作原理](#4.6.3 开放最短路径优先OSPF的基本工作原理)
[4.6.4 边界网关协议BGP的基本工作原理](#4.6.4 边界网关协议BGP的基本工作原理)
[4.7 IPv4数据报的首部格式](#4.7 IPv4数据报的首部格式)
[4.7.1 版本](#4.7.1 版本)
[4.7.2 首部长度](#4.7.2 首部长度)
[4.7.3 可选字段](#4.7.3 可选字段)
[4.7.4 填充字段](#4.7.4 填充字段)
[4.7.5 区分服务](#4.7.5 区分服务)
[4.7.6 总长度](#4.7.6 总长度)
[4.7.7 标识&标志&片偏移](#4.7.7 标识&标志&片偏移)
[1 概念](#1 概念)
[2 举例-对IP数据报进行分片](#2 举例-对IP数据报进行分片)
[4.7.8 生存时间TTL](#4.7.8 生存时间TTL)
[1 概念](#1 概念)
[2 举例-生存时间TTL字段的作用------防止IP数据报在网络中永久兜圈](#2 举例-生存时间TTL字段的作用——防止IP数据报在网络中永久兜圈)
[4.7.9 协议](#4.7.9 协议)
[4.7.10 首部检验和字段](#4.7.10 首部检验和字段)
[4.7.11 源IP地址和目的IP地址](#4.7.11 源IP地址和目的IP地址)
[4.7.12 练习题](#4.7.12 练习题)
[4.8 网际控制报文协议ICMP](#4.8 网际控制报文协议ICMP)
[4.8.1 ICMP介绍](#4.8.1 ICMP介绍)
[4.8.2 ICMP差错报告报文分类](#4.8.2 ICMP差错报告报文分类)
[1 终点不可达](#1 终点不可达)
[2 源点抑制](#2 源点抑制)
[3 时间超过](#3 时间超过)
[4 参数问题](#4 参数问题)
[5 改变路由](#5 改变路由)
[4.8.3 ICMP差错报告报文不可发送的情况](#4.8.3 ICMP差错报告报文不可发送的情况)
[4.8.4 ICMP询问报文分类](#4.8.4 ICMP询问报文分类)
[4.8.5 ICMP应用举例](#4.8.5 ICMP应用举例)
[1 分组网间探测PING](#1 分组网间探测PING)
[2 跟踪路由](#2 跟踪路由)
[4.9 虚拟专用网vpn与网络地址转换NAT](#4.9 虚拟专用网vpn与网络地址转换NAT)
[4.9.1 虚拟专用网vpn](#4.9.1 虚拟专用网vpn)
[4.9.2 网络地址转换NAT](#4.9.2 网络地址转换NAT)
4 网络层
4.1 网络层概述

具体内容如下。
4.1.1 网络层的主要任务

需要说明的是为了简单起见,有时我们可以不用画出这些网络。而将它们看作是一条链路。

对于互联网而言,仅实现计算机网络体系结构中的物理层和数据链路层是不能实现数据包在互联网中各网络之间传输的。
要实现该功能,就必须实现网络层。
4.1.2 网络层要解决的问题
网络层需要解决以下主要问题。
1 向运输层提供可靠/不可靠服务

数据包在传输过程中可能会出现误码,也有可能由于路由器繁忙而被路由器丢弃,还有可能出现按序发送的数据包不能按序到达接收方。误码、分组丢失、分组乱序
如果网络层对于上述传输错误不采取任何措施,则提供的是不可靠传输服务。
如果网络层对于上述传输错误采取措施,并使得接收方能正确接收发送方所发送的数据包,则提供的是可靠传输服务。
不同网络体系结构所提供的服务可能是不同的。例如因特网使用的TCP/IP协议体系的网际层,提供的是无连接的、不可靠的数据报服务。而ATM,帧中继和x.25的网络层提供的都是面向连接的可靠的虚电路服务。
IP路由器,工作在TCP/IP体系结构的网际层(或称IP层),TCP/IP体系结构的网际层不负可靠传输,也就是不能确保传输的IP分组不丢失。
2 寻址问题
网络层需要解决的第二个主要问题是寻址问题。例如TCP/IP协议体系的网际层使用IP地址。
我们来举例说明。
这是网络N1上两个路由器接口各自所分配的IP地址。他们的前三个数是相同的,可以看作是他们所在网络的网络编号。而第四个数各不相同,用于区分这两个不同的路由器接口。
这是网络N3上两个路由器接口各自所分配的IP地址。他们的前两个数是相同的,可以看作是他们所在网络的网络编号。而后两个数不完全相同,用于区分这两个不同的路由器接口。
这是网络N7上两个路由器接口各自所分配的IP地址。
他们的第一个数是相同的,可以看作是他们所在网络的网络编号。而后三个数不完全相同,用于区分这两个不同的路由器接口。

3 路由选择
如图所示。数据包从源站到达目的站可以走这样一条路径。也可以走这样一条路径。对于本地还有其他路径可走,我们就要不一一演示了。
那么路由器收到数据包后是依据什么来决定将数据包从自己的哪个接口转发出去的?这个问题在我们之前的课程中曾简单介绍过。
不知大家是否还记得。没错,依据的是数据包中的目的地址和路由器中的路由表。

例如。这是路由器R1的路由表。里面记录着路由器R1所知道的网络以及数据包要到达这些网络应该从自己的哪个接口转发?
假设R1知道数据包要到达网络N7,下一跳应将其转发给路由器R4,则路由表中应该有这样一条记录。而数据包要到达网络N6,下一跳应将其转发给路由器R2,则路由表中应该有这样一条。
请大家想想看刚才是我们假设R1知道这些路由记录。但在实践当中,路由器是如何得出这样的路由器路?
有两种方法,一种是由用户或网络管理员进行人工配置 。
这种方法只适用于++规模较小且网络拓扑不改变的小型互联网++。
另一种是实现各种路由选择协议 ,由路由器执行路由选择协议中所规定的路由选择算法,而自动得出路由表中的路由记录。这种方法更适用于++规模较大且网络拓扑经常改变的大型互联网++。

4 TCP/IP协议栈
因特网是目前全世界用户数量最多的互联网。

TCP/IP协议栈的网际层中除网际协议IP以外,还有地址解析协议ARP等。
总结

4.2 网络层提供的2种服务
4.2.1 面向连接的虚电路服务
我们首先来看面向连接的虚电路服务。
如图所示。这是一个小型的互联网,这是主机中的五层原理体系结构。
虚电路服务的核心思想是可靠通信应由网络自身来保证。
当两台计算机进行通信时,应当首先建立网络层的连接,也就是建立一条虚电路,以保证通信双方所需的一切网络资源。
然后双方就要沿着已建立的虚电路发送分组。需要说明的是,虚电路表示这是一条逻辑上的连接 ,分组都沿着这条逻辑连接按照存储转发方式传送 ,而不是真正建立了一条物理连接。而采用电路交换的电话通信则是先建立一条真正的连接。
因此。分组交换的虚连接与电路交换的连接只是类似,但并不完全一样。
分组的首部仅在连接建立阶段使用完整的目的主机地址,之后每个分组的首部只需携带一条虚电路编号。
这种通信方式如果再使用可靠传输的网络协议,就可使所发送的分组最终正确到达接收方。
通信结束后需要释放之前所建立的虚电路。
很多广域分组交换网都使用这种面向连接的虚电路服务。例如,曾经的X.25和逐渐过时的帧中继,异步传输模式等。
然而因特网的先驱者。并没有采用这种设计思路,而是采用了无连接的数据报服务。


4.2.2 无连接的数据报服务
数据报服务的核心思想是可靠通信应当由用户主机来保证。
当两台计算机进行通信时,他们的网络层不需要先建立连接。
每个分组可走不同的路径。
因此分组的首部必须携带目的主机的完整地址。这种通信方式所传送的分组可能误码、丢失、重复和失序。
由于网络本身不提供端到端的可靠传输服务,这就使得网络中的路由器可以做的比较简单。比电信网交换机价格低廉。
因特网就采用了这种设计思想,将复杂的网络处理功能置于因特网的边缘,也就是用户主机和其内部的运输层,而将相对简单的尽最大努力的分组交付功能置于因特网核心。
采用这种设计思想的好处是网络的造价大大降低,运行方式灵活,能够适应多种应用。因特网能发展到今日的规模,充分证明了当初采用这种设计思想的正确性。


4.3 IPv4地址
4.3.1 IPv4地址概述

具体内容如下。
1 IPv4地址介绍

2 IPv4地址表示方法-点分十进制表示

3 8位无符号二进制整数转十进制数

4 十进制正整数转8位无符号二进制整数
降2取余法和凑值法

总结

4.3.2 分类编址的IPv4地址

具体内容如下。
IPv4地址编址方法的第一个历史阶段------分类编址的IPv4地址。
分类编址的IPv4地址分为5类。

1 A类地址
可指派的A类网络的数量是多少?
从0000001到1111110,2^7 - 2

每个A类网络中可分的IP地址数量是多少?
从0000...01到11111...0, 2^24 - 2

2 B类地址

思考:每个网络可分配的IP地址数量为
2^16 × 注意,主机号全0是网络地址,主机号全1是广播地址。


128.0.0.1 荷兰
3 C类地址


练习

根据左起第一个十进制的值,可以判断网络类别
A类(0开头):0~127
B类(10开头):128-191
C类(110开头):192-223
A类网络号,左起第一个字节,B类网络号为左起前两个字节,C类网络号为左起前三个字节。
以下情况的地址不能指派给主机或路由器接口
A类网络号为0和127的地址,A类主机号为0.0.0和255.255.255的地址
B类主机号为0.0和255.255的地址
C类主机号为0和255的地址
答案
A 不可,最小网络号,保留不指派
A 可以
A 不可,广播地址
A 不可,本地环回测试地址
B,不可,广播地址
B,可以
B,不可,广播地址
B,可以
C,不可,广播地址
C,可以
C,可以
C,可以
耶斯,全对
练习题2

解析
地址0.0.0.0
地址127.0.0.1
地址255.255.255.255

补充
一般不使用的特殊IP地址

练习题3

1 指出图中有哪些网络

2 各网络主机和路由器接口数量

解析
A类网络每个网络的IP地址数量为16777214
B类网络每个网络的IP地址数量为65534
C类网络每个网络的IP地址数量为254
① 该网络的主机数量为65534加上1个路由器接口,需要可分配的IP地址数量为65535,只能给该网络分配一个A类网络号。
② 该网络的主机数量为254加上1个路由器接口,需要可分配的IP地址数量为255。可以给该网络分配一A类或B类网络号。本着节约IP地址的原则,给该网络分配一个B类网络号。
③ 该网络的主机数量为40再加上1个路由器接口,需要可分配的IP地址数量为41。给该网络分配一个A类B类或C类网络号。本着节约IP地址的原则,给该网络分配一个C类网络号。
④ 该网络没有主机,只有两个路由器接口。需要可分配的IP地址数量为2。给该网络分配一个A类B类或C类网络号。本着节约IP地址的原则,给该网络分配一个C类网络号。
3 根据每个网络确定的网络号类别,为每个网络挑选一个网络号

解析
① A类网络号的取值范围是1到126,可在该范围内挑选一个网络号分配给这个网络。
② B类网络号的取值范围是128.0到191.255,可在该范围内挑选一个网络号分配给这个网络。
③ C类网络号的取值范围是192.0.0到223.255.255,可在该范围内挑选一个网络号分配给这个网络。
④ 192.0.0到223.255.255中挑选另一个分配给第四个网络。不同网络的网络号不能相同。
网络号分配完毕后,就可给各网络中的各主机和路由器的接口分配IP地址了。
需要注意的是,所分配的IP地址应该互不相同,并且其主机号部分不能出现全零,因为这是网络地址,也不能出现全一,因为这是广播地址。网络地址或广播地址都不能分配给主机或路由器的接口。因为他们无法唯一标识一台主机或路由器的某个接口。
总结

4.3.3 划分子网的IPv4地址

具体内容如下。
IPv4地址编址方法的第二个历史阶段------划分子网的IPv4地址。
1 为什么需要划分子网
我们首先来举例说明为什么会出现划分子网这样的需求。
如图所示,某单位有一个大型的局域网需要连接到因特网。
如果申请一个C类网络地址,其可分配的IP地址数量只有254个,不够使用,因此该单位申请了一个B类网络地址,即可分配的IP地址数量达到了65534个。

给每台计算机和路由器的接口分配一个IP地址后还有大量的IP地址剩余,这些剩余的IP地址只能由该单位的同一个网络使用,而其他单位的网络不能使用。

随着该单位计算机网络的发展和建设,该单位新增了一些计算机,并且需要将原来的网络划分成三个独立的网络。
我们称其为子网1子网2和子网3。
假设子网1仍然使用原先申请到的B类网络地址,那么就需要为子网2和子网3各自申请一个网络地址。

但这样会存在一些弊端:① 申请新的网络地址需要等待很长的时间,并且要花费更多的费用。② 即便申请到了两个新的网络地址,这也会使其他路由器的路由表新增针对这两个新的网络的路由记录。③ 另外这样还会浪费原有网络中剩余的大量IP地址。

如果可以从IP地址的**主机号部分借用一些位作为子网号来区分不同的子网,**就可以利用原有网络中剩余的大量IP地址,而不用申请新的网络地址。
例如,对于本例,我们可以借用16位主机号中的8位作为子网号。

假设我们给子网1分配的子网号为0,给子网2分配的子网号为1,给子网3分配的子网号为2之后,就可以给个子网中的主机和路由器接口分配IP地址了。


现在请大家思考这样一个问题。
如果我们未在图中标记子网号部分,那么我们和计算机又是如何知道分类地址中主机号有多少位被用作了子网号?
这样我们就要引出了一个划分子网的工具------子网掩码。

2 子网掩码
当从主机号部分借用一些位作为子网号时,IP地址从两级结构的分类IP地址,变成了三级结构的划分子网的IP地址。

练习题

解析

先来看分配的C类网络地址的细节。

可以划分出两个子网

练习题2

练习题3

D
耶斯,做对了
解析


注意
主机所在子网是确定的,因为给出了子网掩码。
3 默认子网掩码
默认子网掩码取值就是各类网络的网络号比特位取1,主机号比特取0得到的。

总结

4.3.4 无分类编址的IPv4地址

具体内容如下
IPv4地址编址方法的第三个历史阶段------无分类编址的IPv4地址。
1 CIDR
读作sider


示例


练习题

做对啦
解析

2 路由聚合
如图所示,路由器R1与五个网络以及路由器R2直接相连。路由器R1和R2互为相邻路由器,他们周期性地通告自己所知道的路由信息给对方。
请大家思考一下R1应该将怎样的路由信息通告给R2?
如果R1将自己直连的这五个网络的路由记录都通告给R2。则R的路由表会增加五条路由记录,如图所示。

为了减少路由记录对路由表的占用,能否将这五条路由记录聚合成一条?
答案是肯定的,其方法是找共同前缀,也就是找出这五个目的网络地址的共同前缀。
这五个目的网络地址的左起前两个字节都是相同的,从第三个字节开始不同,因此只需将第三个字节转换成二进制形式。
这样就可以很容易找出这五个目的网络地址的共同前缀。一共22个比特,我们将其记为斜线22。
将共同前缀保持不变,而剩余的十个比特全部取零。然后写成点分十进制形式,放在斜线22的前面。这就是聚合后的地址块,也可以称为超网。
通过本例我们还可以看出,网络前缀越长,地址会越小,路由就越具体。
需要说明的是,若路由器查表转发分组时,发现有多条路由可选**,则选择网络前缀最长的那条。这称为最长前缀匹配,因为这样的路由更具体** 。

练习题

解析
CIDR消除了ABC类网络地址的概念,以及子网的概念。CIDR的地址包括网络前缀和主机编号。

因此192.168.4.3广播地址的IP分组可以被该网络的所有主机或路由器接口接收,那么主机数为2
。
练习题2

C
路由聚合的方法是找共同前缀

总结

4.3.5 IPv4地址的应用规划
具体内容如下。
本节课我们介绍IPv4地址的应用规划。即给定一个IPv4地址块,如何将其划分成几个更小的地址块?并将这些地址会分配给互联网中的不同网络,进而可以给各网络中的主机和路由器接口分配IPV四地址。
一般有以下两种方法。一种是采用定长的子网掩码进行划分,另一种是采用变长的子网掩码进行划分。
所谓定长的子网掩码。就是使用同一个子网掩码来划分子网。所谓变长的子网掩码。就是使用不同的子网掩码来划分子网。
采用定长的子网掩码来划分子网,每个子网所分配的IP地址数量相同,容易造成IP地址浪费,而采用变长的子网掩码来划分子网,各子网所分配的IP地址数量可以不相同,尽可能减少了对IP地址的浪费。

1 定长的子网掩码
采用定长的子网掩码划分子网。
根据子网数确定子网号的比特数,然后减法得到主机号的比特数。
举例说明
假设我们申请到了一个C类网络218.75.230.0,要使用定长的子网掩码,给图中所示的小型互联网中的各设备分配IP地址。
我们首先来统计一下图中各网络所需的IP地址数量。
网络N1的IP地址需求,N1装有6台主机,因此主机需要的地址数量为6个。有一个路由器接口,因此路由器接口需要的地址数量为1个。加上N1自身的网络地址1个和广播地址1个,总共需要9个IP地址。
再来看网络N2的IP地址需求,N2中有25台主机,因此主机需要的地址数量为25个。有一个路由器接口,因此路由器接口需要的地址数量为1个,再加上N2自身的网络地址1个和广播地址1个,总共需要28个IP地址。
相信同学们可以很容易地统计出网络N3和N4各自所需的IP地址数量,我们就要不再赘述了。
请注意我们可将图中两个路由器之间的这段链路看成是网络N5,其中没有主机,因此。主机需要的地址数量为0,有两个路由器接口,因此路由器接口需要的地址数量为2个,再加上N5自身的网络地址1个和广播地址1个,总共需要4个IP地址。
这样我们就可得到本例的应用需求,也就是将C类网218.75.230.0划分成5个子网。
每个子网上可分配的IP地址数量不得少于各自的需求。

这是所申请到的C类网地址218.75.230.0,这是他的3字节网络号。这是它的1字节主机号。
我们需要从主机号部分借用3个比特作为子网号,这样可划分出的子网数量为2的3次方个,也就是8个,可以满足我们对子网数量的要求。而每个子网上的地址数量为2的8-3次方,也就是32个,可以满足我们对子网上IP地址数量的要求。
这样我们就可以得出划分子网所需的子网掩码,用三个十进制数255来对应网络号部分,也就是要24个连续的比特1来对应网络号。而最后8个比特为11100000,其中三个连续的比特1表示从主机号部分借用3个比特作为子网号。将这8比特写成十进制数为224。


接下来我们来看划分子网的细节。这是24比特网络号部分。这是从主机号部分借用的3比特作为子网号部分。这是剩余的5比特主机号部分。
这是子网1的网络地址,这是它的点分十进制形式,将网络号和子网号保持不变,主机号从5个比特0增长到5个比特1,就可得到此网网络的广播地址,这是它的点分十进制形式。
这是比子网1的网络地址大1的地址。他是子网1上可分配给主机或路由器接口的最小地址,这是它的点分十进制形式。
这是比子网1的广播地址小1的地址,是子网1上可分配给主机或路由器接口的最大地址,这是它的点分十进制形式。
这是比子网1的广播地址大1的地址,他是子网2的网络地址,这是它的点分十进制形式。
将网络号和子网号保持不变。主机号从5个比特0增长到5个比特1就可得到子网2的广播地址。
以此类推。

我们可以得到划分子网的全部细节。现在我们就可以从子网1到8中任选5个分配给图中的网络N1到N5。

通过本例可以看出,采用定长的子网掩码进行子网划分,只能划分出2的N次方个子网,其中N是从主机号部分借用的,用来作为子网号的比特数量。
每个子网所分配的IP地址数量相同,容易造成IP地址的浪费。例如图中的网络5只需要4个IP地址,但是我们只能给他分配32个IP地址,这样就造成了IP地址的严重浪费。

2 变长的子网掩码
接下来我们举例说明。采用变长的子网掩码划分子网的方法。
这是我们之前就统计过的各网络所需IP地址的数量。
既然网络N1需要9个地址,那么分配给网络N1的地址的主机号应为4个比特。因为2的4次方等于16,这样网络N1就可以有16个地址。由于使用4个比特作为主机号,因此剩余28个比特可作为网络前缀。
根据主机和路由器接口数确定主机号的比特数,然后减法得到网络前缀。
既然网络N2需要28个地址,那么分配给网络N2的地址的主机号应该为5个比特,因为2的5次方等于32。这样网络N2就可以有32个地址。由于使用5个比特作为主机号,因此剩余27个比特可作为网络前缀。
相信同学们可以很容易地得出分配给网络N3N4N5的地址中的主机号所占比特数量和网络前缀所占比特数量。

我们将所得出的各网络所需地址块的大小标注在他们各自的旁边。

这样我们就可得到本例的应用需求,也就是从地址块218.275.230.0/24中取出5个地址块按需分配给图中所示的5个网络。218.275.230.0/24地址块所包含的全部地址如下所示。
我们需要在该地址块中给图中所示的网络N1到N5分配子块。
分配的原则是每个子块的起点位置不能随意选取,只能选取块大小整数倍的地址作为起点。

建议大家先给大的子块进行分配。例如将这32个地址作为一个地址块分配给网络N2。地址块中最小的地址就是N2的网络地址,最大的地址就是N2的广播地址,网络地址和广播地址之间的这些地址可分配给N2中的主机或路由器接口。我们将网络N2所分配到的地址块标注在他的旁边。
将这16个地址作为一个地址块分配给网络N1。地址化妆最小的地址就是N1的网络地址,最大的地址就是N1的广播地址。网络地址和广播地址之间的这些地址可分配给N1中的主机或路由器接口。我们将网络N1所分配到的地址块标注在他的旁边。
将这16个地址作为一个地址块分配给网络N3。地址块中最小的地址就是N3的网络地址。最大的地址就是N3的广播地址。网络地址和广播地址之间的这些地址可分配给N3中的主机或路由器接口我们将网络N3所分配到的地址块标注在他的旁边。
将这16个地址作为一个地址块分配给网络N4。地址块装最小的地址就是N4的网络地址。最大的地址就是N4的广播地址。网络地址和广播地址之间的这些地址可分配给N4中的主机或路由器接口。
我们将网络N4所分配到的地址块标注在他的旁边。
将这4个地址作为一个地址块分配给网络N5,地址块中最小的地址就是N5的网络地址。最大的地址就是N5的广播地址。网络地址和广播地址之间的这些地址可分配给N5中的主机或路由器接口。
我们将网络N5所分配到的地址块标注在他的旁边。
原地址会中还剩余这些地址可以留作今后分配。

通过本地可以看出采用变长的子网掩码进行子网划分。可以按需划分出相应数量的子网。每个子网所分配到的IP地址数量可以不相同,尽可能减少了对IP地址的浪费,例如。图中的网络5只需要4个IP地址,我们也非常精确地给他分配了4个IP地址,没有造成IP地址的浪费。
练习题

不做了。
总结

4.4 IP数据报的发送和转发过程

具体内容如下。

4.4.1 直接交付和间接交付
在下图所示的小型互联网中,路由器的接口0直连了一个交换式以太网,接口1也直连了一个交换式以太网。
我们给该网络分配了这样的网络地址和子网掩码,给网络中的各主机和路由器的接口配置了相应的IP地址和子网掩码,如图所示。
我们给另一个网络分配了这样的网络地址和子网掩码,给网络中的各主机和路由器的接口配置了相应的IP地址和子网掩码,如图所示。

我们知道从一个网络中的主机之间可以直接通信,这属于直接交付 。不同网络中的主机之间的通信需要通过路由器来中转,这属于间接交付。
那么源主机如何判断出目的主机是否与自己在同一个网络中?

我们来举例说明,假设主机C要给主机F发送IP数据报。
主机C将自己的IP地址和子网掩码 相与就可以得到主机C所在网络的网络地址。
既然主机C要给主机F发送IP数据报,那主机C肯定知道主机F的IP地址,否则就要没法发送了。
主机C将主机F的IP地址与自己的子网掩码相与就可得到目的网络地址。
该地址与主机C的网络地址不相等,因此主机C就知道了主机F与自己不在同一个网络。
诶,这里是将主机F的IP地址与主机C的子网掩码相与获得的主机F的网络地址。
看了下4.3.3 应该是主机F的IP地址与自己(主机F)的子网掩码相与获得主机F的网络地址,只是这里主机C与主机F的子网掩码恰好相同了。
因此主机C与主机F之间的通信属于间接交付。

主机C需要将IP数据报传输给路由器,由路由器将IP数据报转发给主机F。
那么主机C又是如何知道应该把IP数据报交给哪个路由器进行转发?
实际上,用户为了让本网络中的主机能和其它网络中的主机进行通信 ,就**必须给其指定本网络中的一个路由器,**由该路由器帮忙进行转发。
所指定的路由器,也被称为默认网关。
吐槽向,一个被指定的路由器,还得起名叫默认网关。

对于本例,我们可以将路由器接口0的IP地址 指定给该接口所直连网络中的各个主机,作为默认网关。
同理,可将路由器接口1的IP地址指定给该接口所直连网络中的各个主机作为默认网关。
这样当本网络中的主机要和其他网络中的主机进行通信时,会将IP数据报传输给默认网关,由默认网关帮主机将IP数据包转发出去。

假设本例中的主机A要给主机D发送IP数据报,这属于间接交付。
主机A会将该IP数据报传输给自己的默认网关,也就是图中所示的路由器。
那么当路由器收到IP数据报后,又是如何转发的?

路由器首先会检查IP数据报的首部是否出错?若出错,则丢弃该IP数据报并通告源主机。
若没有出错,则进行转发。
路由器根据IP数据报首部中的目的地址,在自己的路由表中查找匹配的路由条目。
若找到匹配的路由条目,则转发给路由条目中指示的下一跳。若找不到,则丢弃该IP数据报并通告源主机。

为了简单起见,我们假设本地中的IP数据报首部没有出现差错。
路由器取出IP数据报首部各地址字段的值。源地址字段的值为主机A的IP地址,目的地址字段值为主机B的IP地址。
接下来路由器就要对该IP数据报进行查表转发了。

这是路由器的路由表。当我们给路由器的接口配置IP地址和子网掩码时,路由器就知道了自己的该接口与哪个网络是直连的。
例如,在本例中,接口0所直连的网络是192.168.0.0,相应的地址掩码为255.255.255.128,不需要下一跳路由器,因为接口0与该网络是直连的。接口1所直连的网络是192.168.0.128,相应的地址掩码为255.25 5.255.128,不需要下一跳路由器,因为接口1与该网络是直连的。
需要说明的是,路由表中可能还会有其他路由条目,这可以是用户或网络管理员手工配置的静态路由,也可以是路由器使用路由协议自动获取到的动态路由。我们将在后续课程中详细介绍这部分内容。本节课就不再赘述了。

接下来路由器,根据IP数据报的目的地址,在自己的路由表中查找匹配的路由条目。

逐条检查路由条目。将目的地址与路由条目中的地址掩码相与得到目的网络地址。该目的网络地址与路由条目中的目的网络地址不相同,则这条路由条目不匹配。

再检查下一条路由条目,将目的地址与下一条路由条目中的地址掩码相与,得到目的网络地址。该目的网络地址与路由条目中的目的网络地址相同,则这条路由条目就是匹配的路由条目。

按照他的下一跳,也就是从接口1转发该IP数据报。
这样主机D就可以收到路由器转发来的该IP数据报。
需要说明的是我们这里所介绍的路由器查表转发IP数据包的过程,只是为了让同学们理解其最基本的工作原理。在路由器的实际研发过程中,需要设计很好的数据结构,以便提高查找速度。

4.4.2 广播数据报情况
再来看这种情况,假设主机A给本网络上的各设备发送了一个广播IP数据报。
在数据报首部中的目的地址字段可以填写的目的地址为192.168.0.127。这是本网络的广播地址,也可以填写255.255.255.255,这是受限的广播地址。
该网络中的各设备都会收到该广播IP数据报。
但是路由器收到后并不会转发该数据包,也就是说,路由器是隔离广播域的。
这是很有必要的。试想一下,如果因特网中数量巨大的路由器收到广播IP数据报后都进行转发。则会造成巨大的广播风暴 ,严重浪费因特网资源。

同理,主机A给另一个网络发送广播IP数据报,在数据报首部中的目的地址字段填写的目的地址为192.168.0.255,这是网络192.168.0.128的广播地址。
主机A将该广播IP数据报传输给路由器,希望由路由器转发。
但路由器判断出这是广播IP数据报不会转发。

4.4.3 练习题
练习题1

解析

练习题2

解析
关于IP路由器概念,记住第三项内容

练习题3

解析


总结

4.5 静态路由配置及其可能产生的路由环路问题

具体内容如下。

4.5.1 静态路由配置
如图所示,这是采用的网络拓扑和相应的IP地址配置。

这是路由器R1的路由表。路由器R1通过自己的接口0所配置的IP地址和地址掩码,可以自动得出接口0所在的网络。由于接口0与该网络直连则下一跳不是路由器地址,而是通过接口0转发IP数据报给该网络中的某个主机,这属于直接交付。这条自动得出的路由条目的类型,属于直连路由。同理,R1还可自行得出接口1的直连网络路由条目。
这是路由器R2的路由表。这是其接口0的直连网络路由条目。这是其接口1的直连网络路由条目。


假设R1要转发一个IP数据报给该网络(192.160.2.0/24)中的某个主机。
从图中可以看出,R1应该将该IP数据报转发给路由器R2的接口0。
但R1的路由表中并没有关于该目的网络的路由条目。换句话说,R1并不知道目的网络的存在。
因此我们可以使用路由器的相关配置命令给R1添加一条到达该目的网络的路由条目。
这是该目的网络的地址。
下一跳为路由器R2的接口0的IP地址(即10.0.0.2)。该路由条目是我们人工配置的静态路由。

假设R2要转发一个IP数据报给该网络(192.168.1.0/24)中的某个主机。
从图中可以看出,R2应该将该IP数据报转发给路由器R1的接口1,但R2的路由表中并没有关于该目的网络的路由条目。
因此我们可以给R2添加一条到达该目的网络的路由条目。这是该目的网络的地址,下一跳为路由器R1的接口1的IP地址,地址类型为静态。
以上就是我们举例说明的静态路由配置。

4.5.2 默认路由
假设路由器R2的接口2连接到了因特网。
这是路由器R1的路由表,这是其接口0的直连网络路由条目。这是其接口1的直连网络路由条目。这是我们人工配制的到达该目的网络的静态路由。

假设R1要转发一个IP数据报给因特网中某个网络中的某个主机。
从图中可以看出,R1应该将该IP数据报转发给路由器R2的接口0。
由于因特网中包含了众多的网络,如果我们给R1添加针对这些网络的每一条路由条目,则会给人工配制带来巨大的工作量,并且使R1的路由表变得非常,降低了查表转发的速度。
实际上,对于具有相同下一跳的不同目的网络的路由条目。我们可以用一条默认路由条目来替代。
默认路由条目中的目的网络地址为0.0.0.0,地址源码也为0.0.0.0,其CIDR形式为0.0.0.0/0。
对于本例默认路由条目中的下一跳是路由器R2的接口0的地址。
由于默认路由也是由我们人工配制的,因此其类型也是静态。

在配置了默认路由条目后,我们甚至可以删除这条路由条目。

4.5.3 特定主机路由
接下来我们举例说明特定主机路由的概念。
有时候我们可以给路由器添加针对某个主机的特定主机路由条目,一般用于网络管理人员对网络的管理和测试。另外,在需要考虑某种安全问题时,也可以采用特定主机路由。
假设这是该网络中的某台特定主机。
我们可以在R1的路由表中添加一条到达该主机的特定主机路由条目。特定主机路由条目中的目的网络地址为该特定主机的IP地址,掩码为255.255.255.0,其CIDR形式为特定主机IP地址/32。
对于本地特定主机路由条目中的下一跳是路由器R2的接口0的地址。由于特定主机路由也是由我们人工配制的,因此其类型也是静态。

可以看出特定主机路由的目的网络前缀最长,路由最具体。
默认路由的目的网络前缀最短,路由最模糊。
当路由器查表转发IP数据报时,若有多条路由条目可选,则采用最长前缀匹配的原则,选用目的网络前缀最长的那个路由条目进行转发。

4.5.4 静态路由配置错误导致路由环路
如图所示,这是个路由器自动得出的直连网络,这是我们给个路由器人工配置的静态路由。

我们来看看路由器R2中的这条人工配置的静态路由条目。它表明,R2要转发IP数据报到该网络,下一跳应转发给R1的接口1。

假设我们将下一跳错误配置成了该地址10.0.1.2,也就是错误指向了R3的接口0,则当R2要转发IP数据报到该网络,R3收到该IP数据报后进行查表转发。


R3找到了匹配的路由条目,下一跳应该转发给该地址,也就是转发给R2的接口1,收到该IP数据包后进行查表转发。
R2找到了匹配的路由条目,下一跳应该转发给该地址,也就是转发给R3的接口0。
很显然,由于我们静态路由配置错误,导致R2和R3之间产生了路由环路。
为了防止IP数据报在路由环路中永久兜圈,在IP数据报首部设有生存时间TTL字段。IP数据报进入路由器后,TTL字段的值被路由器减一,若ttl字段的值减一后不等于零,则被路由器转发,否则被丢弃。

4.5.4 聚合了不存在的网络而导致路由环路
p49 8:45
4.5.5 网络故障而导致路由环路
p49 12:24
总结

4.6 路由选择协议
4.6.1 路由选择协议概述

具体内容如下。

因特网是全球最大的互联网络,选择动态路由选择协议。

1 因特网采用分层次的路由选择协议

外部网关协议EGP和内部网关协议RIP只是路由选择协议的分类名称,不是具体的路由选择协议。
名称中使用网关这个名次,是因为在因特网早期的RFC文档中,没有使用路由器,而使用了网关这一名次。现在最新的RFC文档中又改用路由器这一名词。
因此,外部网关协议RGP可以改称为外部路由协议ERP,内部网关协议IGP可改称为内部路由协议IRP。
在一个自治系统内部使用的具体的内部网关协议,与因特网中其他自治系统选用何种内部网关协议无关。例如,下图左边的自治系统内部网关协议使用的是路由信息协议RIP,右边的自治系统内部网关协议使用的是开放式最短路由优先OSPF协议。自治系统之间使用的外部网关协议为边界网关协议BGP.

2 常见的路由选择协议
路由选择协议是在路由器上运行的。

下面,来看路由器的基本结构。
3 路由器的基本结构
如下图所示,路由器是一种具有多个输入端口和输出端口的专用计算机,任务是转发分组。

整个路由器可以划分为两大部分,路由选择部分和分组转发部分。
路由选择部分的核心构件是路由选择处理机,其任务是**根据所使用的路由选择协议(个人理解这里属于动态路由选择),周期地与其他路由器进行路由信息的交互,**来更新路由表。
个人理解这里属于动态路由选择,因此可以自动获取路由信息。
自动获取路由信息实现的方法:路由选择处理机周期地与其他路由进行路由信息的交互。
至于具具体自动获取路由信息的方法:路由选择协议,比如RIP协议,以及后面4.6节内讲到的协议。
分组转发部分由三部分构成,分别是交换结构、一组输入端口、一组输出端口。

分组交换部分。
信号从某个输入端口进入路由器,物理层将信号转换成比特流,送交数据链路层处理。
数据链路层从比特流中识别出帧,去掉帧头和帧尾后,送交网络层处理。
如果送交网络层的分组是普通待转发的数据分组,则根据分组首部中的目的地址进行查表转发(在交换结构的转发表中查表)。若找不到匹配的转发条目,则丢弃该分组;否则按照匹配条目中所致是的端口进行转发。

网络层更新数据分组首部中某些字段的值,例如将数据分组的生存时间-1,然后送交数据链路层进行封装。
数据链路层将数据封装成帧送交物理层进行处理。
物理层将帧看作是比特流,将其变换成相应的电信号进行发送。

如果送交网络层的分组是路由器之间交换路由信息的路由报文,则将这种分组送交路由选择处理机。
路由选择处理机根据分组的内容更新自己的路由表,注意下图的4条内容。
之前的静态路由配置中,没有严格区分路由器中的路由表和转发表,这样是为了简化问题的分析。后续有关路由选择协议的课程中,依然不区分路由表和转发表。还是以路由表描述问题。

路由选择处理机除了处理收到的路由报文外,还会周期性地给其他路由器发送自己所知道的路由信息。

路由器的各端口还应具有输入缓冲区和输出缓冲区。
输入缓冲区用于暂存新进入路由器还来不及处理的分组。
输出缓冲区用于暂存已经处理完毕但来不及发送的分组。
说明:路由器的端口一般都具有输入和输出的功能。

总结

4.6.2 路由信息协议RIP的基本工作原理

具体内容如下。
p51




这里省略了RIP的工作原理。


总结

4.6.3 开放最短路径优先OSPF的基本工作原理

具体内容如下。
p52


总结

4.6.4 边界网关协议BGP的基本工作原理

具体内容如下。





总结

4.7 IPv4数据报的首部格式

具体内容如下。
简单起见,后续称IPv4数据报为IP数据报,不指出版本号。
IP数据报的首部格式和内容是实现IP协议主要功能的基础。
IP数据报的首部常以32个比特为单位进行描述。图中每一行都由32个比特(也就是4个字节)构成。
每个小格子称为字段或域。每个字段或某些字段的组合用来表达IP协议的相关功能。
4.7.1 版本

4.7.2 首部长度
4.7.3 可选字段
4.7.4 填充字段

4.7.5 区分服务

4.7.6 总长度


4.7.7 标识&标志&片偏移
1 概念

每种数据链路层协议都规定了帧的数据载荷的最大长度,称为最大传输单元MTU。
若某个IP数据报总长度超过MTU时,将无法封装成帧。需要将原IP数据报分片为更小的IP数据报。再将各IP数据报封装成帧。

片偏移量需为整数,结果不是整数,那分片方案不可行。
2 举例-对IP数据报进行分片
假设使用以太网传送该IP数据报,以太网的最大传送单元MTU为1500字节,即以太网的数据载荷部分最大为1500字节,无法封装3820字节的IP数据报,因此要对IP数据报进行分片,每片长度不能大于1500字节。然后再将每片IP数据报封装成一个以太网帧进行传输。

每个分片的首部不完全相同。

片偏移/8是因为片偏移字段以字节为单位。
现在假设分片2的IP数据报经过某个网络时还需再进行分片。

4.7.8 生存时间TTL
1 概念

2 举例-生存时间TTL字段的作用------防止IP数据报在网络中永久兜圈

人工配置R2路由表路由条目时出错。

当N1网络中的主机要给N2网络中的主机发送数据时。


4.7.9 协议

IP数据报首部的协议字段为1时,表明数据部分是ICMP报文,用ICMP协议封装的协议数据单元。

IP数据报首部的协议字段为6时,表明数据部分是TCP报文,用TCP协议封装的协议数据单元。

4.7.10 首部检验和字段

首部检验和,这里的原理不讲了,感兴趣的自己去看。
4.7.11 源IP地址和目的IP地址

4.7.12 练习题

800字节,至少2个分片,
800 700
|-----|---------|----|----|----|-------|
| | 总长度 | 标识 | MF | DF | 片偏移 |
| | 1500+20 | x | 0 | 0 | 0 |
| 分片1 | 800+20 | x | 1 | 0 | 100 |
| 分片2 | 700+20 | x | 0 | 0 | 700/8 |
做错啦
!!!注意最长传输单元MTU是整个IP数据报的内容,包括IP数据报的首部。
IP分组长度1500B,数据载荷长度则是1480B



练习题2

(1) 解答
以太网数据帧,包括帧头+IP数据报+帧尾。
主机默认网关的MAC地址

从第13个字节开始是IP数据报的部分。
好吧,IP数据报也就是这里的数据载荷,是从第15个字节开始。

IP数据报的第17个字节开始是目的IP地址。
因此这里是第29个字节开始是IP数据报的目的IP地址。
80 64 40 aa
128.100.64.252
错啦

这里以太网数据帧的第一列数据,实际并不是以太网数据帧的内容,仅作为行号。其增量为16,表示每行有16个字节的内容,
啊啊啊,我就知道,但还是怕搞错了。
行号右边才是以太网帧内容,是16进制形式,也给出了ASCII形式。

因此这里web服务器的IP地址是这里帧的第30个字节开始的(2个十六进制数表示一个1字节)。

(4)

总结

4.8 网际控制报文协议ICMP

具体内容如下。
4.8.1 ICMP介绍
主机和路由器使用ICMP来发送差错报告报文和询问报文的。

4.8.2 ICMP差错报告报文分类

1 终点不可达
若R1路由表中没有网络N3的路由记录、默认路由以及主机H2的特定主机路由,则R1就不知道如何转发该数据报,只能将其丢弃,并向发送该数据报的源主机发送ICMP差错报告报文。
个人理解:即便有路由选择协议,最终也需要在用到的时候路由表里可以查到目的网络的下一跳,否则路由器还是不知道如何转发数据报,也只能丢弃。

2 源点抑制
①

此时路由器R2拥塞,即R2比较繁忙。R2会根据自己的丢包策略丢弃该数据报。
②

3 时间超过
情况1



情况2

4 参数问题


5 改变路由
是路由器给主机发送的改变路由报报文。


4.8.3 ICMP差错报告报文不可发送的情况

练习题

C
4.8.4 ICMP询问报文分类

4.8.5 ICMP应用举例

1 分组网间探测PING
在主机的windows命令行中使用ping命令,测试该主机与我校官方网站服务的连通性
命令:ping www.hnust.cn
艹,这就是当时百思不得其解的ping吗?当时学了个屎啊

2 跟踪路由


命令:tracert www.hnust.cn
测试老师的这台主机与学校官方网站服务器要经过哪些路由器。
tracert命令的实现原理
TTL设置为1,到下一个路由器减为0,然后当前路由器给主机发送ICMP差错报告报文,此时H1就知道了到达H2路径中的第一个路由器。H1继续发送封装有ICMP回送请求报文的IP数据报,TTL设置为2,同理,达到下一个的下一个路由器时减为0,然后R2丢弃该数据报,并给主机H1发送差错报告报文,类型为时间超过,然后H1就知道了达到H2路由中的第2个路由器。
最后,到达主机H2,H2发现这是封装ICMP回送请求报文,且TTL为1(到路由器才会-1),因此给主机H1发送封装有ICMP回送请求回答报文的IP数据报。这样H1就知道这时跟踪到路由的最后一站,即目的主机H2。
ppt 1015-1021
总结

4.9 虚拟专用网vpn与网络地址转换NAT

具体内容如下。
4.9.1 虚拟专用网vpn
virtual private network
如何让下面两个专用网络可以通信呢?
方法1:租用电信公司的通信线路,简单方便,但是租金高。

方法2:利用公用的因特网,作为本机构各专用网之间的通信载体。这样形成的专用网又称为虚拟专用网。

虚拟专用网的各主机应该分配怎样的IP地址呢?

可以在因特网数据分配机构IANA的官方网站,查看IPv4地址空间中特殊地址的分配方案。
标红的3个地址块的地址是无需申请的,可自由分配的专用地址,或称私有地址。

这里,给部门A的专用网分配的网络号为10.1.0.0,给部门B的专用网分配的网络号为10.2.0.0.
两个专用网中各主机所分配的私有地址如图所示。
注意:私有地址只能用于一个机构的内部通信,不可用于和因特网上的主机通信。换句话说,私有地址只能用作本地地址而不能用作全球地址。在因特网中的所有路由器,对目的地址是私有地址的IP数据报一律不进行转发。

显然,部门A和B,各自至少需要一个路由器具有合法的全球IP地址,这样他们各自的专用网才能利用公用的因特网进行通信。

假设部门A的主机10.1.0.3要给部门B的主机10.2.0.3发送数据,他会将待发送数据封装成内部IP数据报,发送给路由器R1。

其首部中源地址字段的值为部门A中该主机的IP地址,目的地址字段的值为部门B中主机的IP地址。
R1收到数据报后,发现其目的网络必须通过因特网才能到达,就将该内部IP数据报进行加密,这样就确保了内部IP数据报的安全,然后重新加上数据报的首部,封装成为在因特网上发送的外部数据报。
外部数据报首部的源地址为路由器R1的全球地址,目的地址为路由器R2的全球地址。

路由器R2收到该外部IP数据报后。

去掉其首部,将其数据部分进行解密,恢复出原来的内部IP数据报。这样就可以从其首部提取出源地址和目的地址。
根据内部地址,将该内部IP数据报发送给相应的主机。
显然,两个专用网内的主机间发送的数据报通过了公用的因特网,但在效果上好像是在本机构的专用网上传送一样。
数据报在因特网中可能要经过多个网络和路由器,但从逻辑上看,R1和R2之间好像是一条直通的点对点链路,因此也被称为IP隧道技术。

远程接入vpn
比如大学时候寒暑假在家中要访问校园网内的某些资源,就用到远程接入vpn技术。

4.9.2 网络地址转换NAT
缓解IPv4地址空间即将被耗尽的问题。

ppt 1038-1047
p56 6:35
总结
