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

第二层:网络层协议

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

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

1. IP 协议

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

常见的 ICMP 消息类型:

  • Echo Request 和 Echo Reply:用于 ping 命令,检查目标主机是否可达。
  • Destination Unreachable:当路由器或主机无法传递数据包时,发送该消息通知源主机。
  • Time Exceeded:当数据包在网络中存活时间(TTL)超过限制时,发送该消息。
  • Redirect:通知主机选择更好的路由。

3. IGMP 协议

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

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

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

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

4. ARP 协议

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

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

5. RARP 协议

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

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

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

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

第三层:传输层协议

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

1. TCP 协议

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

工作原理

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

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

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

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

组成部分

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

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

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

特点

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

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

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

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

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

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

应用

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

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

网页浏览:HTTP 基于 TCP。

远程登录:如 Telnet。

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

2. UDP 协议

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

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

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

组成部分

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

工作原理

发送方将数据封装成 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协议。

该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。

友情提示

本站部分转载文章,皆来自互联网,仅供参考及分享,并不用于任何商业用途;版权归原作者所有,如涉及作品内容、版权和其他问题,请与本网联系,我们将在第一时间删除内容!

联系邮箱:1042463605@qq.com