计算机网络学习笔记(四):网络层

目录

4.1 IP地址、子网划分、合并超网

4.1.1 IP地址、子网掩码、网关

4.1.2 IP地址的编址方法1:IP地址分类(A~E类地址、保留的IP地址)

4.1.4 IP地址的编址方法2:子网划分(等长、变长)

4.1.5 IP地址的编址方法3:超网(合并网段)

小结

4.2 静态路由和动态路由

4.2.1 网络层实现的功能

4.2.2 路由信息的来源/路由表的生成、路由优先级

4.2.3 静态路由

4.2.4 动态路由/路由选择协议(RIP、OSPF、BGP)

补充:路由器的结构

4.3 网络层协议

4.3.3 网际协议IP(Internet Protocol)

4.3.4 网际控制报文协议ICMP(Internet Control Message Protocol)

4.3.5 网际组管理协议IGMP(Internet Group Management Protocol)

实战1:抓包观察数据包分片

实战2:抓包分析ICMP报文(TTL耗尽、目标主机不可达到)

实战3:流媒体组播(单网段)

4.4 IPv6

4.4.1 IPv6简介


4.1 IP地址、子网划分、合并超网

  • 二进制向左移动1位 等价于 十进制乘以2

  • 能够被2整除的数,写成二进制形式,最后一位是0。

        如果余数是1,则最后一位是1。

  • 能够被4整除的数,写成二进制形式,最后两位是00。

        如果余数是2,就把2写成二进制,最后两位10。

  • 能够被8整除的数,写成二进制形式,最后三位是000。

        如果余数是5,就把5写成位二进制,最后三位101。

  • 能够被16整除的数,写成二进制形式,最后四位是0000。

        如果余数是6,就把6写成二进制,最后四位0110。

4.1.1 IP地址、子网掩码、网关

        数据包的目标IP地址决定了数据包最终到达哪一个计算机,而目标MAC地址决定了该数据包下一跳由哪个设备接收,不一定是终点。

  • IP地址
    • 组成:网络标识 + 主机标识
      • 同一网段的计算机网络部分相同
      • 路由器连接不同网段,负责不同网段之间的数据转发
      • 交换机连接同一网段的计算机

        

  • 格式:32位二进制 或 32比特 或 4个字节
    • 点分二进制表示法:10101100.00010000.00011110.00111000
    • 点分十进制表示法:172.16.30.56

  • 子网掩码(Subnet Mask)/网络掩码/地址掩码:指明IP地址的网络部分和主机部分
    • 同一个网段中的计算机子网掩码相同

  • 表示方法1:IP地址有“类”的概念,A类地址默认子网掩码255.0.0.0,B类地址默认子网掩码255.255.0.0,C类地址默认子网掩码255.255.255.0。
  • 表示方法2:等长子网划分和变长子网划分,打破了IP地址“类”的概念,子网掩码也打破了字节的限制,引入VLSMVariable Length Subnet Masking,可变长子网掩码)。这种方式使得Internet上路由器的路由表大大精简,被称为CIDR(无类域间路由,Classless Inter-Domain Routing),子网掩码中1的个数被称为CIDR值。

  • 网关(Gateway):计算机到其他网段的出口,即路由器的接口地址
    • 取值(重要!!!):本网段中任何一个地址(为了尽可能避免和网络中的计算机地址冲突,通常使用该网段的第一个可用地址最后一个可用地址

计算机的通信流程(重要!!!)

  • Step1:使用自己的IP地址自己的子网掩码做与运算,得到自己所在的网段。
  • Step2:使用目标IP地址自己的子网掩码做与运算,得到目标主机是哪个网段。(无需关心目标的子网掩码)

  • Step3:比较上述两个网段是否一样
    • 同一网段:目标MAC地址是目标计算机的接口MAC地址
    • 不同网段:目标MAC地址是路由器的接口MAC地址(或 网关的MAC地址)

思考题

       判断下面的计算机能否进行通信?

A、B之间可以相互通信:

  • AB发送数据时
    • Step1:计算A所在的网段  131.107.0.0
    • Step2:计算B所在的网段  131.107.0.0
    • Step3:A和B处于同一网段,则目标MAC地址为B的MAC地址
  • BA发送数据时
    • Step1:计算B所在的网段  131.107.41.0
    • Step2:计算A所在的网段  131.107.41.0
    • Step3:A和B处于同一网段,则目标MAC地址为A的MAC地址

A可以给B发送数据,B不能给A发送数据:

  • AB发送数据时
    • Step1:计算A所在的网段  131.107.0.0
    • Step2:计算B所在的网段  131.107.0.0
    • Step3:A和B处于同一网段,则目标MAC地址为B的MAC地址
  • BA发送数据时
    • Step1:计算B所在的网段  131.107.41.0
    • Step2:计算A所在的网段  131.107.42.0
    • Step3:A和B处于不同网段,则目标MAC地址为路由器的MAC地址(B没有配置网关)

       除了A不能发送数据给C和D,其他都正常。

4.1.2 IP地址的编址方法1:IP地址分类(A~E类地址、保留的IP地址)

  • A类地址:网络地址的最高位是0的地址
    • 网络ID:第1部分
      • 第1部分的取值范围为1~126(0不能用,127作为保留网段/环回地址)
    • 主机ID:第2、3、4部分
      • 对于每个A类网络,其容纳的最大主机数量为256×256×256-2=166777214主机ID0的地址网络地址主机ID1的地址广播地址
    • 子网掩码:255.0.0.0 (默认)

  • B类地址:网络地址的最高位是10的地址
    • 网络ID:第1、2部分
      • 第1部分的取值范围为128(1 000 0000)~191(1011 1111)
    • 主机ID:第3、4部分
      • 对于每个B类网络,其容纳的最大主机数量为256×256-2=65534
    • 子网掩码:255.255.0.0(默认)

  • C类地址:网络地址的最高位是110的地址
    • 网络ID:第1、2、3部分
      • 第1部分的取值范围为192(1100 0000)~223(1101 1111)
    • 主机ID:第4部分
      • 对于每个C类网络,其容纳的最大主机数量为256-2=254
    • 子网掩码:255.255.255.0(默认)

  • D类地址:网络地址的最高位是1110的地址(多播地址/组播地址)
    • 第1部分的取值范围为224(1110 0000)~239(1110 1111)
    • 组播地址没有子网掩码

  • E类地址:网络地址的最高位是11110的地址
    • 第一部分的取值范围为240~254,保留为今后使用
    • 注:本书并不讨论该类地址(无需了解)

  • 保留的IP地址:此部分地址不能给计算机使用
    • 主机ID0的地址:特指某个网段(网络地址)
    • 主机ID1的地址:特指该网段的全部主机(广播地址)
      • 如果计算机发送数据包使用主机ID全是1的IP地址,则数据链路层的目标MAC地址为广播地址FF-FF-FF-FF-FF-FF。
    • 127.x.x.x(127.0.0.1~127.255.255.254):本机地址/本地环回地址/回送地址/本机回送地址(Loopback Address),即主机IP堆栈内部的IP地址,一般用来测试使用
      • 案例1:利用环回地址访问本地共享资源(只能使用127.0.0.1

                        本机共享资源的建立 → 本机共享资源的访问 → 本地共享资源的取消

  • 案例2:ping环回地址(可以使用127.0.0.1~127.255.255.254

  • :利用环回地址访问自己,无需网卡(不需要消耗网络流量)。即便网卡被禁用或卸载,依旧可以访问回环地址。
  • 169.254.0.0~169.254.255.255:自动私有IP地址
    • 若计算机设置IP地址为自动获取,而又没有DHCP服务器给计算机自动分配地址,此时计算机系统会自动分配169.254.x.x
    • 案例:某网络管理员(水平较差)给所有的计算机装好系统后,设置计算机的IP地址为自动获取,但是没有配置DHCP服务器,此时所有的计算机都会自动获得169.254网段中的地址。换言之,虽然没有给计算机配置地址,但是它们属于同一网段,还能正常通信。
  • 0.0.0.0
    • 案例1:当计算机的IP地址和网络中其他计算机的IP地址冲突时,使用ipconfig命令看到的就是0.0.0.0,子网掩码也是0.0.0.0
    • 案例2:假设计算机设置IP地址为自动获取,当计算机向DHCP服务请求地址时,其发送数据的源IP地址即为0.0.0.0

4.1.4 IP地址的编址方法2:子网划分(等长、变长)

  • 问题引入:IP地址传统的分类方法 → 地址浪费
    • Case1:假设一个网段有200台计算机,分配一个C类网络212.2.3.0 255.255.255.0。可见,可用的地址范围212.2.3.1~212.2.3.254(254个可用地址),虽然没有全部用完,这种情况还不算是极大浪费(预留地址给新增计算机使用)。
    • Case2:假设一个网段中有400台计算机,分配一个C类网络,地址就不够用了。此时,如果分配一个B类网络131.107.0.0 255.255.0.0,可用的地址范围131.107.0.1~131.107.255.254(56634个可用地址),从而造成了极大浪费。

  • 解决方案:子网划分 → 将现有网段的主机位借用做网络位(子网位),划分出多个子网。子网划分的任务包括两部分:
    • 确定子网掩码的长度
    • 确定子网中第一个可用的IP地址最后一个可用的IP地址

等长子网划分

等长子网划分:将一个网段等分成多个网段,也就是等分成多个子网。

  • C类网络子网划分
    • 1C类网络等分为2个子网:将子网掩码往右移动一位
      • 子网AB的子网掩码:255.255.255.128
      • 子网A可用的地址范围:192.168.0.1(0000 0001)~192.168.0.126(0111 1110)
        • 子网B可用的地址范围:192.168.0.129(1000 0001)~192.168.0.254(1111 1110)

  • 1C类网络等分为4个子网:将子网掩码往右移动两位
    • 子网A~D的子网掩码:255.255.255.192
    • 子网A可用的地址范围:192.168.0.1(0000 0001)~192.168.0.62(0011 1110)
      • 子网B可用的地址范围:192.168.0.65(0100 0001)~192.168.0.126(0111 1110)
      • 子网C可用的地址范围:192.168.0.129(1000 0001)~192.168.0.190(1011 1110)
      • 子网D可用的地址范围:192.168.0.193(1100 0001)~192.168.0.254(1111 1110)

  • 1C类网络等分为8个子网:将子网掩码往右移动三位
    • 子网A~H的子网掩码:255.255.255.224
    • 子网A可用的地址范围:192.168.0.1(0000 0001)~192.168.0.30(0001 1110)
      • 子网B可用的地址范围:192.168.0.33(0010 0001)~192.168.0.62(0011 1110)
      • 子网C可用的地址范围:192.168.0.65(0100 0001)~192.168.0.94(0101 1110)
      • 子网D可用的地址范围:192.168.0.97(0110 0001)~192.168.0.126(0111 1110)
      • 子网E可用的地址范围:192.168.0.129(1000 0001)~192.168.0.158(1001 1110)
      • 子网F可用的地址范围:192.168.0.161(1010 0001)~192.168.0.190(1011 1110)
      • 子网G可用的地址范围:192.168.0.193(1100 0001)~192.168.0.222(1101 1110)
        • 子网H可用的地址范围:192.168.0.225(1110 0001)~192.168.0.254(1111 1110)

  • B类网络子网划分
    • 1B类网络等分为2个子网:将子网掩码往右移动一位
      • 子网AB的子网掩码:255.255.128.0
      • 子网A可用的地址范围:131.107.0.1~131.107.127.254
        • 子网B可用的地址范围:131.107.128.1~131.107.255.254

  • A类网络子网划分
    • 1A类网络等分为4个子网:将子网掩码往右移动两位
      • 子网A~D的子网掩码:255.192.0.0
      • 子网A可用的地址范围:42.0.0.1~42.63.255.254
        • 子网B可用的地址范围:42.64.0.1~42.127.255.254
        • 子网C可用的地址范围:42.128.0.1~42.191.255.254
        • 子网D可用的地址范围:42.192.0.1~42.255.255.254

变长子网划分

  • 规律:如果一个子网地址块是原来网段的(1/2)^{n} ,子网掩码就在原网段的基础上后移n 位,不等长子网,子网掩码也不同。
  • 点到点网络:路由器之间的互连为点到点连接,也需要一个单独的网段(2个可用地址)。
    • 每个子网是原来网络的\frac{1}{2}\times \frac{1}{2}\times \frac{1}{2}\times \frac{1}{2}\times \frac{1}{2}\times \frac{1}{2},即(1/2)^{6}
    • 子网掩码向后移动6位,即255.255.255.252。
    • 子网D的可用地址:192.168.0.1(0000 0001)~192.168.0.2(0000 0010)(刚好有2个可用地址)
    • 子网E的可用地址:192.168.0.5(0000 0101)~192.168.0.6(0000 0110)(刚好有2个可用地址)

练习题

  • 判断192.168.0.101/26所属的子网。

  • 判断192.168.0.101/27所属的子网。

  • 思考1:假设一共有200台计算机,其中一个网段有140台,另一个网段有60台。能否通过子网划分,将1个C类网络进行划分,得到满足要求的2个子网?
  • 不能,通过子网划分(无论是等长还是变长),1个C类网络所能得到的子网的最大容纳数量为128,不满足140的要求。此时,只能通过划分2个C类网络来达到上述要求(此种浪费无法避免)。

4.1.5 IP地址的编址方法3:超网(合并网段)

  • 问题引入最初,网络中有200台电脑,因此需要分配一个C类网络(子网掩码为255.255.255.0)。后来,网络中又新增200台电脑,此时原本的C类网络中的剩余IP地址数量不够,因此需要重新分配一个C类网络(子网掩码为255.255.255.0)。值得注意的是,计算机A和计算机B并不在同一个网段中,相互通信时需要经过路由器的转发,效率低下(路由器的一个接口可以设置两个地址)。从逻辑上看,图中存在两个网段(子网掩码不同);从物理连接上看,图中仅存在一个网段(两个交换机之间并没有被路由器隔开)。有没有更好的办法,让这两个C类网段的计算机认为在一个网段?

  • 解决方案:将192.168.0.0/24和192.168.1.0/24 两个C类网络合并
    • 合并后的网段的可用地址:192.168.0.1~192.168.1.254
    • 注:合并之后,IP地址192.168.0.255/23(主机位不是全1)就可以给计算机使用

  • 规律:子网掩码往左移1位,能够合并两个连续的网段
  • 注意事项:不是任何连续的网段都能合并
    • 案例1:尽管192.168.1.0和192.168.2.0两个网段是连续的,但是仅仅将子网掩码向左移动1位,并不能够合并网段(此时网络位还是不同)。进一步地,将子网掩码向左移动2位,可以将上述两个网段合并。但是,向左移动2位子网掩码,实际上是合并了4个网段。

  • 结论:子网掩码左移1位能够将能够合并两个网段;左移2位,能够合并四个网段;左移3位,能够合并8个网段。
    • 判断连续的2个网段是否能够合并,只要第一个网络号能被2整除,就能够通过左移1位子网掩码合并。

  • 判断连续的4个网段是否能够合并,只要第一个网络号能被4整除,就能够通过左移2位子网掩码合并将这4个网段合并。

  • 判断连续的8个网段是否能够合并,只要第一个网络号能被8整除,这8个连续的网段就能够通过左移3位子网掩码合并。

练习题

练习题1:子网、超网的区分

  • 182.2.1.2  255.255.255.0:划分了子网的一个B类地址
    • 第一部分为182  →  该地址为B类地址
    • B类地址的子网掩码为255.255.0.0  →  题中子网掩码右移  →  该地址为B类地址划分子网后的地址
  • 12.2.1.2   255.255.0.0:划分了子网的一个A类地址
    • 第一部分为12  →  该地址为A类地址
    • A类地址的子网掩码为255.0.0.0  →  题中子网掩码右移  →  该地址为A类地址划分子网后的地址
  • 192.2.1.2  255.255.0.0:超网合并了256个C类网段
    • 第一部分为192  →  该地址为C类地址
    • C类地址的子网掩码为255.255.255.0  →  题中子网掩码左移  →  该地址为C类地址合并网段后的地址
  • 结论:判断一个网段是超网还是子网
    • 通过左移子网掩码合并多个网段,右移子网掩码将一个网段划分成多个子网,使得IP地址打破了传统的A类、B类、C类的界限。
    • Step1:判断该网段是A类网络、还是B类网络、还是C类网络,默认A类子网掩码/8,B类子网掩码是/16,C类子网掩码是/24。
    • Step2:如果该网段的子网掩码比默认子网掩码长,则是子网;如果该网段的子网掩码比默认子网掩码短,则是超网。

练习题2:将IP地址拖拽到正确的位置。

练习题3:下列哪些IP地址能够分配给计算机使用?(双选题)

  • 205.7.8.32/27:主机号全0,不能给计算机使用
  • 191.168.10.2/23:可以给计算机使用
  • 127.0.0.1:本地回环地址,不能给计算机使用
  • 224.0.0.10:第一部分为224,为多播地址,不能给计算机使用
  • 203.123.45.47/28:主机号全1,不能给计算机使用
  • 10.10.0.0/13:可以给计算机使用

小结

IP地址的编址方法

  • 分类的IP地址:最基本的编址方法,在1981年就通过了相应的标准协议。
  • 子网的划分:对最基本的编址方法的改进,其标准[RFC 950]在1985年通过。
  • 构成超网:比较新的无分类编址方法。1993年提出后很快就得到推广应用。

4.2 静态路由和动态路由

4.2.1 网络层实现的功能

  • 问题引入:在计算机网络领域,网络层应该向运输层提供怎样的服务(“面向连接”还是“无连接”)曾引起了长期的争论。争论焦点的实质就是:在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统?
  • 观点1(虚电路服务)
    • 这种观点认为,应借助于电信网的成功经验,让网络负责可靠交付,计算机网络应模仿电信网络,使用面向连接的通信方式。
    • 面向连接:通信之前先建立虚电路(Virtual Circuit),以保证双方通信所需的一切网络资源。
      • 网络通信建立的虚电路是逻辑连接,分组都沿着这条逻辑连接按照存储转发方式传送,而并不是真正建立了一条物理连接。
      • 电话通信建立的电路是物理连接(真正的连接)。
      • 分组交换的虚连接和电路交换的连接只是类似,但并不完全一样。
    • 网络层提供可靠服务:如果再使用可靠传输的网络协议,就可使所发送的分组无差错按序到达终点不丢失不重复

  • 观点2(数据报服务)
    • 无连接:网络在发送分组时不需要先建立连接。每一个分组(即IP数据报)独立发送,与其前后的分组无关(不进行编号)。
    • 网络层不提供可靠服务:网络层不提供服务质量的承诺,即所传送的分组可能会出现差错丢失重复乱序,当然也不保证分组传送的时限。
      • 路由器直接丢弃传输过程中出错的数据包
      • 如果网络中待发的数据包太多,路由器处理不了就直接丢弃
      • 路由器不判断数据包是否重复
      • 路由器不确保数据包按发送顺序到达终点
    • 网络层提供数据包服务:网络层向上只提供简单灵活的无连接的尽最大努力交付的数据报服务。

  • 观点1(虚电路服务) VS. 观点2(数据报服务)

  • 网络层最终选择提供的服务:数据报服务(重要!!!)
    • 网络层功能就是给传输层协议提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
    • 通俗一点来讲,网络中的路由器为每一个数据报单独的选择转发路径,网络层不提供服务质量的承诺。

补充知识点:网络畅通的条件

       计算机网络畅通的条件:数据包能去能回,道理很简单、也很好理解,却是我们排除网络故障的理论依据。

  • Case1:目标主机不可达  →  数据包没有到达目的地
    • 原因:沿途路由器不存在到达目标网段的路由

  • Case2:请求超时  →  数据包已经到达目的地,但是返不回来
    • 原因1:沿途路由器不存在到达源网段的路由
    • 原因2:目标主机B关机了
    • 原因3:目标主机B开启了防火墙

  • 网络排错:先检查数据包是否能够到达目标网络,再检查数据包是否能够返回来
    • Step1:检查计算机是否配置了正确的IP地址、子网掩码、网关
    • Step2:逐一检查沿途路由器上的路由表,查看是否有到达目标网络的路由
    • Step3:逐一检查沿途路由器上的路由表,查看是否有数据包返回所需的路由

4.2.2 路由信息的来源/路由表的生成、路由优先级

  • 来源1(直连路由Direct Route:路由器自动发现的路由信息
    • 原理:根据路由器接口的IP地址和子网掩码,自动获得到达该网段的下一条地址
    • 路由信息
      • 网段(Destination):接口IP地址和子网掩码“相与”
      • 子网掩码(Mask):接口的子网掩码
      • 下一条地址(NextHop):接口IP地址
    • 网络设备启动之后,当路由器接口状态为UP时,路由器就能够自动发现去往自己接口直接相连的网络的路由。

  • 来源2(静态路由Static Route:在路由器上手工(命令)配置的路由信息
    • 说明:对于路由器来说,它只知道自己直连的网段。对于没有直连的网络,管理员需要手工添加到这些网段的路由
    • 适用场景:规模较小的网络、不怎么变化的网络

  • 来源3(动态路由Dynamic Route:路由器使用动态路由协议(RIPOSPF而获得路由信息
    • 说明:同一个路由器可以同时运行多种动态路由协议
    • 适用场景:规模较大的网络,能够针对网络的变化自动选择最佳路径

  • 路由优先级:0~255
    • 规定:路由优先级的值越小,则路由优先级就越高
    • 工作原理:当存在多条目的地址/掩码相同,但来源不同的路由时,则具有最高优先级的路由便成为了最优路由,并被加入到路由表中,而其他路由则处于未激活状态,不显示在IP路由表中。
    • :设备上的路由优先级一般都具有缺省值。不同厂家的设备上对于优先级的缺省值的规定可能不同。(下图为华为路由器的默认优先级)

  • 注意事项
    • 点到点链路的静态路由:下一跳可以写路由器的接口名,也可以写下一跳地址

  • 以太网链路的静态路由:最好写下一跳地址

4.2.3 静态路由

简化路由表1:路由汇总/路由汇聚

  • 问题引入:如果Internet(全球最大的互联网)上的路由器把全球所有的网段都添加到路由表,则路由表将会非常庞大。路由器每转发一个数据包,都要检查路由表为该数据包选择转发接口,庞大的路由表势必会增加处理时延。
  • 解决方案:通过合理的地址规划,可以通过路由汇总简化路由表。将物理位置连续的网络分配地址连续的网段,就可以在边界路由器上将远程的网络合并成一条路由,这就是路由汇总。
  • 案例分析1(正常情况)
    • 路由汇总前:路由表非常庞大(管理员需要逐条配置,工作量大)
      • 对于北京市的路由器R1:需要添加到石家庄市中每个网段的路由;对于北京市的其他路由器:需要重复上述操;添加的总路由条数 = 北京市路由器的个数 * 石家庄市网段的个数
      • 对于石家庄市的路由器R2:需要添加到北京市中每个网段的路由;对于石家庄市的其他路由器:需要重复上述操作;添加的总路由条数 = 石家庄市路由器的个数 * 北京市网段的个数

  • 路由汇总后:路由表得到精简

  • 案例分析2(特殊情况):路由汇总的例外
    • 问题引入:石家庄市路由器的所在网段都是172.16网段,但是172.16网段并不都在石家庄市(北京市也存在该网段)
    • 解决方案:到石家庄的网络照样可以汇总成一条路由,但是需要针对例外的那个网段单独添加路由。
    • 分析:当计算机A给计算机B(192.168.10.5/24)发送数据时,此时路由器R1中存在2条匹配的路由(究竟选择哪一个)。根据最长前缀匹配算法(见下),路由器会选择第②条路由进行转发,即下一条地址为10.0.1.2,而不是10.0.0.2。

  • 最长前缀匹配(Longest Prefix Match)/最长匹配/最佳匹配:在IP协议中,路由器用于在路由表中进行选择的一种算法。因为路由表中的每个表项都指定了一个网络,所以一个目的地址可能与多个表项匹配。最明确(子网掩码最长)的一个表项就叫做最长前缀匹配。
    • 示例:在路由器R1中添加如下的3条路由
      • [R1]ip route-static 172.0.0.0  255.0.0.0  10.0.0.2                 --第1条路由
      • [R1]ip route-static 172.16.0.0  255.255.0.0  10.0.1.2            --第2条路由
      • [R1]ip route-static 172.16.10.0  255.255.255.0  10.0.3.2        --第3条路由
    • 路由器R1收到一个目标地址是172.16.10.12的数据包,会使用第3条路由转发该数据包。路由器R1收到一个目标地址是172.16.7.12的数据包,会使用第2条路由转发该数据包。路由器R1收到一个目标地址是172.18.17.12的数据包,会使用第1条路由转发该数据包。

  • 注:CIDR灵活地将对连续的子网进行精确合并

简化路由表2:默认路由

  • 全球最大的网段:子网掩码越短,主机位越多,该网段的地址数量就越大。如果想让一个网段包括全部的IP地址,就要求子网掩码短到极限,最短就是0,子网掩码变成了0.0.0.0,这也意味着该网段的32位二进制形式的IP地址都是主机位,任何一个地址都属于该网段。
    • [R1]ip route-static 0.0.0.0 0.0.0.0 10.1.1.2                --默认路由
    • [R1]ip route-static 172.0.0.0  255.0.0.0  10.0.0.2                  --第1条路由
    • [R1]ip route-static 172.16.0.0  255.255.0.0  10.0.1.2             --第2条路由
    • [R1]ip route-static 172.16.10.0  255.255.255.0  10.0.3.2         --第3条路由
  • 默认路由:在路由器中添加到0.0.0.0 0.0.0.0网段的路由
    • 作用:当路由器没有为数据包找到更为精确匹配的路由时,使用默认路由作为最后匹配的一条路由。
    • 适用场景:使用默认路由作为指向Internet的路由

  • 问题引入1:默认路由造成路由环路环路拓扑
    • 计算机A与计算机B通信
      • A给B发送数据:A → RA → RB → RC → RD → B
      • B给A发送数据:B → RD → RE → RF → RA → A
      • 此种情况下,网络实现了负载均衡
    • 计算机A与计算机C通信
      • A给C发送数据:A → RA → RB → RC → RD → RE → RF → B(此条路径并非最佳路由
      • C给A发送数据:C → RF → RA → A
    • 计算机A与不存在的地址通信(ping):A → RA → RB → RC → RD → RE → RF → RA → ……(路由环路

  • 问题引入2:默认路由造成路由环路直连拓扑

  • 解决方案:TTL字段(Time To Live,生存时间)
    • 原理:计算机发送数据包时,都会设置初始的TTL。数据包每经过一个路由器,TTL就会减1,等到TTL减为0时,路由器就会丢弃该数据包。
    • Windows:TTL=128(默认)
    • Linux:TTL=64(默认)
    • 可视化TTL
      • 案例1:ping网关(沿途不经过任何路由器,故TTL没有任何变化)

  • 案例2:ping非网关(沿途经过路由器,故TTL会递减)

  • 案例3:ping非网关(人工指定TTL,不使用默认值,观察TTL过期现象)

  • 案例4:跟踪发送数据所经过的路由

小结

  • 末端路由器使用默认路由精简路由表
  • 骨干网中的路由器使用路由汇总精简路由表

4.2.4 动态路由/路由选择协议(RIP、OSPF、BGP)

外部网关协议:BGP协议

  • 边界网关协议BGP(Border Gateway Protocol):不同自治系统的路由器之间交换路由信息的协议
    • 较新版本:BGP-4(BGP第4个版本),简写为BGP   2006年1月发表,即RFC 4271 ~ 4278
    • 最佳路由(不现实):对于自治系统之间的路由选择,使用“代价”作为度量来寻找最佳路由是不现实的。
      • 原因1:在不同自治系统之内,度量路由“代价”(距离、带宽、费用、时延等)的标准各不相同。如下图所示,不同的自治系统使用不同的“代价”作为路由度量。对于AS4到达AS5,存在着多条路径,哪一条才是最佳路由呢?由于没有统一的路由度量,因此寻找最佳路由是没有意义的。

  • 原因2:自治系统之间的路由选择必须考虑有关策略(政治、经济、安全等)。
    • 示例1:国内站点在互相传送数据报时,不应经过国外兜圈,尤其是不要经过某些对我国安全有威胁的国家
    • 示例2:AS4给AS5传送数据报,原本最好是经过AS1、AS3,但是AS3不愿意让这些数据报经过自己自治系统内的网络,而AS2愿意让某些相邻自治系统的数据报通过自己的网络,只要支付相应的服务费用即可。

  • 较好路由(现实):在AS之间交换可达性信息,即要到达某个网络所要经过的一系列AS
  • 因此,边界网关协议BGP只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。
  • 工作原理
    • Step1(选取BGP发言人):在配置BGP时,每个自治系统的管理员要选择至少一个路由器作为该自治系统的“BGP发言人”(BGP Speaker)
      • 一般说来,两个 BGP 发言人都是通过一个共享网络连接在一起的
      • BGP发言人往往就是BGP边界路由器,但也可以不是BGP边界路由器
      • ASBR:自治系统边界路由器(AS Boundary Routers)
    • Step2(建立TCP连接):不同自治系统的BGP发言人要交换路由信息,必须要先建立TCP连接(端口号为179
      • 使用TCP连接能提供可靠的服务,也简化了路由选择协议。
      • 使用TCP连接交换路由信息的两个BGP发言人,彼此成为对方的邻站(neighbor)对等站(peer)
    • Step3(交换路由信息):在TCP连接上交换BGP报文以建立BGP会话(session),利用BGP会话交换路由信息/网络可达性(增加新的路由、撤销过时的路由、报告出错的情况等)
    • Step4(构造自治系统连通图):当 BGP 发言人互相交换了网络可达性的信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各AS的较好路由,即构造出树形结构、不存在回路的自治系统连通图。
    • :BGP发言人除了运行BGP外,还必须运行自己所在自治系统内部所使用的内部网关协议IGP,例如RIP或OSPF。

  • 案例:BGP发言人是如何交换路径向量的?
    • 自治系统AS2的BGP发言人通知主干网AS1的BGP发言人:“要到达网络N1、N2、N3、N4可经过AS2。”
    • 主干网AS1的BGP发言人通知自治系统AS3的BGP发言人:“要到达网络N1、N2、N3、N4可经过(AS1, AS2)。”→ 路径向量
    • 自治系统AS3的BGP发言人收到该路径向量信息后,如果AS3自身包含在其中,则不能采用该路径,否则会兜圈子。

  • 特点
    • BGP协议交换路由信息的结点数量级是自治系统数的量级,这要比这些自治系统中的网络数少很多。
    • 每一个自治系统中BGP发言人(或边界路由器)的数目是很少的。这样就使得自治系统之间的路由选择不致过分复杂。
    • BGP支持CIDR,因此BGP的路由表应当包括目的网络前缀下一跳路由器到达该目的网络所要经过的各个自治系统序列
    • BGP刚刚运行时,邻站交换的是整个BGP路由表BGP运行以后,只需要在发生变化时更新有变化的部分(无需周期性更新,只发送增量更新或需要时进行触发更新),从而节省网络带宽和减少路由器的处理开销。
    • BGP路由信息的传输采用可靠的TCP协议
    • BGP是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。
    • 支持VLSM
    • 支持自动路由汇总、手动路由汇总
  • BGP-4报文
    • 报文类型
      • 打开(OPEN)报文:用来与相邻的另一个BGP发言人建立TCP连接关系
      • 更新(UPDATE)报文:用来发送某一路由的信息,以及列出要撤消的多条路由(即交换路由信息
      • 保活/存活(KEEPALIVE)报文:用来确认打开报文和周期性地证实邻站的连通性
      • 通知(NOTIFICATION)报文:用来发送检测到的差错
    • 报文格式

补充:路由器的结构

  • 路由器的作用
    • 连通不同的网络。
    • 选择信息传送的线路。选择通畅快捷的近路,能大大提高通信速度,减轻网络系统通信负荷,节约网络系统资源,提高网络系统畅通率,从而让网络系统发挥出更大的效益来。

路由器的结构

  • 路由选择部分/控制部分
    • 路由选择处理机(核心构件):根据所选定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表
  • 分组转发部分
    • 交换结构/交换组织(switching fabric):根据转发表(forwarding table)对分组进行处理,把分组从一个输入端口转移到某个合适的输出端口。实现交换有多种方法,常用交换方法有三种:
      • 方法1(通过存储器):(1) 当路由器的某个输入端口收到一个分组时,就用中断方式通知路由选择处理机。然后分组就从输入端口复制到存储器中。(2) 路由器处理机从分组首部提取目的地址,查找路由表,再将分组复制到合适的输出端口的缓存中。(3) 若存储器的带宽(读或写)为每秒M个分组,那么路由器的交换速率(即分组从输入端口传送到输出端口的速率)一定小于 M/2。
      • 方法2(通过总线):(1) 数据报从输入端口通过共享的总线直接传送到合适的输出端口,而不需要路由选择处理机的干预。(2) 由于每一个要转发的分组都要通过同一条总线,因此路由器的转发带宽就受总线速率的限制。(3) 现代的技术已经可以将总线的带宽提高到每秒吉比特的速率,因此许多的路由器产品都采用这种通过总线的交换方式。
      • 方法3(通过纵横交换结构crossbar switch fabric:(1) 这种交换结构常称为互连网络(interconnection network)。(2) 它有2N条总线,可以使N个输入端口和N个输出端口相连接。(3) 当输入端口收到一个分组时,就将它发送到与该输入端口相连的水平总线上。(4) 若通向所要转发的输出端口的垂直总线是空闲的,则在这个结点将垂直总线与水平总线接通,然后将该分组转发到这个输出端口。(5) 但若该垂直总线已被占用(有另一个分组正在转发到同一个输出端口),则后到达的分组就被阻塞,必须在输入端口排队。

  • 一组输入端口:对线路上收到的分组进行处理
    • 3层网络设备:输入端口里面装有物理层、数据链路层和网络层的处理模块。
    • 时延:数据链路层剥去帧首部和尾部后,将分组送到网络层的队列中排队等待处理,具有一定的时延。
    • 分组丢弃:若路由器处理分组的速率赶不上分组进入队列的速率,则队列的存储空间最终必定减少到零,使得后面再进入队列的分组由于没有存储空间而只能被丢弃。

  • 一组输出端口:将交换结构传送来的分组发送到线路
    • 3层网络设备:输出端口里面装有物理层、数据链路层和网络层的处理模块。
    • 在网络层的处理模块中设有一个缓冲区(队列)。当交换结构传送过来的分组的速率超过输出链路的发送速率时,来不及发送的分组就必须暂时存放在这个队列中。
    • 数据链路层处理模块将分组加上链路层的首部和尾部,交给物理层后发送到外部线路。

  •  注1:此处的端口就是硬件接口,具有物理层(数字信号和光电信号的转换)、数据链路层(封装成帧、透明传输、差错检验)和网络层(查找转发表选择出口)的功能。
  • 注2:当路由器收到路由信息报文(RIPOSPFBGP报文)时,则交由路由选择处理机进行处理,以生成路由表,并不会转发出去;当路由器收到计算机通信报文时,则交由交换结构进行处理,即查找交换表,选择出口转发出去
  • 注3:路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因。
  • 路由表 VS. 转发表
    • 路由表是根据路由选择算法得出的
    • 转发表是从路由表得出的
    • 在讨论路由选择的原理时,往往不去区分转发表和路由表的区别。
  • 路由选择 VS. 转发
    • “转发”(forwarding):路由器根据转发表将用户的IP数据报从合适的端口转发出去。
    • “路由选择”(routing):按照分布式算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由。

4.3 网络层协议

4.3.3 网际协议IP(Internet Protocol)

        一个 IP 数据报由首部和数据两部分组成。

首部:固定部分 20字节必备字段

  • 版本(4):IP协议的版本号
    • IPv4:0100
    • IPv6:0110
  • 首部长度(4):最大值 → 1111 = 15个单位(一个单位为4字节) = 60字节
    • 首部长度的最大值为60字节,换言之可变部分的最大长度为40字节(固定部分的长度为20字节
    • 由于首部包含可变部分,其长度并不是固定的,因此必须声明首部长度,以便接收方区分首部和数据
  • 区分服务(8):对不同应用的数据包进行区分服务,以使得某种应用的数据包获得更好的服务质量(QoS, Quality of Service)
    • 服务类型:旧标准称呼,一直未被使用过
    • 区分服务:1998年改名。只有在使用区分服务(DiffServ)时,该字段才起作用(一般情况下,不使用该字段)
    • 若想实现区分服务的功能,需要进行如下操作:操作1:发送端需要给数据包添加标记;操作2:路由器需要配置声明带有某种标记的数据包优先转发,确保某种应用的流量的带宽有所保障。
    • 实战:配置计算机发送数据包时,带上区分服务的标记
  • 总长度/首部长度+数据长度(16):最大值 → 1111 1111 1111 1111 = 65535字节
    • 当数据包的总长度超过最大传送单元MTU(1500字节)时,需要进行分片处理(数据链路层)
    • 每一个片都需要加上网络层的首部;接收端需要将同一个数据包的不同片进行组装
    • 如何区分不同片属于同一个数据包?标识
    • 如何区分不同片的先后顺序?片偏移
  • 标识(identification)(16):使用计数器产生IP数据报的标识(同一个数据包的不同分片,其标识相同)
  • 标志(flag)(3):目前只有前两位有意义
    • 最低位MF (More Fragment):MF=1表示“后面还有分片”;MF=0 表示“最后一个分片”
    • 中间一位DF(Don't Fragment):当且仅当DF=0时,才允许分片
  • 片偏移(13):分片的第一个字节在整个数据包中的第几个字节(某片在原分组中的相对位置) → 除以8(以8个字节为偏移单位)
  • 生存时间TTL(Time To Live)(8):数据报在网络中可通过的路由器数的最大值
    • Windows:TTL = 1000 0000 = 128(默认)
    • Linux:TTL = 0100 0000 = 64(默认)
    • 注1:可使用ping或者tracert来观察TTL
    • 注2:可使用-i参数指定数据包的TTL
  • 协议(8):数据包携带的数据使用何种协议,以便目的主机的IP层将数据部分上交给哪个处理过程
    • 类比:寄快递 → 快递单号需要声明快递的内容(书籍、衣服)
    • IP协议支持多种协议,IP数据报可以封装多种协议 PDU。

  • 首部检验和(16)只检验数据报的首部不检验数据部分
    • 不采用CRC检验码而采用简单的计算方法(16位二进制反码求和算法)

  • 源地址(4字节)、目的地址(4字节)

​​可变部分长度可变可选字段

  • 作用:用来支持排错、测量以及安全等措施,内容很丰富。
  • 长度:1字节 ~ 40字节(取决于所选择的项目)
  • 增加可变部分:
    • 优点:增加IP数据报的功能
    • 缺点:使得IP数据报的首部长度成为可变的,增加每一个路由器处理数据报的开销。
  • 注:实际应用中,这些选项很少被使用。

案例分析:IP 数据报分片

  • 需求:假设数据报的总长度为3820字节,其数据部分的长度为3800字节(使用固定首部),现需要分片为长度不超过1420字节的数据报片。
  • 分析:因固定首部长度为20字节,因此每个数据报片的数据部分长度不能超过1400字节。于是分为3个数据报片,其数据部分的长度分别为1400、1400和1000字节。
    • 注(重要!!!)原始数据报首部被复制为各数据报片的首部但必须修改有关字段的值

4.3.4 网际控制报文协议ICMP(Internet Control Message Protocol)

  • 作用:用于在IP主机、路由器之间传递控制消息
    • 控制消息:网络通不通、主机是否可达、路由是否可用等网络本身的消息。
    • 注1:ICMP协议是TCP/IP协议栈中的网络层的一个协议。
    • 注2:ICMP报文是在IP数据报内部被传输的,它封装在IP数据报内。

报文类型1:ICMP请求报文

报文类型2:ICMP响应报文

报文类型3:ICMP差错报告报文

  • 终点不可到达:当路由器或主机没有到达目标地址的路由时,就丢弃该数据包,给源点发送终点不可到达报文。
    • 需要进行分片但设置了不分片:假设链路1的MTU为1500字节,链路2的MTU为1000字节,当数据包经过链路1到达路由器后,由于数据包的长度大于链路2的MTU,此时路由器需要对该数据包进行分片。如果数据包设置了不允许分片,路由器丢弃该数据包,同时给发送端返回ICMP差错报告。
    • 由于路由器过滤,通信被禁止:给路由器添加访问控制列表,不允许某种流量通过

  • 源点抑制:IP没有流量控制机制,路由器和主机的缓冲区有限,如果发送方发送数据的速率过快,将会导致缓冲区产生溢出。当路由器或主机由于拥塞而丢弃数据包时,就会向源点发送源点抑制报文,使源点知道应当降低数据包的发送速率
  • 改变路由(重定向):当路由器检测到主机使用非优化路由时,它会向主机发送ICMP改变路由(重定向)报文,请求主机改变路由,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。当然,路由器也会把初始数据报向它的目的转发。
    • 路由重定向前:PC1 → R1 → R3 → PC3(远路)
    • 路由重定向后:PC1 → R3 → PC3(近路)

  • 时间超过
    • Case1:当路由器收到TTL=0的数据报时,丢弃该数据报,并向源点发送时间超过的ICMP差错报文。(见下图所示)
    • Case2:当目的主机在预先规定的时间内不能收到一个数据报的全部数据报片时,丢弃己收到的数据报片,并向源点发送时间超过的ICMP差错报文。

  • 参数问题:当路由器或目的主机收到的数据报的首部中某个字段的值不正确时,丢弃该数据报,并向源点发送参数问题的ICMP差错报文。

  • ICMP报文格式
    • 4个字节:统一的格式(类型、代码、检验和)
    • 接着4个字节:与ICMP的类型有关

  • ICMP差错报告报文格式

4.3.5 网际组管理协议IGMP(Internet Group Management Protocol)

组播/多播(multicast)

  • 目的:更好地支持一对多通信(一个源点发送到许多个终点),节省网络带宽
    • 适用场景:实时信息的交付(如新闻、股市行情等)、软件更新、交互式会议及其他多媒体通信。
    • 案例分析:点对点通信 VS. 组播通信

 

  • 组播IP地址:D类地址(前四位是1110,范围是224.0.0.0 ~ 239.255.255.255) → 用每一个D类地址标志一个多播组
    • 1:组播地址只能用于目的地址而不能用于源地址
    • 2:D类地址中有些地址己经被IANA指派为永久组地址[RFC3330],不能随意使用。例如:
      • 224.0.0.0:基地址(保留)
      • 224.0.0.1:在本子网上的所有参加组播的主机和路由器
      • 224.0.0.2:在本子网上的所有参加组播的路由器
      • 224.0.0.3:未指派
      • 224.0.0.4:DVMRP路由器
      • …….
      • 224.0.1.0 ~ 238.255.255.255:全球范围都可使用的组播地址
      • 239.0.0.0 ~ 239.255.255.255:限制在一个组织的范围
  • 组播MAC地址
    • 问题引入:目标地址是组播IP地址的数据包到达以太网,就要使用组播MAC地址封装,如何获取组播MAC地址呢?
    • 解决方案:使用组播IP地址构造组播MAC地址(48、6字节)
      • 为了支持IP 组播,IANA(因特网号码指派管理局)已经为 Ethernet的MAC地址保留了一个组播地址区间:01-00-5E-00-00-00 到 01-00-5E-7F-FF-FF。
      • 25:固定 → 01-00-5E
      • 23:组播IP地址的低23位

  • 不同的组播IP地址可能构造出相同的组播MAC地址
    • 组播IP地址224.128.64.32构造出的组播MAC地址为01-00-5E-00-40-20。
    • 组播IP地址224.0.64.32构造出的组播MAC地址也为01-00-5E-00-40-20。

实战1:抓包观察数据包分片

  • 案例1:本机 ping 192.168.0.1 -l 1000(无需分片)

  • 案例2:本机 ping 192.168.0.1 -l 2000(需要分成2个数据包片)

  • 案例3:本机 ping 192.168.0.1 -l 4000(需要分成3个数据包片)

  • 案例4:设置不允许分片

  • 案例5:设置不允许分片,同时发送一个大的数据包
    • 报错:-l参数指定的数据包过大,需要拆分数据包;但是-f参数又指定不允许分片(设置DF=1) → 相互矛盾

  • 注:-l参数后面的数字仅仅表示数据部分的长度,不包含首部长度

实战2:抓包分析ICMP报文(TTL耗尽、目标主机不可达到)

案例1TTL耗尽

  • Step1:路由器配置默认路由
    • [R1]ip route-static 0.0.0.0 0.0.0.0 8.8.8.9
    • [R2]ip route-static 0.0.0.0 0.0.0.0 8.8.8.8
  • Step2:PC1 ping 不存在地址

案例2:目标端口不可达到

       将PC1的DNS设置为路由器R2的左接口地址,显然这是一个错误的域名解析地址。当PC1 ping www.baidu.com时,首先需要进行域名解析,但是路由器R2并不能解析该域名,因此返回终点不可达到(端口不可达)的ICMP差错报文。

  • 注:华为路由器无法发送重定向报文和目标主机不可达到的ICMP差错报文

实战3:流媒体组播(单网段)

Step1:参数配置

  • 流媒体服务器的配置如下:

  • PC1的配置如下:

  • PC2的配置如下:

Step2:启动设备

  • Step2.1:流媒体服务器选择流媒体(视频),并运行播放

  • Step2.2:主机PC1和PC2加入多播组,并启动VLC播放器

Step3:观察结果(参与组播的主机播放进度一致,并受流媒体服务器的控制;即主机无法拖动播放进度条

Step4:PC1抓包观察主机退出多播组

  • PC1、PC2依次退出多播组

  • PC1、PC2依次加入多播组

4.4 IPv6

4.4.1 IPv6简介

  • 问题引入IPv4的不足
    • 地址空间的不足
    • 对现有路由技术的支持不够
    • 无法提供多样的QoS
  • 解决方案IPv6的改进
    • 扩展的地址空间和结构化的路由层次
    • 简化了报头格式
    • 近乎无限的地址空间:IPv6地址是由128 bit构成,单从数量级来说,IPv6所拥有的地址容量是IPv4的约2\times 10^{96}倍。这使得海量终端同时在线,统一编址管理变为可能,为万物互连提供了强有力的支撑。(最明显的好处)
    • 层次化的地址结构:正因为有了近乎无限的地址空间,IPv6在地址规划时就根据使用场景划分了各种地址段。同时,严格要求单播IPv6地址段的连续性,便于IPv6路由聚合,缩小IPv6地址表规模。
    • 即插即用:任何计算机或者终端要获取网络资源、传输数据,都必须有明确的IP地址。
      • 传统的IP地址配置方式:手工配置、DHCP自动获取
      • IPv6新增的IP地址配置方式:SLAAC(Stateless Address Autoconfiguration,无状态地址自动配置)
    • 端到端网络的完整性IPv4网络大面积使用NAT技术,从根本上破坏了端到端连接的完整性;IPv6网络不再需要NAT网络设备,上网行为管理、网络监管等将变得简单(IPv6地址足够多,所有地址都使用公网地址,不需要进行地址转换)。
    • 安全性增强IPsec(Internet Protocol Security, Internet协议安全协议)最初是为IPv6设计的,因此基于IPv6的各种协议报文(路由协议、邻居发现等)都可以端到端加密,当然该功能目前应用并不多。而IPv6数据报文的安全性跟IPv4+IPsec的能力基本相同。
    • 可扩展性强:IPv6的扩展首部并不是网络层首部的一部分,但是在必要时,这些扩展首部插在IPv6基本首部和有效载荷之间,能够协助IPv6完成加密功能移动功能最优路径选择QoS等,并可提高报文转发效率。
    • 移动性改善:当一个用户从一个网段移动到另外一个网段,传统的网络会产生经典式“三角式路由”;IPv6网络中,这种移动设备的通信,可不再经过原“三角式路由”,而做直接路由转发,降低了流量转发的成本,提升了网络性能和可靠性。
    • QoS增强:IPv6保留了IPv4所有的QoS属性,额外定义了20 Byte的流标签字段,可为应用程序或者终端所用,针对特殊的服务和数据流,分配特定的资源。目前该机制并没有得到充分的开发和应用。
  • IPv6协议栈
    • ICMPv6
      • 等价协议:取代ICMP
      • 作用:测试网络连通性、报告错误和其他信息(帮助排除网络故障)
    • NDP(Neighbor Discovery Protocol, 邻居发现协议)
      • 等价协议:取代ARP
      • 作用:管理相邻IPv6结点间的交互,包括自动配置地址以及将下一跳IPv6地址解析为MAC地址。
    • MLD(Multicast Listener Discover, 组播侦听器发现协议)
      • 等价协议:取代IGMP
      • 作用:管理IPv6组播组成员的身份

IPv6首部

  • 基本首部(base header):40字节
    • 版本(version)(4):协议的版本
      • IPv6:0110
    • 流类别/通信量类(traffic class)(8):相当于IPv4的区分服务,区分不同的IPv6数据报的类别或优先级。目前正在进行不同的通信量类性能的实验。
    • 流标签/流标号(flow label)(20):IPv6的新增字段,支持资源预分配,并且允许路由器把每一个数据报与一个给定的资源分配相联系。
      • (flow):IPv6提出流的抽象概念。所谓“流”就是互联网络上从特定源点到特定终点(单播或多播)的一系列数据报(如实时音频或视频传输),而在这个“流”所经过的路径上的路由器都保证指明的服务质量。所有属于同一个流的数据报都具有同样的流标签。
      • 实时音频/视频数据:流标签特别有用
      • 传统的电子邮件或非实时数据:流标签没有用处(置为0)
    • 有效载荷长度(payload length)(16):IPv6数据报除基本首部以外的字节数(所有扩展首部都算在有效载荷之内)
      • 最大值:65535字节(64KB)
    • 下一个首部(next header)(8):相当于IPv4的协议字段可选字段
      • 协议字段:当IPv6数据报没有扩展首部时,“下一个首部”字段的作用和IPv4的协议字段一样,指出了基本首部后面的数据应交付给IP上面的哪一个高层协议(例如:6或17分别表示应交付给TCP或UDP)。
      • 可选字段:当IPv6数据报有扩展首部时,“下一个首部”字段的值就标识后面第一个扩展首部的类型。
    • 跳数限制(hop limit)(8):相当于IPv4的生存时间TTL,防止数据报在网络中无限期地存在。源点在每个数据报发出时即设定某个跳数限制。
      • 最大值/最大跳数:255跳
    • 源地址、目的地址(128):数据报的发送端、接收端的IPv6地址
  • 扩展首部(extension header):IPv6把原来IPv4首部中选项的功能都放在扩展首部中(零个或多个)
    • 逐跳选项
    • 路由选择
    • 分片
    • 鉴别
    • 封装安全有效载荷
    • 目的站选项

  • IPv4 VS. IPv6:IPv6在IPv4基础上,作出如下改变
    • 取消了标识、标志和片偏移字段:这些功能已包含在分片扩展首部中
    • 取消了TTL字段:改为跳数限制字段(作用一致)
    • 取消了协议字段:改用下一个首部字段
    • 取消了检验和字段:加快路由器处理数据报的速度
      • 数据链路层:对检测出有差错的帧就丢弃。
      • 传输层:当使用UDP时,若检测出有差错的用户数据报就丢弃;当使用TCP时,对检测出有差错的报文段就重传,直到正确传送到目的进程为止。
      • 因此,在网络层的差错检测可以精简掉。
    • 取消了选项字段:用扩展首部来实现选项功能

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

华科大胡子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值