LwIP开发分享(一)—— 网络协议
本标签类型为介绍LwIP,从简入深、从理论到代码编写
网络协议
常见的网络协议
-
TCP/IP:是一种协议族。
-
HTTP协议:超文本传输协议,作用于<客户端-服务器>架构之上。浏览器作为客户端通过URL向服务端发送所有请求,服务端接收到请求后,向客户端发送响应消息。
-
FTP协议:文件传输协议,工作在应用层的网络协议。使得主机间可以共享文件,用于设备之间的双向文件传输,同样基于<客户端-服务器>架构。
-
物联网常用协议:
-
早期开发人员习惯使用HTTP,但HTTP存在明显缺点:
-
HTTP是同步协议,设备需要等待服务端响应才能进行下一步操作;当设备数量多、网络环境不可靠时,同步机制难以实现高效通信。
-
HTTP是单向通信,服务器无法主动向设备端推送数据,不适用于实时操作系统场景。
-
-
目前,MQTT、COAP等轻量级、异步的通信协议在物联网开发中被广泛应用,其中MQTT协议由IBM公司推出,是物联网领域的主流协议之一。
二、网络协议的分层模型
TCP/IP是众多网络协议的集合,包含ARP、IP、ICMP、UDP、TCP、DNS、DHCP、FTP、MQTT等,这些协议按功能划分为5层,从下到上分别是:物理层、数据链路层、网络层、传输层、应用层(MQTT和HTTP均属于应用层)。

协议分层的核心原因:TCP/IP协议栈中,不同协议的功能和实现依赖关系不同(部分协议需基于其他协议才能工作),通过分层可明确各层职责,降低协议设计复杂度,同时便于维护和扩展。
各层具体功能如下:
-
物理层(PHY):规定传输信号所需的物理电平、介质特性(如网线、光纤的传输标准),是数据传输的物理基础。
-
数据链路层(MAC):规定帧能被网卡接收的条件,最常见方式是利用网卡MAC地址——发送方在帧头部添加接收方的MAC地址,接收方仅监听属于自己MAC地址的信息,实现局域网内的精准数据传输。
-
网络层:
-
定义主机的网络地址(IP地址) 规则,解决“跨局域网如何定位主机”的问题。
-
通过ARP协议实现IP地址与MAC地址的映射,让数据包能从“IP定位”转换为“物理网卡定位”。
-
核心功能是实现数据包在不同主机之间的传递(跨局域网路由)。
-
-
传输层:
-
区分数据包所属的应用程序(通过 “端口号”标识),实现数据包的端到端传输(从源应用程序到目标应用程序)。
-
解决数据传输中的可靠性问题:网络层无法处理丢包、乱序等问题,而传输层的TCP协议通过“三次握手”“重传机制”“流量控制”等功能,保障数据可靠传输(UDP协议则不提供可靠性保障,适用于实时性要求高的场景,如视频通话)。
-
-
应用层:决定数据的应用场景和处理方式。由于互联网中传递的数据种类(文本、文件、视频等)和应用场景(浏览网页、传输文件、即时通信等)差异极大,因此需要不同的应用层协议(如 HTTP用于网页访问、FTP用于文件传输、MQTT用于物联网通信)来适配不同需求。应用层以下的层级仅负责“数据传递”,应用层则负责“数据如何被使用”。
三、协议层报文间的封装和拆封
以下先概述TCP/IP协议在报文封装与拆封中的核心操作,细节将在后续补充:
1. 数据发送:报文封装过程(自上而下)
当用户通过应用程序发送数据时,数据会逐层向下传递,每经过一层,该层协议会在数据头部添加对应的“协议首部”,完成“封装”:
-
应用层操作:用户数据首先在应用层处理(如通过HTTP协议构造请求数据),应用层通过调用传输层接口,将数据交给传输层。TCP/IP协议族本身也包含部分简单应用程序(如FTP文件传输、SMTP邮箱传输协议对应的客户端/服务端程序)。
-
传输层封装:传输层接收到数据后,在数据前面添加传输层首部(若使用TCP协议则添加TCP首部,包含端口号、序号等信息;若使用UDP协议则添加UDP首部),然后将封装后的数据交给网络层。
-
网络层封装:网络层接收到数据后,在其前面添加网络层首部(主要是IP首部,包含源IP地址、目标IP地址等信息),然后将数据交给数据链路层。
-
数据链路层封装:数据链路层对数据进行最后一次封装,在其前面添加数据链路层首部(如以太网环境下的以太网首部,包含源MAC地址、目标MAC地址等信息),最终形成可通过物理介质传输的“帧”,并将其发送给网卡。
2. 数据接收:报文拆封过程(自下而上)
数据接收过程与发送过程相反,网卡接收到“帧”后,会逐层解析各层协议首部,最终将原始数据交给目标应用程序:
-
网卡接收物理介质传来的“帧”,并将其送入接收缓冲区。
-
数据链路层从缓冲区取出“帧”,解析并剥离数据链路层首部,提取出网络层数据,交给网络层。
-
网络层解析并剥离网络层首部,提取出传输层数据,交给传输层。
-
传输层解析并剥离传输层首部,提取出应用层数据,根据首部中的端口号,将数据交给对应的应用程序。
以上整个过程,即TCP/IP各层协议对数据的封装与拆封过程!

相关文章
MAC内核+外部PHY
**** 以太网接入**MCU**方案 以太网接入是嵌入式开发必不开的东西,那么目前主要有两种方式,**“软件TCP/IP协议栈接入以太网方案”**以及**“硬件TCP/IP协议栈以太网接入方案”**。 目前软件TCP/IP协议栈比较广泛。 软件TCP/IP协议栈接入以太网方案 这种以太网接入方案是LwIP+MAC内核+PHY层芯片共同实现的,用于实现以太网的物理...
LwIP的网卡管理
> 注意netif就是指网卡,即网络接口 netif结构体 之前提到过**网卡是硬件接口**,LwIP是软件,那么怎么实现让硬件和软件无缝连接一起呢?并且软件如何兼容不同的硬件呢? **在LwIP中使用一个数据结构——netif来描述一个网卡**;这是因为网卡多种多样,比如:WiFi、以太网;以及还有各种的以太网的驱动,比如LAN8720。所以LwIP将无法统一的部分进行了抽象;但是底层接口...
PHY从物理层到MAC层的核心原理
以太网介绍:从物理层到MAC子层的核心原理 以太网(Ethernet)是当前应用最广泛的局域网技术,因其在组网领域的高占比,常被大众直接等同于“互联网”。实际上,它是遵循**IEEE 802.3标准**构建的局域网技术,核心定义集中在OSI参考模型的**物理层(PHY)** 与**数据链路层的介质访问控制子层(MAC)**,小到学校的PC局域网(用水晶头网线连接),大到企业的局部网络,都以以太网为...