电话交换网的寻址
电话交换网的地址编号就是电话号码。电话号码在全球都有统一规范。我们暂不考虑企业内部的交换机,只考虑整个统一的电话交换网,有以下几个原则:
1. 电话交换网上的电话号码(地址)必须统一分配;
2. 任何电话交换机都必须了解这一分配规则;
3. 电话交换机将无条件执行人赋予它的功能,决不能“随心所欲”,更不能“为所欲为”;
4. 电话交换网上的终端才分配号码,交换机并不分配电话号码。
当然,第3条说了也是白说,毕竟它是机器,机器绝对会听人的话。
有了上述原则,我们看一看电话号码是如何分配的。
给每个国家分配一个唯一标识的国家代码电话号码,比如中国是86,美国是1.每个国家可以选择是否设置城市级别的区域号码。比如在中国,长沙是0731,北京是010,如下图
然后,每个城市都把号码分成“块”,每个块分属于不同的地区。比如北京的号码,我们可以把11xxxxxx分配给海定区,12xxxxxx分配给朝阳区,等等。这样分的好处是简化路由表的长度。
比如你把11和12开头的号码打乱分给两个区的终端,如果一个电话号码从朝阳区的交换机进入北京网络,来寻找11234567的这个终端,而这个终端在海淀区,那么这个号码在朝阳区的交换机上必须有条路由,11234567 C1-2-3,也就是说,要到达11234567,必须从C1-2-3这个端口出去。如果另一个号码12345680也在海淀区。朝阳区的交换机就要增加这么一行路由:12345680 C1-2-3,也就是说要到达12345680,也必须从C1-2-3这个端口出来。
这样太复杂了!海淀区没增加一个终端,就要在朝阳区的交换机上增加一条路由。而如果将11前缀分配给海定区,12前缀分配给朝阳区,问题就简化了很多。比如上例中的情况,只需在朝阳区的交换机上设置这么一条路由就够了:11xxxxxx C1-2-3。
其实国家代码、区号起到的作用和终端号码前缀的作用是一样的。在同一个国家,号码具有唯一标识,在一个城市,号码也具有唯一标识。如果在不同的国家,有可能存在除了国家代码不同,号码其他部分相同的情况。如果国家代码相同,地区代码不同,也可能出现不同地区拥有相同的号码的情况。
这和门牌号是非常相似的。我们去某个朋友家,朋友把地址告诉你,你肯定不会先去查看他的具体楼层,而是先看属于哪个城市、哪条街道、哪个小区,然后再看具体的楼层和房间号,这样才能快速找到朋友家。只是通信技术中的地址(号码)更加规范和严格,稍有分配错误,就别指望系统有恢复能力。从这个角度讲,机器的特点是,很笨但很可靠。
以太网内的寻址
在一个以太网内,连接了几台到几十台主机。要把信息从A主机送到B主机,一般都通过IP层做互通。但是对于一台主机而言,其底层的硬件和IP地址并没有关联,也就是说,一个IP数据包从A传送到B,B并不能通过IP地址匹配的方式识别自己是不是这个包的目的地,而是通过底层硬件来匹配。那么底层硬件知道什么呢?硬件只知道MAC地址——很多时候,MAC地址被称为“硬件地址”。MAC这个名词的英文全称Media Access Control,是指“媒体访问控制”。对于初学者,要理解什么是“媒体访问控制”的确有些难度,你只要把它理解为信号在通信线路介质传送中一种最基本的管理和控制能力即可。研究传送介质的管理和控制,距离“业务”还很远。
以太网的每一个节点有全球唯一的48位地址,这个地址是由IEEE组织管理的。网卡制造商将MAC地址烧录到每一块网卡里。MAC地址就像身份证号码一样具有唯一性。
MAC地址确定,“门牌号”就编号了。继续讨论数据帧寻找目的地B的过程。首先,主机A发送一个叫做ARP(“地址解析协议”)的以太网帧,这个帧包含A的MAC地址、A的IP地址、目的地B的IP地址,而把目的地B的MAC地址设置为00000000,意思是:本包要发送给所有局域网中的主机——就像A要送礼物给B,但是只知道B的名字(IP地址)却不知道B的住址(MAC地址),那么这个ARP包的广播,就像A挨家挨户去敲门一样,它要寻找叫做m.n.p.q的主机。于是所有住户(主机)判断自己的名字(IP地址)是否为m.n.p.q。只有B发现自己的名字是这个,于是A就记下了B的门牌号(MAC地址),以后A和B之间的礼尚往来,就不需要再去挨家挨户敲门了。
MAC地址和IP地址的映射关系,被每台主机不断增加核更新着,就成了“地址映射表”。当然,每次的添加或更改表项的工作都被赋予了一个计时器,这使得这种对应广西能够存储一段时间,如果在计时器到时之前没有再次捕捉到更新,该表项将被删除。也就是说,主机的MAC缓存是有生存期的,生存期结束后,将重复上述过程。
当局域网的主机通信量增大、主机数量增大,通信效率会大幅降低。这很好理解。任何一个会议,如果没有主席控制,几千人——他们都文质彬彬很有礼貌,他们都有条不紊地遵守纪律,势必也需要很长时间才能讨论清楚任何一个议题。很难想象这样的会议有什么好的效果!
一般这类会议的解决方案是设置几个会场,每个会场分别讨论,然后汇总。而以太网技术中,可以把所有主机分为几个组,每个组采用桥接的方式连接,每个组,就被称为一个“网段”,而连接组的设备被称为“网桥”。注意,一个网段的IP地址,必须是同一个子网下的!即同一子网段的IP地址。在现实生活中,网桥可以是一台独立的设备,也可以是一段链路层的线路。
想象一下以太网中熙熙攘攘的热闹场景吧,各种类型的以太网帧川流不息,找“路”的,发“货”的,忙得不亦乐乎。但是以太网有一些基本规则,比如只有格式完整的数据包才能从一个网段进入另一个网段;再比如冲突和数据包错误都将被隔离到本网段。通过记录、分析网络上设备的MAC地址,网桥可以判断它们都在什么位置。这样,它就不会向非目标设备所在的网段传递数据了。
IP网寻址
IP网寻址是TCP/IP中的精华,它简单、灵活、开放、实用。从IP地址规划开始,IP寻址就开始了一套严格的规划,路由和交换的基本原则、DNS、NAT的应用等。IP地址的规划,让整个IP网络有了行政区划和门牌号。一个IP数据包从一台主机出发,要到达另一台主机,就需要“路由”了。严格地说,不同网段之间的IP数据包的传送被称为“路由”。如果你要把包裹寄给伤害的亲戚,那么你需要通过邮局走复杂的“邮路”,而如果你只想给你的邻居送圣诞礼物,你就直接送过去就好了,根本没必要经过邮局。IP的路由就类似邮政中的“邮路”。
进入IP网的IP数据包,就像一个刚从外地来访的人,他手里握着朋友的地址,在熙熙攘攘的城市边缘,不知道前面等待他的是什么。IP数据包和这个人一样,他知道自己的目的地,却不知道如何到达目的地。这么多出口,走哪条呢?路由器是个城市的老者,它问IP数据包:你从哪儿来?要到哪儿去?IP数据包从自己的分组结构中取出自己的出发地和目的地,路由器经过判断,会告诉它,你要从第5个出口出去!IP数据包根据老者的指示离开这台路由器,到达下一个路由器,继续上述过程;如此反复,直到它到达自己的目的地。
但是路由器是根据什么来指路的呢?奥秘就在于每台路由器都存储着一张路由表,这张表中的内容会正确地指引每个IP数据包前进的道路!
IP路由的技术原理,就是讲任何一个IP数据包的目的IP地址取出,与路由表对照,定位出口在哪,并将IP数据包输送到该出口。当然,如果该输出端为帧中继端口,那么IP数据包必须按照相关规范封装成特定DLCI值的帧中继格式,从该端口传送出去。
现实存在一种状况,在路由器的路由表项中,一个目的地地址可能有多条路径可供选择。一个IP数据包进入路由器,路由器告诉它。“兄弟,你要到罗马,这有多条路,你随便选一条吧!”IP数据包是没有智能的,如果让“非智能体”自己选择出路,它只有一个结局——迷失方向!虽然路由器指出了到罗马的多个出口,但是就某个特定IP数据包而言,究竟选择哪个出口,权利依然在路由器。路由器的组织相当严密,会让目的地是罗马的IP数据包按某个规则从不同的出口出发。也就是说,对于某个特定的IP数据包,路由器只会给它某个确定的出口,如果其端口在同一网段内,则路由器会发生混乱。这就是路由器的“转发”机制,而这种转发机制,同时也实现了“负载均衡”。