尝试探索3G通信网络

一个试验

我的iPhone没有越狱,导致很多事做不了,最蛋疼的是没办法窥视3G网络到底是怎么一回事,于是找了同事的越狱版iPhone,先来看一下WIFI和3G的关系。通过ifconfig命令,可以看到pdp_ip0这个网卡,仔细看其属性,发现了以下三点:
1.3G网卡的属性是POINTOPOINT的,不属于我们熟知的某一个以太网,因此也就没有48位MAC地址等常规网卡的地址概念,在点对点网络中,只有主从,不需要MAC地址解析。
2.从3G网络获得的IP地址是一个10.X.Y.Z/32的点对点地址,是个私网地址,既不能被公网路由,也没有谁和你处在同一网段,然而你确实能访问公网,因为你处在运营商的NAT背后,由于大家都处在NAT背后,所以大家不能通过3G地址来互相通信。
3.像打电话,短信等业务是不走IP的,但是一些额外的信令可能是IP承载的。不走IP走什么?那是通信网上另一套完整的协议。所谓的CDMA是一个比较底层的协议,对应OSI模型的底层,不管是IP承载的数据业务,还是AMR承载的语音业务,最终都要经过CDMA编码。
此时,开启WIFI,手机上面的3G图标瞬时消失,然后你会在后台看到en0这个WIFI网卡被分配了一个地址,此时执行route get default,会发现默认网关指向了WIFI路由器,然而此时的pdp_ip0依然存在,数据不从它走只是因为默认网关切换到了WIFI网络,此时只要你将默认网关再指回3G网卡被分配的那个地址即可。你还可以做策略路由,但是需要pf支持,这样就可以一部分流量走WIFI,一部分走3G了。看来后台命令可以完全绕过前台的配置以及显示。
可以实现流量嗅探,但是这个还没有成功,家里有个小米手机,估计在那上面搞要比在iPhone上容易一些。主要是因为本人对Linux网络配置比对UNIX的要熟悉一些。也可以将你的手机当成一个路由器来用,负责转发流量,但是这么玩意义不大。主要是令人抓狂的airport命令怎么也装不到iPhone上,谁知道啊??换成小米,估计用iwconfig会简单很多!
3G网络实际上非常复杂,手机后台显示的那个3G网卡的IP地址实际上多数是走数据的,当然也有一些和通话相关的信令。很多人问,如果关闭了3G还能打电话吗这种问题,实际上是可以的,在我国(世界上的很多地方,不过我国承载了多数的移动通信用户),3G并不纯粹,关闭了3G,2G还能用。在手机还不能上网的时候,它就是用来打电话的,打电话时,通信网络有自己的协议栈实现信令以及话音数据的寻址和传输,使用的并不是IP协议,要知道IP协议天然地就不适合传输语音,这也是IP电话为何和射频电话不是一回事的原因。看一下下面的从《3G网络结构拓扑图》中摘录下来的几个协议栈:
尝试探索3G通信网络_第1张图片

尝试探索3G通信网络_第2张图片
3G移动通信技术的协议栈很复杂,大量的协议栈都和IP协议无关,也就是说它们是并列于IP协议的其它协议,从图上可以看出,大量的协议在底层使用ATM来传输,通过这个图更能加深我们对网络协议栈的理解,要知道,所谓的网路协议栈并不一定要和IP关联起来。3G的协议栈是一个集合,定义了大量的实体以及实体之间的接口,可以看到有大量的信令协议,几乎每一个栈都包含完整且复杂的数据平面和控制平面!其实这也不能说3G网络复杂,其实3G网络是基于电话网发展的,而电话网本身就和IP网不是一回事,甚至在设计思想上是势不两立的,因此3G网络天然就和以简单著称的IP网络截然相反!
3G网络和WIFI都属于无线网络,然而其拓扑却是大大不同的,3G网络是蜂窝状的小区,WIFI则是单一的有线网在覆盖半径内的延伸,蜂窝小区的覆盖半径要大于WIFI的覆盖半径,然而随着小区利用率逼近极限开始造成的通信质量下降,微蜂窝正逐步建立,相反,WIFI的覆盖半径则是在逐步加大,WIFI的移动性也在增强,二者是在各自变化过程中擦肩而过还是最终碰撞于一点呢?
我想,如此复杂的UMTS协议栈也是逐步生成的,并不是一开始就是这样,不出所料的话,很多都是为了兼容而引入的,正如诸多的隧道封装一样!对于逐步生成的东西,理解它时就需要有一点变化,生命是由两个嘌呤和嘧啶组合而成的复杂体,也是逐步生成的,然而和UMTS不同的时,生命没有独立的信令系统,它是自组织的!而UMTS系统的组件之间则必须通过接口信令来互通!因此我们不能把复杂的UMTS作为一种自组织的生态系统来看待,它如果再持续复杂下去,早晚要崩溃,在此基础上的4G,5G...nG的影子何在?我不敢想象以后几个G的通信网络会基于目前的UMTS越来越复杂!虽然国内学者都多少有些学院派(学究),实施一项成果前必然要有一个理论作支撑,然而不可否认,向IP网的融合确实是一条正确的路,起码我认为正确,因为什么?因为IP简单,和DNA组件一样!

一段插曲:

10年前的电信泡沫以及6年前的小电信泡沫,有人说就是因为手机屏幕太小!10多年前的事我不知道,那时我还没有手机,6年前的知道,那时刚毕业进的那家公司在搞软交换,所以有机会玩大量的手机,大都是摩托罗拉,诺基亚的,记得那时的UIQ差点把我逼离职!那时我自己的手机是Moto E398,虽然带有很强大的功能,但是我从来不用它来上网,因为太憋得慌了!后来的诺基亚N7X系列的我也买过一部,效果一样!那时大屏幕的家伙不叫手机,而叫PDA!自从iPhone推出,3.5英寸的全触摸屏幕以及内置的大量应用改变了人们用手机的习惯,George Gilder的预言终于来到了,虽然迟到了好久。
唉!原来就是屏幕太小的原因啊!索尼随身听风靡全球可是没有掀起浪潮,中华美食走向世界没有引发狂热的吹捧,原来听觉,嗅觉,味觉都不重要,重要的是视觉感受!另外重要的就是操控力,否则大屏幕彩色电视机早就胜利了!能同时满族视觉享受和操控力享受的我觉得就两个,一个是汽车,还有一个就是iPhone/iPad(以及类似的东西)!

一个解释:电话/短信,数据,3G的关系

如果看懂了《RAD公司的著名的UMTS三维协议栈图》以及《3G网络结构拓扑图》这两张图,那么关于移动通信的一切你也就了如指掌了,不信的话,试试看!很多人搞不明白iPhone里面的电话/短信,蜂窝移动数据,3G的关系。对照上面的图,就会发现,电话/短信走的是CS电路交换网,而蜂窝移动数据走的是PS分组交换网,也就是IP网,至于3G,则是一种技术代称号,3G业务包括语音等电路交换业务,也包括数据等分组交换业务,囊括了上述的电话/短信以及蜂窝移动数据,它们的关系如下:
1.作为手机的基础,电话/短信在信号覆盖范围是任何时候都可用的,此时如果启动了3G,则电话/短信则使用((TAF/RLP)|AMR)/RLC/MAC/WCDMA来封装,如果关闭了3G,则使用GSM栈来封装,电话/短信和蜂窝移动数据没有关系;
2.如果开启了蜂窝移动数据,且开启了3G,则浏览器,IP语音,QQ等流量用(TCP|UDP)/IP/PDCP/RLC/MAC/WCDMA来封装,如果关闭了3G,上述的流量则用(TCP|UDP)/IP/[GSM底层栈]来封装;
3.如果关闭了蜂窝移动数据,则无法使用基于IP的分组交换业务,比如浏览网页,淘宝购物,IP语音(Line?微信?)等。

另一个解释:CDMA与3G

有人把WCDMA等同于3G,而实际上CDMA只是最后几百米的一个用户空中接口的底层封装而已,由于移动通信的移动性就体现在这最后几百米不用扯线缆的地方(一个蜂窝基本上就那么大,移动性的另外一个要点就是蜂窝间的切换),故而很多人有了以上看法。实际上通过解释一涉及的两张图,就会发现,通信网的大部分都是ATM承载的,最终可能会落实到光网络的光层,你可以看到这个UMTS网络中IP仅仅占了很少的部分(分组交换业务以及一些信令),CDMA在核心网更是找不到身影,它仅在用户接入那段有效。

第三个解释:3G与软交换

还记得软件换么?我2007年做过软交换,接触过SIP协议,发现其巨复杂,实际上,如果你看看关于UMTS的那两幅图,就会发现,涉及通信的协议本来就很复杂,通信协议是一个集合,涉及多个协议栈,每个栈之间都会定义一个接口,接口的名字很多都是交互双方首字母合体的两个字母,十分难以记忆。SIP是什么,软交换是什么?无非就是要把通信网上实现的诸多诸如从SMS SM-AL到链路层以上的多层协议封装作为TCP/IP网络的一个应用层来实现,首选的是交互扩展性比较强的类似HTTP的SIP协议,所有这些都用一个单独的应用层协议实现,你就知道SIP复杂的原因了吧。SIP其实是将传统通信网移植而不是嫁接到TCP/IP网的主力军,但是又要减少通信网的协议层次,否则IP只能作为一种封装来起作用,真实的业务将还是要用既有的协议栈处理,现有的网关将不动,只是增加了IP的部件...这不是未来的路线,所以必须将既有的纵向通信协议栈扁平化,使它成为TCP/IP栈的仅仅一个层,所有需要在空间上纵向处理的改在时间上交互进行。“所有需要在空间上纵向处理的改在时间上交互进行”这句话何意?以下的一个例子会说明:
1.空间中纵向处理:IP数据报携带TCP数据,封装了MAC头之后发出到下一跳,下一跳剥掉MAC,露出IP头,计算路由,封装新MAC头,发往下一跳...最终到达目标。
2.时间轴交互处理:首先发送信令到网关,告诉它一会儿要发包,请先为这个包算一条路由,另外,一会儿发的包携带aaa标识,然后网关返回同意,分配给用户一个bbb标识,此时用户发送数据,携带aaa/bbb头,到达网关(此处的网关不一定就是前面的那个信令网关)后,网关按照刚刚计算好的路线发送数据。

通过以上的解释,发现纵向处理方式中,数据包每到一个点,协议栈提供了足够的信息引导数据前行,并不需要额外的信令来来回回,而交互处理则不同,它是先用信令将路打通,然后数据直接传输。其实二者在本质上是相同的,但是应用层的协议一般不用栈的方式,那样灵活性和扩展性就太差了,SIP作为TCP/IP的应用层被设计出来,要代替传统通信网络的协议栈方式,采取了交互式的处理。

一个讨论:3G与扁平IP栈

历史总是在重复相同的故事,3GPP似乎也看到了这一点。早期互联网得益于IP的简洁与扁平,呈现了爆炸性增长。IP的位置-沙漏的细腰,决定于它的初衷,仅仅提供逻辑寻路,控制逻辑交给端到端,传输任务交给链路层。IP的上面出现了HTTP,SIP等复杂的协议,IP的下面出现了甚至光层这种猛物。
虽然3GPP看好IP,然而它依然保留了传统的电路交换电话网,在UMTS中保留了一个CS域,也就是电路交换域,和基于IP的分组交换域同时并列存在,越来越多的应用转移到了分组域,电路域留下的核心应用仅仅是电话!然而看一下两个域的协议栈,又一次让我们看到了幂律!为电话保留那么复杂一个协议栈集合!!99%的应用几乎都在IP上!!然而如果将电路域合并于分组域,会不会导致IP网一下子坍塌呢?
3GPP怎能不知道这一点,通信的历史告诉我们,深度协议栈有益于高效的控制,这个在中国先秦时期,希波战争时期,凯撒时期都有所体现,扁平协议栈有益于扩展新的应用,这个在不同时代的会议中有所体现。人们叫嚣如今的电子通信时代了,控制逻辑也不再是固定的逻辑,甚至控制平面都应该向扁平化发展,比如SDN,甚至SIP本身不就是一个全平(而不是扁平)的控制信令协议么!难道历史倒退到了带外信令时代?难道这意味着协议栈时代即将终结?自有历史评说吧!

一个建议:

其实,通信协议栈更能体现OSI模型,更能说明OSI模型它仅仅就是一个模型,TCP/IP只是它的一个实例,不在一个层次上,因此不能说OSI模型败给了TCP/IP。学习网络原理,如果能接触一下通信协议栈,会理解更深!

一个希望:

哪里能买到3G/GSM/GPRS的开源开发板,带有各种驱动程序,工具以及手册,可以自己debug通信协议栈,正如使用tcpdump,traceroute等工具对IP做的那种事那样。有能搞到的么?

你可能感兴趣的:(尝试探索3G通信网络)