http、tcp、udp、OAUTH2.0网络协议区别

               

1、先来一个讲TCP、UDP和HTTP关系的html

一、TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。web

在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。算法

在传输层中有TCP协议与UDP协议。浏览器

在应用层有FTP、HTTP、TELNET、SMTP、DNS等协议。安全

所以,HTTP自己就是一个协议,是从Web服务器传输超文本到本地浏览器的传送协议。服务器

 

二、HTTP协议是创建在请求/响应模型上的。首先由客户创建一条与服务器的TCP连接,并发送一个请求到服务器,请求中包含请求方法、URI、协议版本以及相关的MIME样式的消息。服务器响应一个状态行,包含消息的协议版本、一个成功和失败码以及相关的MIME式样的消息。网络

HTTP/1.0为每一次HTTP的请求/响应创建一条新的TCP连接,所以一个包含HTML内容和图片的页面将须要创建屡次的短时间的TCP连接。一次TCP连接的创建将须要3次握手。session

另外,为了得到适当的传输速度,则须要TCP花费额外的回路连接时间(RTT)。每一次连接的创建须要这种常常性的开销,而其并不带有实际有用的数据,只是保证连接的可靠性,所以HTTP/1.1提出了可持续连接的实现方法。HTTP/1.1将只创建一次TCP的连接而重复地使用它传输一系列的请求/响应消息,所以减小了连接创建的次数和常常性的连接开并发

销。app

 

3,UDP(User Data Protocol,用户数据报协议)

(1) UDP是一个非链接的协议,传输数据以前源端和终端不创建链接,当它想传送时就简单地去抓取来自应用程序的数据,并尽量快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每一个消息段放在队列中,应用程序每次从队列中读一个消息段。

(2) 因为传输数据不创建链接,所以也就不须要维护链接状态,包括收发状态等,所以一台服务机可同时向多个客户机传输相同的消息。

(3) UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。

(4) 吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制。

(5)UDP使用尽最大努力交付,即不保证可靠交付,所以主机不须要维持复杂的连接状态表(这里面有许多参数)。

(6)UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界,所以,应用程序须要选择合适的报文大小。

咱们常用“ping”命令来测试两台主机之间TCP/IP通讯是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,而后对方主机确认收到数据包,若是数据包是否到达的消息及时反馈回来,那么网络就是通的。

 

 

 

 

2、       Oauth的概念

Oauth的官方简介是:

An open protocol to allow secure API authorization in a simple andstandard method from web, mobile and desktop applications.

随着大量开放平台的出现,创建在开放平台之上的各类第三方应用也在大量冒出,出对安全性和统一标准的要求,因而出现了oauth协议

简单来讲,OAUTH是一种开放的协议,他能为桌面程序或者基于BS的web应用提供一种简单的标准方式去访问须要用户受权的API(ApplicationProgramming Interface)服务,并且任何第三方均可以使用OAUTH认证服务。在为第三方提供服务的过程当中,他还能起到保护用户帐号安全的做用。

 

1,Oauth的发展过程

2007年发布了OAuthCore 1.0

(此版本的协议存在严重的安全漏洞,详情介绍可参考:Explaining the OAuth Session Fixation Attack

 

2009年6月发布了OAuthCore 1.0 Revision A

修复了前一版本的安全漏洞,并成为RFC5849,咱们如今使用的OAuth版本多半都是以此版本为基础。

 

2010年4月发布了OAuth2.0,是OAuth协议的下一版本,但与OAuth 1.0版本互不兼容。

 

2,Oauth的做用

在上面的给出Oauth的定义中其实就已经说明白了它的做用,但有点抽象,就拿我最近作的一个小应用来举例吧。若是咱们想要作关于新浪微博的第三方应用,那么咱们就能够用到微博提供给咱们的一系列API,但应用这些API是须要我么先去受权验证的,这里就用到了Oauth了。并且做为第三方开发者,咱们并无获得用户的实质性的私密信息,因此说他还保护了用户帐号安全。

  咱们在应用Oauth的时候经常会拿他和OpenID做比较,那咱们怎么去理解他们之间的区别呢?

  其实OAuth的关注点在于受权,而OpenID则侧重于证实鉴定,简单来讲,咱们能够认为OAuth为咱们解决“用户能(想)作什么”,是“WHAT”的问题,而OpenID则为咱们验证“用户是谁”,是解决“WHO”的问题。

 

3, Oauth1.0与Oauth2.0的区别

①auth1.0与Oauth2.0是相互不兼容的,因此他们为咱们提供了不一样的受权方式:

 

 

2.0的用户受权过程有3步:

         A)用户到受权服务器,请求受权,而后返回受权码(AuthorizationCode)

         B)客户端由受权码到受权服务器换取访问令牌(access token)

         C)用访问令牌去访问获得受权的资源、

总结:获取受权码(Authorization Code)—>换取访问令牌(access_token)—>访问资源:

 

 

1.0的受权分4步,

          A)客户端到受权服务器请求一个受权令牌(requesttoken&secret)

         B)引导用户到受权服务器请求受权

         C)用访问令牌到受权服务器换取访问令牌(accesstoken&secret)

         D)用访问令牌去访问获得受权的资源

总结:请求受权令牌(request token&secret)—>换取访问令牌(access token&secret)—>访问资源

 

 

②1.0协议每一个token都有一个加密,2.0则不须要。这样来看1.0彷佛更加安全,可是2.0要求使用https协议,安全性也更高一筹。

 

③2.0充分考虑了客户端的各类子态,于是提供了多种途径获取访问令牌,有:受权码、

客户端私有证书、资源拥有者密码证书、刷新令牌等方式,并且验证过程更为简洁。

相比之下 1.0只有一个用户受权流程。

而虽然HTTP自己是一个协议,但其最终仍是基于TCP的。不过,目前,有人正在研究基于TCP+UDP混合的HTTP协议。

 而TCP与UDP的区别:

1.基于链接与无链接;
2.对系统资源的要求(TCP较多,UDP少);
3.UDP程序结构较简单;
4.流模式与数据报模式 ;

5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。

相关文章
相关标签/搜索