陌上花开 可缓缓归矣
概要
互联网已是现代生活不可缺少的一部分,随之而来的物联网也是可预见的下一次技术革命。物联网可以说是互联网的延伸,它主要是将更多的物品纳入现有的网络,使物与人,物与物建立更广泛的连接,而不仅仅是人与人的连接(互联网)。因此对于每个人来说大致了解物联网与互联网底层网络的组建方式及核心思想就变的十分有意义了。
本文旨在向非专业人士从以下几个方面介绍网络:
- 网络是如何组建的
- 网络中的协议
- 网络的分层思想
在介绍完网络后本文会介绍互联网的发展历史。参照互联网的发展,作者表达了对当前物联网发展的看法。
声明
- 本文中所有内容仅为作者总结或思考,请大家以辩证的眼光看待。
- 本文旨在向非计算机专业人士进行科普,因此对相关概念进行了高度简化。
- 为了便于理解,本文中提到的路由器泛指:路由器,交换机,网桥,中继器甚至还有调制解调器。
网络解决了什么问题
在介绍网络前,通常我们应该先定义下什么是网络。但是为避免枯燥的概念,我们从网络解决了什么问题入手,对网络进行最直观的描述。作者认为网络解决的是一个终端向另一个终端传输数据的问题。通过网络,我们可以将一个终端的数据传输给另一个终端。这里的终端可以是手机、电脑、智能烟感、服务器等。例如:通过网络我们可以用手机向Google服务器发发送查询请求,Google服务器再通过网络将结果数据告诉我们。电脑通过网络从另一台电脑上下载(P2P)音乐数据。智能烟感通过网络向我们的手机发送告警数据。
网络是如何组建的
在回答了网络解决什么样的问题后,下面来回忆下平时我们是如何使用网络的。
在使用手机上网时,只要连接电信运营商的基站(基站会连接运营商路由器)即可浏览互联网上的内容。
在家中上网时,需要联系电信运营商牵1根入户网线,网线连接家中的无线路由器,家中各种设备连接路由器后即可上网。如果仅仅是和家人玩局域网游戏(红色警戒2),那么只要家人的电脑也连接同一个路由器即可。
在物联网环境下,则大体可以分为2类。1、传感器只需要与中继器交互数据。比如工厂内的温湿度传感器,只需要定期将数据回写给同网络的服务器中。或者使用lora协议的传感器仅与中继器交互数据。(中继器可以与连接电信运营商的路由器相连继续将数据上传到网络的云平台中)。2、传感器需要和全网络中任意设备通信。比如含有电信运营商SIM卡的共享单车,需要通过网络接收开锁,还车,变更密码等指令数据。智能家电连接无线路由器后与网络中的手机交互数据。
从上面列举的例子我们可以看出,我们使用网络的方式大致分为2种:1、交互双方的两个设备在同一个路由器下(局域网游戏,物联网第一种情况),路由器可以帮我们把数据转发数据。2、交互的设备不在同一个路由器下,但是设备连接的路由器必定与电信运营商相连。
在所有例子中都大量涉及到了路由器,我们可以简单的将路由器的功能定义为将数据转发。它可以从与之相连的1个设备中获得数据并转发给另一个与之相连的设备。这样第一种网络使用方式就很好理解了。通过路由器实现了网络传输数据的功能。现在我们主要来看使用网络的第二种方式。
对于第二种使用网络的方式,直观的感受是我们的路由器连接电信运营商后就与网络中其它所有设备相连了。其实在运营商网络中,我们首先也是与路由器相连。当家中的路由器发现目标设备没有与其相连时,就会将数据转发给电信运营商的路由器,该路由器会查看目标设备时候与本路由器相连,如果有则直接转发给目标设备,如果没有则会将数据转发给它认为最有可能连接这个设备的路由器。这样反复直到最终数据传输到对应设备上。在这个过程中数据转发寻址的依据就是我们常数的IP地址了。
肯定有人就会问了难道中国电信是宇宙第一网络运行商,可以覆盖整个网络?其实当然不是,网络运营商(ISP)只负责本地的设备的网络接入,但运营商之间是互相连通同时是有等级的,一种较为好理解的方式是按照地域分级。北京的用户连接北京的网络运营商,各个省的运营商与国家级运营商相连,各个国家级运营商互相连通。越是高层的运营商互联时速度越快。同时各个网络运营商有分配IP地址的权利,有了IP就可以通过路由转发将数据发送给网络中任意1台设备了。由于运营商就有地域性,因此IP其实也是具有一定地域性的。(某些网站可以显示你的上网地域)这也就是为什么路由器根据IP可以将数据转发到尽可能距离设备近的路由器上(为了方便理解,此处不是很严谨)。
这里顺带说一句,网络运营商分配的IP一般是公网IP,全网唯一,用它可以路由到全网任意一个其他公共IP。而我们在网络第一种使用方式中,相关设备没有访问全网其他IP的需要,这时就不用向网络运营商申请公网IP,使用私有IP组网就可以了 ,这种IP仅仅用作专用网内寻址。一般”10.XX.XX.XX”,”172.16.XX.XX~172.31.XX.XX”,”192.168.XX.XX”的IP都是私有IP。
总结来说网络是如何帮我们终端上的数据传输给其他其他终端的呢?就是运用IP寻址,通过路由器一跳一跳的转发到拥有目的IP的终端上的。
网络协议
本节我们来介绍一个时髦的词——协议。什么是协议?协议是用来干什么的?本节将给出答案。
其实我们生活中无时无刻不在执行协议。考虑当你想要向某人询问时间时一般会怎么做?图7显示了一种典型的交互过程。
人类的协议要求一方首先进行问候(如“你好”),以开始与另一个人的通信。对“你好”的典型响应是返回一个“你好”。此人用一个热情的”你好”进行响应,隐含着一种指示,表明能够继续向那人询问时间了。对最初的“你好”的不同响应(如:“别来烦我!”,“哦”)也许表明了一个勉强的或不能进行的通信。同样,有时问的问题根本得不到任何回答。在此情况下,按照人类的协议,发话者就不会再询问时间了。在我们人类协议中,有我们发送的特定报文,也有我们根据接收到的应答报文或其他事件采取的行动。显然,发送和接收的报文,以及这些报文发送和接收或其他事件出现时所采取的动作,这些在一个人类协议中起到了核心作用。如果人们使用不同的协议,比如一个人讲礼貌,一个人不讲礼貌,一个人说中文,一个人说英文,就会导致协议不能交互,因而不能完成有用的工作。
在网络中这个思路同样成立。网络协议类似与人类的协议,除了交换报文和采取动作的实体从人变味了某些设备(手机、电脑、路由器等)的硬件或软件组件。在因特网中,涉及两个或多个远程通信实体的所有活动都受协议的制约。
以大家可能熟悉的一个网络使用场景(主要涉及TCP和HTTP协议)为例,考虑当你向一个web服务器发送请求(在web浏览器中访问网页的场景)时发送的情况(图7右半部分)。首先,你的计算机将向web服务器发送一条连接请求报文,并等待回答。该web服务器将最终能接收到连接请求报文(中途经过多个路由转发),并返回一条连接响应报文。得知请求该web服务正常以后,计算机则会发送1条HTTP的GET报文,向服务器申请获取名为”www.baidu.com"的文档。最后,WEB服务器想计算机返回该文档(网页)。
从上述人类或网络活动例子中可见,报文的交换以及发送和接收这些报文时所采取的动作是定义一个协议的关键元素:
协议定义了两个或多个通信实体之间交换数据的格式和顺序,以及服务器发送、接收报文或其他事情应采取的动作。
在网络中广泛的使用了协议,不同的协议用于完成不同的通信任。了解计算机网络领域知识的过程就是理解网络协议的构成、原来和工作方式的过程。
协议层次及服务模型
在“网络是如何组建的”这一节的最后,我们粗略的了解了,网络是如何帮助我们进行数据传输的(多个路由器转发)。在网络实现层面上,实际上是十分复杂的。比如,我们不同的应用场景肯定会定义不同的数据格式以便应对不同的业务场景。浏览网页用的协议是浏览器可以读懂HTTP(超文本连接)协议,而发送邮件就必须得用SMTP(简单邮件传输)协议。使用迅雷下载数据使用P2P(点对点传输)协议,资源被下载的越多速度越快。而正常的从固定文件服务器上下载文件一般使用FTP(文件传输协议)协议,人越多下载越慢。我们应用程序的数据在经过多个路由到达目的终端的过程中,网络需要保证数据证正确传输,保证收发双方速度匹配以及实现拥塞控制机制等。在路由器转发的过程,需要路由选择协议保证根据IP地址数据包可以正确的被转发到目标终端。由于设备与路由器之间,路由器与路由器之间连接的方式不同(光纤、无线、电缆;3G、4G、lora、zigBee),就需要不同的协议保证两个节点之间数据正常传输。
那么我们如何跟如此复杂的网络打交道呢?我们在做业务时需要了解所有细节么?答案当然是,不用了解所有细节。下面我们再以生活中的一个例子来看看我们平时是如何讨论、设计复杂系统的。
比如你1份文件要用快递寄从B市给国外在H市的合作伙伴,这件事是如何实现的呢?首先我们只用对接1个快递公司,遵照邮件邮寄重要文件的要求将文件装入信封。快递小哥将邮件投递到B市的中转站,中转站根据地址决定将你的邮件中转到S市国际中转站,然后将所有去往S市的信件打成包裹,交给铁路公司使用火车运输。铁路负责安全的将装有包裹集装箱从B市运送到S市。S市国际中转站收到邮件后根据地址,又将邮件放入了寄往H市的包裹中,并交给航空公司负责运输。航空公司生成集装箱有飞机负责将集装箱运达H市并将包裹交给H市中转站。H市中转站从包裹中拿出信件,根据地址交给你的合作伙伴。
在整个流程中,你和客户之间完成了文件的流转,而你和客户不必操心快递公司是如何中转的,过程中使用了何种交通工具等这些实际传输的细节。快递公司之间完成的是包裹的流转,他不需要关心,火车站、机场是如何安排车次,保证飞机和火车正常运作的。而机场或火车站也不关心集装箱的内容,只要保证准时安全的完成集装箱的运送就好了。在这个模型里,每一层(客户与你;所有中转站;机场之间,火车站之间)都完成了与他们对等层的数据交换,同时每一层也只用考虑如何与下层结合而不用考虑整个流程的各个细节。抽象的说,每一层通过以下方式提供服务:1、在这层执行某些动作(火车从B市开往S市,B市中转站将信件转发给S市);2、直接使用下层服务(中转站使用火车运输或航空运输,我们使用快递服务)。
上述事例就是利用分层的思路,讨论了复杂的物流运输系统。这种思路将每一层的服务模块化。只要该层对上层提供相同服务,并且使用来自下层次的相同服务,当某层的实现变化时,该系统其余部分可保持不变。比如中转站信件分拣及打包工作由人工变成了机器,这对整个文件的流转是没有影响的。对于大而复杂且需要不断更新的系统,分层的这种各层改变实现方式不影响整体运行的特点就十分符合需求了。
现在我们将注意力重新回到计算机网络上。其实刚才的物流模型和网络模型有诸多相似之处。特别是关于分层的思想。先贤们在设计网络之初就将整个网络系统进行了纵向切分,由下到上分别是:物理层、链路层,运输层和应用层。每一层通过在该层中执行某些动作或使用直接下层的服务来提供服务,服务内容由各种协议来定义。因此计算机网络就体现为,从上到下分成了5层,每层有1到多个协议定义提供服务的方式及标准。根据各种协议,世界各个厂商可以根据实际场景自行实现相关设备。各层通过协议互相衔接完成数据传递的功能。
下面粗略的由上到下概述网络各层提供的服务以及涉及的协议。在接触网络协议时,首先搞清楚它作用于第几层可以极大的方便我们理解协议。
- 应用层,是网络应用程序及他们的应用层协议存留的地方。这一层交换数据的双方是软件级别的,比如,手机中的浏览器,各种APP以及对应互联网厂商服务器上的业务程序。这一层最常用的协议是http(超文本传输协议)当然还有SMTP(简单邮件传输协议)、FTP(文件传输协议)、DNS(域名解析协议,域名翻译为ip的协议)以及物联网相关的MQTT(消息队列遥测传输协议)。MQTT协议采用发布/订阅模式,所有的物联网终端都通过TCP连接到云端,云端通过主题的方式管理各个设备关注的通讯内容,负责将设备与设备之间消息的转发。CoAP(Constrained Application Protocol),受限应用协议,应用于无线传感网中协议。CoAP是简化了HTTP协议,适用于在资源受限的通信的IP网络。XMPP(Extensible Messaging and Presence Protocol)可扩展通讯和表示协议,一个开源形式组织产生的网络即时通信协议。等等。我们一般把位于应用层的信息成为报文(message)。
- 运输层,在应用程序端点之间传输应用层报文。这一层的交互双方主要是操作系统,手机操作系统(Android)、服务器操作系统(linux)等,主要的协议有面向连接的TCP(Transmission Control Protocol 传播控制协议)协议或无连接的UDP(User Datagram Protocol 用户数据报协议)协议。在这一层一般由操作系统将应用程序要发送的报文切分成多个报文段(segment)并通过网卡发送出去。目的服务器接收到这些报文段后重新组装形成报文再交给上层应用。
- 网络层,负责将称为数据报(datagram)的网络层分组从一个主机移动到另一个台主机。该层的主要协议是网际协议——IP协议。该协议定义了在数据报中的各个字段及终端系统和路由器如何使用这些字段。IP仅有一个,所有具有网络层的组件必须运行IP。同时该层还包括决定路由的路由选择协议,它控制路由器将数据报一跳跳的转发到目的主机。
- 链路层,网络层通过源和目的地之间的一系列路由器路由数据报。为了将分组从一个节点移动到路径上下一个节点,网络层必须依靠链路层的服务。网络层将数据报下传给链路层,链路层沿着路径将数据报传递给下一个节点。在该下一个节点,链路层将数据报上传给网络层。由链路层提供的服务取决于于链路的实现方式,应用于链路的协议。因为数据报从源到目的地传送通常需要经过几条链路,一个数据报可能被沿途不同的数据链路层协议处理。例如,从平板电脑出来的数据报可能先通过wifi协议到家用无线路由器,然后家用路由器通过PPP(Point to Point Protocol 点对点协议到电信运营商)。在本层的数据,我们统称为帧。
- 物理层,虽然数据链路层的任务是将整个帧从一个网络元素移动到邻近的网络元素,而物理层的任务是将该帧中的一个个比特从一个节点移动到下一个节点。在这层中的协议依然是与链路相关的,并且进一步与链路(双绞铜线,单模光纤,无线)的实际传输媒体相关。例如,以太网(链路层协议)具有许多物理层协议:一个关于双绞铜线的,一个关于同轴电缆的,还有一个关于光纤的,等等。在每种场合中,跨越这些链路移动一个比特是以不同的方式进行的。
需要指出的是,并不是所有的网络设备都具备全部5层协议。就如上一张图所示,在路由器中只有物理层、数据链路层和网络层。因为转发数据不用关心上两层的内容(不用关心应用如何使用数据,不用关心如何分组等)。个人任务一般物联网中涉及的蓝牙协议,LoRa协议,ZigBee协议多是传感器设备接入协议,是直接接收传感器数据的协议,一般工作物理层,数据链路层,少有能到网络层的。如果数据想要在整个互联网上传播,还是需要转化成符合TCP/IP协议(转化为带IP的数据分组)的数据再传输。否则仅仅是在传感器的局域网内传播数据。
互联网发展历史及物联现状
互联网既是冷战的产物,更是全球化的产物。51年(1969-2020)的互联网史是一部波澜壮阔的全球性史诗,是一场席卷全球所有国家的人类新文明浪潮。雨果说:历史是过去传到将来的回声,是将来对过去的反映。系统回顾互联网51年,总结经验和教训,对我们迎接物联网时代的到来有着特别的意义。
首先互联网在设计之初就是为了人们交互数据,共享知识的,这一点从来没有变化过。在这个目标的指引下,网络的发展笔者认为可以大体分为三个阶段:(1)早期研究和发展(1965-1981);(2)合并网络,创建互联网(1981-1994);(3)商业化、私有化和更广泛的接入,形成现代互联网(1995年至今),该阶段又可分为Web1.0、Web2.0、移动互联网三部分。
早期研究和发展
19世纪60年代前,人类的网络还是以电话网为主。在电话网中核心技术的电路交换,连接建立到使用完断开连接之一段时间内,会完全占用整个线路,并且在传输过程中速度恒定。60年代初现在网路的基础——分组交换技术首次被提出。在分组交换中为了从源端系统向目的端系统发送报文,源将长报文划分成较小的数据块,称之为分组。在源和目的地之间,每个分组都分别通过通信链路和分组交换机传输。分组交换提供了比电路交换更好的带宽共享;同时它比电路交换更简单、有效、实现成本低。
在分组交换技术的加持下,人们创建了第一个分组交换计算机网络ARPAnet。该网是美国政府因为冷战需要而建立起来的,它创造了一种全新的军事机构与高校之间联动的开放机制,也是互联网能够在60年代应运而生的关键。随后与ARPA网类似的各种分组交换网纷纷建立。在本阶段末期,美国、欧洲以及随后的亚洲等各国高校,计算机网络的研究和开放如雨后春笋。无论是协议、规范和网络,均呈现出百花齐放、百家争鸣的热闹景象。随着网络数目的增加,研制将网络连接到一起的体系结构也被随之提上日程。
合并网络,创建互联网
在网络发展的第二阶段1981-1994中,网络出现激增,70年代末大约有200台主机与ARPAnet相连,但是到了20世纪80年代末,连接到公共因特网的主机数已经达到了100000台。这主要得益于协议、规范和网络的统一。在这段时间里,网络的核心协议——TCP/IP协议得以完善并成为唯一标准,网络分层的体系结构也在这个阶段得以确认。同时有军方背景的ARPA网退出了历史舞台,政府和大学共同推出的NSFNET(旨在连接学术用户,将全球大学联网)最终统一全网,构建了核心骨干网。
80年代无疑是最容易被忽视和低估的年代。这是网络技术真正大爆炸的年代,各种协议和网络竞相登场,琳琅满目,争奇斗艳。毫无疑问,互联网是全球集体力量和智慧的成果,是各种技术和应用的集大成。只有最大程度的开放机制,才能吸引和汇聚源源不断的各方力量。80年代是互联网奠定全球化基础的关键时刻。美国全国科学基金会拿出巨额资金,资助新的骨干网络建设,并积极资助和推动全球高校和科研体系与其联网,成为TCP/IP在百余种竞争的网络协议中脱颖而出,以及NSFNET最终超越其他各类网络的关键。
商业化形成现代互联网
互联网真正进入大众视野,当从20世纪90年代开始。1990年,阿帕网完成历史使命,停止使用。第一个商业性质的互联网拨号服务供应商——The World诞生。商业化,也只有商业化,才具备强大的、真正改变世界的力量。90年代正是互联网最辉煌、最美好的年代。万维网、浏览器和搜索引擎的出现、克林顿政府战略性的政策引导,以及风险投资的疯狂加持,在这三级火箭的强力助推下,谱写了迄今为止最富有想象力,近乎魔幻的一段传奇历程。
1991年仲夏之夜,蒂姆成功开发出世界上第一个Web服务器和第一个Web客户机。12月,蒂姆将其发明正式定名为万维网(World Wide Web),即公众熟悉的WWW。1990年万维网完成超文本标记语言(HTML)的开发,1991年8月6日推出。1996年底,美国《研究和发展杂志》授予蒂姆年度科学家(Scientist of the Year)称号,蒂姆却认为WWW开启信息时代新纪元不过是“水到渠成而已”。1991年除了诞生了第一个Web网页之外,更多新鲜事物纷纷诞生。Gopher,第一个查找文件内容而不仅仅是查找文件名称的搜索协议,是很多学术界人士使用的第一个搜索引擎工具。
1991年12月1日,由戈尔起草的《高性能计算与通讯法案》(即史上闻名的《戈尔法案》)在美国国会通过。该法案拨款6亿美元,推动美国互联网的发展。1992年11月3日,比尔·克林顿当选美国总统,戈尔成为副总统,戈尔对于互联网的梦想显然打动了年轻的克林顿。1993年9月,克林顿和戈尔发布报告,号召加快国家信息高速路的建设。1994年1月,戈尔为当年的《互联网指导大纲》撰写序言,成为美国历史上第一位通过国家互联网举办互动式新闻发布会的美国副总统。在政策拉动下,北美、欧洲和东亚地区都迎来了网络建设的高潮,1994年被称为“国际网络年”。
1993年,浏览器问世被许多人认为是开启互联网辉煌年代的里程碑。1993年网站数量达到 600 个,与NSFNET连接的计算机数量从1985年的2000台增长到1993年的200多万台。尤为关键的是,面对越来越强烈的商业化需求和机会,美国国家科学基金会没有加以阻挠,而是引导了一个新的互联网架构,以支持新兴网络的商业使用。
1994年,互联网商业化浪潮最具标志性的Netscape 诞生了。同年,微软为Windows 95创建了一个Web浏览器。斯坦福大学的两名电气工程系的研究生杨致远(Jerry Yang)和David Filo创建了雅虎(Yahoo!),并于1995年3月组建了公司,很快获得了风险投资的青睐,全球第一门户由此起步。1995年,Compuserve、America Online 和 Prodigy 开始提供互联网访问。Amazon.com,Craigslist 和 eBay上线。第一个在线约会网站 Match.com 发布。随着互联网向商业企业转型,原始的 NSFNET 骨干网已经退役。
人们一般以1995年8月9日网景公司IPO为标志,作为互联网商业化热潮的起点。网景的股票开盘价是28美元,开盘仅一分钟,股价就冲到了70美元,当天最高价达75美元,收盘价为56美元。《华尔街日报》评论说,通用公司花了43年才使市值达到27亿美元,而网景只花了1分钟。互联网创业和投资的大热潮由此开启。
后面的故事就是我们熟知的了,互联网飞速发展,成为了人们生活中不可或缺的部分。
当下的物联网
在了解了互联网大概的发展历史后,我们回看物联网。首先物联网是互联网的延续,将人与人的广泛连接扩展到物,核心需还是为了共享数据。参照互联网的发展,笔者认为,物联网先天就完成了前两个阶段的建设。基础网络部分完全可以继续使用互联网现有设施,使用TCP/IP协议来进行数据转发。但是物联网现在还没有迎来互联网90年代初那个井喷的年代。是什么让物联网商业化疲软?是政策的反对?是资本的不青睐?笔者认为觉得都不是。物联网缺少的是类似于浏览器以及搜索引擎这样简单但又能深切改变普通人生活的发明。
浏览器和搜索引擎的出现使得所有人都可以方便的从网络中获取共享的数据。那么在物联网这个需求还存在么?存在,但比较弱。我们将各种传感器,智能设备接入网络后,真的需要一个网站来找出人们感兴趣的传感器,并查看它收集的数据么?显然不需要。互联网行的通是因为,互联网共享的主要是文档(论文,新闻等),普通人无法从海量的文档找到自己想要的,然后就有了搜索引擎,普通人想看文档更舒服同时希望文档功能更强大,就有了浏览器。这两点使所有普通人都能享受互联网带来的便利。物联网使传感器的数据有了共享的可能。但我们并不是为了看这些数据,我们更多的是希望传感器的数据来服务我们的生活。当然现在已经有了很多尝试,比如各大厂商都在着手创建自己领域的物联网平台,希望自己的产品能服务广大群众,同时希望自己一家独大。这就导致平台大都各自为战,数据只在平台内能交互,服务也只是单一领域,很难达到真正意义的互通。必须承认这是符合目前情况的,毕竟传感器数据私密性更强。但我依然认为物联网的终极形态是,接入网络的设备所产生的的数据,可以广泛共享而不用担心隐私问题,任意服务商可以方便但有约束的获取网络内任意传感器的数据,并提供能切实改变人们生活方式的服务。