| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 网络协议 -> 【JokerのZYNQ7020】USER_TYPE_ETH_LINUX -> 正文阅读 |
|
|
[网络协议]【JokerのZYNQ7020】USER_TYPE_ETH_LINUX |
|
软件环境:vivado 2017.4? ? ? ? 硬件平台:XC7Z020 之前已经说了在linux下,怎么建立UDP、TCP-server、TCP-client的应用,而这些都是带有特定协议的以太网数据包,所以就好奇啦,有没有办法发送自定义type类型的以太网数据包呢?当然啦,是有的,切入点就是
?建立socket套接字函数中的第二个参数type,它常用的有以下几种,分别含义如下。
今天要举例说明的就是通过SOCK_RAW来发送自定义type类型的以太网数据包。 当然,工程不变。
?接下来,上代码。
对代码部分解释说明如下: 1.第一次使用socket()函数,是为了获取本地网卡信息,什么意思呢,就是说由于是发送自定义类型、自定义格式的以太网包,在无法获知ARP路由信息的情况下,需预先告知自定义的以太网包数据,从哪个网络接口上发出去。 2.另外,在本地板卡包含多个网络接口时,也需要告诉函数,我由interface参数指定的接口名称的网卡,是否在本地存在,如果存在,这个接口的MAC地址是什么(因为最基本的目的MAC + 源MAC + TYPE这种最基本的包格式还是要遵循的)。 3.紧接着,通过ioctl (sd, SIOCGIFHWADDR, &ifr),将在本地搜索ifr.ifr_name名称对应的网络接口,并将接口信息初始化给ifr结构体,其中,MAC地址就包含在ifr.ifr_hwaddr.sa_data中。 4.从这之后,device结构体才是sendto()时需要真正利用的参数,填充好类型、源MAC地址、地址长度等参数后,就可以开始组自定义数据字段内容了。 5.最后,利用sendto()将组好的包含自定义type和自定义data的以太网数据包发出。 6.这里,在建立socket时,多次使用了ETH_P_ALL这个参数,是什么意思呢,举个例子
由于type类型为0x6678的报文没有在if_ether.h中定义,所以套接字在遇见此类型的报文时,就不知道该如何处理,此函数的调用,其实就是告诉套接字,sd在遇到type类型为0x6678的报文时,可以使用sendto()及recvfrom()对此以太网包进行收发,而ETH_P_ALL如字面意思,任何类型的协议包,都进行处理。 将上述代码编译运行在板卡上后,得到的调试打印信息如下。
与此同时,通过wireshark抓包,可以看到,PC端接收到自定义类型的数据包了,且与组包内容相一致。
|
|
|
| 网络协议 最新文章 |
| 使用Easyswoole 搭建简单的Websoket服务 |
| 常见的数据通信方式有哪些? |
| Openssl 1024bit RSA算法---公私钥获取和处 |
| HTTPS协议的密钥交换流程 |
| 《小白WEB安全入门》03. 漏洞篇 |
| HttpRunner4.x 安装与使用 |
| 2021-07-04 |
| 手写RPC学习笔记 |
| K8S高可用版本部署 |
| mySQL计算IP地址范围 |
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年12日历 | -2025/12/15 13:41:22- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |