这几个问题困扰了我很长时间,经过我不懈的努力 加上 我的悟性, 我自认为 理解了那么一点。
ndis (Network Driver Interface Specification) 网络驱动接口规范,这是一个规范,我也可以理解为标准,这个规范规定的比较宽,从物理层到应用层都有涉及,(也就是介绍中说的:横跨传输层、网络层和数据链路层)
下面是网卡查到的相关介绍:
NDIS(Network Driver Interface Specification)是网络驱动程序接口规范的简称。它横跨传输层、网络层和数据链路层,定义了网卡或网卡驱动程序与上层协议驱动程序之间的通信接口规范,屏蔽了底层物理硬件的不同,使上层的协议驱动程序可以和底层任何型号的网卡通信。 NDIS为网络驱动程序创建了一个完整的开发环境,只需调用NDIS函数,而不用考虑操作系统的内核以及与其他驱动程序的接口问题,从而使得网络驱动程序可以从与操作系统的复杂通讯中分离,极大地方便了网络驱动程序的编写。另外,利用NDIS的封装特性,可以专注于一层驱动的设计,减少了设计的复杂性,同时易于扩展驱动程序栈。
NDIS支持三种类型的网络驱动程序: NDIS网卡驱动程序(NICdrivers) 网卡驱动程序是网卡与上层驱动程序通信的接口,它负责接收来自上层的数据包,或将数据包发送到上层相应的驱动程序,同时它还完成处理中断等工作。 NDIS中间驱动程序 (InterMediateProtocolDrivers):中间驱动程序位于网卡驱动程序和协议驱动程序之间,它向上提供小端口(Minport)函数集,向下提供协议(protocol)函数集,因此对于上层驱动程序而言,它是小端口驱动程序。对于底层的驱动程序,它是协议驱动程序。 NDIS协议驱动程序 (Upper Level Protocol Drivers):协议驱动程序执行具体的网络协议,如IPX/SPX、TCP/IP等。协议驱动程序为应用层客户程序提供服务,接收来自网卡或中间驱动程序的信息
ndis既然是标准,那么win、linux都可以使用,广义的来讲,在windows上是ndis,只要符合ndis标准的无线网卡、有线网卡,不需要驱动,直接就可以在win7以上的系统上使用。
但是在linux上它却是以另一个名字为大家知晓"ECM(Ethernet Control Model) ""NCM",其实ECM NCM只是在linux上规定 了ndis规范的“物理层”实现形式,是通过USB CDC通信类来实现了,所以双叫CDC-ECM,在华为的这个文档里写的很清楚:
linux下其它ndis层怎么实现了我就不知道了,但是我知道ndis物理层除了使用标准ECM来实现之外,还有一个非标准的QMI WWAN ,这是高通自己定义的ndis物理层标准,由于高通的行业地位,这个非标甚至比标准运用的还要广泛,ECM QMI由于使用协议不同,拨号连网的命令也不同, 华为ME909是echo "AT^NDISDUP=1,1">/dev/ttyUSB0 而STIM7100是 echo "AT\$QCRMCALL=1,1" > /dev/ttyUSB2 命令形式不一样,但实质是一样的,都是建立连接,获得运营商IP地址。
如果是支持ECM标准的4G模块,3.X的内核支持,直接在内核中配置就可以了。比如华为ME909
如果是支持高通QMI的模块,好像有文档说3.4以上的内核直接支持,那是不是也是内核menuconfig时,添加 上就行也呢?这个我还没有验证。使用高通方案的模块多的很sim7100 ec20几乎都是。
最后说MBIM,(Mobile Broadband Interface Model),这是正宗的移动宽带接口模型,专门用于3G/4G/5G模块的,上面说的ndis这个并不是专门用在移动宽带上的,比如USB接口的百兆网卡RTL8152也是基于ndis的,所以它能做到免驱。但是MBIM只在win8以上的windows上使用,不知道为什么 linux没有使用,好象这种新技术都是windows先用,然后才慢慢推广到linux上。(最近调试imx6ull板子时,在4.x.xx的内核中发现了 CDC MBIM support选项,说明新内核已经支持了)
QMI: Qualcom Message Interface
Network Driver Interface Specification网络驱动接口规范
ECM:Ethernet Control Model 以太网控制模型
MBIM,(Mobile Broadband Interface Model
不是我不明白,这世界变化快,双多一个GOBINET,这属于哪个层呢?
1.Gobinet拨号
GOBI 高通Gobi无线宽带芯片技术,只需一个模块即可支持多种移动宽带网络和众多移动运营商.
高通公司称全新的芯片将基于Gobi 4G LTE无线基带、MDM9615和MDM9215。这种技术可以在FDD和TDD网络下进行LTE连接,同时支持HSPA+和EV-DO网络、2G/3G网络。这意味着用户可以在本地使用高速4G LTE网络,在其他地方使用3G网络。Gobi平台在MDM芯片组的基础上还提供了软件增强层,这样可以使用不同技术下的无线连接更简单。
2.QMI-WWAN协议拨号
QMI: Qualcom Message Interface
MSM: Mobile station mode
AP: Application Procesor
高通平台目前都是非对称多核心,最主要的是AP和Modem。
两个处理器怎么进行通信呢,我们把AP和Modem当作两个主机,问题就变得了很简单,TCP/IP协议不是一种非常成功的进程间跨主机通信方式。高通没有采用这种方式,但是借鉴了TCP/IP的框架设计。
Qualcomm MSM Interface,作用用于AP和BP侧的交互,通俗说法就是让设备终端TE(可以是手机,PDA,计算机)
对高通BP侧的AMSS系统进行操作,如调用函数,读取数据,设置其中的NV项等。
参考:http://blog.csdn.net/u012439416/article/category/7004974
3.ppp协议拨号:点对点协议
PPP(点到点协议)在拨号过程中用于MS和PC间数据交互、协商。在拨号流程的初期首先开启的就是PC和MS直接的PPP过程,在拨号成功后,还需要依靠PPP协议对IP包进行封装传输数据。