找回密码
 立即注册
×

00:00:00

您有一张0.1元限时体验卡,马上领取获得VIP尊享特权。

为了让51单片机联网,自己设计了一个轻量的网络协议栈

2025-3-16 18:12 来自 tntxxd 发布 @ 综合讨论

一直想让单片机(尤其是51)联网,感觉这样很好玩。但是没有非常轻量的ip实现,而且本人不太想让单片机用ip网络(占地址)。于是设计了非常轻量的网络协议栈,称为zxdnet(简称znet)。他可以工作对mtu的最小要求是48字节,所以可以在很多链路上,例如串口和红外。他很适合爱好者用来玩,也可以用于学习网络原理。znet适用于构建完全私有的组织内网络而不是公共网络。
报文中所有字段都是大端序的。

znet和ip一样是采用分层架构的分组交换网络,数据包可以经过多个路由器转发后到达目的地。
首先介绍下znet的网络层协议zp的报头:
(参见图1)

介绍下各字段:
BF(2bit):基本标志。前1bit表示目标地址类型,如果是0目标地址为普通地址,如果是1目标地址为组播地址(目前还没设计组播)。后1bit表示无错误标志,如果此位为1,在发生错误的时候就不会通过zcp协议回报错误(类似ip中的icmp错误回报)

Proto(4bit):上层协议号
        0: ZARP (ZXDNET 地址解析协议)
        1: ZCP (ZXDNET 控制协议)
        2: TUDP (简单用户数据报协议)
        3: UDP (用户数据报协议)
        4: TCP (传输控制协议)
        5: IPoZP (IP over ZP)
        6: RAW
        7-15: 用户自定义

Time To Live(8bit):TTL
        这个字段定义了数据报允许的最大跳数。发送方初始化这个值,每个路由节点在处理时将其减一。如果TTL在数据报到达目的地之前变为零,数据报会立即被丢弃。这个机制防止了无限路由循环。

Extra Flag(16bit):额外标志。用户自定义,一般用于qos。

Total Length (16bit):报文总长度(字节),包括网络层头(16字节)及其数据。

Header Checksum(16bit):首部校验和。
     仅对头部字段计算校验和。由于某些头部字段(例如生存时间)在传输过程中可能会改变,因此每个处理头部的节点都必须验证和重新计算这个校验和。
    校验和字段是头部中所

免责声明:

本平台旨在开源共享精神,请勿发布敏感信息,任何违法信息我们将移交公安机关;

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-3 08:31 , Processed in 0.357457 second(s), 28 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

返回顶部