通讯协议,文本载体协议

  最近在看一些通讯协议,还有二进制协议以及文本协议,有点晕,先记录下来:

  通讯协议:

网络传输协议忘了差不多了,先看看:

http://blog.csdn.net/yaopeng_2005/article/details/7064869

网络由下往上分为:

  物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。

  如果编程的时候只是使用tcp协议那就是只用到了传输层,http属于应用层协议,是在TCP协议基础上的协议。

  webSocket 协议和http协议一样是基于tcp协议的,而

  Socket是直接操作tcp协议的一组API,是TCP/IP协议族通讯的中间软件抽象层,无关协议类型。用于实现网络层。可以自己进行编码实现。

  AMQP: 是另外一套网络协议,有自己的网络层级。类似于OSI网络协议,所以又和TCP,HTTP不是一个层级的了。(感觉还是不是这样的....应该只是应用层的吧,可是是否是基于TCP的了?)

了解它是因为RabbitMQ是使用这个协议的。

RPC协议:远程调用协议。通过网络从远程计算机程序上请求 服务,而不用了解底层网络技术的协议。

内容传输可以使用的协议(序列化库):

二进制编码:  protobuffer flatBuffer 

文本编码: json xml

文本的可读性强,二进制的性能好。

thrift 是IDL的一个具体实现---

RESTFul 一种软件架构风格,而不是标准,提供了一组设计原则和约束条件 --摘自百度百科。

REST 原则: 表述性状态转移(Representational State Transfer),定义了应该如何正确使用Web标准,如HTTP和URI。

原则如下:

  将所有“事物“定义ID:对所有觉得重要的食物,都进行URI标识。

  将所有事物链接在一起:”超媒体被当作应用状态引擎“,超媒体-->链接的思想。在任何可能的情况下,使用链接指引可以被标识的事物。

  使用标准方法 包含:GET POST PUT DELETE HEAD OPTIONS 从而保证了调用这些方法可以获得的结果。

  资源多重表达:http可以请求一种特定格式的表述,比如XML或者TEXT格式等。

  无状态通信:可以保证服务器的变化对客户端不可见,也不占用服务器的内存。

以上具体可以参考:http://kb.cnblogs.com/page/132129/

RESTFul 论文名称为:架构风格与基于网络应用软件的架构设计

原文地址:https://www.cnblogs.com/edenpans/p/5733982.html