21.TCP Posix API 2


tcp posix api send发送 ssize_t nsend(int sockfd, const void *buf, size_t len, __attribute__((unused))int flags) { ssize_t length = 0; void* ho

22.Debug&重构分发协议


debug 如果能找到bug就调试好,找不到就先推进,因为暂时不影响。 我把代码调整到一个文件中,先出1.0版,这样可以避免一些全局的变量问题。 重构分发协议 整合到KNI里面

23.KNI


kni KNI(Kernel Network Interface)是一种在Linux内核中实现的网络编程接口,它提供了一种高效的方式来处理网络数据包。KNI的原理是将用户空间和内核空间之间的数据传输最小化,以降低网络处理的延迟和开销。 KNI允许用户空间应用程序直接访问内核网络协议栈,从而可以更灵活

1.开发环境搭建


VMware虚拟机 Ubuntu镜像 这里使用Ubuntu20.04.6-server-amd的镜像,因为目前Jetson Orin也是这个版本的系统不过是Arm架构的。 镜像下载地址

25.网络开发


在之前的协议栈中,无论是tcp还是udp,都只能是单连接,无法并发地接收数据。想要解决这个问题,有以下几个方案: 开多个线程 IO多路复用 下面我会分别实现一下Linux环境下上面三种做法,最后选择在REPStack中我们选择哪一种。这里直接用我以前写的代码了。 多线程做法 #define BUFF

24.DNS


dns是基于udp的协议,用于向dns服务器请求域名,考虑到后续要基于以太网做协议的扩展,所以这里实现一下dns协议来积累一些经验。 实现过程 头文件 #ifndef __LN_DNS_H__ #define __LN_DNS_H__ /* Response Type */ enum {

2.数据收发及原理


环境 Ubuntu20.04.6 Visual Studio Code VMware17 UDP/IP数据包 Ethernet 2:以太网头 Destination:目的MAC地址 Source:源MAC地址 Type:上层协议 0x0800:IP协议 0x0806:ARP协议

3.UDP Send


IP 公司用的移动WiFi,和宿舍里不一样,看一下IP。 UDP/IP数据包 Ethernet 2:以太网头 Destination:目的MAC地址 Source:

5.ICMP


icmp What ICMP是Internet Control Message Protocol(互联网控制报文协议)的缩写,它是在TCP/IP协议栈中的一种网络层协议。ICMP主要用于在IP网络中传输控制消息,以便在网络节点之间进行错误报告、诊断和路由选择。 ICMP消息通常由网络设备(如路由器或

4.ARP Reply


arp What ARP(Address Resolution Protocol ) ,即地址解析协议,负责把目的主机的IP 地址解析成目的MAC地址。当发送者 知道目的主机的IP地址之后, 就可以使用这个IP地址去解析对方的MAC地址。 Why 在发送者给其他的网络设备发送数据的时, 是以数据帧的