HTTP协议和XMPP协议、MQTT协议
应用层协议:每个应用层的都是为了解决某一类应用问题。而问题的解决又必须通过位于不同主机中的多个应用进程之间的通信和协同工作来完成。应用进程之间必须遵守严格的规则。应用层协议应当定义如下几个:
- 应用进程之间交换的报文类型,如请求报文和响应报文
- 报文中各个字段及其详细描述
- 包含在字段中的信息的含义
- 进程何时、如何发送报文,以及对报文进行响应的规则
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
3. MQTT协议
https://mcxiaoke.gitbooks.io/mqtt-cn/content/mqtt/01-Introduction.html
HTTP协议和XMPP协议、MQTT协议的更多相关文章
- 计算机网络【1】—— OSI七层协议和TCP/IP四层协议
新开一贴,专门用来记录计算机网络相关知识. 一.OSI七层协议 物理层.数据链路层.网络层.传输层.会话层.表示层.应用层 二.TCP/IP四层协议 网络接口层.网际层.运输层.应用层 三.五层协议 ...
- 【原创】锐捷实现OSPF路由协议和NAT地址转换协议
路由网络设计与实施 [锐捷设备实现OSPF路由协议与NAT地址转换] 说明: 本文是在多VLAN双星型交换网络的基础之上发展的.关于组建多VLAN双星型交换网络,请参阅: <思科和锐捷组建多 ...
- OSI七层协议和TCP/IP四层协议
1. OSI七层和TCP/IP四层的关系 1.1 OSI引入了服务.接口.协议.分层的概念,TCP/IP借鉴了OSI的这些概念建立TCP/IP模型. 1.2 OSI先有模型,后有协议,先有标准,后进行 ...
- 比较下OceanBase的选举协议和Raft的选举协议的区别
阿里技术大讲堂OceanBase专场中曾有专门一场讲座介绍OB自己实现的分布式选举算法:<分布式选举-破解数据库高可用性难题> 这里简单列一下这个选举算法和raft论文中提到的选举算法的区 ...
- 转:XMPP协议、MQTT协议、HTTP协议、CoAP协议的基本比较
一.先看下相关国外的专业数据对四大协议的比较: Protocol CoAP XMP ...
- MQTT协议学习总结
一.MQTT介绍 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通 ...
- 安卓开发之mqtt协议
首先物联网协议mqtt协议是基于tcp/ip协议的,使用了官方的mqttclient框架/**初始化mqttclient*/private void init() { try { //MQTT的连接设 ...
- MQTT协议 局域网和广域网 云服务器和虚拟主机、VPS SSH和FTP、SFTP
MQTT协议 MQTT协议就很好的解决了coap存在的问题.MQTT协议是由IBM开发的即时通讯协议,相比来说比较适合物联网场景的通讯协议.MQTT协议采用发布/订阅模式,所有的物联网终端都通过TC ...
- MQTT 协议是个啥?这篇文章告诉你!
文章首发于我的公众号「程序员cxuan」,欢迎大家关注呀- 说到做到! 之前有位读者给我留言说想要了解一下什么是 MQTT 协议,顺便还把我夸了一把,有点不好意思啦. 那么读者的要求必须要满足啊,所以 ...
随机推荐
- eclipse的调试模式以及断点运行
先在代码序号处打个点. 点击debug调试模式 然后再点击 如果有打断点,则会在断点处结束,如果没有,会一直一步一步向下直至结束.
- 40.SEO----前端该懂的seo技巧
SEO要点:1.语义化html标签,用合适的标签嵌套合适的内容,不可过分依赖div,对浏览器更友善就能更容易被抓取.2.重要的内容html代码放在前面,放在左边.搜索引擎爬虫是从左往右,从上到下进行抓 ...
- quartz demo01
1,Pom.xml 加入:quartz-2.1.7.jar <dependency> <groupId>org.quartz-scheduler</groupId&g ...
- [9]Windows内核情景分析 --- DPC
DPC不同APC,DPC的全名是'延迟过程调用'. DPC最初作用是设计为中断服务程序的一部分.因为每次触发中断,都会关中断,然后执行中断服务例程.由于关中断了,所以中断服务例程必须短小精悍,不能消耗 ...
- 强化学习--DeepQnetwork 的一些改进
Double DQN 算Q值 与选Q值是分开的,2个网络. Multi-step Dueling DQN 如果更新了,即使有的action没有被采样到,也会更新Q值 Prioritized Reply ...
- 使用.NET向webService传double、int、DateTime 服务器得到的数据时null的问题(转http://blog.csdn.net/slimboy123/article/details/4366701)
用C#.NET调用Java开发的WebService时,先在客户端封装的带有int属性的对象,当将该对象传到服务器端时,服务器端可以得到string类型的属性值,却不能得到int类型.double和D ...
- Marlin 擠出頭溫度控制PID值校正
Marlin 擠出頭溫度控制PID值校正 擠出頭加熱器.溫度感應器安裝好後,先別急著直接指定工作溫度並且加熱.因為控制板上的溫度控制PID參數尚未校正.如果加熱速度過快,有可能會加熱過度並且導致零件燒 ...
- MQTT 发布者订阅者
添加依赖: <dependency> <groupId>org.eclipse.paho</groupId> <artifactId>org.eclip ...
- 【Hadoop学习之四】HDFS HA搭建(QJM)
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 hadoop-3.1.1 由于NameNode对于整个HDF ...
- Hive 的排名和跨行 窗口函数及其使用
一.排序&去重分析 row_number() over(partititon by col1 order by col2) as rn 也可以用 row_number() over(distr ...