重要内容
- 虚拟互联网的概念
- IP地址与物理地址的关系
- 传统的分类的IP地址(包括子网掩码)和无分类域间路由选择CIDR
- 路由选择协议的工作方式
(4.1) 网络层提供的服务
- 在互联网中,网络层向上只提供简单灵活的,无连接的,尽最大努力交付的数据报服务。
- 网络在发送分组的时候,不需要先建立连接,每一个分组独立无序发送
- 网络层不提供服务质量的承诺。即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),当然也不保证分组传送的时限。
1. 尽最大努力交付的好处
- 网络的造价大大降低,运行方式灵活,能够适应多种应用
- 如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的主机中的运输层负责(包括差错处理、流量控制等)
2. 虚电路
- 虚电路表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而并不是真正建立了一条物理连接。
- 请注意,电路交换的电话通信是先建立了一条真正的连接。因此分组交换的虚连接和电路交换的连接只是类似,但并不完全一样。
3. 虚电路服务与数据报服务的对比

(4.2) 网际协议IP
与IP
协议配套的协议有:
- 地址解析协议
ARP
- 网际报文管理协议
ICMP
- 网际组织管理协议
IGMP
以上三个协议与IP协议的关系是

(4.2.1) 虚拟互连网络
可将网络连接的设备叫中间设备,中间设备又称为中间系统或中继(relay)系统:
- 物理层:转发器
- 数据链路层:网桥/桥接器
- 网络层:路由器
- 网络层以上:网关
注:当中继系统是转发器或网桥时,一般并不称之为网络互连,因为这仅仅是把一个网络扩大了,而这仍然是
"一个"
网络。
互联网可以由多种异构网络组成。
互连网络与虚拟互连网络

虚拟互连网络的意义
- 虚拟互连网络也就是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用
IP
协议就可以使这些性能各异的网络从用户看起来好像是一个统一的网络。 - 使用 IP 协议的虚拟互连网络可简称为 IP 网。
- 使用虚拟互连网络的
好处
是:当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互连的各具体的网络异构细节。
(4.2.2) 分类的IP地址
1. IP 地址及其表示方法
IP 地址的概念:用来唯一标识全球连接在互联网上的主机的接口的标识符。
2. IP 地址的编址方法
- 分类的IP地址
- 划分子网
- 构成超网
IP 地址 ::= { <网络号>, <主机号> }
3. 分类的IP地址
常用的二进制转十进制
二进制 | 十进制 |
---|---|
10000000 | 128 |
11000000 | 192 |
11100000 | 224 |
11110000 | 240 |
11111000 | 248 |
11111100 | 252 |
11111110 | 254 |
11111111 | 255 |

A类地址

- 本网络:网络号字段全0
- 回环地址:网络号全1(即回环地址,
127.0.0.1
),但它不是一个网络地址 - 可指派的网络号:
2^7-2
个,因为网路号的第一位指定为0
特殊的主机号:
- 本主机:主机号全0
- 网络上的所有主机:主机号全1
- 最大主机数:
2^24-2
个
A类地址数量:2^31
个,占整个IP地址的%50
。
B类地址

- 不指派的网络地址:
128.0.0.0
- 最小网络地址:
128.0.0.1
- 可指派的网络号:
2^14-1
,因为网络号的前两位固定为10
特殊的主机号:
- 最大主机数:
2^16-2
,减去主机位全0
或全1
的两个
B类地址数量:2^30
个,占整个IP地址的%25
。
C类地址

- 不指派的网络地址:
192.0.0.0
- 可指派的网络号:
2^21-1
,因为网络号的前两位固定为110
- 最小网络地址:
192.0.0.1
特殊的主机号:
- 最大主机数:
2^8-2
C类地址数量:2^29
个,占整个IP地址的%12.5
。
D类地址
- 前四位固定为
1110
,构成的地址用于多播(一对多通信)。

E类地址
- 前四位固定为
1111
,保留为以后用。
4. IP 地址的特点
- IP分级结构:
- 方便分配
- 减小路由表所占存储空间以及查找路由表的时间
- 实际 IP 地址是主机与网络链路之间的一条链路的标识(一个主机连接在两个不同的网络上时,该主机对应的就有两个IP地址)。因此路由器至少拥有两个不同的 IP 地址。
- 一个网络是指具有相同网络号的主机的集合,因此用网桥或转发器连接起来的若干局域网属于同一个网络。
- 互联网上的网络号都是平等的,与其范围大小没有关系。
5. 互联网中的 IP 地址

- 在同一个局域网上的主机或路由器的 IP 地址中的网络号必须是一样的.
- 在同一个局域网上的主机或路由器的 IP 地址中的网络号必须是一样的。
- 路由器总是具有两个或两个以上的 IP 地址。路由器的每一个接口都有一个不同网络号的 IP 地址。
- 两个路由器直接相连的接口处,可指明也可不指明 IP 地址。如指明 IP 地址,则这一段连线就构成了一种只包含一段线路的特殊“网络” 。现在常不指明 IP 地址。
无名网络:两个路由器直接相连时并不分配 IP 地址,这两个路由器之间的网络称为无名网络,或无编号网络。
(4.2.3) IP地址与硬件地址
1. IP地址与MAC地址的区别

层次角度的不同:
- 物理地址是物理层和数据链路层用的地址。
- IP 地址是网络层及以上用的地址,是一种软件实现的逻辑地址。
报文分组每次经过路由器转发时都要将MAC的首部和尾部丢弃重新封装——变换MAC帧中的目的地址和源地址
(4.2.4) 地址解析协议 ARP
1. ARP 缓存介绍
每一个主机都设有一个 ARP 高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。
当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。如有,就可查出其对应的 MAC 地址,再将此 MAC 地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。
2. ARP协议的作用
ARP
协议:根据已知的IP地址解析出该主机的硬件地址;RARP
协议:根据硬件地址解析出该主机对应的IP地址;
3. 什么我们不直接使用硬件地址进行通信?
不同的网络使用不同的MAC地址,如果不使用同一IP地址的方式通信,那么复杂的MAC地址转换考主机是不可能完成的。
(4.2.5) IP 数据报的格式

- 版本:标识TCP/IP的版本号。ipv4/ipv6
- 首部长度:最小为20字节,最大为60字节。
- 区分服务:比如区分视频服务和邮件服务。
- 总长度:整个数据包的长度
- 网络层的
ip
数据包最大为65535(2^16-1
)字节。 - 数据链路层规定数据帧中的数据字段的最大长度为1500字节,所以IP数据报在封装成帧的时候,IP报文的全长最好不超过1500,否则要分片处理。
- 网络层的
- 标识:分片原数据包的标号。
- 标志:区分是数据包还是数据包的分片。
- 偏移量:每一个数据分片的
首字节/8
,得到每一个分片的偏移量 - 生存时间:(8位)二进制定义数据包在网络上的生存时间,防止无限制地传输。
- 协议:(8 位)字段指出此数据报携带的数据使用何种协议 以便目的主机的 IP 层将数据部分上交给哪个处理过程
- 目的地址和源地址:各占4个字节。
- 首部检验和的作用:(16 位)字段只检验数据报的首部 不检验数据部分。用于检验数据报在传送的过程中其首部是否出错;
检验方法:在发送方将IP数据报的首部划分为许多16位的字序列;并把检验和字段置零,用反码运算术将字相加之后,将得到的和的反码写入检验和位置;在接受方接收到数据报之后,使用相同的方法将首部所有的字(包括检验和)相加一次,若没有出错则,得到的结果必然为零,最后的结果便可作为是否出错的判断标志;
(4.3) 划分子网和构造超网
(4.3.1) 划分子网
1. 从两级 IP 到三级 IP 地址
好处:
- 避免 IP 地址的浪费
- 避免路由器的路由表项目增多,增加路由表的成本,减少路由表查找时间。
2. 划分子网的基本思路
- 通过在网络号字段中拿一部分作为子网号,把两级 IP 地址划分为三级 IP 地址。注意,外部网络看不到子网的存在。
- 从网络地址的主机位借用若干位作为子网号
subnet-id
IP 地址 ::= {< 网络号 >, < 子网号 >, < 主机号 >}
- 凡是从其他网络发送给本单位某个主机的IP数据包,仍然是根据IP数据报的
目的网络号
找到连接在本单位网络上的路由器。但此路由器收到 IP 数据之后,再按目的网号和子网号找到目的子网
,把IP数据报交付给目的主机。
一个未划分子网的 B 类网络145.13.0.0
划分为三个子网后对外仍是一个网络
3. 子网掩码
一个需要解决的问题:一个数据报(目的地址是 145.13.3.10),已到达路由器 R1,那这个路由器如何把该数据报转发给子网 145.13.3.10 呢?
- 从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。
- 使用子网掩码(subnet mask)可以找出 IP 地址中的子网部分。
本节重点
需要掌握的是:给一个IP地址和其对应的子网掩码,要求算出对应的网络地址。
基本步骤:将两级的IP地址和子网掩码的二进制数进行按位与&
运算得到的新二进制数就是网络地址。
【例4-2】已知 IP 地址是141.14.72.24
,子网掩码是255.255.192.0
。试求网络地址。
看非子网掩码的255位就可以

(4.3.3) 无分类编址 CIDR(构成超网)
CIDR全称Classless Inter-Domain Routing
,无分类域间路由。
1. 网络前缀
(1) CIDR 消除了传统 A 类、B 类和 C 类地址以及划分子网的概念,使用网络前缀和主机号来对 IP 地址进行编码,网络前缀的长度可以根据需要变化。
- 无分类的两级编址:
IP 地址 ::= {< 网络前缀号 >, < 主机号 >}
(2) CIDR 把网络前缀相同的连续的 IP 地址组成一个"CIDR地址块"
1.2 CIRD 地址块
以 IP 地址128.14.32.0/20
为例,
- 它表示的地址块共有
2^12
个地址(因为斜线后面的 20 是网络前缀的位数,所以这个地址的主机号是 12 位)。 128.14.32.0/20
地址块的最小地址:128.14.32.0
(即后8位全0)128.14.32.0/20
地址块的最大地址:128.14.47.255
(即后8位全1)- 全 0 和全 1 的主机号地址一般不使用。
1.3 CIRD 的地址掩码
为了更方便的路由选择,CIRD使用32位的地址掩码(由一串1和一串0组成),1的个数就是网络前缀的长度,0自然代表主机位的长度。
如果是上面的128.14.32.0/20
例子,/20
地址块的地址掩码就是11111111 11111111 11110000 00000000
。
1.4 路由聚合(route aggregation)
- 一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示很多个(例如上千个)原来传统分类地址的路由。
- 路由聚合也称为构成超网(supernetting)
1.5 CIDR 记法的其他形式
10.0.0.0/10
可简写为10/10
,也就是将点分十进制中低位连续的 0 省略。10.0.0.0/10
相当于指出 IP 地址 10.0.0.0 的掩码是 255.192.0.0,即11111111 11000000 00000000 00000000
- 网络前缀的后面加一个星号
*
的表示方法 如00001010 00*
,在星号 * 之前是网络前缀,而星号 * 表示 IP 地址中的主机号,可以是任意值。
2. 最长匹配前缀
网络前缀越长,其地址块就越小,因而路由就越具体(more specific) 。
3. 使用二叉线索查找路由表
(4.4) 网际控制报文协议 ICMP
-
为了提高 IP 数据报交付成功的机会,在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。
-
ICMP 全称Internet Control Manage Protocol,ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。
(4.4.1) ICMP 报文的种类
ICMP数据报有两种:ICMP差错报告报文
和ICMP询问报文
ICMP报文的格式

- ICMP 报文的前 4 个字节是统一的格式,共有三个字段:即
类型、代码和检验和
。 - 接着的 4 个字节的内容与 ICMP 的类型有关。
- 数据字段的长度取决于ICMP的类型。
1. ICMP 差错报告报文

- 终点不可达
- 源点抑制(Source quench)
- 时间超过
- 参数问题
- 改变路由(重定向)(Redirect)
2. 如何对IP数据报进行差错报告
- 取IP数据报的首部和数据字段的前8个字节提取出来,作为ICMP报文的数据字段。
- 再加上相应的ICMP差错报告的前8个字节,就构成了ICMP差错报告报文。
3. 不应该发送ICMP差错报告的几种情况
- 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。 对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。
- 对具有多播地址的数据报都不发送 ICMP 差错报告报文。
- 对具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文。
(4.5) 因特网的路由选择协议
(4.5.1)
略
(4.5.2) 内部网关协议RIP
略
(4.5.3) 内部网关协议OSPF
略
(4.5.4) 内部网关协议BGP
略
(4.5.43) 路由器的组成
1. 路由器的结构

路由器由两大部分组成:路由选择部分(控制部分)和分组转发部分。
路由选择部分
- 核心构件:路由选择处理器,它会根据选择的路由协议构造处路由表,而且会定时更新路由表。
分组转发部分
- 组成:交换结构、一组输入端口和一组输出端口。
- 作用:根据转发表对分组进行处理,将输入端口的报文从一个合适的输出端口输出出去。
转发和路由选择的区别
- 转发:仅仅涉及一个路由器
- 路由选择:多个路由器根据复杂的路由算法,得出整个网络的拓扑变化,并由此构造处路由表。
交换结构的工作流程
- 物理层进行比特的接收。
- 数据链路层则接收传送分组的帧。
- 网络层接收去掉首部和尾部的帧。
- 如果该分组时路由器之间交换路由信息的分组,则把这种分组送交路由器的路由选择部分中的路由选择处理器。
- 若接收到的是数据分组,则安装分组的目的地址查找转发表,根据得出的结果,分组经过交换结构到达合适的输出端口。
输入端口对线路上收到的分组的处理
数据链路层剥去帧首部和尾部后,将分组送到网络层的队列中排队等待处理。这会产生一定的时延。

当交换结构传送过来的分组先进行缓存。数据链路层处理模块将分组加上链路层的首部和尾部,交给物理层后发送到外部线路。

分组丢弃
- 若路由器处理分组的速率赶不上分组进入队列的速率,则队列的存储空间最终必定减少到零,这就使后面再进入队列的分组由于没有存储空间而只能被丢弃。
- 路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因。
2. 交换结构
交换结构的工作是将收到的分组根据路由表从输入端口转发到输出端口;
三种转发方法:
- 1)通过存储器进行交换
- 2)通过总线进行交换
- 3)通过纵横交换结构(总线网)进行交换
(4.6) IP 多播
(4.6.1) IP 多播的基本概念


- 使用单播:需要发送90个同样的视频节目副本
- 使用多播:路由器R1在转发分组时,需要先把分组赋值成3个副本(而单播则需要各复制30个副本),分别向R2、R3、R4各转发1个副本,分组到达具有硬件多播的局域网时,局域网上的多播组成员都能接收到这个视频分组
1. 多播的一些特点
(1) 多播使用组地址 —— IP 使用 D 类地址支持多播。多播地址只能用于目的地址,而不能用于源地址。
(2) 永久组地址——由因特网号码指派管理局 IANA 负责指派。
(3) 动态的组成员
(4) 使用硬件进行多播
(4.6.2) 在局域网上进行硬件多播
略
(4.6.3) 网际组管理协议 IGMP 和多播路由选择协议
IP多播需要两种协议
网际组管理协议 IGMP
IGMP 协议不知道 IP 多播组包含的成员数,也不知道这些成员都分布在哪些网络上,IGMP 协议是让连接在本地局域网上的多播路由器知道本地局域网时是否有主机(主机的某个进程)参加或退出了某个多播组。
连接在局域网上的多播路由器还必须和因特网上的其他多播路由器协同工作,以便把多播数据报用最小代价传送给所有的组成员。这就需要使用多播路由选择协议。
2.
(4.7) 虚拟专用网 VPN 和网络地址转换 NAT
(4.7.1) 虚拟专用网 VPN
1. 专用互联网
由于 IP 地址的紧缺,一个机构能申请到的 IP 地址数往往远小于本机构所拥有的主机数。并且一个机构并不需要把所有的主机接入到外部的互联网中,机构内的计算机可以使用仅在本机构有效的 IP 地址(专用地址)。
- 本地地址:仅在机构内部使用的 IP 地址,可以由本机构自行分配,而不需要向因特网的管理机构申请。
- 全球地址:全球唯一的IP地址,必须向因特网的管理机构申请。
存在的问题:如果任意地选择一些IP地址作为本机构内部使用的地址,如果某个主机需要与因特网连接,那么困难会该主机使用的IP困难会跟因特网上的某个IP冲突,为此RFC 1918指明了一些只用于一个就内部使用的专用地址,这些地址不能作为全球地址。
有三个专用地址块:
10.0.0.0 ~ 10.255.255.255 (或记为10.0.0.0/8)
172.16.0.0 ~ 172.31.255.255 (或记为172.16.0.0/12)
192.168.0.0 ~ 192.168.255.255 (或记为192.168.0.0/16)
采用专用IP地址的互联网称为专用互联网/本地互联网,也叫专用网。这些地址不会引起IP冲突。
2. VPN
一、定义:VPN(virtual private network) 指使用公用的互联网作为本机构各专用网之间的通信载体的专用网。
二、原理:即在公共网络上,人为的建立一条数据通信的隧道,让数据包通过这条虚拟隧道来进行数据的传递。
远程接入虚拟专用网络(remote access VPN):当流动员工在外地工作。公司需要和他们保持联系(比如电话、视频),远程接入 VPN 可满足这种需求。
(4.7.1) 网络地址转换 NAT (Network Address Translation)
使用场景:当专用网内部已经被分配 IP 地址的主机相想与因特网上的主机通信的时候,能不能通过不申请全球IP地址的方式来实现呢?
1. 什么是NAT
?
NAT的基本工作原理是,当私有网主机和公共网主机通信的IP包经过NAT网关时,将IP包中的源IP或目的IP在私有IP和NAT的公共IP之间进行转换。
2. 什么是NAPT
?
由于NAT实现是私有IP和NAT的公共IP之间的转换,那么,私有网中同时与公共网进行通信的主机数量就受到NAT的公共IP地址数量的限制。为了克服 这种限制,NAT被进一步扩展到在进行IP地址转换的同时进行Port
的转换,这就是网络地址端口转换NAPT(Network Address Port Translation
)技术。
3. NAT与NAPT的区别
NAPT
与NAT
的区别在于,NAPT不仅转换IP包中的IP地址,还对IP
包中TCP和UDP的Port
进行转换。这使得多台私有网主机利用1个NAT公共IP就可以同时和公共网进行通信。(NAPT多了对TCP和UDP的端口号的转换)