网络层服务

Scroll Down

网络层服务

网络层概述

  • 从发送主机向接收主机传送数据段(segment)
  • 发送主机:将数据段封装到数据报(datagram)中
  • 接收主机:向传输层交付数据段(segment)
  • 每个主机和路由器都需要运行网络层协议
  • 路由器检验所有穿越它的IP数据报的头部域

网络层核心功能-转发与路由

  • 转发(forwarding):将分组从路由器的输入端口转移到合适的输出端口,每一个路由器需要维护一个转发表,转发表确定在本路由器如何转发分组

image-20200205105636591

  • 路由(routing):确定分组从源到目的经过的路径,使用路由协议或路由算法,记录在转发表中,路由器根据传入的数据报,进行解析检索转发表,获取最终的转发地址

image-20200205105805087

  • 网络层核心功能-连接建立

    • 数据分组传输之前两端主机需要首先建立虚拟/逻辑连接,网络设备(如路由器)参与连接的建立
  • 网络层连接与传输层连接的对比

    • 网络层连接:两个主机之间(路径上的路由器等网络设备参与其中)
    • 传输层连接:两个应用进程之间(对中间网络设备透明),是端到端的连接

网络层服务模型

网络层为发送端(主机)到接收端(主机)的数据报传送通道(channel)提供了什么服务模型?

image-20200205110502531

Internet提供的服务模型是尽力服务,其实就是什么都不保障,靠传输层进行保障,也不进行拥塞控制等.

作为ATM网络,提供了四种服务模型,CBR(固定比特率),VBR(可变比特率),ABR(可用比特率),UBR(不保证比特率)

  • CBR,固定比特率,类似两个主机间建立了一个虚拟的电路,所以带宽,丢包,排序,超时等机制都可以获得保障
  • ABR,可用比特率,当网络可用的时候,是尽力使用带宽,如果是网络较为拥塞,则带宽降低

网络模型的分类

无连接服务(数据报网络)
  • 不事先为系列分组的传输确定传输路径
  • 每个分组都独立确定传输路径
  • 不同分组可能传输路径不同,导致到达顺序不一致
  • 称为数据报网络
连接服务(虚电路网络)
  • 首先为系列分组的传输确定从源到目的经过的路径(建立连接)
  • 然后沿该路径(连接)传输系列分组
  • 系列分组传输路径相同
  • 传输结束后需要拆除连接
  • 代表性的网络:虚电路网络

虚电路网络

  • 数据报网络与虚电路网络是典型两类分组交换网络
  • 数据报网络提供网络层无连接服务
  • 虚电路网络提供网络层服务
  • 类似于传输层的无连接服务(UDP)和面向连接服务(TCP),但是网络层的服务是:主机到主机的服务,网络核心实现

虚电路网络介绍

虚电路:从源主机到目的主机确定一条路径,建立起一条类似于电路的路径(逻辑连接)

  • 分组交换
  • 每个分组的传输利用链路的全部带宽(电路的交换利用多路复用技术只会占用部分带宽)
  • 源到目的路径经过的网络层设备共同完成虚电路功能

虚电路网络的通信过程:

  • 呼叫建立(call setup)->数据传输->拆除呼叫

作为一个虚电路建立完成之后,怎样保证后续的分组使用这条虚电路?

为这条虚电路分配一个标识ID,我们成为VCID,每个分组携带虚电路的标识(VCID),而不是目的主机地址

虚电路经过的每个网络设备(如路由器),维护每条经过它的虚电路连接状态

链路.网络设备资源(如带宽,缓存等)可以面向虚电路进行预分配,可以达到一些预期的性能服务

虚电路的具体实现

每条虚电路包括:

  1. 从源主机到目的主机的一条路径
  2. 虚电路号(VCID),沿路每段链路一个编号,每条链路可以建立的虚电路数量是不同的,反映了支持连接能力,因此每一段链路的虚电路号可能是不同的
  3. 沿路的每个网络设备(如路由器),利用转发表记录经过的每条虚电路

沿某条虚电路传输的分组,携带对应虚电路的VCID,而不是目的地址,网络设备根据VCID检索转发表,找到对应的链路,同一条虚电路,在每段链路上的VCID通常不同

image-20200205113607404

虚电路的转发表记录

输入接口输入VCID输出接口输出VCID
112322

所以,虚电路路径上每个路由器都需要维护VC连接的状态信息!

虚电路信令协议

传输用户数据之前,需要建立一条虚电路,所以需要特殊的协议,用于虚电路的建立,维护,拆除,这种协议称为虚电路信令协议

  • 用于虚电路的建立,维护与拆除,确定路径选择
  • 应用于大部分的虚电路网络中,例如:ATM协议
  • Internet是使用的数据报网络,并未使用虚电路信令协议
虚电路的连接建立与拆除过程
  1. 初始呼叫
  2. 目的主机同意呼叫的话,会逆向原有路径,确认呼叫
  3. 虚电路连接建立成功
  4. 数据流开始传输
  5. 数据传输完成后,使用信令协议拆除对应连接
    image-20200205114249220

数据报网络

  • 网络层是无连接的
  • 每个分组需要携带目的主机网络地址
  • 路由器根据分组的目的地址转发分组(基于路由协议/算法构建支持数据报协议的转发表)
  • 路由器检索转发表将分组数据报传输到目的主机
  • 每个分组独立选路

image-20200205114643125

每个分组走的路径有可能是不一样的,路由器在传输过程中,转发表更新了,就有可能不同的分组网络走的路径不一致

IPV4是一个32位的2进制的数,大概有40多个亿的IP地址,如果转发表要记录这么多的IP地址,那么转发表非常巨大,此种方案基本是不可行的,如何提高转发效率?

所以转发表记录由记录每一个地址改为针对地址范围进行记录,相当于把转发表的IP地址进行聚合

image-20200205115055769

目的地址范围链路接口

image-20200205115153587

但是现在路由器不一定有这么完美的设置方法,所以也会采用其他方式

最长前缀匹配优先

image-20200205115431978

才去最长的前缀进行匹配,当记录表里都匹配不上的时候,网络路径会走默认(缺省)路由,在检索转发表时,匹配到多条路口时,优先选择与分组目的地址匹配前缀最长的入口

数据报网络 VS 虚电路网络

Internet(数据报网络)

  • 计算机之间的数据交换,对网络的要求比较弹性化,没有严格的时间需求

  • 链路类型众多

    • 特性,性能各异
    • 统一一种服务困难
  • 端系统(计算机)之间是较为智能的,可以自适应,性能控制,差错回复

  • Internet的核心是简化网络,复杂边缘

ATM(虚电路网络)

  • ATM是由电话网络演化而来
  • 核心业务是实时对话,严格的时间,可靠性的需求
  • 需要有严格保障的服务
  • 主机对比是较不智能的,例如:电话机,传真机
  • 虚电路网络的核心是:简化边缘,复杂网络

IPV4协议

Internet网络层的主要功能
image-20200205143510921

路由协议

  • 路径选择
  • RIP,OSPF,BGP协议

IP协议

  • 寻址归约
  • 数据报(分组)格式
  • 分组处理归约

ICMP协议

可以说是IP协议的伴生协议,实现了IP协议就需要ICMP协议,可以对传输过程中错误进行差错报告

  • 差错报告
  • 路由器"信令"

IP数据报(分组)格式

image-20200205143633941

IP数据报包含IP的首部信息和传输层包装后的数据
image-20200205143901326

固定部分字节共20位,所有的IP协议这都是固定的

可变部分长度是可变的,可以是0

  • 版本号字段占4位,IP协议的版本号,如果是IPV4则是E.g.4->IPV4,6->IPV6
  • 首部长度字段占4位:IP分组首部长度,4位总共最大能表示15,连固定长度的20个字节都无法表示,所以IP协议规定这里每个数值是以4字节为单位,大部分的情况下都没有选项长度,如果是0101,10进制下是5,实际上就是标准的(5x4)个字节数
  • 服务类型(TOS)字段占8位:指示期望获得那种类型的服务,后改名为区分服务,只有在网络真正能提供区分服务时才有用,一般情况下不使用,通常IP分组的该字段(第2字节)的值为00H
  • 总长度字段占16位:IP分组的总字节数(首部+数据),最大IP分组的总长度:65535B,最小的IP分组头部长度:20B,IP分组可以封装的最大数据:65535-20=65515B
  • 标识字段占16位,标识一个分组,IP协议利用一个计数器,每产生IP分组计数器就加1,作为该分组的标识
  • 标志位字段占3位:保留+DF+MF 三个字节
    • DF(Dont Fragment),当DF= 1,禁止分片,DF = 0,允许分片
    • MF(More Fragment),当MF = 1,则是非最后一片,MF = 0则是代表最后一片(或未分片)
  • 片偏移字段占13位:一个IP分组分片封装原IP分组数据的相对偏移量,如果没有分片则该字段为0,也说明了是从哪一部分字段开始封装,通过片偏移量的大小,我们就知道分片的顺序,因为总长度有16个位,片便宜字段只有13位,所以片偏移字段以8字节为单位
  • 生存时间(TTL)字段占8位:IP分组在网络中可以通过的路由器数(或跳步数),一个IP分组在创建初始时会给TTL设置一个初始值,路由器每转发一次分组,TTL减1,当一个路由器减一导致TTL=0的时候,路由器会直接丢弃该IP分组,会向源主机发送一个ICMP报文
  • 协议字段占8位:指示IP分组封装的是哪个协议的数据包,实现了IP协议的复用/分解,可以让IP协议知道是TCP或者为UDP或者ICMP报文段
  • 首部校验和字段占16位:实现对IP分组首部的差错检测,计算校验和的时候,先将该字段置为全0,然后将累计数的反码再存入该字段,和的反码作为首部校验和字段,因为每次TTL都会变,所以首部校验和字段是逐步校验,逐步更新
  • 源IP地址,目的IP地址字段各占32位,分别标识发送分组的源主机/路由器(网络接口)和接收分组的目的主机/路由器(网络接口)的IP地址
  • 选项字段长度可变,范围在1-40B之间,携带安全,源选路径,时间戳和路由记录等内容,实际上很少被使用
  • 填充字段长度可变,范围在0-3B之间:目的是补齐整个首部,符合32位对齐,即保证首部长度是4字节的倍数

IP分片

最大传输单元(MTU)

IP分组在传输到链路层上,需要将数据封装成数据帧,网络链路存在**MTU(最大传输单元)**可封装数据的上限,像以太网最大的MTU就是1500个字节

如果一次网络请求经过两个链路,MTU1>MTU2

大IP分组向较小MTU链路转发时,可以被分片,可能分也可能不分,如果不分片的话,MTU2无法接收会直接将该分组丢弃,并向源主机发送ICMP报文

如果报文段允许分片,则可以将一个大的IP分组分片为多个IP分组,IP分片只有到达目的主机后才会进行重组,路由器不进行重组

IP首部的相关字段用于标识分片以及确定分片的相对顺序,如果目的主机在等待超时后依旧还没收到完整的分片,那么目的主机会丢弃所有分片,此时需要使用上标识,标志位,片偏移字段.

IP分片过程

假设原IP分组总长度为L,待转发链路的MTU为M:

  1. 若L>M,且DF=0,则可以/需要分片,如果DF = 1,则直接丢弃该分组
  2. 分片时每个分片的标识复制原IP分组额标识
  3. 通常分片时,除了最后一个分片,其他分片均分为MTU允许的最大分片
  4. 除了最后一个分片外最大分片可封装的数据应该是8的倍数,因此一个最大分片可封装的数据为:d = (m-20(通用字节数) / 8 )* 8 向下取整
  5. 则需要总片数为:n = (L-20/d)
  6. 每片片偏移字段取值为:F = d/8 *(i-1) 向下取整
  7. 每片总长度字段为:除了最后一片为:d+20,最后一片为L-(n-1)*d

分片示例

image-20200205153933312

IP协议-IP编址

  • IP分组:源地址(SA)-从哪来,目的地址(DA)-到哪儿去
  • 接口(interface):主机/路由器与物理链路的连接
    • 实现网络层功能,如果某些设备不具备网络层功能的设备,则对网络编址来说是无视的
    • 路由器为了实现分组的路由和转发,通常会有多个接口
    • 主机通常只有一个或两个接口(e.g.,有线的以太网接口,无线的802.11接口)

IP地址:32比特(IPV4),编号标识主机,路由器的接口,因为32位的比特比较难记,我们通常会分为4组按照10进制的数据,就是我们常见的192.168.0.1 这样的

IP地址与每个接口关联
image-20200205155035818

每个接口都会有IP地址

怎么样为接口分配IP地址?

如果不按照规则随机分配IP地址的话,会导致路由器的转发表十分复杂

IP子网

将IP地址分为两部分:

  • 网络号(NetID)-高位比特
  • 主机号(HostID)-低位比特

需要保证分配到某一个区域的网络地址,网络号是相同的,主机号是不同的,这样就可以有一定的规律了.

image-20200205155646450

IP子网:

  • IP地址具有相同网络号的设备接口
  • 不跨越路由(第三层及以上层网络设备)就可以彼此物理连通的接口

这样就可以用IP子网的形式描述一个网络段

有类IP地址

有类编址

A类地址(50%):网络号占用8个比特,主机号占用24个比特,可以编址的范围是0.0.0.0 - 127.255.255.255

B类地址(25%):网络号从10开始,占用16个比特,主机号占用16位,可以编址范围是:128.0.0.0-191.255.255.255

C类地址(12.5%):网络号从110开始,网络号占用24位,主机号占用8位,编址范围为:192.0.0.0-223.255.555.255

D类地址(6.25%):从1110开始,不区分网络号和注解号,从224.0.0.0-239.255.255.255,用于标识互联网中的一组主机,称为多播地址或者组播地址,向其发送分组数据时,该组主机都会受到该分组数据的副本

E类地址(6.25%):从1111开始,范围为240.0.0.0-255.255.255.255,留作研究使用

image-20200205160958075

给一个主机或者一个路由器分配IP地址的时候,只能够分配A类B类C类地址

特殊IP地址

image-20200205161232853

私有地址

该类地址只用于内部网络,不用于公网,这部分私有地址可以被重用

image-20200205162317961

子网划分和子网掩码

子网划分

如何区分一个IP子网更小的范围网络(子网)?

IP地址

  • 网络号:高位比特
  • 子网号:原网络主机号部分比特
  • 主机号:地位比特
    image-20200205163407615

例如需要将子网划分为四个子网,则需要2个比特位用于子网号,此时四个子网用路由器相连

image-20200205163445106

如何确定是否划分了子网?利用多少位划分子网?

子网掩码

子网掩码形如IP地址:也是32位地址,也是用点分十进制形式
image-20200205163628764

取值有所区别:

  • 网络号,子网号位全取1
  • 主机号位全取0

所以:

  • ​ A网的默认子网掩码为:255.0.0.0
  • B网的默认子网掩码为:255.255.0.0
  • C网的默认子网掩码为:255.255.255.0
  • 加入借用3比特划分子网的B网子网掩码为:255.255.224.0,因为11100000 = 224

子网地址+子网掩码 可以准确确定子网大小

例题

image-20200205164258331

子网掩码的应用

当确定了子网掩码之后,路由器如何确定应该将IP分组转发到哪个子网?

将IP分组的目的IP地址与对应的子网掩码按位与运算,提取出子网地址

例题

image-20200205165021820

去除主机域全0和主机域全1的地址,总共可分配IP地址数为:256*2-2 = 510,在划分子网时,每个子网主机号的全0和全1都是不可用的,全0代表的子网的地址,全1代表的是子网的广播地址,划分子网时会导致IP地址的浪费,但是换来的是网络性能的提升.

无类域间路由CIDR(ClassLess InterDomain Routing)

消除传统的A类,B类和C类地址界限,网络号+子网号 = 网络前缀(可以任意长度)

融合子网地址和子网掩码,方便子网划分

  • 无类地址格式:a.b.c.d/x,其中x为前缀长度
    image-20200205192804941

23就是网络前缀的长度

  • 子网201.2.3.64,255.255.255.192->201.2.3.64/26

利用这种方式描述子网非常方便,原有的分配是按照ABCD类来分配,会导致IP地址浪费,使用CIDR技术可以提高IPV4地址空间的分配效率,可以提高路由效率,可以将多个子网聚合成一个较大的子网称为超网(super netting),对于路由器来说可以记录更大的子网,使得路由表的大小得到很大的减少,这种方法叫路由聚合
image-20200205193605475

可以将3个子网聚合成223.1.0.0/22,路由表可以减少极大的空间
image-20200205193714118

而满足这种聚合的情况下,是需要网络地址是连续的,如果某些网络号有部分地址是该部分子网网络所未拥有的,这时候需要其他对应的网络也要发布对应子网,我们此时采取最长前缀匹配优先,如图,如果有访问200.23.18.0/23前缀会依据最长前缀匹配优先原则,匹配对应的网络,这样就可以享有路由聚合的高效率,又可以避免路由黑洞现象.

image-20200205194437891

划分子网的意义所在

子网划分与路由聚集

划分子网的意义是什么?如何进行子网划分?什么是定长子网划分?什么是变长子网划分?如何准确地描述一个子网?为什么要进行路由聚集?如何进行路由聚集?什么情况下可以进行路由聚集?

  1. 划分子网的意义是:提高IP地址的使用率,按照规则划分IP地址,提高IP地址的辨识度,便于IP寻址,可以对不同地区不通类型的网络进行划分
  2. 按照网络号+子网号+主机号进行划分子网,其中高位比特作为网络号,连续的几位作为子网号,剩余低位比特作为主机号
  3. 每个子网规模一样大的划分,此时子网掩码相同
  4. 每个子网规模不一样大的划分,此时子网掩码不同
  5. 使用IP地址/子网掩码 或者是IP地址/x的CIRD策略两种方式描述
  6. 减少路由转发表的大小,提升路由效率
  7. 取消有类地址的划分,使用网络号+子网号不限定位数的方式进行划分子网,相同的前缀可以作为一个大的子网(超网),路由的转发表合并这些子网的IP地址,减少路由的转发表大小,当有多个选择的时候,才去最长前缀匹配优先原则
  8. 一个路由器同时连接多个较小规模的子网时可以进行路由聚集

DHCP协议

作为一个主机,如何获得IP地址,如何完成IP地址的配置?

如何获得IP地址?

  • 硬编码,静态进行配置,每台主机需要从网络管理员中获取一个静态的IP地址,手工进行配置

image-20200205195607379

  • 动态主机配置协议-DHCP(Dynamic Host Configuration Protocol)

    • 可以从服务器动态获取(租赁)IP地址,子网掩码,默认网关地址,DNS服务器名称与IP地址
    • 即插即用,主机只要能够运行DHCP的客户端,连上网后就可以自动使用IP地址
    • 允许地址重用,当主机不在进行网络通信时,可以将IP地址安排给其他主机使用,提高IP地址使用率
    • 支持移动用户加入网络
    • 支持在用地址续租

如果一个新主机需要一个IP地址

  • 主机广播,发送一个DHCP discover(发现报文)报文
  • 如果网络中有对应的DHCP服务器则DHCP服务器返回一个DHCP offer(提供报文)报文进行响应
  • 注解请求IP地址:DHCP request(请求报文)
  • 主机请求IP地址:DHCP ack(确认报文),为这个主机进行一个确认,并同时确认一个该IP地址的租赁期

DHCP工作过程

  1. 一台新机器需要动态获得一个IP地址,向DHCP server 发送一个报文,src:0.0.0.0 ,68是本机,dest:255.255.255.255,67 是本网内受限广播,本网内的机器都会收到该请求,但是只有DHCP才会返回该请求
  2. DHCP服务器返回一个DHCP offer报文,DHCP服务器也是对本网内进行广播并分配对应IP地址
  3. 客户机此时发送一个 DHCP request报文,此时还是使用本网内的广播,因为一个网络内是会有多个DHCP服务器的,广播是为了告知其他DHCP服务器,客户机需要使用的IP地址由某台DHCP服务器提供,其他的DHCP可以快速的将预分配的IP地址收回
  4. 此时DHCP服务器返回DHCP ACK的确认报文,此时并返回子网掩码,默认网关,DNS服务器,此时主机就可以利用DHCP服务器返回的报文进行绑定IP地址并使用
    image-20200205201101577

DHCP协议是在应用层实现的:

  • 请求报文封装到UDP数据报中
  • 通过IP的受限广播地址在子网内进行广播
  • IP广播又映射为链路层广播(e.g.以太网广播)

网络地址转换(NAT)

因为IPV4地址已经消耗殆尽,所以在实际的网络通信中,一些主机使用的IP地址是一些私有地址,这些主机的IP地址是无法在互联网中出现的,此时就需要一种网络地址转换技术
image-20200205201902003

所有离开本地网络去往Internet的数据报来源IP都需要替换为同一个IP地址和不通的端口号

NAT出现的动机

  • 只需要从ISP中申请一个IP地址可以应对(IPV4地址消耗殆尽)
  • 本地网络设备IP地址的变更,无需通告外界网络
  • 变更ISP时,无需修改内部网络设备IP地址,例如原来是电信的网络修改为联通的网络,也不需要修改IP地址
  • 内部网络设备对外界网络不可见,即外部网络无法直接寻址到内部网络,会有一定的安全性
NAT的实现
  • 替换

    • 利用(NAT IP地址,新端口号)替换每个外出IP数据报的(源IP地址,源端口号)
  • 记录

    • 将每对(NAT IP地址,新端口号)与(源IP地址,源端口号)的替换信息存储到NAT转换表
  • 替换

    • 根据NAT转换表,利用(源IP地址,源端口号)替换每个进入内网IP数据报的(目的IP地址,目的端口号)

网络地址转换过程

image-20200205202930327

端口号字段是16位的,一个NAT的服务器可以最多支持65536个并行连接.

NAT 主要争议

  • 路由器应该只处理第3层功能,不应该把第3的数据报还拿出来并获取修改第四层的报文
  • 违背端对端的通信原则,因为传输层是端对端的,但是路由器又对传输层的报文进行了修改,打破了端对端的通信原则,导致端对端通信应用(P2P应用)的开发需要考虑NAT通信
  • 地址短缺问题应该有IPV6来解决

NAT穿透问题

客户期望连接内网地址为10.0.0.1的服务器,但是客户不能直接利用10.0.0.1直接访问服务器,对外唯一可见的地址是NAT地址.此时我们需要从NAT上穿透至内网服务器

解决方案:

  1. 静态配置NAT,将特定端口的连接请求转发给特定的服务器

  2. 利用UPnP(Universal Plug and Play)互联网网关设备协议(IGD-Internet Gateway Device)自动配置:

    支持NAT的服务器需要支持UPnP的协议,自动的获得NAT的公共IP地址,通过这个协议,可以在NAT转换表中,增删端口映射,即可以完成转发表的映射,和手工静态配置类似

  3. 中继(Skype):首先在网络中设置多个中继服务器,NAT内部的客户与中继服务器建立一个连接,外部客户也与中继服务器建立连接,终极服务器桥接两个连接的分组,从而实现两个服务器的通信
    image-20200205204235112

互联网控制报文协议(ICMP)

当Internet网络中发送的报文出错时,接收方不仅仅是直接丢弃该分组,并且要返回一个ICMP报文

ICMP支持主机或路由器:

  • 差错报告
  • 网络探询

可以分为两大类ICMP报文:

  • 差错报告报文(5种)

    • 目的不可达,无法成功交互到目的主机或目的网络,该数据报会被丢弃,并向源主机发送目的不可达的差错报文
    • 源抑制(Source Quench),考虑到网络拥塞时,当一个路由器发现自身缓存已满导致后续的报文段被丢弃,可以构建一个源抑制这样一个报文发送给源主机,期待源主机收到报文后,减少发送速率,现在并没有按照此种方式进行控制
    • 超时/超期报文,TTL超时,当TTL被减到0的时候,路由器会将IP数据报丢弃,并向源主机报告对应超时/超期报文
    • 参数问题,当一个路由器在转发一个IP数据报的时候,发现报文头某些字段参数有问题,可以丢弃该数据报,则向源主机发送该类报文
    • 重定向,路由器收到一个IP数据报,发现IP数据报的目的网络不应该由该路由器进行转发,应该由其他网关路由器进行转发,此时可以向源主机发送重定向报文,使源主机将该报文发送到其他路由器上
  • 网络探询报文(2类)

    • 回声(Echo)请求与应答报文(Reply),当主机想探测到某个主机之间的网络是否通畅或者可达,则可以发送回声请求,根据应答报文判断是否可达,例如:ping命令就是使用ICMP协议
    • **时间戳请求与应答报文 **,通过发送时间戳的请求获取对方时间戳的响应,进行网络探询

ICMP报文

image-20200205205714206

通过类型+编码判断是哪种类型的错误

并不是所有报错的情况下都会发送ICMP报文,有几种特种的场景不在发送ICMP报文:

  1. 对ICMP差错报文不再发送ICMP差错报告报文
  2. 除了第一个IP数据报分片外,对所有后续分片均不发送ICMP差错报告报文
  3. 对所有多播IP数据报均不发送ICMP报告报文
  4. 对具有特殊地质(127.0.0.0, 0.0.0.0)的IP数据报不发送ICMP差错报告报文

几种ICMP报文已不再使用

  1. 信息请求与应答报文
  2. 子网掩码请求和应答报文
  3. 路由器询问和通告报文

ICMP报文的格式

ICMP的报文要封装到IP数据报中进行传输
image-20200205210318361

ICMP差错报告报文数据封装:

需要封装为ICMP的前8个字节+完整的IP数据报首部+IP数据报的前8个字节

image-20200205210447343

IPV6地址介绍

动机介绍:

  1. 32位IPv4地址空间已分配殆尽
  2. 期望对IPv4首部协议进行改进,在新版本IP协议中可以支持对数据报快速处理/快速转发
  3. 支持QoS,支持不同服务

IPv6数据报格式

  • 固定长度的40字节基本首部,IPv4有个可选长度的首部字段,IPv6定义为固定的40个字节
  • IPv6中路由器不在支持分片,如果IPv6中出现需要分片的话,则由源主机进行分片,目的主机进行组装

image-20200205211748989

image-20200205211815543

  • 版本号,4个字节来展示版本号,和IPv4一样
  • 优先级(priority):标识数据报的优先级,以便IPv6来区分不通类型的数据报
  • 流标签(flow Label):标识同一流中的数据报
  • 载荷长度,包含扩展首部+数据,总共16个比特,理论上可达到64KB的长度
  • 下一个首部(next header):如果有扩展首部的话用于标识下一个选项首部,最后一个首部存储上层协议首部(例如TCP首部,UDP首部)
  • 跳步限制,对应IPv4中的TTL,数值定义了IPv6能够在网络中跳步的数量,如果跳步数减到0就不再转发,并发送ICMP报文
  • IPv6地址使用128位地址

IPv6对比 IPv4的改变

  • 校验和彻底移除,以减少每跳处理时间
  • 选项:允许,但是从基本首部移除,定义为多个选项首部,通过下一个首部字段指示
  • ICMPv6:新版ICMP
    • 附加报文类型,增加了"Packet Too Big"报文类型,因为IPv6无法分片,所以会发送ICMP报文给源主机
    • 多播组管理功能,主要支持在多播时,可以增加或移除组管理成员

IPv6地址表示形式

IPv6改用冒号分隔的16进制的地址表示形式

  • 一般形式:1080:0:FF:0:8:800:200C:417A
  • 压缩形式:可以将连续的0压缩,并用两个冒号代替,每个IPv6地址中只允许使用一次压缩,例如FF01:0:0:0:0:0:0:43,可压缩为FF01::43
  • IPv4-嵌入形式:0:0:0:0:0:FFFF:13.1.68.3,把前80个比特全部设置为0,接下来的16个比特设置为1,剩余的32位写成32位的IPv4地址,可以写成::FFFF:13.1.68.3
  • 地址前缀:2002:43c:476b::/48,IPv6不再使用子网掩码,全部使用SIDR形式表示
  • URLs由于地址过长,并且会有可能引起误解,所以使用url表示中用[]将地址括起来,防止歧义http://[::FFFF:13.1.68.3]:8080/

IPv6基本地址类型

  1. 单播(unicast)地址:一对一通信

image-20200205213410757

  1. 多播(multicase)地址:一对多通信,每次发送时该多播网络的成员都会收到对应数据报的副本

image-20200205213419946

  1. 任意播(anycast):一对一组之一(通常是最近一个)通信,只会对一个主机进行发送

image-20200205213538654

IPv4如何向IPv6过渡

不可能在某个时刻所有路由器同时被更新为IPv6,所以:

  • 不会有标志性的日期

  • 长时间内还是IPv4和IPv6并行

    • 使用隧道(tunneling技术):IPv6数据报作为IPv4数据报的载荷进行封装,穿越IPv4网络后再将其卸载下来

      image-20200205213844822