【Internet History, Technology, and Security】第五讲心得(下)
结束了链路层的故事后,接下来要说明的是网络层。
The InterNetwork(IP)
在当时,有超过5000名的工程师在考虑网络层的问题:假设你有一个包裹,上面已经写好了收发地址,我们知道了有哪些路可以通往目的地,但是要如何运送或是用什么手段运送这个包裹,就是网路层要解决的问题,所以说,相较于链路层,我们在生活中更能直观感受到的应该是网路层,这也就是为什么有这么多人研究的原因。
在链路层,我们通过MAC地址来分辨不同的设备,那么在网络层,自然也需要对应的地址来对不同的主机进行区分,这就是IP地址。举个不太恰当的例子,IP地址就像电话号码一样,它是用户身份识别的账号,而且偶尔也会重组,但IP地址是基于你的连接位置而生成的,无论你走到哪里,你都得改变地址。
IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节),它分为两部分,前半部分为网络号,说明你所处的网络,当数据包位于网络中间时,它不会真正查看所有数字,它只会查看前缀,例如,网络会认为所有发送到密歇根大学的数据包都是141.211.*,之后我们在密歇根内部分配这些数字,然后这个数字由分配数字的互联网机构分配给我们,也就是后半部分的主机号。这样做的好处是,当计算机希望跨越互联网发送信息时,路由器必须做的事情会被简化,因为它只需要查看前缀,不需要看整个地址。
而在跨越网络的过程中,路由器会通过路由表来判断接下来要走的路线,路由表记录了每个路由器之后的最优下家,它是会通过对应的协议进行动态更新的,每隔固定时间,每个路由器会进行一次询问,以此来判断是否更新当前的路由表。
回到正题,IP地址会随着你的接入点变化,当你带着笔记本电脑前往星巴克或是教学楼时,你的IP地址将会是不同的。这时候你可能会有疑问:我们怎么能保证在这些地方都能直接连上网?按照前文所说,每到一个新的地方不是应该有一个与该地相同前缀的网络地址才能上网吗?实际上,我们的电脑在出厂的时候就会被分配一个以太网地址,但当我们去连接WiFi时,我们的电脑会去询问当前的路由器,来获得一个临时的IP地址进行使用。这就好像,当你参加一个新人聚会的时候,你会向主人询问:你好,我是新来的,可以给我一个位置吗?
在其他地方也是一个道理,不同的地方你会获得不同的地址,而这就叫做DHCP(动态主机配置协议),让我们能够在不同的地方也能正常的连入网络。但是有些时候,在闲聊中你可能会发现,你的邻居或是同事家中网络与你有着同样的前缀,这又是怎么回事?你可能又会有疑问,这样的话还能正常上网吗?
答案是肯定的,这就要扯到另一项技术:NAT(网络地址转换)。在这项技术中,每台家庭路由器实际上都有一个独特的地址,但您看不到它,路由器会给你一个临时地址,一个根本不能在互联网上运行的地址,它只在你的房子里,但当你的信息离开房子时,真实地址作为寄件人就会被使用到了。
至此,我们已经解答了从用户角度可能会有的疑问,但作为工程师,他们肯定不能只看这些基础的地址转换,他们还需要去了解网络内部发生了什么,于是在操作系统中,他们安装了一款名为traceroute的软件,这是用来检测发出数据包的主机到目标主机之间所经过的网关数量的工具。要知道,每台路由器都是以非常狭隘的眼光看待这个世界,只是看到一个数据包,然后在一个地方做出决定,这就会导致路由环路问题。
那么如何去解决呢?网络工程师们引入了生存时间的概念,每次数据包通过路由器时,它都会从此字段中减去一个数据包,它以一个介于25之间的数字开始,它可以高达255,但通常是25,当数字降为0的时候,他们就会把这个包丢弃,避免了可能造成的阻塞问题。而traceroute通过这样不断地监控发送与丢弃的过程,就能得到一个完整的网络图。
Vint Cerf - A Brief History of Packets
Vint是ARPnet创始人之一,对包交换(packet-switching)概念有着很深的理解。之前所说的信息传递都是基于数据包的概念,但其实早在ARPnet出现之前,这个概念就已经存在。
包交换是麻省理工学院的leon kleinrock专门研究的一个概念,他实际上是在研究消息交换,用这种消息交换的方法来分析队列网络,这是一个重要的里程碑。
大约在1961年左右,Paul Baran正在为兰德公司工作,并且非常关注在核后环境中保持指挥和控制的能力,那时美国非常担心俄罗斯真的会发射导弹,为了能对核攻击作出反应,他们需要掌控指挥和控制权。因此,在1962年,在集成电路或其他任何东西出现之前,Paul认为应该对声音进行数字化和分组化,然后使用一种能够向各个方向传输的杆式无线电来创造一个高度互联的环境。在那个时候,消息块(message block)的概念就已经被提出了。
到了1966年,Larry Roberts和另一位研究人员一起做了一个点对点的实验来测试包交换,在圣莫尼卡的系统开发公司(SystemDevelopmentCorporation)的ANSF-Q7机器和麻省理工学院林肯实验室的TX2机器之间,他们在2400位线路上演示了来回移动数据包。而与此同时,伦敦国家物理实验室的一位名叫唐纳德·W·戴维斯(DonaldW.Davies)的男子也对这项研究起了兴趣,试图从英格兰的科学研究委员会那里弄到钱,但最后得到的钱只够构建1个节点,这三人共同促进了包交换的诞生,他们展示了使用标准的方式,可以使不同类型的计算机互相交谈。