文章目录
  1. 虚拟互连网络
  2. 分类的IP地址
  3. IP地址与硬件地址
  4. 地址解析协议ARP
    1. ARP报文格式
    2. ARP工作原理
  5. IP数据报的格式
  6. IP数据报的分组转发

虚拟互连网络

许多计算机网络通过路由器互连,参加互连的计算机网络都使用相同的网际协议IP,因此可以把互连以后的计算机网络看成如下图所示的一个虚拟互连网络。互连起来的各种物理网络的异构性是客观存在的,但是使用IP协议就可以使这些性能各异的网络在网络层看起来如同一个统一的网络。

 

分类的IP地址

将IP地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成,第一个字段称为网络号,第二个字段称为主机号。组成的IP地址在整个互联网范围内是唯一的。这种两级IP地址记为{<网络号><主机号>}。如下图是各种类型的IP地址:

 

IP地址与硬件地址

(1)设计IP地址的目的。(有了MAC地址为什么还要IP地址)

随着网络中设备的逐渐增多,人们发现路由(寻址数据包从发送端到接收端的路径)越来越困难。于是有人提出将网络划分成很多的子网,在路由时就可以将其他子网看成一个整体,路由器只需要考虑将数据包发送到接收端所在子网即可(剩下工作由子网内部解决)。这样找到的路由接近最优路由但大大减少了计算量。于是,需要有一种地域相关的地址,而IP地址就是!位于同一子网上的网络设备,其IP地址的前缀一致。从而在路由时通过IP地址找到较优路由。

(2)设计MAC地址的目的。(有了IP地址为什么还要MAC地址)

MAC地址是网卡地址,网卡才是真正能够做通讯的设备,IP只是上层的软件,负责将不同的网络连接在一起。

 

IP地址用在网络层及以上,MAC地址用在数据链路层及以下。如下图,三个局域网用两个路由器连接起来,由于路由器R1、R2同时连接在两个局域网上,因此R1、R2都有两个MAC地址。

 

地址解析协议ARP

ARP报文格式

 

  • 硬件地址:表示ARP报文可在哪种类型的网络上传输,1表示以太网;
  • 上层协议类型:表示硬件地址要映射的地址协议类型。映射IP地址时为0x0800;
  • MAC地址长度:6;
  • IP协议地址长度:4;
  • 操作类型:1表示请求报文,2表示应答报文;

ARP报文加上MAC头部发送到网络上。

ARP工作原理

根据IP地址,解析出同一局域网上设备的MAC地址。每台主机上都设置一个ARP高速缓存,存放着本局域网上各主机与路由器的IP地址到MAC地址的映射表。显然,如果主机查询的IP地址在主机的ARP高速缓存中存在,即可读取出IP地址对应的MAC地址,否则,按如下步骤找出IP地址对应的MAC地址。

  • 查询主机的ARP进程在本局域网上广播发送一个ARP请求分组用于查询IP地址对应的MAC地址;
  • 本局域网上所有主机运行的ARP进程都收到此ARP请求分组;
  • IP地址与请求分组中查询MAC地址的IP地址不一致的主机忽略此请求,否则,(IP地址与请求分组中查询MAC地址的IP地址一致的主机)向查询主机发送ARP响应分组,其中包含自身的MAC地址。同时在自身的ARP高速缓存中写入查询主机的IP : MAC映射;在Linux上可使用arp -a查看当前的ARP高速缓存。
  • 查询主机收到响应分组后,在其ARP缓存中添加这组IP : MAC映射;

 

IP数据报的格式

 

  • 首部长度。以4字节为单位,即若首部长度为5,则表示IP首部的长度为20字节;
  • 标识。IP软件维持一个计数器,每产生一个数据报,计数器加1,并将计数器的值赋给标识字段。这个标识并不是序号(IP是无连接的),这是因为当数据报很长需要分组传输时,每个分组的数据包的标识字段都是一样的。相同标识字段的数据包意味着数据包来自同一数据报;
  • 总长度。整个IP数据包的长度,以字节为单位;该字段占16位,故IP数据包的长度最大为65535字节;
  • 标志。该字段最低位记为MF位,MF位为1表示该数据报还有分组,MF位为0表示这是数据报中最后一个分组;该字段中间位记为DF位,DF为0表示允许IP数据报分组,否则不允许IP数据报分组;
  • 片偏移。较长的数据报在分组后,某分组在原数据报中的相对位置,片偏移以8字节为偏移单位,即每个分组的长度必为8字节的整数倍;
  • 生存时间(TTL)。占8位,IP数据包每经过一个路由器,路由器就会将IP数据包的TTL减1,若IP数据包的TTL为0,则丢弃该IP数据包;
  • 协议。指明该IP数据报携带的数据使用的哪种协议,常见的TCP协议为6、UDP协议为17、IPv6协议为41;

 

IP数据报的分组转发

在路由表中,最主要的路由包含(目的IP地址, 下一跳IP地址)。网络包每次到达路由器,路由器都根据目的IP地址确定下一跳路由器的IP地址,然后将IP数据包送交数据链路层的网络接口,网络接口将下一跳的IP地址借助ARP协议转换为MAC地址,它将作为MAC头部的目的地址,然后路由器将网络包发送到下一跳路由器。归纳如下分组转发算法。

  • 路由器从网络包的IP头部提取目的IP;若目的IP与路由器在同一网络,则路由器直接将网络包交付目的主机;否则,执行下一步。
  • 若路由器的路由表中有目的IP的特定路由,则路由器将网络包发给路由表所指明的下一跳路由器。否则,执行下一步。
  • 若路由表有到达目的主机所在网络的路由,则路由器将网络包发给路由表所指明的下一跳路由器。否则,执行下一步。
  • 若路由器中有一个默认路由,则路由器将网络包发给路由表所指明的默认路由器。否则,执行下一步。
  • 报告分组转发出错。