日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

windows和linux的协议栈驱动

發布時間:2023/12/20 linux 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 windows和linux的协议栈驱动 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

windows中沒有將loopback當成一個網卡來實現,而是直接在比較高的層次解決了對127.0.0.0網段的訪問,因此使用wiresharck是無法抓取這種loopback包的,pcap工作在非常低的層次,127.0.0.0網段的數據流是不會到這個層次的。因此你必須按照驅動或者自己寫一個驅動去將127.0.0.0網段的數據包抓取,已經比較好的實現有CommView,然而它需要安裝一大堆的驅動程序,而且沒有微軟徽標,很恐怖的,雖然它沒有公布驅動的源碼,然而很顯然,它在比較高的層次截取了127.0.0.0網段的數據流。
???? 本來想安裝microsoft的loopback adapter驅動程序,但是這個adapter還不能指定127.0.0.0網段的地址,只能指定一個別的地址,并且它還不會生成自動路由,也就是本網段的路由通過本adapter,還必須手工添加一條主機路由才能實現抓包,也就是自己到自己的路由:
route add 192.168.40.34 192.168.40.34 mask 255.255.255.255
如果沒有這條路由,那么它的行為和127.0.0.0網段的行為一樣,所不同的是,wiresharck認出了這個loopback網卡,然而還是不能抓取它上面的包,也不知道這個loopback adapter的作用到底是什么?資料上說是為了模擬出一個本地網卡來,可是為何不直接自帶一個呢?內置127.0.0.0網段的ip地址,就像linux那樣。在linux中所有源和目的地都是本地網卡或者127網段的數據都會通過lo這個虛擬網卡發送接收,而且它還能配置別的ip地址:
ifconfig lo 11.22.33.44 netmask 255.255.255.0
唯一覺得不妥的是即使是linux的lo也沒有辦法配置mac地址,不過這無所謂,問題不大,至少在lo上能抓到本地包可以分析,而在windows上卻只能安裝loopback adapter然后還要配置路由,可見如果不配置路由的話,雖然有了一個環回的網卡,數據還是下不去,可能是路由將數據給導入到這個loopback adapter的。
???? 影響linux協議棧數據流的方式有兩個,第一是通過netfilter的用戶態接口配置(有時候還要寫內核模塊),第二就是寫一個協議處理驅動注冊進內核,第一種方式更方便,不使用的時候直接在用戶態清除配置即可,比如iptables -F,而第二種方式只能卸載內核模塊了。然而不是每種需求都適合這兩種方式的,如果你想在5個HOOK點對數據進行影響,那么可以使用第一種方式,如果你想對一個新的協議進行處理,那么使用第二種方式,linux不允許對協議棧進行縱向插入hook,比如在ip層和tcp層中間加一個“過濾層”,linux只能根據數據包的內容進行橫向過濾,要么使用netfilter,要么注冊一個協議和既有協議平行,也就是說linux不運行增加協議棧的高度,然而卻可以增加每一層的寬度。
???? 對于windows而言,由于它的驅動實現方式本身就是分層的,協議棧實現也不例外,和linux正好相反,它在橫向擴展方面很吃力,雖然可以實現類似netfilter的機制,卻很少有人嘗試,這是由于windows的協議棧很容易在任何一個位置而不是僅有的幾個HOOK位置插入一個新的“層”來過濾數據包,ndis的驅動模型十分善于做這個,tdi之上的東西更善于,直到用戶態的lsp還在干這個。因此windows的數據過濾完全是縱向的,協議棧自然可以越來越高。因此在穩定性和配置的靈活性方面,windows遠遠不如linux,然而在windows上很少有人想做配置協議棧之類的工作。
???? 添加了loopback adapter之后,重啟機器,然后發現虛擬機突然就不通了,虛擬機中的網卡使用了bridge模式,不通的原因在于在虛擬機的網絡配置中勾選了“Automatically choose an available physical network adapter to bridge to VMnet0”,并且loopback adapter的本地連接屬性中又勾選了“VMware Bridge Protocol”,這樣由于loopback adapter已經被模擬成了physical network adapter,因此它接管了這個虛擬機的bridge的話,自然就和真實機器的物理網卡不通了,然而此時虛擬機里面卻能ping通外面的loopback adapter上的ip地址,實際上虛擬機的網卡bridge到這個loopback adapter了。解決辦法就是不勾選loopback adapter的bridge選項或者手工指定虛擬機網卡bridge到哪個網卡。由此引出了下面的關于vmnet的預研。

轉載于:https://blog.51cto.com/dog250/1271132

總結

以上是生活随笔為你收集整理的windows和linux的协议栈驱动的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。