网络层概述

网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输

要实现网络层任务,需要解决以下主要问题:

因特网(Internet)是目前全世界用户数量最多的互联网,它使用TCP/IP协议栈

由于TCP/IP协议栈的网络层使用网际协议IP,它是整个协议栈的核心协议,因此在TCP/IP协议栈中网络层常称为网际层

综上所述,我们通过学习TCP/IP协议栈的网际层来学习网络层的理论知识和实践技术。

网际控制报文协议ICMP

为了更有效地转发lP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP(Internet Control Message Protocol)。

主机或路由器使用ICMP来发送差错报告报文询问报文

ICMP报文被封装在IP数据报中发送。

ICMP差错报告报文共有以下五种:

  1. 终点不可达

  2. 源点抑制

  3. 时间超过

  4. 参数问题

  5. 改变路由(重定向)

1.终点不可达

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

具体可再根据ICMP的代码字段细分为目的网络不可达目的主机不可达、目的协议不可达、目的端口不可达、目的网络未知、目的主机未知等13种错误。

2.源点抑制

当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。

3.时间超过

当路由器收到一个目的IP地址不是自己的IP数据报,会将其生存时间TTL字段的值减1。 若结果不为0,则将该IP数据报转发出去;若结果为O,除丢弃该IP数据报外,还要向源点发送时间超过报文。 另外,当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,也会向源点发送时间超过报文。

4.参数问题

当路由器或目的主机收到IP数据报后,根据其首部中的检验和字段发现首部在传输过程中出现了误码就丢弃该数据报,并向源点发送参数问题报文。

5.改变路由(重定向)

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

以下情况不应发送ICMP差错报告报文:

常用的ICMP询问报文有以下两种:

ICMP应用举例

1.分组网间探测PING(Packet InterNet Groper)

就是ping

2.跟踪路由traceroute

跟踪路由traceroute原理

主机依次发送TTL=1、2、3、4…的回送请求报文(1个1个发,当接收到ICMP差错报告后再发下一个)

经过路由依次丢弃IP数据报并给源主机发送ICMP差错报告(时间超过)

当到达目的主机时,目的主机向源主机发送ICMP回送请求的回答报文,源主机就知道到达终点,停止发送回送请求报文。