我们都知道手机上网有着2G 3G 4G的说法,但是都是些什么意思呢?有一个通俗的说法,2G看TXT,3G看JPG,4G看avi
不同的时代的网络是怎么构成的呢?我们接下来进行看一下
2G网络
手机一开始是用于打电话的,不是用于上网的,在2G的时候,手机上网用的不是IP网络,而是电话网络,走的是模拟信号,专业名为公共交换电话网(PSTN,public switched Telephone Network)
手机使用无线信号来通信,就是Mobile Station,简称MS,需要嵌入SIM,手机是客户端,而无线信号的服务端,就是基站子系统BSS, Base Station SubsystemBSS,也就是我们户外运动过程中可能看到的信号塔,通过无线信号,让手机可以通信
但是无论无线通信多无线,都要连接到有线的网络里面,连接到公网上
所以基站子系统分为了两个部分,一个部分是对外提供无线通信的,叫做基站收发信台,BTS Base Transceiver Station,另一部分对内连接了有限网络,基站控制台 BSC Base station Controller,基站收发信台通过无线收到了数据后,转发给基站控制器
这一部分是属于无线的部分,统称为无线接入网 RAN Radio Access Network
基站控制器通过有限网络,连接到提供手机业务的运营商的数据中心,这就是核心网络,Core Network,核心网并不代表进入了互联网,这主要是提供手机的业务,是有线的部分
然后中心网络接待从基站来的数据,移动业务交换中心,MSC Mobile Sevice Switching Center,是进入核心网的入口,不会让其直接接入互联网上
这个地方连接了鉴权中心(AUC Authentication Center)和设备识别寄存器(EIR Equipmenet Identity Register),负责安全性问题
然后继续查看,这个号是本地的号码,还是外地的号码,异地计费额外加钱,访问位置寄存器 VLR 就是看你目前的地方,归属位置寄存器HLR,就是看号码的归属地
当发现有足够的钱的时候,可以进行上网,这时候需要一个网关,连接了核心网络和真正的互联网,网关移动交换中心 GMSC,Gateway Mobile Switching Center,用于连接两者
对于外部网络就是PSTN,原本的电话网络
数据中心的模块称为网络子系统 NSS Network and Switching Subsystem
对于2G这个时代来说,我们总结一下
1.手机通过无线信号连接基站
2.基站一般面向无线连接,一边面向核心网络
3.核心网接到了基站的请求,会判断是否合法,而且是否是本地号,而且有没有钱,最后连接电话网络
2.5G网络
从2G到了2.5G,在原本的电路交换的基础上,加入了分组交换的业务,支持了Packet的转发,从而支持了IP网络
于是乎,在上述网络基础上,基站一面朝前接无线,一面向后接着核心网络,在朝后的组件中,加入了一个分组控制单元 PCU,可以进行分组交换通道
在核心网里面有一个朝前的接待员 SGSN,和朝后的连接IP网络的网关型GRPS支持节点
3G网络
到了3G时代,无线通信技术有了改进,增加了无线的带宽,
以W-CDMA为例,在基站一层中,加入了Node B,朝外,一面朝内连接核心网的是无线网络控制器 (RNC,Radio Network Controller),核心网和连接的IP网络没有什么变化
4G网络
然后到了现在的4G网络,基站为eNodeB,包含了原来的Node B和RNC的功能,而且实现了控制面和数据面的分离
在原本的核心网中,有接待员MSC和SGSN,负责检查是否合法,转发数据也是它负责的,即为控制面和数据面是合二为一的,这样灵活性比较差,因为控制面主要是指令,多是小包,往往需要较高的及时性,数据面主要是流量,大包,需要高吞吐量
于是,整体架构改为了如上
MME是核心控制网元,控制面的核心,当手机通过eNodeB连接的时候,MME会根据HSS信息,判断是否合法,如果允许,那么MME会选择合适的SGW和PGW,去让eNodeB去连接.
手机通过enodeB连接到SGW,SGW相当于数据面的中台,负责流量转发,PGW真正的连接到IP网络,PGW就是出口网关,出口网关有一个组件PCRF,用于控制上网策略和流量的计费
然后还有一个组件,HSS,HSS用于存储用户签约信息的数据库,知道这个号码的归属地是哪里的,以及一些认证的信息
简述4G网络协议
4G网络协议,比较复杂,我们将一些关键的组件放大来看
整体刨去了PCRF和HSS之后就是这样的
首先虚线部分用于控制能否上网
当一个手机想要上网的时候,先连接eNodeB,并且通过S1-MME接口,请求这个MME进行手机的认证和鉴权,S1-MME协议栈如下
UE是手机,eNodeB连接手机和核心网络,
在eNodeB和MME连接的时候,是很正常的IP网络,在IP层之上,并不是TCP,也不是UDP,而是自定义STCP,传输层的洗衣,面向连接的,更加合适于移动网络
简述下STCP,其改进了一些TCP的不足之处,
STCP的第一个特点就是多宿主,一个机器可以有多个网卡,对于TCP连接来说,虽然服务器可 以监听0.0.0.0,但是一旦建立了连接,就建立了四元组,就选定了某个网卡
SCTP引入了联合 association的概念,将多个接口,多个路径,多个接口放到一个联合汇总,当检测到一个路径失效的时候,协议就会通过另外一条路径来发送通信数据,可能应用都不知道发生了故障,从而更好的使用
SCTP的第二个特点就是讲一个联合拆分为了多个流,一个联合中所有流都是独立的,但都和这个联合相关,每个流都给定了一个流编号,被编码到SCTP报文中,通过联合在网络上传送,在TCP的机制上,因为强制顺序,导致前一个不到达,后一个到达了也只能等待,而SCTP的多个流不会互相阻塞
SCTP的第三个特点是四次握手,防止了SYN攻击,因为TCP中是三次握手,当服务端收到了客户的SYN之后,返回一个SYN-ACK之前,先建立连接所需的数据结构,并记录下状态,等待客户端发送ACK之ACK,但是会有一种情况,就是由恶意的客户端多次发送SYN报文,导致服务器分配了大量的资源,最后耗尽了所有的资源,无法处理新的请求
SCTP不仅仅有四次握手,而且引入了Cookie的概念,来防止这种攻击的产生,在建立连接的过程中,客户机使用一个INIT报文发起一个连接,服务器使用一个INIT-ACK报文进行响应,其中包括了Cookie,然后客户端使用一个COOKIE-ECHO报文进行相应,其中包含了服务器端所发送的Cookie,这时候服务器为这个连接分配资源,并且对应返回响应
SCTP第四个特点是将消息分针,TCP是面向流的,发送的数据没头没尾,没有明显的衔接,这对于发送数据没有问题,但是读取可能有问题,可能客户端写入了10个字节,再写入了20个字节,服务区端不是读出10个字节的消息,而是直接上来读出25个字节,再取5个字节,需要业务层去组合成消息
SCTP借鉴了UDP的机制,在数据传输中提供了消息分帧的功能,当一个端对一个套接字执行写操作,可以保证读写的数据大小相同
SCTP的第五个特点是断开连接是三次挥手,在TCP里面,断开连接是四次挥手,允许另一端处于半关闭的装填,SCTP选择这种状态,当一端关闭了自己的套接字,对等的两端全部需要关闭,任何后任何一端都不会再进行数据的移动了
回过头,我们继续说创建链路
当MME通过认证鉴权,同意这个手机上网了,需要建立一个数据面的数据通路,建立通路的过程还是控制面的事情,使用的是控制面的协议GTP-C
建设的数据通路分为两段路,两个隧道,一段是从eNodeB到SGW,这个数据通路由MME通过S1-MME协议告诉eNodeB,是隧道的一端,通过S11告诉SGW,是隧道的另一端,第二端是SGW到PGW,SGW通过S11协议告诉自己是一端,并通过S5协议,告诉PGW是另一端
GTP-C协议是基于UDP的,这是UDP的一例子,看GTP的头,我们可以看出这里面有隧道的ID,还有序列号
通过序列号,不用TCP,GTP-C自己可以实现可靠性,为每个输出信令消息分配一个一次递增的序列号,可以确保消息的按序传递,对于每个输出信息都启动一个定时器,在定时器超时前没收到响应就重发
数据面协议
在两个隧道都打通,接在一起的时候,PGW会分给手机分配一个IP,这个IP是隧道内部的IP地址,可以类比IPsec协议里面的IP地址,这个IP地址归手机运营商管理的,手机可以使用这个IP地址,连接eNodeB,从eNodeB,经过S1-U协议,通过第一段隧道到达SGW,在通过SGW经过S8协议,通过第二段隧道到达PGW,然后通过PGW连接到互联网上
手机每次发出一个包,都经过GTP-U隧道协议封起来,格式如下
IPsec协议很类似,分为乘客协议,隧道协议,承载协议,其中乘客协议是手机发出来的包,IP是手机的IP,隧道协议里面有隧道ID,不同的数据上线有不同的隧道,因而需要隧道ID来标识,承载协议的IP地址是SGW和PGW的IP地址
手机上网流程
我们说一下整体的手机上网流程,整体叫做Attach,整体流程如下图
1.手机开机,寻找基站 eNodeB,然后给eNodeB发送Attach Request,说明,我来了,我来上网了
2.然后eNodeB去请求MME,说明有个手机要上网
3.MME去请求手机,验证权限
4.MME通过了手机的验证后,分配了一个隧道,告诉了SGW,创建一个会话,然后SGW分配一个隧道ID t1,并且请求SGW分配给自己的一个隧道ID
5.SGW向PGW请求建立一个会话,为PGW控制面分配一个隧道t2,并且给PGW的数据面分配一个隧道ID t3,并要求PGW给自己分配两个隧道
6.PGW创建会话后,使用自己的控制面隧道t2,回复里面带着SGW控制面板分配的隧道ID t4和控制面隧道ID t5,这样就建立SGW和PGW的隧道
7.SGW和PGW的创建完成后,回复MME说,创建会话成功,使用自己的隧道ID t1访问MME,回复里面有给MME分配的隧道ID t6,,也有SGW给eNodeB分配的隧道ID t7
8.MME发现后面的隧道建立好了,就告诉eNodeB,后面的隧道好了,SGW给你的隧道ID是t7,可以练上来了
9.eNodeB给SGW分配一个隧道Id,名为t8
10.MME将eNodeB给SGW分配的隧道Id t8告诉了SGW,隧道彻底建立完成
这是本地上网
然后是异地上网的事情
这就是之前,为何分配了SGW和PGW,SGW往往是本地运营商的设备,PGW是所属运营商的设备
就好比,人下了飞机,到了美国,连上了美国的eNodeB,通过MME去查询国内运营商的HSS,看是否合法,是否有钱,允许上网,手机和巴塞罗那的SGW会建立一个隧道,然后巴塞罗那的SGW和国内运营商的PGW建立一个隧道,然后通过国内运营商的PGW上网
因此,判断能否上网的是国内的HSS,控制上网策略的是国内的PCRF,给手机分配IP的也是国内的PGW负责,上网流量也是走的国内运营商
所以还是上不去外网
本章小结:
移动网络的发展从2G到3G,再到4G,逐步从打电话到上网进行转换
4G网络结构中包含了eNodeB,MME,SGW,PGW,并且分为了控制协议和数据协议
即使人在国外的运营商,还是走的国内运营商的网络
课后思考:
1.上网有套餐,如何控制不同套餐的上网流量呢?
2.之前说的都是物理机的,但是无论电商还是移动网络,都是部署在云中的,云中网络如何设计呢?
1.对于不同优先级别的用户流量控制,使用的应该是PCRF的Qos