computer-network-note-4

computer-network-note-4

Charles Lv7

网络层

网络层提供的两种服务

  • 面向连接的服务,即虚电路(virtual circuit)
    • 通信双方在开始数据传输前,先由网络建立连接,之后的数据均通过该连接进行,由网络保证数据传输的可靠性
    • 虚电路只是一种逻辑连接,分组沿着这条逻辑连接按照存储转发方式传送,而并不是真正建立了一条物理连接
    • 支持方:以电信公司为代表的一派
  • 无连接的服务,即数据报(datagram)
    • 网络在发送数据时不需要先建立连接,每一个分组在网络中独立传送
    • 网络层不保证服务质量,分组可能出错、丢失、重复和失序,也不保证分组传送的时限
    • 支持方:以Internet为代表的一派
  • TCP/IP采用数据报服务

image-20240221130322961

  • 虚电路与数据报的比较
对比的方面 虚电报服务 数据报服务
思路 可靠通信应当由网络来保证 可靠通信应当由用户主机来保证
连接的建立 必须有 不需要
终点地址 仅在连接建立阶段使用,每个分组使用短的虚电路号 每个分组都有终点的完整地址
分组的转发 属于同一条虚电路的分组均按照同一路由进行转发 每个分组独立选择路由进行转发
当结点出故障时 所有通过出故障的结点的虚电路均不能工作 出故障的结点可能会丢失分组,一些路由可能会发生变化
分组的顺序 总是按发送顺序到达终点 到达终点时不一定按发送顺序
端到端的差错处理和流量控制 可以由网络负责,也可以由用户主机负责 由用户主机负责

网际协议 IP

IP(Internet Protocol)简介

  • 网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一
  • 与 IP 协议配套使用的还有四个协议:
    • 地址解析协议ARP
    • 逆地址解析协议RARP
    • 网际控制报文协议ICMP
    • 网际组管理协议IGMP

image-20240221131116687

分类的IP 地址

  • IP 地址

    • 分配给主机或路由器的标识符,目前使用的IPv4为32位IP地址
    • IP 地址的分配由ICANN (Internet Corporation for Assigned Names and Numbers)负责
  • IP地址的编址方法经历了三个阶段:

    • 分类的 IP 地址:最基本的编址方法,1981 年通过标准
    • 子网的划分:最基本编址方法的改进, 1985 年成为标准[RFC 950]
    • 构成超网:比较新的无分类编址方法,1993 年提出
  • 分类的IP地址

    • IP地址被分为A, B, C, D, E五类,每一类地址都包含网络号(net-id)和主机号(host-id)两个字段 IP地址::={<网络号> ,<主机号>}
    • 不同类的IP地址区别主要是网络号、主机号的长度不同
  • IP 地址中的网络号字段和主机号字段

    image-20240221131541030

image-20240221131550131

IP 地址与硬件地址

  • IP地址
    • 网络层及以上各层使用的地址,是一种逻辑地址
    • 存放在IP包头部
  • 物理地址
    • 数据链路层及物理层使用的地址
    • 存放在数据链路层的帧中

image-20240221142443599

ARP与RARP协议

  • IP 地址与物理地址的相互转换问题

image-20240221142509955

  • ARP协议(Address Resolution Protocol)

    • 主机设有一个ARP高速缓存(ARP cache),存有本地局域网上各主机和路由器的 IP 地址与硬件地址的映射表

    • 当主机 A 欲向本局域网上的主机B发送IP包时

      • 先在其ARP高速缓存中查看有无主机B 的IP地址
      • 如有,就可查出其对应的硬件地址,再将此硬件地址写入MAC帧,通过局域网发送
      • 如无,则在网络中广播一个ARP请求
      • 当主机B收到ARP请求后,向主机A返回一个ARP应答,告知自己的物理地址

      ARP解决同一局域网中的主机或路由器的 IP 地址和硬件地址的映射问题,如果目的主机不在本局域网内,IP包需经由路由器转发,此时在局域网内要完成的是路由器IP与物理地址的映射

IP数据报格式

  • 一个 IP包由头部和数据两部分组成
    image-20240221142800637

  • 头部:20字节的固定字段 + 0到多个可选字段

  • Version字段:4bit,IP 协议的版本,目前的 IP 协议版本号为 4 (即 IPv4)

  • IHL:4bit,IP包头长度,最小5,最大15,单位为word(32bit)。因此 IP包头最长60 字节

  • Type of service:1字节,服务类型,目前很多路由器忽略该字段

  • Total Length:2字节,IP包总长度(含头部和数据),单位为字节。因此IP包的最大长度为 65535 字节

  • Identification:2字节,标识,是一个计数器,用来产生IP包的标识

    • 超过数据链路层MTU(Maximum Transmission Unit)的IP包要分片传输
    • 分片的多个包具有相同的标示,便于接收端重组
  • DF:1bit,Don’t Fragment,当 DF=0 时允许分片

  • MF:1bit,More Fragment,MF=1表示后面“还有分片”;MF=0表示最后一个分片

  • Fragment offset:13bit,片偏移,较长的包在分片后,某片在原分组中的相对位置,以8字节为单位

  • Time to live(TTL): 1字节,生存时间,IP包在网络中可通过的路由器个数的最大值

    • 实际实现中,IP包每经过一个路由器TTL减 1,为0则丢弃,并向源主机发送一个告警包
    • 最大值为255,由源主机设定初始值,Windows操作系统一般为128,UNIX操作系统一般为255,Linux一般为64
  • Protocol:8bit,协议字段,该包中数据部分的协议类型,即上层协议类型 -> 该字段决定了该包将交由哪里

  • Header checksum:2字节,包头校验和(注意:只针对包头)

  • Source address:4字节,源IP地址

  • Destination address:4字节,目的IP地址

  • 选项字段:以4字节为单位,最长40字节。实际网络中很少使用

  • 校验和算法:对IP包头,每16位求反,循环相加(进位加在末尾),和再求反

    image-20240221143248765

划分子网和构造超网

划分子网

  • 为什么要划分子网?
    • 分类IP地址无法适应Internet快速发展需要
      • A类地址的主机数超过1000万,B类地址也超过6 万
      • A 、 B类地址的网络由多个小型网络构成,如何对这些小网络寻址?
      • 某网络可能使用多块C类地址,如何对该网络寻址?
  • 解决办法:划分子网
    • 一个网络可划分为若干个子网(subnet)
      • 常按物理网络或单位组织机构划分子网,直观且易于管理
    • 在何处体现子网信息?
      • IP地址中并不含有子网信息
      • 解决办法:使用子网掩码(subnet mask)
  • 子网掩码是一个网络或一个子网的重要属性,在路由寻址中发挥着重要作用
  • 对目的IP地址和子网掩码执行“按位与”操作,即得到子网地址

使用子网掩码的分组转发过程

  • 路由器中路由表项包含三项基本信息:

    • 目的网络地址、子网掩码、下一跳地址
  • 转发流程:

    • 从收到的分组的首部提取目的IP地址D
    • 先用与该路由器直接相连各网络的子网掩码和D逐位相“与”,看是否和相应的网络地址匹配,若匹配,则将分组直接交付;否则就是间接交付,执行③
    • 若路由表中有目的地址为D的特定主机路由,则将分组传送给指明的下一跳路由器;否则执行④
    • 对路由表中的每一行的子网掩码和 D 逐位相“与”,若其结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则执行⑤
    • 若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则执行⑥
    • 报告转发分组出错

    注意:路由表中仅包含局部路由信息,使用默认路由以确保任意分组的转发

    核心操作:将目的IP地址与路由表中子网掩码“ 与 ”,并判断是否与目的网络匹配

    image-20240221143942317

无分类编址 CIDR

  • CIDR(Classless Inter-Domain Routing)无分类域间路由

  • CIDR的主要特点

    • 消除传统A类、B类和C类地址以及划分子网的概念
    • 使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号
    • IP地址从三级编址(使用子网掩码)又回到了两级编址 IP地址::={<网络前缀>,<主机号>}
    • CIDR还使用“斜线记法”(slash notation),又称为CIDR记法,IP地址后加一个斜线“/”,后跟网络前缀所占的位数
  • 网络前缀都相同的连续的 IP 地址组成“CIDR地址块”

  • 路由聚合(route aggregation) <- CIDR带来的好处

    • 一个 CIDR 地址块可以表示很多地址,这种地址的聚合称为路由聚合
    • 路由聚合的好处:路由表中的一个项目可以表示很多个(例如上千个)原来传统分类地址的路由,可以减少路由表中表项个数,并减少路由器间交换的路由信息量
    • 路由聚合也称为构成超网(supernetting)
      • 称为超网是由于CIDR地址块大多包含多个C类地址
  • 关于地址掩码

    • CIDR不使用子网,但仍使用“地址掩码”这一名词
  • CIDR记法的其他形式

    • 10.0.0.0/10 可简写为 10/10,即省略点分十进制中低位连续的0
    • 网络前缀后跟星号 * 的表示方法,如 00001010 00*,星号 * 之前为网络前缀,星号 *为任意主机号
  • 最长前缀匹配

    • 使用CIDR时,路由表中的表项中的“目的网络地址”由固定长度变成了变长的“网络前缀”
    • 在查找路由表时可能会得到不止一个匹配结果
    • 最长前缀匹配(longest-prefix matching)原则
      • 从匹配结果中选择具有最长网络前缀的路由
      • 网络前缀越长,其地址块就越小,因而路由就越具体(more specific)
      • 最长前缀匹配又称为最长匹配或最佳匹配

网际控制报文协议 ICMP

ICMP简介

  • RFC 792: Internet Control Message Protocol
  • 主要用于报告出错和测试等控制信息、
  • ICMP位于IP层,ICMP报文是封装在IP包中传输的

image-20240221144652999

  • ICMP 报文有9种,可分为差错报告报文和询问报文两类

image-20240221144712577

  • 差错报告报文

    • Destination unreachable:终点不可达,路由器或主机无法传输报文时向源主机发送此报文
    • Source quench:源点抑制,路由器或主机由于拥塞丢弃报文时,向源主机发送此报文,使其放慢发送速度
    • Time exceeded:超时,当报文的TTL字段为0时,路由器丢弃报文,并向源主机发送此报文
    • Parameter problem:参数问题,路由器或主机收到的报文中头部有非法字段时,丢弃数据包,并向源主机发送此报文
    • Redirect:重定向,路由器向主机发送此报文告知路由改变,主机下次发送数据报给另外的路由器
  • 询问报文

    • Echo request / reply:回声探测,用于测试网络连通性
    • Timestamp request / reply:请求时间,可用于时间同步
  • Ping

    • 用来测试两个主机之间的连通性
    • 采用ICMP echo request / reply报文
      • 向目的主机发送ICMP echo request报文,对方收到后会回应ICMP echo reply,根据能否收到应答后判断两台主机之间是否连通
  • Traceroute / Tracert

    • 用来测试到另一台主机所经过的路由信息
    • 采用ICMP超时报告报文
      • 逐个发出UDP报文,其IP包头中的TTL字段分别设为1, 2, 3, …,直到到达目的主机
      • 报文路由路径上的路由器会返回ICMP超时报文,从该报文即可得知路由器IP地址

路由算法及协议

路由算法简介

  • 在网络中,路由器依据路由信息(路由表)转发分组,路 由信息是路由协议生成的,路由算法是路由协议的基础 和核心,注意:

    • 路由协议是用来生成路由信息(路由表)的,不是转发分组的
  • 理想的路由算法应具备的特性

    • 必须是正确的和完整的:按照得出的路由能够进行正确寻址
    • 在计算上应简单:不增加过多开销
    • 有自适应性:能根据通信量和网络拓扑的变化调整路由
    • 应具有稳定性:通信量和拓扑稳定时,能快速收敛
    • 应是公平的:对所有用户公平
    • 应是最佳的:能找出最好的路由(时延最小、吞吐量最大)
  • 不同情况下的路由需求可能各有侧重,且网络环境不断变化,因此不存在一种绝对的最佳路由算法

  • 静态路由与动态路由

    • 静态路由选择策略
      • 非自适应路由选择
      • 简单和开销较小,但不能及时适应网络状态的变化
      • 适用于小规模且变化较少的网络,由人工设置路由
    • 动态路由选择策略
      • 自适应路由选择
      • 能较好地适应网络状态的变化,但实现起来较为复杂,开销也比较大
      • 适用于较大规模、频繁变化的网络,通过专门的算法和协议进行路由的计算
  • 两类典型的动态路由算法

    • 距离向量(distance vector)路由算法
    • 链路状态(link state)路由算法
  • Internet采用分层次的路由,原因:

    • Internet规模庞大,任何一台路由器都不可能获取和存储整个Internet的路由信息
    • 接入Internet的众多网络(管理方)不希望外界了解自己网络的内部信息
  • 自治系统(AS—Autonomous System)的概念

    • 定义:在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS之间的路由
    • 一个 AS可使用多种内部路由选择协议和度量,但对其他 AS 表现出的是单一的和一致的路由选择策略
  • 在自治系统背景下,Internet路由协议可以分为两类:

    • 内部网关协议 IGP(Interior Gateway Protocol)
      • 自治系统内部使用的路由选择协议
      • 这类路由协议使用得最多,如 RIP 和 OSPF 协议
    • 外部网关协议EGP(External Gateway Protocol)
      • 若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中,这样的协议就是外部网关协议 EGP。
      • 应用最为广泛的外部网关协议:BGP-4
  • 自治系统之间的路由选择又称为域间路由选择(interdomain routing)

  • 自治系统内部的路由选择又称为域内路由选择(intradomain routing)

距离向量路由与RIP协议

  • 距离向量路由(distance vector routing)简介

    • 属于动态路由算法
    • 也称为Bellman-Ford路由算法和Ford-Fulkerson算法
    • 最初用于ARPANET,被RIP协议采用
  • 距离向量路由的基本思想

    • 每个路由器维护一张表,表中给出了到每个目的地的已知最佳距离和线路,并通过与相邻路由器交换距离信息来更新表
    • 路由器周期性地向所有相邻路由器发送它的距离表,同时它也接收每个邻居结点发来的距离表;
    • 相邻路由器X发来的表中,X到路由器i的距离为Xi,本路由器到 X的距离为m,则路由器经过X到 i的距离为Xi + m。根据不同邻居发来的信息,计算Xi + m,并取最小值,更新本路由器的路由表。
  • 距离向量路由的无穷计算问题

    • 算法的缺陷:对好消息反应迅速,对坏消息反应迟钝
  • RIP(Routing Information Protocol)协议

    • 属于距离向量路由协议

    • RFC1058: Routing Information Protocol

    • 特点:简单,适用于小规模网络中的路由

    • RIP中的距离定义:路由器跳数(hop count)

      • 优点:便于计算
      • 最长距离15,即允许的最长路径中最多包含15个路由器,距离为16表示不可达,直接连接的距离为0
    • RIP的三个要点

      • 仅和相邻路由器交换信息
      • 交换的信息是当前本路由器所知道的全部信息,即自己的路由表
      • 按固定的时间间隔交换路由信息(典型值:每隔 30 秒 )
    • RIP优缺点

      • 优点:实现简单,开销较小
      • 缺点:
        • 当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器(距离向量路由的固有缺点)
        • 支持的网络规模有限,最大距离为 15(16 表示不可达)
        • 路由器之间交换的路由信息是路由器中的完整路由表,随着网络规模的扩大,开销随之增加

链路状态路由与OSPF协议

  • 链路状态路由(link-state routing)的基本思想

    • 每个路由器完成5步工作:
      • 发现它的邻居结点,并学习其网络地址
      • 测量到各邻居结点的延迟或开销
      • 构造一个分组,其中包含所有它刚刚知道的信息
      • 将这个分组发送给其他所有路由器
      • 计算出到每一个其他路由器的最短路径
    • 各路由器之间动态交换链路状态信息,每个路由器都建立一个链路状态数据库
      • “链路状态”即本路由器都和哪些路由器相邻,以及该链路的“度量”(metric)
    • 链路状态数据库实际上是全网的拓扑结构图,它在全网范围内是一致的(即链路状态数据库的同步)
    • 各路由器根据网络拓扑使用Dijkstra算法计算从本路由器到其他结点的最佳路径,构成路由表
  • OSPF(Open Shortest Path First)协议简介

    • 属于链路状态路由协议
    • RFC2328: OSPF Version 2
    • 优点:
      • 收敛速度快:当链路状态发生变化时,结点会以洪泛(flooding)方式告知所有网络中其他所有结点(洪泛(flooding): 结点收到分组时,向除输入链路外的所有其他链路发送出去)
      • 适用于较大规模的网络:仅在链路状态发生变化时发送洪泛信息,不会产生很大通信量
  • 为了管理大规模的网络,OSPF 将一个自治系统再划分为若干个区域(area)
    • 每一个区域都有一个 32 位的区域标识符(用点分十进制表示)
  • 划分区域的好处:利用洪泛法交换链路状态信息的范围局限于一个区域而不是整个的自治系统,减少了整个网络上的通信量
  • 一个区域内的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑
  • 层次结构的区域划分,上层的区域称为主干区域(backbone area),主干区域的作用是用来连通其他在下层的区域
    • 主干区域的标识符规定为0.0.0.0。

外部网关路由协议BGP

  • BGP(Border Gateway Protocol)简介
    • BGP是不同自治系统的路由器之间交换路由信息的协议
    • BGP-4, RFC4271 ~ 4278,2006年
  • BGP使用环境的特殊性
    • Internet的规模很大,AS之间的路由选择非常困难
      • Internet主干网路由器中的网络前缀达到数万条
      • 对于AS之间的路由选择,要寻找最佳路由是不现实的
      • 不同AS对路径度量标准各不相同
    • AS之间的路由选择需考虑多种策略
  • BGP难以找到最佳路由,只能寻找一条能够到达目的网络且比较好的路由(不能兜圈子)
  • BGP发言人(speaker)
    • 每个AS要选择至少一个路由器作为“BGP speaker”
    • 两个BGP发言人通过一个共享网络连接在一起
    • BGP发言人一般是AS的边界路由器,但也可以不是
    • BGP 发言人与其他自治系统中的BGP发言人交换路由信息
    • 路由信息的交换通过TCP协议进行,两个发言人在TCP连接上交换BGP报文以建立BGP会话(session),利用 BGP 会话交换路由信息
    • BGP发言人除了运行BGP协议外,还要运行AS的内部网关路由协议
  • 信息交换与路由生成
    • BGP所交换的网络可达性的信息就是要到达某个网络所要经过的一系列 AS,称为路径向量(path vector)
    • BGP 发言人互相交换了网络可达性的信息后,就根据所采用的策略从其中找出到达各 AS 的较好路由
  • BGP-4使用四种报文
    • OPEN报文:用来与相邻的另一个BGP发言人建立关系
    • UPDATE报文:用来发送某一路由的信息,以及列出要撤消的多条路由
    • KEEPALIVE报文:用来确认打开报文和周期性地证实邻站关系
    • NOTIFICATION报文:用来发送检测到的差错
      • BGP发言人通过OPEN报文与另一发言人建立会话,对方如同意则回应KEEPALIVE报文
      • 双方周期性交换KEEPALIVE报文,以确认会话未中断
      • 路由信息变化时,发送UPDATE报文
  • BGP协议特点
    • 交换路由信息的结点数量级与自治系统个数相当,大大少于这些自治系统中的网络数
    • 每个自治系统中BGP发言人(或边界路由器)的数目很少,使得自治系统间的路由选择不致过分复杂
    • BGP支持CIDR,因此BGP路由表包括目的网络前缀、下一跳路由器,以及到达该目的网络要经过的各个自治系统序列
    • 在BGP刚运行时,邻站交换完整的 BGP 路由表,以后只需要在发生变化时更新变动部分,有利于节省网络带宽和减少处理开销

路由器(Router)

  • 具有多个输入/输出端口的专用计算机,其任务是转发分组

  • 路由器组成

    • 路由选择部分:按照路由选择协议工作,构建路由表
    • 分组转发部分:交换结构(switching fabric) + 一组输入/端口(交换结构根据转发表进行分组的快速转发,转发表从路由表得到)
  • 路由器设计的关键之一是分组的高速转发

    • 决定报文转发速率的因素有:
      • 输入/输出端口的处理性能
      • 交换机构的性能
    • 线速(line speed 或 wire speed): 分组的处理速率能够达到线路上分组的传输速率
    • 衡量路由器性能的指标:pps(packet per second)
  • 输入和输出端口的处理

    image-20240221151300046

网络的控制平面与数据平面

  • 控制平面(control plane)
    • 生成路由表和转发表
  • 数据平面(data plane)
    • 进行分组的快速转发
  • 传统网络中,路由器集成了控制平面和数据平面,缺少灵活性
  • 软件定义网络(SDN—Software Defined Networking)
    • 控制平面和数据平面分离
    • 控制平面 -> 控制器(controller)
    • 数据平面 -> 路由器(SDN称为交换机)
  • 优点:可以灵活、快速地控制路由/转发策略
  • SDN特别适用于路由策略变化频繁的网络
    • 如:云数据中心网络

IP 组播

  • 组播(multicast)又称为多播,用于实现一点对多点的数据传输
  • 对于一些网络应用,采用组播可大大减少网络流量
  • 组播的典型应用示例:网络视频服务
  • 使用D 类IP地址作为组播地址
    • 224.0.0.0—239.255.255.255
    • 组播数据报:IP包头中的目的地址为D类地址,协议类型为2(IGMP协议)
  • 组播地址即为特定组播组的标识符,主机通过加入组播组来接收组播数据
  • 组播可分为两种
    • 在局域网中的硬件组播
      • 将MAC地址中的特定地址段作为组播地址,并与IP组播地址形成对应关系
    • 在Internet中的组播
      • 路由器需支持组播,即组播路由器
      • 主机通过IGMP协议与组播路由器通信,加入/退出某个组播组
      • 组播路由器之间通过组播路由协议实现组播数据报的传输

网络地址转换 NAT和虚拟专用网 VPN

网络地址转换 NAT

  • 专用地址(保留地址)
    • RFC1918中定义了一系列专用地址(private address)
      • 10.0.0.0 ~ 10.255.255.255 (CIDR记法: 10/8)
      • 172.16.0.0 ~ 172.31.255.255 (CIDR记法: 172.16/12)
      • 192.168.0.0 ~ 192.168.255.255 (CIDR记法: 192.168/16)
    • 这些地址只能用于机构的内部
    • Internet中的路由器不转发目的地址为专用地址的包
  • 企业/机构内部网络使用专用地址的优点
    • 减少IP地址空间的占用
    • 可提高安全性
  • 当内部网络使用专用地址时,与Internet的通信需要通过NAT(Network Address Translation)

虚拟专用网VPN

  • VPN—Virtual Private Network 虚拟专用网
  • 多个企业/机构的内部网络之间互连的实现方法
    • 租用专用线路,形成专用网,成本高昂
    • 基于公用网络( 如Internet),形成VPN
  • VPN涉及的技术包括:隧道(tunnel)、加密、身份认证等
  • 基于Internet建立VPN的两种情形
    • 内部网络通过Internet互连
    • 远程用户访问内部网(remote access VPN)
  • 典型的VPN实现技术
    • 基于IPSec:ESP隧道模式
      • 工作在网络层,适用于多种应用
    • 基于SSL:Web浏览器内置SSL支持
      • 客户端无须安装或配置软件
  • Title: computer-network-note-4
  • Author: Charles
  • Created at : 2024-02-21 11:22:53
  • Updated at : 2024-02-21 15:33:45
  • Link: https://charles2530.github.io/2024/02/21/computer-network-note-4/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments