网络层重要知识(面试、复试、期末)

网络层

  • 一.概述
  • 二.网络层IP协议
    • 2.1 IP协议详解
      • 2.1.1 虚拟互联网络
      • 2.1.2 IP协议
      • 2.1.3 IP首部
    • 2.2 子网划分
      • 2.2.1 分类的IP地址
      • 2.2.2 划分子网
        • 2.2.2.1 问题引入
        • 2.2.2.2 子网划分
        • 2.2.2.3 子网掩码
      • 2.2.3 无分类编制CIDR
        • 2.2.3.1 相关概念
        • 2.2.3.2 斜线记法
    • 2.3 简单路由过程
      • 2.3.1 IP协议的转发流程
        • 2.3.1.1 路由表的简介
        • 2.3.1.2 转发流程
    • 2.4 网络地址转换NAT技术
      • 2.4.1 内部网关和外部网关
      • 2.4.2 NAT技术
  • 三.网络层其他协议
    • 3.1 ARP协议与RARP协议
      • 3.1.1 ARP协议
      • 3.1.2 RARP协议
    • 3.2 ICMP协议
      • 3.2.1 ICMP 协议详解
      • 3.2.2 ICMP 协议应用
        • 3.2.2.1 Ping应用
        • 3.2.2.1 Traceroute应用
    • 3.3 小结
  • 四.外部网关路由协议
    • 4.1 路由的概述
      • 4.1.1 路由算法的本质
      • 4.1.2 自治系统
    • 4.2 内部网关路由协议
      • 4.2.1 RIP协议
        • 4.2.1距离矢量(DV)算法
      • 4.2.2 RIP协议的过程
      • 4.2.3 OSPF协议
    • 4.3 外部网关路由协议

一.概述

首先明确数据链路层所在网络层次的位置:
在OSI七层模型中处于自底向上第三层,在数据链路层上面;在TCP/IP四层模型中处于自底向上第二层在网络接口层之上。
路由器最上层的协议就是网络层。网络层主要解决数据路由——决定数据在网络的路径。数据链路层只可以解决相邻结点的的数据传输,不能解决跨结点的数据传输,网络层就是解决这一问题的。

二.网络层IP协议

2.1 IP协议详解

2.1.1 虚拟互联网络

因为实际的计算机网络是错综复杂的,所以物理设备通过使用IP协议,屏蔽了物理网络之间的差异。当网络中的主机使用IP协议连接时,则无需关注网络细节,将实际的网络拓扑看作一个虚拟的互连网络整体。
IP协议在虚拟化过程中起到重要作用

2.1.2 IP协议

IP协议的作用:

  • IP协议使得复杂的实际网络变为一个虚拟互连的网络。
  • IP协议使得网络层可以屏蔽底层细节而专注网络层的数据转发(不需要清楚经过海底电缆还是陆上光纤之类的设备)。
  • IP协议解决了在虚拟网络中数据报传输路径的问题(IP协议向上为用户提供虚拟互联网络,向下解决了传输路径的问题)。

IP地址:32位,常使用点分十进制来表示。网络中每一个网络设备的标识,是可变的。

IP数据报:帧的数据。由IP首部和IP数据报的数据两部分组成。

2.1.3 IP首部

  • 4位版本:指的是IP协议的版本,通信双方的版本必须一致。当前主流版本是4,即IPv4。也有IPv6。
  • 4位首部位长度:最大数值为15,表示的是IP首部长度,单位是“32位字”(4个字节),也即是IP首部最大长度为60字节。
  • 8位服务类型
  • 16位总长度:最大数值为65535字节,表示的是IP数据报总长度(IP首部+IP数据)。MTU一般为1500字节,实际传输时候如果IP数据报比MTU大,数据链路层会对IP数据报分片。
  • 16位标识
  • 3位标志:目前只有2位有效,标记IP数据报是否可以分片。
  • 13位片偏移:IP数据报分片的话,保存第几个偏移的IP数据。
  • 8位生存时间(TTL):表明IP数据报文在网络中的寿命,每经过一个设备,TTL减1,当TTL=0时,网络设备必须丢弃该报文。当报文找不到终点时,防止它在网络中无止境地传输消耗网络带宽。
  • 8位协议:表明IP数据所携带的具体数据是什么协议(如: TCP、UDP等)。
  • 16位首部校验和:校验IP首部是否有出错。
  • 32位源IP地址
  • 32位目的IP地址
  • 选项(可选)

2.2 子网划分

IP地址有接近232个,直接规划和分配IP地址非常麻烦。因此我们要先对IP地址做一个分类。

2.2.1 分类的IP地址

分类之前先将IP地址分为网络号和主机号两部分。

网络号 主机号 备注
A类 24 首位为0
B类 16 16 首2位10
C类 24 8 首3位110

特殊的主机号:

  • 主机号全0表示当前网络段,不可分配为特定主机。
  • 主机号为全1表示广播地址(广播地址就是向该地址发送数据报,数据报会发送给当前网络段的所有主机),向当前网络段所有主机发消息,不可分配为特定主机。

特殊的网络号:

  • A类地址网络段全0(00000000)表示特殊网络,不可使用。
  • A类地址网络段后7位全1(01111111:127)表示回环地址,不可使用。
  • B类地址网络段(10000000.00000000:128.0)是不可使用的。
  • C类地址网络段(192.0.0)是不可使用的

根据上述两的特殊的主机号和网络号可以得下表:

最小网络号 最大网络号 子网数量 最小主机号 最大主机号 主机数量
A类 1 126 27-2 0.0.1 255.255.254 224-2
B类 128.1 191.255 214-1 0.1 255.254 216-2
C类 192.0.1 223.255.255 221-1 1 254 28-2

注:127.0.0.1,通常被称为本地回环地址(Loopback Address),不属于任何一个有类别地址类。它代表设备的本地虚拟接口,所以默认被看作是永远不会宕掉的接口。在Windows操作系统中也有相似的定义,所以通常在安装网卡前就可以ping通这个本地回环地址。一般都会用来检查本地网络协议、基本数据接口等是否正常的。

2.2.2 划分子网

2.2.2.1 问题引入

问题1:某公司拥有100名员工,每人配备-一个计算机,请问该公司应该申请哪种网络段?
答:C类地址拥有254个,够公司用,而且节省IP地址,所以申请C类网址。eg:193.10.10.0.
问题2:某公司拥有256名员工,每人配备一个计算机,请问该公司应该申请哪种网络段?
答:同上,申请B类地址。eg:190.17.0.0。
可以看出这种分配方法会浪费很大的地址空间,所以引入子网划分的概念。

2.2.2.2 子网划分

对于子网划分,IP地址由网络号、子网号和主机号三部分组成。eg:将193.10.10.0分为两个子网,193.10.10.00000000和193.10.10.10000000,加粗部分位子网号。划分子网可申请可节省IP地址。
比如前文问题1:193.10.10.128。
如此划分子网号会非常多,如何快速判断某个IP的网络号?

2.2.2.3 子网掩码

子网掩码和IP地址一样,都是32位;子网掩码由连续的1和连续的0组成;某一个子网的子网掩码具备网络号位数个连续的1。

子网掩码
A类 255.0.0.0
B类 255.255.0.0
C类 255.255.255.0

子网掩码与子网划分的IP地址进行与运算,根据得到的结果就可以快速判断某个IP属于哪个网络号。

2.2.3 无分类编制CIDR

2.2.3.1 相关概念

CIDR中没有A、B、C类网络号、和子网划分的概念,CIDR将网络前缀相同的IP地址称为一个“CIDR地址”,其中网络前缀位数是任意的。相比子网划分更加灵活。
对于CIDR而言,IP地址被分为网络前缀和主机号两部分

2.2.3.2 斜线记法

eg:193.10.10.129/25,网络前缀25位,主机号7位。

前文问问题一可申请:193.10.10.128/25
扩展问题1:某公司增加了100名员工,并且拆分成两个部门。
答:两组前缀/25,为小型网络,称为子网;上一级/24(可能是/24),为中型网络,称为超网。

2.3 简单路由过程

2.3.1 IP协议的转发流程

逐跳(hop-by-hop):发送端的IP数据报是一跳一跳发送到接收端的。

2.3.1.1 路由表的简介

有两列组成,分别为目的IP地址和下一跳的IP地址。
计算机或路由器都拥有路由表。

2.3.1.2 转发流程

只看网络层,流程如下:

  1. A发出目的地为C的IP数据报,查询路由表发现下一跳为E
  2. A将数据报发送给E
  3. E查询路由表发现下一跳为F,将数据报发送给F
  4. F查询路由表发现目的地C直接连接,将数据报发送给C

结合数据链路层和网络层,步骤如下:

  1. A发出目的地为C的IP数据报,查询路由表发现下一跳为E
  2. A将IP数据报向下交给数据链路层,并告知目的MAC地址是E
  3. 数据链路层填充源MAC地址A和目的MAC地址E
  4. 数据链路层通过物理层将数据发送给E
  5. E的数据链路层接收到数据帧,把帧数据向上交给网络层
  6. E查询路由表,发现下一跳为F
  7. E把数据报交向下给数据链路层,并告知目的MAC地址为F
  8. E的数据链路层重新把IP数据报封装成数据帧并发送
  9. F的数据链路层接收到数据帧,把帧数据向上交给网络层
  10. F查询路由表,发现下一跳为C
  11. F把数据报向下交给数据链路层,并告知目的MAC地址为C
  12. F的数据链路层封装数据帧并发送

非常值得注意的是:

  • 数据帧每一跳的MAC地址都在变化
  • IP数据报每一跳的IP地址始终不变

2.4 网络地址转换NAT技术

该技术的出现主要解决IP地址不够用的这一问题。
为什么会IP地址不够用?

  • IPv4最多只有40+亿个IP地址
  • 早期IP地址的不合理规划导致IP号浪费

2.4.1 内部网关和外部网关

互联网边缘部分:多数情况下,一个家庭只有一个IP设备,家庭中的多个终端设备是如何连接互联网并通信?一个企业的IP地址也无法支持全部终端设备,多个终端设备是如何连接互联网并通信?

IP地址可以分为私有IP地址和全球IP地址

私有IP地址 全球IP地址
内部机构使用(比如家庭里各种设备) 全球范围使用
避免与全球IP地址重复 全球公共网络唯一IP

私有IP地址也有三类

A类 10.0.0.0~10.255.255.255 (支持千万数量级设备)
B类 172.16.0.0~172.31.255.255 (支持百万数量级设备)
C类 192.168.0.0~192.168.255.255 (支持万数量级设备)

私有IP地址是给内部使用的,所以A公司和B公司/A家庭和B家庭可以使用相同的私有IP地址,并不会引起冲突。

2.4.2 NAT技术

由前文可知,采用私有IP地址的多个设备使用同一个全球IP地址请求网络服务,外部怎么知道具体是哪个设备在请求的呢?
引出网络地址转换NAT(Network Address Translation),NAT技术用于多个主机通过一个公有IP访问互联网的私有网络中,解决网络拓扑在请求公有IP服务时如何正确运行的问题。

在路由器内部会进行私有IP地址和全球IP地址的转换,私有IP地址和全球IP地址的映射关系称为NA (P ) T表。为什么会有个P呢,因为私有/全球IP地址还要搭配端口号。

举个例子:
网络层重要知识(面试、复试、期末)_第1张图片
对应的NA(P )T表

方向 旧的地址和端口号 新的地址与端口号
192.168.2.11:6666 173.21.59.10:16666
192.168.2.10:7777 173.21.59.10:17777
173.21. 59.10:16666 192.1 68.2.11:6666
173.21.59.10:17777 192.168.2.10:7777

NA(P)T表就是在私有IP地址和端口号映射为全球IP地址和端口号对外进行通信;并且接收到相关数据再把全球IP地址和端口号映射为私有IP地址和端口号转发到具体设备中。这个映射过程就是NAT过程,发生在本地路由器。

NAT减缓了IP地址的消耗,但是增加了网络通信的复杂度

三.网络层其他协议

3.1 ARP协议与RARP协议

R/ARP协议是配合数据链路层和网络层使用的协议。

3.1.1 ARP协议

ARP(地址解析协议):该协议可以把网络层IP32位地址转化为数据链路层MAC48位地址。

ARP缓存表:IP地址-MAC地址映射表。 ARP缓存表是ARP协议和RARP协议运行的关键;
ARP缓存表缓存了IP地址到硬件地址之间的映射关系;
ARP缓存表中的记录并不是永久有效的,有一定的期限,因为IP地址是不断变化的。

查询ARP表会出现两种情况

  • ARP缓存表缓存 IP地址和MAC地址的映射关系:
    发送端可以 直接告知自身的数据链路层目的MAC地址。
  • ARP缓存表没有缓存IP地址和MAC地址的映射关系:
    向除了接受的数据报的发送者意外广播信息,接收到回信记录对应的地址。

3.1.2 RARP协议

RARP(逆地址解析协议):该协议可以把数据链路层MAC48位地址转化为网络层IP32位地址。

3.2 ICMP协议

3.2.1 ICMP 协议详解

网络控制报文协议(ICMP)可以报告错误信息或者异常情况,辅助IP协议更好的传输。封装在IP数据报的数据中,是IP数据报的数据。
由ICMP首部和数据组成。

ICMP首部组成如下

  • 8位类型:ICMP报文种类,有两大类(差错报告报文、询问报文)。
  • 8位代码:不同的ICMP报文具体是那些错误。
  • 16位校验和:校验传输过程中是否发生错误。

3.2.2 ICMP 协议应用

3.2.2.1 Ping应用

原理:发送ICMP询问报文(回送请求或应答)。
判断网络故障位置:

  1. Ping回环地址127.0.0.1,如果没有收到返回,说明计算机协议栈出现了问题,要重装系统或重新安装协议栈。
  2. Ping网关地址(路由器地址),Ping192.168.0.1或者192.168.1.1如果不通就是计算机到路由器之间有问题。
  3. Ping远端地址,如果不通那就说明家里到ISP,联系运营商。

3.2.2.1 Traceroute应用

Traceroute可以探测IP数据报在网络中走过的路径
不可达差错报告报文

3.3 小结

IP协议 用于传输真实数据
ARP协议和RARP协议 IP地址和MAC地址的互相转换
ICMP协议 辅助IP协议进行传输

四.外部网关路由协议

4.1 路由的概述

细心的盆友应该发现前文2.3.1的转发流程没有并没有说明以下四个问题:

  • 下一跳地址是怎么来的?
  • 下一跳地址是唯一的吗?
  • 下一跳的地址是最佳的吗?
  • 路由器那么多,他们是怎么协同工作的?

我们需要一些好的算法 去解决这些事情。所以学习网络路由就是学习这些算法。

4.1.1 路由算法的本质

网络拓扑就类似数据结构图:

  • 每一个顶点表示一个网络、路由器或计算机
  • 每一条边表示一条网络路径
    综上两点,路由算法实际上是图论的算法
  • 网络环境复杂且突发情况多
    所以综上三点,路由算法要比图论的算法要复杂

一个理想的路由算法应该由以下几个特点:

  • 算法可以适应网络中的变化
  • 算法是稳定的和公平
  • 算法在计算上应该尽可能的简单
  • 算法是正确的、完整

4.1.2 自治系统

由于互联网的规模是非常大且环境非常复杂,为了路由算法简单一些,我们人为先对互联网进行划分。

一个自治系统(AS)是处于一个管理机构(国家、城市、公司、学校等)下的网络设备群,AS内部网络自行管理,AS对外提供一个或者多个出(入)口。

自治系统内部路由的协议称为:内部网关协议(RIP、OSPF)
自治系统外部路由的协议称为:外部网关协议(BGP)
网络层重要知识(面试、复试、期末)_第2张图片

4.2 内部网关路由协议

4.2.1 RIP协议

4.2.1距离矢量(DV)算法

每一个节点使用两个向量Di和Si,Di描述的是当前节点到别的节点的距离,Si描述的是当前节点到别的节点的下一节点。
每一个节点与相邻的节点交换向量Di和Si的信息
每一个节点根据交换的信息更新自己的节点信息

4.2.2 RIP协议的过程

RIP(Routing Information Protocol)协议,是使用DV算法的一种路由协议。
RIP协议把网络的跳数(hop)作为DV算法的距离;RIP协议每隔30s交换一次路由信息;RIP协议认为跳数>15的路由则为不可达路由

RIP协议过程如下:
第一步:路由器初始化路由信息(两个向量Di和Si)
第二步:对相邻路由器X发过来的信息,对信息的内容进行修改(下一跳地址设置为X,所有距离加1)

  • 检索本地路由,将信息中新的路由插入到路由表里面
  • 检索本地路由,对于下一-跳为X的,更新为修改后的信息
  • 检索本地路由,对比相同目的的距离,如果新信息的距离更小,则更新本地路由表

第三步:如果3分钟没有收到相邻的路由信息,则把相邻路由设置为不可达(16跳)
优点:实现简单,开销小
缺点:故障信息传递慢(只看相邻节点的信息而且过于依赖),更新收敛时间长;限制了网络规模(条数不可以大于15)

4.2.3 OSPF协议

4.3 外部网关路由协议

由于互联网规模过于庞大,在AS之间选择路由非常困难,比如是有OSPF协议每个路由器都要使用大量空间存储路由状态信息,而且算法满。又由于AS内部使用不同的协议,需要另一种协议协调。而且由于非网络特性的因素,也需要另一种协议。所以引出BGP协议。
BGP(Border Gateway Protocol:边际网关协议)是运行在AS之间的一种协议。BGP协议能够找到一条到达目的比较好而非最好的路由。

BGP发言人:位于AS边界的路由器(至少一个),可以人为配置策略。BGP并不关心内部网络拓扑,AS之间通过BGP发言人交流信息。

你可能感兴趣的:(计算机网络)