常宁市住房和城乡建设局网站手机上怎么创建自己的网站

当前位置: 首页 > news >正文

常宁市住房和城乡建设局网站,手机上怎么创建自己的网站,建设网站赚钱,免费企业信息发布平台文章目录 1 前言2 简介2 .1 什么是ARP#xff1f;2.2 ARP的优点2.3 ARP工作原理2.4 ARP应用场景 3 WIZnet以太网芯片4 ARP网络设置示例概述以及使用4.1 流程图4.2 准备工作核心4.3 连接方式4.4 主要代码概述4.5 结果演示 5 注意事项6 相关链接 1 前言 随着网络安全越来越受到重… 文章目录 1 前言2 简介2 .1 什么是ARP2.2 ARP的优点2.3 ARP工作原理2.4 ARP应用场景 3 WIZnet以太网芯片4 ARP网络设置示例概述以及使用4.1 流程图4.2 准备工作核心4.3 连接方式4.4 主要代码概述4.5 结果演示 5 注意事项6 相关链接 1 前言 随着网络安全越来越受到重视ARP攻击防护软件的市场需求也在不断增加。ARP还提供了去中心化的应用分发解决方案包括代码完全开源、订单互相开放以及利润共享等。这些特点使得ARP在未来的发展中具有广阔的应用前景。 W5100S/W5500是一款集成全硬件 TCP/IP 协议栈的嵌入式以太网控制器同时也是一颗工业级以太网控制芯片。本教程将介绍W5100S/W5500以太网DHCP应用的基本原理、使用步骤、应用实例以及注意事项帮助读者更好地掌握这一技术。 2 简介 2 .1 什么是ARP ARPAddress Resolution Protocol是地址解析协议是根据IP地址获取物理地址的一个TCP/IP协议。它用于将网络中的IP地址解析为具体的硬件地址MAC地址。在计算机网络中当一台主机需要发送数据包给另一台主机时它需要知道目标主机的MAC地址。然而在大多数情况下主机只知道目标主机的IP地址因此需要使用ARP协议来将IP地址转换为MAC地址。 2.2 ARP的优点 ARP的优点主要包括 可以将IP地址解析为以太网MAC地址从而方便网络设备之间的通信。ARP表项学习和ARP报文处理的限制、检查等措施能够保证网络设备的安全性。ARP的简单、易用性。 2.3 ARP工作原理 ARP的工作原理可以概括为以下几点 每台主机都会在自己的ARP缓冲区中建立一个ARP列表地址转换表以存储IP地址与MAC地址的对应关系。当源主机需要发送数据到目的主机时首先会检查自己的ARP列表看是否已存在目的主机的IP地址对应的MAC地址。如果存在就直接将数据包发送到该MAC地址如果不存在就会向本地网段发起一个ARP请求的广播包查询目的主机对应的MAC地址。ARP请求数据包中会包含源主机的IP地址、硬件地址以及目的主机的IP地址。网络中的所有主机收到这个ARP请求后会检查数据包中的目的IP地址是否与自己的IP地址一致。如果源主机一直没有收到ARP响应数据包表示ARP查询失败。如果源主机收到ARP响应数据包就会将获得的目的主机的IP地址和MAC地址添加到自己的ARP列表中并利用此信息开始数据的传输。 2.4 ARP应用场景 ARP协议在很多网络场景中都有应用最常见的应用场景包括 网络通信在局域网中ARP协议可以帮助计算机通过IP地址获取其对应的MAC地址从而实现计算机之间的通信。路由选择ARP协议可以帮助路由器找到目标设备的MAC地址这在路由选择方面非常有用。交换机学习MAC地址交换机可以通过ARP协议学习到每台计算机的MAC地址并建立MAC地址表从而可以直接转发数据包提高局域网的通信效率。 3 WIZnet以太网芯片 WIZnet 主流硬件协议栈以太网芯片参数对比 ModelEmbedded CoreHost I/FTX/RX BufferHW SocketNetwork PerformanceW5100STCP/IPv4 MAC PHY8bit BUS, SPI16KB4Max.25MbpsW6100TCP/IPv4/IPv6, MAC PHY8bit BUS, Fast SPI32KB8Max.25MbpsW5500TCP/IPv4, MAC PHYFast SPI32KB8Max 15Mbps W5100S/W6100 支持 8bit数据总线接口网络传输速度会优于W5500。W6100 支持IPV6与W5100S 硬件兼容若已使用W5100S的用户需要支持IPv6可以Pin to Pin兼容。W5500 拥有比 W5100S更多的 Socket数量以及发送与接收缓存。 4 ARP网络设置示例概述以及使用 4.1 流程图 程序的运行框图如下所示 4.2 准备工作核心 软件 Visual Studio CodeWIZnet UartTool 硬件 W5100SIO模块 RP2040 树莓派Pico开发板 或者 WIZnet W5100S-EVB-Pico开发板Micro USB 接口的数据线TTL 转 USB网线 4.3 连接方式 通过数据线连接PC的USB口主要用于烧录程序也可以虚拟出串口使用 通过TTL串口转USB连接UART0 的默认引脚 RP2040 GPIO0UART0 TX —- USB_TTL_RXRP2040 GPIO1UART0 RX —- USB_TTL_TX 使用模块连接RP2040 进行接线时 RP2040 GPIO16 —- W5100S MISORP2040 GPIO17 —- W5100S CSRP2040 GPIO18 —- W5100S SCKRP2040 GPIO19 —- W5100S MOSIRP2040 GPIO20 —- W5100S RST 通过PC和设备都通过网线连接路由器LAN口
4.4 主要代码概述 我们使用的是WIZnet官方的ioLibrary_Driver库。该库支持的协议丰富操作简单芯片在硬件上集成了TCP/IP协议栈该库又封装好了TCP/IP层之上的协议我们只需简单调用相应函数即可完成协议的应用。 第一步arp_run.c文件中加入对应的.h文件。 第二步定义DHCP配置需要的宏。 第三步网络信息的配置,开启DHCP模式。 第四步编写定时器回调处理函数用于 DHCP 1s滴答定时器处理函数。 第五步主函数先是定义了一个定时器结构体参数用来触发定时器回吊函数对串口和SPI进行初始化然后写入W5100S的网络配置参数初始化DHCP后开始DHCP获取IP获取到就打印获取到的IP获取次数超过最大获取次数时就使用静态IP然后主循环发起ARP请求所需参数是socket的号、缓存buff、以及目标IP。获取到就答应目标IP的MAC地址。 #include stdio.h #include pico/stdlib.h #include pico/binary_info.h #include hardware/spi.h#include wizchip_conf.h #include bsp_spi.h #include dhcp.h // Use dhcp #include socket.h // Use socket #include arp.h // Use arp#define SOCKET_ID 0 // Socket number #define ETHERNET_BUF_MAX_SIZE (1024 * 2) // Send and receive cache size #define DHCP_RETRY_COUNT 5 // DHCP retry times/*** brief Timer callback processing function, used for dhcp timing processing* param repeating :Timer structure* return bool*/ bool repeating_timer_callback(struct repeating_timer t);/** brief Initialization of chip network information* param conf_info :Static configuration information* return none*/ void network_init(wiz_NetInfo conf_info);/ Network information to be configured. / wiz_NetInfo net_info {.mac {0x00, 0x08, 0xdc, 0x1e, 0xed, 0x2e}, // Configured MAC address.ip {192, 168, 1, 10}, // Configured IP address.sn {255, 255, 255, 0}, // Configured subnet mask.gw {192, 168, 1, 1}, // Configured gateway.dns {8, 8, 8, 8}, // Configured domain address.dhcp NETINFO_DHCP}; // Configured dhcp model,NETINFO_DHCP:use dhcp; NETINFO_STATIC: use static ip.static uint8_t ethernet_buf[ETHERNET_BUF_MAX_SIZE] {0, }; // Send and receive cachestatic uint8_t destip[4]{192, 168, 1, 2}; // udp destination ip static uint8_t dest_ip[4] {192, 168, 1, 2}; // UDP IP address static uint8_t breakout_flag 0; // Define the DHCP acquisition flagint main() {struct repeating_timer timer; // Define the timer structurewiz_NetInfo get_info;/ MCU init */stdio_init_all(); // Initialize the main control peripheralwizchip_initialize(); // Initialize the chip interface/dhcp init/DHCP_init(SOCKET_ID, ethernet_buf); // DHCP initializationadd_repeating_timer_ms(1000, repeating_timer_callback, NULL, timer); // Add DHCP 1s Tick Timer handlerprintf(wiznet chip tcp server example.\r\n);network_init(net_info); // Configuring Network Informationprint_network_information(get_info); // Read back the configuration information and print itwhile (true){do_arp(SOCKET_ID, ethernet_buf, dest_ip); //run arp} }void network_init(wiz_NetInfo *conf_info) {int count 0;uint8_t dhcp_retry 0;if (conf_info-dhcp NETINFO_DHCP){while (true){switch (DHCP_run()) // Do the DHCP client{case DHCP_IP_LEASED: // DHCP resolves the domain name successfully{if (breakout_flag 0){printf(DHCP success\r\n);getIPfromDHCP((*conf_info).ip);getGWfromDHCP((*conf_info).gw);getSNfromDHCP((*conf_info).sn);getDNSfromDHCP((*conf_info).dns);wizchip_setnetinfo(conf_info); // Configuring Network Informationclose(SOCKET_ID); // After dhcp close the socket, avoid errors in later usebreakout_flag 1;}break;}case DHCP_FAILED:{printf( DHCP failed \r\n);count;if (count DHCP_RETRY_COUNT) // If the number of times is less than or equal to the maximum number of times, try again{printf(DHCP timeout occurred and retry %d \r\n, count);}else if (count DHCP_RETRY_COUNT) // If the number of times is greater than DHCP fails{breakout_flag 1; // if DHCP fail, use the staticDHCP_stop(); // Stop processing DHCP protocolconf_info-dhcp NETINFO_STATIC;wizchip_setnetinfo(conf_info); // Configuring Network Informationbreak;}break;}}if (breakout_flag){printf(config succ\r\n);break;}}}else{wizchip_setnetinfo(conf_info); // Configuring Network Information} }bool repeating_timer_callback(struct repeating_timer *t) {DHCP_time_handler(); // DHCP 1s Tick Timer handlerreturn true; } 4.5 结果演示 1.打开WIZ UartTool填入参数选择串口对应的com port波特率1152008位数据位1位停止位无校验位无流控填完参数后点击open打开。 2.打开串口后按下复位键可以看到串口打印DHCP获取到的信息其中IP为192.168.1.123。 3.然后开始ARP请求192.168.1.2获取MAC获取到MAC地址之后表示成功。 5 注意事项 socket号必须选择socket0并使其工作在MACRAM模式下。如果想用WIZnet的W5500来实现本章的示例我们只需修改两个地方即可 ​ (1)在library/ioLibrary_Driver/Ethernet/下找到wizchip_conf.h这个头文件将WIZCHIP 宏定义修改为W5500。 ​ (2)在library下找到CMakeLists.txt文件将COMPILE_SEL设置为ON即可OFF为W5100SON为W5500。 6 相关链接 WIZnet官网 WIZnet官方库链接 本章相关例程链接 想了解更多评论留言哦