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 在发送者给其他的网络设备发送数据的时, 是以数据帧的

6.ARP Table


在前面实现的arp协议中,我们只能被动回复对方发来的arp请求。在网络通讯中,一个设备应该有一张自己的arp表,同时可以广播自己的arp。所以现在需要实现一个arp表,同时可以广播自己的arp。 工作模式 PC 1 只知道PC3 的IP地址是10.1.1.3, 但是不知道PC3的MAC, 现在想获取

7.ICMP Ping


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

8.Net Arch


截止到目前,对以太网数据包的处理包含了一下几种协议: udp arp icmp 从代码层次的角度来看,我们将所有的数据捕获都放在同一个线程里面;如果收到消息,就打印出来。这样显然是不对的,作为一个网络协议栈,需要包含多个缓冲区和封层设计。针对现在已经实现的部分,增加环形缓冲区和适当的分层设计提高当前

10.UDP Posix 2


UDP控制块 // udp ctrl block struct localhost { int fd; uint8_t localmac[RTE_ETHER_ADDR_LEN]; uint32_t localip; uint16_t localport;

9.UDP Posix 1


无论传感器的协议是什么,只要下位机可以转换为以太网数据包,我们的Data Driver驱动层都可以接收到数据并且处理。现在我们需要实现像Posix API那样的接口函数,用来写服务器接收和处理数据。这里内容比较多,分两天实现。 Unix UDP 先来看一下正常的Linux网络编程的UDP Serve