前面我们讲了电脑上网的场景。今天我们就来了解一下最常用的手机上网场景。移动网络的发展史?要知道移动上网有2G、3G、4G。这些是什么意思?流行一句话:用2G看txt,用3G看jpg,用4G看avi。2G网络手机本来就是用来打电话的,不是用来上网的,所以2G时代上网不是用IP网,而是电话网,电话网是模拟信号。专业名称是公共交换电话网(PSTN,PublicSwitchedTelephoneNetwork)。手机未连接网线或电话线。它是如何上网的?手机通过发送和接收无线信号进行通信。专业名称为MobileStation,简称MS,需要嵌入SIM卡。手机是客户端,无线信号的服务器是基站子系统(BSS,BaseStationSubsystemBSS)。至于什么是基站,你可以回忆一下,你在爬山的时候见过信号塔吗?我们在城市里的基站比较隐蔽,不容易看到,所以只有在山里才会注意到。正是这个信号塔,让你的手机可以通过无线信号进行通信。但是你要知道,无线通信再无线,最终还是会连接到有线网络上。因此,基站子系统分为两部分,一部分对外提供无线通信,称为基站收发信台(BTS,BaseTransceiverStation),另一部分内部连接有线网络,称为基站控制器(BSC,基站控制器)。基站收发台无线接收到数据后,将数据发送给基站控制器。这部分属于无线部分,统称为无线接入网(RAN,RadioAccessNetwork)。基站控制器通过有线网络连接到提供手机服务的运营商的数据中心。这部分称为核心网络(CN,CoreNetwork)。核心网还没有真正进入互联网。这部分还是主要提供手机业务,是手机业务的有线部分。移动业务交换中心(MSC,MobileServiceSwitchingCenter)最先接收来自基站的数据。它是核心网络的入口,但不会让您直接连接到互联网。因为在你的手机真正可以上网之前,提供手机服务的运营商需要验证它是否是合法的手机接入。不要自己做手机卡,接上就行了。认证中心(AUC,AuthenticationCenter)和设备身份寄存器(EIR,EquipmentIdentityRegister)主要负责安全。另外还要看你是本地号码还是外地号码。这就涉及到计费问题,其他地方的收费还是很贵的。VisitLocationRegister(VLR,VisitLocationRegister)是看你当前在什么地方,HomeLocationRegister(HLR,HomeLocationRegister)是看你的号码属于哪里。当你的手机卡是合法的、有钱的时候,你就可以上网了。这时候就需要一个网关来连接核心网和真正的互联网。网关移动交换中心(GMSC,GatewayMobileSwitchingCenter)就是这样做的,然后才是真正的互联网。2G时代,还是电话网PSTN。数据中心中的这些模块统称为网络子系统(NSS,NetworkandSwitchingSubsystem)。因此,2G时代的互联网接入如图所示。总结一下,核心有以下几点:手机通过无线信号连接到基站;当收到基站的请求时,一是判断你是否合法,二是判断你有没有本地号码,有没有钱,同时通过网关接入电话网络。2.5G网络后来从2G到2.5G,即在原有电路交换的基础上,增加了分组交换业务,支持Packet转发,从而支持IP网络。在上述网络的基础上,无线前端接入基站,后端接入核心网。在后向组件中,有一个额外的包控制单元(PCU,PacketControlUnit)提供包交换通道。在核心网中,有一个面向前方的接待员(SGSN,ServiceGPRSSupportedNode)和一个向后连接到IP网络的网关GPRS支持节点(GGSN,GatewayGPRSSupportedNode)。3G网络进入3G时代,最主要的原因是无线通信技术的进步,大大增加了无线带宽。以W-CDMA为例,理论上最大下行速率为2M,所以基站发生了变化。朝外的是NodeB,朝内连接核心网的是无线网络控制器(RNC,RadioNetworkController)。核心网络和连接的IP网络没有变化。4G网络??????????????????????????????????????????????????????????????????????????????或者说,“4G网络”的基站是eNodeB,包含了原来的NodeB和RNC的功能,下行速度正在向100M级别迈进。此外,核心网实现了控制平面和数据平面的分离。怎么理解呢?在以前的核心网中,有一个接待员MSC或SGSN。你会发现它负责检查是否合法和转发数据。即控制平面和数据平面合二为一,灵活性比较差。因为控制面主要是指令,多为小包,往往对时效性要求很高;数据平面主要是流量,多为大包,往往需要吞吐量。于是就有了如下结构:HSS是一个数据库,用来存储用户订阅信息。事实上,这是您的号码所属的地方和一些身份验证信息。MME是核心控制网元,是控制平面的核心。当手机通过eNodeB连接时,MME会根据HSS信息判断你是否合法。如果允许连接,MME不负责具体的数据流量,但是MME会在数据平面上选择SGW和PGW,然后告诉eNodeB,我允许你连接,你可以连接它们。所以手机直接通过eNodeB连接到SGW,连接到核心网。SGW相当于数据面的接待员,通过PGW接入IP网络。PGW是出口网关。在出口网关上,有一个组件PCRF,称为PolicyandChargingControlUnit,用于控制上网策略和流量计费。4G网络协议分析我们来仔细看看4G网络协议,真的很复杂。让我们放大几个关键组件。控制平面协议虚线部分为控制平面的协议。当手机要上网时,首先要连接到eNodeB,通过S1-MME接口请求MME对手机进行鉴权和授权。S1-MME协议栈如下图所示。UE是您的手机。eNodeB仍然是双面的。前端连接无线网络,后端连接核心网,控制面连接MME。eNodeB和MME之间的连接是一个普通的IP网络,但是在IP层之上,既不是TCP也不是UDP,而是SCTP。这也是传输层的协议,也是面向连接的,但是更适合移动网络。它继承了TCP比较完善的拥塞控制,改进了TCP的一些缺点。SCTP的第一个特点是多宿主。一台机器可以有多个网卡,但是对于一个TCP连接,虽然服务器可以监听0.0.0.0,也就是可以接受来自任何网卡的连接,但是一旦建立连接,就建立了一个四元组。还选了网卡。SCTP引入了association的概念,将多个接口、多条路径放在一个association中。当检测到路径故障时,协议会通过另一条路径发送通信数据。应用程序甚至不必知道发生了故障,可以恢复,从而提供更高的可用性和可靠性。SCTP的第二个特点是将一个union拆分为多个流。联邦中的所有流都是独立的,但与该联邦相关。每个流都有一个流编号,它被编码成一个SCTP数据包,并通过关联在网络上发送。在TCP机制中,由于强制顺序,如果前一个没有到达,后一个就得等待,多个SCTP流不会互相阻塞。SCTP的第三个特点是四次握手,防止SYN攻击。在TCP中,它是三次握手。服务器收到客户端的SYN后,返回一个SYN-ACK之前,建立一个数据结构,记录状态,等待客户端发送ACK的ACK。当恶意客户端使用虚假源地址伪造大量SYN包时,服务器需要分配大量资源,最终耗尽资源,无法处理新的请求。SCTP通过四次握手引入Cookie的概念,可以有效的防止这种攻击。在SCTP中,客户端使用INIT消息发起连接。服务器以包含cookie的INIT-ACK消息进行响应。然后客户端响应COOKIE-ECHO消息,其中包含服务器发送的Cookie。这时,服务器为这个连接分配资源,并通过向客户端发送COOKIE-ACK消息来响应。SCTP的第四个特征是帧消息。TCP是面向流的,即发送的数据没有开始和结束,也没有明显的边界。这对于发送数据是没有问题的,但是对于发送消息类型的数据就不是很方便了。客户端有可能写入10个字节,然后写入20个字节。服务端可能先读取25字节再读取5字节,而不是先读出10字节的消息再读取20字节的消息,这就需要业务层组合成一条消息。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,如图:手机发送的每个数据包都经过GTP-U隧道协议封装,格式如下:与IPsec协议很相似,分为passengerBearer协议。其中passengerprotocol为手机发送的数据包,IP为手机IP,tunnelprotocol包含隧道ID。不同的手机上网时会建立不同的隧道,所以需要隧道ID来识别。承载协议的IP地址为SGW和PGW的IP地址。手机上网流程?接下来我们看一下手机开机后的上网流程。此过程称为附加。可见移动网络还是很复杂的。因为这个过程需要建立很多隧道,需要分配很多隧道ID,所以我画了一个图来详细说明这个过程。手机开机后,寻找附近的基站eNodeB,找到后向eNodeB发送AttachRequest,说“我在这里,我要上网”。eNodeB向MME发送请求“有手机要上线”。MME请求手机,先鉴权,再鉴权,还要问HSS看有没有钱,去哪里上网。MME通过手机的认证后,开始分配隧道,首先告诉SGW自己要创建会话(CreateSession)。这里,会给SGW分配一个tunnelIDt1,请求SGW给自己分配一个tunnelID。SGW转而请求PGW建立会话,为PGW的控制平面分配一个隧道IDt2,为PGW的数据平面分配一个隧道IDt3,请求PGW为自己的控制平面和数据分配一个隧道ID飞机。PGW回复SGW说“sessioncreatedsuccessful”,使用自己的controlplanetunnelIDt2,回复中携带分配给SGWcontrolplane的tunnelIDt4和controlplane的tunnelIDt5,至此直接隧道构建SGW和PGW之间完成。双方在互相请求时,必须带上对方分配给自己的隧道ID,以标记本手机的请求。接下来,SGW回复MME“sessioncreatedsuccessfully”,并使用自己的tunnelIDt1接入MME。回复中包含MME分配的隧道IDt6和SGW分配给eNodeB的隧道IDt7。MME发现后续隧道建立成功后,告诉eNodeB,“后续隧道已经建立,SGW分配给你的隧道ID为t7,你可以开始连接了,但是你还需要分配一个SGW的隧道ID。”》。eNodeB告诉MME给SGW分配一个隧道ID为t8。MME将eNodeB分配给SGW的隧道IDt8通知给SGW,这样之前的隧道也建立了。??????这样,手机可以通过建立的隧道成功上网。远程上网的问题接下来我们考虑远程上网的问题。为什么要分SGW和PGW?一个GW不行吗?SGW是你们当地运营商的设备,而PGW是你运营商的设备。如果你在巴塞罗那,下飞机打开手机,你会发现巴塞罗那的eNodeB。使用MME查看国内运营商的HSS,看看你是否是合法的,还有钱,如果允许上网,你的手机和巴萨的SGW建立隧道,然后巴萨的SGW和国内运营商的PGW建立隧道,然后通过国内运营商的PG上网W。这样一来,决定你能否上网的就是国内运营商的HSS了。控制你上网策略的是国内运营商的PCRF。分配给手机的IP地址也由国内运营商的PGW负责。业务统计。由于运营商算在PGW里面,所以你上网的流量都可以通过国内运营商,但是巴塞罗那运营商也需要和国内运营商进行流量结算。由于你的上网策略在PCRF由国内运营商控制,你仍然无法访问Facebook。总结移动网络的发展从2G到3G,再到4G,逐渐从以打电话为主向上网为主转变;请记住4G网络的结构,包括eNodeB、MME、SGW、PGW等,分为控制面协议和数据面协议。大家可以对比一下结构,试着说出手机上网的过程;即使你用国外的运营商上网,也必须是国内运营商控制的,所以你不能上脸书。
