网络协议笔记-网络层-划分子网、IP数据报的分组转发
【1-子网及子网掩码】
【1.1-为什么划分子网】
简单点说,就是IP地址不够用了,互联网的发展太快,IP地址不够分了,两级IP地址的设计不太合理,因为随着网络的增多路由表会变得巨大。
书上的总结是这样的
-
- IP地址空间的利用率有时很低。例如A类地址网络可连接主机数超过1000万,但是我申请了A类地址网络,但是实际只使用了10万
- 给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。例如互联网中的网络数量越多,路由器的路由表的数目也就越多,这无形中增加了路由器的成本
- 两级IP地址不够灵活。
【1.2-什么是子网】
这是一段是摘抄《计算机网络》的话。一个拥有许多物理网络的单位,可将所属的物理网络划分为若干个子网。划分子网纯属一个单位内部的事情,本单位以外的网络看不见这个网络是由多少个子网组成,因为这个单位对外仍然表现为一个网络。我的理解就是在一个局域网网络中,把所有的主机再划分一次,形成很多个在这个局域网中相对独立的子网络,这些个子网络是在这个局域网内的,外部是不知道的。
【1.3-划分子网后的IP地址】
IP地址 ::= {<网络号>,<子网号>,<主机号>}
【1.4-子网掩码】
子网掩码的作用就是告诉路由器,这个IP地址是在该网络中哪个子网中。因为从IP数据报的首部无法看出源主机或目的主机所连接的网络是否进行了子网划分。而且IP地址本身以及数据报首部都没有包含任何关于子网划分的信息,所以就诞生了子网掩码来解决这个问题。
子网掩码具体的使用过程是这样的:把IP地址的子网掩码和收到的数据报的目的IP地址逐位相与操作,就能得出所要找的子网地址,下图是一个例子。
子网掩码是一个32位的2进制数,默认情况下,IP地址的子网掩码是,其对应的网络号的所有位置都是1,对应于主机号的所有位都是0,所以默认的子网掩码如下图所示。
(上图来自百度,若侵犯版权,告知会立即道歉删除)
子网掩码是一个网络或一个子网的重要属性,路由器的路由表中除了目的网络地址,还要加上子网掩码这一列,这样路由表中每一行的映射关系就是,目的网络地址--子网掩码--下一跳
【使用子网的分组转发】
- 从数据报的首部提取目的主机的IP地址D。
- 先判断是否为直接交付,对路由器直接相连的网络逐个检查:用各网络的子网掩码和D逐位相与操作,看结果是否和相应的网络地址匹配,若匹配,则N就是与此路由器直接相连的某个网络地址,就进行直接交付,不需要再经过其他的路由器,直接把IP数据报交付目的主机(这个数据报交付给目的主机的过程包括,把目的主机的IP地址通过ARP协议转换为对应具体的硬件地址,然后把IP数据报封装成MAC帧,并把硬件地址写入MAC帧中,把MAC帧发送给硬件地址。这是数据链路层发生的,下面说到的把IP数据报交付目的主机都隐含包括该过程);否则的话就是间接交付,需要执行3
- 若路由表中的有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明下一跳路由器;否则执行4
- 对路由表的每一行(目的网络地址,子网掩码,下一跳地址),用其中的子网掩码和D逐位相与,其结果为N,若N与该行的目的网络地址匹配,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行5
- 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行6
- 报告转发分组出错