即时通讯技术软件开发的网络编程方式有哪些?


无论是即时通讯应用还是传统的信息系统,Http协议都是我们最常打交道的网络应用层协议之一,它的重要性可能不需要再强调(有鉴于此,即时通讯网整理了大量的有关http协议的文章,如有必要可从本文的相关链接处查阅)。但是实际上很多人(包括我自己),虽然每天都会跟http的代码打交道,但对http了解的并不够深入。本文就我自己的学习心得,分享一下我认为需要知道的http常见的相关知识点。
▲ 上图来自《》,您可下载此图的完整清晰版

本文是系列文章中的第3篇,本系列大纲如下:

3、Http协议报文相关知识





如果networkRequest存在不为空,说明这次请求是需要发到服务器的。此时有两种情况,一种cacheResponse不存在,说明我们没有一个可用的缓存,这次请求只是一个普通的请求。如果cacheResponse存在,说明我们有一个可能过期了的缓存,此时networkRequest是一个用来进行再验证的条件请求。

response)去更新当前缓存中的数据。如果没有缓存数据,那么判断此次请求是否可以被缓存。在满足缓存的条件下,将响应缓存下来,并返回。

OkHttp缓存大致的流程就是这样,我们从中看出,整个流程是遵循了Http的缓存流程的。

最后我们总结一下缓存的流程:

  • 1)从接收到的请求中,解析出Url和各个首部;
  • 2)查询本地是否有缓存副本可以使用;
  • 3)如果有缓存,则进行新鲜度检测,如果缓存足够新鲜,则使用缓存作为响应返回,如果不够新鲜了,则构造条件请求,发往服务器再验证。如果没有缓存,就直接将请求发往服务器;
  • 4)把从服务器返回的响应,更新或是新增到缓存中。

6、有必要了解一下广泛使用的OAuth认证授权协议



OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAUTH是安全的。oAuth是Open Authorization的简写。

基本上现在主流的第3方登陆接口都是使用或者类似于OAuth的实现原理,比如:QQ开放给第3方的登陆API、微信登陆API、新浪微博账号登陆API等。


  • 1)简单:不管是OAUTH服务提供者还是应用开发者,都很易于理解与使用;
  • 2)安全:没有涉及到用户密钥等信息,更安全更灵活;
  • 3)开放:任何服务提供商都可以实现OAUTH,任何软件开发商都可以使用OAUTH。


OAuth定义的几个角色:

OAuth授权流程基本流程如下:

授权流程以有道云笔记为例(如下图):

从上图可以看出,一个典型的OAuth授权的流程主要分为6步:

  • 1)客户端向用户申请授权;
  • 3)客户端通过获取的授权,向认证服务器申请Access Token;
  • 4)认证服务器通过授权认证后,下发Access Token;
  • 5)客户端通过获取的到Access Token向资源服务器发起请求;
  • 6)资源服务器核对Access Token后下发请求资源。

7、必须要掌握的Https知识



苹果已从去年开始强制新上线的APP必须使用HTTPS(详见《),谷歌的Chrome浏览器也已宣布不支持https的网络将被标记不“不安全”,做为开发者,我们能感觉到HTTPS越来越被重视,所以了解https也是必须的。

传统的Http协议是一种应用层的传输协议,Http直接与TCP协议通信。

  • Http协议使用明文传输,容易遭到窃听;
  • Http对于通信双方都没有进行身份验证,通信的双方无法确认对方是否是伪装的客户端或者服务端;
  • Http对于传输内容的完整性没有确认的办法,往往容易在传输过程中被劫持篡改。

因此,在一些需要保证安全性的场景下,比如涉及到银行账户的请求时,Http无法抵御这些攻击。  Https则可以通过增加的SSL\TLS,支持对于通信内容的加密,以及对通信双方的身份进行验证。
近代密码学中加密的方式主要有两类:
对称秘钥加密是指加密与解密过程使用同一把秘钥。这种方式的优点是处理速度快,但是如何安全的从一方将秘钥传递到通信的另一方是一个问题。

非对称秘钥加密是指加密与解密使用两把不同的秘钥。这两把秘钥,一把叫公开秘钥,可以随意对外公开。一把叫私有秘钥,只用于本身持有。得到公开秘钥的客户端可以使用公开秘钥对传输内容进行加密,而只有私有秘钥持有者本身可以对公开秘钥加密的内容进行解密。这种方式克服了秘钥交换的问题,但是相对于对称秘钥加密的方式,处理速度较慢。

SSL\TLS的加密方式则是结合了两种加密方式的优点。首先采用非对称秘钥加密,将一个对称秘钥使用公开秘钥加密后传输到对方。对方使用私有秘钥解密,得到传输的对称秘钥。之后双方再使用对称秘钥进行通信。这样即解决了对称秘钥加密的秘钥传输问题,又利用了对称秘钥的高效率来进行通信内容的加密与解密。




SSL\TLS采用的混合加密的方式还是存在一个问题,即怎么样确保用于加密的公开秘钥确实是所期望的服务器所分发的呢?也许在收到公开秘钥时,这个公开秘钥已经被别人篡改了。因此,我们还需要对这个秘钥进行认证的能力,以确保我们通信的对方是我们所期望的对象。

目前的做法是使用由数字证书认证机构颁发的公开秘钥证书。服务器的运营人员可以向认证机构提出公开秘钥申请。认证机构在审核之后,会将公开秘钥与共钥证书绑定。服务器就可以将这个共钥证书下发给客户端,客户端在收到证书后,使用认证机构的公开秘钥进行验证。一旦验证成功,即可知道这个秘钥是可以信任的秘钥。


Https的通信流程:
  • 2)Server端响应请求,并在之后将证书发送至Client;
  • 3)Client使用认证机构的共钥认证证书,并从证书中取出Server端共钥;
  • 4)Client使用共钥加密一个随机秘钥,并传到Server;
  • 5)Server使用私钥解密出随机秘钥;
  • 6)通信双方使用随机秘钥最为对称秘钥进行加密解密。
}

OA办公系统的设计与实现I

OA办公系统的设计与实现

办公自动化(OA-Office Automation)是将现代化办公和计算机网络功能结合起来的一种新型的办公方式,是当前新技术革命中一个非常活跃和具有很强生命力的技术应用领域,是信息化社会的产物。通过网络,组织机构内部的人员可跨越时间、空间协同工作。通过OA系统所实施的交换式网络应用,使信息的传递更加快捷和方便,从而极大地扩展了办公手段,实现了办公的高效率。

随着计算机网络技术的发展及企业管理模式的不断变化,目前,以传统客户/服务器模型设计的办公自动化系统已不能很好满足网络办公的需求,难以充公整合新技术的特点,进而无法充分发挥新管理模式的优势,并且要针对不同的运行环境及操作系统开发不同版本的客户端,大大增加了系统的开发难度和更新周期。本文从企业的实际情况出发,在用户需求分析的基础上,提出企业办公自动化系统的基本目标,并阐述系统结构设计和功能设计,设计了一种基于WEB的网络办公自动化系统,系统建立在Browser/Servr/Database三层构架之上,并且本系统采用MVC(Model,View,Controller)三层架构,从而使Business层和Web层得到了很好的分离,并且本系统采用了可跨平台的Java语言作为主要开发语言,并使用了基于MVC三层架构的Struts框架和实现了DI(Inversion of Control)的Spring框架等J2EE 的主流框架,并对本系统进行了国际化,从而大大增加了系统的灵活性和可扩展性。

}

Go语言现在在服务端的网络编程领域越来越火,尤其像IM即时通讯应用这种富网络应用且对服务端网络性能要求极高的场景,很高兴看到Golang发布了1.8正式版,希望在多核架构横行的时代多一些这种顺应时代而生的技术。

Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。Go的目标是希望提升现有编程语言对程序库等依赖性(dependency)的管理,这些软件元素会被应用程序反复调用。由于存在并行编程模式,因此这一语言也被设计用来解决多处理器的任务。

谷歌大约2007年开始开发Go,并于2008年投入了一组全职员工。谷歌当初将该语言设计为一款系统编程语言,可以被用于网络服务器、存储系统和数据库中。但是谷歌认为,该语言还有望被用于其它领域。

}

我要回帖

更多关于 即时通讯 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信