视频地址:湖南科技大学计算机网络微课堂https://www.bilibili.com/video/BV1c4411d7jb
4.1 网络层概述
网络层的主要任务是实现网络互连,进而实现数据报在各网络之间的传输
。
将多个网络连接起来的设备称为路由器
。
因特网的网络层服务
因特网采用的是无连接的数据报服务
这种服务的特点:
- 可靠通信由
用户主机
来保证 - 不需要建立网络层连接
- 每个分组可走
不同的路径
- 每个分组的首部必须携带
目的主机的完整地址
- 采用这种方式通信的
分组
可能误码,丢失,重复和失序。 - 由于网络本身不提供
端到端的可靠传输服务
,网络中的路由器可以做的相对简单,价格低廉。 - 将复杂的
网络处理功能
置于因特网的边缘(用户主机和其内部的运输层),而将相对简单的分组交付功能
置于因特网核心。
4.2 IPV4地址概述
IPv4
地址就是给因特网(Internet)上的每一台主机(或路由器)的每一个接口
分配一个在全世界范围内唯一的
32比特的标识符。
IPV4地址的编制方法经历了三个历史阶段:
IPV4地址表示方法
- 32位比特的IPV4地址不方便阅读,记忆。所以采用
点分十进制方法
表示。 - 如:
10.240.15.170
。
4.2.1 分类编址的IPV4地址
分类编址的IPV4地址分为A、B、C、D、E五类。
比如一个主机的IPV4地址为192.168.1.104
,该地址是C类地址。192.168.1
表示的是网络号。104
表示的是该主机。
注意事项:
- 只有
A类、B类和C类
地址可分配给网络中的主机或路由器的各接口 - 主机号为“全0”的地址是
网络地址
,不能分配给主机或路由器的各接口 - 主机号为“全1”的地址是
广播地址
,不能分配给主机或路由器的各接口
A类地址细节
第一个字节第一位是0的表示A类地址。
-
最小网络号0(0000 0000),保留不指派。
-
第一个
可指派的网络号为1(0000 0001),IPV4地址为1.0.0.0
-
最大网络号127(0111 1111),作为本地软件环回测试地址,不指派。
- 最小的本地环回测试地址为127.0.0.1
- 最大的本地环回测试地址为127.255.255.254
-
最后一个
可指派的网络号为126,网络地址为126.0.0.0
-
A类地址可指派的网络数量为2(8-1)-2=126(减2的原因是除去网络号0和最大网络号127)
-
每个网络中可分配的IP地址数量为224-2=16777214个。(减2的原因是除去主机号为全0的
网络地址
和主机号为全1的广播地址
)。
B类地址细节
第一个字节的前两位是10的表示B类地址。
- 最小网络号也是第一个可指派的网络号128.0(1000 0000 0000 0000),网络地址为
128.0.0.0
- 最大网络号也是最后一个可指派的网络号191.255(1011 1111 1111 1111),网络地址为
191.255.0.0
- 可指派的网络数量为:2(16-2)=16384(减去开头表示B类地址的10)
- 每个网络中可分配的IP地址数量为216-2=65534(减去全0网络地址和全1广播地址)
C类地址细节
第一个字节的前三位是110的表示C类地址。
- 最小网络号也是第一个可指派的网络号192.0.0(1100 0000 0000 0000 0000 0000),网络地址为192.0.0.0。
- 最大网络号也是最后一个可指派的网络号223.255.255(1101 1111 1111 1111 1111 1111),网络地址为223.255.255.0。
- 可指派的网络数量为2(24-3)=2097152。(减去开头表示C类地址的110)
- 每个网络中可分配的IP地址数量为28-2=254(减去全0网络地址和全1广播地址)
一般不使用的特殊IP地址
4.2.2 划分子网的IPV4地址
为什么需要划分子网的需求?
比如:
一家单位有300台主机,申请一个C类地址数量不够分配(254个)。因此只能申请一个B类地址。
但是申请一个B类地址,给所以的主机和路由接口都分配一个IP地址后,还有大量IP地址剩余。
这些剩余的IP地址只能由该单位同一网络使用,其他网络不能使用。
随着单位发展,该单位新增了一批计算机,并且需要将原来的网络划分为3个独立的网络
。
如果为另外两个网络(称为子网2和子网3)再申请新的网络,费时又会花费更大的费用。
此时就需要用到划分子网来给子网2和子网3分配IP地址。
子网掩码
输入ipconfig
命令查看本机的IP地址。
无线局域网适配器 WLAN:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : be50::2d76:4661:660b:7d06
IPv4 地址 . . . . . . . . . . . . : 192.168.1.104
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : 192.168.1.1
32比特的子网掩码可以表明分类IP地址的主机号部分被借用了几个比特作为子网号。
未被借用主机号时
主机号被借用几个比特作为子网号时
- 子网掩码使用连续的比特1来对应网络号和子网号
- 子网掩码使用连续的比特0来对应主机号
- 这样就构成了这个划分子网的IP地址的32比特的子网掩码
- 将划分子网的IPv4地址与其相应的子网掩码进行逻辑与运算就可得到IPv4地址所在子网的网络地址
【举例】
已知某个网络的地址为218.75.230.0
,使用子网掩码255.255.255.128
对其进行子网划分,请给出划分细节。
解析:
- 218开头表示该网络是一个C类网络,三个字节作为网络号,一个字节作为主机号。
- 子网掩码最后一个字节是128,转换为二进制为
1000 0000
,表示借用一个比特作为子网号。 - 主机号的一个比特作为子网号可以划分两个子网。0和1。
218.75.230.0000 0000 #子网0的网络地址 218.75.230.0 子网0
--- 可分配的子网0的地址 ---
218.75.230.0111 1111 #子网0的广播地址 218.75.230.127
218.75.230.1000 0000 #子网1的网络地址 218.75.230.128 子网1
--- 可分配的子网1的地址 ---
218.75.230.1111 1111 #子网1的广播地址 218.75.230.255
默认子网掩码
- 默认子网掩码是指在未划分子网的情况下使用的子网掩码
4.2.3 无分类编址的IPV4地址
-
划分子网在一定程度上缓解了因特网在发展中遇到的困难,但是数量巨大的C类网因为其地址空间太小并没有得到充分使用,而因特网的IP地址仍在加速消耗,整个IPv4地址空间面临全部耗尽的威胁。
-
1993年,IETF发布了无分类域间路由选择CIDR(Classless lnter-Domain Routing)的RFC
文档: RFC 1517~1519和1520。CIDR消除了传统的A类、B类和C类地址,以及划分子网的概念
;CIDR可以更加有效地分配IPv4的地址空间
,并且可以在新的IPv6使用之前允许因特网的规模继续增长。
无分类编址的IPV4地址的表示方法
- CIDR使用“斜线记法”,或称CIDR记法。即在IPv4地址后面加上斜线“/”,在斜线后面写上网络前缀所占的比特数量。
- CIDR实际上是将网络前缀都相同的连续的IP地址组成“CIDR地址块”。
- 我们只要知道CIDR地址块中的任何一个地址,就可以知道该地址块的全部细节:
- 地址块的最小地址
- 地址块的最大地址地址块中的地址数量
- 地址块聚合某类网络(A类、B类或C类)的数量
路由聚合概念
路由聚合也称为构造超网
【举例】:路由器R1需要周期性的将自己所知道的路由信息告诉R2,如果将5台主机1的IP地址都告诉给R2,那么将对R2的存储空间有较大的的要求,这就需要提取这5台主机的公共信息,只告诉R2一条信息即可。
找这5个目的网络的共同前缀
聚合后的地址库(也称为超网)
- 网络前缀越长,地址块越小,路由越具体;
- 若路由器查表转发分组时发现有多条路由可选,则选择网络前缀最长的那条,这称为
最长前缀匹配
,因为这样的路由更具体。
4.3 IPV4地址的应用规划
给定一个IPV4地址块,如何划分为更小的IPV4地址块,并将这些地址块分配给互联网中不同的网络。进而可以给各网络中的主机和路由器接口分配IPV4地址。
- 一般有两种方式:
定长的子网掩码(FLSM)
、变长的子网掩码(VLSM)
4.3.1 定长的子网掩码
- 使用同一个子网掩码来划分子网
- 每个子网所分配的IP地址数量相同,造成IP地址的浪费
【举例】
- 假设申请到的C类网络为
218.75.230.0
,请使用定长的子网掩码给下图所示的小型互联网中的各设备分配IP地址。
【应用需求】
- 将C类网络218.75.230.0划分成5个子网,每个子网上可分配的IP地址数量不得少于各自的需求。
根据需求计算出子网掩码
划分子网的细节
划分子网的全部细节
- 从中任意挑选5个子网地址分配给N1-N5即可实现需求。
- 子网掩码均是
255.255.255.224
采用这种方式的弊端:
- 网络N5只需要两个IP地址即可,但我们为其分配了32个网络地址,造成了IP地址的浪费。
4.3.2 变长的子网掩码
- 使用
不同的子网掩码
来划分子网 - 每个子网所分配的IP地址数量可以不同,尽可能减少对IP地址的浪费
【举例】
- 假设申请到的地址块为
218.75.230.0/24
,请使用变长的子网掩码给下图所示的小型互联网中的各设备分配IP地址。
计算出各网络主机号位数和网络前缀数
【应用需求】
- 从地址块
218.75.230.0/24
中取出5个地址块(1个“/27”
地址块,3个“/28”
地址块,1个“/30"
地址块),按需分配5个网络。
根据需求分配网络地址
- 剩余的地址可以留作以后分配
完成分配
4.4 IP数据报的发送和转发过程
IP数据报的发送和转发过程包含以下两部分:
- 主机发送IP数据报
- 路由器转发lP数据报
注意:为了将重点放在TCP/IP协议栈的网际层发送和转发IP数据报的过程上,在之后的举例中,忽略使用ARP协议来获取目的主机或路由器接口的MAC地址的过程以及以太网交换机自学习和转发帧的过程。
【举例】
- 这是两个网络,由路由器连接。
- 同一个网络间的主机可以·直接通信,属于
直接交付
。如:A–>C - 不同网络间的主机之间的通信,需要路由器进行中转,属于
间接交互
。如:A–>D
【问题】:源主机(发送方)
如何知道目的主机(接收方)
是否和自己在同一网络之间?
假设主机C要给主机F发送IP数据报
- 主机C将自己的IP地址和子网掩码相与得到主机C所在的网络地址
- 主机C将主机F的IP地址和自己的子网掩码相与
- 该地址与主机C的网络地址不同,因此目的主机与源主机
不在同一网络
,双方的通信属于间接交互
。 - 主机C需要将IP数据报
传输给路由器
,由路由器将IP数据报转发
给主机F。
【问题】:主机C如何知道应该将IP数据报交给哪个路由器
进行转发呢?
实际上:
- 用户为了让本网络上的主机能和其他网络上的主机进行通信,就必须给其指定本网络中的一个路由器。
- 由该路由器进行转发。所指定的路由器,也被称为
默认网关
。
【假设】:
主机A给主机D发送IP数据报,属于间接交互。主机A会将该数据报传输给自己的默认网关,也就是路由器。
- 路由器收到数据报后,检查IP数据报首部是否出错,若出错,则直接丢弃该IP数据报并通告源主机若没有出错,则进行转发
- 根据IP数据报的目的地址在路由表中查找匹配的条目:若找到匹配的条目,则转发给条目中指示的下一跳若找不到,则丢弃该IP数据报并通告源主机。
隔离域:
- 中继器和集线器工作在物理层,既不隔离冲突域也不隔离广播域。
- 网桥和交换机(多端口网桥)工作在数据链路层,可以隔离冲突域,不能隔离广播域。
- 路由器工作在网络层,既隔离冲突域,也隔离广播域。
4.5 静态路由配置及其可能产生的路由环路问题
4.6 路由选择协议
4.7 IPV4数据报的首部格式
固定部分:每个IP数据报首部都必须包含的部分
可变长部分:有些IP数据报,还包含一些可选的字段来增加IP数据报的功能
- IP数据报的首部常以32个比特为单位进行描述,图中的每一行都由32个比特(4个字节)构成。
- 每个小格子称为字段或者域,每个字段或某些字段的组合用来表达IP协议的相关功能。
版本
- 占4比特,表示IP协议的版本。
- 通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。
首部长度
- 占4比特,表示IP数据报首部的长度。该字段的取值以4字节为单位。最小十进制取值为5,表示lP数据报首部只有20字节固定部分;
- 最大十进制取值为15,表示IP数据报首部包含20字节固定部分和最大40字节可变部分。
可选字段
- 长度从1个字节到40个字节不等。用来支持排错、测量及安全等措施。
- 可选字段增加了IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。这就增加了每一个路由器处理IP数据报的开销。
实际上可选字段很少被使用
。
填充字段
- 确保首部长度(固定部分和可变部分)为4字节的整数倍。不足的地方使用全0进行填充。
区分服务
- 占8比特,用来获得更好的服务。
- 该字段在旧标准中叫作服务类型,但实际上一直没有被使用过。
- 1998年,因特网工程任务组IETF把这个字段改名为- 区分服务。利用该字段的不同数值可提供不同等级的服务质量。
- 只有在使用区分服务时,该字段才起作用。一般情况下都不使用该字段。
总长度
- 占16比特,表示IP数据报的总长度(首部+数据载荷)。
- 最大取值为十进制的65535(很少传输这么长的数据报),以字节为单位。
标识、标志、片偏移
这三个字段共同用于IP数据报分片
- 网络层封装的IP数据报将在数据链路层分装成帧。
- 每一种数据链路层协议都规定了帧的数据载荷的最大长度,称为最大传输单元MTU。
- 以太网的数据链路层规定MTU的值为1500字节。
- 如果某个IP数据报的总长度超过MTUI时,将无法封装成帧,需要将源IP数据报分片为更小的数据报,再将各分片数据报封装成帧。
标识
- 占16比特,属于同一个数据报的各分片数据报应该具有相同的标识。
- IP软件维持一个计数器,每产生一个数据报,计数器值加1,并将此值赋给标识字段。
标志
- 占3比特,各比特含义如下:
- DF位:1表示不允许分片,0表示允许分片
- MF位:1表示后面还有分片,0表示这是最后一个分片
- 保留位:必须为0
片偏移
- 占13比特,指出分片数据报的数据载荷部分偏移其在原数据报的位置有多少个单位。
- 片偏移以8个字节为单位
- 片偏移量必须为整数
【举例】对IPV4数据报进行分片
- 以以太网传输该IP数据报,最大传输单元为1500字节,无法封装3820字节长的IP数据报,需要将其拆分。
- 片偏移 /8 是因为片偏移以8个字节为单位
【假设】分片2的数据报经过某一网络时还需要进行分片
生存时间TTL
-
占8比特,最初以秒为单位,最大生存周期为255秒,路由器转发IP数据报时,将IP数据报首部中的该字段的值减去IP数据报在本路由器上所耗费的时间,若不为0就转发,否则就丢弃。
-
现在以“跳数”为单位,路由器转发IP数据报时,将IP数据报首部中的该字段的值减1,若不为0就转发,否则就丢弃。
-
生存时间TTL字段的作用——防止IP数据报在网络中永久兜圈(人工错误配置了路由表)
协议
- 占8比特,指明IPv4数据报的数据部分是何种协议数据单元。
- 常用的一些协议和相应的协议字段值如下。
首部检验和
- 占16比特,用来检测首部在传输过程中是否出现差错。比CRC检验码简单,称为因特网检验和
- IP数据报每经过一个路由器,路由器都要重新计算首部检验和,因为某些字段(生存时间、标志.片偏移等)的取值可能发生变化。
- 由于IP层本身并不提供可靠传输的服务,并且计算首部校验和是一项耗时的操作,因此在IPv6中,路由器不再计算首部校验和,从而更快转发IP数据报。
源IP地址和目的IP地址
- 各占32比特,用来填写发送该IP数据报的源主机的IP地址和接收该IP数据报的目的主机的IP地址。
4.8 虚拟专用网VPN和网络地址转换NAT
4.8.1 VPN
虚拟专用网VPN(Virtual Private Network)
- 利用公用的因特网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网。
- 由于IPv4地址的紧缺,一个机构能够申请到的IPv4地址数量往往远小于本机构所拥有的主机数量。
- 虚拟专用网中的各主机所分配的地址应该是本机构可自由分配的专用地址(私有地址),而不是需要申请的、在因特网上使用的公有地址。
- 也被称之为
IP隧道技术
。
这三个地址块不需要申请(私有地址)
- 私有地址只能用于内部通信,而不能用于和因特网上的主机通信。
- 私有地址只能用于本地地址而不能用作全球地址。
- 在因特网上的路由器对所有目的地址是私有地址的IP数据报一律不进行转发。
这两个部门要想进行通信:
- 各自至少需要一个路由器具有合法的全球IP地址
- 它们各自的专用网才能利用公用的因特网进行通信
10.1.0.3
需要和10.2.0.3
通信
- 第一步:主机
10.1.0.3
会将待发送数据封装成内部IP数据报,发送给路由器R1。 - 第二步:R1收到数据后,查看目的地址,发现目的网络需要通过因特网才能到达,就将该IP数据报进行加密,确保内部IP数据报的安全,然后为其添加首部信息,封装成可以在因特网上传输的外部数据报。
- 第三步:R2收到R1发送的IP数据报,去掉首部,恢复到原来的内部IP数据报。取出源地址
10.1.0.3
和目的地址10.2.0.3
。 - 第四步:根据目的地址,将数据发送给主机
10.2.0.3
。
内联网VPN
- 同一机构内不同部门的内部网络所构成的虚拟专用网VPN又称为内联网VPN
外联网VPN
- 有时一个机构的VPN需要有某些外部机构(通常就是合作伙伴)参加进来。这样的VPN就称为外联网VPN
远程接入VPN
- 在外地工作的员工需要访问公司内部的专用网络时,只要在任何地点接入到因特网,运行驻留在员工PC中的VPN软件,在员工的PC和公司的主机之间建立VPN隧道,即可访问专用网络中的资源。这种VPN称为远程接入VPN
4.8.2 NAT(重点)
网络地址转换NAT
(Network Address Translation)
- 虽然因特网采用了无分类编址方式来减缓IPv4地址空间耗尽的速度,但由于因特网用户数目的激增,特别是大量小型办公室网络和家庭网络接入因特网的需求不断增加,IPv4地址空间即将面临耗尽的危险仍然没有被解除。
- 1994年提出了一种网络地址转换NAT的方法再次缓解了IPv4地址空间即将耗尽的问题
- NAT能使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源。
使用私有地址的主机如何与使用全球IP地址的主机进行通信?
- 在专用网络连接到因特网的路由器上,安装NAT软件。
- 装有NAT软件的路由器称为NAT路由器,至少有一个有效的外部全球IP地址。
- 所有使用私有地址的主机在和外部通信时,都要在NAT路由器上将其私有地址转换成全球IP地址。
如果NAT路由器具有N个全球IP地址,那么至多只能有N个内网主机能够同时和因特网上的主机通信。
- 由于绝大多数的网络应用都是使用运输层协议TCP或UDP来传送数据,因此可以利用运输层的端口号和IP地址一起进行转换。
- 这样,用一个全球IP地址就可以使多个拥有本地地址的主机同时和因特网上的主机进行通信。
- 这种将端口号和IP地址一起进行转换的技术叫作
网络地址与端口号转换NAPT
(Network Address and Port Translation)。
注意:
- 使用私有地址的主机不能直接充当因特网服务器
- 对于一些P2P网络应用,需要外网主机主动与内网主机进行通信,在通过NAT时会遇到问题,需要网络应用自己使用一些特殊的NAT穿越技术来解决问题。
- 由于NAT对外网屏蔽了内网主机的网络地址,能为内网的主机提供一定的安全保护。