13 Star 126 Fork 41

Neo-T / Open-NPStack

2023-08-06 14:04
1636648 neo t 1667443665 Neo-T

更新内容

  1. 增加了ipv6支持,支持ipv6地址状态及无状态自动配置;
  2. tcp实现延迟应答(DACK,Delayed Acknowledgment)及选择性确认(SACK, Selective Acknowledgment)机制,优化tcp栈传输性能;
  3. 提供网络层人机交互接口——虚拟网络终端(NVT,Net virtual Terminal),交互命令覆盖网络参数配置、常用网络调试工具等,提供扩展NVT命令接口,允许用户添加自定义命令;
  4. 提供telnet服务端口,允许用户通过telnet登录NVT,对终端设备进行远程操控;
  5. 提供telnet客户端,允许用户登录NVT后再通过telnet客户端登录其它telnet主机(如windows、linux等),实现 telnet 网络穿透;

NVT和Telnet服务让协议栈具象化,其实际运行界面如下图所示:
输入图片说明

通过NVT登录其它telnet主机时的结果图如下:
输入图片说明

开发文档

源码根目录下提供了相关开发手册:
《onps栈移植手册》
《onps栈API接口手册》
《onps栈用户使用手册》
《onps网络协议栈移植及使用说明》

移植样例

协议栈提供了rt-thread和ucosii下的移植样例工程。rt-thread样例工程的获取地址如下:
https://gitee.com/Neo-T/onps-rtthread/releases/tag/v1.1.0

ucos-ii的获取地址如下:
https://gitee.com/Neo-T/onps-ucosii/releases/tag/v1.1.0

2022-10-17 18:16
1636648 neo t 1667443665 Neo-T

onps是一个开源且完全自主开发的国产网络协议栈,适用于资源受限的单片机系统,支持ethernet/ppp/tcp/ip协议族,同时提供sntp、dns、ping等网络工具,支持以太网环境下dhcp动态ip地址申请,也支持动态及静态路由表。协议栈还封装实现了一个伯克利套接字(Berkeley sockets)层,提供如下通用接口函数:

  • 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最近一次发生的错误编码

为了方便用户使用、简化用户编码,协议栈重新声明并定义了socket接口函数,简化了传统BSD socket编程需要的一些繁琐操作,将一些不必要的操作细节改为底层实现,比如select/poll模型、阻塞及非阻塞读写操作等。不过不要担心,这些接口函数的调用方式及功能没有改变,你完全可以根据以往编程经验及习惯使用这些函数。

协议栈不支持前后台模式,其架构设计建立在时下流行的rtos(RT-Thread、ucosii/iii等)之上。协议栈移植的主要工作也就自然是针对不同rtos编写相关os适配层功能函数了。协议栈提供了rt-thread和ucosii下的移植样例工程。rt-thread样例工程的获取地址如下:
https://gitee.com/Neo-T/onps-rtthread/releases/tag/v1.0.0

ucos-ii的获取地址如下:
https://gitee.com/Neo-T/onps-ucosii/releases/tag/v1.0.0

详细的协议栈移植及使用相关的内容请下载附件“onps网络协议栈移植及使用说明v1.0.7z”。

最后提交信息为: Version adjusted
C/C++
1
https://gitee.com/Neo-T/open-npstack.git
git@gitee.com:Neo-T/open-npstack.git
Neo-T
open-npstack
Open-NPStack

搜索帮助