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
*/
發佈了47 篇原創文章 · 獲贊 9 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章