TCP/IP协议虽重要,但学习曲线陡峭。LuatOS以“积木式”开发为核心理念,将网络功能模块化,让开发者通过直观组合快速掌握通信实现,告别繁琐编码。
提到网络应用,就绕不开TCP/IP——它不仅是互联网的通信基石,更像是一套精妙绝伦的“世界语”,让形态各异、遍布全球的设备能够跨越硬件和软件的差异,使用统一的规则进行对话。
相比传统开发方式,LuatOS通过高效易用的API:将复杂的协议细节封装在简洁的接口之下,开发者无需从零开始构建整个协议栈,而是可以像搭积木一样快速上手,只需专注于应用逻辑本身。
你可以在几分钟内让一块4G-Cat.1模块真正连接到云端服务器,并立刻观察到数据交互的全过程。每一个理论概念,都能通过具体的代码和硬件行为得到最直观的验证和理解。
感兴趣的朋友,关注近期的公开培训直播课。
一、TCP/IP网络模型简介
有网络应用开发经验的人,应该都听说过OSI七层模型、TCP/IP协议四层模型和TCP/IP协议五层模型。
这三种网络协议模型的说明,参考下表:
看了这张表之后,我们应该有以下几点认识:
都采用了分层的思想,将复杂的通信过程分解为更小、更易于管理的部分;
每一层都为其上层提供服务,并使用其下层提供的服务;
这三种网络模型,只是分层的颗粒度不一样;实际上,这三种网络模型的本质内容都是一样的。
既然本质内容是一样的,为什么还要存在三种网络模型呢?
我们简单地看一下这三种网络模型的历史:
TCP/IP
20世纪70年代(1970s)
美国国防部某个计划局,提出了建立一种通信网络的需求;美国的几个工程师大佬开发了一套通信协议,TCP和IP协议是其中的核心;当时并没有抽象出四层或者五层模型。
OSI和TCP/IP
20世纪80年代(1980s)
网络技术蓬勃发展,但各家厂商(如IBM、DEC)都有自己的私有网络协议标准,导致不同厂商的设备之间无法通信。
网络世界,需要一个“通用语言”。
国际标准化组织ISO于1984年,提出了开放系统互联OSI参考模型;
与此同时,TCP/IP的支持者也抽象出了一套自己的“术语”和“框架”来与OSI模型竞争。他们从现有的TCP/IP协议族中反向归纳、提炼出了一个更简单的分层模型。
**TCP/IP **
20世纪90年代(1990s)
OSI和TCP/IP经过一段时间协议竞争,最终TCP/IP胜出,得到广泛应用,主要有以下几点原因:
TCP/IP来自实践,简单高效,易于实现;而OSI模型过于复杂和理想化,标准制定缓慢;
TCP/IP规范(RFC文档)对所有人免费开放,鼓励了广泛的应用和创新;
美国政府规定其所有联邦机构使用的网络必须支持TCP/IP;
万维网(World WideWeb)在1991年出现,它运行在TCP/IP协议之上,Web的爆炸式普及使得TCP/IP协议成为了所有上网设备的必然选择。
最终,TCP/IP模型在实践中得到广泛应用。
至于TCP/IP四层模型和TCP/IP五层模型,二者的差别不大,主要体现在对最底层的划分不同:
四层模型隐藏了底层细节,将网络接入视为一个黑盒,更关注对软件层面的设计,不关心具体的硬件;
五层模型明确包含了物理硬件层。
四层模型和五层模型本质上是同一个东西的两种不同表述方式,所以我们接下来不纠结四层还是五层模型,而是统称为TCP/IP模型。
公开培训系列直播课也会根据不同的应用场景,决定选择四层模型还是五层模型来讲解。
二、LuatOS对TCP/IP协议栈的支持
在了解TCP/IP网络模型之后,接下来我们看一下TCP/IP协议这个概念。
TCP/IP网络模型是理论上的框架和蓝图,而TCP/IP协议是这个框架的具体实现。我们来看下面这张表格:
可以看到,每一层都有多个协议去实现,在所有的这些协议中,TCP和IP两种协议是其中的核心协议,所以用TCP/IP协议代指网络模型中的所有协议。
所以说,TCP/IP协议并不是两个单一的协议,而是一个协议家族,包含TCP/IP网络模型中的所有协议;所有协议协同工作,从软件上完成了互联网上的数据传输任务。
TCP/IP协议的核心工作原理,功能分层、数据封装/解封装等已整理详细介绍,感兴趣的朋友可查看文档:
https://docs.openluat.com/luatos_lesson/002_luatos_socket/
那么,LuatOS对TCP/IP协议栈的支持情况是怎样的,提供了哪些编程接口给LuatOS项目应用脚本来使用呢?
2.1 应用层
1)LuatOS协议支持:
HTTP,MQTT,FTP,WebSocket,DNS,NTP,DHCP, SSL/TLS(从OSI七层模型来看,和表示层最接近,所以此处把SSL/TLS放到TCP/IP模型中应用层)。
2)LuatOS编程接口:
socket核心库/libnet扩展库
http核心库/httpplus扩展库/httpsrv核心库
mqtt核心库
ftp核心库
websocket核心库
httpdns扩展库
dhcpsrv扩展库
udpsrv扩展库
用层提供的这些编程接口和LuatOS项目应用开发关系最为密切,这些核心库和扩展库的API文档可参考下方链接。
LuatOS最新API手册:https://docs.openluat.com/osapi/
2.2 传输层
1)LuatOS协议支持:TCP,UDP;
2)LuatOS编程接口:socket核心库/libnet扩展库。
2.3 应用层
1)LuatOS协议支持:IP,ICMP;
2)LuatOS编程接口:
socket核心库
exnetif扩展库IP_READY、IP_LOSE
在这里重点说一下exnetif扩展库,exnetif扩展库有两项核心功能。
2.4 数据链路层
LuatOS协议支持:
以太网、Wi-Fi、4G等网络各自的数据链路层协议;
以太网的IEEE 802.3系列;
Wi-Fi网络的IEEE 802.11系列;
4G网络的PDCP、RLC、MAC等协议。
2.5 物理层
光纤、双绞线、无线电波等传输介质。
今天的内容就分享到这里了!