网络五层协议之三——网际层

4.1网络层提供的两种服务

网络层关注的是如何将分组从源端沿着网络路径送达目的地址

在计算机网络领域,网络层应该向运输层提供怎样的服务(“面向连接” 还是 “无连接”)曾引起了长期的争论。争论焦点的实质就是:**在计算机通信中,可靠交付应当由谁来负责?**端系统吗?

两种服务:网络层应该向运输层提供怎样的服务?

  • 虚电路服务
  • 数据报服务

4.1.1虚电路服务

虚电路表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而并不是真正建立了一条物理连接。

注意:电路交换的电话通信是先建立了一条真正的连接。因此分组交换的虚连接和电路交换的连接只是类似,但并不完全一样。

image.png

H1发送给H2的所有分组都沿着同一条虚电路传送。

4.1.2数据报服务

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

网络在发送分组时不需要先建立连接。每一个分组(即IP数据报)独立发送,与其前后的分组无关(不进行编号)。

网络层不提供服务质量的承诺。即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),当然也不保证分组传送的时限。

尽最大努力交付的好处:

  • 由于传输网络不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较)。
  • 如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的主机中的运输层负责(包括差错处理、流量控制等)。
  • 采用这种设计思想的好处是:网络的造价大大降低,运行方式灵活,能够适应多种应用。
  • 因特网能够发展到今日的规模,充分证明了当初采用这种设计思想的正确性。

image.png

对比的方面 虚电路付服务 数据报服务
思路 可靠通信应当由网络来保证 可靠通信应当由用户主机来保证
连接的建立 必须有 不需要
终点地址 仅在连接建立阶段使用,每个分组使用短的虚电路号 每个分组都有终点的完整地址
分组的转发 属于同一条虚电路的分组均按照同一路由进行转发 每个分组独立选择路由进行转发
当结点出现故障时 所有通过出故障的结点的虚电路均不能工作 出故障的节点可能会丢失分组,一些路由可能会发生变化
分组的顺序 总是按发送顺序到达终点 到达终点时不一定按发送顺序
端到端的差错处理和流量控制 可以由网络负责,也可以由用户主机负责 由用户主机负责

4.2虚拟互联网

4.2.1网络互连设备

中间设备又称为中间系统或中继(relay)系统

  • 物理层中继系统:转发器
  • 数据链路层中继系统:网桥或交换机
  • 网络层中继系统:路由器
  • 网络层以上的中继系统:网关(路由器接口的地址)

4.2.2网络互连的问题

互连在一起的网络要进行通信,会遇到许多问题需要解决,如:

  • 不同的寻址方案
  • 不同的最大分组长度
  • 不同的网络接入机制
  • 不同的超时控制
  • 不同的差错恢复方法
  • 不同的状态报告方法
  • 不同的路由器选择技术
  • 不同的用户接入控制
  • 不同的服务(面向连接服务和无连接服务)
  • 不同的管理与控制方式

4.2.3互连网络与虚拟互连网络

image.png

(1)虚拟互连网络的意义
  • 所谓虚拟互连网络也就是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用IP协议就可以使这些性能各异的网络从用户看起来好像是一个统一的网络
  • 使用IP协议的虚拟互连网络可简称为IP网
  • 使用虚拟互连网络的好处是:当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互连的各具体的网络异构细节
(2)IP协议简介

网际协议IP是TCP/IP 体系中两个最主要的协议之一。与IP协议配套使用的还有四个协议

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

image.png

4.3 IP层次结构

4.3.1层次化IP地址

(1)层次化IP地址将32位的IP地址分为网络ID和主机ID。

网络地址(也可以称为网络号)唯一指定了每个网络。同一个网络中的每台计算机都共享相同的网络地址,并用它作为自己IP地址的一部分。

image.png

  • A类地址第1位是0
  • B类地址前2位是10
  • C类地址前3位是110
  • D类地址前4位是1110
  • E类地址前4位是1111

(2)特殊的几个地址

  1. 本地环回地址:127.0.0.1
  2. windows系统把地址设置为自动获得IP后,如果没有分配成功,就用预设的IP,但是使用它不能访问其他网站,即不能上网:169.254.0.0
  3. 私有地址,保留的A类地址,可以给企业或学校使用:10.0.0.0
  4. 私有地址,保留的32个B类地址:172.16.0.0~172.31.0.0
  5. 私有地址,保留255个C类地址:192.168.0.0~192.168.255.0

互联网不能访问到私有地址

4.3.2子网掩码的作用

子网掩码又叫网络掩码、地址掩码,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用(子网掩码和IP地址进行“与”运算)。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分

主机不能全为0或全为1:全0表示这个网段,全1表示广播

4.3.3无分类编址CIDR

历史概述

早在1987年,RFC1009就指明了在一个划分子网的网络中可同时使用几个不同子网掩码。使用变长子网掩码VLSM可进一步提高IP地址资源利用率

CIDR是在变长子网掩码的基础上进一步研究得到。

在1992年,B类地址已经分配了将近一半了,为了解决地址耗尽的问题,IETF研究出无分类编址的方法。

CIDR最主要的特点有两个:

(1)CIDR消除了传统的A类、B类和C类地址以及划分子网的概念,因此能更加有效地分配IPv4的地址空间。

CIDR把32位的IP地址划分为前后两个部分,前面部分是 “网络前缀” ,用来指明网络,后面部分则用来指明主机。因此CIDR使IP地址从三级编址(使用子网掩码)又回到了二级编址。其记法是:

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

CIDR还使用 “斜线记法”,或称为CIDR记法,即在IP地址后面加上斜线 “/”,然后写上网络前缀所占的位数。

(2)CIDR 把网络前缀都相同的连续的IP地址组成一个 “CIDR地址块”。

我们只要知道CIDR地址块中的任何一个地址,就可以知道这个地址块的起始地址(即最小地址)和最大地址

4.3.4MAC地址

MAC地址决定下一跳给谁,IP地址决定终点地址。

(1)ARP协议

负责把IP地址解析成MAC地址,靠广播

image.png

(2)ARP欺骗

比如路由器M1、M2、M3,M1和M2通信,按理说应该是直接通信的,但是在M1获取M2MAC地址时,M3用自己的地址把M2的地址覆盖了;同样,在M2获取M1 MAC地址时,M3用自己的地址把M1的地址覆盖了;这时M1、M2通信的数据包都发到了M3,然后M3再转发到M2、M1,这就是ARP欺骗。

(3)如何识别ARP欺骗

用arp -a查看解析的MAC地址是否和没问题的机器一样,如果不一样就是ARP欺骗

(4)如果路由器缓存了一个错误的MAC地址,怎么解决

用网络诊断/修复,会把所有的缓存清除

(5)逆向ARP

MAC地址申请IP地址

4.3.5 IP数据报首部的字段

image.png

4.3.5 IP转发分组的流程

数据路由:路由器在不同网段转发数据报

网络畅通的条件:能去能回

沿途的路由器必须知道到目标IP地址网络(源IP地址网络)下一跳给哪个接口

4.4网际控制报文协议ICMP

4.4.1概述

为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP。ICMP允许主机或路由器报告差错情况和提供相关异常情况的报告

ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。

image.png

4.4.2ICMP报文的种类

ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文

ICMP报文的前4个字节是统一的格式,共有3个字段:类型、代码和检验和。接着的4个字节的内容与ICMP的类型有关。最后面的数据字段,其长度取决于ICMP的类型。

(1)差错报告报文

以下是几种常用的ICMP报文类型

ICMP报文类型 类型的值 ICMP报文的类型
差错报告报文 3 终点不可达
差错报告报文 11 时间超过
差错报告报文 12 参数问题
差错报告报文 5 改变路由(Redirect)
询问报文 8或0 回送(Echo)请求或回答
询问报文 13或14 时间戳(Timestamp)请求或回答

注意:IP数据报首部的检验和并不检验IP数据报的内容,因此不能保证结果传输的ICMP报文不产生差错

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

(2)时间超过:当路由器收到生存时间为0的数据报时,除了丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。

(3)参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。

(4)改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器

ICMP差错报告报文的组成:

所有的ICMP差错报告报文中的数据字段都具有统一的格式。把收到的需要进行差错报告的IP数据报的首部和数据字段的前8个字节提取出来,作为ICMP报文的数据字段。再加上相应的ICMP差错报告报文的前8个字节,就构成了ICMP差错报告报文。

提取收到的数据报的数据字段前8个字节是为了得到运输层的端口号(对于TCP和UDP),以及运输层报文的发送序号(对于TCP)。

下面几种情况不应发送ICMP差错报告报文

  • 对ICMP差错报告报文,不再发送ICMP差错报告报文。
  • 对第一个分片的数据报文的后续数据报片,都不发送ICMP差错报告报文。
  • 对具有多播地址的数据报,都不发送ICMP差错报告报文。
  • 对具有特殊地址(如127.0.0.1或0.0.0.0)的数据报,不发送ICMP差错报告报文。
(2)询问报文

常用的ICMP询问报文有两种,即:

1.回送请求和回答:ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。这种询问报文用来测试目的站是否可达以及了解其相关的状态

2.时间戳请求和回答:ICMP时间戳请求报文是某台主机或路由器回答当前的日期和时间。在ICMP时间戳回答报文中有一个32位的字段,其中写入的整数代表从1900年1月1日期到当前时刻一共有多少秒。时间戳请求与回答可用于时钟同步和时间测量。

4.4.3 ICMP的应用举例

(1)分组网间探测PING

用来测试两台主机之间的连通性。

PING(Packet InterNet Groper)使用了ICMP 回送请求和回答报文。PING是应用层直接使用网络层ICMP的一个例子。它没有通过TCP或UDP

工作流程

比如一台PC通过PING命令访问百度的主机baidu.com,进行连通性的测试。PC一连发送了四个ICMP回送请求报文。如果百度服务器工作正常,而且响应这个ICMP回送请求报文,那么它就发回ICMP回送回答报文

由于往返的ICMP报文上都有时间戳,因此很容易得出往返时间。

(2)tracert

作用:用来跟踪一个分组从源点到终点的路径。

在UNIX操作系统是:traceroute,在Windows操作系统是:tracert。

工作原理

tracert从源主机向目的主机发送一连串的IP数据报,数据报中封装的是无法交付的UDP用户数据报。第一个数据报P1的生存时间TTL设置为1.当P1到达路径上的第一个路由器R1时,路由器R1先收下它,接着把TTL减一。由于TTL等于零,R1就把P1丢弃了,并向源主机发送一个ICMP时间超过出错报告报文

源主机接着发送第二个数据报P2,并把TTL设置为2,。P2先到达路由器R1。R1收下后把TTL减一再转发给路由器R2。R2收到P2时TTL为1,但减一后TTL变为零了。R2就丢弃P2,并向源主机发送一个ICMP时间超过出错报告报文。就这样一直继续下去。当最后一个数据报刚刚到达目的主机时,数据报的TTL是1。主机不转发数据报,也不把TTL值减一。但因IP数据报中封装的是无法交付的运输层的UDP用户数据报,因此目的主机要向源主机发送ICMP终点不可达出错报告报文

这样,源主机达到了自己的目的,因为这些路由器和最后目的主机发来的ICMP报文正好给出了源主机想知道的路由信息——达到目的主机所见过的路由器的IIP地址,以及到达其中的每一个路由器的往返时间。

4.5虚拟专用网VPN

引用文章:

基本功能

虚拟专用网络(VPN)的功能是:**在公用网络上建立专用网络,进行加密通讯。**在企业网络中有广泛应用。**VPN网关通过对数据包的加密和数据包目标地址的转换实现远程访问。**可通过服务器、硬件、软件等多种方式实现。

工作原理

image.png

  • 通常情况下,VPN网关采取双网卡结构,外网卡使用公网IP接入Internet。

  • 网络一(假定为公网internet)的终端A访问网络二(假定为公司内网)的终端B,其发出的访问数据包的目标地址为终端B的内部IP地址。

  • 网络一的VPN网关在接收到终端A发出的访问数据包时对其目标地址进行检查,如果目标地址属于网络二的地址,则将该数据包进行封装,封装的方式根据所采用的VPN技术不同而不同,同时VPN网关会构造一个新VPN数据包,并将封装后的原数据包作为VPN数据包的负载,VPN数据包的目标地址为网络二的VPN网关的外部地址。

  • 网络一的VPN网关将VPN数据包发送到Internet,由于VPN数据包的目标地址是网络二的VPN网关的外部地址,所以该数据包将被Internet中的路由正确地发送到网络二的VPN网关

  • 网络二的VPN网关对接收到的数据包进行检查,如果发现该数据包是从网络一的VPN网关发出的,即可判定该数据包为VPN数据包,并对该数据包进行解包处理。解包的过程主要是先将VPN数据包的包头剥离,再将数据包反向处理还原成原始的数据包

  • 网络二的VPN网关将还原后的原始数据包发送至目标终端B,由于原始数据包的目标地址是终端B的IP,所以该数据包能够被正确地发送到终端B。在终端B看来,它收到的数据包就和从终端A直接发过来的一样。

  • 从终端B返回终端A的数据包处理过程和上述过程一样,这样两个网络内的终端就可以相互通讯了。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享