建站系统做的网站百度可以搜索到吗,中国搜索引擎市场份额,织梦高端html5网站建设工作室网络公司网站模板,提供徐州网站建设网络层概述
网络层是干什么的#xff1f;
网络层的主要任务是实现不同异构网络互连#xff0c;进而实现数据包在各网络之间的传输相比于数据链路层的以太网通信#xff0c;网络层则是将一个个数据链路层连接的以太网通过路由器连接起来。从而实现不同数据链路层的互联。 这…网络层概述
网络层是干什么的
网络层的主要任务是实现不同异构网络互连进而实现数据包在各网络之间的传输相比于数据链路层的以太网通信网络层则是将一个个数据链路层连接的以太网通过路由器连接起来。从而实现不同数据链路层的互联。 这些异构型网络N1~N7如果只是需要各自内部通信他们只要实现各自的物理层和数据链路层即可 但是如果要将这些异构型网络互连起来形成一个更大的互联网就需要实现网络层设备路由器 有时为了简单起见可以不用画出这些网络图中N1~N7而将他们看做是一条链路即可 网络层最最核心的功能就是 分组转发 和 路由选择 分组转发当分组进入路由器根据转发表将分组从合适的路由端口转发出去路由选择当分组从发送方流向接收方时网络层必须决定这些分组所采用的路由或路径这就是路由选择 路由器收到数据后是依据什么来决定将数据包从自己的哪个端口转发出去 依据分组中的目的地址和路由器中的路由表 但在实际当中路由器是怎样知道这些路由记录 由用户或网络管理员进行人工配置比如配置一个默认兜底的路由这种方法只适用于规模较小且网络拓扑不改变的小型互联网另一种是实现各种路由选择协议由路由器执行路由选择协议中所规定的路由选择算法而自动得出路由表中的路有记录这种方法更适合规模较大且网络拓扑经常改变的大型互联网 补充 网络层网际层除了 IP协议外还有之前介绍过的地址解析协议ARP还有网际控制报文协议ICMP网际组管理协议IGMP 总结 网络层提供的两种服务
这个问题是怎么提出来的呢
在计算机网络领域网络层应该向运输层提供怎样的服务“面向连接”还是“无连接”曾引起了长期的争论。争论焦点的实质就是在计算机通信中可靠交付应当由谁来负责是网络还是端系统
面向连接的虚电路服务
一种观点让网络负责可靠交付
这种观点认为应借助于电信网的成功经验让网络负责可靠交付计算机网络应模仿电信网络使用面向连接的通信方式。通信之前先建立虚电路 (Virtual Circuit)以保证双方通信所需的一切网络资源。如果再使用可靠传输的网络协议就可使所发送的分组无差错按序到达终点不丢失、不重复。
发送方 发送给 接收方 的所有分组都沿着同一条虚电路传送 虚电路表示这只是一条逻辑上的连接分组都沿着这条逻辑连接按照存储转发方式传送而并不是真正建立了一条物理连接。请注意电路交换的电话通信是先建立了一条真正的连接。因此分组交换的虚连接和电路交换的连接只是类似但并不完全一样 所以说为什么互联网不用这种虚电路的交换方式呢 虚电路电信网提供的端到端可靠传输服务对电话业务无疑是很合适的因为电信网的终端(电话机非常简单没有智能无差错处理能力电信网必须负责把用户电话机产生的话音信号可靠地传送到对方的电话机使还原后的话音质量符合技术规范的要求。但计算机网络的端系统是有智能的计算机。计算机有很强的差错处理能力(这点和电话机有本质上的差别)因此,互联网在设计上就采用了和电信网完全不同的思路。 无连接的数据报服务
另一种观点网络提供数据报服务
网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。网络在发送分组时不需要先建立连接。每一个分组即 IP 数据报独立发送与其前后的分组无关不进行编号。网络层不提供服务质量QoS的承诺。即所传送的分组可能出错、丢失、重复和失序不按序到达终点当然也不保证分组传送的时限。
发送方 发送给 接收方 的分组可能沿着不同路径传送 尽最大努力交付 如果主机即端系统中的进程之间的通信需要是可靠的那么就由网络的主机中的运输层负责可靠交付包括差错处理、流量控制等 。采用这种设计思路的好处是网络的造价大大降低运行方式灵活能够适应多种应用。互连网能够发展到今日的规模充分证明了当初采用这种设计思路的正确性。 将网络转发设备上的压力降低路由器交换机…把纠错等等问题交给计算能力强的计算机 虚电路服务与数据报服务的对比
对比的方面虚电路服务数据报服务思路可靠通信应当由网络来保证可靠通信应当由用户主机来保证连接的建立必须有不需要终点地址仅在连接建立阶段使用每个分组使用短的虚电路号每个分组都有终点的完整地址分组的转发属于同一条虚电路的分组均按照同一路由进行转发每个分组独立选择路由进行转发当结点出故障时所有通过出故障的结点的虚电路均不能工作出故障的结点可能会丢失分组一些路由可能会发生变化分组的顺序总是按发送顺序到达终点到达终点时不一定按发送顺序端到端的差错处理和流量控制可以由网络负责也可以由用户主机负责由用户主机负责
IP地址
IP地址属于网络层的范畴不属于数据链路层的范畴
为什么会出现IP的概念
简单说全世界各种各样的以太局域网设备不统一协议不统一。没有一种单一的网络能够适应所有用户的需求。而这些局域网又有接入互联网的需求势必需要一个统一的概念。
从一般的概念来讲将网络互相连接起来要使用一些中间设备。根据中间设备所在的层次可以将中间设备分为以下四种。 1物理层使用的中间设备叫作转发器Repeater或集线器Hub。 2数据链路层使用的中间设备叫作网桥或桥接器Bridge或交换机Switch。 3网络层使用的中间设备叫作路由器Router。 4在网络层以上使用的中间设备叫作网关Gateway用网关连接两个不兼容的系统需要在高层进行协议的转换。
当中间设备是转发器或网桥时互连仅仅是把一个网络扩大了从网络层的角度看这仍然是一个网络因此一般并不称之为网络互连。因此提出了IP的概念于参加互连的计算机网络都使用相同的IP因此可以把互连以后的计算机网络看成一个虚拟互连网络。所谓虚拟互连网络也就是逻辑互连网络它的意思就是互连起来的各种物理网络的异构性是客观存在的但是我们利用IP可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络。
TCP/IP体系在网络互连上采用的做法是在网络层即IP层使用标准化协议但相互连接的网络可以是异构的。网络层及以下是IP负责转发数据网络层以上TCP保证可靠传输 从网络体系结构看IP地址与MAC地址 每一层都看不懂上一层给他的东西是什么但是这不重要只需要加上对应的这一层的帧首尾就可以了。
IP地址与MAC物理地址的关系
从层次的角度看物理地址是数据链路层或物理网络使用的地址而IP地址是网络层及以上各层使用的地址是一种逻辑地址称IP地址是逻辑地址是因为IP地址是用软件实现的。
以局域网为例来说明IP地址与物理地址的关系。在发送数据时数据从高层传递到低层然后才到通信链路上传输。使用IP地址的IP数据报一旦被交给了数据链路层就被封装成MAC帧。 MAC帧在传送时使用的源地址和目的地址都是物理地址这两个物理地址都写在MAC帧的首部中。连接在通信链路上的设备主机或路由器在接收MAC帧时其根据是MAC帧首部中的物理地址进行转发等等操作。在数据链路层看不见隐藏在MAC帧的数据中的IP地址。只有在剥去MAC帧的首部和尾部把MAC层的数据上交给网络层后网络层才能在IP数据报的首部中找到源IP地址和目的IP地址。
总之 IP地址放在IP数据报的首部而物理地址则放在MAC帧的首部。 在网络层和网络层以上使用的是IP地址而数据链路层使用的是物理地址。在图中在IP数据报被放入数据链路层的MAC帧中以后整个IP数据报就成为MAC帧的数据因而在数据链路层看不见数据报的IP地址。每一层只能看见本层相关的地址内容
数据包转发过程中IP地址与MAC地址的变化情况
图上各主机和路由器各接口的IP地址和MAC地址用简单的标识符来表示 注意主机中有完整的网络体系结构而路由器仅有到网络层的结构 重点 在传输过程中 源IP地址和目的IP地址保持不变; 源MAC地址和目的MAC地址逐个链路(或逐个网络)改变。 看个例题MAC地址在转发过程中的变化情况
这里我们可以看到IP是恒定不变的。但是MAC是随着下一跳的目的地址不断变化的假如一个路由器连了多个节点下一跳转发给哪个MAC这个怎么确定
如何从IP地址找出其对应的MAC地址
引出ARP协议
ARP协议
如何从IP地址找出其对应的MAC地址数据链路层
通过ARP地址解析协议 Address Resolution Protocol
ARP生成的流程 主机B要向本局域网上的某个主机C发送IP数据报时会先在其ARP高速缓存中查看有无主机C的IP地址。如有主机B就在ARP高速缓存中查出其对应的物理地址再把这个物理地址写入MAC帧然后通过局域网把该MAC帧发往此物理地址。
主机B也有可能查不到主机C的IP地址。原因可能是主机B才入网也可能是主机B刚刚加电其高速缓存还是空的。在这种情况下主机B就自动运行ARP然后按以下步骤找出主机B的物理地址。
ARP高速缓存表的生成过程
当主机B要给主机C发送数据包时会首先在自己的ARP高速缓存表中查找主机C的IP地址所对应的MAC地址但未找到此时主机B需要发送ARP请求报文来获取主机C的MAC地址。 主机B需要发送ARP请求报文发送广播帧来获取主机C的MAC地址 C发现是询问自己IP地址ARP广播帧于是对广播帧做出响应同时C也会对B的地址IPMAC地址映射进行记录以便后续可能会用到。都会记录彼此的地址。 Q为什么C要记录B的地址 A当主机B向C发送数据报时很可能以后不久主机C还要向B发送数据报(比如响应数据)因而主机C也可能要向B发送ARP请求分组。为了减少网络上的通信量主机B在发送其ARP请求分组时就把自己的IP地址到物理地址的映射写入ARP请求分组。主机C收到B的ARP请求分组时就把主机B的这一地址映射写入自己的ARP高速缓存。以后主机C向B发送数据报时就很方便了。 收到ARP请求报文的主机A和主机C会把ARP请求报文交给上层的ARP进程 主机A发现所询问的IP地址不是自己的IP地址因此不用理会 主机C的发现所询问的IP地址是自己的IP地址需要进行响应 C回复ARP响应报文单播帧 这样就代表了B的ARP表存好了C的MAC地址二者就可以开始发送数据了 但是ARP表并不是一成不变的比如连入设备改变网卡坏了等等导致的MAC地址更新等等。
因此ARP高速缓存中的每一个地址映射项目都设置有生存时间如1020min。超过生存时间的项目会被从高速缓存中删除掉。
ARP协议的使用条件
ARP协议只能在一段链路或者一个局域网上使用不能跨局域网使用。原因就是路由器会隔离广播域广播域都隔离了ARP广播帧自然就发不过去了 从IP地址到物理地址的解析是自动进行的主机的用户对这种地址解析过程是不知道的。只要主机或路由器要和本网络上的另一个已知IP地址的主机或路由器通信ARP就会自动地把这个IP地址解析为链路层所需要的物理地址。 Q既然在网络链路上传送的帧最终是按照物理地址找到目的主机的那么为什么我们不直接使用物理地址进行通信而是要使用逻辑的IP地址并调用ARP来寻找出相应的物理地址呢 A全世界存在着各式各样的网络它们使用不同形式的物理地址。要使这些异构网络能够互相通信就必须进行非常复杂的物理地址转换工作由用户或用户主机来完成这项工作几乎是不可能的。统一的IP地址把这个复杂问题解决了。 所以这也就是网络层以及IP出现的意义。为了连接不同架构的异构网络以及解决不同形式的物理地址连接问题。 总结 IPV4
IP地址及编址方式 点分十进制就是二进制的IPV4地址转化十进制的IPV4地址
分类编制时期的IPv4地址已淘汰
IPV4之所以说是32位的 就是因为网络号主机号 一共是32位 通过不同的格式分为 A、B、C、D(多播地址)、E(保留地址) 五种不同种类的网络 其中A、B、C 类网络最为常用
每一类地址都由两个固定长度的字段组成其中一个字段是网络号 net-id它标志主机或路由器所连接到的网络而另一个字段则是主机号 host-id它标志该主机或路由器。主机号在它前面的网络号所指明的网络范围内必须是唯一的。由此可见一个 IP 地址在整个互联网范围内是唯一的。一个主机号的IP下可以给多个子网的主机进行分配全球唯一的IPV4地址相同的网络号下利用不同主机号区分
A类地址 B类地址 C类地址 例子 IPV4地址分类总结
IP 地址的指派范围 一般不使用的特殊的 IP 地址
IP 地址的一些重要特点
(1) IP 地址是一种分等级的地址结构。分两个等级的好处是
第一IP 地址管理机构在分配 IP 地址时只分配网络号而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了 IP 地址的管理。第二路由器仅根据目的主机所连接的网络号来转发分组而不考虑目的主机号这样就可以使路由表中的项目数大幅度减少从而减小了路由表所占的存储空间。
(2) 实际上 IP 地址是标志一个主机或路由器和一条链路的接口。
当一个主机同时连接到两个网络上时该主机就必须同时具有两个相应的 IP 地址其网络号 net-id 必须是不同的。这种主机称为多归属主机 (multihomed host)。由于一个路由器至少应当连接到两个网络这样它才能将 IP 数据报从一个网络转发到另一个网络因此一个路由器至少应当有两个不同的 IP 地址。
(3) 用转发器或网桥连接起来的若干个局域网仍为一个网络因此这些局域网都具有同样的网络号 net-id。
(4) 所有分配到网络号 net-id 的网络无论是范围很小的局域网还是可能覆盖很大地理范围的广域网都是平等的。
划分子网的IPV4地址
首先说说为什么IPV4需要来划分子网
在 ARPANET 的早期IP 地址的设计确实不够合理
IP 地址空间的利用率有时很低。给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。两级的 IP 地址不够灵活。 如果想要将原来的网络划分成三个独立的网路 所以是否可以从主机号部分借用一部分作为子网号 将某一个部分用来专门划分标记为子网
但是如果未在图中标记子网号部分那么我们和计算机又如何知道分类地址中主机号有多少比特被用作子网号了呢
所以就有了划分子网的工具子网掩码
从 1985 年起在 IP 地址中又增加了一个“子网号字段”使两级的 IP 地址变成为三级的 IP 地址。这种做法叫做划分子网 (subnetting) 。划分子网已成为互联网的正式标准协议。
引出子网掩码子网掩码是通过当前网卡的IPV4地址计算出来的
子网掩码划分的思路
基本思路 划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。对外全部都是IPV4地址 从主机号借用若干个位作为子网号 subnet-id而主机号 host-id 也就相应减少了若干个位。 凡是从其他网络发送给本单位某个主机的 IP 数据报仍然是根据 IP 数据报的目的网络号 net-id先找到连接在本单位网络上的路由器。 然后此路由器在收到 IP 数据报后再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。 最后就将 IP 数据报直接交付目的主机。
划分为三个子网后对外仍是一个网络 优点 减少了分类编制时期 IP 地址的大量浪费固定分配子网个数就会浪费一部分使网络的组织更加灵活更便于维护和管理 划分子网纯属一个单位内部的事情对外部网络透明对外仍然表现为没有划分子网的一个网络IP。 子网掩码
(IP 地址) 与运算 (子网掩码) 网络地址 重要下面很多相关知识都会用到 举例来看子网掩码到底是怎么划分的以C类网络为例A、B类网络酌情调整网络号占位 再详细一点的例子还是以C类网络为例这次给网络号分配的子网号是两个比特位 默认子网掩码 如果划分了子网掩码就不用这个默认的子网掩码了 总结
子网掩码是一个网络或一个子网的重要属性。路由器在和相邻路由器交换路由信息时必须把自己所在网络或子网的子网掩码告诉相邻路由器。路由器的路由表中的每一个项目除了要给出目的网络地址外还必须同时给出该网络的子网掩码。若一个路由器连接在两个子网上就拥有两个网络地址和两个子网掩码。
无分类编址的IPv4地址
为什么使用无分类编址
无分类域间路由选择 CIDR (Classless Inter-Domain Routing)。 说白了就是即便是 用 网络号子网号主机号这种模式仍然会有一部分IP会被主机号给挤占造成本就不多的IPV4地址浪费掉那么索性将主机号从地址空间拿出来用CIDR子网掩码的方式再从外部对其进行具体的划分让渡一部分IP空间出来 网络号的可分配空间更多了减少地址的浪费 CIDR 最主要的特点 CIDR使用不定长的“网络前缀”来代替分类地址中固定长度的网络号和子网号。IP 地址从三级编址使用子网掩码又回到了两级编址。 CIDR把32位的IP地址划分为两个部分。前面的部分是不定长的“网络前缀”或简称为“前缀”代替分类编址中的“网络号”来指明网络后面的部分则用来指明主机。因此CIDR使IP地址从三级编址划分子网又回到了两级编址但这已是无网络分类的两级编址。它的记法是 请注意虽然无分类编址的IP地址形式上与分类编址的两级结构好像一样但这里的网络前缀是不定长的。有子网掩码来控制网络前缀的长度
子网掩码有几位是1就代表了网络前缀相当于网络号有几位是被锁死不能修改剩下的位数用来作主机号。也就是分配子网IP
如何使用CIDR地址 例子 再来个例子
路由聚合
路由表的每一行对应一个网络随着互联网迅速发展越来越多的网络连接到互联网路由表的表项将会越来越多路由器查找路由表的时间也会越来越长。采用路由聚合Route Aggregation可有效缓解这个问题。路由聚合又称为地址聚合简单来说就是通过把下一跳是同一台路由的地址List都抽出来看他们的前缀地址是否可以抽一部分共通出来记作一个共通的CIDR地址这样后续的IP地址发现自己网络号可以和聚合地址匹配上就会走这条路由。 可以理解为目的地址都位于同一个省那么其同省的前缀就可以抽出来送到同省的站点再继续在省内进行转送省内快递精确到具体地址 而这几个网络的地址空间正好可以合并成一个CIDR地址块因此在路由表中完全可以用一个网络前缀172.1.4.0/22这样的CIDR地址来指示这四个网络的路由。
利用路由聚合可以大大减少路由表的表项。靠近互联网边缘的路由器使用较长的网络前缀更长更精确转发数据报而靠近互联网核心的路由器使用较短更短但核心路由器需要减少路由条数的网络前缀转发数据报。 在1994年和1995年由于未使用CIDR互联网核心路由器的一个路由表就会超过7万项而使用CIDR后在1996年核心路由器的路由表项目减少为3万多个。
路由聚合过程中的最长前缀匹配
在使用CIDR时由于采用了路由聚合路由表中可能存在多个有包含关系的地址块前缀这时在查找路由表时可能会得到不止一个匹配结果。
这就带来一个问题我们应当从这些匹配结果中选择哪一条路由呢
正确的答案是应当从匹配结果中选择具有最长网络前缀的路由。这叫作最长前缀匹配Longest-Prefix Matching。这是因为网络前缀越长其地址块就越小因而路由就越具体。最长前缀匹配又称为最长匹配或最佳匹配。
采用最长前缀匹配默认路由可以用网络前缀0.0.0.0/0来表示因为该网络前缀的长度为0任何IP地址都能和它匹配前提是路由表中没有任何其他项目可以匹配。兜底路由
但最长前缀匹配算法也有一个缺点就是查找路由表花费的时间变长了因为要遍历整个路由表才能找到最长匹配的前缀项。人们一直都在积极研究提高路由表查找速度的算法并已提出了很多性能较好的算法。
最大主机个数例题 路由聚合地址计算
IPv4地址下子网的分配地址规划
所谓地址规划就是给定一个IPv4地址快如何将其划分成几个更小的地址块并将这些地址块分配给互联网中不同网络进而可以给各网络中的主机和路由器接口分配IPv4地址
一般由两种方法
定长的子网掩码FLSM变长的子网掩码VLSM
定长的子网掩码FLSMFixed Length Subnet Mask 看看某个网络中需要申请的网线数量 通过上面步骤分析就可以从子网1~8中任选5个分配给左图中的N1 ~ N5 采用定长的子网掩码划分只能划分出2^n个子网其中n是从主机号部分借用的用来作为子网号的比特数量每个子网所分配的IP地址数量相同 但是也因为每个子网所分配的IP地址数量相同不够灵活容易造成IP地址的浪费 变长的子网掩码VLSMVariable Length Subnet Mask 优先给大的块进行分配按需划分子网
IPv4数据报的首部格式 各字段的作用
版本号一般通用的为IPV4
一个 IP 数据报由首部和数据两部分组成。首部的前一部分是固定长度共 20 字节是所有 IP 数据报必须具有的。在首部的固定部分的后面是一些可选字段其长度是可变的。 基础字段
图中的每一行都由32个比特也就是4个字节构成每个小格子称为字段或者域每个字段或某些字段的组合用来表达IP协议的相关功能 IP数据报的首部长度一定是4字节的整数倍 因为首部中的可选字段的长度从1个字节到40个字节不等那么当20字节的固定部分加上1到40个字节长度不等的可变部分会造成首部长度不是4字节整数倍时就用取值为全0的填充字段填充相应个字节以确保IP数据报的首部长度是4字节的整数倍 IPv4数据报分片相关字段
所谓IPV4数据报片偏移就是分片前的整个数据报固定首部数据字段超过了当前以太网MAC帧的最大传送单元MTU的上限也就是1500。就会导致MAC帧无法传输。所以要进行切片处理切片的位置就会有片偏移的问题。
有三个字段是专门用于标记IP数据报文分片的标识、标志、片偏移 以当前这个数据报为例长度是固定的20数据载荷3800 超过了当前以太网MAC帧的最大传送单元MTU的上限也就是1500 所以要进行切片处理 注意这里0~1399一共长是1400从0开始算的因为对数据部分切片了所以每一个切开的帧都需要重新加入首部。 现在假定分片2的IP数据报经过某个网络时还需要进行分片一个分片数据报被二次分片了
分片的流程 主要是为分片的数据上添加编号 每一片的长度都是固定部分携带数据部分通过每一片的编号来进行区分。 其中MF表示是否后面有分片数据报0表示后面没有分片数据报当前就是最后的数据报1标示后面有分片数据报。 其中DF表示是否允许被分片0标示允许被分片1表示不可以被分片
片偏移切割的数据报起点 / 以xx字节为单位进行整除计算片偏移 例子1400 / 8 切割的数据报起点为1400 / 以8个字节为单位进行整除计算片偏移
注意IP数据报在传送中可能被多次分片但分片的数据报仅在目的主机才被重装为原来的数据报。
生存时间TTL
主要是怕因为某些错误的配置导致IP数据报在网络中一直兜圈子 每次IP数据报在经过一次路由器的时候其TTL就会被减一当减少到0的时候路由器就会将该IP数据报丢弃
注意局域网IP数据报的TTL设为1只跳一次
协议字段
不同的值代表着不同的协议
首部检验和 例题
总结 ICMP网际控制报文协议
为了更有效地转发IP数据报和提高交付成功率网际层使用了互联网控制报文协议Internet Control Message ProtocolICMP也翻译为网际控制报文协议。 说白了就是发送发生错误之后之后的补救措施或者是确认数据的发送正确比如 确认IP包是否成功送达目标地址通知在发送过程当中IP数据报被废弃的具体原因改善网络设置等 ICMP报文作为IP数据报的数据部分加上数据报的首部组成IP数据报发送出去。因此ICMP本身也是一种IP数据报。
有了这些功能以后就可以获得网络是否正常设置是否有误以及设备有何异常等信息从而便于进行网络上的问题诊断
总结 ICMP报文的格式
ICMP 不是高层协议看起来好像是高层协议因为 ICMP 报文是装在 IP 数据报中作为其中的数据部分而是网络层IP的协议
ICMP 报文的格式 在类型字段上可以区分的常见报文类型
差错报告报文
ICMP差错报告报文有如下五种
终点不可达源点抑制时间超过参数问题改变路由路由重定向)
终点不可达 当IP数据报发往目标地点的过程中发生了障碍无法抵达目标点路由器或主机不能交付数据报时就向源点发送终点不可达报文。
源点抑制 在发送的过程中途经点某个路由或者主机发生了拥塞相当于缓存爆掉了接不住数据报了无奈只能进行丢弃操作。这种情况下就会发送差错报告报文告知源点抑制。
时间超过 上面说过TTL就是IP数据报首部标记的超时时间每次经过一次路由器就会 -1直到减一减到零这个IP数据报就会被扔掉。这种情况下就会发送差错报告报文告知IP数据报时间超过。
参数问题 发现IP数据报首部错误码部分被激活了比如校验和计算出错没啥好说的直接丢弃这种情况下就会发送差错报告报文告知IP数据报参数问题比如错误码。 改变路由重定向) 路由在转发数据报的过程中发现有更短的路径报告给发送方下次走另外一边的路由这就是重定向。 解释下重定向是怎么发现更优的路径的 我们知道互联网的主机中也要有一个路由表。主机要发送数据报时首先查找自己的路由表看应当从哪一个接口把数据报发送出去。 在互联网中主机的数量远大于路由器的数量出于效率考虑这些主机不和连接在网络上的路由器定期交换路由信息。主机刚开始工作时一般都会在路由表中设置一个默认路由器的IP地址。不管数据报要发送到哪个目的地址一律先将数据报传送给网络上的这个默认路由器而这个默认路由器知道到每一个目的网络的最佳路由通过和其他路由器交换路由信息。 如果默认路由器发现主机发往某个目的地址的数据报的最佳路由不应当经过默认路由器而应当经过网络上的另一个路由器R默认路由器就用路由重定向报文把这个情况告诉主机。于是该主机在其路由表中增加一项到某某目的地址应经过路由器R而不是默认路由器。 Q默认路由器是怎么知道有更优路径的 A内部网络由RIP协议或OSPF协议优化路径外部网络由BGP协议优化路径。通过这两种协议来不断优化报文的转发路径 以上是发送差错报文的情况还有一些特定情况是不需要发送差错报文的 不应发送ICMP差错报告报文情况 询问报文
询问报文分为两种
分组网间探测 PINGPacket InterNet Groper跟踪路由traceroute
分组网间探测PINGPacket InterNet Groper 就是那个Ping命令发送数据报来测试响应时间以及连通性的 跟踪路由traceroute
traceroute命令的实现原理 原理就是通过TTL经过路由会减一的特性当数据报TTL0的时候就会发给发送方ICMP。每次发送当前IP数据报TTL1 的数据报进行测试直到IP数据报到达目的主机的地址就会回复确认。通过这种不断测试的方式进行途径路由器的测试。没到达之前会一直回复ICMP差错报告报文的超时 询问报文目的主机不回复的情况
最后需要说明的是为了防止网络设备被恶意用户探测或攻击一些主机或路由器被设置为不接收或不响应ICMP回送请求报文因此在互联网中在使用ping命令或tracert命令测试目的主机连通性时有可能会超时但并不代表网络不通。
总结 IP数据报的发送和转发 路由表
我们知道路由器是根据路由表转发IP数据报的一个IP路由表到底包含哪些主要的信息呢
如图所示有四个网络通过三个路由器连接在一起。每一个网络上都可能有成千上万个主机。可以想象若按目的地址来制作路由表就会有很多路由条数会让路由器负载很大。但若按目的主机所在网络的地址来制作路由表那么每一个路由器中的路由表就只包含4个项目即只有4行每一行对应于一个网络。
当拿到某一个IP数据报后就可以通过目的地址CIDR利用目的地址子网掩码与运算的方式来计算出对应的目的网络地址从而查表进行下一跳的跳转。
路由表的每一条记录信息如图有 目的网络地址、地址掩码、下一跳、接口
我们简化一下转发链路不用关心某个网络内部的具体拓扑及有多少台计算机连接在该网络上IP数据包转发与以太网分组转发问题并没有什么关系到了目的网络的路由上路由器自然会处理。这样的简化图强调了在互联网上转发数据报时是从一个路由器转发到下一个路由器。
由于路由器是根据路由表中的目的网络地址来确定下一跳路由器的因此有以下结论。 1IP数据报最终一定可以找到目的主机所在目的网络上的路由器可能要通过多次的间接交付。 2只有最后一个路由器才试图向目的主机进行直接交付。 默认路由
路由器还可采用默认路由Default Route以减少路由表所占用的空间和搜索路由表所用的时间。这种转发方式在一个网络只有很少的对外连接时是很有用的例如在互联网的ISP层次结构的边缘。 在前面已经讲过主机在发送每一个IP数据报时都要查找自己的路由表。如果一个主机连接的网络只有一个路由器和互联网连接那么在这种情况下使用默认路由是非常合适的直接省去了查表的流程。 比如图上H主机的路由表只要目的网络不是N1和N2就一律选择默认路由。如果是往互联网上交付数据则先把数据报先间接交付路由器R1让R1再转发给下一个路由器一直转发到目的网络上的路由器最后进行直接交付。实际上当我们在主机的网络连接属性中配置默认路由器时就是在主机的路由表中增加了一条默认路由。 如果默认路由不配置就会导致如果出现目的网络不在表上的时候IP数据报会直接丢弃。 直接交付 or 间接交付
这里A与C之间是在同一个网络之间所以可以直接通信。这也叫做直接交付。如果A与D之间想要直接进行通信连接那么就要通过路由器进行间接交付。 引出问题源主机如何知道目的主机是否与自己在同一个网络中是直接交付还是间接交付
A主机如何判断出D主机与自己不在一个网络中 C主机与F主机进行数据交互通过计算网络地址来判断是否在同一个网络中 可以通过目的地址IP和源地址的子网掩码进行逻辑与运算得到目的网络地址 如果目的网络地址和源网络地址 相同就是在同一个网络中属于直接交付如果目的网络地址和源网络地址 不相同就不在同一个网络中属于间接交付传输给主机所在网络的默认网关路由器——下图会讲解,跨网络就需要由默认网关帮忙转发 主机C如何知道路由器R的存在
用户为了让本网络中的主机能和其他网络中的主机进行通信就必须给其指定本网络的一个路由器的接口已指定好的由该路由器帮忙进行转发所指定的路由器也被称为默认网关
例如路由器的接口0的IP地址192.168.0.128做为左边网络的默认网关 主机A会将该IP数据报传输给自己的默认网关也就是图中所示的路由器接口0 路由器转发IP数据报的基本过程 1从收到的数据报首部提取目的IP地址。 2先判断是否为直接交付。对与路由器直接相连的网络逐个进行检查用各网络的掩码和D逐位相“与”看结果是否和相应的网络地址匹配。 若匹配则把分组直接交付当然还需要把IP地址转换成物理地址把数据报封装成帧发送出去转发任务结束否则间接交付执行3。 3对路由表中的每一行目的网络地址掩码下一跳接口用其中的掩码和D逐位相“与”其结果为N。若N与该行的网络地址匹配则把数据报传送给该行指明的下一跳路由器否则执行4。 4若路由表中有一条默认路由则把数据报传送给路由表中所指明的默认路由器否则执行5。 5报告转发数据报出错。如ICMP路由重定向报文 QIP数据报的首部中没有地方可以用来指明“下一跳路由器的IP地址”。在IP数据报的首部写上的IP地址是源IP地址和目的IP地址而没有中间经过的路由器的IP地址。既然IP数据报中没有下一跳路由器的IP地址那么待转发的数据报又怎样找到下一跳路由器呢
A当路由器收到一个待转发的数据报时在从路由表得出下一跳路由器的IP地址后不是把这个地址填入IP数据报而是送交下层的网络接口软件。网络接口软件负责把下一跳路由器的IP地址转换成物理地址使用ARP并将此物理地址放在链路层的MAC帧的首部包装成MAC帧然后根据这个物理地址找到下一跳路由器。由此可见当发送一连串的数据报时上述的这种查找路由表、计算物理地址、写入MAC帧的首部等过程将不断地重复进行造成了一定的开销。但是没有办法这是网络层为了实现异构网络互联而必须做的 路由选择协议
静态路由配置的缺点 综上所述人工配置静态路由性价比很低面对大型的异构网络会比较无力一旦链路上路由状态发生变更需要人工手动调整会非常不方便因此就会有动态路由选择协议。 因特网作为全球最大的网络其路由协议的选择有如下的特点
路由选择协议为什么要分层
互联网采用分层次的路由选择协议主要有以下两个原因。
1互联网的规模非常大现在就已经有几百万个路由器互连在一起。如果让所有的路由器知道所有的网络应怎样到达则路由表将非常大处理起来也太花时间。而所有这些路由器之间交换路由信息所需的带宽就会使互联网的通信链路饱和。 2许多单位不愿意外界了解自己单位网络的布局细节和本部门所采用的路由选择协议这属于本部门内部的事情但同时还希望连接到互联网上。为此整个互联网被划分为许多较小的自治系统Autonomous SystemAS。 在目前的互联网中一个大的ISP就是一个自治系统。这样互联网就把路由选择协议划分为两大类内部网关协议IGP外部网关协议EGP
内部网关协议IGP
内部网关协议Interior Gateway ProtocolIGP在一个自治系统内部使用的路由选择协议与互联网中的其他自治系统选用什么路由选择协议无关。目前这类路由选择协议很多如RIP和OSPF等。 外部网关协议EGP
外部网关协议External Gateway ProtocolEGP若源主机和目的主机处在不同的自治系统中这两个自治系统可能使用不同的内部网关协议就需要在自治系统之间进行路由选择使用一种协议将路由信息从一个自治系统传递到另一个自治系统中这样的协议就是外部网关协议。目前互联网使用的外部网关协议就是BGP的版本4BGP-4。 网关协议也可称为路由选择协议 常见的路由选择协议 路由信息协议内部网关协议
RIP协议
基本原理就是通过IP数据报的跳数来衡量到达目的网络的距离。 RIP协议认为越短的路线越是好路由无论带宽多与少。如果目的地相同且经过的路由跳数相同的情况下该路由也会被记录作为等价负载均衡。
RIP的基本工作过程
刚开始工作的时候路由器只知道自己身边的路由器并与之交换路由表就是这样一个又一个的迭代传递完成了整个路由表之间的信息传递最终整个网络的每一个路由节点都互相知道了自己与每一个路由的距离跳数。 注意当路由表发生更新时立即向所有相邻路由器发送更新报文即触发更新 RIP的路由条目的更新规则 举例C路由向D路由发送自己的更新报文周期性广播 or C路由表发生了变化。总之路由器C把自己的路由表发给了路由器D 路由器C的表到达各目的网络的下一跳都记为问号可以理解为路由器D并不需要关心路由器C的这些内容 假设路由器C的RIP更新报文发送周期到了则路由器C将自己路由表中的相关路由信息封装到RIP更新报文中发送给路由器DD拿到更新报文后会对距离先进行1操作再对自己的路由表进行比较 路由器C能到达这些网络说明路由器C的相邻路由器也能到达只是比路由器C的距离大1于是根据改造后的距离进行对比路由器D根据实际情况来更新自己的路由表 路由器更新路由表的根据是什么呢 到达目的网络不同的下一跳新路由有优势就应该更新
路由器不更新路由表的根据是什么呢 到达目的网络不同下一跳新路由劣势不更新
路由器追加新路由表等价负载均衡的根据是什么呢 相同目的网络不同的下一跳但是相同的跳数追加一条路由做等价负载均衡
因此从上述的更新策略就可以判断出来通过不断与相邻路由器交换路由信息并更新路由表最终每一个路由器到每一个目的网络的路由都是最短的即跳数最少。 例题 RIP协议存在“坏消息传播得慢”的问题
IP有一个特点就是当一个路由器发现了更短的路由时这种更新信息传播得很快但是当网络出现故障时要经过比较长的时间才能将此信息传送到所有的路由器。
N1是R2曾经保留的路由条目 R2发出的路由条目意思是经过2个单位距离路过R1传播到达R2此时R2还不知道N1到R1的线路故障可以连接到N1但R1这边知道自己连不上被R2的信息误导以为自己借用R2可以连上N1。 这种两个路由器互相以为通过对方可以连上的错误信息一直反复发送。直到下一跳的距离大于15认为N1不可达之后才会放弃。
解决方法 但是这些方法也不能完全解决“坏消息传播得慢”的问题这是距离向量的本质决定 例题 注意这里有个前提就是“坏消息传的慢”所以R1接收R3的故障消息要比R2的慢。所以R2接到故障通知要比R1要早因为R2更近
总结 RIP 协议的优缺点 优点 实现简单开销较小。 缺点 RIP 限制了网络的规模它能使用的最大距离为 1516 表示不可达。 路由器之间交换的路由信息是路由器中的完整路由表因而随着网络规模的扩大开销也就增加。 “坏消息传播得慢”使更新过程的收敛时间过长。 开放最短路径优先 OSPF (Open Shortest Path First)协议
OSPF一定程度上就是为了解决RIP协议的一些问题的 注意OSPF 只是一个协议的名字它并不表示其他的路由选择协议不是“最短路径优先”。
问候Hello分组 IP数据报首部中协议号字段的取值应为89来表明IP数据报的数据载荷为OSPF分组 发送链路状态通告LSA 洪泛法有点类似于广播就是从一个接口进来从其他剩余所有接口出去 链路状态数据库同步 根据LSD的数据库进行计算利用Dijkstra的最短路径算法来计算 使用SPF算法计算出各自路由器到达其他路由器的最短路径 OSPF五种分组类型 OSPF分组不用UDP而是直接用IP数据报传送其IP数据报首部的协议字段值为89。OSPF构成的IP数据报很短。这样做可减少路由信息的流量。数据报很短的另一好处是不必将长的数据报分片传送。分片传送的数据报只要丢失一个数据报片就无法组装成原来的数据报导致整个数据报必须重传。
OSPF的基本工作过程 OSPF在多点接入网络中路由器邻居关系建立
如果不采用其他机制将会产生大量的多播分组 若DR出现问题则由BDR顶替DR 为了使OSPF能够用于规模很大的网络OSPF把一个自治系统再划分为若干个更小的范围叫做区域Area 在该自治系统内所有路由器都使用OSPF协议OSPF将该自治系统再划分成4个更小的区域 每个区域都有一个32比特的区域标识符 主干区域的区域标识符必须为0主干区域用于连通其他区域 其他区域的区域标识符不能为0且不相同 每个区域一般不应包含路由器超过200个 划分区域的好处就是利用洪泛法交换链路状态信息局限于每一个区域而不是自治系统这样减少整个网络上的通信量同时可以避免泛洪导致的整个自治系统出现的广播风暴 总结 边界网关协议BGP Q为什么要用BGP用内部网关协议RIP或者OSPF不行吗 A1互联网的规模太大使AS之间路由选择非常困难。 2AS之间的路由选择必须考虑经过网络的路由性能不同网络之间路由的性能差异非常大根据最短距离即最少跳数找出来的路径可能并不合适并且有的路径使用代价很高或很不安全。要考虑的东西就比较多而内部网关协议是不会考虑这些复杂的问题的。 3还有一种情况如AS1要发送数据报给AS2本来最好是经过AS3但AS3不愿意让这些数据报通过自己的网络因为“这是他们的事情和我们没有关系”。但是AS3愿意让某些相邻AS的数据报通过自己的网络特别是那些付了服务费的AS。 综上所述BGP只是力求寻找一条能够到达目的网络且比较好的路由不能兜圈子而并非要寻找一条最佳路由重要的是能根据策略进行路由选择。 BGPBorder Gateway Protocol 是不同自治系统的路由器之间交换路由信息的协议 外部路由在途径的时候要考虑的东西还是比较多的。所以BGP就是为了寻找能到达目的地的路由链路要保证可达性而不是最佳性
BGP用于自治系统对外的路由两个对外路由各AS的BGP路由之间用的是TCP实现可靠连接 因为BGP路由只与BGP路由以及AS系统内的主机进行交流因此 BGP交换路由信息的结点数量级是自治系统数的量级远小于整个互联网的网络数。 因此要在许多自治系统之间寻找一条较好的路径不会耗费太多的时间。 工作过程
BGP四种报文 BGP支持CIDR 解决IGP的坏消息传的慢问题
BGP支持CIDR当然BGP协议也支持路由聚合BGP中的路由聚合通常是针对一个AS自治系统内部的网络号进行的。也就是可以简单理解为BGP的网络号为其对应的以太网共通网络前缀聚合地址
交换的路由信息包括目的网络前缀、下一跳路由器AS边界路由器以及到达该目的网络所要经过的各个自治系统序列。由于使用了路径向量的信息很容易避免产生兜圈子的路由。如果一个BGP发言人收到了其他BGP发言人发来的路径通知它就要检查一下本自治系统是否在此通知的路径中。如果在这条路径中就不能采用这条路径因为会兜圈子。因此BGP很容易解决距离向量路由选择算法中的“坏消息传播得慢”这一问题。
总结 封装不同路由选择协议报文的协议
RIP报文是利用UDP封装传输的 OSPF报文是用IP封装传输的 BGP协议是用TCP封装传输的
路由器工作原理
路由器是一种具有多个输入端口和多个输出端口的专用计算机其任务是转发分组。
路由器的构成
整个路由器可划分为两大部分路由选择部分控制平面和分组转发部分数据平面 控制平面控制报文该从哪个路由接口输出出去维护路由表等等 数据平面根据路由表进行报文转发 从左到右依次介绍
输入端口
请注意“转发”和“路由选择”是有区别的。在互联网中“转发”就是路由器根据转发表把收到的IP数据报从路由器合适的端口发出去。“转发”仅涉及一个路由器。“路由选择”则涉及很多路由器因为路由表是许多路由器协同工作的结果。这些路由器按照复杂的路由选择算法得出整个网络的拓扑变化情况因而能够动态地改变所选择的路由并由此构造出整个路由表。 路由器的输入端口和输出端口部分都各有三个方框分别代表物理层、数据链路层和网络层的处理模块。 物理层进行比特的接收。数据链路层则按照链路层协议接收传送分组的帧。在把帧的首部和尾部剥去后分组就被送入网络层的处理模块。 网络层处理模块收到IP数据报进行分析 若分组的接收者是路由器自己则将其交给相应的上层协议去处理直接交付 当这些分组是路由器之间交换路由信息的分组如RIP分组或OSPF分组等时则把这种分组送交路由器的路由选择部分中的路由选择处理机。路由信息分组 若非以上的两种分组则为普通报文网络层处理模块按照分组首部中的目的地址查找转发表根据得出的结果分组经过交换结构到达合适的输出端口。间接交付 为了使交换功能分散化往往把复制的转发表放在每一个输入端口中不必每次占用总线来查主表 这些副本常称为“影子副本Shadow Copy”。分散化交换可以避免在路由器中的某一点上出现瓶颈。 当一个分组正在查找转发表等待转发时从这个输入端口又收到另一个分组后到的分组就必须排队等待因而会产生一定的时延。 这个时延也就是之前在概述章节所讲过的四种时延中的排队时延 交换结构
交换结构Switching Fabric又称为交换组织是路由器的关键构件它将某个输入端口进入的分组根据查表的结果从一个合适的输出端口转发出去。 交换结构的速率对于路由器的性能是至关重要的。如果交换结构的速率跟不上输入端口分组的到达速率分组会因为等待交换而在输入队列中排队从而导致排队时延持续变高。 最早使用的路由器就是普通的计算机用计算机的CPU作为路由器的路由选择处理机。路由器的输入端口和输出端口的功能和普通计算机的I/O设备一样这时的路由器实际上就是一台安装了多个网络接口卡的计算机。由于其未对分组交换做出特殊优化因此所有的转发操作路由选择处理机从分组首部提取目的地址查找路由表再将分组复制到合适的输出端口的缓存中。采用这种方式分组要两次经过系统的总线一次写和一次读。性能还是很低的。 现代常见路由器交换结构如下 a表示分组通过存储器进行交换与早期的路由器的区别就是目的地址的查找和分组在存储器中的缓存都是在输入端口中进行的。
b是通过总线交换的示意图。采用这种方式时分组从输入端口通过共享的总线直接传送到合适的输出端口而不需要路由选择处理机的干预。但是由于总线是共享的因此在同一时间只能有一个分组在总线上传送。当分组到达输入端口时若总线忙总线正在传送另一个分组则分组不能通过交换结构要在输入端口排队等待。
c所示的是通过纵横交换结构Crossbar Switch Fabric进行交换。它有2N条纵横交叉的总线可以使N个输入端口和N个输出端口相连接。通过控制相应的交叉结点可使水平总线和垂直总线接通或断开将分组转发到合适的输出端口。输入端口收到一个分组时就将它发送到与该输入端口相连的水平总线上。若目标输出端口的垂直总线空闲则在这个交叉结点将垂直总线与水平总线接通然后将该分组转发到该输出端口。但若该垂直总线已被占用有另一个分组正在转发到同一个输出端口则后到达的分组必须在输入端口排队不会把分组放出来到总线上。
输出端口
输出端口从交换结构接收分组然后把它们发送到路由器外面的线路上。网络层的处理模块中设有一个缓冲区实际上它就是一个队列。当交换结构传送过来的分组的速率超过输出链路的发送速率时来不及发送的分组就必须暂时存放在这个队列中。数据链路层处理模块把分组加上链路层的首部和尾部交给物理层发送到外部线路。
一旦分组处理的速率赶不上分组进入队列的速率到了后面就会造成队列溢出再进入队列的分组由于没有存储空间而只能被丢弃。
路由器与交换机的比较 二层交换机和三层路由器为什么前面会加一个xx层 就是因为其工作的位置位于不同的层级上三层路由器工作在网络层利用网络层地址转发分组的路由器二层交换机工作在数据链路层利用MAC地址转发分组的交换机。 二层交换机的优缺点
交换机这里指的是二层交换机的最大优点是即插即用并具有相对高的分组过滤和转发速度。 即插即用是因为主机完全感觉不到交换机的存在即对主机“透明”无须进行特殊配置就可用它组网会利用arp协议自动进行学习。 转发速度快是因为交换机只需处理通过第二层传送上来的分组而路由器还必须处理通过第三层传送上来的帧。 但交换机的缺点也是非常明显的由于MAC地址是平坦的一个大型交换机网络要求交换机维护大的MAC地址表也将要求在主机中维护大的ARP表MAC地址的自学习过程和ARP会产生和处理大量广播。而交换机对广播风暴不提供任何保护措施如果一台主机失去控制不断发送大量的以太网广播帧交换机将会转发所有这些帧导致整个以太网崩溃因此出现的三层交换机就一定程度上解决了这个问题可以用VLAN划分广播域。另外交换机网络的逻辑拓扑结构被限制为一棵生成树防止报文不停兜圈子即使在物理上存在冗余链路也不可能为每对主机提供最佳路径。
三层路由器的优缺点
路由器的优缺点正好与交换机相反。其优点是能提供更加智能的路由选择并能隔离广播域。 在路由器互连的网络中网络拓扑不再被限制为一棵生成树并且可以通过路由选择协议为源和目的之间在多条冗余路径中选择一条最佳的路径路由下一跳。
由于路由器的网络寻址是层次的不像MAC寻址那样是平面的因此无须在路由表中维护所有主机的信息。路由器不会无目的地转发广播分组因此能为第二层的广播风暴提供隔离保护功能。与交换机相比路由器的缺点之一就是路由器不是即插即用的。网络管理员要为路由器的每个接口小心地配置IP地址用户需要在他们的主机中配置默认路由器的IP地址。另外路由器对每个分组的处理时间通常比交换机更长因为要进行从第一层到第三层的各种处理 层层剥开再重新封装帧 包括比较复杂的最长前缀匹配以及将IP数据报从一个数据链路层帧中取出再放入另一个数据链路层帧这些烦琐的处理。
如何选择
既然交换机和路由器各有优缺点那么什么时候应该用交换机、什么时候应该用路由器呢包含几百台主机的小网络用交换机就足够了因为它们不需要任何IP地址的配置就可以连接这些主机并提供高性能的数据交换。包含几千台主机的更大的网络通常要使用路由器除了交换机之外将整个网络划分成多个局域网并构成一个互连网络。这时路由器提供更健壮的流量隔离和对广播风暴的控制并在网络的主机之间使用更“智能”的路由选择。
三层交换机
前面我们说过单纯的使用交换机是无法隔离广播域的。而且n台交换机之间通信也需要借助路由器进行通信如果都用交换机势必会导致ARP时产生广播风暴因此现在的中小型局域网中出现了三层交换机也就是可以工作在网络层的交换机起到了隔离广播域的作用并且可以一定程度上节省了成本。 在实际应用中典型的做法是处于同一个局域网中的各个子网的互连及局域网中VLAN间的路由用三层交换机来代替普通路由器实现广播域的隔离主要目的提升性能。 只有局域网与广域网互连或广域网之间互连时才使用普通路由器。 三层交换机可以很方便地直接将多个VLAN在网络层第三层进行互连。三层交换机通常不具有广域网WAN接口主要用于在局域网环境中互连同构的以太网并起到隔离广播域的作用。 由于三层交换机所处理的都是封装在MAC帧中的IP数据报可以对处理算法进行很多特殊的优化并尽量用硬件来实现因此其转发分组的速度比传统路由器要快。
三层交换机工作流程跨VLAN通信
当一台主机通过三层交换机与另一个VLAN中的主机进行通信时
三层交换机在处理它们之间的第一个IP数据报时完全与一个普通路由器一样要根据目的IP地址使用最长前缀匹配算法查找路由表获得下一跳IP地址 得到目标主机所在网络的网络号 并使用ARP获取下一跳IP地址对应的MAC地址然后将IP数据报转发出去。
但三层交换机会将目的IP地址与下一跳MAC地址的映射关系记录在高速缓存中当后续IP数据报到达时就不再通过最长前缀匹配算法查找路由表了而是根据目的IP地址直接从缓存中查找相应的下一跳MAC地址并用自己的出口MAC地址和查找到的下一跳MAC地址直接替换包含该IP数据报的以太网帧的源和目的MAC地址三层交换机连接的都是以太网直接在第二层将帧转发出去。查找缓存、替换MAC地址全部由硬件完成因此速度非常快几乎没有第三层的复杂处理但要查看目的IP地址。这就是所谓的“一次路由多次转发/交换”。
要注意的是主机在上述过程中完全感觉不到三层交换机和普通路由器的区别。虽然三层交换机的转发性能比普通路由器要高但其通常接口类型一般就只是以太网接口支持的路由选择协议也较少。
虚拟专用网VPN与网络地址转换NAT
虚拟专用网VPNVirtual Private Network
由于 IP 地址的紧缺一个机构能够申请到的IP地址数往往远小于本机构所拥有的主机数。考虑到互联网并不很安全一个机构内也并不需要把所有的主机接入到外部的互联网。假定在一个机构内部的计算机通信也是采用 TCP/IP 协议那么从原则上讲对于这些仅在机构内部使用的计算机就可以由本机构自行分配其 IP 地址。 上图是因特网数字分配机构IANA官网查看IPv4地址空间中特殊地址的分配方案 用粉红色标出来的地址就是无需申请的、可自由分配的专用地址或称私有地址 私有地址只能用于一个机构的内部通信而不能用于和因特网上的主机通信 私有地址只能用作本地地址而不能用作全球地址 所有路由器对目的地址是私有地址的IP数据报一律不进行转发 本地地址与全球地址 本地地址——仅在机构内部使用的 IP 地址可以由本机构自行分配而不需要向互联网的管理机构申请。全球地址——全球唯一的 IP 地址必须向互联网的管理机构申请。问题在内部使用的本地地址就有可能和互联网中某个 IP 地址重合这样就会出现地址的二义性问题。 所以部门A和部门B 都至少需要一个 路由器具有合法的全球IP地址这样各自的专用网才能通过这个公网的IP来利用公用的因特网进行通信。 部门A向部门B发送数据流程与公网相连接的R1与R2路由器发现数据报的转发不是在内网进行的要途径公网再进入异地的内网系统。因此要对这个数据报加密加密后在公网上传输R2接收到之后解密加密的数据报解密之后暴露出内网目标地址把数据报送往目的主机。 两个专用网内的主机间发送的数据报是通过了公用的因特网但在效果上就好像是在本机构的专用网上传送一样 数据报在因特网中可能要经过多个网络和路由器但从逻辑上看R1和R2之间好像是一条直通的点对点链路 这种点对点的情况就叫IP隧道技术 这种利用IP隧道技术就是虚拟专用网Virtual Private NetworkVPN的实现方式。在效果上就好像是在本部门的专用网上传送一样。 网络地址转换NATNetwork Address Translation
NAT是软件并且他的出现是为了解决IPV4地址数量不够用的情况。
举例内网要发送给外网信息直接传肯定不行因为路由器不允许私网的数据报直接转发到外网所以这里要用NAT。 目的就是为了将其私有地址转换为全球IP地址从而进行数据传输 使用私有地址的主机如何才能与因特网上使用全球IP地址的主机进行通信 这需要在专用网络连接到因特网的路由器上安装NAT软件 专有NAT软件的路由器叫做NAT路由器 它至少有一个有效的外部全球IP地址 这样所有使用私有地址的主机在和外界通信时都要在NAT路由器上将其私有地址转换为全球IP地址 假设使用私有地址的主机要给因特网上使用全球IP地址的另一台主机发送IP数据报直接发送肯定不行因为源地址是内网的主机地址发不到公网上不说发出去了想往回传确认帧内网IP谁都不认。
内网发送数据报在经由装有NAT软件的路由器的时候该数据帧的源地址就会从内网地址转换为NAT的公网IP地址。同时路由器也会记录这个内网主机IP与目的主机IP的对应关系。
因特网上的目标主机给源主机回传数据报就会根据当时NAT由内网IP转换出来的地址进行回传当回复的数据帧到达NAT路由的时候路由会根据路由表把IP数据报的地址再改回内网主机IP的地址。这样回传的数据就回到了内网主机 当专用网中的这两台使用私有地址的主机都要给因特网使用全球地址的同一台主机发送数据报时在NAT路由器的NAT转换表中就会产生两条记录分别记录两个私有地址与全球地址的对应关系
在发出时NAT会用两个不同的公网地址来作为源地址对应发出时的两台内网主机地址。这样在外部主机回复时NAT就能区分出来把数据报给哪台内部主机。
而且这种基本转换存在一个问题NAT的表能提供的公网地址终究是有限的。 解决方法用 地址端口号 的组合基本上就可以解决问题。将地址区分改变为同一个公网IP下利用端口号区分。毕竟端口号可以分配到65536个。大大增加了可用的地址数量也就解决了地址不足导致无法区分的问题。 我们现在用的很多家用路由器都是这种NAPT路由器 内网主机与外网主机的通信是否能由外网主机首先发起
答案是不可以的这种只能由内网发起通信外网直接找内网是找不到的。所以这种通信的发起方必须是内网方。 即便外部发起了到了NAT路由的时候NAT路由发现自己没有记录对应的IP映射关系也就不知道该把确认帧发给内网哪台主机因此外部主机无法主动与内部主机沟通。 总结