1 IP地址与MAC地址的关系


  • MAC是身份证号码,用来识别网络设备本身
  • IP地址是居住地

2 ARP协议

Address Resolution Protocol(地址解析协议)。ARP协议能实现任意网络地址到任意物理地址的转换,这里仅讨论IP地址到以太网地址(MAC地址)的转换。

工作原理

主机向自己所在网络广播一个ARP请求(包含目标机器的网络地址)。此网络上的其他机器都将接收到这个请求,但只有被请求的目标机器会回应一个ARP应答(包含自己的物理地址)。

2.1 作用

地址解析流程:

计算机网络-网络层原理_数据

将主机的IP地址解析为相应的链路层的MAC地址。


  • 不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用MAC地址
  • 每一个主机都设有一个ARP高速缓存,里面有所在局域网上的各主机和路由器的 IP 地址到MAC地址的映射表

当主机 A 欲向本局域网上的主机 B 发送 IP 数据报时:


  1. 先在其ARP高速缓存中查看有无主机 B 的 IP 地址。若有,就可查出其对应MAC地址。
  2. 再将此MAC地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此MAC地址。
    计算机网络-网络层原理_子网_02

ARP高速缓存的作用


  • 为了减少网络上的通信量,主机A在发送其 ARP 请求分组时,就将自己的 IP 地址到硬件地址的映射写入 ARP 请求分组
  • 当主机 B 收到 A 的 ARP 请求分组时,就将主机 A 的这一地址映射写入主机 B 自己的 ARP 高速缓存中。这样主机 B 以后向 A 发送数据报时就更方便了。

3 IP地址

3.1 分类

每类地址都由两个固定长度的字段组成:


  • 网络号 net-id
    标志主机(或路由器)所连接到的网络。
  • 主机号 host-id
    标志该主机(或路由器)。

两级的 IP 地址可以记为:

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

  • IP 地址中的网络号字段和主机号字段
    计算机网络-网络层原理_子网_03
  • 点分十进制记法
    计算机网络-网络层原理_字段_04

3.2 范围

  • 常用的三种类别的IP 地址的使用范围
    计算机网络-网络层原理_字段_05

4 IP数据报分片

4.1 数据报格式

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



首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的



在首部固定部分的后面是可选字段,长度可变
计算机网络-网络层原理_数据_06
计算机网络-网络层原理_子网_07



版本——占 4 位,指 IP 协议的版本,目前的 IP 协议版本号为 4 (即 IPv4)



首部长度——占 4 位,可表示的最大数值,是 15 个单位(一个单位为 4 字节),因此 IP 的首部长度的最大值是 60 字节



区分服务——占 8 位,用来获得更好的服务,在旧标准中叫做服务类型,但实际上一直未被使用过。1998 年这个字段改名为区分服务。只有在使用区分服务(DiffServ)时,这个字段才起作用。在一般的情况下都不使用这个字段



总长度——占 16 位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节。总长度必须不超过最大传送单元 MTU



最大传送单元 MTU
计算机网络-网络层原理_字段_08
计算机网络-网络层原理_数据_09
计算机网络-网络层原理_子网_10



IP 数据报分片计算机网络-网络层原理_子网_11



生存时间(8 位)记为 TTL (Time To Live)数据报在网络中可通过的路由器数的最大值



协议(8 位)字段指出此数据报携带的数据使用何种协议,以便目的主机的 IP 层将数据部分上交给哪个处理过程



协议字段作用
计算机网络-网络层原理_子网_12



首部检验和(16 位)字段只检验数据报的首部,不检验数据部分。这里不采用 CRC 检验码而采用简单的计算方法
计算机网络-网络层原理_数据_13



源地址和目的地址都各占 4 字节



4.2 IP分片与重组

大IP分组向较小MTU链路转发时,可以被“分片” (fragmented)


  • 1个IP分组分为多片IP分组
  • IP分片到达目的主机后进行“重组” (reassembled)

IP首部的相关字段用于标识分片以及确定分片的相对顺序


  • 总长度
  • 标识(identification)字段占 16 位:标识一个IP分组
    IP协议利用一个计数器,每产生IP分组计数器加1,作为该IP分组的标识
  • 标志位(flag)字段占 3 位,目前只有前两位有意义
    MF (More Fragment)
    DF (Don’t Fragment)
    计算机网络-网络层原理_字段_14
  • 片偏移(13 位)指出:一个IP分组分片封装原IP分组数据的相对偏移量

    • 片偏移字段以8字节为单位


IP分片过程

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

若L>M,且DF=0,则需分片

分片时每个分片的标识复制原IP分组的标识

通常分片时,除最后一分片,其他分片均分为MTU允许的最大分片

  • 一个最大分片可封装的数据应该是8的倍数,因此,一个
    最大分片可封装的数据为:
    计算机网络-网络层原理_数据_15

需要的总片数为:

计算机网络-网络层原理_数据_16

计算机网络-网络层原理_字段_17

计算机网络-网络层原理_数据_18

IP编址

IP编址(addressing)


  • IP分组:


    • 源地址(SA)-从哪儿来
    • 目的地址(DA)-到哪儿去


  • 接口(interface): 主机/路由器与物理链路的连接


    • 实现网络层功能
    • 路由器通常有多个接口
    • 主机通常只有一个或两个接口 (e.g.,有线的以太网接口,无线的802.11接口)
      计算机网络-网络层原理_子网_19


  • IP地址: 32比特(IPv4)编号标识主机、路由器的接口
  • IP地址与每个接口关联
  • 怎样为接口分配IP地址呢?
    计算机网络-网络层原理_数据_20

IP子网(Subnets)


  • IP地址:


    • 网络号(NetID) – 高位比特
    • 主机号(HostID) – 低位比特
      计算机网络-网络层原理_数据_21


  • IP子网:


    • IP地址具有相同网络号的设
      备接口
    • 不跨越路由器(第三及以上层网络设备)可以彼此物理联通的接口
      计算机网络-网络层原理_数据_22
      计算机网络-网络层原理_字段_23



有类IP地址

IP地址(Addresses)

计算机网络-网络层原理_字段_24

特殊IP地址

计算机网络-网络层原理_子网_25

私有(Private)IP地址

计算机网络-网络层原理_子网_26

5 IP子网划分与子网掩码(重点)

子网划分(Subnetting)?

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


  • 子网划分
    计算机网络-网络层原理_数据_27
  • IP地址:


    • 网络号(NetID) – 高位比特
    • 子网号(SubID) – 原网络主机号部分比特
    • 主机号(HostID) – 低位比特
      计算机网络-网络层原理_数据_28



子网掩码

计算机网络-网络层原理_字段_29

子网划分

计算机网络-网络层原理_数据_30

子网掩码的应用

计算机网络-网络层原理_字段_31

计算机网络-网络层原理_数据_32

5.1 从两级 IP 地址到三级 IP 地址

在 ARPANET 的早期,IP 地址的设计确实不够合理。


  • IP 地址空间的利用率有时很低。
  • 给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。
  • 两级的 IP 地址不够灵活
  • 从 1985 年起在 IP 地址中又增加了一个“子网号字段”,使两级的 IP 地址变成为三级的 IP 地址。这种做法叫作划分子网(subnetting) 。划分子网已成为因特网的正式标准协议。

5.2 基本思路


  • 划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。
  • 从主机号借用若干个位作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位。
    IP地址 ::= {<网络号>, <子网号>, <主机号>}
  • 凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号 net-id,先找到连接在本单位网络上的路由器。
  • 然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。
  • 最后就将 IP 数据报直接交付目的主机。
    计算机网络-网络层原理_子网_33
    计算机网络-网络层原理_字段_34

5.3 划分子网后变成了三级结构


  • 当没有划分子网时,IP 地址是两级结构。
  • 划分子网后 IP 地址就变成了三级结构。
  • 划分子网只是把 IP 地址的主机号 host-id 这部分进行再划分,而不改变 IP 地址原来的网络号 net-id

5.4 子网掩码(subnet mask)

从一个 IP 数据报的首部并无法判断源/目的主机所连接的网络是否进行了子网划分,使用子网掩码可以找出 IP 地址中的子网部分

计算机网络-网络层原理_字段_35

计算机网络-网络层原理_数据_36

计算机网络-网络层原理_字段_37


  • 子网掩码是一个网络或一个子网的重要属性
  • 路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器
  • 路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码
  • 若一个路由器连接在两个子网上就拥有两个网络地址和两个子网掩码
    计算机网络-网络层原理_子网_38
    计算机网络-网络层原理_字段_39
    不同的子网掩码得出相同的网络地址。
    但不同的掩码的效果是不同的

6 CIDR与路由聚合

计算机网络-网络层原理_数据_40

计算机网络-网络层原理_子网_41

计算机网络-网络层原理_数据_42

计算机网络-网络层原理_子网_43

计算机网络-网络层原理_子网_44

计算机网络-网络层原理_字段_45

地址聚合,给出一个地址,能够知道其所在地址块,并会计算地址块中地址的个数,最大最小地址;给出一个地址块,能够合理划分子网

DHCP协议

计算机网络-网络层原理_字段_46

计算机网络-网络层原理_数据_47

计算机网络-网络层原理_子网_48

计算机网络-网络层原理_子网_49

计算机网络-网络层原理_字段_50

计算机网络-网络层原理_字段_51

网络地址转换(NAT)

计算机网络-网络层原理_子网_52

计算机网络-网络层原理_数据_53

计算机网络-网络层原理_字段_54

计算机网络-网络层原理_字段_55

计算机网络-网络层原理_数据_56

计算机网络-网络层原理_字段_57

计算机网络-网络层原理_子网_58

计算机网络-网络层原理_数据_59

路由算法

7 理解RIP(Routing Information Protocol)及路由表更新过程

7.1 原理


  • 路由信息协议 RIP 是内部网关协议 IGP中最先得到广泛使用的协议。
  • RIP 是一种分布式的基于距离向量的路由选择协议,优点是简单。
  • RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录

7.2 “距离”的定义


  • 从一路由器到直接连接的网络的距离定义为 1。
  • 从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1。
  • RIP 协议中的“距离”也称为“跳数”(hop count),因为每经过一个路由器,跳数就加 1。
  • 这里的“距离”实际上指的是“最短距离”
    计算机网络-网络层原理_子网_60
  • RIP 认为一个好的路由就是它通过的路由器的数目少,即“距离短”
  • RIP 允许一条路径最多只能包含 15 个路由器。因此“距离”的最大值为16 时即相当于不可达。可见 RIP 只适用于小型互联网
  • RIP 不能在两个网络之间同时使用多条路由。RIP 选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由

7.3 RIP 协议的三个要点


  • 仅和相邻路由器交换信息。
  • 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
  • 按固定的时间间隔交换路由信息,例如,每隔 30 秒

7.4 路由表的建立


  • 路由器在刚刚开始工作时,只知道到直连的网络的距离(此距离定义为1)
  • 以后,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息
  • 经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址
  • RIP 协议的收敛(convergence)过程较快,即在自治系统中所有的结点都得到正确的路由选择信息的过程

7.5 距离向量算法

收到相邻路由器(其地址为 X)的一个 RIP 报文


  • (1) 先修改此 RIP 报文中的所有项目:把“下一跳”字段中的地址都改为 X,并把所有的“距离”字段的值加 1
  • (2) 对修改后的 RIP 报文中的每一个项目,重复以下步骤:
    若项目中的目的网络不在路由表中,则把该项目加到路由表中。
    else if若下一跳字段给出的路由器地址是同样的,则把收到的项目替换原路由表中的项目。
    else if若收到项目中的距离小于路由表中的距离,则进行更新
    else什么也不做
  • (3) 若 3 分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为16(16表示不可达)
  • (4) 返回
    计算机网络-网络层原理_数据_61

7.6 路由器之间交换信息


  • RIP协议让一个自治系统中的所有路由器都和自己的相邻路由器不断交换路由信息,并不断更新其路由表,使得从每一个路由器到每一个目的网络的路由都是最短的(即跳数最少)
  • 虽然所有的路由器最终都拥有了整个自治系统的全局路由信息,但由于每一个路由器的位置不同,它们的路由表当然也应当是不同的

8 路由器的结构


  • 路由器是一种具有多个输入/出端口的专用计算机,其任务是转发分组。也就是说,将路由器某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器
  • 下一跳路由器也按照这种方法处理分组,直到该分组到达终点为止
    计算机网络-网络层原理_字段_62

“转发”和“路由选择”的区别


  • “转发”(forwarding)就是路由器根据转发表将收到的 IP 数据报从合适的端口转发出去。
  • “路由选择”(routing)则是按照分布式路由算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,构造出整个路由表。
  • 路由表是根据路由选择算法得出的。而转发表是从路由表得出的。
  • 在讨论路由选择的原理时,往往不去区分转发表和路由表的区别

9 IP多播需要哪两种协议


  • 网际组管理协议 IGMP (Internet Group Management Protocol)
    为了使路由器知道多播组成员的信息
  • 多播路由选择协议
    连接在局域网上的多播路由器还必须和因特网上的其他多播路由器协同工作,以便把多播数据报用最小代价传送给所有的组成员