您的位置:首页 > 运维架构 > Linux

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

2012-03-26 10:28 330 查看
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

*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息