ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
互联网对人类社会产生的巨大变革,大家是有目共睹的,它几乎改变了人类生活的方方面面。互联网通信的本质是数字通信,任何数字通信都离不开通信协议的制定,通信设备只有按照约定的、统一的方式去封装和解析信息,才能实现通信。互联网通信所要遵守的众多协议,被统称为TCP/IP。 TCP/IP是一个协议族,包含众多的协议。但对于网络应用开发人员,可能听到更多的是其中的应用层协议,比如HTTP、FTP、MQTT等。 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,HTTP的应用最为广泛。比如大家日常使用电脑时的一个常规操作:打开电脑,打开浏览器,输入网址,最后按下回车,这一刻你就开启了HTTP通信。HTTP协议工作于客户端\-服务端架构之上,(服务端也称作为服务器端,除非特别说明,否则本书出现的“服务端”即为“服务器端”),浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。借助这种浏览器和服务器之间的HTTP通信,我们能够足不出户地获得来自世界各个角落的信息。另外,网页不仅仅是大型服务器的专利, 在物联网风潮盛行的今天,许多随处可见的小型设备(空调、冰箱、插座、路由器等),都内嵌网页,在物理链路畅通的情况下,用户可以用手机、平板电脑上的浏览器随时随地监控这些设备。 FTP(File Transfer Protocal)是文件传输协议的简称。FTP是工作在应用层的网络协议。FTP使得主机间可以共享文件,用于在两台设备之间传输文件(双向传输)。它也是一个客户端\-服务端框架系统。用户可以通过一个支持FTP协议的客户端程序,连接到在远程主机上的FTP服务端程序,通过客户端程序向服务端程序发出命令,服务端程序执行用户所发出的命令,并将执行的结果返回到客户机。FTP除了基本的文件上传/下载功能外,还有目录操作、权限设置、身份验证机制,许多网盘的文件传输功能都是基于FTP实现的。 在物联网发展的处期,物联网场景中的设备使用何种应用层协议进行通信一直是备受争议的话题。很多开发人员习惯了网页的开发模式,于是经常选择HTTP作为通信方式。使用HTTP有以下不利因素:HTTP是一种同步协议,设备需要等待服务器的响应才可以进行下一步的工作,然而在设备数量多、网络不可靠的场景下,实现同步通信很困难;HTTP是单向的,设备只能主动向服务器发出数据,无法被动的接收来自网络的数据,这不适用于实时控制的场合;HTTP是有许多帧头和规则的重量级协议,实现在设备中需要耗费大量的系统资源。基于上述的形势,MQTT和COAP等轻量级、异步的通信协议便得到了物联网设备开发商的宠爱,尤其是MQTT。MQTT(消息队列遥测传输)是IBM公司于1990年设计并推出的一款通信协议,于2014年正式成为了一个OASIS开放标准。近年来,MQTT的应用呈现出爆炸性的增长势头,大有一统物联网的趋势。另外,MQTT在物联网以外的其他领域也得到了广泛的应用,比如许多公司在制作手机APP时,会使用MQTT来实现消息推送、即时聊天等功能。 嵌入式设备接入互联网的需求越来越大,有以下几点原因: 1. 近些年,各种带网络接入功能的MCU、SoC层出不穷,开源轻量的TCP/IP协议栈日趋成熟和完善,云平台的市场越来越繁荣,这些因素大大降低了嵌入式设备的入网成本,也为许多资源受限的低端设备接入互联网提供了可能。 2. “物联网+”的风潮日渐盛行,设备能够被远程监控,这一点已经成为许多产品的技术要求。 3. 人们对于设备“智能性”的追求越来越高,当今热门的大数据、图像处理、语音识别、机器学习等功能都可以被集成在云端,成为云平台能提供的服务。终端设备大多是计算、存储能力有限的设备,这些设备如果想要获取“智能”,最便捷的办法就是接入云平台,利用各项云服务。 互联网的基础就是TCP/IP。TCP/IP是一个非常复杂的协议族,即便我们能把它的设计思想和实现原理都解释得清清楚楚,你也不见得有时间和精力去学习它,所以本书的写作重点不在于对TCP/IP的解读,而在于对它的应用。另外,TCP/IP的复杂性也决定了它并不是那么简单就能用好的东西,即便我们只关注应用开发,也依然需要对它的许多概念和设计思想有所了解,才能编写出正确、高效、健壮性好的应用程序。 希望能借此书,让嵌入式开发工程师们以浓厚的兴趣和清晰的视野,搭上物联网发展的快车。