计算机网络之网络层

网络层概述

  网络层的目的是实现两个端系统之间的数据透明传送,详细功效包罗寻址和路由选择、毗邻的确立、保持和终止等。它提供的服务使传输层不需要领会网络中的数据传输和交流手艺。若是您想用只管少的词来记着网络层,那就是”路径选择、路由及逻辑寻址”。

  网络层中涉及众多的协议,其中包罗最主要的协议,也是TCP/IP的焦点协议——IP协议。IP协议异常简朴,仅仅提供不能靠、无毗邻的传送服务。IP协议的主要功效有:无毗邻数据报传输、数据报路由选择和差错控制。与IP协议配套使用实现其功效的另有地址剖析协议ARP、逆地址剖析协议RARP、因特网报文协议ICMP、因特网组治理协议IGMP。

IP协议详解

虚拟互连网络

  现实的盘算机网络是错综庞大的,物理装备通过使用IP协议,屏障了物理网络之间的差异,当网络中的主机使用IP协议毗邻时,则无需关注网络细节。IP协议使得庞大的现实网络变为一个虚拟互连的网络,还使得网络层可以屏障底层细节而专注网络层的数据转发,IP协议解决了在虚拟网络中数据报传输路径的问题。

  IP地址长度为32位,常分成4个8位,IP地址常使用点分十进制来示意(0~255.0~255.0~255.0~255),也就是共有\(2^{32} = 4294961296\)个IP地址。下图是IP协议的花样:
计算机网络之网络层
我们来看看IP协议的首部:

4位版本 4位首部长度 8位服务类型(TOS) 16位总长度(字节)
16位标识 3位标志 13位片偏移
8位生计时间(TTL) 8位协议 16位首部校验和
32位源IP地址
32位目的IP地址
选项options(若有)
IP数据

版本:占4位,指的是IP协议的版本,通讯双方的版本必须一致,当前主流版本是4,即IPv4,也有IPv6
首部位长度:占4位,最大数值为15,示意的是IP首部长度,单元是“32位字”(4个字节),也即是IP首部最大长度为60字节
总长度:占16位,最大数值为65535,示意的是IP数据报总长度(IP首部+IP数据)
TTL:占8位,解释IP数据报文在网络中的寿命,每经由一个装备,TTL减1,当TTL=0时,网络装备必须抛弃该报文。作用:制止数据在网络中无限传输,当这个网络报文找不到目的机械时,而举行无限传输,来虚耗带宽资源
协议:占8位,解释IP数据所携带的详细数据是什么协议的(如:TCP、UDP等)

协议名 ICMP IGMP IP TCP UDP OSPF
字段值 1 2 4 6 17 89

首部校验和:占16位,校验IP首部是否有失足

IP协议的转发流程

  在数据链路层的学习中我们知道了MAC地址表,由于IP协议的转发是通过逐跳(hop-by-hop)来实现的,以是在网络层中,存在一个类似于MAC地址表的路由表,路由表是存储的目的IP地址和下一跳IP地址的映射,盘算机或者路由器都拥有路由表。路由表如下:

目的IP地址 下一跳IP地址
IP1 IP4
IP2 IP5
IP3 IP6

计算机网络之网络层
A装备向C装备在网络层中传输数据的历程如下:

  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的数据链路层封装数据帧并发送
  9. F的数据链路层接收到数据帧,把帧数据交给网络层
  10. F查询路由表,发现下一跳为C
  11. F把数据报交给数据链路层,并见告目的MAC地址为C
  12. F的数据链路层F封装数据帧并发送

  从IP协议的转发流程中我们可以看到:数据帧每一跳的MAC地址都在转变,但IP数据报每一跳的IP地址始终不变。但我们会发现一个问题,在网络层中将数据报交给数据链路层,而且需要见告目的MAC地址,然则在网络层中只知道IP地址,我们是若何知道目的MAC地址的呢?这就是ARP协议做的事情了。

ARP协议

  ARP(Address Resolution Protocol)地址剖析协议,将网络层中的32位IP地址,通过ARP协议剖析为数据链路层中的48位MAC地址。这个映射关系是存储在ARP缓存表中的。arp -a下令:查看ARP缓存表

IP地址 MAC地址
192.168.83.254 00-50-56-e0-33-40
192.168.83.255 01-00-5e-00-00-16
224.0.0.251 01-00-5e-00-00-fc
239.1.2.3 01-00-5e-40-98-8f
255.255.255.255 01-00-5e-7f-ff-fa

  ARP缓存表是ARP协媾和RARP协议运行的要害,ARP缓存表缓存了IP地址到硬件地址之间的映射关系,ARP缓存表中的纪录并不是永远有用的,有一定的限期。这是由于当你的网络装备,换个网络环境,网络装备的IP地址就可能会发生改变,ARP缓存表中的原来的纪录就失效了。当ARP缓存表中有映射关系,就直接查询ARP缓存表;若是没有这个映射关系,ARP协议就会广播,并纪录回应得地址信息。

  RARP(Reverse Address Resolution Protocol)逆地址剖析协议,其作用与ARP协议相反,即把数据链路层中48位MAC地址,剖析位网络层中的32位IP地址。(R)ARP协议是TCP/IP协议栈内里基础的协议,ARP和RARP的操尴尬刁难程序员是透明的,明白(R)ARP协议有助于明白网络分层的细节。

IP地址的子网划分

分类的IP地址

计算机网络之网络层

最小网络号 最大网络号 子网数目 最小主机号 最大主机号 主机数目
A 0(00000000) 127(01111111) \(2^7\) 0.0.0 255.255.255 \(2^{24}\)
B 128.0 191.255 \(2^{14}\) 0.0 255.255 \(2^{16}\)
C 192.0.0 223.255.255 \(2^{21}\) 0 255 \(2^{8}\)

特殊的主机号:主机号全0示意当前网络段,不能分配为特定主机;主机号为全1示意广播地址,向当前网络段所有主机发新闻

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

现实可使用各种IP地址如下:

最小网络号 最大网络号 子网数目 最小主机号 最大主机号 主机数目
A 1 127(01111111) \(2^7\)-2 0.0.1 255.255.254 \(2^{24}\)-2
B 128.1 191.255 \(2^{14}\)-1 0.1 255.254 \(2^{16}\)-2
C 192.0.1 223.255.255 \(2^{21}\)-1 1 254 \(2^{8}\)-2

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

划分子网

  随着互连网应用的不断扩大,原先的IPv4的坏处也逐渐露出出来,即网络号占位太多,而主机号位太少,以是其能提供的主机地址也越来越稀缺,现在除了使用NAT在企业内部行使保留地址自行分配以外,通常都对一个高种其余IP地址举行再划分,以形成多个子网,提供给差别规模的用户群使用。这里主要是为了在网络分段情况下有用地行使IP地址,通过对主机号的高位部门取作为子网号,从通常的网络位界线中扩展或压缩子网掩码,用来建立某类地址的更多子网。但建立更多的子网时,在每个子网上的可用主机地址数目会比原先削减。
计算机网络之网络层
上图就把原来的C类地址划分成了两个子网。
  但子网号这么多,有没有设施快速判断某个IP的网络号?这就是子网掩码的作用了,子网掩码是标志两个IP地址是否同属于一个子网的,也是32位二进制地址,其每一个为1代表该位是网络位,为0代表主机位。它和IP地址一样也是使用点式十进制来示意的。若是两个IP地址在子网掩码的按位与的盘算下所得效果相同,即解释它们共属于统一子网中。

  子网掩码由延续的1和延续的0组成,某一个子网的子网掩码具备网络号位数个延续的1

  在盘算子网掩码时,我们要注重IP地址中的保留地址,即” 0″地址和广播地址,它们是指主机地址或网络地址全为” 0″或” 1″时的IP地址,它们代表着本网络地址和广播地址,一样平常是不能被盘算在内的。

一个基于Consul的.NET Leader选举类库

无分类编址CIDR

  CIDR中没有A、B、C类网络号、和子网划分的观点,CIDR将网络前缀相同的IP地址称为一个“CIDR地址块”,注重网络前缀是随便位数的。

网络前缀 主机号

斜线记法:193.10.10.129/25 使用二进制示意:11000001.00001010.00001010.10000001
无分类地址CIDR相比原来的子网划分加倍 天真:

CIDR前缀长度 掩码点分十进制 地址数
/13 255.248.0.0 512K
/14 255.252.0.0 256K
/15 255.254.0.0 128K
/16 255.255.0.0 64K
/17 255.255.128.0 32K
/18 255.255.192.0 16K
/19 255.255.224.0 8K

网络地址转换NAT手艺

  IPv4最多只有40+亿个IP地址,早期IP地址的不合理计划导致IP号虚耗。在先容NAT手艺之前,首先要知道内网地址和外网地址。

  • 内网地址:内部机构使用,制止与外网地址重复。三类内网地址如下:
    • 10.0.0.0~10.255.255.255(支持万万数目级装备)
    • 172.16.0.0~172.31.255.255(支持百万数目级装备)
    • 192.168.0.0~192.168.255.255(支持万数目级装备)
  • 外网地址:全球局限使用,全球公网唯一

  网络地址转换手艺是发生在内陆路由器的,主要功效就是把内网的IP地址转成外网的IP地址来举行外部的通讯,而且在接收到数据之后,再把外网IP地址映射成内网IP地址,转发到详细的某个装备上面去。

  内网多个装备使用统一个外网IP请求外网的服务,外部怎么知道详细是哪个装备在请求的?网络地址转换NAT的英文全称是Network Address Translation,NAT手艺用于多个主机通过一个公有IP接见互联网的私有网络中,外部主要是通过端口号来区分到底是内网的哪一个装备举行请求的,这其中有一个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.168.2.11:6666
173.21.59.10:17777 192.168.2.10:7777

NAT减缓了IP地址的消耗,然则增加了网络通讯的庞大度

ICMP协议

  ICMP协议全称是网际控制报文协议(Internet Control Message Protocol),ICMP协议可以讲述错误信息或者异常情况
计算机网络之网络层
ICMP协议首部:

8位类型 8位代码 16位校验和
ICMP报文数据

ICMP报文分为:差错讲述报文和询问报文:

ICMP报文种类 类型的值 报文类型 详细代码
差错讲述报文 3(终点不能达) 网络不能达 0
主机不能达 1
5(重定向) 对网络重定向 0
对主机重定向 1
11 传输超时
12 坏的IP头 0
缺少其他需要参数 1
询问报文 0或8 回送(Echo)请求或应答
13或14 时间戳(Timestamp)请求或应答

ICMP协议的应用

ping应用:我们可以通过ping下令举行简朴的网络故障排查:

  1. ping内陆回环地址,一样平常情况下,都市获得返回的,若是得不到返回,则说明你的盘算机的协议栈泛起了问题,这个时刻就可能需要重装系统,或者是重新安装这个协议栈
  2. ping网关地址,即路由器地址,若是能获得返回的话,则说明本机到路由器的通路是通的,若是没有返回的话,则说明你的wifi,或者你的网线毗邻是有问题的
  3. ping远端地址,若是不通的话,则说明你的家到ISP之间的网络是故障的,此时就需要联系网络服务商(移动、电信、联通)举行排查。

Traceroute应用:Traceroute可以探测IP数据报在网络中走过的路径

路由概述

  思索:路由表中的下一跳地址是怎么来的?下一跳地址是唯一的吗?下一跳地址是最佳的吗?路由器怎么多,他们是怎么协同事情的?为领会决这些问题,路由表需要一个好的算法去解决这些事情。路由算法现实上是图论的算法,由于网络环境庞大,使得路由算法要比图论的算法更庞大。
计算机网络之网络层
  由于互联网的规模是异常大的,互联网环境是异常庞大的,以是我们需要对互联网举行划分。自治系统(Autonomous System)是指处于一个治理机构下的网络装备群,AS内部网络自行治理,AS对外提供一个或者多个出(入)口。自治系统内部路由的协议称为:内部网关协议(RIP、OSPF), 自治系统外部路由的协议称为:外部网关协议(BGP)。
计算机网络之网络层

路由算法

  路由算法的本质是距离矢量(DV)算法, 距离矢量(DV)算法先容如下:

  • 每一个节点使用两个向量\(D_i\)\(S_i\)
  • \(D_i\)形貌的是当前节点到其余节点的距离
  • \(S_i\)形貌的是当前节点到其余节点的下一节点
  • 每一个节点与相邻的节点交流向量\(D_i\)\(S_i\)的信息
  • 每一个节点凭据交流的信息更新自己的节点信息

计算机网络之网络层
现在假设有A的距离矢量信息,收到的距离矢量信息如下图:
计算机网络之网络层
A通过B到各个节点得距离矢量信息如下:
计算机网络之网络层
A通过C到各个节点得距离矢量:并更新下一条的节点
计算机网络之网络层
A通过D到各个节点得距离矢量:并更新下一条的节点
计算机网络之网络层
A通过F到各个节点得距离矢量:并更新下一条的节点
计算机网络之网络层

RIP协议

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

RIP协议的历程

  1. 路由器初始化路由信息(两个向量\(D_i\)\(S_i\))
  2. 对相邻路由器X发过来的信息,对信息的内容举行修改(下一跳地址设置为X,所有距离加1)
    1. 检索内陆路由,将信息中新的路由插入到路由表内里
    2. 检索内陆路由,对于下一跳为X的,更新为修改后的信息
    3. 检索内陆路由,对比相同目的的距离,若是新信息的距离更小,则更新内陆路由表
  3. 若是3分钟没有收到相邻的路由信息,则把相邻路由设置为不能达(16跳)

RIP协议的优瑕玷:

  • 优点:实现简朴,开销很小。
  • 瑕玷:故障信息通报慢。也就是随便信赖“隔邻老王”,“自己不思索” “视野不够”。由于RIP协议每一个路由器它只看到相邻路由器的信息,而看不到更远的路由器信息,这也限制了网络的规模。

内部网关路由协议之OSPF协议

链路状态(LS)协议

  链路状态(LS)协议:向所有的路由器发送新闻,也就是一传十、十传百,只和相邻的路由器交流信息。新闻形貌该路由器与相邻路由器的链路状态,每隔30s交流路由信息,只有链路状态发生转变时,才发送更新信息。

Dijkstra(迪杰斯特拉)算法

  Dijkstra算法是著名的图算法,Dijkstra算法解决有权图从一个节点到其他节点的最短路径问题,“以起始点为中央,向外层层扩展”。
计算机网络之网络层
Dijkstra(迪杰斯特拉)算法界说:

  1. 初始化两个聚集(S, U)(S为只有初始极点点A的聚集,U为其他极点聚集)
  2. 若是U不为空, 对U聚集极点举行距离的排序,并取出距离A最近的一个极点D
    i. 将极点D的纳入S聚集
    ii. 更新通过极点D到达U聚集所有点的距离(若是距离更小则更新,否则不更新)
    iii. 重复2步骤
  3. 直到U聚集为空,算法完成
    计算机网络之网络层

OSPF协议的历程

  OSPF(Open Shortest Path First:开放最短路径优先),OSPF协议的焦点是Dijkstra算法。OSPF协议的历程:路由器接入网络,路由器向邻人发出问候信息,与邻人交流链路状态数据库,广播和更新未知路由。

RIP协议 OSPF协议
从邻人看网络 整个网络的拓扑
在路由器之间累加距离 Dijkstra算法盘算最短路径
频仍、周期更新,收敛很慢 状态转变更新,收敛很快
路由间拷贝路由信息 路由间通报链路状态,自行盘算路径

外部网关路由协议之BGP协议

  BGP(Border Gateway Protocol: 边际网关协议),BGP协议是运行在AS之间的一种协议。由于互联网的规模很大,AS内部使用差其余路由协议。
计算机网络之网络层
  AS之间需要思量除网络特征以外的一些因素(政治、平安…),BGP(Border Gateway Protocol,界限网关协议),BGP协议能够找到一条到达目的比较好的路由,AS之间通过BGP发言人来举行路由信息的交流。BGP发言人(speaker):BGP并不体贴内部网络拓扑,AS之间通过BGP发言人交流信息,BGP Speaker可以人为设置计谋。

总结:网络层卖力对子网间的数据包举行路由选择。此外,网络层还可以实现拥塞控制、网际互连等功效;网络层的基本数据单元为IP数据报;包罗的主要协议:IP协议(Internet Protocol,因特网互联协议)、ICMP协议(Internet Control Message Protocol,因特网控制报文协议)、ARP协议(Address Resolution Protocol,地址剖析协议)以及RARP协议(Reverse Address Resolution Protocol,逆地址剖析协议)。网络层主要的装备是路由器。常见的路由选择协议有:RIP协议、OSPF协议。RIP协议 :底层是贝尔曼福特算法,它选择路由的器量尺度(metric)是跳数,最大跳数是15跳,若是大于15跳,它就会抛弃数据包;OSPF协议 :Open Shortest Path First开放式最短路径优先,底层是迪杰斯特拉算法,是链路状态路由选择协议,它选择路由的器量尺度是带宽,延迟。

原创文章,作者:28x0新闻网,如若转载,请注明出处:https://www.28x0.com/archives/14947.html