物联网数据接入篇应用层协议一()

前三篇文章讲述的是TCP/IP模型中的网络接口层、网络层、传输层,这里到了第四层应用层。由于协议比较多,就分两篇来介绍。

这一篇讲HTTP、Websocket、邮件传输协议、远程登录协议、文件传输协议、文件共享协议以及网络管理协议。下一篇再讲物联网常用的Modbus协议、MQTT、协议、CoAP协议、OPC框架。

第四层:应用层协议之一

应用层是TCP/IP模型中的最上层,直接与应用程序交互,为应用程序提供网络通信服务。

提供各种应用服务、对数据进行特定的处理和格式化、与用户交互、定义应用程序之间通信的规则和协议、适应不同的应用场景和需求、为上层应用提供统一的接口。

TCP通过不同的端口号,来把信息转达给应用程序。端口号类似于房间的门,TCP快递上门了,送到哪个房间,就是用端口号来充当门牌号的。

应用层协议主要包括基于TCP的MQTT、DDS、Modbus-TCP、XMPP、AMQP、POP3、HTTP、HTTPS、FTP、Telnet、SMTP、Samba、CIFS、NFS。

应用层协议还包括基于UDP的DNS、SNMP、TFTP、DHCP、CoAP、Modbus-UDP、RIP、NTP。

还有即不基于TCP,也不基于UDP的应用层协议。

1.HTTP协议

超文本传输协议,HyperTextTransferProtocol,HTTP是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。

HTTP是一个客户端(用户)和服务端(网站)之间请求和应答的标准,通常使用TCP协议。通过使用网页浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP请求到服务器上指定端口(默认端口为80)。我们称这个客户端为用户代理程序(useragent)。应答的服务器上存储着一些资源,比如HTML文件和图像。我们称这个应答服务器为源服务器(originserver)。在用户代理和源服务器中间可能存在多个“中间层”,比如代理服务器、网关或者隧道(tunnel)。

通俗讲,HTTP是一个在计算机世界里专门在「两点」之间「传输」文字、图片、音频、视频等「超文本」数据的「约定和规范」。「引用小林coding」

设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。通过HTTP或者HTTPS协议请求的资源由统一资源标识符(UniformResourceIdentifiers,URI)来标识,也叫URL。

组成部分

HTTP是一个客户端(用户)和服务端(网站)之间请求和应答的标准,通常使用TCP协议。

请求部分:

请求行:包含请求方法(如GET、POST等)、请求的资源路径和HTTP版本。

请求头:包含各种描述请求属性的字段,如Accept(接受的内容类型)、content-type(发送的数据类型)、user-agent(用户代理信息)等。

请求体(可选):当有具体数据要发送时,如POST请求提交表单数据等。

响应部分:

响应行:包含HTTP版本、状态码(如200表示成功、404表示未找到等)和状态描述。

响应头:类似请求头,包含关于响应的各种属性信息,如content-length(响应体长度)、content-type(响应的数据类型)等。

响应体:实际返回给客户端的数据内容。

工作原理

由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端的请求。一旦收到请求,服务器会向客户端返回一个状态,以及返回的内容,如请求的文件、错误消息、或者其它信息。

基于HTTP通信的流程:

HTTP9种请求方法:

啥是幂等?幂等意味着对一个资源进行多次相同的操作,其产生的效果与一次操作是相同的。

特点

简单快速:请求方法和首部字段定义简洁,传输效率较高。

灵活:可以传输各种类型的数据。

无状态:服务器不保存客户端的状态信息。

应用

网页浏览:浏览器与服务器之间的数据交互。

WebAPI开发:移动端或其他客户端与服务器端的通信。

内容分发:如静态资源的传输。

各种基于Web的应用。

2.HTTPS协议

超文本传输安全协议,HyperTextTransferProtocolSecure,HTTPS是一种通过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。HTTPS开发的主要目的,是提供对网站服务器的身份认证,保护交换资料的隐私与完整性。

HTTP的URL是由“http://”起始与默认使用端口80,而HTTPS的URL则是由“https://”起始与默认使用端口443。

3.WebSocket协议

WebSocket是一种网络传输协议,可在单个TCP连接上进行全双工通信,位于OSI模型的应用层。

他的出现,是因为HTTP是半双工,采用的是客户端请求服务端才应答,不请求就无法主动给用户推送数据(采用轮休可以实现伪主动推送)。WebSocket允许服务端主动向客户端推送数据,比如浏览网页的时候,主动给你推一个弹窗广告。

对于客户端和服务端之间需要频繁交互的复杂场景,比如网页游戏,都可以考虑使用WebSocket协议。

4.邮件协议:STMP、POP、IMAP

邮件协议是用于规范电子邮件在不同系统和设备之间传输、接收、存储和管理等操作的一组规则和标准。

SMTP协议

SMTP:SimpleMailTransferProtocol,即简单邮件传输协议。将邮件从发送方的邮件服务器传输到接收方的邮件服务器。

POP协议

POP:PostOfficeProtocol,即邮局协议,允许用户从邮件服务器上把邮件下载到本地计算机进行离线阅读和管理。

IMAP协议

IMAP:InternetMessageAccessProtocol,即互联网消息访问协议,与POP不同,它可以让用户在多个设备上同步邮件状态,比如已读、未读等。(SMTP专注于邮件发送,POP适合简单的邮件下载与离线管理,而IMAP则为用户提供了更强大和灵活的邮件在线管理体验。)

某些邮件客户端,需要整合qq邮箱、网易邮箱、Gmail等等,就需要配置SMTP、POP、IMAP。

5.远程登录协议Telnet电传打字机网络

Telnet:TeletypeNetwork。当用户在本地终端上发起TELNET连接请求时,本地的TELNET客户端与远程主机的TELNET服务器建立TCP连接。连接建立后,客户端与服务器之间开始进行交互。

SSH安全外壳协议

SSH:SecureShell,安全外壳协议。身份验证、通信加密、建立安全通道。

这两个大家都熟悉,远程登录服务器的时候用到其中一种或者两种。

6.文件传输协议FTP协议

FTP:FileTransferProtocol,即文件传输协议。户在本地计算机和远程服务器之间进行文件的上传和下载操作,方便文件的共享和交换。

TFTP协议

TFTP,TrivialFileTransferProtocol,简单文件传输协议位于应用层,基于UPD无连接、简单的文件传输协议。

TFTP的应用场景包括:

网络设备的配置文件传输。

某些嵌入式系统中软件的更新和部署。

特点:简单、开销小。

7.应用层文件共享协议文件服务器

文件服务器包含Windows文件服务器、UNIX文件服务器以及Linux文件服务器,具体是哪种类型取决于所采用的操作系统。

其中,Windows文件服务器利用常见的Internet文件系统(CIFS)来向客户端共享存储。通常情况下,这可通过在计算机资源管理器中的属性/共享操作以及在其他计算机上连接网络驱动器来实现对文件夹的共享。文件服务器因操作系统的不同而显得极为重要。

Windows–Windows:CIFS(Windows自助共享)

Linux–Windows:SMB(使用Samba)

Linux–Linux:NFS

Samba服务器消息块

Samba:ServerMessageBlock。它主要用于实现Linux和Windows系统之间的文件和打印共享等交互操作。可以让Linux系统模拟Windows文件共享服务器的功能,方便不同操作系统之间的资源共享,基于TCP。

CIFS通用互联网文件系统

CIFS:CommonInternetFileSystem。是微软主导开发的一种网络文件共享协议。它基于SMB(ServerMessageBlock)协议,广泛应用于Windows网络环境中。基于TCP。

NFS网络文件系统

NFS:NetworkFileSystem。主要用于在Unix/Linux系统之间进行文件共享。具有高效、灵活的特点,能够方便地实现跨网络的文件访问和共享。主要基于TCP。

8.网络管理协议SNMP简单网络管理协议

SNMP:SimpleNetworkManagementProtocol,简单网络管理协议。网络监控、故障管理、配置管理、性能管理。大家熟悉的网吧的网管,就是操作SNMP服务器程序来管理网吧网络的。

DNS域名系统

DNS:DomainNameSystem,域名系统。维护主机名和IP之间关系,根据域名寻找IP。

DNS的根服务器不给出具体答案,而是给下一级服务器的地址,只指路不带路。

域名和IP的对应关系,保存在电脑中的hosts文件中,查看本地的域名表hosts文件:cat/etc/hosts

用dig命令,看看本地访问淘宝的过程:digwww.taobao.com

NAT网络地址转换

NAT:NetworkAddressTranslator是用于在本地网络中使用私有地址,在连接互联网时转而使用全局IP地址的技术。是因为IPv4不够分。

除转换IP地址外,还出现了可以转换TCP、UDP端口号的NAPT(NetworkAddressPortsTranslator)技术,由此可以实现用一个全局IP地址与多个主机的通信。

NAT把同个公司、家庭、学校内的主机对外部通信时,把私有IP地址转换成公有IP地址。

DHCP动态主机配置协议

DHCP:DynamicHostConfigurationProtocol,DHCP可以自动分配IP、子网掩码、网关、DNS。使用DHCP之前,首先要架设一台DHCP服务器”。然后将DHCP所要分配的IP地址设置到服务器上。此外,还需要将相应的子网掩码、路由控制信息以及DNS服务器的地址等设置到服务器上。

DHCP客户端使用的端口68,服务端使用端口67,使用的UDP应用层的协议。为什么一开始没有IP的设备能请求到DHCP服务器数据,因为没有IP的设备,默认IP是0.0.0.0。

DHCP一般不为服务器分配IP,因为他们要使用固定IP,所以DHCP一般只为办公环境的主机分配IP。

DHCP服务器和客户端一般需要在一个局域网内,在为客户端分配IP的时候需要进行多次广播。不在一个局域网内,物联网数据接入篇应用层协议一()需要用到DHCP中继代理。

有三种分配方式

自动分配:MAC地址与IP绑定,适用于服务器、打印机或网络设备。

动态分配:IP使用时有时间限制的,到期需要续租,否则就会释放,适用于大量移动设备连接到网络的场景,如公司办公室或公共无线网络。

手动分配:手动分配是由DHCP服务器管理员专门为客户端指定IP地址。有利于网络监控和管理。

RIP路由信息协议

RIP,RoutingInformationProtocol,路由信息协议是一种内部网关协议(IGP),不常用。

RIP协议规定网络里的每一个路由器均需维护由其自身至其他每一个目的网络的距离记录,即距离向量。RIP协议对于距离的界定如下:其一,从一个路由器到直接相连的网络的距离被定义为1;其二,从一个路由器到非直接连接的网络的距离被定义为所历经的路由器数量加1。RIP协议中的距离又被称作跳数,并且RIP协议准许一条路径最多仅能包含15个路由器。故而,当距离等于16时就等同于不可达。

NTP网络事件协议

NTP(NetworkTimeProtocol,网络时间协议),基于UDP的一种用于计算机时间同步的应用层协议,用于在网络中实现时钟同步。

后记

理解TCP/IP四层框架是学习物联网相关协议的基础。学习协议是做好物联网设备数据接入、监控、报警、下控、运维、数据分析、智控的基础。

我阅读了大量的书籍和文章,汇总出了TCP/IP四层框架的主要协议、物联网设备的主要协议。工作量之大,超出预期。我看了B站《希赛关于软考网络工程师的全套视频教程》,看了《图解TCP/IP》,看了大量的文章。又结合之前的物联网行业的从业经验,整理出来这篇文章。期望大家的鼓励与支持,欢迎大家交流。

参考文献

本文由@跃曰原创发布于人人都是产品经理。未经作者许可,禁止转载。

题图来自Unsplash,基于CC0协议。

免责声明:本网站部分内容由用户自行上传,若侵犯了您的权益,请联系我们处理,谢谢!联系QQ:2760375052

分享:

扫一扫在手机阅读、分享本文