计算机网络-网络层

网络层

  • 1. 前言
  • 2. 网络层的作用
  • 3. 网络层数据交换
  • 4. 网络层协议及报文格式
  • 5. ARP与RARP
  • 6. 国际控制报文协议ICMP

1. 前言

网络层介于传输层和数据链路层之间,其主要作用是实现两个网络系统之间的数据透明传送,具体包括路由选择,拥塞控制和网际互连等。网络层是网络与网络之间通信的最底层,在数据从数据链路层向传输层进行数据传输的通信中,起到构建一个中间通信子网的作用。不同网络有这不同的网络层协议和地址规范,如果一个网络中的用户不能识别其他网络的通信协议和地址规范,那么这两个网络之间就不能进行数据通信,就好比不同国家有着不同的交通法规,属于不同的交警系统管理,不允许他国车辆随便出入一样。不同网络也有不同的设计规范,属于不同的组织来管理,必须通过授权,并由专门的协议来负责网络间的通信。如果只是同一局域网内的各个计算机之间的通信,单靠物理层和数据链路层就可以建立通信链路完成用户间的数据通信,但要扩大应用范围,连接不同的局域子网,就需要借助网络层处理各个网络子网的协议,从而进行计算机的网络互连,所以网络层在TCP/IP协议体系中叫网际互连层。

从一般的概念来讲,将网络互相连起来的要使用一些中间设备。根据中间设备所在的层次,可以有以下四种不同的中间设备:
(1)物理层使用的中间设备叫转发器(repeater)
(2)数据链路层使用的中间设备叫做网桥或者桥接器(bridge)
(3)网络层使用的中间设备叫做路由器(router)
(4)在网络层以上使用的中间设备叫做网关(gateway)。用网关连接两个不兼容的系统需要在高层进行协议转换。
计算机网络-网络层_第1张图片
通常一个计算机网络就是一个管理边界,一般是属于一个特定的公司,有一个特定的管理者负责,所以在进行计算机网络互连时,要同时考虑两方面的问题:一是授权用户可以在不同网络间互访,共享双方的资源;另一方面又要保持各计算机网络管理原来的独立性。从前面介绍的数据链路层,我们知道不同用户之间进行通信,首先得知道彼此的地址,局域网内部的用户访问(物理层和数据链路层就可以构建一个局域网)是通过MAC地址进行,但不同网络之间进行访问不同通过属于数据链路层地址的MAC地址来进行寻址,这需要网络层对应的一个网络地址来进行访问,每个网络都通过其网络地址,即NSAP(网络服务访问点)来标识,网络中的每个节点都有一个NSAP。这个NSAP就是由对应网络所运行的网络层通信协议来定义的,在目前最常见的TCP/IP协议网络中,这个协议就是IP协议,对应的NSAP就是IP地址

在物理层传输的是一个个比特位(bit),在数据链路层中传输的是一个个以许多字节为单位的帧(Frame),在每个帧的帧头都有源节点的MAC地址和目的节点的MAC地址,局域网内部的寻址就是通过MAC地址进行的,而在网络层中传输的是数据报(Packet,也叫分组),一个数据报是一个数据帧经过网络层协议重封装后得到的,每个数据报的报头(IP头)都有源节点和目的节点的IP地址,网路间的寻址就是通过IP地址进行的。这样我们知道网络通信只有两种情况:如果通信双方在同一个局域网内,可直接通过数据链路层进行相互通信,但因为主机其实也有网络层的路由功能,所以两台主机间进行网络通信时通常也是通过三层来进行的(IP协议则是IP地址寻址);如果通信双方在不同网络内,毫无疑问必须通过三层进行。事实上,网络层的IP包到达链路层后还要重封装成帧,因为不同网络中的统一标识就是三层地址(网络地址),局域网内链路层的则是MAC地址。所以不同层传输的数据包格式不一样,因为每层的标识不一样。网络层的IP包封装成帧后,其中封装的源和目的网络地址作为帧的数据部分,不会改变,这在前面的数据链路层中有介绍。

2. 网络层的作用

在网络体系中,每一层都是服务于对应的上下层的,网络层也是,服务于上层的传输层和下层的数据链路层。其主要作用表现在一下几个方面:

1、屏蔽网络差异,提供透明传输

不同网络有不同的规范要求,网络层就是为了解决这种不同差异,寻找一个不同网络间都能共同遵守的网络通信规范,以便不同网络间能相互识别,并接受对方的网络请求,说白了,就是一个中转站的作用,两个毫无交集的网络通过这个中转站来建立交集。这样传输层就可以在不同网络间进行透明数据传输。网络层向传输层提供的服务有两类:面向连接的网络服务和无连接的网络服务。

  1. 虚电路是网络层向传输层提供的一种面向连接的服务,是可以使所有数据包按顺序到达目的节点的可靠数据传送方式。在该种方式下,进行数据交换的两个结点之间存在一条专为它们服务的虚电路(逻辑线路),无须附加网络地址;
  2. 数据报服务是网络层提供的一种无连接的网络服务,只能提供不可靠的数据传送方式,源节点(如源路由器)发送的每个数据包都要附加网络地址、包序号等信息,目的节点收到的数据包也不一定按序到达,还可能存在数据包丢失的情况。IP协议是一种无连接的网络层协议,提供无连接的网络层服务。

2、为网络间通信提供路由选择
路由选择也叫路由选择,是根据一定的原则和路由选择算法在多个结点的通信子网中选择一条到达目的节点的最佳路径的过程确定路由选择的策略成为路由算法。在无连接的数据包服务中,网络节点要为每个数据包做出路由选择,即选择到达目的节点的最佳路线,而在面向连接的虚电路服务中,存在一条专们的逻辑线路,在建立连接时就已经确定了路有路径,无需额外选择。

3、数据包封装和解封装
这个类似的功能各个网络层都提供,因为在网络体系结构的不同层次中传输的数据单位并不一样,且发送方和接收方接受数据包的路径是相反的。在发送方,数据自上而下每经过一层都必须在数据头部添加对应层的协议头和(或)协议尾信息,到了接收方,数据自下而上每经过一层又都必须解除前面那层所封装的协议头和(或)协议尾信息。
在发送方,来自传输层的报文通常是已根据对应网络链路的MTU(最大传输单元)被分成多个数据段,然后在网络层中对这些数据段头部添加一些网络层协议控制信息就组成了数据包,这就是包的封装过程。数据包的头部包含源节点和目标节点的网络层地址,在接收方,数据从底层到达网络层时,要去掉在数据链路层加上的数据链路层协议控制信息(帧头和帧尾),还原出原来的数据包格式,这就是包的解封转过程

4、拥塞控制
拥塞控制是为了避免网络传输路径中数据的传输延迟或死锁。数据链路层中的流量控制功能,是针对数据链路中点对点传输速率的控制,这里的拥塞控制是针对在网络层传输路径中的端到端传输效率的控制。主要采用预约缓冲区、许可证和分组丢弃等方式

3. 网络层数据交换

在网络层中,路由器把数据包转发到另一个网络中的目的节点。在计算机网络中,两个端点之间通常需要通过中间结点实现数据通信,这些中间结点并不关心数据内容,只提供一个交换设备,把数据从一个结点转发到另一个结点,直至达到目的端。

数据交换技术主要是指网络中间结点所提供的数据交换功能。

先介绍以前的两种数据交换技术:线路交换和报文交换

线路交换是在网络中利用可切换的物理通信线路直接连接通信双方所进行的一种数据交换方式。最常见的就是以前的电话交换系统,甲先转几下电话机(谍战电视剧里是这样子),实际上是打到了电话交换系统,然后说转局长办公室,这样电话员就把电话线插到局长办公室的线路上,这样就可以进行通信了,通话结束后,电话员就拔下这跟电话线。可以看出,线路交换最主要的特点就是在进行数据交换前需要在一对用户之间建立起一条专用的数据通路(如电话线),在整个数据传输过程中要经过线路建立(如电话员切换线路)、数据传输(如通话)与线路释放(如电话员拔下电线)这三个阶段。
该方式的优点是:通话实时性强,适用于交互式会话类通信,其缺点是:对突发性通信不适合(需要事先建立好物理连接),整个数据交换系统效率低,系统也不具有存储数据的功能,很难实现拥塞控制。

报文交换是指信息以报文(完整数据的一个信息段)为单元进行存储-转发的一种数据交换方式。所谓存储-转发是当报文到达路由器后先存储起来,等待路由器分配资源再进行数据分组的转发
报文交换的原理是用户发送的数据不是直接发送给目的节点,而是先在中间结点进行缓存(这类中间结点通常是由具有存储能力的交换机、路由器承担),然后再由中间结点在线路空闲时把数据发送出去。
既然 具有存储-转发功能,报文交换就无须同时占用整个物理线路,中间结点可以暂存报文,排队等候,当线路空闲时再转发给下一个结点,直至终点

目前最常用的分组交换方式:

在分组交换技术中有两大技术派系:

  1. 采用路由技术(目前比较普遍采用的一种交换方式),在要转发的数据包头部加上源节点目的节点IP地址,然后通过路由技术一级级地把数据转发下去。这种分组方式就是前面说到的数据报分组交换方式
  2. 采用虚电路服务它不依靠路由技术,而是在进行数据分组转发前先在源节点和目的节点间的所有路由器间建立一条虚拟的通信通道,然后再把数据分组从这个虚拟通道中转发到目的节点

分组交换是集报文交换和线路交换两者优点而开发的一种数据交换方式,也采用报文交换的存储-转发机制,并规定了传输数据的单位长度。现在主要采用这种数据方式
当报文过长时,会把报文分成几个组,在数据报服务方式中,会为每个分组添加报文号、分组号、目的地址、源地址和校验字段信息,然后将这些信息发送出去,由通信子网中的节点进行路由选择,当一个报文的所有分组到达了目的主机后,再将各个分组按序号编排起来。
采用虚电路这种服务方式的分组则无须添加源和目的地址信息,但仍需要添加报文号、分组号信息。在分组发送之前,已经搭建好了一条逻辑链路。

4. 网络层协议及报文格式

在TCP/IP体系结构的网际互联层,最重要的协议就是IP协议簇

目前的计算机网络,特别是TCP/IP网络,使用最多的是数据包分组交换方式,而IP协议是用于将多个分组交换网络连接起来的最典型通信协议。IP协议是一个无连接的服务,负责在源地址和目的地址之间传送数据包,然后为了使用不同网络对分组大小的要求,需要对上层传来的报文进行分割,最后调用本地网络协议将数据包传送给下一个网关或目的计算机。

1、IP协议基本功能

IP协议是一个无连接的服务,负责在源地址和目的地址之间传送数据报,其主要功能就是把数据报在互连的网络上传送,将数据报在一个个模块间通过路由处理网络地址传送到目的地址。具体来说具备以下几方面的功能:

  1. 寻址,在不同网络中必须通过三层地址进行寻址。常用的IP网络中运行的三层协议就是IP协议,对应的三层地址就是IP地址。
  2. 数据报的封装,从传输层过来的数据段需要经过IP协议的重封装,而从数据链路层过来的数据帧就需要进行解封装。在IP网络中封装后形成的是IP数据报,IP封装的目的就是标识此IP数据报发送节点和接受节点的IP地址和控制信息。
  3. 分段与重组,不同网络上的链路可以传输的最大报文大小是不同的,这就是我们通常说的MTU(最大传输单元)。尺寸较大的数据报在MTU值较小的网络链路传输需要将数据报分段依次传输,对应的接收方就需要把这些接收到的拆分的分段组合起来,还原成原来的数据报。

2、IPv4数据报格式
计算机网络-网络层_第2张图片

  • 版本,指定IP数据报中使用的IP协议版本,占4位。IPv4对应值为4(0100)
  • 首部长度,指示IP数据报头部的总长度,占4位。IP数据报头部的总长度以4字节为单位(即4字节的整数倍)
  • 区分服务,用于表示数据报的优先级和服务类型,占8位。包括一个3位长度的优先级,4位长度的标志位,最高位未用
  • 总长度,标识整个IP数据报的总长度,包括报头和数据部分,占16位,由此可知IPv4的最大长度为65535(64KB)
  • 标识,用于表示IP数据报的标识符,占16位,每个IP数据报有一个唯一的标识(不是序号)。当数据报分段时,这个标识的值就被复制到所有分段的标识字段中,相同的标识字段值使分段后的数据报分段最后能正确地重组成为原来的数据报。
  • 标志,指出该IP数据报后面是否还有分段,为分段标志,占3位,仅最低位有意义
  • 片偏移,指出该分段在数据报中的相对位置。相对于用户数据字段的起点,该字段从何处开始,占13位
  • 生存时间,标识IP数据报在网络中传输的有效期,以秒来计数,占8位。现在通常认为这个数值是指数据报允许经过的路由器数,当值为0时,就丢弃这个数据报。设定生存时间是为了防止数据报在网络中无限制地循环转发。
  • 协议,用来标识此IP数据报在传输层所采用的协议类型(如TCP、UDP或ICMP等),以便使目的主机的IP层知道应将数据部分上交给哪个处理过程,占8位
  • 首部校验和,用来检验IP数据报的包头部分(不含“数据”部分)在传输到接收端后是否发生了变化,占16位。因为数据报每经过一个路由器,路由器都要重新计算一下报头校验和
  • 源地址/目的地址,分别表示该IP数据报发送者和接收者的IP地址,各站32位
  • 选项,用来支持各种选项,提供扩展余地,后面的填充字段就是为了保证IP数据报的报头是32位的整数倍。

3、IPv4数据报的封装与解封转
发送端网络层生成的IP数据报还要继续向下传输,到达数据链路层就要封装成数据帧了。IP数据报的“帧封装”只需把来自网络层的整个IP数据报(报头和数据部分)当做数据链路层帧的数据部分,然后在前面加上与数据链路层对应的协议头即可。
这里补充前篇数据链路层中没有说到的一点:在以太局域网中,由于数据链路层分成了LLC子层和MAC子层这两层,所以来自网络层的IP数据报在到达数据链路层后先要经过LLC子层和MAC子层的协议头封装,最终形成数据链路层的以太网MAC帧
计算机网络-网络层_第3张图片
数据帧的相关介绍参考博客:数据链路层的主要功能
可以得知,IP数据报无论经过了多少个网络,整个数据报内容都不会变,包括报头部分的源和目的地址信息。变化的只是在不同网络数据链路上传输的帧头信息。

5. ARP与RARP

由于传送ARP分组使用的是IP协议,因此应当把ARP协议划归为网络层。但是ARP协议的用途是为了网络层使用的IP地址解析出在数据链路层使用的硬件地址

IP地址放在IP数据报的首部,硬件地址放在MAC帧首部。在网络层以及网络层以上使用的是IP地址,而在数据链路层以及数据链路层以下使用的是硬件地址。因此在数据链路层看不见数据报的IP地址。

1、基本关系
计算机网络-网络层_第4张图片
2、地址解析协议 ARP的实现过程
不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。每一个主机都设有一个 ARP高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的IP地址到硬件地址的映射表

当主机 A 欲向本局域网上的某个主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的 IP地址。如有,就可查出其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过局域网将该MAC帧发往此硬件地址。
计算机网络-网络层_第5张图片
3、ARP 高速缓存的作用
为了减少网络上的通信量,主机 A 在发送其 ARP请求分组时,就将自己的IP地址到硬件地址的映射写入ARP请求分组。当主机 B 收到A的 ARP请求分组时,就将主机A的这一地址映射写入主机B自己的ARP高速缓存中。这对主机B以后向A发送数据报时就更方便了。

ARP 是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。

如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。

从IP地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。
只要主机或路由器要和本网络上的另一个已知 IP 地址的主机或路由器进行通信,ARP协议就会自动地将该IP地址解析为链路层所需要的硬件地址。

4、使用 ARP 的四种典型情况

  • 发送方是主机,要把IP数据报发送到本网络上的另一个主机。这时用ARP找到目的主机的硬件地址。
  • 发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用ARP找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。
  • 发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用ARP找到目的主机的硬件地址。
  • 发送方是路由器,要把 IP数据报转发到另一个网络上的一个主机。这时用ARP找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。

5、ARP数据报消息格式
网络上的每台主机或设备都有一个或多个IP地址。IP地址是网络层的地址,在网络层,数据被组装成IP包。但是发送IP包需要物理设备的支持(通常是Ethernet设备,在本课程设计中我们指定为Ethernet设备),即发送端必须知道目的物理地址才能将IP包发送出去,所以需要一种将IP地址映射为物理地址的机制。ARP协议就是用来完成这个任务的。ARP协议能够在同一个物理网络中,在给定目的主机或设备的IP地址的条件下,得到目的主机或设备的物理地址。ARP协议的数据包格式如图1所示:
计算机网络-网络层_第6张图片
下面对数据包的各个部分进行说明

  • 硬件类型:指定硬件接口类型。例如,值为1表示Ethernet
  • 协议类型:指定发送方支持的上层协议的类型
  • 物理地址长度:指定物理(硬件)地址的长度
  • 协议地址长度:网络层协议的地址长度。若为IP协议,其值为4
  • 操作:指定ARP的操作类型,例如,1表示ARP请求,2表示ARP应答
  • 源物理地址:指定发送方的IP地址
  • 目的物理地址:指定目的物理地址。
  • 目的IP地址:指定目的IP地址
  • ARP分组必须在数据链路层中被封装成侦,才能发送出去封装

6、ARP协议工作流程

  1. 首先,每台主机都会在自己的ARP缓冲区( ARP Cache )中建立一个ARP列表,以表示IP地址和MAC地址的对应关系。
  2. 当源主机需要将一个数据包要发送到目的主机时,会首先检查自己ARP列表中是否存在该IP地址对应的MAC地址,如果有﹐就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。
  3. 网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个ARP响应数据包,告诉对方自己是它需要查找的MAC地址;
  4. 源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

7、逆地址解析协议 RARP

现在的DHCP协议已经包含了RARP的功能。

逆地址解析协议 RARP 使只知道自己硬件地址的主机能够知道其 IP地址。
这种主机往往是无盘工作站。 因此 RARP协议目前已很少使用。

8、RARP工作原理

  1. 网络上的每台设备都会有一个独一无二的硬件地址,通常是由设备厂商分配的MAC地址。PC1从网卡上读取MAC地址,然后在网络上发送一个RARP请求的广播数据包,请求RARP服务器回复该PC的IP地址。
  2. RARP服务器收到了RARP请求数据包,为其分配IP地址,并将RARP回应发送给PC1。
  3. PC1收到RARP回应后,就使用得到的IP地址进行通讯。

ARP和RARP请求是广播方式,应答都是单播方式

6. 国际控制报文协议ICMP

ICMP协议(Internet Control Message Protocol,控制报文协议)
ICMP的报文格式如下图
计算机网络-网络层_第7张图片

  • 8位类型字段用于区分报文类型。它将ICMP报文分为两大类:
    1.差错报文:主要用于回应网络错误,比如目标不可到达(类型值为3)和重定向(类型值为5)
    2.查询报文:用于查询网络信息,比如ping命令就是使用ICMP报文查看目标是否可到达(类型值为8)的
  • 有的类型通过8位代码字段来进一步细分不同的条件:
    比如重定向报文使用代码值0表示对网络重定向,代码值1表示对主机重定向
  • ICMP报文使用16位校验和字段对整个报文(包括头部和内容部分)进行CRC校验(循环冗余校验),以校验报文是否损坏

ICMP协议的主要用途

  • 确认IP包是否到达目的地址
  • 通知发送过程中IP包被丢弃的原因
  • ICMP也是基于IP协议工作的,所以它并不是严格意义上的网络层协议(一般来说,上层协议使用下层协议服务),但是它并不是传输层的功能,因此被归为网络层协议
  • ICMP只能搭配IPv4工作,如果是IPv6,需要使用ICMPv6
    计算机网络-网络层_第8张图片
    接收主机根据这两个信息就可以断定引起重定向的IP数据报应该使用哪个路由器来转发,并且以此来更新路由表(通常是更新路由表缓冲,而不是直接更改路由表)。一般来说,主机只能接收ICMP重定向报文,路由器只能发送ICMP重定向报文
    ICMP重定向同样能够更新路由表。

ping命令
ping (Packet Internet Groper),因特网包探索器,用于测试网络连接量的程序。ping发送一个ICMP回声请求消息(ICMP Echo Request)给目的地并报告是否收到,所希望的ICMP回声应答(ICMP Echo Reply)。它是用来检查网络是否通畅或者网络连接速度的命令。

ping命令通常用来作为网络可用性的检查。ping命令可以对一个网络地址发送测试数据包,看该网络地址是否有响应并统计响应时间,以此测试网络
计算机网络-网络层_第9张图片

  • ping命令ping的是域名,不是url,域名可以被解析成IP地址,或者还可以直接ping IP地址
  • ping命令不光能验证网络的连通性,同时也会统计响应时间和TTL(生存时间,初始64,每经过一个节点就-1)
  • ping命令会先发送一个ICMP Echo Request给对端
  • 对端收到之后,会返回一个ICMP Echo Reply

ping命令不是一个端口,ping命令基于ICMP,是在网络层(ping命令是应用层的命令,ICMP在网络层),而端口号是传输层的内容,在ICMP根本不关心这样的东西

你可能感兴趣的:(计算机网络,计算机网络网络层,IP协议族,ICMP,Ping,ARP)