第四章 网络层
网络层概述
- 网络层主要任务就是将分组从源主机经过多个网络和多段链路传输到目的主机,可以将该任务划分为
分组转发
和路由选择
两种重要功能
- 网络层向上层提供两种服务
- 面向连接的
虚电路
服务 - 无连接的
数据报
服务
网际协议IP
- TCP/IP体系结构中网际层中的核心协议
IPV4地址概述
- IPv4地址就是给因特网上的每一台主机(或路由器)的,每一个接口分配一个在全世界范围内是唯一的32比特的标识符
- 由于32比特的IPv4地址不方便,故常采用
点分十进制
的表示方法
- IPv4地址的编址方法经历了三个阶段:
- 分类编址
- 划分子网
- 无分类编址
IPv4地址编址方法
分类编址
根据地址左起的第一个十进制数值,可判断出网络类别(小于127的为A类,128-191的为B类,192-223的为C类)
A类地址
- 可指派的网络数量为2^(8-1)^ - 2 = 126(8-1次方是因为最小网络号0需要保留,剩下7位可以分配;减2的原因是除去最小网络号0和最大网络号127)
- 可分配的IP地址数量为:2^24^ - 2 (减2的原因是除去全0(表示网络地址)和全1(表示广播地址))
B类地址
- 因为前面两字节固定为10,故可指派网络数量为2^16-2^
- 可分配的IP地址数量为:2^16^ - 2
C类地址
- 因为前面两字节固定为110,故可指派网络数量为2^24-3^
- 可分配的IP地址数量为:2^8^ - 2
D类地址
E类地址
划分子网
- 新增网络申请新的网络号需要等待更多的时间和花费更多的费用,会增加其他路由器中路由表记录的数量,会浪费原有网络号中剩余的大量IP地址
- 为了解决上述问题,考虑从主机号中借用一部分比特用作子网号
- 32比特的子网掩码可以表明分类IP地址的主机号部分被借用了几个比特作为子网号
- 子网掩码使用
连续的比特1
来对应网络号和子网号 - 子网掩码使用
连续的比特0
来对应主机号 - 将划分子网的
IPv4地址
与其相应的子网掩码
进行逻辑与
运算就可以得到IPv4地址所在的子网的网络地址
- 子网掩码使用
- 给定一个分类的IP地址和其相应的子网掩码,就可知道子网的划分细节:
- 划分出的子网数量
- 每个子网可分配的IP地址数量
- 每个子网的网络地址和广播地址
- 每个子网可分配的最小和最大地址
举例说明:
- 默认子网掩码是指在未划分子网的情况下使用的子网掩码
- A类:255.0.0.0
- B类:255.255.0.0
- C类:255.255.255.0
无分类编址
为了解决IP地址紧缺的问题,提出了无分类编址的方法
无分类域间路由选择CIDR
- 消除了传统A类、B类和C类地址,以及划分子网的概念
- 更加有效地分配IPv4地址空间
- 利用斜线记法,即在IPv4地址后加上“/”,然后在斜线后写上网络前缀所占的比特数量,如
35.230.64.0/21(表示网络前缀占用21比特)
- CIDR实际上是将网络前缀都相同的连续的IP地址组成一个“
CIDR地址块
” - 只需要知道CIDR地址块中的任何一个地址,就可以知道该地址块的全部细节(如:地址块的最小/大地址,地址块中的地址数量,地址块聚合某类网络(A、B、C类)的数量,地址掩码或称子网掩码)
路由聚合(构造超网)的方法就是找
共同前缀
网络前缀越长,地址块越小,路由越具体
若路由器查表转发分组时发现有多条路由可选,则选择网络前缀最长的那条,称为
最长前缀匹配
IPv4地址应用规划
- 定长子网掩码FLSM(Fixed Length Subnet Mask)
- 利用同一个子网掩码来划分子网
- 子网划分方式不灵活:只能划分出2^n^个子网(n从主机号部分借用的用来做子网号的比特数量)
- 每个子网分配的IP地址数量相同,容易浪费
- 变长子网掩码VLSM(Variable Length Subnet Mask)
- 使用不同的子网掩码来划分子网
- 划分灵活,可以按需分配
- 每个子网分配的IP地址数量可以不同,尽可能减少对IP地址的浪费
IPv4地址与MAC地址
IP地址是因特网上的主机和路由器使用的地址,用于标识两部分信息:
- 网络编号:标识因特网上数以百万计的网络
- 主机编号:标识同一网络上不同主机(或路由器各接口)
从网络体系结构看
数据包转发过程中,IP源地址和目的地址始终保持不变,而MAC地址逐个链路(网络)改变
地址解析协议ARP
如何通过IP地址找到对应的MAC地址——ARP协议
- 源主机在自己的
ARP高速缓存表
中查找目的主机的IP地址所对应的MAC地址,若找到则封装MAC帧进行发送,否则发送ARP请求(封装在MAC帧中)
- 目的主机若收到ARP请求,会将源主机的IP地址和MAC地址记录到自己的ARP高速缓存表中,然后给源主机发送ARP响应(封装在MAC帧中),ARP响应中包含目的主机的IP地址和MAC地址
- 源主机收到ARP响应后,同样将其记录到缓存表中,然后就可以根据表中内容进行MAC帧发送
- ARP作用范围:逐段链路或逐个网络,不能跨网络
- ARP无安全验证机制,故存在ARP欺骗问题
IP数据包发送和转发过程
主机发送IP数据报:
- 判断目的主机是否与自己同处一个网络
- 若同在,则直接交付
- 否则,则间接交付,传输给主机所在网络的默认网关(路由器),再由默认网关帮忙转发
路由器转发IP数据报:
- 检查IP数据报的首部是否出错
- 若出错,则直接丢弃该IP数据报并通告源主机
- 否则进行转发
- 根据IP数据报的目的地址在路由表中查找匹配的条目
- 若找到匹配项,则根据要求转发
- 否则丢弃并通告源主机
IPv4数据报的首部格式
- 版本:占4比特,表示IP协议版本。通信双方使用的IP协议版本需一致,目前广泛使用的是版本4(IPv4)
- 首部长度:占4比特,表示IP数据报首部的长度。该字段取值以4字节为单位
- 可选字段:长度从1字节到40字节不等,很少被使用
- 填充:确保首部长度为4字节的整数倍,使用全零进行填充
- 区分服务:占8比特,很少用
- 总长度:占16比特,表示IP数据报的总长度(首部+数据载荷)
- 标识:占16比特,属于同一个数据报的各分片数据报应具有相同标识。IP软件维持一个计数器,每产生一个数据报,计数器值增加并将其赋给标识字段
- 标志:占3比特。
- DF位:1表示不允许分片,0表示允许分片
- MF位:1表示后面还有分片,0表示当前是最后一个分片
- 保留位必须为0
- 片偏移:占13比特,指出分片数据报的数据载荷部分偏移其在源数据报的位置有多少个单位,以8个字节为单位
- 生存时间:占8比特,以跳数为单位,路由器转发IP数据报时,将IP数据报首部中的该字段值减1,若不为0则转发,否则丢弃。作用是防止IP数据报在网络中永久兜圈
- 协议:占8比特,指明IPv4数据报的数据部分是何种协议数据单元
- 首部检验和:占16比特,用来检测首部在传输过程中是否出现差错
- 源IP地址和目的IP地址:各占32比特,用来填写发送该IP数据报的源主机的IP地址和接收该IP数据报的目的主机的IP地址