tap創建虛擬網卡后怎么獲取ip和mac?
關系如下:
eth (模擬出來的網卡) fd (控制用字符設備)
系統通過eth?發送出來的數據,將到達fd, 可以從fd把數據讀出來。
往fd寫入的數據將到達系統的eth? 該數據包被解析成一個數據鏈路的包,再上去往TCP/IP的處理流程走。
ssh 的網卡通過實現的如下:
server:ethserver:fdclient:fdclient:eth
其實這個跟偽終端很類似。有不明白的地方建議讀讀關于偽終端的介紹作為參考。
《FreeBSD設計與實現》里面有對關于為終端比較深入的討論。
另外你提取的MAC數據可能是錯誤的,因為某些情況下,第一個字節直接是AF_INET之類的,第二個字節才是MAC的開始。具體的需要看man了。