数据业务建立流程之发起网络连接过程(原)

        经过前面 这些过程,网络连接所需要的条件就全部准备就绪,接下来就是等待网络接入。
        我们把网络接入过程简单分为三个阶段:
        触发阶段
            ----该阶段是由各种不同事件触发的,比如 SIM载入完毕PS域Attach成功通话结束APN改变等,该阶段的最终都是要调用setupDataOnConnectableApns()方法;
        准备连接阶段
            ----该阶段是指,在DcTracker收到建立连接的请求之后,需要进行一系列有效性检测,比如 APN是否已经激活PS是否已经就绪用户是否打开网络开关等,然后创建DataConnection()对象,准备发起连接请求;
        发送连接命令阶段

            ----该阶段是指,在DataConnection收到DcTracker的请求之后,将请求转交给RILJ的过程,经过该阶段后,请求就发送到了RIL以及Modem层,由底层完成信令的发送和接收;


一、触发阶段


        有多种事件可以触发网络接入过程,具体来说分为以下几个原因:
        //漫游相关
        static final String REASON_ROAMING_ON = "roamingOn";
        static final String REASON_ROAMING_OFF = "roamingOff";
        //PS attach
        static final String REASON_DATA_ATTACHED = "dataAttached";
        //APN改变
        static final String REASON_APN_CHANGED = "apnChanged";
        //通话结束
        static final String REASON_VOICE_CALL_ENDED = "2GVoiceCallEnded";
        //SIM载入完毕
        static final String REASON_SIM_LOADED = "simLoaded";
        //网络模式改变
        static final String REASON_NW_TYPE_CHANGED = "nwTypeChanged";
        我们挑选最常见的REASON_DATA_ATTACHED原因来分析网络连接的发起过程。
        什么是 Data Attach事件呢?其实就是手机的 PS域Attach成功,而PS域是和CS域相对应,简单来说,手机(2G/3G)打电话是在CS域上进行,而数据流量是在PS域上进行,PS域附着(Attach)成功之后才可以发起数据激活的信令,然后才可以上网,默认状态下,手机开机后就会发起PS附着的信令给网络,附着成功之后将会接到成功的消息,由于DcTracker当初初始化时在registerForAllEvents()中注册了Attach的监听器:
        protected void registerForAllEvents() {
            //监听是否PS域Attach状态
            mPhone.getServiceStateTracker().registerForDataConnectionAttached(this, DctConstants.EVENT_DATA_CONNECTION_ATTACHED, null);
        }
        因此当PS域Attach成功之后,将会收到EVENT_DATA_CONNECTION_ATTACHED消息:
        public void handleMessage (Message msg) {
            switch (msg.what) {
                case DctConstants.EVENT_DATA_CONNECTION_ATTACHED:
                    onDataConnectionAttached();
                    break;
            }
        }
        继续:
        private void onDataConnectionAttached() {
            mAttached.set(true);
            if (getOverallState() == DctConstants.State.CONNECTED) {
                //已经处于连接状态
                startNetStatPoll();
                startDataStallAlarm(DATA_STALL_NOT_SUSPECTED);
                notifyDataConnection(Phone.REASON_DATA_ATTACHED);
            } else {
                //初始化后应该处于IDLE状态
                notifyOffApnsOfAvailability(Phone.REASON_DATA_ATTACHED);
            }
            if (mAutoAttachOnCreationConfig) {
                mAutoAttachOnCreation = true;
            }
            setupDataOnConnectableApns(Phone.REASON_DATA_ATTACHED);
        }
        当前的连接状态是IDLE,因此会将REASON_DATA_ATTACHED的参数传
  • 5
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
TLS(Transport Layer Security)是一种用于保护网络通信的安全协议。它可以在应用层和传输层之间提供加密和认证功能。下面是TLS建立TCP连接的过程: 1. 客户端发起握手:客户端向服务器发送一个ClientHello消息,其中包含支持的TLS版本、支持的加密算法和其他握手参数。 2. 服务器回应握手:服务器收到ClientHello消息后,会向客户端发送一个ServerHello消息作为回应。该消息中包含服务器选择的TLS版本、加密算法以及其他握手参数。 3. 服务器发送证书:服务器在发送ServerHello消息后,会将自己的数字证书发送给客户端。该证书包含服务器的公钥和相关信息,用于客户端验证服务器的身份。 4. 客户端验证证书:客户端接收到服务器发送的证书后,会对证书进行验证。这个过程包括检查证书的有效性、检查证书链是否可信以及验证服务器的身份等。 5. 客户端生成密钥:如果服务器的证书验证成功,客户端会生成一个用于加密通信的随机数,称为"Pre-master secret",并使用服务器的公钥进行加密后发送给服务器。 6. 服务器解密密钥:服务器接收到客户端发送的加密的"Pre-master secret"后,使用自己的私钥进行解密,得到相同的"Pre-master secret"。 7. 双方生成会话密钥:客户端和服务器使用客户端随机数、服务器随机数以及"Pre-master secret"生成一个会话密钥,用于后续的加密和解密通信数据。 8. 完成握手:双方在生成会话密钥后,会相互通知对方握手过程已完成。这个通知是加密的,用来确保握手过程中的安全性。 9. 安全通信:握手完成后,双方使用会话密钥对通信数据进行加密和解密,确保数据的保密性和完整性。 以上是TLS建立TCP连接的过程,通过这个过程,客户端和服务器可以建立一个安全的通信通道,保护数据的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值