libnet发包过程
2019/08/12
(这篇文章更像是解释原生socket发包的过程 2019/08/13)
今天具体了解了一下, 发包的过程,目前知道比较关注的两种两种发包方式,分别是构造IP包和直接构造以太网包;这两种我都试过,他们实现的原理是不尽相同的。首先要明确的一个问题,他们都需要通过系统调用来实现功能,那么都不可能通过驱动层面的内容来进行发包,所以发包的过程,最后终究应该是和socket这种编程的方式很像。
int socket(int domain, int type, int protocol);
以前的时候,普遍在进行编程的时候都是使用一些TCP/UDP相关的编程接口;这里进行发包的过程,是通过个人的需求对数据包进行构造,通过构造之后然后选择网卡发送出去。
同样,这里有两种发送方式,分别是发送IP包和发送以太网帧。
他们分别采用的协议簇是不一样的,一个是AF_PACKET和AF_INET
,具体的内容通过后面的type
进行再区分。
文献[1]中对AF_PACKET进行了比较详细的介绍,这部分介绍个各种背景,算是比较丰富的材料,但最后说明使用的发送函数是write,这个跟我理解的不一样,我见到的都是使用sendto/sendmsg;文献[2]是利用这种方式进行捕包的;文献[3]中提到的问题是发包使用的内容,他的意思是我可以不用构造相关的链路层信息。这个问题不是非常理解,就是编程细节的问题
文献[4]中对两种不同的原生socket进行了对比;文献[5][6]分别是两个发送和接收的范例。
文献[7]是对raw socket的一个详细介绍
2019/08/16
问题描述,这里遇见一个这样的问题,在多线程同时发包的过程中,经常出现no availiable buffer
(单词可能错),这个错误的原因[9],是错误码 ENOBUFS
,文章[9]中提到了两个错误码,另外一个是内存限制,但我看了机器当前的内存还有一些其他的博客,不然是内存的原因。 ENOBUFS
这个东西的主要原因,看文档描述,是说网卡的队列满了。
但是调整了相关的网卡信息之后,比如大小,缓冲区大小,虽然能减缓这种情况,但并不能完全根治这种问题;对于这部分的内容,最主要的一个问题就是没有一个可以入手的测试方案,只能说大致上定位他在协议栈的什么位置。到目前位置,我也没办法对项目上发包的性能进行继续调优。
参考文献
[1]Raw socket, Packet socket and Zero copy networking in Linux
[2]packet-sniffer-code-in-c-using-linux-sockets-bsd-part-2/
[3]sending-data-on-af-packet-socket
[4]Linux的RAW SOCKET探索
[5]capture_ethernet_frames_using_an_af_packet_socket_in_c
[6]send_an_arbitrary_ethernet_frame_using_an_af_packet_socket_in_c
[7]suricata抓包方式之一 AF_PACKET
[8]sock_raw
http://www.taodudu.cc/news/show-3028154.html
相关文章:
- shell编程—tomcat自动发包详解
- npm发包
- dpdk-pktgen进行发包,dpdk-testpmd和dpdk-pdump进行收包并保存为pcap文件
- python socket发包_python 多线程tcp udp发包 Dos工具。
- 带宽测试初探(UDP发包方式)
- MPTCP iperf 发包方式
- Http提交数据格式与Spring获取参数知识点整理
- 基于matlab的数字图像边缘检测算法研究,基于MATLAB数字图像边缘检测算法的研究与对比分析...
- matlab对于处理数字图像的优点,学习MATLAB数字图像处理经验谈
- 数字图像matlab边缘检测(一)
- 基于MATLAB的几种图像分割算法
- vue学习九--v-for的四种用法,以及key问题
- 转载:基于MATLAB的几种图像分割算法
- SiC功率半导体产业高峰论坛成功举办
- HS光流法及其代码示例
- 手势跟踪与识别
- harris角点匹配 matlab,基于Harris角点的图像匹配算法
- Harris-Laplace角点检测初探+python实现
- matlab guide图像处理实例,现代数字图像处理技术提高及应用案例详解 MATLAB版-教科书.pdf...
- 本科毕业论文-软件开发类-《基于Android端开关控制系统的设计与实现》-论文模板
- 运城学院计算机课,主讲教师
- 端口号被占用:The Tomcat connector configured to listen on port “端口号“ failed to start.
- 解决json_encode中文乱码情况
- Hadoop Yarn ResourceManager启动失败
- 关于Windsocket脚本运行报错Error Code:9017
- Idea启动jar包冲突 解决
- 运行提示‘错误: 找不到或无法加载主类 Engine.Runner’;修改文件夹为package
- docker启动nginx及问题处理
- FS9017R.是一款单节4.2V锂电池充电管理IC
- 9017R单节锂电池线性充电管理 IC
libnet发包过程相关推荐
- linux内核网络协议栈--数据包的网卡驱动收发包过程(二十五)
网卡 网卡工作在物理层和数据链路层,主要由PHY/MAC芯片.Tx/Rx FIFO.DMA等组成,其中网线通过变压器接PHY芯片.PHY芯片通过MII接MAC芯片.MAC芯片接PCI总线 PHY芯片主 ...
- 网卡驱动收发包过程图解
网卡 网卡工作在物理层和数据链路层,主要由PHY/MAC芯片.Tx/Rx FIFO.DMA等组成,其中网线通过变压器接PHY芯片.PHY芯片通过MII接MAC芯片.MAC芯片接PCI总线 PHY芯片主 ...
- libnet发包java语言_Net-speeder多倍发包脚本
net-speeder 在高延迟不稳定链路上优化单线程下载速度 A program to speed up single thread download upon long delay and uns ...
- libnet发包java语言_libnet-1.1.2.1
[实例简介] libnet源码.如果没有资源分的话,可以发邮件至yzj19870824@126.com.我会寄给你 [实例截图] [核心代码] c92ede2c-71aa-49dd-b078-04d6 ...
- libnet发包java语言_libnet 安装问题
本人刚学网络编程在用VC++6.0编译libnet是出错,哪位高人指点下Compiling...libnet_link_win32.cc:\programfiles\microsoftplatform ...
- libnet发包java语言_Linux下C语言+libnet实现ARP数据包广播
本帖最后由 nihaojiayu 于 2011-06-07 10:33:36 编辑 先说一下相关的"废话": 近来学校宿舍楼ARP攻击一直很猖獗,而且大多数是主机欺骗型ARP攻击. ...
- libnet发包java语言_Libnet11手动构建IPv6数据包
我正在尝试使用 Libnet11 函数: int libnet_write_raw_ipv6 (libnet_t *l, u_int8_t *packet, u_int32_t size) 在网络层注 ...
- dpdk-16.04 扩展新网卡驱动过程
编译相关配置添加 1. 确定网卡的 vendor id 与 device id,在 rte_pci_dev_ids.h 中添加新的设备定义 示例信息如下: #ifndef RTE_PCI_DEV_ID ...
- 网络中数据传输过程的解析
网络中数据传输过程的分析 我们每天都在使用互联网,我们电脑上的数据是怎么样通过互联网传输到到另外的一台电脑上的呢?把自己的理解写一下,可能有很多细节还没有能的很清楚!希望在以后可以使之更加的完 ...
最新文章
- 3.15好水指数N1能否让饮水健康不失控?
- php登录失败后,php – X尝试失败后阻止登录
- UVa11100 The Trip,2007(贪心)
- MF RC522读卡芯片手册
- 从去除噪点的说起,有OpenCV要什么PS?
- Eclipse Tomcat调试timeout超时怎么办
- 宜泊科技阿里云,加速智慧停车产业数字化发展
- HTML的不同版本区别,HTML4.0、XHTML、HTML5每个版本之间有什么区别
- 二分图 洛谷P2055 [ZJOI2009]假期的宿舍
- EmacsLisp学习
- [转]C#自定义应用程序配置文件App.config
- 计算机绘图说课视频,电气工程制图说课ppt课件
- 《社会调查数据管理——基于Stata 14管理CGSS数据》一1.3 数据管理工作主体不明...
- 逆向分析CrackMe系列——CrackMe003
- python实现规则引擎_几种开源规则引擎(BRE)的比较 转
- Python处理Excel,学会这十四个方法,工作量减少大半!
- P2P追债也用上大数据
- msde2000修改服务器名,MSDE2000数据库怎么修改SA口令?
- 用月壤实现太阳能发电,人类离「定居月球」又近一步 | 来自贝索斯蓝色起源...
- Java图片相似度,图像识别
热门文章
- 音视频笔记-视锥细胞和视杆细胞的区别
- 香港服务器机房等级说明
- 第 46 届 ICPC 国际大学生程序设计竞赛亚洲区域赛(上海)(热身赛(A/B) + 正式赛(D/E))
- Mysql 多表查询详解
- iPhone的解锁、越狱、激活、固件等等是什么意思_有什么分别
- Delphi 获取菜单高度、标题栏高度、边框高度函数GetSystemMetrics
- Android数据连接浅析
- 别了,我的程序员生涯!
- 一台服务器 运行虚拟机吗,(原创)关于一台服务器能安装多少台虚拟机问题?...
- vue封装上拉菜单组件_Vue的灵活的lil上下文菜单组件