网络层所处的地位
网络层在五层协议模型当中处于第三层的位置,它为上层的传输层提供服务。
应用层的数据传输单位是报文。应用层把报文交给传输层之后,传输层会把报文拆分成报文段,紧接着传输层又把报文段交给网络层,让网络层进行传输,那网络层会在报文段的基础之上加一个首部,我们把它称为IP数据报的首部,那这样的一整块数据就是所谓的IP数据报,也就是我们之前经常提到的分组。
IP数据报和IP分组这两个术语在计算机网络这门课程当中是等价的,在这个IP数据报的首部这个位置会包含原IP地址和目的IP地址,也就是指明了数据的发送方和接收方的IP地址。
网络当中的每一台主机都会被分配一个IP地址。所以只要把发送方,接收方的IP地址填到这个IP数据报的首部,那么中间节点路由器就可以去根据首部当中的IP地址信息,去决定要把这个分组转发到哪个位置,因此网络层实现了主机到主机之间的传输。
那么,在网络层之下,是数据链路层,网络层会把IP数据报交给数据链路层,数据链路层会把IP数据报封装成帧。然后传递给下一个相邻的节点。所以数据链路层,它实现的是相邻节点之间的数据传输。
建议大家去百度在百度搜索IP地址。看一下你的电脑或者你的手机IP地址等于多少?那这是我的电脑查到的IP地址信息。
可以看到IP地址由这样的四个数字组成,中间用小圆点进行分隔。那每一个IP地址。总共是32比特。
为了方便人类阅读,我们一般会把IP地址记作十进制的形式,以8比特为一组记为十进制数。比如说这儿的8比特,对应的就是59。
以此类推。那显然,每个分组用八比特来表示,因此每个分组可以表示的这个合法范围就应该是0到255。因为八比特的二进制只能表示这个范围。
网络层的功能
我们需要了解的网络层功能有这样的三个。
首先是异构网络互联,其次是路由与转发,最后是拥塞控制。
异构网络互联
先看第一个,异构网络互联,我们知道路由器是网络当中的一个非常重要的设备。路由器可以把不同的网络连接起来,组成一个更大范围的互联网。那由于每一个网络的拓扑结构不同,以及物理层、链路层的实现方式不同,比如说有的网络用以太网技术去实现,有的网络是用802.11无线局域网去实现,也有的网络可能是用令牌环网的这种技术去实现,所以不同的网络,它的物理层链路层的实现方式不同,展现出来的拓扑结构也不同,
每个网络当中连接的主机类型也各不相同。比如说以太网当中可能会连电脑,802.11无线局域网当中可能会连电脑也可能会连手机。那这是因为每个网络的形态各异,所以这些网络被称为异构的网络。那么,通过网络层的处理,可以实现异构网络的互联,屏蔽物理层,链路层的区别。
在这个地方需要补充一个术语,大家有必要注意一下,在TCP/IP的文献当中,路由器也会被称为网关。网关这个术语在真题当中也会出现。
好,那么这是第一个功能,接下来第二个功能就是路由与转发。
路由与转发
首先,路由的功能需要各个路由器之间相互配合来实现。各个路由器需要运行某一种路由协议。比如说有一堆路由器共同运行rip路由协议。或者运行OSPF路由协议,那这些路由器通过路由协议就可以实现相互配合。最终,每个路由器都会构造出自己的路由表。然后根据路由表就可以去规划一个IP数据报的最佳转发路径。比如在这张图当中有四个路由器,
假设这四个路由器共同运行rip路由协议,那么根据这个路由协议的功能,这些路由器之间会相互通信。比如说r2这个路由器会告诉他的邻居,通过我这个中转站可以到达192.1.6这个网络。
那类似的r1这个路由器也会通知他的邻居,通过我这个中转站可以直接到达192.1.1.0这个网络。那这样的话r3就能够知道,如果要给192.1.1.0这个网络上的某一台主机发送数据报的话,那我可以先把数据报转给r1,然后r1就可以帮我把这个数据报传递到对应的网络上。那类似的道理r2告诉r1,通过我这个节点可以到达1.6.0这个网络,那r1又可以把这个消息告诉r3。就是说你把数据报交给我,我再交给r2,r2就可以把数据报交给1.6.0这个网络。所以对于r3这个路由器来说,它可以在自己的路由表上添加新的信息。就是如果我转发的这个IP数据报最终要到达192.1.6.0这个网络的话。那么,我同样可以转发给r1这个路由器。通过r1这个路由器最终可以到达192.1.6.0。
好,那这就是路由的功能。
总之,各个路由器运行某一种路由协议,最终每个路由器都可以得到自己的路由表。有了路由表,每个路由器就能够知道一个IP数据报要到达目的网络应该从哪个地方转发?如果我们把这个路由表进行精简,让它变成一个更精简的数据结构。那么就可以得到一个转发表。每一台路由器都有一个转发表,那由于转发表比路由表要更精简很多,所以转发表的检索速度要比路由表更快。那可以看到转发这个动作是一台路由器自己的事情,而路由这个功能的实现需要多台路由器相互配合才能实现。
拥塞控制
第三个功能叫做拥塞控制。在一个网络当中产生拥塞的原因是网络当中出现了过量的分组,超出了网络所能承受的这个负荷,最终导致了网络整体性能的下降。
可以类比节假日堵车的情况,节假日的时候我们路上的车辆会增多,但是车辆增多到一定程度的时候,收费站的吞吐量反而会降低。因为路上会塞车
那计算机网络和道路交通网络也是类似的道理,如果网络上的分组数量太多。那么就有可能出现网络上的分组数量在增加,但是有效的吞吐率反而降低的这种情况。当这种现象发生的时候,就出现了网络拥塞。
为了解决网络拥塞的问题,网络层需要实现拥塞控制的一些策略。
那大体来说,可以分为静态的和动态的这两种策略。静态的拥塞控制称为开环控制。动态的称为闭环控制。
所谓开环控制,就是在部署网络的时候提前设计好预防拥塞的方法。并且这种提前设计好的策略,一旦网络开始运行就不再修改,那相比之下,闭环控制会更灵活。
采用闭环控制,需要动态的去监视网络状态,及时的发现哪里发生了拥塞,并且把拥塞的信息传递给相关的路由器。紧接着,相关的路由器在调整自己的路由表。
举个例子,所谓的静态方法控制拥塞就有点类似于,如果你要从你们学校去二仙桥。此时一个有经验的老司机给你支招。他告诉你,从学校到二仙桥,可以先走成华大道。如果成华大道拥堵的话,那么就换一条路,从成华小道走,如果成华小道还拥堵,那么就从星光大道走。
这是老司机告诉你的经验,从学校到二仙桥有三条路径可以走,第一条如果拥堵,走第二条,第二条如果拥堵走第三条。显然,这是一种静态的拥塞控制方法。这个老司机提前给你部署了一套预防拥塞的方法。a不行就做b,b不行就做c。这是静态的拥塞控制。
那什么是动态的拥塞控制呢?同样的,你要从学校这个节点。把自己转发到这个二仙桥这个节点。这次你没有请教老司机,而是打开了高德地图。高德地图会实时的监测每一条道路上的拥堵情况,如果其中的一条道路此时已经堵死了,那么它会给你规划另一条更不拥堵的道路。如果这三条道路都堵死了,那么高德地图还能够给你规划第四条不拥堵的道路。那这就是闭环控制动态的拥塞控制方法。
那刚才在这个地方,我们提到说如果监测到了这个网络当中什么地方发生拥堵,那么就需要把这个拥堵拥塞的信息传递给相关的路由器。通过ICMP协议去传递。
举个例子r2这个路由器此时监测到1.6.0这个网络发生了拥塞。那么,这个路由器可以选择给其他的这些路由器发送ICMP报文。
在这个报文当中,通知其他的路由器以及通知这些路由器相连接的这些节点。告诉他们,此时这个网络已经发生拥堵了。接下来要往这个网络发送的这个数据包需要慢一点。那这样的话,整个网络当中的其他节点就会放慢给这个网络发送的IP数据包。从而就可以缓解这个网络拥塞的问题。
那这就是网络层所需要实现的一些功能。
参考资料:25王道计网
标签:这个,IP,网络层,网络,计算机网络,拥塞,概述,路由器 From: https://blog.csdn.net/qq_56249308/article/details/143125563