RmNet和CDC-ECM區(qū)別:更像是兩種撥號方式的區(qū)別,RmNet獲取公網IP,ECD-ECM獲取局域網IP。
在高通平臺上,rmnet driver 和標準的CDC-ECM是有區(qū)別的,rmnet 也是屬于CDC-ECM
他們具體的區(qū)別在于對于USB命令的封裝以及使用的USB接口,端點定義方式不同
如果是使用rmnet,那么發(fā)起data call是通過QMI工具發(fā)的QMI命令,QMI工具為QMICM,QMICM集成了QMI命令
而通過標準的CDC-ECM發(fā)起data call,則是發(fā)送標準的ECM命令。
如果是QMICM建立的data call,不走router的,所以它的IP地址獲得的是公網IP。
而通過標準的CDC-ECM建立的data call,是走router的,獲得的IP地址是私有的IP如192.168開頭
NDIS和Rndis區(qū)別:NDIS是一種規(guī)范,定義了網絡驅動接口的api。RNDIS是一種技術,是將TCP/IP封裝在USB報文里,實現(xiàn)網絡通信。
1,RNDIS是指Remote NDIS,基于USB實現(xiàn)RNDIS實際上就是TCP/IP over USB,就是在USB設備上跑TCP/IP,讓USB設備看上去像一塊網卡。
2,NDIS(Network Driver Interface Specification)是網絡驅動程序接口規(guī)范的簡稱。它橫跨傳輸層、網絡層和數據鏈路層,定義了網卡或網卡驅動程序與上層協(xié)議驅動程序之間的通信接口規(guī)范,屏蔽了底層物理硬件的不同,使上層的協(xié)議驅動程序可以和底層任何型號的網卡通信。 NDIS為網絡驅動程序創(chuàng)建了一個完整的開發(fā)環(huán)境,只需調用NDIS函數,而不用考慮操作系統(tǒng)的內核以及與其他驅動程序的接口問題,從而使得網絡驅動程序可以從與操作系統(tǒng)的復雜通訊中分離,極大地方便了網絡驅動程序的編寫。另外,利用NDIS的封裝特性,可以專注于一層驅動的設計,減少了設計的復雜性,同時易于擴展驅動程序棧。
NDIS支持三種類型的網絡驅動程序: NDIS網卡驅動程序(NICdrivers) 網卡驅動程序是網卡與上層驅動程序通信的接口,它負責接收來自上層的數據包,或將數據包發(fā)送到上層相應的驅動程序,同時它還完成處理中斷等工作。 NDIS中間驅動程序 (InterMediateProtocolDrivers):中間驅動程序位于網卡驅動程序和協(xié)議驅動程序之間,它向上提供小端口(Minport)函數集,向下提供協(xié)議(protocol)函數集,因此對于上層驅動程序而言,它是小端口驅動程序。對于底層的驅動程序,它是協(xié)議驅動程序。 NDIS協(xié)議驅動程序 (Upper Level Protocol Drivers):協(xié)議驅動程序執(zhí)行具體的網絡協(xié)議,如IPX/SPX、TCP/IP等。協(xié)議驅動程序為應用層客戶程序提供服務,接收來自網卡或中間驅動程序的信息。
3,RAS是典型的撥號實現(xiàn),需要利用Windows mobile的PPP協(xié)議棧實現(xiàn)連接配置和建立 rndis,Remote Network Driver Interface Specification,既是RemoteNDIS,既是遠程網絡驅動接口規(guī)范?;赨SB實現(xiàn)RNDIS實際上就是TCP/IP over USB,就是在USB設備上跑TCP/IP,讓USB設備看上去像一塊網卡。
轉載自:https://www.cnblogs.com/ricks/p/9448712.html