对于嵌入式网络通信,平时较少接触。这一次学习了本书的最后一章--网络框架,现总结如下。
TCP/IP协议
TCP/IP是一个协议族的统称,包含IP协议、ICMP协议、TCP协议以及http、ftp、pop3、https等协议。
TCP/IP参考模型为一个抽象的分层模型。包含应用层、传输层、网络层、网络接口层。它将软件通信过程抽象化为四个抽象层,采取协议堆栈的方式,分别实现出不同通信协议。协议族下的各种协议,依其功能不同,被分别归属到这四个层次结构之中,常被视为是简化的七层OSI模型。OSI参考模型并没有提供一个可以实现的方法,而是描述了一些概念,用来协调进程间通信标准的制定。
IP地址和子网掩码
网络通信中必定会涉及到IP地址。我们平时手动配置电脑的网络时,也会指定IP地址和子网掩码。以前对这两个东西没什么概念,现经过学习,总结如下。
目前我们常用的IP地址为32位,即IPV4。对于CIDR地址,IP地址被一分为二。前面是网络号,后面是主机号。如192.168.1.123/24,这里斜杠后面的24表示:在32位地址中,前24位表示网络号,剩余后8位表示主机号。对应的子网掩码前24位为1,后8位为0,即255.255.255.0。
将子网掩码与IP地址进行按位与操作,得到192.168.1.0,这就是网络号。
RT-Thread网络框架
RT-Thread提供了一套SAL(套接字抽象层)组件,该组件完成对不同网络协议栈或网络实现接口的抽象并对上层提供一组标准的 BSD Socket API,这样开发者只需要关心和使用网络应用层提供的网络接口,而无需关心底层具体网络协议栈类型和实现,极大的提高了系统的兼容性,方便开发者完成协议栈的适配和网络相关的开发。
SAL网络框架结构如下图:
该组件除了提供多协议栈接入与接口函数统一抽象功能外,还具有TLS加密传输功能。
SAL网络框架的使用
网络框架主要包含三部分。
一是网络协议簇的注册。首先调用sal_init()函数完成网络组件资源的初始化,然后通过sal_proto_family_register()将使用的协议簇注册到SAL中。
二是网络数据的发送。以LwIP为例,系统会创建tcpip线程、erx接收线程、etx发送线程。应用程序通过sal_recv()接口接收数据。数据接收函数调用流程参见P295。
三是网络数据的发送。应用程序通过调用sal_send()接口将数据交给tcpip线程,以完成数据的发送。数据发送函数调用流程参见P296。
总结
这里仅对RT-Thread的网络框架的学习进行了简单的总结,具体应用如TCP 、UDP socket通信编程,书中有相应介绍。更多信息建议查阅官网文档。
此内容由EEWORLD论坛网友jj1989原创,如需转载或用于商业用途需征得作者同意并注明出处