久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1096|回復: 11
打印 上一主題 下一主題
收起左側

為了讓51單片機聯網,自己設計了一個輕量的網絡協議棧

  [復制鏈接]
跳轉到指定樓層
樓主
一直想讓單片機(尤其是51)聯網,感覺這樣很好玩。但是沒有非常輕量的ip實現,而且本人不太想讓單片機用ip網絡(占地址)。于是設計了非常輕量的網絡協議棧,稱為zxdnet(簡稱znet)。他可以工作對mtu的最小要求是48字節,所以可以在很多鏈路上,例如串口和紅外。他很適合愛好者用來玩,也可以用于學習網絡原理。znet適用于構建完全私有的組織內網絡而不是公共網絡。
報文中所有字段都是大端序的。

znet和ip一樣是采用分層架構的分組交換網絡,數據包可以經過多個路由器轉發后到達目的地。
首先介紹下znet的網絡層協議zp的報頭:


介紹下各字段:
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):首部校驗和。
     僅對頭部字段計算校驗和。由于某些頭部字段(例如生存時間)在傳輸過程中可能會改變,因此每個處理頭部的節點都必須驗證和重新計算這個校驗和。
    校驗和字段是頭部中所有16位字的反碼和的16位反碼。在計算過程中,校驗和字段本身被視為零。如果計算出的校驗和為零,則以全1的形式傳輸。如果校驗和字段本身為0,就跳過校驗,這適用于可靠鏈路。

Source Address和Destination Address:源地址和目標地址。

地址分配:
   Zxdnet使用32位地址空間,采用CIDR,分類如下:

   未指定/本地廣播地址(0.0.0.0/32):
   位模式:00000000 00000000 00000000 00000000。
   作為源:未初始化設備(例如,啟動時的0.0.0.0)。
   作為目的地:有限廣播(在子網之外不可路由)。

   回環地址(0.0.0.128/25):
   位模式:00000000 00000000 00000000 1XXXXXXX。
   僅限于內部主機通信。

   NAT擴展地址(0.0.0.64/26):
   位模式:00000000 00000000 00000000 01XXXXXX。
   僅限于本地地址擴展。
   NAT處理:典型的NAT中間盒有兩個接口,一個連接到包含最多63個NAT設備的局域網(接口地址為0.0.0.64/26),另一個連接到全球網絡(具有全局單播地址)。對于使用端口號的傳輸層協議,NAT設備將全局單播地址的端口號劃分為幾個段,每個段包含相同數量的端口。這些端口然后映射到每個設備的前幾個端口號(從0開始)。中間盒本身將被分配第一個端口段。例如,對于一個總共有256個端口的傳輸層協議,NAT設備將這些端口劃分為64個段,每個段包含4個端口。端口0-3由中間盒使用,端口4-7映射到第一個NAT設備的端口0-3,依此類推,端口252-255映射到第63個NAT設備的端口0-3。對于ZCP Echo和ZCP錯誤報告,中間盒充當代理。ZARP和IPoZP不支持NAT穿越。NAT嵌套不被支持。

   保留地址(0.0.0.1-0.0.0.63):
   位模式:00000000 00000000 00000000 00XXXXXX(XXXXXX!=000000)。
   這些地址不得分配給任何設備或用于數據報頭。

   單播地址(所有非保留地址):
   分配給設備,全局可路由。
znet地址空間中只有256個為特殊用途,其他全部可以分配給設備。znet沒有所謂“網絡地址“,表示一個網絡可以用第一個設備地址+子網前綴長度。znet也沒有所謂”局域網廣播地址“,只有一個不可跨網關的有限廣播地址0.0.0.0。這樣的設計十分簡化,可以高效實現,節省地址。

zp協議不支持網絡層分片,因為違反了網絡層無連接原則,并且一些運輸層不需要,占用了頭部空間。

下面介紹一些運輸層協議(上面提到的)。

  首先是zarp協議。他設計的很簡潔。如果鏈路層目標地址是廣播地址就是請求,是設備地址就是響應。

zcp協議用于控制和診斷網絡本身。校驗和算法與zp頭的一致,但是涵蓋zcp頭和他的數據。zcp報文最大48字節(包括zp頭)。zcp目前有2個作用:錯誤回報和回顯。首先說下錯誤回報報文。


以下是errcode定義:

0 = 網絡不可達。

1 = 主機不可達。

2 = 協議不可達。

3 = 端口不可達。

4 = 超出MTU。

5 = 生存時間在傳輸中超出。

6 = 數據丟失。

7 = 數據損壞。

8 = 鏈路擁塞。

9 = 顯式擁塞通告。

10 = 不支持組播。

注意,如果是超出MTU,原始zp頭里的校驗和字段會被替換為mtu。


然后介紹下回顯報文。



code=0就是回顯請求,code=1就是回顯響應。對方收到后改變code,重新計算校驗和,然后發回報文, Identifier ,Sequence Number和Data不能改變。
data是用戶數據,最大22字節。
znet支持跨nat ping。Source Host和 Destination Host就是為了跨nat ping。在正常情況下,當設備發送 echo 請求時,這兩個字段都設置為 0。如果 NAT 設備向另一臺設備發送 Echo 請求,則中間框會將 Source Host 字段設置為其標識符(與地址的低 6 位匹配),以便將 Echo 回復路由回 NAT 設備。如果設備想要向 NAT 設備發送 echo 請求,則必須將 Destination Host 字段設置為 NAT 設備的標識符,并將 echo 請求發送到中間盒。在將請求轉發到目標 NAT 設備之前,中間框會自動將 Destination Host 字段設置為零。當目標 NAT 設備返回回聲回復時,中間框將使用 NAT 設備的標識符重寫該字段,并將響應轉發回發起回聲請求的設備。


最后介紹tudp協議。


這個報文頭簡單,無需過多講解。校驗和需要涵蓋tudp頭部和他的數據。tudp最大允許28字節的數據,從而可以在單片機上高效運行。


znet其余的設計以后補充。

znet主要用途是研究和學習,以及讓單片機聯網。znet目前還沒有被實現,我會盡快實現他。歡迎大家一起探討,研究,使用,提出修改意見!
本人是業余愛好者,znet可能有不完善之處,請大家盡管提出
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂 踩
回復

使用道具 舉報

12#
ID:444392 發表于 2025-3-19 14:50 | 只看該作者
高中.....  想起我兒子在高三時也是捧著一大堆電腦書看。
建議項目緩緩,可以高考完成后再慢慢做,這類項目必須是在長時間測試中完善才能做出真正有價值的東西。
回復

使用道具 舉報

11#
ID:71233 發表于 2025-3-18 07:59 | 只看該作者
高中時代都能研究這么高深的技術了,不錯的,必是未來的高技術人才!
回復

使用道具 舉報

10#
ID:688225 發表于 2025-3-17 22:17 | 只看該作者
zxcscm 發表于 2025-3-16 22:52
實現了自主路由的話,是不可以使用無線模塊接力自組網了

是的,znet可以工作在很多鏈路上,包括433m無線模塊和2.4g無線模塊,也可以運行在ble和wifi上,實現極低開銷與極大自由度的嵌入式網絡。
回復

使用道具 舉報

9#
ID:688225 發表于 2025-3-17 22:16 | 只看該作者
lxh0508 發表于 2025-3-17 18:55
重新造輪子,沒有什么意義。現有的交換機、路由器都用不上。自己玩玩還可以

Znet被設計與以太網交換機完全兼容。一臺znet路由器可以使用一臺linux主機實現。znet并不是被設計專用于以太網的,而是可以工作在串口/紅外/無線等幾乎任何鏈路上,實現真正的低開銷網絡
回復

使用道具 舉報

8#
ID:688225 發表于 2025-3-17 22:14 | 只看該作者
wkman 發表于 2025-3-17 11:16
無tcp-ip都不算“聯網”概念吧

為什么呢?tcpip是一種常用的網絡協議棧而不是唯一的
回復

使用道具 舉報

7#
ID:22119 發表于 2025-3-17 18:55 | 只看該作者
重新造輪子,沒有什么意義。現有的交換機、路由器都用不上。自己玩玩還可以
回復

使用道具 舉報

6#
ID:433219 發表于 2025-3-17 11:16 | 只看該作者
無tcp-ip都不算“聯網”概念吧
回復

使用道具 舉報

5#
ID:688225 發表于 2025-3-16 22:55 | 只看該作者
Highnose 發表于 2025-3-16 18:14
趕緊實現,很不錯的項目

本人高中生學業繁忙,實現需要一段時間,稍安勿躁
回復

使用道具 舉報

地板
ID:36322 發表于 2025-3-16 22:52 | 只看該作者
實現了自主路由的話,是不可以使用無線模塊接力自組網了
回復

使用道具 舉報

板凳
ID:830831 發表于 2025-3-16 18:14 | 只看該作者
趕緊實現,很不錯的項目
回復

使用道具 舉報

沙發
ID:444392 發表于 2025-3-16 07:47 | 只看該作者
厲害!可以為底部硬件提供足夠性價比
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久国产一区二区三区 | 日韩高清成人 | 日韩欧美在线不卡 | 国产精品综合网 | 色综合久 | 国产乱码久久久久久 | 91 久久 | 亚洲一区 中文字幕 | 成年精品 | 久久国产精品首页 | 国产精品高潮呻吟久久av黑人 | 欧美一二三 | 日韩一区二区三区av | 国产精品久久九九 | 国产精品成人一区 | 亚洲一区中文 | 色综合久久天天综合网 | 99这里只有精品 | 国产精品三级 | 国产精品美女久久久久久免费 | 国产91在线播放 | 成人精品视频99在线观看免费 | a久久| 色女人天堂 | 久久不卡| 男人电影天堂 | 成人免费视频 | 天堂久久网 | 一区在线视频 | 亚洲天堂av网 | 欧美综合一区二区三区 | 羞视频在线观看 | 国产精品亚洲综合 | 99精品国产一区二区三区 | 久久精品视频网站 | 涩涩视频在线观看免费 | 午夜精品一区二区三区在线观看 | 欧美 视频| 午夜免费视频观看 | 亚洲中午字幕 | 久久福利电影 |