网络层

网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。

网络层把运输层产生的报文段用户数据报封装成分组进行传送,在TCP/IP体系中,由于网络层使用IP协议,因此分组也叫做IP数据报,简称数据报

无论在哪一层上传送的数据单元,习惯上可以笼统地用“分组”来表示。

网际协议IP

网络层中与IP协议配套使用的还有4个协议:

  • 网际组管理协议 IGMP(Internet Group Management Protocol)
  • 网际控制报文协议 ICMP(Internet Control Message Protocol)
  • 地址解析协议 ARP(Address Resolution Protocol)
  • 逆地址解析协议 RARP(Reverse Address Resolution Protocol)

IP地址

整个因特网就是单一的、抽象的网络。IP地址就是给因特网上的每一个主机(或路由器)的每一个接口分配一个在全世界范围是唯一的32位标识符。

IP地址的编址方法经过了3个历史阶段:

  1. 分类的IP地址。最基本的编址方法,1981.
  2. 子网的划分。改进,1985.
  3. 构成超网。无分类编址方法(无分类域间路由选择,CIDR),1993。

分类的IP地址

IP地址定义为{<网络号>, <主机号>}。A、B、C类地址都是单播地址(一对一通信),D类地址是多播地址(一对多通信),E类地址保留为以后用。

分类地址已经成为历史,目前广泛使用的是无分类IP地址。

A、B、C的网络号字段分别为1,2,3字节长,而在网络号字段的前面有1~3位的类别位,其数值分别规定为0, 10和110。

IP地址与硬件地址


物理地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址。

ARP和RARP

ARP

地址解析协议ARP:根据IP地址找出相应的物理地址。

ARP 是一种地址解析协议,是一个位于 TCP/IP 协议栈中低层的协议,主要是负责将 IP 地址解析为对应的 MAC 地址。ARP 协议只适用于局域网。另外,当发送主机和目的主机不在同一个局域网中时,即便知道目的主机的 MAC 地址,两者也不能直接通信,必须经过路由转发才可以。所以此时,发送主机通过 ARP 协议获得的将不是目的主机的真实 MAC 地址,而是一台可以通往局域网外的路由器的 MAC 地址。于是此后发送主机发往目的主机的所有帧,都将发往该路由器,通过它向外发送。这种情况称为 ARP 代理
ARP的具体过程:

  1. 首先,每台主机在自己的ARP缓冲区中建立一个ARP列表,用于存储IP地址与MAC地址的对应关系。
  2. 然后,当源主机要发送IP数据报到目标主机时,先检查自己的ARP列表,是否存在该IP地址对应的MAC地址。
    2.1 如果存在,则将IP数据报发送到该MAC地址,结束。
    2.2 如果不存在,执行步骤3。
  3. 向本网段上广播发送一个ARP请求分组,在本网段上的所有主机上运行的ARP进程都收到此ARP请求分组。当目标主机检测到IP地址和自己一致时,目标主机就会发送一个ARP相应分组。同时目标主机将源主机的IP地址和MAX地址添加到自己的ARP列表中。最后,源主机收到这个ARP响应分组后,将目标主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息传输数据。

RARP

逆地址解析协议RARP:根据物理地址找出相应的IP地址。

逆地址解析协议RARP在过去曾起到重要作用,但现在的DHCP协议已经包含了RARP协议的功能。

RARP 的基本工作原理如下:

  1. 发送端发送一个本地的 RARP 广播包,在此广播包中声明自己的 MAC 地址,并且请求任何收到此请求的 RARP 服务器分配一个IP地址。
  2. 本地网段上的 RARP 服务器收到此请求后,检查其 RARP 列表,查找该 MAC 地址对应的 IP 地址。如果存在,RARP 服务器就给源主机发送一个响应数据包,并将此 IP 地址提供给对方主机使用;如果不存在,RARP 服务器对此不做任何响应。
  3. 源端在收到从 RARP 服务器来的响应信息后,利用得到的 IP 地址进行通信;如果一直没有收到 RARP 服务器的响应信息,则表示初始化失败。

ICMP

在网络层使用网际控制报文协议ICMP(Internet Control Message Protocol),ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。
IP 协议是不可靠协议,不能保证 IP 数据报能够成功的到达目的主机,无法进行差错控制,而 ICMP 协议能够协助 IP 协议完成这些功能。

ICMP报文作为IP数据报的数据一起发送。

ICMP报文的种类有两种:ICMP差错报告报文和ICMP询问报文。

ICMP差错报告报文

ICMP差错报告报文共有5种类型:

  1. 终点不可达
    当路由器或主机不能交付数据报时就向源点发送终点不可达报文。
  2. 源点抑制
    当路由器或主机由于阻塞而丢弃数据报时,就向源点发送源点抑制报文,使源点直到应当把数据报的发送速率放慢。。
  3. 超时
    IP 数据包中有一个字段 TTL(Time to live,生存周期),它的值随着每经过一个路由器就会减 1,直到减到 0 时该 IP 数据包被丢弃。
    当路由器收到生存时间为0的数据报时,除了丢弃数据报外,还要向源点发送超时报文。
    当终点在预先设定的时间内不能收到一个数据报的全部数据报片时就丢弃该数据报,就把已收到的数据报片丢弃,并向源点发送超时报文。
  4. 参数问题
    当路由器或主机收到的数据报的首部中的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
  5. 改变路由(重定向)
    路由器把改变路由报文发送给主机,让主机直到下次应该讲数据报发送给另外的路由器。

ICMP询问报文

ICMP询问报文由两种:

  1. 回送请求和回答
    ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。可以用来测试目的主机是否可达以及了解其有关状态。
  2. 时间戳请求和回答
    ICMP时间戳请求报文是请某个主机或路由器回答当前的日期和时间。可以用来进行时钟同步和测量时间。

Ping

ICMP的一个重要应用是分组网间探测PING(Packet InterNet Groper),用来测试主机之间的连通性。PING使用ICMP回送请求和回送回答报文

PING是应用层直接使用网络层ICMP的例子,没有通过传输层的TCP和UDP。