Linux用户态下利用原始套接字接收和发送自定义链路帧

Linux下对链路层的监听的方法和一些点评:

1.socket(AF_INET,SOCK_PACKET,ETH_P_ALL) //旧方法发送接收以太网数据帧

2.socket(PF_PACKET,SOCK_RAW,htons(ETH_P_ALL)) //新方法发送接收以太网数据帧

3.libnet // 网络嗅探工具集
4…… //BSD 等其他平台的数据包捕获工具


Linux利用原始套接字发送自定义链路帧的方法和一些点评:

1.libpcap // 默认链路帧最长为1514(ETH_LEN_MAX) ,若要发送jumbo frame(巨型帧),需重定义ETH_MAX_LEN。发送接口经过层层封装,效率可能会低。还有评论说不便于移植。
2.sendto() // 此接口的第1个参数为套接字描述符,且此描述符必须由旧方法socket(PF_PACKET,SOCK_PACKET,htons(ETH_P_ALL))建立,新方法会失败(提示 invalid argument ,具体什么原因我也不清楚。)
3…… // Linux 下发送原始链路帧的方法我还没有接触到。


/*
*
*Written by Zuocheng Liu
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值