计算机网络-网络层

syan 发布于 2020-12-20 5687 次阅读


把分组从源端传到目的端,为分组交换网上主机提供通信服务。传输单位为数据报

功能:

  • 路由选择和分组转发(寻找最佳路径)
  • 异构网络互联
  • 拥塞控制(开环控制/闭环控制)

数据交换方式

电路交换

  • 建立连接
  • 进行通信
  • 释放连接

电路交换建立物理路径,完全独占资源

  • 优点
    • 通信时延小
    • 有序传输
    • 没有冲突
    • 实时性强
  • 缺点
    • 建立连接时间长
    • 线路独占,使用效率低
    • 灵活性差
    • 无差错控制能力(交换设备)

报文交换

报文为源应用发送的信息整体

交换设备存储报文,等待链路空闲随机转发

  • 优点
    • 无需建立连接
    • 存储转发动态分配
    • 线路可靠性高
    • 线路利用率高
    • 多目标服务
  • 缺点
    • 有存储转发时延
    • 报文大小不定,需要内存

分组交换

跟报文交换相似,报文切割分组片段进行发送

  • 优点
    • 无需建立连接
    • 存储转发,动态分配
    • 线路可靠性高
    • 线路利用率高
    • 存储管理容易(相对报文)
  • 缺电
    • 存在存储转发时延
    • 需要传输额外信息
    • 乱序到达时需要排序分组
层次 传输单元
应用层 报文
传输层 报文段
网络层 IP数据报,分组
数据链路层
物理层 比特流

数据报方式

为网络层提供无连接服务,不预先确定传输路径,不同分组路径可能不同

因特网使用数据报方式,路由器根据分组目的地址转发分组,基于路由协议和算法构建转发表并检索,每个分组独立选路(若找不到则转发至默认端口)

虚电路方式

为网络层提供有连接服务,首先确定传输路径,然后沿路径传输分组,传输完成拆除连接

建立连接,每个分组携带虚电路号,而非自由地址。源主机发送呼叫请求并收到呼叫应答后建立虚电路连接。可以在固定线路上全双工通信。源主机发送释放请求分组以拆除虚电路

数据报比较虚电路

数据报服务 虚电路服务
连接的建立 不要 必须有
目的地址 每个分组都有完整的目的地址 仅在建立连接阶段使用,之后每个分组使用长度较短的虚电路号
路由选择 每个分组独立地进行路由选择和转发 属于同一条虚电路的分组按照同一路由转发
分组顺序 不保证分组的有序到达 保证分组的有序到达
可靠性 不保证可靠通信,可靠性由用户主机来保证 可靠性由网络保证
对网络故障的适应性 出故障的结点丢失分组,其他分组路径选择发生变化,可正常传输 所有经过故障结点的虚电路均不能正常工作
差错处理和流量控制 由用户主机进行流量控制,不保证数据报的可靠性 可由分组交换网负责,也可由用户主机负责
  1. 报文交换和分组交换都采用存储转发。
  2. 传送数据量大,且传送时间远大于呼叫时,选择电路交换。电路交换传输时延最小。
  3. 从信道利用率看,报文交换和分组交换优于电路交换,其中分组交换时延更小。

网络层协议

IP协议

IP数据报格式

首部+数据部分(TCP/UDP段)

名称 注释 大小
版本 Version ipv4或者ipv6 4位
首部长度 IHL 此处数值再乘以4才是真正大小,同时因为IP数据报固定长度为20字节,所以此处最小值为5,即二进制的0101 4位
区分服务 DSCP + ECN 希望获得哪种服务,用的比较少 8位
总长度 Total Length 首部+数据的长度,最大为2^16-1=65535 16位
标识 Identification 用来表示是哪一个数据报的分片,不同的分片标识各不相同 8位
标志 Flags 用来表示是否分片和分片是否结束 3位,但实际有用的只有后两位
片偏移 Fragment Offset 用来标记分片之后,该分片在原来的数据报的位置,以8字节为单位 13位
生存时间 Time To Live 即TTL,没经过一个路由器TTL-1,0时自动放弃,根据系统不同默认的TTL不同 8位
协议 Protocol 用来标记协议名的字段值,如TCP,UDP,ICMP等等 8位
首部检验和 Header Checksum 检验首部的字段是否出错,出错就丢弃此数据报
源地址 Source IP Address 发送方ip地址 32位
目的地址 Destination IP Address 接收方ip地址 32位
可选字段 Options 用来排错等安全检测 未知,可在0-40位之间
填充 将数据报对齐成4字节的整数倍,数值全部为0 未知,根据可选字段来定

由于以太网中MTU为1500字节,所以IP分组存在长度限制,当需要传递信息的长度大于MTU时,需要进行分片,考虑IP数据报的标识、标志、片偏移

标识用于识别分片来自统一分组,标志位只有两位有意义,x _ _,中间位don’t fragment df=1禁止分片,最低位more fragment mf=1表示后面还有分片

片偏移表示分片在原分组中的相对位置,以8B为单位,所以分组长度为8B整数倍(除最后分组

IP地址

IP地址用于唯一标记互联网中路由器主机的接口,路由器接口连接不同网络

  • 分类的IP地址
  • 子网划分
  • 构成超网(无分类编址方法

分类IP地址




网络地址转换NAT

NAT路由器使局域网拥有统一全球IP地址,通过WAN口和LAN口的端口映射转发。路由器有固NAT转换表,对主机透明

子网划分

  • 建议看视频理解,点小标题链接

分类IP地址存在弱点

  • IP地址空间利用率有时很低
  • 两级IP地址不够灵活

子网划分将主机号提取分为子网号和主机号

通过子网掩码识别具体地址,对于主机号子网掩码为0,对于子网号子网掩码为1

通过子网掩码与IP地址逐位相与,获取子网网络地址

路由器转发分组算法:

  • 已知路由表存在:
    • 目的网络地址
    • 目的网络子网掩码
    • 下一跳地址
  1. 提取目的IP地址
  2. 是否直接交付(使用网络地址与子网掩码相与,判断是否路由表是否存在可交付)
  3. 特定主机路由(判断是否能转发特定路由)
  4. 检测路由表有无路径(将路由表与掩码相与,判断能否转发)
  5. 默认路由0.0.0.0
  6. 丢弃,报告转发分组出错

无分类编制CIDR

  • 使用变长子网掩码
  • 消除传统ABC类地址及子网概念
  • 网络前缀+主机号,融合了子网地址和子网掩码,方便子网划分
  • CIDR记法:IP地址后加/,填写网络前缀位数描述地址掩码
  • 通过地址块最小地址加网络前缀位数描述地址块
  • 通过网络前缀的缩短,将多个子网聚合成较大的子网可以构成超网,完成路由聚合。
  • 最长前缀匹配:CIDR下查表可能找到多个匹配结果,匹配时选择具有最长网络前缀的路由,前缀越长地址块越小越精细。
  • CIDR允许全零全一,子网划分不允许

IPv6

解决地址在耗尽问题

改进首部格式,支持快速处理/转发数据报,支持QoS(服务质量)

格式:
基本首部40字节+有效载荷,有效载荷包括扩展首部

名称 作用 位数
版本 Version 知名协议版本,此处因为是ipv6所以总是6 4位
优先级 Traffic Class 又来区分数据报的类型和优先级 8位
流标签 Flow Label 和ipv4标识某个数据报分片不同,这是对于一整个数据报流的标记 19位
有效载荷长度 Payload Length 指的是扩展首部+数据部分的大小,和ipv4的总长度和首部长度都不同,ipv6的首部长度是固定的40字节 16位
下一个首部 Next Header 基本首部的下一个首部指的是有效载荷里标记的的扩展首部,有效载荷里的扩展首部再指向有效载荷里标记的的扩展首部,直至最后指向数据 8位
跳数限制 Hop Limit 基本相当于ipv4当中的TTL,每到一个路由器-1.减到0时丢弃 7位
源地址 Source Address 发送方ipv6地址 128位
目标地址 Destination Address 接收方ipv6地址 128位

区别:

  • 地址从32位扩展128位
  • 将校验和字段移除
  • 将可选字段改为扩展首部,更加灵活
  • 即插即用,无需DHCP
  • 首部长度为8B整数倍,v4为4B
  • 只能在主机处分片,不能在路由器(不同v4
  • ICMPv6附加分组过大报文类型
  • 支持资源预分配,实时影像保证带宽和时延
  • 取消协议字段,改为下一首部字段
  • 取消总长度字段,改为有效载荷长度
  • 取消了服务类型字段

记法:冒号十六进制记法、压缩记法(去零)、双冒号表示连续全零

地址类型:

  • 单播:一对一
  • 多播:一对多
  • 任播:一对多取一

兼容性:

  • 双栈协议:同时支持IPv4和IPv6协议栈,不同接口分别配置地址
  • 隧道技术:将IPv6封装为IPv4数据报,于隧道中发送

IP组播

路由器组播协议&IP组播地址

在网络单播,在局域多播,48位以太网地址定界

网际组管理协议IGMP,用于让路由器知道本局域网上是否有主机的进程参加或退出某组播组

etc...

移动IP

跨地区使用相同IP

移动节点&归属代理&外部代理&永久地址&转交地址

ARP协议

ARP高速缓存保存IP地址与MAC地址的映射(只保存局域网内)

若没有则广播ARP请求分组(IPS,IPT,MACS,MACT),将目的MAC地址存为全1。当对应机器收到请求分组时回复响应。

当目的IP不存在于局域网内时,将MAC目标存为默认网关(路由器)MAC地址(如果没有缓存则请求)

广域网传播目的MAC为全一,与传播无关,当进入目的地址网关时发送ARP请求

  • 使用过程:检查ARP高速缓存,有对应写入MAC帧,没有则用全F帧封装并广播请求分组。目的主机收到后返回ARP响应,源主机收到写入ARP缓存(10-20min更新)
  • 使用典型:
    • 主机A发给本网络主机B,用ARP找到主机B硬件地址
    • 主机A发给另一网络上主机B,用ARP找到网关硬件地址
    • 路由器发给本网络主机A,用ARP找到主机A硬件地址
    • 路由器发给另一网络主机B,用ARP找到另一路由器硬件地址

DHCP协议

主机获得IP地址

  • 静态配置
    • IP地址,子网掩码,默认网关
  • 动态配置
    • DHCP动态分配移动主机IP地址(应用层协议,基于UDP)

DHCP即插即用联网,主机可以从服务器动态获取IP地址、子网掩码、默认网关、DNS服务器名称与IP地址,允许地址重用,支持移动用户入网,支持地址续租

  1. 主机广播DHCP发现报文
  2. DHCP服务器广播DHCP提供报文(先到先得)
  3. 主机广播DHCP请求报文(告知特定DHCP服务器及其它服务器)
  4. DHCP服务器广播DHCP确认报文

ICMP协议

支持主机或路由器,差错报告&网络探寻

方式:发送特定ICMP报文进行工作

ICMP差错报文

  • 终点不可达:无法交付
  • 源点抑制:拥塞丢失数据
  • 时间超过:TTL=0,超时反馈&终点未能接收全部数据报片且超过规定时间,丢弃发报
  • 参数问题:首部字段出问题
  • 改变路由:重定向报文表明路由非最佳
  • 特殊:
    • 不对ICMP差错报告报文发送ICMP差错报告报文
    • 对于第一个分片数据报片的所有后续数据报片不发送
    • 对具有组播地址的数据报不发送
    • 对具有特殊地址的数据报不发送

ICMP报文装入数据报

ICMP询问报文

  • 回送请求和回答报文:ping,检测目的站是否可达
  • 时间戳请求和回答报文:进行时钟同步和时间测量
  • 掩码地址请求和回答报文
  • 路由器询问和通告报文

ICMP应用

  • ping:测试两个主机之间的连通性
  • traceroute:跟踪分组从源点到终点的路径,使用了ICMP时间超过差错报告报文
    • 通过发送一组TTL不同的报文,通过反馈判断距离

路由选择算法及路由协议

路由算法计算最佳的路由方式载入路由表/转发表,链路距离/时延

路由算法:

  • 静态路由算法:管理员手工配置路由信息
    • 简便,可靠,适用于拓扑变化不大的网络,通常用于高安全和较小商业网络
    • 路由更新慢,不适用于大型网络
  • 动态路由算法:路由器交换信息,安装路由算法优化路由表项
    • 更新快,及时响应链路费用及网络拓扑变化
    • 算法复杂,增加网络负担

动态路由算法细分:

  • 全局性:链路状态路由算法OSPF(路由器完全掌握网络拓扑及链路费用信息
  • 分散性:距离向量路由算法RIP(路由器只掌握物理相连邻居及链路费用

分层次路由选择协议

因特网存在自治系统AS,防止路由规模过大,因此有自治系统将内部网关协议与外部网关协议的存在割裂。AS内所有网络作为独立行政单位,所在路由器在本自治系统内连通

路由选择协议:

  • 内部网关协议IGP 一个AS内使用的RIP、OSPF
  • 外部网关协议EGP AS之间使用的BGP

RIP协议和距离向量算法

分布式基于距离向量的路由选择协议,是因特网的协议表尊,简单

要求网络中每一个路由器都维护从它自己到其它每一个目的网络的唯一最佳距离记录

距离,通常表示为跳数,在路由器处进行计算。依照网络分割,通常用距离16表示网络不可达

RIP协议只适用于小互联网,记录以下结构的数据

目的网络 距离 下一跳路由器
  • RIP协议仅与相邻路由器交换信息
  • RIP协议交换自身路由表
  • 没30秒交换路由信息,则认为链路bug

路由器刚开始工作时,只知道相连网络的距离,只与数目有限的相邻路由器交换并更新路由信息。经过若干次更新达成自治系统内任何网络的最短距离及下一跳路由器地址

交换RIP报文,

工作过程:

  • 修改相邻路由器发来的RIP报文所有表项,将距离+1,下一跳修改为发送路由器
  • 对修改报文与路由表匹配,填入路由表,并匹配修改取最小判断采用还是丢弃
  • 180s未收到相邻报文则记作不可达

使用udp数据报,RIP是属于路由器的应用层协议

特点:当网络出现故障时,需要较长时间才能将信息传送到所有服务器(容易套娃)慢收敛

OSPF协议与链路状态算法

开放最短路线优先OSPF协议

路由器使用洪泛法发送相邻所有路由器的链路状态,仅当当前链路状态发生变化时进行洪泛,最后路由器建立全网拓扑链路状态数据库

  1. 通过发送问候分组了解邻居节点的网络地址,每10s一次
  2. 度量邻居成本
  3. 构造DD数据库描述分组发给邻站
  4. 如果DD分组都有则不处理,如果又更新则发送LSR链路状态请求分组
  5. 收到LSR后发送LSU链路状态更新分组
  6. 更新完毕发送LSAck链路状态确认分组

因此只要一个路由器链路状态发生变化则泛洪发送LSU分组进行更新,更新完毕后回复LSAck确认

为了OSPF用于大规模网络,可以为自治系统划分小于200路由器区域进行标识计算

主干路由器&区域边界路由器|自治系统边界路由器|区域内部路由器

OSPF分组使用IP数据报进行发送,网络层协议(或传输层协议)

  • 每隔30min更新一次数据库链路状态
  • 当互联网规模大时,区域化的OSPF协议要比距离向量协议方便,不用全部储存
  • OSPF收敛速度快

BGP协议

BGP与其它AS的邻站BGP发言人交换信息

交换网络可达性信息,即到达某一网络需要经过的AS序列

发送变化时进行更新

  • BGP发言人交换网络可达性信息后根据所采用的策略从收到的路由信息中找出到达各AS的较好路由
  • 交换路径向量

TCP传输

  • open报文认证发送方
  • update报文告知新路径或撤销
  • keepalive报文确定连通进行确认
  • notification报文报告差错关闭连接

路由协议总结

网络层设备——路由器

路由选择&分组转发

总结

  • 网络层
    • 网络层功能
      • 异构网络互联
      • 路由与转发
      • 拥塞控制——开环闭环
    • 数据交换方式
      • 电路交换
      • 报文交换
      • 分组交换——数据报/虚电路
    • IP数据报——格式&分片
    • IPv4
      • 分类IP地址——网络地址转换NAT
      • 子网划分
      • 无分类编制CIDR——构成超网
    • 协议
      • ARP——MAC和IP映射
      • DHCP——动态获取IP地址
      • ICMP——差错报文和询问
      • IGMP——组播路由选择
    • IPv6
    • 路由算法
      • 静态路由算法
      • 动态路由算法
        • OSPF
        • RIP
    • 路由选择协议
      • 内部网关协议
        • RIP
        • OSPF
      • 外部网关协议
        • BGP
    • 移动IP
    • 路由器