日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一个开源且完全自主开发的国产网络协议栈

發布時間:2024/1/18 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一个开源且完全自主开发的国产网络协议栈 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

已剪輯自: https://mp.weixin.qq.com/s/_1LE7mGc9mRuajRgNsyirQ

onps是一個開源且完全自主開發的國產網絡協議棧,適用于資源受限的單片機系統,提供完整地ethernet/ppp/tcp/ip協議族實現,同時提供sntp、dns、ping等網絡工具,支持以太網環境下dhcp動態ip地址申請,也支持動態及靜態路由表。

協議棧還封裝實現了一個伯克利套接字(Berkeley sockets)層。

該層并沒有完全按照Berkeley sockets標準設計實現,而是我根據以往socket編程經驗,以方便用戶使用、簡化用戶編碼為設計目標,重新聲明并定義了一組常見socket接口函數:

  • socket:創建一個socket,目前僅支持udp和tcp兩種類型
  • close:關閉一個socket,釋放當前占用的協議棧資源
  • connect:與目標tcp服務器建立連接(阻塞型)或綁定一個固定的udp服務器地址
  • connect_nb:與目標tcp服務器建立連接(非阻塞型)
  • is_tcp_connected:獲取當前tcp鏈路的連接狀態
  • send:數據發送函數,tcp鏈路下為阻塞型
  • send_nb:數據發送函數,非阻塞型
  • is_tcp_send_ok:數據是否已成功送達tcp鏈路的對端(收到tcp ack報文)
  • sendto:udp數據發送函數,發送數據到指定目標地址
  • recv:數據接收函數,udp/tcp鏈路通用
  • recvfrom:數據接收函數,用于udp鏈路,接收數據的同時函數會返回數據源的地址信息
  • socket_set_rcv_timeout:設定recv()函數接收等待的時長,單位:秒
  • bind:綁定一個固定端口、地址
  • listen:tcp服務器進入監聽狀態
  • accept:接受一個到達的tcp連接請求
  • tcpsrv_recv_poll:tcp服務器專用函數,等待任意一個或多個tcp客戶端數據到達信號
  • socket_get_last_error:獲取socket最近一次發生的錯誤信息
  • socket_get_last_error_code:獲取socket最近一次發生的錯誤編碼

協議棧簡化了傳統BSD socket編程需要的一些繁瑣操作,將一些不必要的操作細節改為底層實現,比如select/poll模型、阻塞及非阻塞讀寫操作等。

簡化并不意味著推翻,socket接口函數的基本定義、主要參數、使用方法并沒有改變,你完全可以根據以往經驗及編程習慣快速上手并熟練使用onps棧sockets。

無須過多關注協議棧底層,利用socket api編程即可完全滿足復雜通訊應用的需求,而不像LwIp一樣需要使用它自定義的一組接口函數才能達成同樣的目標。

為了適應單片機系統對內存使用極度變態的苛刻要求,onps協議棧在設計之初即考慮采用寫時零復制(zero copy)技術。用戶層數據在向下層協議傳遞過程中,協議棧采用buf list鏈表技術將它們鏈接到一起,直至將其發送出去,均無須任何內存復制操作。

另外,協議棧采用buddy算法提供安全、可靠的動態內存管理功能,以期最大限度地提高協議棧運行過程中的內存利用率并盡可能地減少內存碎片。

不同于本世紀00到10年代初,單片機的應用場景中ucosii等rtos尚未大規模普及,前后臺系統還大行其道的時代,現如今大部分的應用場景下開發人員選擇使用rtos已成為主流。

因此,協議棧在設計之初即不支持前后臺模式,其架構設計建立在時下流行的rtos(RT-Thread、ucosii/iii等)之上。協議棧移植的主要工作也就自然是針對不同rtos編寫相關os適配層功能函數了。

當然,如果你有著極其特定的應用場景,需要將onps棧移植到采用前后臺模式的單片機上,我的建議是保留tcp/udp之下協議層的通訊處理邏輯,調整上層的系統架構使其適應目標系統運行模式。

onps棧設計實現了一套完整的tcp/ip協議模型。從數據鏈路層到ip層,再到tcp/udp層以及之上的伯克利socket層,最后是用戶自己的通訊應用層,onps棧實現了全棧覆蓋,能夠滿足絕大部分的網絡編程需求。其架構如下:

可以看出,其與傳統的網絡編程模型并沒有什么不同,用戶仍然是繼續利用socket api編寫常見的tcp及udp網絡應用。同時你還可以利用協議棧提供的幾個網絡工具進行網絡校時、dns查詢等操作。

目錄結構

名稱描述

bsd伯克利sockets層的相關接口函數實現源文件
ethernet以太網協議族如ethernet-ii/arp及emac層、dhcp客戶端等的相關實現源文件
include協議棧的頭文件
ipip及其上層icmp/tcp/udp協議族的相關實現源文件
mmu協議棧內存管理模塊的相關實現源文件
net_tools網絡工具實現源文件,如dns查詢、網絡校時、ping等
netif網卡及路由管理等相關接口實現源文件
port協議棧移植相關的源文件
pppppp鏈路層相關實現源文件,包括lcp/ipcp/chap/pap等協議族的實現源文件
TcpServerForStackTesting用于協議棧測試的tcp服務器,IDE為vs2015開發,目標系統為win7及以上
test_codelinux下的ppp撥號原理驗證文件

協議棧支持主流的ARM Cortex系列MCU,支持Keil MDK、IAR等常見IDE。移植的核心工作就是完成RTOS模擬層的編寫及適配,詳細的移植說明請參考《onps網絡協議棧移植及使用說明v1.0》一文:

https://gitee.com/Neo-T/open-npstack/releases/download/v1.0.0.221017/onps%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE%E6%A0%88%E7%A7%BB%E6%A4%8D%E5%8F%8A%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8Ev1.0.7z

本說明提供了STM32F103RCT6及STM32F407VET6兩種硬件平臺的移植樣例,每種樣例分別針對RT-Thread和ucosii兩種RTOS。樣例工程經過了嚴格的內部測試,可以直接使用。

如果你沒有太多時間,或者樣例工程與你的目標平臺并不匹配,你可以直接參考協議棧移植的一般性指導文件《onps棧移植手冊》:

https://gitee.com/Neo-T/open-npstack/raw/master/onps%E6%A0%88%E7%A7%BB%E6%A4%8D%E6%89%8B%E5%86%8C.pdf

協議棧開發的一般性指導文件請參考

《onps棧API接口手冊》:

https://gitee.com/Neo-T/open-npstack/raw/master/onps%E6%A0%88API%E6%8E%A5%E5%8F%A3%E6%89%8B%E5%86%8C.pdf)

《onps棧用戶使用手冊》:

https://gitee.com/Neo-T/open-npstack/raw/master/onps%E6%A0%88%E7%94%A8%E6%88%B7%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8C.pdf

Apache License 2.0開源許可協議

版權聲明:本文來源網絡,免費傳達知識,版權歸原作者所有。如涉及作品版權問題,請聯系我進行刪除。

總結

以上是生活随笔為你收集整理的一个开源且完全自主开发的国产网络协议栈的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产主播一区二区三区 | 谁有免费黄色网址 | 成人网免费看 | 日日躁狠狠躁 | 大学生三级中国dvd 日韩欧美一区二区区 | 韩国甜性涩爱 | 亚洲高清久久 | 私人av| 极品人妻一区二区 | 久久夜色精品亚洲 | a视频免费观看 | 九九热色 | 91理论片午午伦夜理片久久 | 又黄又色又爽的视频 | 国产精品久久..4399 | 日韩精品一区在线视频 | 99在线精品视频 | 中文字幕一区二区三区5566 | 婷婷第四色 | 日韩 欧美 综合 | 国产主播福利在线 | 黑人干亚洲 | 欧美系列一区二区 | 国产精品久久91 | yes4444视频在线观看 | 视频成人免费 | 黄色大网站 | 欧美一区二区三区视频在线 | 亚洲美女免费视频 | 好看的av在线 | yy111122少妇光屁股影院 | 中文字幕国产在线 | 性欧美video另类hd尤物 | 日本学生初尝黑人巨免费视频 | 一二三区免费 | 中文字幕人妻丝袜乱一区三区 | 337p粉嫩大胆噜噜噜亚瑟影院 | 黄色在线观看网站 | 国产尤物av| 国产精品精品久久久久久 | 香蕉国产999 | 中国极品少妇videossexhd 就要干就要操 | 啪啪五月天 | 精品久久久久久久久久 | 黑人巨大精品人妻一区二区 | 精品人妻天天爽夜夜爽视频 | 日韩中文字幕一区二区 | 日韩香蕉视频 | 黄色美女免费网站 | 亚洲电影中文字幕 | 无码少妇精品一区二区免费动态 | 久久动态图 | 久草网站 | 日本十八禁视频无遮挡 | 国产精品一卡二卡 | 91叼嘿视频 | 国语对白做受按摩的注意事项 | 激情综合啪啪 | 久草青青视频 | 亚洲美女精品视频 | 精品国产系列 | 日日夜夜免费精品 | av资源免费看 | 西西人体www大胆高清 | 有机z中国电影免费观看 | 国产精品午夜无码专区 | 欧美日韩一二三 | 午夜av福利| 日本成人激情 | 91在线免费播放 | 欧美性猛交xx乱大交 | 日韩一级黄色片 | 涩涩一区 | 亚洲影视一区二区三区 | 亚洲免费视频一区二区 | 欧美视频日韩视频 | 日本少妇激情舌吻 | 午夜免费看 | 日韩中文字幕视频在线 | 国产一区精品久久 | 免费毛片在线播放免费 | 四虎影院在线免费播放 | 色综合天天综合综合国产 | 黄色a站| 天天干天天摸天天操 | 国产盗摄精品一区二区酒店 | tube极品少妇videos | 日韩专区一区二区三区 | 免费看一区二区三区 | 天天综合久久综合 | 日本后进式猛烈xx00动态图 | 正在播放日韩 | 99久久久无码国产精品性黑人 | 国产乱国产乱老熟 | 亚洲www在线观看 | www.av小说| 青青草97 | 欧美日韩麻豆 | 日韩欧美不卡 |