TCPIP协议与Http、RPC和Socket
  TPC/IP协议是传输层协议,主要解决数据如何在⽹络中传输,⽽HTTP是应⽤层协议,主要解决如何包装数据。关于TCP/IP和HTTP协议的关系,⽹络有⼀段⽐较容易理解的介绍:“我们在传输数据时,可以只使⽤(传输层)TCP/IP协议,但是那样的话,如果没有应⽤层,便⽆法识别数据内容,如果想要使传输的数据有意义,则必须使⽤到应⽤层协议,应⽤层协议有很多,⽐如HTTP、FTP、TELNET等,也可以⾃⼰定义应⽤层协议。WEB使⽤HTTP协议作应⽤层协议,以封装HTTP ⽂本信息,然后使⽤TCP/IP做传输层协议将它发到⽹络上。”
术语TCP/IP代表传输控制协议/⽹际协议,指的是⼀系列协议。“IP”代表⽹际协议,TCP和UDP使⽤该协议从⼀个⽹络传送数据包到另⼀个⽹络。把IP想像成⼀种⾼速公路,它允许其它协议在上⾯⾏驶并到到其它电脑的出⼝。TCP和UDP是⾼速公路上的“卡车”,它们携带的货物就是像HTTP,⽂件传输协议FTP这样的协议等。
你应该能理解,TCP和UDP是FTP,HTTP和SMTP之类使⽤的传输层协议。虽然TCP和UDP都是⽤来传输其他协议的,它们却有⼀个显著的不同:TCP提供有保证的数据传输,⽽UDP不提供。这意味着TCP有⼀个特殊的机制来确保数据安全的不出错的从⼀个端点传到另⼀个端点,⽽UDP不提供任何这样的保证。
HTTP(超⽂本传输协议)是利⽤TCP在两台电脑(通常是Web服务器和客户端)之间传输信息的协议。客户端
使⽤Web浏览器发起HTTP请求给Web服务器,Web服务器发送被请求的信息给客户端。
OSI⽹络结构的七层模型,各层的具体描述如下:
  第七层:应⽤层定义了⽤于在⽹络中进⾏通信和数据传输的接⼝ - ⽤户程式;提供标准服务,⽐如虚拟终端、⽂件以及任务的传输和处理;
  第六层:表⽰层掩盖不同系统间的数据格式的不同性;指定独⽴结构的数据传输格式;数据的编码和解码;加密和解密;压缩和解压缩
  第五层:会话层管理⽤户会话和对话;控制⽤户间逻辑连接的建⽴和挂断;报告上⼀层发⽣的错误
  第四层:传输层管理⽹络中端到端的信息传送;通过错误纠正和流控制机制提供可靠且有序的数据包传送;提供⾯向⽆连接的数据包的传送;
  第三层:⽹络层定义⽹络设备间如何传输数据;根据唯⼀的⽹络设备地址路由数据包;提供流和拥塞控制以防⽌⽹络资源的损耗
  第⼆层:数据链路层定义操作通信连接的程序;封装数据包为数据帧;监测和纠正数据包传输错误
  第⼀层:物理层定义通过⽹络设备发送数据的物理⽅式;作为⽹络媒介和设备间的接⼝;定义光学、电⽓以及机械特性。
下⾯的图表试图显⽰不同的TCP/IP和其他的协议在最初OSI模型中的位置:
7应⽤层例如、、、、、、、、、、、
6表⽰层例如、、、、
5会话层例如、、、ISO 8327 / CCITT X.225、、、、、
tcpip协议在哪层
4传输层例如、、、、、、
3⽹络层例如、、、、、、、、、、、
2数据链路层例如、、、、、、、、
1物理层例如、、、
1.RPC主要是基于TCP/IP协议,⽽HTTP服务主要是基于HTTP协议
  (摘⾃百度百科: OSI模型有7层结构,每层都可以有⼏个⼦层。 OSI的7层从上到下分别是 7 应⽤层 6 表⽰层 5 会话层 4 传输层 3 ⽹络层2 数据链路层 1 物理层;其中⾼层(即7、6、5、4层)定义了应⽤程序的功能,下⾯3层(即3、2、1层)主要⾯向通过⽹络的端到端的数据流)
http协议是应⽤层协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。
在OSI⽹络通信模型中,RPC跨越了传输层和应⽤层。RPC使得开发包括⽹络分布式多程序在内的应⽤程序更加轻易。
2. 同步和异步的区别。
3. HTTP与RPC存在重⼤不同的是:请求是使⽤具有标准语义的通⽤的接⼝定向到资源的,这些语义能够被中间组件和提供服务的来源机器进⾏解释。结果是使得⼀个应⽤⽀持分层的转换(layers of transformation)和间接层(indirection),并且独⽴于消息的来源,这对于⼀个Internet规模、多个组织、⽆法控制的可伸缩性的信息系统来说,是⾮常有⽤的。与之相⽐较,RPC的机制是根据语⾔的API(language API)来定义的,⽽不是根据基于⽹络的应⽤来定义的。
2. ⼈们常常错误地将HTTP称作⼀种远程过程调⽤(RPC)机制,仅仅是因为它包括了请求和响应。
调⽤远程机器上的⼀个过程(procedure)的观念,是RPC与其他形式的基于⽹络的应⽤通信的区别所在。 RPC的协议识别出过程并且传递给它固定的⼀组参数,然后等待在使⽤相同接⼝返回的⼀个消息中提供的回答。远程⽅法调⽤(RMI)也是类似的,除了过程被标识为⼀个{对象,⽅法}的组合,⽽不是⼀个简单的服务过程(service procedure)。被代理的RMI添加了名称服务的间接层和少量其他的技巧(trick),但是接⼝基本上是相同的。
将HTTP和RPC区分开的并不是语法,甚⾄也不是使⽤⼀个流作为参数所获得的不同的特性,尽管它帮助解释了为何现有的RPC机制对于来说是不可⽤的。
3.HTTP协议的⼏个重要概念
1.连接(Connection):⼀个传输层的实际环流,它是建⽴在两个相互通讯的应⽤程序之间。
2.消息(Message):HTTP通讯的基本单位,包括⼀个结构化的⼋元组序列并通过连接传输。
3.请求(Request):⼀个从客户端到服务器的请求信息包括应⽤于资源的⽅法、资源的标识符和协议的版本号
4.响应(Response):⼀个从服务器返回的信息包括HTTP协议的版本号、请求的状态(例如“成功”或“没到”)和⽂档的MIME类型。
5.资源(Resource):由URI标识的⽹络数据对象或服务。
6.实体(Entity):数据资源或来⾃服务资源的回映的⼀种特殊表⽰⽅法,它可能被包围在⼀个请求或响应信息中。⼀个实体包括实体头信息和实体的本⾝内容。
7.客户机(Client):⼀个为发送请求⽬的⽽建⽴连接的应⽤程序。
8.⽤户(Useragent):初始化⼀个请求的客户机。它们是浏览器、编辑器或其它⽤户⼯具。
9.服务器(Server):⼀个接受连接并对请求返回信息的应⽤程序。
10.源服务器(Originserver):是⼀个给定资源可以在其上驻留或被创建的服务器。
11.代理(Proxy):⼀个中间程序,它可以充当⼀个服务器,也可以充当⼀个客户机,为其它客户机建⽴请求。请求是通过可能的翻译在内部或经过传递到其它的服务器中。⼀个代理在发送请求信息之前,必须解释并且如果可能重写它。
代理经常作为通过防⽕墙的客户机端的门户,代理还可以作为⼀个帮助应⽤来通过协议处理没有被⽤户代理完成的请求。
12.⽹关(Gateway):⼀个作为其它服务器中间媒介的服务器。与代理不同的是,⽹关接受请求就好象对被请求的资源来说它就是源服务器;发出请求的客户机并没有意识到它在同⽹关打交道。
⽹关经常作为通过防⽕墙的服务器端的门户,⽹关还可以作为⼀个协议翻译器以便存取那些存储在⾮HTTP系统中的资源。
13.通道(Tunnel):是作为两个连接中继的中介程序。⼀旦激活,通道便被认为不属于HTTP通讯,尽管通道可能是被⼀个HTTP请求初始化的。当被中继的连接两端关闭时,通道便消失。当⼀个门户(Portal)必须存在或中介(Intermediary)不能解释中继的通讯时通道被经常使⽤。
14.缓存(Cache):反应信息的局域存储。
RPC和Socket的区别
越底层,代码越复杂、灵活性越⾼、效率越⾼;越上层,抽象封装的越好、代码越简单、效率越差。Socket和RPC的区别再次说明了这点。
  RPC(Remote Procedure Call,远程过程调⽤)是建⽴在Socket之上的,出于⼀种类⽐的愿望,在⼀台机器上运⾏的主程序,可以调⽤另⼀台机器上准备好的⼦程序,就像 LPC(本地过程调⽤).RPC带来了开发C/S程序的简单可靠的⼿段,它通过⼀种叫XDR的数据表达⽅法描述数据,程序员书写伪代码,然后
由 rpcgen程序翻译为真正的可编译的C语⾔源代码,再编译成真正的Client端和Server端程序。
  RPC作为普遍的C/S开发⽅法,开发效率⾼效,可靠.但RPC⽅法的基本原则是--以模块调⽤的简单性忽略通讯的具体细节,以便程序员不⽤关⼼C/S之间的通讯协议,集中精⼒对付实现过程.这就决定了 RPC⽣成的通讯包不可能对每种应⽤都有最恰当的处理办法,与Socket⽅法相⽐,传输相同的有效数据,RPC占⽤更多的⽹络带宽.
  RPC是在Socket的基础上实现的,它⽐socket需要更多的⽹络和系统资源.另外,在对程序优化时,程序员虽然可以直接修改由rpcgen产⽣的令⼈费解的源程序,但对于追求程序设计⾼效率的RPC⽽⾔,获得的简单性则被⼤⼤削弱.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。