本节书摘来异步社区《拥抱机器人时代——Servo杂志中文精华合集》一书中的第4章,第4.4节,作者:美国Servo杂志,更多章节内容可以访问云栖社区“异步社区”公众号查看
4.4 理解网络连接
对于物联网中每个需要与其他设备通信的设备,都必须通过某种网络连接。当两个及以上的设备相互连接就形成了网络,通常是为了传输或分享数据或别的什么通信目的。
当我们讨论物联网的时候,网络连接一般是无线的。这主要是出于实践上的考虑,因为用电线彼此连接数以亿万计的智能设备会很困难,甚至是根本不可能的。如果用无线方式把设备彼此连接、连接到中心集线器或者连接到互联网,那就相对容易得多。
4.4.1 传统的网络如何工作
在传统的网络中,无论是无线还是有线,一般每个设备都不是直接与其他设备连接的。这就是说,你起居室的电脑不是直接和你办公室的那个电脑通信的,你的智能手机也不是和你用于上网的调制解调器直接相连的。
相反,网络中的每个设备都是直接连接到一个叫做路由器的中心集线器的。如图4.3所示,所有需要发送的数据通过一个个路由器逐级到达另一个设备或者互联网。(假设路由器本身就连接到互联网,一般是通过某种调制解调器连接。)有些人管这个叫做中心辐射模式,这也正是今天多数家庭和办公室中所采用的模式。
4.4.2 通过网络传输数据
为了方便传输,数据是切割成碎片然后通过网络传输的。当你发送一个文件到一个网络上或者给互联网上的另一个设备的时候,整个文件并不是一下子传输过去的。相反地,这个文件被分割成很多小数据包,以防止在传输大量的数据的时候阻塞连接。数据包最后会在某个合适的网络设备上组装起来,如图4.4所示。
为了完成这种解包/传输/组装的过程,所有的网络硬件必须一同遵照一种预先定义的网络传输协议。这些规则决定了数据是如何通过网络传输的。
今天事实上的标准,无论是互联网还是局域网(LAN)连接,都使用TCP/IP(Transmission Control Protocol/ Internet Protocol)。这个协议中的IP部分提供了控制数据包在从一个网络路由到另一个网路的标准规则集。而这个协议中的TCP部分支持了两个设备之间的通信部分;它处理网络信息并将其翻译成你的网络可以理解的形式。换句话说,IP设定了规则而TCP翻译了那些规则。
这就是实际的情况。我们假设一个场景,即你想从你家庭办公室的电脑复制一份文件到你家里的电脑。当你点击了“复制”按钮,TCP建立了两台电脑之间的连接,然后IP执行这些通信规则并连接两台电脑的端口。因为TCP已经为传输准备了数据,IP就处理这个文件,将其分割成小块(数据包),并把每个数据包添加一个包头,以便确保它能找到该去的地方。TCP数据包也会被打上标签,标明它所携带的数据的类型和包的大小。
下一步,IP把数据包转换成一种标准形式并从第一台电脑发送到第二台电脑。当第二台电脑收到数据包之后,TCP按照包的原始形态翻译出来并把所有的数据包组合成一个文件。
4.4.3 理解IP地址
为了实现TCP/IP,网络中的每个设备都需要根据恰当的信息正确地配置。特别是,每个设备都需要分配一个本地的IP地址,以便让网络来认识这个设备。
一个IP地址就是一个数字的标签,有点类似街道门牌号码,但是全都是数字的。在今天的互联网上,一个IP地址是一个32位的数字,用一种“点+地址”的方式表述,即四组被点分隔的数字,比如:
192.106.126.193
每个十进制数字代表一串八个二进制数字——0和1。地址的第一部分代表网络地址,而随后的部分代表本地设备的地址(也叫做主机地址)。
一个路由器如果要明白需要将哪个数据传输到哪个设备上,就必须用到IP地址。如图4.5所示,TCP/IP向路由器广播数据,用特定的IP地址来区分数据的接收者。路由器读到IP地址然后转发这个数据到这个地址的计算机上。
连接到今天的互联网上的每个服务器或设备都会被分配一个自己的IP地址。在未来的物联网世界里,每个单一的设备,不管多小,也必须要被分配IP地址。
这就产生了一个问题,由于需要联网的设备数量巨大,很容易就将超过可用的IP地址数量——至少在当前的IPv4(也就是IP协议的第4版)中是这样。IPv4提供了大约43亿的唯一地址,其中的大部分已经被分配给了已有设备。
解决方案就是尽快普及下一代互联网协议,IPv6。(你没看错,它直接从第4版跳到了第6版。)这个协议扩充到了理论上多达340个100万的11次幂的地址——也就是340个千亿的千亿的千亿,远远超过所有可能的物联网设备所需要的地址。有理由相信,没有IPv6,物联网是不可能实现充分部署的。
注意
IPv6是通过把32位的地址扩展到128位来获得更多的地址的。这就像把3位的十进制数字变成了12位的十进制数据——当你采用更多位数的时候肯定会得到更多可能的数字。