计算机网络Ch4
第四章 网络层
一、网络层功能
1.网络层所处的地位
2.网络层的功能
二、IPV4
1.IP数据报(IP分组)
(1)格式
- 首部包括固定部分(20B)和可变部分(0~40B)
- 版本用于指明是IPV4还是IPV6
- 首部长度以4B为单位,例如0101表示首部有5*4B字节
- 总长度用来指明总长度,包括首部+数据部分
- 标识:由源主机生成,一般是自增的,当数据报被分片时,通过标识+源地址判断分片从属于一个IP数据报
- 标志:
- 最低位MF(more fragment):为1表示后面还有其他分片
- 中间位DF(don’t fragment):为1表示不允许分片
- 路由器会把不允许分片且超过MTU的数据报直接丢弃,并给源主机发送一个ICMP报文,通知发生异常
- 最高位不用管
- 片偏移:表示数据部分在“被分片前”的位置,以8B为单位
- 生存时间:数据报在网络中可通过的路由器数的最大值,记作TTL,每转发一次,TTL减一,当TTL减到零时,路由器直接将IP数据报丢弃,并给源主机返回一个ICMP报文,用于通知发生异常
- 协议:指明当前在为哪个协议服务,让IP数据报向上递交时知道去处
- 首部校验和:只校验首部,网络层不管数据部分的矫错
(2)IP数据报的分片问题
- MTU:最大传送单元,一个链路层数据帧能承载的最大数据量
- 三个分片标识部分相同,表示从属于同一个IP数据报
- 片偏移*8B就是数据部分分片前的位置
- 注意:
- IP数据报的“分片”可能在源主机、或任何一个路由器中发生
- 只有目的主机才会对分片进行“重组”
- 各分片有可能乱序到达目的主机
- 由于首部的“片偏移”字段时以8B为单位,因此,除了最后一个分片外,其他每个分片的数据部分必须是8B的整数倍
小结
三、IP地址
1.最初的IP地址分类方案
- 在那个年代,要求每台主机、每个路由器接口被分配的IP地址都是全球唯一的
- 路由器和路由器连接的接口可以不分配IP地址,但路由器和其他结点连接的接口必须分配IP地址
- 从属于同一个网络的所有主机、路由器接口的IP地址“网络号”相同
2.一些特殊用途的IP地址
四、子网划分与子网掩码
1.子网划分原理
- 将主机号n位中的前k位单独拿出来作为子网号,剩余n-k位作为主机号,那么就可以分为2^k个子网,每个子网包含的IP地址块大小相等
- 子网划分前,IP地址为两级结构<网络号,主机号>
- 子网划分后,IP地址为三级结构<网络号,子网号,主机号>
- 注:主机号不能全零或全一
2.子网掩码作用
- 用子网掩码与IP地址逐位相与,可以提取出<网络号,子网号>(称为“网络前缀”)
- 网络前缀相同的IP地址归属于同一网络(子网)
- 如果一个网络进行了子网划分,那么网络中的每台主机、每个路由器接口都需要配置IP地址、默认网关、子网掩码
- 如果一台路由器支持子网划分,则其转发表中需包含<目的网络号,子网掩码,转发接口>
(1)默认子网掩码
- 如果一个传统网络(A/B/C)内部没有进行子网划分,则在转发表项给它设置一个默认子网掩码
- A:255.0.0.0
- B:255.255.0.0
- C:255.255.255.0
- 源地址与子网掩码相与得166.1.0.0,目的地址与子网掩码相与得166.1.128.0,二者不相等,说明在不同子网
- H1将IP数据报封装成MAC帧,MAC地址写的是B3接口
- 路由器的网络层将目的地址与转发表中的子网掩码相与,得到的结果与网络号比较,发现应从B2接口转发出去,MAC地址为H3
(2)默认路由
- <目的网络号全0,子网掩码全0>
- 在路由转发表中,如果所有表项都不匹配,则从“默认路由转发出去”
(3)主机发送IP数据报的过程
(4)路由器转发一个IP数据报的过程
(5)子网掩码的另一种记法
五、无分类编址CIDR
1.为什么提出
- 某单位有2000台主机需要联网,就不得不申请一个B类地址,但B类地址包含65536个地址,造成IP地址的浪费
2.无分类编址CIDR
- 网络前缀可变长
- 例:2000台主机,可以分配一个21bit网络前缀的CIDR地址块,2^11=2048
- CIDR记法:128.14.32.0/21
- 21表示网络前缀位数
- 掩码:21个1+11个0
- 当单位获得CIDR地址块后,可以把它划分为多个子网
3.定长子网划分
- 在一个CIDR地址块中,把主机号前kbit抠出来作为定长子网号,这样就能划分出2^k个子网(每个子网包含的IP地址块大小相等)
- 也会导致IP地址利用率低,浪费IP地址
4.变长子网划分
- 在一个CIDR地址块中,划分子网时,子网号长度不固定(每个子网包含的IP地址块大小不同)
小结
六、路由聚合
1.过程
- 对于一个路由转发表,如果几条路由表项的转发接口相同,部分网络前缀也相同,那么可以将这几条路由表项聚合为一条。这种地址的聚合称为路由聚合,也称构成超网。
- 表更小,查询更快
- 可能会引入额外的无效地址
- 一个目的地址可能与多个表项匹配,最长前缀匹配原则
七、NAT网络地址转换
1.传输层的端口号
2.缓解IP地址不够用的问题
- 在一个局域网中,每一台主机共享同一个全球IP地址(公网IP)
- NAT路由器将<公网IP,端口号>映射为<内网IP,端口号>
- 局域网内,内网IP不重复,但局域网之间,内网IP可以重复
小结
八、ARP协议
1.各种协议之间的关系
- 回顾:以太网MAC帧
2.作用
- 在一个局域网内部,可以通过ARP协议查询到一个IP地址对应的MAC地址
3.过程
- ARP请求分组
- 内容
- 我的IP地址是xxx,MAC地址是xxx
- 我想找的IP地址是xxx
- 将ARP请求分组封装成MAC帧,源地址是我的MAC地址,目的地址全1
- 是广播帧
- 内容
- ARP响应分组
- 内容
- 我的IP地址是xxx,我的MAC地址是xxx
- 将ARP响应分组封装成MAC帧,源地址是我的MAC地址,目的地址是请求方的MAC地址
- 内容
小结
九、DHCP协议(属于应用层)
1.各种协议之间的服务关系
- IP报文在协议栈中的位置
2.DHCP协议工作过程
一台新接入网络的主机,只有自己的MAC地址,没有自己的IP地址、默认网关、子网掩码
- 主机向DHCP服务器发送一个DHCP发现报文,由主机上的DHCP客户端进程发送
- DHCP是应用层->传输层(UDP数据报)
- 本质是两个进程的通信
- 传输层->网络层(IP数据报),源地址填全0(本网络的本主机),目的IP地址全1
- 网络层->数据链路层(MAC帧),源MAC是自己的MAC地址,目的MAC全1
- DHCP服务器从IP地址池中找到一个没有被分配的IP地址分配给主机
- 需要指明租用期是多少,如果到时间,可以续租
- 需要指明子网掩码和默认网关
- 网络层源地址依旧是全1,因为对方依旧还没有IP地址
- 链路层目的MAC写成主机的MAC
- 主机向DHCP服务器发送请求报文
- 报文中需指出自己的MAC地址和接受的IP地址
- 网络层IP数据报中,源地址依旧是全0,目的IP地址全1※
- 全1原因:一个内网可能有多个DHCP服务器,每个服务器都会给主机一个提供报文,因此主机需要告诉所有DHCP服务器最终接受的是哪个IP地址
- 链路层目的IP依旧全1
- DHCP服务器向主机发送DHCP确认报文
- 与提供报文类似
小结
十、IPV6
1.IPV6数据报格式
2.IPV6和IPV4区别
- IPV6有128位,IPV4有32位
- IPV6将校验和字段移除,以减少每跳的处理时间
- IPV6将可选字段移出首部,变为扩展首部,称为灵活的首部格式,路由器通常不对扩展首部进行检查,大大提高了路由器的处理效率
- IPV6支持即插即用(自动配置),不需要DHCP协议
- IPV6首部长度必须是8B的整数倍,IPV4首部是4B的整数倍
- IPV6只能在主机处分片,IPV4可以在路由器和主机处分片
- ICMPv6:附加报文类型“分组过大”
- IPV6支持资源的预分配,支持实时视像等要求,保证一定的带宽和时延的应用
- IPV6取消了协议字段,改成下一个首部字段
- IPV6取消了总长度字段,改用有效载荷长度字段
- IPV6取消了服务类型字段
3.IPV6地址表示形式
- 冒号十六进制记法
- 压缩形式
4.IPV6基本地址类型
5.IPV4向IPV6过渡
十一、路由算法和路由协议
计算机网络Ch4
https://sdueryrg.github.io/2024/11/20/计算机网络Ch4/