• 【计算机网络:自顶向下方法】(四)网络层 (IPV4 | IPV6 | 路由算法 )


    计算机网络:自顶向下方法 第7版 | 中科大 】
    在这里插入图片描述

    第4章 网络层 : 数据平面

    4.1 导论

    网络层服务
    在这里插入图片描述
    网络层功能

    • 转发: 将分组从路由器 的输入接口转发到合适 的输出接口 (局部)
    • 路由: 使用路由算法来 决定分组从发送主机到 目标接收主机的路径 (全局 )
      • 路由选择算法
      • 路由选择协议

    数据平面

    •  本地,每个路由器功能
    •  决定从路由器输入端口 到达的分组如何转发到输出端口
    •  转发功能:
      • 传统方式:基于目标 地址+转发表
      • SDN方式:基于多个 字段 + 流

    控制平面

    • 网络范围内的逻辑
    • 决定数据报如何在路由器之间 路由,决定数据报从源到目标 主机之间的端到端路径
    • 2个控制平面方法:
      • 传统的路由算法: 在路由器 中被实现
      • software-defined networking (SDN): 在远程的服务器中 实现

    传统方式:路由和转发的相互作用 Vs SDN方式:逻辑集中的控制平面

    • 传统方式
      在这里插入图片描述
    • SDN 方式
      在这里插入图片描述

    网络服务模型

    • 在某些网络架构中是第三个重要的功能 ATM, frame relay, X.25
    • 在分组传输之前,在两个主机之间,在通过一些 路由器所构成的路径上建立一个网络层连接 涉及到路由器
    • 网络层和传输层连接服务区别:
      • 网络层: 在2个主机之间,涉及到路径上的一些路由器
      • 传输层: 在2个进程之间,很可能只体现在端系统上 (TCP连接)
        在这里插入图片描述
        Q: 从发送方主机到接收方主机传输数据报的“通道” ,网络提供什么样的服务模型?
    • 对于单个数据报的服务: 可靠传送 延迟保证,如:少于 40ms的延迟
    • 对于数据报流的服务: 保序数据报传送 保证流的最小带宽 分组之间的延迟差

    4.2 路由器组成

    概况

    在这里插入图片描述

    • 路由:运行路由选择算法/协议 (RIP, OSPF, BGP)-生成 路由表
    • 转发:从输入到输出链路交换数据报-根据路由表进行分组 的转发

    输入端口功能

    在这里插入图片描述

    • 基于目标的转发: 如果地址范围如果没有划分的特别规整,会发生什么?
    • **最长前缀匹配 longest prefix matching Destination Address Range** : 当给定目标地址查找转发表时,采用最长地址前 缀匹配的目标地址表项 . (IP地址部分详解 )

    输入端口缓存

    在这里插入图片描述

    交换结构

    • 将分组从输入缓冲区传输到合适的输出端口
    • 交换速率:分组可以按照该速率从输入传输到输 出
      • 运行速度经常是输入/输出链路速率的若干倍
      • N 个输入端口:交换机构的交换速度是输入线路速度的N倍比较理想,才不会成为瓶颈
         3种典型的交换机构
        在这里插入图片描述

    第一代路由器

    • 在CPU直接控制下的交换,采用传统的计算机
    • 分组被拷贝到系统内存,CPU从分组的头部提取出目标 地址,查找转发表,找到对应的输出端口,拷贝到输出 端口
    • 转发速率被内存的带宽限制 (数据报通过BUS两遍)
    • 一次只能转发一个分组
      在这里插入图片描述

    通过总线交换

    在这里插入图片描述

    • 数据报通过共享总线,从输入端 口转发到输出端口
    • 总线竞争: 交换速度受限于总线 带宽
    • 1 次处理一个分组
    • 1 Gbps bus , Cisco 1900; 32 Gbps bus, Cisco 5600;对于接 入或企业级路由器,速度足够( 但不适合区域或骨干网络)

    通过互联网络(crossbar等)的交换

    在这里插入图片描述
     同时并发转发多个分组,克服总线带宽限制
     Banyan(榕树)网络,crossbar(纵横) 和其它的互联网络被开发,将多个处理 器连接成多处理器
     当分组从端口A到达,转给端口Y;控 制器短接相应的两个总线
     高级设计:将数据报分片为固定长度的 信元,通过交换网络交换

    输出端口

    在这里插入图片描述
    在这里插入图片描述
     假设交换速率Rswitch是Rline的N倍(N:输入端口的数量)
     当多个输入端口同时向输出端口发送时,缓冲该分组(当通 过交换网络到达的速率超过输出速率则缓存)
    排队带来延迟,由于输出端口缓存溢出则丢弃数据报!

    调度机制

    在这里插入图片描述

    • 调度: 选择下一个要通过链路传输的分组

    FIFO (first in first out) scheduling: 按照 分组到来的次序发送

    •  丢弃策略: (队列满的时候 )
      • tail drop: 丢弃刚到达的分组
      • priority: 根据优先权丢失/移除分组
      • random: 随机地丢弃/移除

    调度策略:优先权

    • 优先权调度:发送最高优先 权的分组。
    • 多类,不同类别有不同的 优先权。
      • 类别可能依赖于标记或者其他的头部字段, e.g. IP source/dest, port numbers, ds,etc.
      • 先传高优先级的队列中的分 组,除非没有
      • 高(低)优先权中的分组传 输次序:FIFO

    调度策略:其他的

    Round Robin (RR) scheduling:

    • 多类
    • 循环扫描不同类型的队列, 发送完一类的一个分组 ,再发送下一个类的一个分组,循环所有类
    • Weighted Fair Queuing (WFQ) : 每个类在每一个循环中获得不同权重的服务量
      在这里插入图片描述

    4.3 IP :Internet Protocol

    IP:Internet Protocol

    IPv4数据报结构

    img

    • 版本(Version, 4bit
      对于IPv4,字段的值是4。

    • 首部长度(Header Length, IHL, 4bit
      首部长度说明首部有多少32位字(4字节)。一般为5,相当于5*4=20字节。

    • 服务类别(Type Of Service,8bit

    • 报文长度(Length, 16bit
      IP首部+数据部分的总长度

    • 标识(Identification, 16bit
      用于在IP层对数据报进行分片的时候,标识数据包。

    • 标志 (Flags, 3bit )

      这个3位字段用于控制和识别分片,它们是:

      • 位0:保留,必须为0;
      • 位1:禁止分片(Don’t Fragment,DF),当DF=0时才允许分片;
      • 位2:更多分片(More Fragment,MF),MF=1代表后面还有分片,MF=0 代表已经是最后一个分片。
        如果DF标志被设置为1,但路由要求必须分片报文,此报文会被丢弃。这个标志可被用于发往没有能力组装分片的主机。
        当一个报文被分片,除了最后一片外的所有分片都设置MF为1。最后一个片段具有非零片段偏移字段,将其与未分片数据包区分开,未分片的偏移字段为0。
    • 分片偏移 (Fragment Offset, 13bit
      这个13位字段指明了每个分片相对于原始报文开头的偏移量,以8字节作单位。

    • 存活时间(Time To Live,TTL, 8bit
      本数据报的TTL.

    • 协议 (Protocol, 8bit
      1—-icmp, 2—-igmp, 6—-tcp, 17—-udp, 89—-ospf

    • 首部检验和 (Header Checksum, 16bit
      IP首部的校验和

    • 源IP地址(Source IP, 32bit

    • 目的IP地址(Destination IP, 32bit

    IPv4数据报分片

    • 网络链路有MTU(最大传送单元)— 最大可传输的链路的帧
      • 不同的链路类型有不同的MTU
    • 如果IP数据报 > MTU ,则分片,到目的地后再重组
    • IP头部字段用来标记

    img

    IP数据报分片示例

    img

    • 本来要发送 4000 byte 的数据报(head部分 + data部分)

    • 链路的 MTU = 1500 bytes

    • 需要将数据分为3片来发送

    • length:片长度,包括了 20 bytes IP首部部分,最大为MTU

      • length为1500的数据报,实际包含 1500−20=1480 bytes1500−20=1480 ����� 的data部分
      • 最后一片的length为 (4000−20)−1480×2+20=1040(4000−20)−1480×2+20=1040
    • fragflag
      
      • 1

      :3 bits

      • 第二个bit为 DF(Don’t Flag):为0则该数据报分片,为1则不分片
      • 第三个bit为 MF:为0则后面没有片了,为1则后面还有片
      • 前两片为 1(001),表示该IP数据报分片,且后面还有片
      • 最后一片为 0(000),表示该IP数据报分片,后面没片(即最后一片)
    • offset
      
      • 1

      :data部分偏移量,以 8 bytes 为单位,只计算data部分

      • 第一片的offset为 0
      • 第二片的offset为 1480 bytes/8 bytes=1851480 �����/8 �����=185

    IPv4编址

    概述
    • IP地址:32位、主机和路由器接口的ID

    • 接口

      (interface):主机/路由器 和 物理链接 之间的连接

      • 路由器一般有多个接口
      • 主机一般有1到2个接口
    • 每个接口都有一个对应的IP地址

    img

    接口连接方式

    • 通过路由器连接
    • 有线以太网通过以太网交换机连接
    • 无线网络通过WiFi基站连接
    子网(Subnet)

    IP地址

    • 网络部分 —— 高位
    • 主机部分 —— 低位

    子网

    • 子网部分相同
    • 可以不通过路由器到达彼此

    把路由器去掉,剩下的每个区域都是一个子网。

    img

    上图中有6个子网。

    分类编制(Classful Addressing)
    • A类
      • 网络部分前1位 —— 0
      • 网络部分 8 bits,主机部分 24 bits
      • IP地址范围:1.0.0.0127.255.255.255
    • B类
      • 网络部分前2位 —— 10
      • 网络部分 16 bits,主机部分 16 bits
      • IP地址范围:128.0.0.0191.255.255.255
    • C类
      • 网络部分前3位 —— 110
      • 网络部分 24 bits,主机部分 8 bits
      • IP地址范围:192.0.0.0223.255.255.255
    • D类
      • 前4位 —— 1110
      • 用于多播地址
    • E类
      • 前4位 —— 1111
      • 被留作将来使用

    img

    子网掩码(subnet mask)
    • IP地址采用点分十进制:例如 192.32.216.9
    • 分类编制导致了地址资源的浪费
    • 子网和子网掩码:可以减小地址资源的浪费

    img

    200.23.16.64/27中的27网络部分+子网部分 的位数

    • 子网掩码
      • 网络部分+子网部分 置1
      • 主机部分 置0
    • 子网的网络ID
      • 网络部分+子网部分 不变
      • 主机部分 置0
    CIDR:无类的域间路由(Classless InterDomain Routing)
    • IP分为两个部分 —— 子网部分 + 主机部分
    • 子网部分可以是任意长度
    • 地址格式:a.b.c.d / x,其中x是子网部分位数
    • 网络部分称为前缀(prefix)
    如何获取IP地址
    主机如何获取IP地址

    主机获取IP地址:

    • 硬编码:自己设置静态的IP设置
    • DHCP:动态主机配置(Dynamic Host Configuration Protocol)
        当主机连接网络时,允许主机从网络服务器动态获取IP地址。
    DHCP
    • 即插即用
    • 可以更新IP
    • 地址重用:主机的IP只有在上线时才固定,下线即释放
    • 支持移动用户

    当一台主机加入网络时,从子网中的DHCP服务器获取IP地址。

    img

    网络如何获取IP地址

    从ISP处获取分配的IP地址。

    img

    img

    ISP如何获取IP地址

    ISP从ICANN组织获取IP地址

    ICANN:Internet Corporation for Assigned Names and Numbers

    • 分配地址
    • 管理DNS
    • 分配域名、解决争议
    NAT:网络地址转换(Network Address Translation)
    • 从这个本地网络出去的报文都有着:相同的源IP+不同的端口号
    • 对于外界网络来说,这个本地网络都是一个IP
      • 本地网络有内部地址,改变该内部地址不需要通知外部网络
      • 改变ISP不需要改变本地网络的内部地址
      • 内部地址在外部不可见(保障安全性)
    • 实现方式
      • 发送出去的报文:(源IP(内部的IP),端口号)—> (NAT IP(NAT统一的IP),新端口号)
        • 外部发来的报文的目的地址填写:(NAT IP(NAT统一的IP),新端口号)
      • NAT转换表:记住(源IP(内部的IP),端口号)<—> (NAT IP(NAT统一的IP),新端口号)的转换对
      • 收到的报文:根据NAT转换表,(NAT IP(NAT统一的IP),新端口号)—> (源IP(内部的IP),端口号)

    img

    • 外部不知道内部的情况,所以外部不能发起通信
    • 预留给内部的IP地址:
      • 10.0.0.0~10.255.255.255(A类)
      • 176.16.0.0~172.31.255.255(B类)
      • 192.168.0.0~192.168.255.255(C类)
    • 可以有16bit的主机地址位(10.0.0.0~10.255.255.255),一个NAT支持内部60000+的连接
    • NAT存在争议
      • 路由器本来是在第3层,但NAT修改了端口号,而端口号包含在TCP/UDP的段结构里,即改了第4层的内容
      • 违反了端到端
      • 所以用IPv6来解决地址短缺
    ICMP:因特网控制消息协议(Internet Control Message Protocol)
    ICMP
    • 主机、路由器、网关来交流网络层信息
      • 报错:到达不了主机、网络、端口、协议等等
      • 用于探测:echo request/reply(使用ping)
    • IP的一部分,但体系结构在IP之上:ICMP消息搭载在IP数据报上
    • ICMP消息:type,code,引发错误的IP数据报首部和前8个字节
    TypeCodedescription描述
    00echo reply (ping)echo响应 (被程序ping使用)
    30dest. network unreachable目标网络不可达
    31dest host unreachable目标主机不可达
    32dest protocol unreachable目标协议不可达
    33dest port unreachable目标端口不可达
    36dest network unknown未知的目标网络
    37dest host unknown未知的目标主机
    40source quench (congestion control - not used)源端关闭(拥塞控制)
    80echo request (ping)Echo请求
    90route advertisement路由通告
    100router discovery路由器的发现/选择/请求
    110TTL expiredTTL 超时
    120bad IP headerIP 报首部参数错误
    • ICMP是管控制的IP的“兄弟”
    • ICMP被IP使用,同时作为网络层协议使用IP
    • ping、traceroute、path MTU discovery 都使用到了ICMP
      • ping:使用 ICMP Echo request/repley msgs
      • path MTU discovery
        • 发送一个大的IP数据报,该数据报的 don’t fragment 置 1(即不分片)
        • 减小数据报大小,直至成功(成功标志:没有接收到返回的ICMP消息)
    Traceroute

    Traceroute程序:跟踪从一台主机到其他主机之间的路由,用ICMP报文实现。

    • 源发送一系列 UDP报文段 到目的
      • 第一个数据报 TTL=1,第二个数据报 TTL=2,以此类推
      • 使用不常见的端口号
    • 当第n个数据报到达第n台主机时
      • 这个第n个数据报TTL刚好过期
      • 路由器丢弃该数据报
      • 路由器发送一个ICMP告警报文(type 11,code 0)给源
      • 该ICMP告警报文包括第n台路由器名字及其IP
    • 当该ICMP报文返回到源主机,源主机计算RTT(往返时延),得到第n台路由器名字及其IP
    • 标准的Traceroute程序用相同的TTL发送3个一组的分组,输出对每个TTL提供3个结果
    • 停止条件步骤
      • UDP数据报到达目的主机
      • 目的主机返回 ICMP端口不可到达报文(type 3,code 3)
      • 源主机接收到该ICMP报文,则停止

    在Mac上可在app“系统信息”中的窗口->网络实用工具中使用Ping、Traceroute等工具。

    IPv6

    • 动机
      • 初动机:解决32位IP地址空间分配完的问题
      • 更快处理/转发的头部格式
      • 头部支持QoS
    • IPv6数据报格式
      • 固定长度的头部:40 byte (IPv4头部长度不固定)
      • 不允许分片
    IPv6数据报结构

    img

    • 版本(Version, 4 bit
      对于IPv6,字段的值是6(0110)。

    • 流量类型(Traffic class,8 bit
      用来标识对应IPv6的通信流类别,类似于IPv4中的ToS。

    • 流标签(Flow label,20 bit
      用来标记报文的数据流类型,以便在网络层区分不同的报文。

    • 有效载荷长度(Payload length,16 bit
      给出了IPv6数据报中跟在定长的40 byte数据报头部后面的字节数量。

    • 下一个头部(Next Header,8 bit
      该字段标识数据报中的内容(数据字段)需要交付给哪个协议(如TCP或UDP)。无扩展的头部,Next Header指向TCP/UDP;有扩展的头部,Next Header指向的下一个头部比如路由选择。与IPv4头部 协议(Protocol)字段相同。
      img

    • 跳段数限制(Hop limit,8 bit

      生存时间,相当于IPv4中的TTL。转发数据报的每台路由器讲对该字段内容 -1,如果跳转限制计数到0时,则丢弃该数据报

    • 源IP地址(Source Address,128 bit

    • 目的IP地址(Destination Address,128 bit

    • 数据(Data)

    IPv6相较于IPv4的部分改变
    • 去除Checksum:加快了转发速度

    • Options:依旧允许可选项,但是不放在头部,而是放在 Next Header 指出的位置上

    • ICMPv6

      :ICMP的IPv6版本

      • 增加新的 type:比如“Packet Too Big”
      • 包含多播组管理
    IPv6地址
    • 三种类型:单播(unicast)、多播(multicast)、任意播(anycast)

    • 冒号划分的十六进制(128 bit)

      eg. 68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF

    • 0的压缩

      用双冒号::表示一组0或多组连续的0,但只能出现一次。

      • FF05:0:0:0:0:0:0:B3 = FF05::B3
      • 0:0:0:0:0:0:128.10.2.1 = ::128.10.2.1(IPv4和IPv6兼容的IP)
      • 12AB:0:0:CD30:0:0:0:0 = 12AB::CD30:0:0:0:0 = 12AB:0:0:CD30::(如果出现两个多个0,随意压一个都行)
    单播(Unicast address)

    单播的地址格式(一共 128 bit):

    • 全球路由前缀(Global routing prefix,48 bit

      前3位为001,分配给公司和组织。

    • 子网ID(Subnet ID,16 bit

      如果是小公司,只需要1个子网的话,全设为0

    • 接口ID(Interface ID,64 bit

      基于 EUI-64

    IPv4到IPv6的迁移

    • 现在的网络既有IPv4,也有IPv6。世界上的所有网从IPv4到IPv6需要很长的转换时间。
    • 两种IPv4到IPv6的迁移
      • 双栈(Dual Stack):一些路由器可以兼容IPv4和IPv6
      • 隧道(Tunneling):当IPv6穿过IPv4的路由器上时,将IPv6作为载荷承载在IPv4上
    双栈(Dual Stack)
    • 早期的设计
    • 一些路由器有双栈(IPv4 & IPv6),可以翻译这两种格式

    img

    隧道(Tunneling)

    当IPv6穿过IPv4的路由器上时,将IPv6作为载荷承载在IPv4上。就是像一个连接两个IPv6路由器的IPv4隧道

    img

    4.4 通用转发和 SDN

    传统

    在这里插入图片描述

    • 网络层功能: 转发:对于从某个端口 到来的分组转发到合适的 输出端口 路由:决定分组从源端 到目标端的路径 路由算法
    • 类比: 旅行  转发:一个多岔路口的 进入和转出过程  路由:规划从源到目标 的旅行路径
      每个路由器上都有实现路由算法元件(它们之间需要相互交 互)- 形成传统IP实现方式的控制平面
      在这里插入图片描述
    • 路由器的网络层功能:
      • IP转发:对于到来的分组按照路由表决定如何转发,数 据平面
    • 路由:决定路径,计算路由表;处在控制平面

    SDN:逻辑上集中的控制平面

    • 一个不同的(通常是远程)控制器和CA交互,控制器决定分组 转发的逻辑(可编程),CA所在设备执行逻辑。
      在这里插入图片描述

    SDN的主要思路

    • 网络设备数据平面和控制平面分离
    • 数据平面-分组交换机
      • 将路由器、交换机和目前大多数网络设备的功能进一步抽 象成:按照流表(由控制平面设置的控制逻辑)进行PDU (帧、分组)的动作(包括转发、丢弃、拷贝、泛洪、阻 塞)
      • 统一化设备功能:SDN交换机(分组交换机),执行控制 逻辑
    • 控制平面-控制器+网络应用
      • 分离、集中
      • 计算和下发控制逻辑:流表

    优点

    水平集成控制平面的开放实现(而非私有实 现),创造出好的产业生态,促进发展
    集中式实现控制逻辑,网络管理容易
    基于流表的匹配+行动的工作方式允许“可编程的”分组交换机

    在这里插入图片描述
    通用转发和SDN OpenFlow数据平面抽象 每个路由器包含一个流表(被逻辑上集中的控制器计算和分发)

    OpenFlow数据平面抽象

    一种网络通信协议,应用于SDN架构中控制器和转发器之间的通信。

    • 流: 由分组(帧)头部字段所定义
    • 通用转发: 简单的分组处理规则
      • 模式: 将分组头部字段和流表进行匹配
      • 行动:对于匹配上的分组,可以是丢弃、转发、修改、 将匹配的分组发送给控制器
      • 优先权Priority: 几个模式匹配了,优先采用哪个,消除歧 义
      • 计数器Counters: #bytes 以及#packets
        路由器中的流表定义了路由器的匹配+行动规则 (流表由控制器计算并下发 )

    OpenFlow抽象

    •  match+action: 统一化各种网络设备提供的功能
      在这里插入图片描述
  • 相关阅读:
    Centos, RockyLinux 常用软件安装汇总
    pytorch中detach()函数以及data属性的区别+梯度求导计算
    elementUI 表格属性 匹配 数据字典数据
    docker安装常用服务(mysql、redis、nginx、tomcat、MongoDB、Elasticsearch)
    QDU暑假集训第一周限时训练1
    阻塞、非阻塞、同步、异步
    Camunda 7.x 系列【38】表单服务 FormService
    ORM模型--关联字段,抽象模型类
    【AUTOSAR-CanIf】-2.4-对接收的L-PDU进行数据CheckSum校验
    java8之Consumer接口具有什么功能呢?
  • 原文地址:https://blog.csdn.net/weixin_49486457/article/details/130345299