网络层

今天学习了网络层,避免忘记就自己写了下来。

一.我的问题

网络层是什么?网络层包括什么?具体的运作方式。

二.核心概念

IP地址

IP地址是一个32位的二进制数字串,字串的含义分别位网络号、主机号。网络号是将主机以集合的形式划分,而网络号就是划分集合的标准。而主机号在某个集合里才有意义,它就像集合的元素一样。有多少网络号就有多少集合,而某个网络号下的主机号有多少就说明该集合下的元素有多少个。以ABC三类为标准的IP地址具体位数如下表:

地址解析ARP

ARP协议建立的目的是为了通过IP地址解析出MAC地址,其实说是解析,不如说是找到二者的关系。每个主机里的高速缓存里都存放了局域网主机的IP地址以及相对应的MAC地址。下面简单介绍一下存放的过程吧

首先主机1通过局域网广播:我的IP地址是XXXXXX,MAC地址是AA-AA-AA-AA-AA-AA,我希望找到IP地址是YYYYY的MAC地址,而主机的IP是YYYYY,则把自己的MAC地址发给主机1,于是主机1才自己的高速缓存中建立关于主机D的IP与MAC的映射。

IP数据报

IP数据报主要分为两部分:首部、数据部。首部中又分为定长部分、补充部分,定长部分放置了一些属性,这些属性都代表了特定的含义,我就不一一赘述了。

转发分组算法

转发分组算法主要是针对主机之间的通信。现在电脑到处都是,所以如果直接安排主机与主机之间的通信,通过调查路由表找到IP数据报下一跳的位置的方法不可行。因为主机与主机的数量太多,而路径如果通过路由器记录下来的话,那通信的时间就像疯狂动物城里的闪电的动作,不忍直视。因而不直接让主机与主机通信,而是寻找目的IP地址的网络号。

转发分组算法简单说就是直接或者间接找到目的网络地址。

直接就是在同一局域网,也是优先判断的。

间接中优先判断的是目的IP地址是否具有特定路由,若否,进行下一步。即在路由表中找到目的IP地址的网络的下一跳地址,否则报错。

子网

子网是就所处网络号下的子集,将IP地址中的主机号作为子网号。格式为:网络号,子网号,主机号

在网络下划分子网占据了主机号的位数,因而每个子网下的主机数量一般小于未划分子网时的主机数量。

子网掩码

逐位与运算(子网掩码+目的IP地址)=目的网络号,而目的网络号的作用在转发分组算法中已经提到了。

含子网的转发分组算法

无论是否含子网,都是找到目的IP所在的网络,而当有子网时,只是所在网络更精准了。

CIDR记法

CIDR记法是把IP以区块划分了,简单说白了还是划分集合,然后在集合里安置元素,本质是ABC类IP地址是一样的。CIDR记法的IP地址格式为:网络前缀+主机号/网络前缀位数

既然IP地址的本质没变,那CIDR下的IP依然可以有子网,子网码依然是在主机号占据几个数位。子网掩码为(网络前缀的个数)1+(主机位个数)0。

最长前缀匹配

最长前缀匹配依然是主机之间的通信,依然是优先找到特定的网络,即网络前缀。但是有所区别。当目的IP地址存在时,在路由表里寻找网络前缀,子网掩码,下一跳位置(他们三者是一起的)。让目的IP地址与路由表中的子网掩码逐位与,若得到的结果与网络前缀一致时并不直接根据该网络前缀对应的下一跳,而是遍历,通过刚才的过程,找到网络前缀最长的那个,然后根据它所对应的下一跳作为路径。因为网络前缀长的一定是那个网络前缀短的子集。

根据网络层的学习经历,尤其是在解决主机与主机之间的通信问题时,由于直接让主机与主机通信实现的不可能性与复杂性,因而退而求其次让主机优先找目的IP所在网络,再由所在网络到达目的主机。这种在无法直接解决问题时,就找到与直接答案最近的答案,将其作为跳板到达最终答案的思想很棒。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容