计算机网络-网络层

网络层

网络层的功能

异构网络互连

路由与转发

1569059611008

  • 路由表:{<目的网络地址,下一跳地址>}

1568965572840

1569059693968

1569059727315

拥塞控制

路由算法

协议 内部/外部 类型 是否要层次化 度量值
OSPF 内部 链路状态 开销(思科上是开销即带宽)
ISIS 内部 链路状态 带宽(思科接口默认为10)
EIGRP 内部 高级距离矢量 复合带宽+延迟
BGP 外部 距离(路径)矢量 路径矢量,属性
RIP 内部 距离矢量 跳数

静态路由与动态路由

在计算机网络中,路由器的一个很重要责任就是要在端对端的节点中找出一条最佳路径出来,通过自己与相邻节点之间的信息,来计算出从自己位置到目的节点之间的最佳线路,这种算法我们可以理解为路由算法

路由的模式又主要分为「静态路由」和「动态路由」。静态路由协议是由网络管理员手动输入配置的,适用于小型的不太复杂的网络环境中,或者有特定需求的网络场景中。而动态路由协议是现代计算机网络中最为常用的一种方式。动态路由算法能够根据网络拓扑结构去适应流量的变化。

路由协议

距离-向量路由算法

距离矢量路由算法(Distance Vector Routing),它是网络上最早使用的动态路由算法,也称为Bellman-Ford或者Ford-Fulkerson算法。基于这类算法实现的协议有:RIP、BGP等。

这类算法的基本思路是:网络中每一个路由器都要维护一张 矢量表 ,这个矢量表 中的每一行都记录了从当前位置能到达的目标路由器的最佳出口(接口)和距离(跳数)。路由表:{<目的网络地址,距离,下一跳地址>}

每隔一段时间当前路由器会向所有的邻居节点发送自己的整个路由表,同时它也会接收每个邻居发来的它们的表。并会将邻居的表和自己的表做一个对比更新。

就这样继续类推,要不了多久,每个路由器就可以将网络中所有路由节点和子网线路都汇聚起来了。这样的话,每个路由器只需要查找自己的表就可以很容易的知道到达目的地的最佳出口(接口)是哪个了。

特点:好消息传得快,而坏消息传的慢,实现简单,开销较小,只支持小规模网络(最大15条),大规模网络开销较大(每次发送信息的时候,要发送整个全局路由表)。收敛时间太慢,会导致有些路由器的表更新慢。

1568969377992

链路状态路由算法

链路状态路由算法(Link State Routing ),基于Dijkstra算法,它是以图论作为理论基础,用图来表示网络拓扑结构,用图论中的最短路径算法来计算网络间的最佳路由。基于这类算法实现的协议有:OSPF 等。

OSPF:开放最短路径优先OSPF (Open Shortest Path First)。 它是为克服RIP的缺点在1989 年开发出来的。其原理很简单,但实现起来却较复杂

请注意: OSPF只是一个协议的名字,它并不表示其他的路由选择协议不是“最短路径优先”。实际上,所有的在自治系统内部使用的路由选择协议(包括RIP协议)都是要寻找一条最短的路径。

内部网关协议 OSPF特点:

  • 向本自治系统中的所有路由器发送信息,这种方法是洪泛法。
  • 发送的信息就是与相邻路由器的链路状态,链路状态包括与哪些路由器相连以及链路的度量,度量用费用、距离、时延、带宽等来表示。
  • 只有当链路状态发生变化时,路由器才会发送信息

所有路由器都具有全网的拓扑结构图,并且是一致的。相比于 RIP,OSPF 的更新过程收敛的很快

OSPF不用UDP而是直接用IP数据报传送。这样数据包段,可以减少信息通量。

层次路由

链路状态路由算法中,洪泛法代价很大,为了使OSPF能够用于规模很大的网络,OSPF将一个自治系统再划分为若千个更小的范围,叫做区域(area)。洪泛法交换链路状态信息的范围局限于每一个区域,而不是整个自治系统。

AS (自治系统 autonomous systems)之间的路由选择很困难,主要是由于:

  • 网络规模:路由表几乎无法存储!交换量巨大,会淹没链路!
  • 管理自治:每个网络的管理可能都期望自主控制其网内的路由,互联网(internet) = 网络之网络(network of networks)

层次化路由的提出:

  • 聚合路由器为一个区域:自治系统AS(autonomous systems)
  • 同一AS内的路由器运行相同的路由协议(算法),不同自治系统内的路由器可以运行不同的AS内部路由协议
  • 网关路由器(gateway router):位于AS“边缘”;通过链路连接其他AS的网关路由器

外部网关协议 BGP (External Gateway Protocol)

若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。

BGP 只能寻找一条比较好的路由,而并非寻找一条最佳路由。每个 AS 都必须配置一些路由器作为“ BGP 发言人”(BGP边界路由),通过在两个相邻 BGP 发言人之间建立 TCP 连接来交换路由信息。

1569059846964

1569060106713

IPv4

$$IP地址::={<网络号>,<主机号>}$$

1568965312504

IPv4分组

1568965493301

  1. 版本号(Version)
    长度为4位(bit),IP v4的值为0100,IP v6的值为0110。

  2. 首部长度
    指的是IP包头长度,用4位(bit)表示,十进制值就是[0,15],一个IP包前20个字节是必有的,后40个字节根据情况可能有可能没有。如果IP包头是20个字节,则该位应是20/4=5。

  3. 服务类型(Type of Service TOS)
    长度为8位(bit),其组成:前3位为优先级(Precedence),后4位标志位,最后1位保留未用。优先级主要用于QoS,表示从0(普通级别)到7(网络控制分组)的优先级。标志位可分别表示D(Delay更低的时延). T(Throughput 更高的吞吐量). R(Reliability更高的可靠性). C(Cost 更低费用的路由)。
    TOS只表示用户的请求,不具有强制性,实际应用中很少用,路由器通常忽略TOS字段。

  4. 总长度(Total Length)
    指IP包总长度,用16位(bit)表示,即IP包最大长度可以达216=65535字节。在以太网中允许的最大包长为1500B,当超过网络允许的最大长度时需将过长的数据包分片。

  5. 标识符(Identifier)
    长度为16位,用于数据包在分段重组时标识其序列号。将数据分段后,打包成IP包,IP包因走的路由上不同,会产生不同的到达目地的时间,到达目地的后再根据标识符进行重新组装还原。该字段要与标志. 段偏移一起使用的才能达到分段组装的目标。

  6. 标志(Flags)
    长度为3位,三位从左到右分别是MF. DF. 未用。MF=1表示后面还有分段的数据包,MF=0表示没有更多分片(即最后一个分片)。DF=1表示路由器不能对该数据包分段,DF=0表示数据包可以被分段。

  7. 偏移量(Fragment Offset)
    也称段偏移,用于标识该数据段在上层初始数据报文中的偏移量。如果某个包含分段的上层报文的IP数据包在传送时丢失,则整个一系列包含分段的上层数据包的IP包都会要求重传。

  8. 生存时间(TTL)
    长度为8位,初始值由操作系统设置,每经过一个路由器转发后其值就减1,减至0后丢弃该包。这种机制可以避免数据包找不到目地时不断被转发,堵塞网络。

  9. 协议(Protocol)
    长度为8位,标识上层所使用的协议。

  10. 首部校验和(Header Checksum)
    长度为16位,首部检验和只对IP数据包首部进行校验,不包含数据部分。数据包每经过一个中间节点都要重新计算首部校验和,对首都进行检验。

  11. 源IP地址(Source IP)
    长度为32位,表示数据发送的主机IP。

  12. 目的IP地址(Destination IP)
    长度为32位,表示数据要接收的主机IP。

  13. 选项字段(Options)
    长度为0-40字节(Byte),主要有:安全和处理限制(Security). 记录路径(Record Route). 时间戳(Timestamps). 宽松源站选路(Loose Source Routing). 严格的源站选路(Strict Source Routing)等。

1569067595849

IPv4地址与NAT

NAT(Network Address Tranlation)有助于减缓可用的IPv4地址空间的枯竭。

NAT的原理是,在路由器中维护一张映射表,并在数据交换时修改出(入)的源(目的)IP地址和端口号。

表 NAPT地址转换表举例
方向 字段 旧的IP地址和端口号 新的IP地址和端口号
源IP地址:TCP源端口 192.168.0.3:30000 172.38.1.5:40001
源IP地址:TCP源端口 192.168.0.4:30000 172.38.1.5:40002
目的IP地址:TCP目的端口 172.38.1.5:40001 192.168.0.3:30000
目的IP地址:TCP目的端口 172.38.1.5:40002 192.168.0.4:30000

1569118950019

普通路由器在转发IP 数据报时,对于源IP地址或目的IP地址都是不改变的。但 NAT路由器在转发IP数据报时,一定 要更换其ip地址 (转换源IP地址或目的IP地址)。其次,普通路由器在转发分组时,是工作在网络层。但 NAPT路由器还要查看和转换运输层的端口号,而这本来应当属于运输层 的范畴。

子网划分、路由聚集、子网掩码与CIDR

  • 子网划分:在今天看来,在 ARPANET的早期,IP地址只有A、B、C三类是不合理的,所以提出了子网划分。

    • 从两级IP 地址到三级IP 地址:IP地址空间利用率低、路由表大、两级IP地址不够灵活。

      在 <网络号,主机号> 的基础上增加了一个“子网号字段”,这种方法称为划分子网

    • 思路:1. 可将所属的物理网络划分为若干个子网(subnet),<网络号,子网号,主机号>

    • 如下图:把网络145.13.0.0划分为三个子网,但对外仍是一个网

    1569121072800

  • 子网掩码

    • 现在剩下的问题就是:假定有一个数据报(其目的地址是145.13.3.10)经到达了路由器 $R_1$。

      那么这个路由器如何把它转发到子网145.13.3.0 呢?

      从 IP 数据报的首部无法看出源主机或目的主机所连接的网络是否进行了子网的划分。

      所以提出了子网掩码(subnet mask)

      1569121339217

    • 使用子网掩码的好处就是:不管网络有没有划分子网,只要把子网掩码和IP 地址进行逐位的“”算(AND)就立即得出网络地址来。这样在路由器处理到来的分组时就可采用同样的算法。

    • 现在互联网的标准规定:所有的网络都必须使用子网掩码,同时在路由器的路由表中也必须有子网掩码这一栏。如果一个网络不划分子网, 就使用默认子网掩码。默认子网掩码中1 的位置和IP地址中的网络号字段net-id正好相对应(对应整个网络号字段字段部分都为1)。那么(AND)出来的结果不变。

    • 下表为B 类地址的子网划分选择(使用固定长度子网)举例

子网号的位数 子网掩码 子网数 每个子网的主机数
2 255.255.192.0 2 16382
3 255.255.224.0 6 8190
4 255.255.240.0 14 4094
5 255.255.248.0 30 2046
6 255.255.252.0 62 1022
7 255.255.254.0 126 510
8 255.255.255.0 254 254
9 255.255.255.128 510 126
10 255.255.255.192 1022 62
11 255.255.255.224 2046 30
12 255.255.255.240 4094 14
13 255.255.255.248 8190 6
14 255.255.255.252 16382 2
  • 无分类编址CIDR (构造超网)

    • 网络前缀:划分子网在一定程度上缓解了互联网在发展中遇到的困难,但是IPv4依旧不够用。

    • 其实早在1987年就提出了变长子网掩码VLSM, 在 VLSM的基础上又进一步研究出无分类编址方法CIDR

      它的正式名字是无分类域间路由选择 CIDR (Classless Inter-Domain Routing, CIDR 的读音是”sider” )

    • 特点:

      • CIDR消除了传统的A 类、B 类和C 类地址以及划分子网的概念

        编址方式又回到了两级<网络前缀,主机号>,CIDR还使用“斜线记法” (slash notation),或称为CIDR记法,即在IP 地址后面加上 斜线“/”,然后写上网络前缀所占的位数(1 的个数)

        虽然CIDR不使用子网了,但由于目前仍有一些网络还使用子网划分和子网掩码,因此CIDR使用的地址掩码也可继续称为子网掩码

      • CIDR把网络前缀都相同的连续的IP地址组成一个“CIDR地址块”。

        如:12.14.35.7/20 = 10000000 00001110 00100011 00000111
        最小地址 12.14.32.0 10000000 00001110 00100000 00000000
        最大地址 12.14.47.255 10000000 00001110 00101111 11111111

  • 路由聚集(route aggregation)

    • 路由聚合:由于一个CIDR地址块中有很多地址,所以在路由表中就利用CIDR地址块来查找目的网络。它使得路由表中的一个项目可以表示原来传统分类地址的很多个(例如上千个)路由,从而提高系统性能。
    • 路由聚合也称为构成超网(supemetting)。
    • 每一个 CIDR 地址块中的地址数一定是 $2$ 的整数次幕。除最后几行外,CIDR 地址块都包含了多个 C 类地址(是一个 C 类地址的 $2^n$ 倍,$n$ 是整数),这就是“构成超网”这一名词的来源。
    • 使用CIDR的一个好处就是可以更加有效地分配IPv4的地址空间,可根据客户的需要 分配适当大小的CIDR地址块。然而在分类地址的环境中,向一个部门分配IP 地址,就只能以/& /16或/24为单位来分配。这就很不灵活。
    • 如下图所示,采用路由汇聚,路由表中的表项大大减少

    1569130914537

    • 最长前缀匹配:在使用CIDR时,由于釆用了网络前缀这种记法,IP 地址由网络前缀和主机号这两个部分组成,因此在路由表中的项目也要有相应的改变。这时,每个项目由“网络前缀”和“下一跳地址”组成。但是在查找路由表时可能会得到不止一个匹配结果应当从匹配结果中选择具有最长网络前缀的路由。

    • 使用二叉线索查找路由表:为了进行更加有效的查找,通常是把无分类编址的路由表存放在一种层次的数据结构 中,然后自上而下地按层次进行查找。这里最常用的就是二叉线索(binary trie) ,它是一种特殊结构的树。IP 地址中从左到右的比特值决定了从根节点逐层向下层延伸的路径,而二叉线索中的各个路径就代表路由表中存放的各个地址。

      1569131413110

ARP协议、DHCP协议与ICMP协议

  • ARP协议(地址解析协议)
    • 由于是IP协议使用了 ARP协议,因此通常就把ARP协议划归网络层
    • 底层通信(数据链路层)只能识别物理地址MAC,ARP协议就是实现了IP地址到MAC物理地址的映射。
    • 每一台主机都设有一个ARP高速缓存(ARP cache),里面有本局域网上的各主机和路由器的 IP 地址到硬件地址的映射表
    • 过程:
      • 当主机A 要向本局域网上的某台主机B 发送IP数据报时,先查ARP高速缓存有无B主机的记录
        • 若有:将B主机的MAC地址写入IP数据报,并发出
        • 若无:
          1. 在本局域网上广播一个ARP请求:“我是 <IP_A,MAC_A>,我找IP_B”
          2. 在本局域网上的所有主机上运行的ARP进程都收到此ARP请求分组。
          3. 主机 B 收下这个请求,并写入自己的ARP高速缓存,同时主机A 发送ARP响应分组
          4. 主机 A 收到主机B 的 ARP响应分组后,将 <IP_B,MAC_B> 写入自己的ARP高速缓存
    • ARP对映射地址项目都设置生存时间(例如,10~20 分钟),表项超时则删除。
  • DHCP协议

    • 互联网现在广泛使用的是动态主机配置协议 DHCP (Dynamic Host Configuration Protocol),它提供了一种机制,称为即插即用连网(plug-and-play networking)o 这种机制允许一台计算机加入新的网络和获取IP 地址而不用手工参与。
    • DHCP使用客户服务器方式。
      • 需要IP地址的主机在启动时就向DHCP服务器广播发送发现报文(DHCPDISCOVER)(将原地址设为全0,目的IP地址置为全1 , 即 255.255.255.255),这时该主机就成为DHCP客户。
      • DHCP服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的IP 地址池(address pool)取一个地址分配给该计算机。DHCP服务器的回答报文叫做提供报文 (DHCPOFFER)表 示 “提供” 了 IP地址等配置信息。
      • 但是我们并不愿意在每一个网络上都设置一个DHCP服务器,因此现在是使每一个网络至少有一个DHCP中继代理(relay agent)(通常 是一台路由器),它配置了 DHCP服务器的IP地址信息。当中继代理发现报文后,就以单播方式向DHCP服务器转发此报文,并等待其回答。收到DHCP服务器回答的提供报文后,DHCP中继代理再把此提供报文发回给主机A。
      • DHCP报文只是UDP用户数据报的数据
  • 网际控制报文协议ICMP

    • ICMP报文的种类有两种,即ICMP差错报告报文ICMP询问报文。

    • ICMP是互联网的标准协议,是IP层的协议(因为ICMP报文是装在IP 数据报中,作为其中的数据部分)

      1569131683477

    • IP 数据报首部的检验和并不检验IP 数据报的内容,因此不能保证经过传输的ICMP报文不产生差错。

    • 表 4・8 给出的ICMP差错报告报文共有四种,即:

      1569131654278

      • 终点不可达:当路由器或主机不能交付数据报时就向源点发送终点不可达报文。

      • 时间超过:当路由器收到生存时间为零的数据报时,除丢弃该数据报外,还要向源点发送超时报文

      • 参数问题:当收到的数据报首部有的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。

      • 改变路由(重定向):由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。

        下面对改变路由报文进行简短的解释。我们知道,在互联网的主机中也要有一个路由表。当主机要发送数据报时,首先是查找主机自己的路由表,看应当从哪一个接口把数据报
        发送出去。在互联网中主机的数量远大于路由器的数量,出于效率的考虑,这些主机不和连
        接在网络上的路由器定期交换路由信息。在主机刚开始工作时,一般都在路由表中设置一个
        默认路由器的IP地址。不管数据报要发送到哪个目的地址,都一律先把数据报传送给这个
        默认路由器,而这个默认路由器知道到每一个目的网络的最佳路由(通过和其他路由器交换
        路由信息)。如果默认路由器发现主机发往某个目的地址的数据报的最佳路由应当经过网络
        上的另一个路由器R 时,就用改变路由报文把这情况告诉主机。于是,该主机就在其路由
        表中增加一个项目:到某某目的地址应经过路由器R (而不是默认路由器)。

    • ICMP的应用举例:PING、traceroute/tracer

      • PING:例如 ping baidu.com ,PC —连发岀四个ICMP回送请求报文,服务器响应并回送时间戳。
      • traceroute/tracer:原理就是依次递增设置TTL,路由器在转发ICMP报文时会将TTL减一,利用报文TTL减为0(超时)时会向源主机发送ICMP终点不可达差错报告报文

IPv6

解决IP地址耗尽的根本措施就是采用具有更大地址空间的新版本的IP,即 IPv6。

Pv6的主要特点

1569136050458

  • 更大的地址空间。IPv6把地址从IPv4的 32位增大到4 倍,即增大到128位,使地 址空间增大了 2°6倍。这样大的地址空间在可预见的将来是不会用完的。
  • 扩展的地址层次结构。IPv6由于地址空间很大,因此可以划分为更多的层次。
  • 灵活的首部格式。IPv6数据报的首部和IPv4的并不兼容。IPv6定义了许多可选的 扩展首部,不仅可提供比IPv4更多的功能,而且还可提高路由器的处理效率,这是因为路 由器对扩展首部不进行处理(除逐跳扩展首部外)。
  • 改进的选项。IPv6允许数据报包含有选项的控制信息,因而可以包含一些新的选项。但 IPv6的首部长度是固定的,其选项放在有效载荷中。我们知道,IPv4所规定的选项是固定不变的,其选项放在首部的可变部分。
  • 允许协议继续扩充。这一点很重要,因为技术总是在不断地发展(如网络硬件的更新)而新的应用也还会出现。但我们知道,IPv4的功能是固定不变的。
  • 支持即插即用(即自动配置)。因此IPv6不需要使用DHCP。
  • 支持资源的预分配。IPv6支持实时视像等要求保证一定的带宽和时延的应用。
  • IPv6首部改为8 字节对齐(即首部长度必须是8 字节的整数倍)。原来的IPv4首部 是4 字节对齐。

IPv6数据报由两大部分组成,即基本首部(base header)和后面的有效载荷(payload)。有 效载荷也称为净负荷。有效载荷允许有零个或多个扩展首部(extension header),再后面是数 据部分(图4・46)。但请注意,所有的扩展首部并不属于IPv6数据报的首部。

1569136016409

IPv6 地址

一般来讲,一个IPv6数据报的目的地址可以是以下三种基本类型地址之一:

  • 单播(unicast):单播就是传统的点对点通信。
  • 多播(multicast):多播是一点对多点的通信,数据报发送到一组计算机中的每一 个。IPv6没有釆用广播的术语,而是将广播看作多播的一个特例。
  • 任播(anycast):这是 IPv6增加的一种类型。任播的终点是一组计算机,但数据报 只交付其中的一个,通常是距离最近的一个。

在 IPv6中,每个地址占 $128$ 位,地址空间大于 $3.4\times 10^{38}$。

IPv4所用的点分 十进制记法现在也不够方便了,IPv6使用冒号十六进制记法

  • 它把每个16位的值用十六进制值表示,各值之间用冒号分隔。

  • 在十六进制记法中,允许把数字前面的0 省略

  • 冒号十六进制记法还包含两个技术使它尤其有用。首先,冒号十六进制记法可以允许零压缩(zero ompression), 即一连串连续的零可以为一对冒号所取代,例如:FF05:0:0:0:0:0:0:B3 >> FF05::B3

    为了保证零压缩有一个不含混的解释,规定在任一地址中只能使用一次零压缩。

  • 其次,冒号十六进制记法可结合使用点分十进制记法的后缀。例如一个合法IPv6地址:0:0:0:0:0:0:128.10.2.1

IPv6的地址分类
地址类型 二进制前缀
未指明地址 00…0 (128 位),可记为::/128
环回地址 00…1 (128 位),可记为::l/128
多播地址 11111111 (8 位),可记为 F FOO: :/8
本地链路单播地址 1111111010 (10 位),可记为 FE80: :/10
全球单播地址 (除上述四种外,所有其他的二进制前缀)

路由协议

自治系统

自治系统AS(autonomous systems)

域内路由与域间路由

自治系统之间的路由选择也叫做域间路由选择(interdomain routing),而在自治系统内部的路由选择叫做域内路由选择(intradomain routing)

  • 内部网关协议IGP:具体的协议有多种,如 RIP和 OSPF等。
  • 外部网关协议EGP: 目前使用的协议就是BGP

1569137454714

RIP路由协议

0SPF路由协议

BGP路由协议

IP组播

组播的概念

  • IP多播 (multicast,以 前曾译为组播)单播相比,在一对多的通信中,多播可大大节约网络资源。
  • 一对多通信中,只需发送一次,路由器在转发分组时转发给多个对象。
  • 多播要靠路由器来实现,能够运行多播协议的路由器称为多播路由器(multicast router)。
  • 为了适应交互式音频和视频信息的多播,从 1992年起,在互联网上开始试验虚拟的多播主干网MBONE

1569138313037

IP组播地址

​ 单播用于两个主机之间的端对端通信,广播用于一个主机对整个局域网上所有主机上的数据通信。单播和广播是两个极端,要么对一个主机进行通信,要么对整个局域网上的主机进行通信。实际情况下,经常需要对一组特定的主机进行通信,而不是整个局域网上的所有主机,这就是多播的用途。

​ 多播,也称为“组播”,将局域网中同一业务类型主机进行了逻辑上的分组,进行数据收发的时候其数据仅仅在同一分组中进行,其他的主机没有加入此分组不能收发对应的数据。

​ 多播的地址是特定的,D类地址用于多播。D类IP地址就是多播IP地址,即224.0.0.0至239.255.255.255之间的IP地址,并被划分为局部连接多播地址、预留多播地址和管理权限多播地址3类:

  • 在互联网的范围进行多播:IP 多播

    • 属于同一个多播组的设备将被分配(多播软件自己设置)一个相同组播组IP地址
    • 多播的IP地址只能用于目的地址,原地址总是为单播地址
    • 多播使用UDP报文,对组播数据报文不产生ICMP差错报文
  • 在本局域网上进行硬件多播

    • 因为以太网支持多种协议,所以要采取措施分配多播地址,避免冲突。IEEE管理以太网多播地址分配。IEEE把一块以太网多播地址分给IANA以支持IP多播。块的地址都以01-00-5E开头。第25位为0低23位为IPv4组播地址的低23位。IPv4组播地址与MAC地址的映射关系如图所示:

      1569221557146

    • D类IP中还有5位未使用,所以多播 IP 地址与以太网硬件地址的映射不唯一。需要在IP层利用软件进行过滤。

  • IGMP协议与组播路由协议(网际组管理协议 IGMP Internet Group Management Protocol)

    • IGMP 协议让路由器知道本局域网是否有主机(的进程)加或退出了某个多播组

      某主机要加入组播组时,该主机向组播组的组播地址发送一个IGMP报文, 声明自已要称为该组的成员。

      本地组播路由器周期性探询本地局域网上的主机,以便知道这些主机是否还是组播组的成员。

    • 显然,仅有 IGMP协议是不能完成多播任务的。连接在局域网上的多播路由器还必须和互联网上的其他多播路由器协同工作,以便把多播数据报用最小代价传送给所有的组成员。这就需要使用多播路由选择协议多播转发必须动态地适应多播组成员的变化

    • 多播路由选择实际上就是要找出以源主机为根节点的多播转发树。构造树可以避免在路由器之间兜圈子。
      对不同的多播组对应于不同的多播转发树;同一个多播组,对不同的源点也会有不同的多播转发树。(多播不同于单播,在传播的过程中若不加以控制,那么就会导致同一份数据在路由间兜圈子、多次转发)

    • 组播路由选择协议常使用的三种算法:

      基于链路状态的路由选择、基于距离-向量的路由选择、协议无关的组播(稀疏/密集)

      1569229698114

    • 1569228436944

移动IP

移动IP的概念

移动IP技术是移动结点(计算机/服务器等)以固定的网络IP地址,实现跨越不同网段的漫游功能,并保证了基于网络IP的网络权限在漫游过程中不发生任何改变。

  • 移动结点:具有永久IP地址的移动设备。
  • 归属代理(本地代理)一个移动结点拥有的就“居所”称为归属网络,在归属网络中代表移动节点执行移动管理功能的实体叫做归属代理。
  • 外部代理(外地代理)在外部网络中帮助移动节点完成移动管理功能的实体称为外部代理。
  • 永久地址(归属地址/主地址):移动站点在归属网络中的原始地址。
  • 转交地址(辅地址):移动站点在外部网络使用的临时地址。

移动IP通信过程

类似隧道技术,即转发数据报。

例:A 的永久地址是131.8.6.7/16,而其归属网络是 131.8.0.0/16,当移动站A 移动到另一个地点,他所接入的网络称为被访网络(visited network)或外地网络(foreign network)。 被访网络中使用的代理叫做外地代理(foreign agent),它通常就是连接在被访网络上的路由器(当然也充当主机)。有一个通信者B 要和移动站A 进行通信。B 并不知道A 在什么地方。但 B 可以使用A 的永久地址作为发送的IP数据报中的目的地址。通信过程如下:

1569230223617

  1. B 发送给A 的数据报被A 的归属代理截获了(只有当A 离开归属网络时,归属代理才能截获发给A 的数据报)
  2. 由于归属代理已经知道了 A 的转交地址(后面要讲到)因此归属代理把B 发来的数据报进行再封装,新的数据报的目的地址是A 现在的转交地址。新封装的数据报发送到被访网络的外地代理。(隧道技术或IP-in-IP)
  3. 被访网络中的外地代理把收到的封装的数据报进行拆封,取 出 B 发送的原始数据报,然后转发给移动站A 。这个数据报的目的地址就是A 的永久地址。A 收到B 发送的原始数据报后,也得到了 B 的IP地址。
  4. 如果现在A 要向B 发送数据报,那么情况就比较简单。A 仍然使用自己的永久地址作为数据报的源地址,用 B 的 IP地址作为数据报的目的地址。这个数据报显然没有必要在通过A 的归属代理进行转发了。

网络层设备

一个有意思的问题,都说路由器工作在下三层,但是NAT用到了端口号,所以必然是工作在了第四层(传输层)了。其实按照RFC档案来说NATP还是属于网络层。但是NAPT并没有严格按照层次的关系操作(因为其还需要端口号),也正因为如此,NAPT曾遭受了一些人的批评。

路由器的组成和功能

路由表与路由转发