应用层协议:每个应用层的都是为了解决某一类应用问题。而问题的解决又必须通过位于不同主机中的多个应用进程之间的通信和协同工作来完成。应用进程之间必须遵守严格的规则。应用层协议应当定义如下几个:

  • 应用进程之间交换的报文类型,如请求报文和响应报文
  • 报文中各个字段及其详细描述
  • 包含在字段中的信息的含义
  • 进程何时、如何发送报文,以及对报文进行响应的规则

1.HTTP协议
万维网使用统一资源定位符URL来标志万维网上的各种文档,并使每一个文档在整个因特网的范围内具有唯一的标识符URL;万维网客户程序和服务器程序必须遵守严格的协议即HTTP协议。HTTP协议是一个应用层协议,它使用TCP连接进行可靠的传送。另外为了提取显示文档,使用超文本标记语言HTML
1.1 HTTP操作过程

1.2 用户点击firefox浏览器的某个页面后触发的事件

  1. 浏览器分析链接指向页面的URL
  2. 向DNS请求解析URL对于的IP地址
  3. 域名系统解析出IP地址
  4. 浏览器与服务器建立TCP连接(服务器端的端口是80)
  5. 浏览器发出Get文件命令
  6. 服务器对Get请求作出相应,把文件index.html发送给浏览器
  7. 释放TCP链接
  8. 浏览器显示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的报文结构

  • 请求报文
  • 响应报文

三个部分组成,两种报文格式的区别就是开始行不同

  1. 开始行,用于区分是请求报文(请求行)还是响应报文(状态行)
  2. 首部行
  3. 实体主体

请求报文的方法:
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

HTTP协议和XMPP协议相关推荐

  1. Bytom BIP-32协议和BIP-44协议解读

    我们知道HD(分层确定性)钱包,基于 BIP-32:多币种和多帐户钱包,基于 BIP-44:最近比原社区的钱包开发者对比原的BIP-32和BIP-44协议有疑问,所以我今天就专门整理了一下该协议的内容 ...

  2. 3.7 PPP协议和HDLC协议

    3.7 PPP协议和HDLC协议

  3. RabbitMQ MQTT协议和AMQP协议

    RabbitMQ MQTT协议和AMQP协议 1        序言... 1 1.1     RabbitMq结构... 1 1.2     RabbitMq消息接收... 4 1.3     Ex ...

  4. 计算机网络(二十)-广域网-PPP协议和HDLC协议

    一.广域网 广域网,通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,它能连接多个城市或国家,远距离通信,形成国际性的远程网络. 广域网的通信子网主要使用分组交换技术.广域网的通信子网可以利用 ...

  5. fx5u mc协议_SLMP协议和MC协议

    一.概述 SLMP(Seamless Message Protocol)是在以太网中使用的协议.MC协议则包含了串口以及以太网的通信协议,范围更广. SLMP的3E帧或4E帧(3)的报文格式与MC协议 ...

  6. 485通讯协议_HART协议和RS485协议有什么区别?

    HART协议和RS485协议的区别如下: 1.概念不同 HART协议是采用基于Bell202标准的FSK频移键控信号,在低频的4-20mA模拟信号上叠加幅度为0.5mA的音频数字信号进行双向数字通讯: ...

  7. STM8单片机串口同时识别自定义协议和Modbus协议

      在单片机开发中,串口是最常用的和外界交换数据的渠道,要使用串口,那必不可少的就是通信协议,通信协议就是单片机和外界通信的语言,要想正常和其他设备正常交流,首先语言必须相通.   在实际开发过程中由 ...

  8. nginx websocket wss 连接失败 failed_浅谈WebSocket协议、WS协议和WSS协议原理及关系

    现如今,一些游戏,网站,APP,支付行业的网络经常会收到DDOS和CC,因此这个事情也变得不足为奇了.但在防护方案中有多种不同的方案.如,今天有几个同事在针对高防CDN问题讨论的时,谈到WebSock ...

  9. tcp协议和udp协议区别_TCP和UDP协议有什么区别?

    tcp协议和udp协议区别 TCP and UDP are two protocols that are part of the transport layer in a TCP/IP model o ...

最新文章

  1. 记录一下利用ffmpeg将avi转为mp4
  2. Python多线程--UDP聊天器
  3. win10打印机终结点映射器_用了就回不去?微软官方免费“外挂”,让win10好用到飞起...
  4. ​无需聚类,杭电学者提出基于软化相似度学习的无监督行人再识别
  5. (20)HTML5 <summary>标签
  6. 都安排上了!春晚主持阵容、春晚直播平台、春晚餐桌C位
  7. Android四大组件---Activity
  8. UTF-8 's format
  9. Linux 命令(110)—— help 命令(builtin)
  10. api网关配置协议服务器,api网关配置协议服务器
  11. Go Hack 2017 报名开启:十月魔都约一场 Go 语言烧脑之战
  12. mysql order优化2019_mysql 增加排序 性能差很多 怎么优化
  13. Android 原生GPS定位 判断室内室外
  14. 洪磊父亲详述被拘细节:银行卡共100万
  15. matlab中ans的含义
  16. Android + OpenCV 入门教程笔记(保姆级)
  17. 记一次配置深信服设备的过程
  18. 计算某一天是星期几(C语言,可运行)
  19. 证券交易金融知识学习(1)
  20. SAP 成本组件分割价格详解

热门文章

  1. 搭了我半年顺风车的同事,把我拉黑了:和任何人走太近,都是一场灾难
  2. Python爬虫笔记——解析json数据(以周杰伦歌单为例)及Headers
  3. HTML(一):行级标签、块级标签、其他标签
  4. es启动错误max number of threads [3802] for user [elasticsearch] is too low, increase to at leas
  5. python期末试题汇总
  6. 计算机模拟实验的关系,试说明数值模拟方法的特点,它与理论研究,实验研究有什么关系...
  7. 64位操作系统安装——Linux(Ubuntu 16.04)+Windows7+iNode
  8. python整形是什么,什么是整型?怎样理解Python的整型?
  9. 信息化企业招投标,最加分的资质证书大盘点
  10. 【c#编程技术总结】IO文件流的应用