04 网络层

4.1 网络层提供的两种服务

传统电信网用面向连接的通信方式,使用虚电路的形式。

互联网的设计思路则是:网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。网络层不提供服务质量的承诺。若主机(即端系统)中的进程之间需要的是可靠的,那么就由主机的运输层负责。

对比方面

虚电路服务

数据报服务

思路

网络保证可靠通信

用户主机保证可靠通信

建立连接

必须有

不需要

终点地址

仅在建立连接的时候使用,每个分组使用短的虚电路号

每个每组都有终点的完整地址

分组转发

属于同一条虚电路的分组按照统一路由转发

每个分组独立选择路由进行转发

当结点故障时

所有通过故障结点的虚电路均不能工作

出故障的结点可能丢失分组,一些路由可能发生变化

分组的顺序

按发送顺序到大终点

到达终点的时间不一定按发送顺序

差错处理和流量控制

可以由网络负责,也可以由用户主机负责

由用户主机负责

4.2 网际协议 IP

与IP协议配套使用的还有三个协议:

  • ARP, Address Resolution Protocol, 地址解析协议

  • ICMP, Internet Control Message Protocol, 网际控制报文协议

  • IGMP, Internet Group Management Protocol, 网际组管理协议

虚拟互联网络

互联网可以由多种异构网络互联组成。当IP网上的主机通信时,就好像在一个单个网络上通信,它们看不见互联的各网络的具体异构细节。

四种不同的中间设备:

  • 转发器(repeater),在物理层

  • 网桥或桥接器(brige),在数据链路层

  • 路由器(router),网络层,路由器就是专用计算机

  • 网关(gateway),网络层以上。用网关连接两个不兼容的系统需要在高层进行协议的转换。

分类的IP地址

IP地址及其表示方法

IP地址是给互联网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内唯一的32位的标识符。IP地址的编址方法经历了三个阶段:

  • 分类的IP地址:将IP地址划分为若干类,每一类都有两个字段,分别表示网络号主机号

  • 子网的划分

  • 构成超网

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

::=表示定义为

注意近年来已经广泛使用无分类IP地址进行路由选择,ABC类地址的区分已经成为历史。

IP地址的五类:

  • A类:8位网络号,24位主机号。网络号第一位为0

  • B类:16位网络号,16位主机号。网络号前两位为10

  • C类:24位网络号,8位主机号。网络号前三位为110

  • D类:前四位为1110。用于多播(一对多通信)

  • E类:前四位为1111。保留为以后用。

常用的三种类别的IP地址

这些IP地址具有以下特点:

  • 每个IP地址都由网络号主机号组成。IP地址是一种分等级的地址结构。IP地址管理机构只分配网络号,主机号由得到网络号的单位自行分配。路由器仅根据主机所连接的网络号来转发分组。

  • IP地址实际上是一台主机和一条链路的接口。路由器总是有两个或以上的IP地址。

  • 互联网平等的对待每一个IP地址。

IP地址和硬件地址

IP地址放在IP数据报的首部,硬件地址则放在MAC帧的首部。IP地址是用软件实现的。

注意几点:

  • 在IP层抽象的互联网上只能看到IP数据报

  • 虽然IP数据报首部有源站IP地址,但路由器只根据目的站的IP地址的网络号进行选择

  • 在局域网的链路层,只能看见MAC帧。MAC帧在不同网络上传送时,其MAC帧首部中的源地址和目的地址要发生变化。

地址解析协议ARP

  • 作用:通过IP地址找到硬件地址

有一个旧的协议叫RARP,作用是通过MAC地址找打IP地址。DHCP协议中已经包含了RARP协议的功能。

IP地址和硬件地址由于格式不同,不存在直接的映射关系,(IP地址32位,硬件地址48位)ARP协议使用一个映射表来进行转换。

假设局域网内主机A要向主机B发送一个数据报,如果主机A的ARP缓存中没有主机B的硬件地址,则运行一下步骤:

  • ARP进程在本局域网上广播发送一个ARP请求分组。(内容为:“我的IP地址是209.0.0.5,硬件地址是00-00-C0-15-AD-18。我想知道IP地址为209.0.0.6的主机的硬件地址”)

  • 本局域网上所有主机上运行的ARP进程都收到次ARP请求分组

  • 主机B的IP地址域ARP请求分组中要查询的IP地址一致,则收下这个ARP请求分组。其他主机则不管这个分组。(内容为:“我的IP地址是209.0.0.6,我的硬件地址是08-00-2B-00-EE-0A”)

  • 主机A收到主机B的ARP响应分组后,将其地址写在ARP高速缓存中

注意两点:

  • ARP请求分组是广播,ARP响应分组是单播

  • ARP协议解决的是同一个局域网内IP到硬件地址的转换

一般来说,ARP缓存有一个生存时间

IP数据报的格式

一个IP数据报由首部和数据两部分组成。首部又分成固定的20字节可选字段。首部的固定部分如下

  • 版本

  • 首部长度

  • 总长度

  • 生存时间

  • 协议

  • 首部校验和

  • 源地址,32位

  • 目的地址,32位

注意新版的IPv6中首部被做成了固定长度。

IP层转发分组的流程

在路由表中,每一条路由主要是以下两个信息。根据目的网络地址来找到下一跳的地址

(目的网络地址,下一跳地址)

确定好下一跳的地址后,网络接口软件使用ARP协议把下一跳的IP转换为MAC地址放在MAC帧的首部。

4.3 划分子网和构造超网

划分子网 subnetting

从两级IP到三级IP

像前面ABC类这样两级的IP地址有一下弊端:

  • IP地址空间利用率低。A类地址可连接的主机数超过1000万,而B类超过6万。一个单位可能用不到那么多。

  • 使路由表变大,从而使得网络性能变坏

  • 不够灵活

为解决上述问题,在IP地址中新增子网号字段。划分子网的基本思路如下:

  • 一个拥有物理网络的单位,可以将一个物理网络划分为若干子网。这些子网对外仍然表现为一个网络

  • 从主机号中借用若干位作为子网号。IP地址的格式变成IP地址 ::= {<网络号>,<子网号>,<主机号>}

  • 划分子网不改变原IP地址

子网掩码

32位的IP地址本身不包含子网信息。我们通过子网掩码来获取子网的信息。通过IP地址和子网掩码进行位与运算来得到子网地址。

例如145.13.3.10。145.13是网络号,3是子网号,10是主机号。对应的子网掩码是0xFFFFFFFFFF00,即网络号+子网号部分全是1,主机号部分全是0。与运算后得到子网地址145.13.3.0

不划分子网时没有子网,三类IP都有一个默认的子网掩码

  • A类 255.0.0.0,或0xFF000000

  • B类 255.255.0.0,或0xFFFF0000

  • C类 255.255.255.0,或0xFFFFFF00

此时路由表中的每一项还需要给出对应网络的子网掩码

划分子网增加了灵活性,但是减少了能连接在网络上的主机总数