网络层介于传输层和数据链路层之间,其主要作用是实现两个网络系统之间的数据透明传送,具体包括路由选择,拥塞控制和网际互连等。网络层是网络与网络之间通信的最底层,在数据从数据链路层向传输层进行数据传输的通信中,起到构建一个中间通信子网的作用。不同网络有这不同的网络层协议和地址规范,如果一个网络中的用户不能识别其他网络的通信协议和地址规范,那么这两个网络之间就不能进行数据通信,就好比不同国家有着不同的交通法规,属于不同的交警系统管理,不允许他国车辆随便出入一样。不同网络也有不同的设计规范,属于不同的组织来管理,必须通过授权,并由专门的协议来负责网络间的通信。如果只是同一局域网内的各个计算机之间的通信,单靠物理层和数据链路层就可以建立通信链路完成用户间的数据通信,但要扩大应用范围,连接不同的局域子网,就需要借助网络层处理各个网络子网的协议,从而进行计算机的网络互连,所以网络层在TCP/IP协议体系中叫网际互连层。
从一般的概念来讲,将网络互相连起来的要使用一些中间设备。根据中间设备所在的层次,可以有以下四种不同的中间设备:
(1)物理层使用的中间设备叫转发器(repeater)
(2)数据链路层使用的中间设备叫做网桥或者桥接器(bridge)
(3)网络层使用的中间设备叫做路由器(router)
(4)在网络层以上使用的中间设备叫做网关(gateway)。用网关连接两个不兼容的系统需要在高层进行协议转换。
通常一个计算机网络就是一个管理边界,一般是属于一个特定的公司,有一个特定的管理者负责,所以在进行计算机网络互连时,要同时考虑两方面的问题:一是授权用户可以在不同网络间互访,共享双方的资源;另一方面又要保持各计算机网络管理原来的独立性。从前面介绍的数据链路层,我们知道不同用户之间进行通信,首先得知道彼此的地址,局域网内部的用户访问(物理层和数据链路层就可以构建一个局域网)是通过MAC地址进行,但不同网络之间进行访问不同通过属于数据链路层地址的MAC地址来进行寻址,这需要网络层对应的一个网络地址来进行访问,每个网络都通过其网络地址,即NSAP(网络服务访问点)来标识,网络中的每个节点都有一个NSAP。这个NSAP就是由对应网络所运行的网络层通信协议来定义的,在目前最常见的TCP/IP协议网络中,这个协议就是IP协议,对应的NSAP就是IP地址。
在物理层传输的是一个个比特位(bit),在数据链路层中传输的是一个个以许多字节为单位的帧(Frame),在每个帧的帧头都有源节点的MAC地址和目的节点的MAC地址,局域网内部的寻址就是通过MAC地址进行的,而在网络层中传输的是数据报(Packet,也叫分组),一个数据报是一个数据帧经过网络层协议重封装后得到的,每个数据报的报头(IP头)都有源节点和目的节点的IP地址,网路间的寻址就是通过IP地址进行的。这样我们知道网络通信只有两种情况:如果通信双方在同一个局域网内,可直接通过数据链路层进行相互通信,但因为主机其实也有网络层的路由功能,所以两台主机间进行网络通信时通常也是通过三层来进行的(IP协议则是IP地址寻址);如果通信双方在不同网络内,毫无疑问必须通过三层进行。事实上,网络层的IP包到达链路层后还要重封装成帧,因为不同网络中的统一标识就是三层地址(网络地址),局域网内链路层的则是MAC地址。所以不同层传输的数据包格式不一样,因为每层的标识不一样。网络层的IP包封装成帧后,其中封装的源和目的网络地址作为帧的数据部分,不会改变,这在前面的数据链路层中有介绍。
在网络体系中,每一层都是服务于对应的上下层的,网络层也是,服务于上层的传输层和下层的数据链路层。其主要作用表现在一下几个方面:
1、屏蔽网络差异,提供透明传输
不同网络有不同的规范要求,网络层就是为了解决这种不同差异,寻找一个不同网络间都能共同遵守的网络通信规范,以便不同网络间能相互识别,并接受对方的网络请求,说白了,就是一个中转站的作用,两个毫无交集的网络通过这个中转站来建立交集。这样传输层就可以在不同网络间进行透明数据传输。网络层向传输层提供的服务有两类:面向连接的网络服务和无连接的网络服务。
2、为网络间通信提供路由选择
路由选择也叫路由选择,是根据一定的原则和路由选择算法在多个结点的通信子网中选择一条到达目的节点的最佳路径的过程。确定路由选择的策略成为路由算法。在无连接的数据包服务中,网络节点要为每个数据包做出路由选择,即选择到达目的节点的最佳路线,而在面向连接的虚电路服务中,存在一条专们的逻辑线路,在建立连接时就已经确定了路有路径,无需额外选择。
3、数据包封装和解封装
这个类似的功能各个网络层都提供,因为在网络体系结构的不同层次中传输的数据单位并不一样,且发送方和接收方接受数据包的路径是相反的。在发送方,数据自上而下每经过一层都必须在数据头部添加对应层的协议头和(或)协议尾信息,到了接收方,数据自下而上每经过一层又都必须解除前面那层所封装的协议头和(或)协议尾信息。
在发送方,来自传输层的报文通常是已根据对应网络链路的MTU(最大传输单元)被分成多个数据段,然后在网络层中对这些数据段头部添加一些网络层协议控制信息就组成了数据包,这就是包的封装过程。数据包的头部包含源节点和目标节点的网络层地址,在接收方,数据从底层到达网络层时,要去掉在数据链路层加上的数据链路层协议控制信息(帧头和帧尾),还原出原来的数据包格式,这就是包的解封转过程。
4、拥塞控制
拥塞控制是为了避免网络传输路径中数据的传输延迟或死锁。数据链路层中的流量控制功能,是针对数据链路中点对点传输速率的控制,这里的拥塞控制是针对在网络层传输路径中的端到端传输效率的控制。主要采用预约缓冲区、许可证和分组丢弃等方式。
在网络层中,路由器把数据包转发到另一个网络中的目的节点。在计算机网络中,两个端点之间通常需要通过中间结点实现数据通信,这些中间结点并不关心数据内容,只提供一个交换设备,把数据从一个结点转发到另一个结点,直至达到目的端。
数据交换技术主要是指网络中间结点所提供的数据交换功能。
先介绍以前的两种数据交换技术:线路交换和报文交换
线路交换是在网络中利用可切换的物理通信线路直接连接通信双方所进行的一种数据交换方式。最常见的就是以前的电话交换系统,甲先转几下电话机(谍战电视剧里是这样子),实际上是打到了电话交换系统,然后说转局长办公室,这样电话员就把电话线插到局长办公室的线路上,这样就可以进行通信了,通话结束后,电话员就拔下这跟电话线。可以看出,线路交换最主要的特点就是在进行数据交换前需要在一对用户之间建立起一条专用的数据通路(如电话线),在整个数据传输过程中要经过线路建立(如电话员切换线路)、数据传输(如通话)与线路释放(如电话员拔下电线)这三个阶段。
该方式的优点是:通话实时性强,适用于交互式会话类通信,其缺点是:对突发性通信不适合(需要事先建立好物理连接),整个数据交换系统效率低,系统也不具有存储数据的功能,很难实现拥塞控制。
报文交换是指信息以报文(完整数据的一个信息段)为单元进行存储-转发的一种数据交换方式。所谓存储-转发是当报文到达路由器后先存储起来,等待路由器分配资源再进行数据分组的转发。
报文交换的原理是用户发送的数据不是直接发送给目的节点,而是先在中间结点进行缓存(这类中间结点通常是由具有存储能力的交换机、路由器承担),然后再由中间结点在线路空闲时把数据发送出去。
既然 具有存储-转发功能,报文交换就无须同时占用整个物理线路,中间结点可以暂存报文,排队等候,当线路空闲时再转发给下一个结点,直至终点。
目前最常用的分组交换方式:
在分组交换技术中有两大技术派系:
分组交换是集报文交换和线路交换两者优点而开发的一种数据交换方式,也采用报文交换的存储-转发机制,并规定了传输数据的单位长度。现在主要采用这种数据方式。
当报文过长时,会把报文分成几个组,在数据报服务方式中,会为每个分组添加报文号、分组号、目的地址、源地址和校验字段信息,然后将这些信息发送出去,由通信子网中的节点进行路由选择,当一个报文的所有分组到达了目的主机后,再将各个分组按序号编排起来。
采用虚电路这种服务方式的分组则无须添加源和目的地址信息,但仍需要添加报文号、分组号信息。在分组发送之前,已经搭建好了一条逻辑链路。
在TCP/IP体系结构的网际互联层,最重要的协议就是IP协议簇。
目前的计算机网络,特别是TCP/IP网络,使用最多的是数据包分组交换方式,而IP协议是用于将多个分组交换网络连接起来的最典型通信协议。IP协议是一个无连接的服务,负责在源地址和目的地址之间传送数据包,然后为了使用不同网络对分组大小的要求,需要对上层传来的报文进行分割,最后调用本地网络协议将数据包传送给下一个网关或目的计算机。
1、IP协议基本功能
IP协议是一个无连接的服务,负责在源地址和目的地址之间传送数据报,其主要功能就是把数据报在互连的网络上传送,将数据报在一个个模块间通过路由处理网络地址传送到目的地址。具体来说具备以下几方面的功能:
3、IPv4数据报的封装与解封转
发送端网络层生成的IP数据报还要继续向下传输,到达数据链路层就要封装成数据帧了。IP数据报的“帧封装”只需把来自网络层的整个IP数据报(报头和数据部分)当做数据链路层帧的数据部分,然后在前面加上与数据链路层对应的协议头即可。
这里补充前篇数据链路层中没有说到的一点:在以太局域网中,由于数据链路层分成了LLC子层和MAC子层这两层,所以来自网络层的IP数据报在到达数据链路层后先要经过LLC子层和MAC子层的协议头封装,最终形成数据链路层的以太网MAC帧。
数据帧的相关介绍参考博客:数据链路层的主要功能
可以得知,IP数据报无论经过了多少个网络,整个数据报内容都不会变,包括报头部分的源和目的地址信息。变化的只是在不同网络数据链路上传输的帧头信息。
由于传送ARP分组使用的是IP协议,因此应当把ARP协议划归为网络层。但是ARP协议的用途是为了网络层使用的IP地址解析出在数据链路层使用的硬件地址。
IP地址放在IP数据报的首部,硬件地址放在MAC帧首部。在网络层以及网络层以上使用的是IP地址,而在数据链路层以及数据链路层以下使用的是硬件地址。因此在数据链路层看不见数据报的IP地址。
1、基本关系
2、地址解析协议 ARP的实现过程
不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。每一个主机都设有一个 ARP高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的IP地址到硬件地址的映射表。
当主机 A 欲向本局域网上的某个主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的 IP地址。如有,就可查出其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过局域网将该MAC帧发往此硬件地址。
3、ARP 高速缓存的作用
为了减少网络上的通信量,主机 A 在发送其 ARP请求分组时,就将自己的IP地址到硬件地址的映射写入ARP请求分组。当主机 B 收到A的 ARP请求分组时,就将主机A的这一地址映射写入主机B自己的ARP高速缓存中。这对主机B以后向A发送数据报时就更方便了。
ARP 是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。
如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。
从IP地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。
只要主机或路由器要和本网络上的另一个已知 IP 地址的主机或路由器进行通信,ARP协议就会自动地将该IP地址解析为链路层所需要的硬件地址。
4、使用 ARP 的四种典型情况
5、ARP数据报消息格式
网络上的每台主机或设备都有一个或多个IP地址。IP地址是网络层的地址,在网络层,数据被组装成IP包。但是发送IP包需要物理设备的支持(通常是Ethernet设备,在本课程设计中我们指定为Ethernet设备),即发送端必须知道目的物理地址才能将IP包发送出去,所以需要一种将IP地址映射为物理地址的机制。ARP协议就是用来完成这个任务的。ARP协议能够在同一个物理网络中,在给定目的主机或设备的IP地址的条件下,得到目的主机或设备的物理地址。ARP协议的数据包格式如图1所示:
下面对数据包的各个部分进行说明
6、ARP协议工作流程
7、逆地址解析协议 RARP
现在的DHCP协议已经包含了RARP的功能。
逆地址解析协议 RARP 使只知道自己硬件地址的主机能够知道其 IP地址。
这种主机往往是无盘工作站。 因此 RARP协议目前已很少使用。
8、RARP工作原理
ARP和RARP请求是广播方式,应答都是单播方式
ICMP协议(Internet Control Message Protocol,控制报文协议)
ICMP的报文格式如下图
ICMP协议的主要用途
ping命令
ping (Packet Internet Groper),因特网包探索器,用于测试网络连接量的程序。ping发送一个ICMP回声请求消息(ICMP Echo Request)给目的地并报告是否收到,所希望的ICMP回声应答(ICMP Echo Reply)。它是用来检查网络是否通畅或者网络连接速度的命令。
ping命令通常用来作为网络可用性的检查。ping命令可以对一个网络地址发送测试数据包,看该网络地址是否有响应并统计响应时间,以此测试网络。
ping命令不是一个端口,ping命令基于ICMP,是在网络层(ping命令是应用层的命令,ICMP在网络层),而端口号是传输层的内容,在ICMP根本不关心这样的东西