写在前面:本博客是《计算机网络》谢希仁第七版的学习笔记,仅供个人学习记录使用
一、网络层概述
-
网络层能够向上提供两种服务:面向连接的虚电路服务、无连接的数据报服务。
(1)虚电路服务是指计算机在通信前先建立一条虚电路,然后通信双方沿着已建立的虚电路发送分组。
(2)数据报服务是指计算机在发送分组时无需先建立连接,每个分组都是独立发送的。
-
网络层最重要的协议:IP协议。
-
与IP协议配套的三个协议:(1)地址解析协议 ARP(Address Resolution Protocol)
(2)网际控制报文协议 ICMP(Internet Control Message Protocol)
(3)网际组管理协议 IGMP(Internet Group Management Protocol)
-
IP地址:IPv4、IPv6。
-
网络层的关键设备:路由器。
二、网际协议 IP
1. IP网/虚拟互连网络
网络互连:用路由器进行网络互连和路由选择。
IP网/虚拟互连网络:利用 IP 协议就可以使这些性能各异的网络从用户看起来好像是一个统一的网络。
互联网:在覆盖全球的 IP 网的上层使用 TCP 协议,就是现在的互联网 (Internet)。
将网络互相连接起来要使用中间设备,中间设备又称为中间系统或中继 (relay)系统。
有以下五种不同的中间设备:
- 物理层中继系统:转发器 (repeater)。
- 数据链路层中继系统:网桥 或 桥接器 (bridge)。
- 网络层中继系统:路由器 (router)。
- 网桥和路由器的混合物:桥路器 (brouter)。
- 网络层以上的中继系统:网关 (gateway)。
2. 直接交付和间接交付
直接交付:主机H1将IP数据报发送给目的主机H2不需要经过任何路由器。
间接交付:主机H1将IP数据报发送给目的主机H2需要先交给路由器R1,R1在查找了自己的路由表以后知道应当把数据报IP转发给R2进行间接交付。
3. IPv4
两级 IP 地址可以记为: I P 地址 : : = { < 网络号 > , < 主机号 > } IP 地址 ::= \left \{ <网络号>, <主机号> \right \} IP地址::={<网络号>,<主机号>}, : : = ::= ::= 代表‘定义为。
3.1 分类IP地址(A/B/C/D/E)
两级 IP 地址共32位
,各类 IP 地址的网络号字段和主机号字段为:
3.2 点分十进制记法
(1)IPv4地址采用点分十进制记法
:
(2)三种类别 IP 地址的指派范围:
(3)一般不使用的特殊的 IP 地址:
3.3 IP地址的特点
(1)路由器仅根据目的主机所连接的网络号
来转发分组。
(2)多归属主机 (multihomed host):当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址
,其网络号 net-id 必须是不同的。
(3)用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号 net-id。
4. IP 地址与硬件地址
通信的路径:
H
1
H_{1}
H1→经过
R
1
R_{1}
R1 转发→再经过
R
2
R_{2}
R2 转发→
H
2
H_{2}
H2
- 在 IP 层抽象的互联网上只能看到 IP 数据报,图中的 I P 1 → I P 2 IP_{1}→IP_{2} IP1→IP2 表示从源地址 I P 1 IP_{1} IP1 到目的地址 I P 2 IP_{2} IP2 。路由器只根据目的站的 IP 地址的网络号进行路由选择。
- 在具体的物理网络的链路层只能看见 MAC 帧而看不见 IP 数据报。
因此,主机 H 1 H_{1} H1 与 H 2 H_{2} H2 通信中使用的 I P IP IP地址与硬件地址 H A HA HA分别为:
使用 IP 地址是为了隐蔽各种底层网络的复杂性而便于分析和研究问题。
5. 地址解析协议 ARP
(1)ARP:IP 地址(网络层地址)转为 MAC 地址(数据链路层地址)
,ARP 分组封装在物理网络的帧中传输。
(2)ARP 高速缓存 (ARP cache)
:本局域网的主机和路由表的 IP 地址到 MAC 地址的映射表,每一个主机都设有一个。
(3)请求是广播,响应是单播
,一次请求响应,两边同时把双方的信息写进 ARP cache。
主机A广播发送ARP请求分组,只有B的IP地址与ARP请求分组中要查询的地址一致,收下请求,其他主机均不理睬这个请求。随后主机B向A发送ARP的响应分组。
(4)ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。不同局域网的主机,要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,利用这个路由器进行转发。
举个栗子,使用 ARP 的四种典型情况为:
① 发送方是主机 H 1 H_{1} H1,要把 IP 数据报发送到本网络上的另一个主机 H 2 H_{2} H2。这时 H 1 H_{1} H1发送 ARP 请求分组(在网1上广播)找到 H 2 H_{2} H2的硬件地址。
② 发送方是主机 H 1 H_{1} H1,要把 IP 数据报发送到另一个网络上的一个主机 H 3 H_{3} H3或 H 4 H_{4} H4。这时 H 1 H_{1} H1发送 ARP 请求分组(在网1上广播)找到本网络上的一个路由器 R 1 R_{1} R1的硬件地址。剩下的工作由这个路由器来完成。
③ 发送方是路由器 R 1 R_{1} R1,要把 IP 数据报转发到本网络上的一个主机 H 3 H_{3} H3。这时 R 1 R_{1} R1发送 ARP 请求分组(在网2上广播)找到目的主机 H 3 H_{3} H3的硬件地址。
④ 发送方是路由器 R 1 R_{1} R1,要把 IP 数据报转发到另一个网络上的一个主机 H 4 H_{4} H4。这时 R 1 R_{1} R1发送 ARP 请求分组(在网2上广播)找到本网络上另一个路由器 R 2 R_{2} R2的硬件地址。剩下的工作由这个路由器来完成。
6. IP 数据报的格式
(1)一个 IP 数据报由首部和数据两部分组成。
(2)首部 20 字节,固定的。
- 版本—— IP 协议的版本。目前的 IP 协议版本号为 4 (即 IPv4)。
- 首部长度——可表示的最大数值,是 15 个单位(一个单位为 4 字节),因此 IP 的首部长度的最大值是 60 字节。
- 区分服务——只有在使用区分服务时,这个字段才起作用。在一般的情况下都不使用这个字段。
- 总长度——首部和数据之和的长度,单位为字节。总长度必须不超过最大传送单元 MTU。
- 标识、标志、片偏移 ——用于分片。
何为分片?举个栗子:
一数据报的总长度为 3820 字节,其数据部分的长度为 3800 字节(使用固定首部),需要分片为长度不超过 1420 字节的数据报片。因固定首部长度为 20 字节,因此每个数据报片的数据部分长度不能超过 1400 字节。于是分为 3 个数据报片,其数据部分的长度分别为 1400、1400 和 1000 字节。
- 生存时间——记为 TTL (Time To Live),指示数据报在网络中可通过的路由器数的最大值。
- 协议——指出此数据报携带的数据使用何种协议,以便目的主机的 IP 层将数据部分上交给那个处理过程。
- 首部检验和——只检验数据报的首部,不检验数据部分。16 位反码运算相加再求反码,检验时一样,得到为 0 即无差错。
- 可变部分:就是一个选项字段,用来支持排错、测量以及安全等措施。
7. 路由器分组转发算法
(1)步骤:
- 在路由表中,对每一条路由,最主要的是(目的网络地址,下一跳地址)
(2)特定主机路由:对特定的目的主机指明一个路由,方便控制网络和测试网络。
(3)默认路由(0.0.0.0):下一跳路由器的地址不在 IP 数据包里,而在 MAC 帧里(转为MAC 地址)。
8. 划分子网
原因:IP地址利用率有时很低,修改为三级 IP 地址:
I
P
地址
:
:
=
{
<
网络号
>
,
<
子网号
>
,
<
主机号
>
}
IP 地址 ::= \left \{ <网络号>, <子网号>,<主机号> \right \}
IP地址::={<网络号>,<子网号>,<主机号>},这里从主机号借用若干个位作为子网号 subnet-id,不改变 IP 地址原来的网络号 net-id。
(1)划分子网纯属一个单位内部的事情,对外部网络透明,对外仍然表现为没有划分子网的一个网络。
(2)子网掩码:找出 IP 地址中的子网部分。路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码。
(IP 地址) AND (子网掩码) =网络地址
举个栗子:已知 IP 地址是 141.14.72.24,子网掩码是 255.255.192.0。试求网络地址。
在划分子网情况下路由器转发分组的算法:
已知互联网和路由器 R 1 R_{1} R1中的路由表。主机 H 1 H_{1} H1向 H 2 H_{2} H2发送分组。试讨论 R 1 R_{1} R1收到 H 1 H_{1} H1向 H 2 H_{2} H2发送的分组后查找路由表的过程。
(1) H 1 H_{1} H1首先将本子网的子网掩码 255.255.255.128与分组的 IP 地址 128.30.33.138 逐比特相“与”,得到128. 30. 33.128,不等于 H 1 H_{1} H1的网络地址。因此 H 1 H_{1} H1必须把分组传送到路由器 R 1 R_{1} R1然后逐项查找路由表。
(2)路由器 R 1 R_{1} R1收到分组后就用路由表中第 1 个项目的子网掩码和 128.30.33.138 逐比特 AND 操作,得到128.30.33.128,不匹配,因为与路由表中的 128.30.33.0 不一致。
(3)路由器 R 1 R_{1} R1用路由表中第 2 个项目的子网掩码和 128.30.33.138 逐比特 AND 操作,得到128.30.33.138,匹配,因此由 R 1 R_{1} R1与 H 2 H_{2} H2直接交付。
9. 无分类编址 CIDR
(1)CIDR:(Classless Inter-Domain Routing,无分类域间路由选择)。CIDR使用各种长度的“网络前缀”
来代替分类地址中的网络号和子网号。
(2)无分类的两级编址的记法是:
I
P
地址
:
:
=
{
<
网络前缀
>
,
<
主机号
>
}
IP 地址 ::= \left \{ <网络前缀>, <主机号> \right \}
IP地址::={<网络前缀>,<主机号>}
(3)CIDR 使用“斜线记法”(slash notation),它又称为 CIDR 记法,例如: 220.78.168.0/24
(4)CIDR 把网络前缀都相同的连续的 IP 地址组成“CIDR 地址块”
。
CIDR 记法:
(1)128.14.32.0/20 表示的地址块共有 2 12 2^{12} 212 个地址(因为斜线后面的 20 是网络前缀的位数,所以这个地址的主机号是 12 位)。这个地址块的起始地址是 128.14.32.0。
——128.14.32.0/20 地址块的最小地址:128.14.32.0
——128.14.32.0/20 地址块的最大地址:128.14.47.255
全 0 和全 1 的主机号地址一般不使用。
(2)10.0.0.0/10 可简写为 10/10,掩码是 255.192.0.0。
(3)00001010 00*,在星号 ∗ * ∗之前是网络前缀,而星号 ∗ * ∗表示 IP 地址中的主机号,可以是任意值。
(5)常用的 CIDR 地址块:
(6)路由聚合:构成超网
。前缀长度不超过 23 位的 CIDR 地址块都包含了多个 C 类地址。这些 C 类地址合起来就构成了超网。
(7)最长前缀匹配
:在查找路由表时应当从匹配结果中选择具有最长网络前缀的路由。网络前缀越长,其地址块就越小,因而路由就越具体 。最长前缀匹配又称为最长匹配或最佳匹配。
三、网际控制报文协议 ICMP
ICMP 报文的种类:ICMP 差错报告报文和 ICMP 询问报文。
ICMP 报文的格式:
1. ICMP 差错报告报文
(1)ICMP 差错报告报文的种类:
- 终点不可达
- 时间超过
- 参数问题
- 改变路由(重定向)(Redirect)
(2)不应发送 ICMP 差错报告报文的几种情况:
- 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。
- 对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。
- 对具有多播地址的数据报都不发送 ICMP 差错报告报文。
- 对具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文。
2. ICMP 询问报文
(1)ICMP 询问报文的种类:
- 回送请求和回答报文
- 时间戳请求和回答报文
(2)ICMP 询问报文的应用
—— PING (Packet InterNet Groper) :用来测试两个主机之间的连通性。
PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或UDP。
——Traceroute用来跟踪一个分组从源点到终点的路径。
Traceroute 利用 IP 数据报中的TTL 字段
和 ICMP 时间超过差错报告报文实现对从源点到终点的路径的跟踪。
四、路由器的构成
典型的路由器的结构 :
(1)路由选择部分:也叫作控制部分,其核心构件是路由选择处理机。
(2)分组转发部分:交换结构,根据转发表对分组进行处理,有一组输入端口一组输出端口。
(3)路由表是根据路由选择算法得出的。而转发表是从路由表得出的。
(4)输入端口中的查找和转发功能在路由器的交换功能中是最重要的。
输入端口对线路上收到的分组的处理 :
(5)路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因。
(6)交换结构三种方法:①通过存储器;②通过总线;③通过互连网络。
五、路由选择协议
1. 协议的种类
(1)从路由算法的自适应性考虑:① 静态路由选择策略(非自适应路由选择);② 动态路由选择策略(自适应路由选择)。
(2)互联网采样分层次的路由选择协议
:① 自治系统 AS(Autonomous System) ;② 内部网关协议 IGP (Interior Gateway Protocol),如 RIP 和 OSPF 协议;③ 外部网关协议 EGP (External Gateway Protocol) ,如BGP-4。
2. 路由信息协议 RIP
(1)RIP (Routing Information Protocol) 是内部网关协议 IGP 中最先得到广泛使用的协议。
(2)RIP 是一种分布式的、基于距离向量的路由选择协议。
(3)RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。
(4)跳数
/距离:每经过一个路由器,跳数就加 1。RIP 允许一条路径最多只能包含 15 个路由器。“距离”的最大值为 16 时即相当于不可达
。
(5)在RIP协议中,要求仅和相邻路由器
交换信息,按固定的时间间隔交换路由信息,不能在两个网络之间同时使用多条路由。
(6)距离向量算法:
举个例子:
(7)RIP协议特点:好消息传播得快,坏消息传播得慢。网络出故障的传播时间往往需要较长的时间。
3. 开放最短路径优先 OSPF
(1)OSPF (Open Shortest Path First)是为克服 RIP 的缺点开发出来的,即OSPF更新过程收敛得快。
(2)OSPF采用分布式的链路状态协议 (link state protocol)。
(3)使用洪泛法
向本自治系统中所有路由器发送信息。
(4)由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库
。就是全网的拓扑结构图,能较快地进行更新。
(5)OSPF 不用 UDP 而是直接用 IP 数据报
传送。
(6)OSPF 划分为两种不同的区域:
4. 边界网关协议 BGP
(1)BGP(Border Gateway Protocol):力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。
(2)BGP 发言人:往往是 BGP 边界路由器
,但也可以不是 BGP 边界路由器。
(3)交换路由信息:一个 BGP 发言人与其他自治系统中的 BGP 发言人要交换路由信息,就要先建立 TCP 连接,然后在此连接上交换 BGP 报文以建立 BGP 会话(session),利用 BGP 会话交换路由信息。两个发言人彼此成为对方的邻站(neighbor)或对等站(peer) 。
BGP 发言人和自治系统 AS 的关系:
六、IPv6
目的:解决 IP 地址耗尽的根本措施就是采用具有更大地址空间的新版本的 IP,即 IPv6。
1. IPv6 数据报
(1)IPv6数据报由两大部分组成:
- 基本首部 (base header)
- 有效载荷 (payload)。有效载荷也称为净负荷。有效载荷允许有零个或多个扩展首部(extension header),再后面是数据部分。
IPv6 把原来 IPv4 首部中选项的功能都放在扩展首部
中,并将扩展首部留给路径两端的源站和目的站的主机来处理。大大提高了路由器的处理效率。
IPv6 数据报的目的地址:
- 单播 (unicast):传统的点对点通信。
- 多播 (multicast):一点对多点的通信。
- 任播 (anycast):这是 IPv6 增加的一种类型。任播的目的站是一组计算机,但数据报在交付时只交付其中的一个,通常是距离最近的一个。
2. 冒号十六进制记法
(1)在IPv6中,每个地址占 128 位,每个 16 位的值用十六进制值表示,各值之间用冒号分隔。例如:
(2)冒号十六进制记法可以允许零压缩,但是在任一地址中只能使用一次零压缩
。且CIDR 的斜线表示法仍然可用。
3. 从 IPv4 向 IPv6 过渡
(1)只能采用逐步演进
的办法。
(2)新安装的 IPv6 系统必须能够向后兼容
:IPv6 系统必须能够接收和转发 IPv4 分组,并且能够为 IPv4 分组选择路由。
(3)两种向 IPv6 过渡的策略:①使用双协议栈;②使用隧道技术。
七、IP多播
多播可大大节约网络资源:
(1)IP 多播所传送的分组需要使用多播 IP 地址。
(2)多播组的标识符就是 IP 地址中的 D 类地址(多播地址)。
(3)多播地址只能用于目的地址,不能用于源地址。
(4)多播数据报也是“尽最大努力交付”,不保证一定能够交付多播组内的所有成员。
(5)对多播数据报不产生 ICMP 差错报文。因此,若在 PING 命令后面键入多播地址,将永远不会收到响应。
(6)多播路由选择:①洪泛与剪除;②隧道技术;③基于核心的发现技术。
八、虚拟专用网 VPN
1. 专用地址/可重用地址
(1)问题:在内部使用的本地地址就有可能和互联网中某个 IP 地址重合,这样就会出现地址的二义性问题。
(2)专用地址
只能用作本地地址而不能用作全球地址。在互联网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发。
(3)三个专用 IP 地址块:
2. 虚拟专用网
(1)专用网:用这样的专用 IP 地址的互连网络称为专用互联网或本地互联网。
(2)虚拟专用网VPN (Virtual Private Network):“虚拟”表示“好像是”,但实际上并不是,因为现在并没有真正使用通信专线
,而VPN只是在效果上和真正的专用网一样。
(3)用隧道技术
实现虚拟专用网。
九、网络地址转换 NAT
(1)问题:在专用网上使用专用地址的主机如何与互联网上的主机通信(并不需要加密)?
(2)需要在专用网连接到互联网的路由器上安装 NAT 软件
。装有 NAT 软件的路由器叫作 NAT路由器,它至少有一个有效的外部全球IP地址。
(3)所有使用本地地址的主机在和外界通信时,都要在 NAT 路由器上将其本地地址转换成全球 IP 地址
,才能和互联网连接。