物联网数据接入篇网络层和数据传输层协议()

在前面的文章中,我们分析了TCP/IP模型和网络接口层的协议。这篇文章,我们来解释下第二层和第三层的网络和数据传输层的协议及其功能。

第二层:网络层协议

将数据传输到目标地址。目标地址可以是多个网络通过路由器连接而成的某个地址。因此这一层主要负责寻址和路由选择。

包括IP、ICMP、IGMP、ARP、RARP协议。

1.IP协议

网际协议,InternetProtocol,IP协议,又称互联网协议,是互联网协议包中的网络层通信协议,用于跨网络边界分组交换。它的路由功能实现了互联互通,并从本质上建立了互联网。IP的作用是在复杂的网络环境中将数据包发送给最终目的主机。面向的是IP地址。

IP是在TCP/IP协议族中网络层的主要协议,任务是仅根据数据包标头中的IP地址将数据包从源主机传递到目标主机。为此,IP协议定义了封装要传递的数据的数据包结构。它还定义了用于用源和目的地信息标记数据报的寻址方法。

第一个架构的主要版本为IPv4,目前仍然是广泛使用的互联网协议,尽管世界各地正在积极部署IPv6。

组成部分

IP地址:用于标识网络中的节点。

报文:包含版本、头部长度、服务类型、总长度、标识、标志、片偏移等字段。

工作原理

网际协议由数据封装、寻址和路由组成。

当源主机要发送数据时,它将数据进行分组,并在数据报的首部填写源IP地址和目的IP地址等信息。然后数据报被发送到网络中,路由器根据目的IP地址进行路由选择,将数据报转发到下一跳,直到最终到达目的主机。

特点

不可靠:它只负责尽力传输数据报,但不保证一定到达或顺序正确。

无连接:发送方和接收方在传输数据前不需要建立连接。

尽力而为服务:会尽力把数据报送到目的地,但可能出现丢失、重复、延迟等情况。

提供全球统一的编址方式:使得不同网络中的设备能够相互通信。

应用

应用在互联网通信,是整个互联网运行的基础。

有IP地址的物联网设备,可以直连网络:

一些较为复杂和功能强大的智能设备,如智能家电(某些高端智能电视、智能冰箱等)、工业自动化设备等,它们直接接入网络并拥有独立的IP地址,可与其他设备或服务器直接通信。

因为:IP唯一性:确保每个设备在网络中都是唯一的,可以准确寻址。能通信:使设备能够通过网络相互通信,发送和接收数据包。便管理:方便网络管理员管理和监控设备,排查网络问题。

没有IP地址的物联网设备,不可以直连网络,需要转换器(网关等):

大量的简单传感器和执行器,它们通常通过网关等中间设备与网络连接,自身不具备直接的IP地址。这些设备可能包括环境监测传感器、简单的控制装置等,它们的数据需要经过网关进行收集和转发。

无IP的设备,无网络需求:设备的功能不需要通过网络实现。直接连接:通过非网络方式(如USB、蓝牙、针脚线)连接和通信。低成本和复杂性:没有网络功能的设备通常更简单、更便宜。

没有IP地址的设备想要联网,可以通过网关设备、网络适配器、串口服务器、智能控制器和嵌入式网络模块等方法来间接实现网络连接。

2.ICMP协议

ICMP:InternetControlMessageProtocol,互联网控制报文协议,差错报告、网络诊断、路径控制和拥塞控制、传递控制信息。通俗讲,ICMP主要的功能包括:确认IP包是否成功送达目标地址、报告发送过程中IP包被废弃的原因和改善网络设置等。ICMP报文是封装在IP包里面,它工作在网络层,是IP协议的助手。ping应用的底层(ping当然是属于应用层),用的是网络层的ICMP协议。

常见的ICMP消息类型:

EchoRequest和EchoReply:用于ping命令,检查目标主机是否可达。

DestinationUnreachable:当路由器或主机无法传递数据包时,发送该消息通知源主机。

TimeExceeded:当数据包在网络中存活时间(TTL)超过限制时,发送该消息。

Redirect:通知主机选择更好的路由。

3.IGMP协议

IGMP(InternetGroupManagementProtocol,互联网组管理协议)是用于管理IP组播通信的协议。

当主机希望加入某个组播组时,它会通过IGMP向本地网络中的路由器发送加入请求。路由器收到请求后,会记录该主机所在的组播组信息。当有组播数据要发送到该组时,路由器根据这些记录将数据只发送到有成员加入的网络段。大大节约了网络资源。

以下图为例,如果服务器把数据传给5台电脑,采用IP方式传送,服务器需要发送5份数据,目标地址分别是IP1、IP2……;但是先把接收端的4台电脑用IGMP分组之后,服务器只需要发送一份数据,经过的路由器也是只需要转发一次数据。需要分组和订阅。

在视频直播等应用中,IGMP确保只有对该直播内容感兴趣的主机,订阅或者关注主播,才会接收到视频数据,你们订阅了我的微信公众号跃曰了吗,没有的话订阅一下感受一下IGMP。

4.ARP协议

ARP:AddressResolutionProtocol,地址解析协议。根据IP地址找到对应的MAC地址。

ARP根据IP地址获取MAC地址的方法:主机发送一个广播,谁的IP叫xx。然后xxIP回答说我是xxIP,我的MAC地址是yy。操作系统会把第一次通过ARP获取的MAC地址缓存起来。

5.RARP协议

RARP:ReverseAddressResolutionProtocol,反向地址解析协议。根据MAC地址找IP地址。一些无盘工作站等设备在启动时不知道自己的IP地址,但知道自己的MAC地址。它们会发送RARP请求,请求网络中的RARP服务器根据其MAC地址来告知对应的IP地址。

我是一台打印机,我的MAC地址是xx,当打印机联网时,需要一个IP,这个时候打印机像RARP服务器求分配一个IP。

打印机通过RARP服务器静态的获得IP地址:

打印机通过DHCP(这个是个应用层协议,之后文章再讲)服务器动态分配的IP地址:

第三层:传输层协议

起着可靠传输的作用。只在通信双方节点上进行处理,而无需在路由器上处理。面向的是端口号。

1.TCP协议

传输控制协议,TransmissionControlProtocol,TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP层是位于IP层之上,应用层之下的中间层,即传输层。

TCP协议的运行可划分为三个阶段:连接建立(connectionestablishment)、数据传送(datatransfer)和连接终止(connectiontermination)。这就是典型的三次握手四次挥手,三握四挥。

应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分割成适当长度的报文段。TCP把结果包传给IP层,由它来透过网络将包传送给接收端实体的TCP层。

TCP协议确保接收端接收的网络包是无损坏、无间隔、非冗余和按序的。

数据在TCP层称为流(Stream),数据分组称为分段(Segment)。作为比较,数据在IP层称为Datagram,数据分组称为分片(Fragment)。UDP中分组称为Message。

TCP(TransmissionControlProtocol,传输控制协议)的组成部分主要包括:

端口号:用于标识不同的应用程序。

序列号和确认号:确保数据传输的顺序性和可靠性。

使用序号,对收到的TCP报文段进行排序以及检测重复的数据;使用校验和检测报文段的错误,即无错传输;使用确认和计时器来检测和纠正丢包或延时;流控制(Flowcontrol);拥塞控制(Congestioncontrol);丢失包的重传。所以他有一下特点:

面向连接:在数据传输前需建立连接。那就是资源消耗大。不灵活。

可靠传输:通过多种机制保证数据的正确到达。带宽消耗大。

全双工通信:双方可同时进行数据收发。

流量控制:防止接收方被数据淹没。

拥塞控制:避免网络拥塞。

文件传输:如FTP等,保证数据的准确和完整。

电子邮件:确保邮件内容可靠传输。

网页浏览:HTTP基于TCP。

远程登录:如Telnet。

采用TCP传输的应用层协议有:MQTT、DDS、Modbus-TCP、XMPP、AMQP、POP3、HTTP、HTTPS、FTP、Telnet、SMTP。

2.UDP协议

用户数据报协议,UserDatagramProtocol,UDP;又称用户数据包协议,是一个简单的面向数据包的通信协议,位于OSI模型的传输层。数据UDP中分组称为Message。

在TCP/IP模型中,UDP为网络层以上和应用层以下提供了一个简单的接口。UDP只提供数据的不可靠传递,它一旦把应用程序发给网络层的数据发送出去,就不保留数据备份。

UDP是不可靠连接传输,注意还是需要连接的。对比下应用层协议的MQTT的消息订阅模式。

UDP(UserDatagramProtocol,用户数据报协议)的组成部分主要有:源端口和目的端口:用于标识发送方和接收方的应用程序。

发送方将数据封装成UDP数据报,其中包含源端口、目的端口以及要传输的数据。然后直接将数据报发送到网络中,不需要像TCP那样先建立连接。

数据报在网络中进行传输,可能会经过多个网络节点。由于UDP不提供可靠传输机制,所以它不会对数据报进行确认、重传等操作,也不会对数据的顺序进行严格保证。

接收方通过目的端口来识别属于自己的UDP数据报,并从数据报中提取出数据进行处理。

高效性:不需要建立连接和进行复杂的确认等机制,数据传输速度快,延迟低,能快速响应。

低开销:协议简单,在网络资源的使用上较为节省。

实时性好:适合实时性要求高的应用,如实时音频、视频传输,能及时发送数据而不会因连接建立等环节造成较大延迟。

灵活性高:可以快速发送少量数据,在一些特定场景下非常适用。

能穿透部分防火墙:相比TCP有时更容易穿过一些网络限制。

UDP适用于不需要或在程序中执行错误检查和纠正的应用,它避免了协议栈中此类处理的开销。对时间有较高要求的应用程序通常使用UDP,因为丢弃数据包比等待或重传导致延迟更可取。

许多关键的互联网应用程序使用UDP,包括:DNS、SNMP、TFTP、DHCP、CoAP、Modbus-UDP、RIP、NTP。

实时应用不需要实时可靠连接:允许一些丢包、出错或拥塞,从来保障传输速度。流媒体、网络游戏、IP电话(VoIP)等等使用UDP优势明显。

下面是TCP和UDP的区别:

后记

这里讲了第二层网络传、第三层传输层的协议以及其功能。下一篇终于到了第四层应用层协议,也是最精彩的一层。

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

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

参考文献

最后一个很好啊,图画的也很好,https://www.xiaolincoding.com/,小林x图解计算机基础,物联网数据接入篇网络层和数据传输层协议()推荐给大家。

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

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

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

分享:

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