1、什么是“network”?
此处的“network”,确切的说是指“物理网络”。就是有几台电脑或者路由器通过网线直接互联,中间不再经过任何路由器。而且,他们共享IP地址的“network prefix”,这是由后面ip数据包的寻址需求所决定的。
为了理解IP协议寻址的不断发展,我们不得不讨论互联网的最初形式,历史回溯到加州伯克利大学发布的4.2bsd,世界上第一个tcp/ip协议栈的实现。
在互联网设计的最初,人们就设想会有很多计算机通过网线互联起来,这就产生了一个问题:数据包如何寻址?即怎样将数据包从src host传输到dest host。人们最初是设计了一个两层的。这个想法也是很自然的,和现实生活中我们给朋友寄信差不多。邮局在拿到你的信之后,首先把它邮到你朋友所在的省,再是县,最后可能到某个村。等这封信到达村上的时候,村长就可以直接把信送到你朋友的手中,这是因为一个村落不大,大家彼此都认识。这个小村庄就类似于我们现在要讨论的“物理网络”,也就是我们常说的“局域网”。只不过在邮信的过程中可能采用了多层模型。从 中国(相当于的因特网)-》省会 是一层,从 省会-》县城 是一层,从 县城-》镇 是一层,从 镇-》村(相当于局域网) 是一层,最后从 村-》朋友手中 是最后一层。可见在我们这个邮信的模型中,采用了5层设计。当时最初的因特网采用的是2层设计,就相当于只有“中国”和“村落”两成。邮局拿到信之后就一下子送到村上,然后村长再交给你的朋友。
而且,最初的互联网设计者们考虑到用户所需求的物理网络的大小之分。所以将ip地址分类,主要是A,B,C三类。A类规模最大,B类规模次之,C类规模最小,类似我们先前的大村庄和小村庄之分。而且,聪明的网络工程师直接将类别信息编址在ip地址中。这样导致了,最初tcp/ip协议栈内部的路由表只需包含dest和gateway,而无须包含现在的netmask(掩码)。这是因为对于任意的一个ip,它的network prefix和host number的界限划分是固定。而我们的路由器在寻址时主要依据ip地址的network prefix。
那么,在一个局域网中,可不可以存在一台主机它的IP地址的network prefix,和该局域网中的其他机器的IP的network prefix不同呢?理论上当然可以。但是,实际上除非世界上所有的路由器都给它特殊照顾,即在自己的路由表中专门为它增添一个路由条目,否则这台机器就像从因特网上蒸发了一样,我们无法根据它的IP地址与它取得联系。这就好比我们过年时走远方亲戚,暂时离开了自己的村庄,要是这个时候别人给你写信,你就不可能在亲戚家收到。只有等到你回到自己村上的时候,才能收到信件。
此处的“network”,确切的说是指“物理网络”。就是有几台电脑或者路由器通过网线直接互联,中间不再经过任何路由器。而且,他们共享IP地址的“network prefix”,这是由后面ip数据包的寻址需求所决定的。
为了理解IP协议寻址的不断发展,我们不得不讨论互联网的最初形式,历史回溯到加州伯克利大学发布的4.2bsd,世界上第一个tcp/ip协议栈的实现。
在互联网设计的最初,人们就设想会有很多计算机通过网线互联起来,这就产生了一个问题:数据包如何寻址?即怎样将数据包从src host传输到dest host。人们最初是设计了一个两层的。这个想法也是很自然的,和现实生活中我们给朋友寄信差不多。邮局在拿到你的信之后,首先把它邮到你朋友所在的省,再是县,最后可能到某个村。等这封信到达村上的时候,村长就可以直接把信送到你朋友的手中,这是因为一个村落不大,大家彼此都认识。这个小村庄就类似于我们现在要讨论的“物理网络”,也就是我们常说的“局域网”。只不过在邮信的过程中可能采用了多层模型。从 中国(相当于的因特网)-》省会 是一层,从 省会-》县城 是一层,从 县城-》镇 是一层,从 镇-》村(相当于局域网) 是一层,最后从 村-》朋友手中 是最后一层。可见在我们这个邮信的模型中,采用了5层设计。当时最初的因特网采用的是2层设计,就相当于只有“中国”和“村落”两成。邮局拿到信之后就一下子送到村上,然后村长再交给你的朋友。
而且,最初的互联网设计者们考虑到用户所需求的物理网络的大小之分。所以将ip地址分类,主要是A,B,C三类。A类规模最大,B类规模次之,C类规模最小,类似我们先前的大村庄和小村庄之分。而且,聪明的网络工程师直接将类别信息编址在ip地址中。这样导致了,最初tcp/ip协议栈内部的路由表只需包含dest和gateway,而无须包含现在的netmask(掩码)。这是因为对于任意的一个ip,它的network prefix和host number的界限划分是固定。而我们的路由器在寻址时主要依据ip地址的network prefix。
那么,在一个局域网中,可不可以存在一台主机它的IP地址的network prefix,和该局域网中的其他机器的IP的network prefix不同呢?理论上当然可以。但是,实际上除非世界上所有的路由器都给它特殊照顾,即在自己的路由表中专门为它增添一个路由条目,否则这台机器就像从因特网上蒸发了一样,我们无法根据它的IP地址与它取得联系。这就好比我们过年时走远方亲戚,暂时离开了自己的村庄,要是这个时候别人给你写信,你就不可能在亲戚家收到。只有等到你回到自己村上的时候,才能收到信件。
相反,现在假设一个路由器有三个接口,其中2个接着内部的局域网,第三个接口接通因特网。现在的问题是,这2个局域网可不可以 使用相同的“network prefix”?答案是否定的。因为假如有一个数据包路由到这台路由器,那么这台路由器该将这个数据包发送到哪个局域网?因为这2个局域网使用相同的“network-prefix”,而在路由器中的路由条目只有“dst”,“gateway”,“interface”三项而且只使用IP数据包地址的“network prefix”进行匹配查找,结果是路由器无法决定该把数据包送到哪个局域网中。