计算机网络-网络层

计算机网络-网络层
4FGR4.1 网络层的功能
网路层为传输层提供服务,将传输层的数据封装成**“IP数据报”。网络中的路由器根据IP数据报首部中的源IP地址**、目的IP地址进行“分组转发”。因此,网络层实现了**“主机到主机”**的传输。
数据链路层为网络层提供服务,将网络层的 **IP数据报(分组)**封装成帧,传输给下一个相邻结点。
异构网络互联
- 异构:每个网络的拓扑结构不同、物理层&链路层的实现不同、主机类型也各不相同
- 重要的设备:路由器(Router)
- 注:在TCP/IP文献中,路由器也称为 网关(Gateway)
路由与转发
- 路由
- 各个路由之间相互配合,规划IP数据报(分组)的最佳转发路径
- 注:各个路由器需要运行“路由协议”,最终生成各自的“路由表”
- 转发
- 一台路由器,根据自己的“转发表”,将收到的IP数据报从合适的接口转发出去
- 注:转发表 = 精简版路由表。更精简的数据结构有助于快速检索
拥塞控制
- 拥塞
- 原因:网络上出现过量分组、超负荷,引起网络性能下降
- 现象:网络上的分组增加,但吞吐量反而降低
- 拥塞控制方法
- 开环控制(静态的方法)
- 在部署网络时,就提前设计好预防拥塞的方法。一旦网络开始运行,就不再更改
- 闭环控制(动态的方法)
- 动态监视网络状态,及时发现哪里发生拥塞,并将拥塞信息传递给相关路由器(如:通过ICMP),相关路由器及时调整“路由表”
- 开环控制(静态的方法)
4.2IPV4
IPV4分组
IP数据报(分组)格式
一个链路层数据帧能承载的最大数据量称为最大传送单元(MTU)
如果一个IP数据报的总长度超出了下一段链路的MTU,就需要分片(可能在源主机、或任何一个路由器中发生,并且只有目的主机才会“重组”)
注意每个分片为独立的IP数据报,都包含首部,并且通过标识字段和源地址表明自己为分片,通过标志字段表示是否后面有分片(最低位),以及是否允许被分片(次低位),标志字段最高位不用管。片偏移字段表示数据在“被分片前”的位置,以\(\times 8B\) 为单位。
生存时间TTL字段表示可通过的路由器数量的最大值,每经过一个路由器TTL减1,如果TTL为0就直接丢弃分组,并向源主机发送ICMP报文(通知出现异常)
IPv4地址(最初)+ 整章串讲
这里顺序是(按视频来的历史发展顺序):
IPv4最初版\(\rightarrow\)子网划分与子网掩码\(\rightarrow\)CIDR\(\rightarrow\)IPv4地址与NAT
32bit IP地址的两级结构 = <网络号>,<主机号>
为方便阅读,可将IP地址按8bit分4组,每组最大为255(例如192.168.11)
子网划分与子网掩码
将主机号的最高位的一个比特划出为子网号,那么就将网络划分为两个子网。这样可以提高IP地址的利用率。需要子网号的数量取决于划分给子网号的比特数
子网划分
原理:假设原本主机号占 \(n\) bit,那么可以将前 \(k\) bit 抠出来作为子网号,用剩余的 \(n-k\) bit 作为主机号,这样就能划分出 \(2^k\) 个子网**(每个子网包含的IP地址块大小相等)**
子网划分后,IP地址为三级结构:
<网络号,子网号,主机号>
注意:每个子网地址中,主机号不能分配为全0/全1——全0表示子网本身,全1为子网广播地址
子网掩码
- 作用
- 用子网掩码、IP地址“逐位与”,算出<网络号,子网号> (可合称为“网络前缀”)
- 只有网络前缀相同的IP地址,才归属于同一个网络(或子网)
- 注意
- 如果一个网络内部进行了子网划分,那么这个网络中的每台主机、每个路由器接口都需要配置IP地址、默认网关、子网掩码
- 如果一台路由器支持子网划分技术,那么在它的转发表中,需要包含<目的网络号,子网掩码,转发接口>
默认子网掩码
如果一个传统网络(A/B/C类)内部没有进行子网划分,那么可将对应此网络的转发表项设置为“默认子网掩码”
- A类默认 255.0.0.0
- B类默认 2555.255.0.0
- C类默认 255.255.255.0
默认路由
- 默认路由(默认转发表项)设置:<目的网络号全0,子网掩码全0>
- 在路由器转发表中,如果所有表项都不匹配,那么将从“默认路由”转发出去
引入路由聚合后,注意最长前缀匹配原则
子网掩码的CIDR记法:
网络前缀的位数为 n,子网掩码可记为 “/n”
无分类编制CIDR
IP地址资源分配不灵活,利用率低,有限的IP地址资源将很快耗尽
对有一定主机需求的,可给出可变长网络前缀的CIDR地址块
获得CIDR地址块后,可以把它划分为多个子网
定长子网划分
每个子网一样大,不够灵活,IP地址利用率低,浪费有限的IP地址资源
变长子网划分
在一个CIDR地址块中,划分子网时,子网号长度不固定(每个子网包含的IP地址块大小不同)
每个子网中,主机号全0、全1的IP地址不能分配给特定结点私用
子网划分技巧: 利用类似于“从根到叶二叉哈夫曼树”的技巧
原始CIDR地址块作为根节点(假设可自由分配的主机号占 \(n\) bit)
每个分支结点必须同时拥有左右孩子,一个为0,一个为1
每个叶子结点对应一个子网,根据根节点到达叶子节点的路径来分析子网的IP地址块范围
整棵数的高度不能超过 n-1(最小的子网也要保留2bit)
路由聚合
对于一个路由转发表,如果几条路由表项的转发接口相同,部分网络前缀也相同,那么可以将这几条路由表项聚合为一条。这种地址的聚合称为路由聚合,也称构成超网。
- 路由聚合可以减少路由表的大小
- 路由聚合可能会引入额外的无效地址(并不影响网络工作)
最长前缀匹配原则
优先从匹配长度最长的转发接口转发
网络地址转换 NAT
缓解IP地址不够用的问题
一个局域网的多个主机共享一个外网IP地址,多个主机使用局域网内唯一的内网IP地址
通过内网地址和端口号映射为外网的IP地址和端口号实现对外网的访问
地址解析协议ARP
用于查询同一网络中的<IP地址,MAC地址>之间的映射关系
ICMP协议用于网络层实体之间相互通知“异常事件”
IGMP协议用于实现IP组播
ARP
- 作用:用于查询同一网络中的<IP地址,MAC地址>之间的映射关系
- ARP表(ARP缓存)
- 记录(IP地址\(\Leftrightarrow\)MAC地址)之间的映射关系
- 一个数据结构(每台主机、每台路由器都有自己的ARP表)
- 需要定期更新ARP表项
- 过程
- ARP请求分组
- 内容
- 我是谁?
- 我的IP地址是X,我的MAC地址是Y
- 我想找谁?
- 我想找的人的IP地址是Z
- 我是谁?
- ARP请求分组封装进MAC帧(帧目的地址=全1,源地址=Y)——广播帧
- 内容
- ARP响应分组
- 内容
- 你好,我是你要找的人,我的IP地址是Z,我的MAC地址是V
- ARP响应分组封装进MAC帧(帧目的地址=Y,源地址=V)——单播帧
- 内容
- ARP请求分组
动态主机配置协议 DHCP
基本概念
- 作用:常用于给刚接入网络的主机动态分配IP地址、配置默认网关、子网掩码
- DHCP使用客户/服务器模型(C/S)
- 客户:就是新接入网络的主机
- 负责分配IP地址的那台主机,管理一系列IP地址池
- 在家庭网路中,通常由家庭路由器兼职“DHCP”服务器
- 在一个大型网络内可以有多台DHCP服务器
- DHCP是应用层协议,基于UDP:客户UDP端口号=68,服务器DUP端口号=67