原文地址:http://blog.csdn.net/southernriver/article/details/52038607
应用层协议:每个应用层的都是为了解决某一类应用问题。而问题的解决又必须通过位于不同主机中的多个应用进程之间的通信和协同工作来完成。应用进程之间必须遵守严格的规则。应用层协议应当定义如下几个:
- 应用进程之间交换的报文类型,如请求报文和响应报文
- 报文中各个字段及其详细描述
- 包含在字段中的信息的含义
- 进程何时、如何发送报文,以及对报文进行响应的规则
1.HTTP协议
万维网使用统一资源定位符URL来标志万维网上的各种文档,并使每一个文档在整个因特网的范围内具有唯一的标识符URL;万维网客户程序和服务器程序必须遵守严格的协议即HTTP协议。HTTP协议是一个应用层协议,它使用TCP连接进行可靠的传送。另外为了提取显示文档,使用超文本标记语言HTML
1.1 HTTP操作过程
1.2 用户点击firefox浏览器的某个页面后触发的事件
- 浏览器分析链接指向页面的URL
- 向DNS请求解析URL对于的IP地址
- 域名系统解析出IP地址
- 浏览器与服务器建立TCP连接(服务器端的端口是80)
- 浏览器发出Get文件命令
- 服务器对Get请求作出相应,把文件index.html发送给浏览器
- 释放TCP链接
- 浏览器显示index.html中的所有文本信息
1.3 HTTP协议使用了面向连接的TCP作为传输层协议
保证了数据的可靠传输.HTTP不必考虑数据在传输过程中被丢弃后又怎样被重传.但是HTTP协议本身是无连接的.,也就是说通信双方在交换HTTP报文之前不需要先建立HTTP链接
HTTP协议是无状态的,服务器不记得曾经访问过的这个用户.
1.4 HTTP1.0和HTTP1.1
- HTTP1.0的缺点:每请求一个文档就要两倍RTT的开销。若一个主页上有很多链接对象需要进行连接,那么每一次连接下载都需要2*RTT时间。另一种开销就是万维网客户和服务器每一次建立新的TCP连接都要分配缓存和变量。使用不行TCP连接可以缩短响应时间。
-
HTTP1.1协议很好的解决了这个问题。他使用了持续连接。万维网服务器在发送响应后仍然在一段时间内保持这条连接,是同一个客户和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。
HTTP1.1的持续连接有两种工作方式。流水线和非流水线。
1.4 HTTP的报文结构
- 请求报文
- 响应报文
三个部分组成,两种报文格式的区别就是开始行不同
- 开始行,用于区分是请求报文(请求行)还是响应报文(状态行)
- 首部行
- 实体主体
请求报文的方法:
GET 请求获取Request-URI所标识的资源
POST 在Request-URI所标识的资源后附加新的数据
HEAD 请求获取由Request-URI所标识的资源的响应消息报头
PUT 请求服务器存储一个资源,并用Request-URI作为其标识
DELETE 请求服务器删除Request-URI所标识的资源
TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT 保留将来使用
OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求
响应报文的特点
第一行就是状态行,包括三项内容,即HTTP的版本,状态码,及结束语
1xx 表示通知信息,请求处理中
2xx 表示请求成功
3xx 表示重定向
4xx 表示客户端差错
5xx 表示服务器差错
2. XMPP协议
XMPP 是一种很类似于http协议的一种数据传输协议,它的过程就如同“解包装–〉包装”的过程,用户只需要明白它接受的类型,并理解它返回的类型,就可以很好的利用xmpp来进行数据通讯。基于可扩展标记语言(XML)的协议
2.1XMPP的基本网络结构
客户端 服务器 网关
通信能够在这三者的任意两个之间双向发生。服务器同时承担了客户端信息记录,连接管理和信息的路由功能。网关承担着与异构即时通信系统的互联互通,异构系统可以包括SMS(短信),MSN,ICQ等。基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上传输XML。
2.2 XMPP工作原理
XMPP核心协议通信的基本模式就是先建立一个stream,然后协商一堆安全之类的东西,中间通信过程就是客户端发送XML Stanza,一个接一个的。服务器根据客户端发送的信息以及程序的逻辑,发送XML Stanza给客户端。但是这个过程并不是一问一答的,任何时候都有可能从一方发信给另外一方。通信的最后阶段是关闭流,关闭TCP/IP连接。
2.3 关于通信原语细节的话就不总结了!大家可以参考这个人的。
http://blog.csdn.net/imyfriend/article/details/8584360