智能手機一般都提供了USB共享網絡的功能,將手機通過USB線與電腦連接,手機端開啟『USB共享網絡』,電腦就能通過手機上網。
手機端開啟『USB共享網絡』:
電腦端出現新的網絡連接:
通過設備管理器看一看新增加的網卡設備,如下圖紅框所示,增加了一個名為Remote NDIS based Internet Sharing Device #3的網卡設備。
Remote NDIS(簡稱RNDIS)是微軟為即插即用的以太網設備制定的一套規範。USB Class驅動實現了這個規範,在電腦端生成了上述網卡。下圖來自微軟官網對RNDIS的介紹。
到這裡,我們可以看到USB共享網絡的底層,是通過USB RNDIS協議來實現以太網數據的傳輸。電腦端生成一張USB網卡,手機端也會生成一張USB網卡,兩張網卡之間進行網絡通信。
在命令行窗口輸入 ipconfig /all,看一下網絡信息。如下圖所示,電腦端和手機端處於同一私有地址網段192.168.42.X,通過DCHP來動態獲得IP地址。這個默認網關的IP地址就是手機端USB網卡的IP地址。
不妨再通過Wireshark抓包來看一看通過電腦端ping www.baidu.com的過程。
ping之前,先看看ARP包,192.168.42.32和192.168.42.129在相互詢問對方的MAC地址。192.168.42.129,也就是默認網關,它的MAC地址是e6:22:87:8a:e9:db。
電腦端ping www.baidu.com的過程如下:
展開其中的一個ping request包,可以看到它指定的目的地IP是163.177.151.110(baidu),但是MAC卻是默認網關的MAC地址(e6:22:87:8a:e9:db),表明電腦希望通過網關(即手機)把包轉發給baidu。
------ END ------
作者:bigfish99
部落格:https://www.cnblogs.com/bigfish0506/
公眾號:大魚嵌入式