连接到Exchange的移动客户端是怎么接收邮件的呢?

  • Exchange ActiveSync。

Exchange ActiveSync是 Microsoft Exchange 的同步协议,经过优化,可与高延迟和低带宽网络协同工作。 该协议基于 HTTP 和 XML,移动电话可以借助它访问运行Exchange 的服务器上的组织信息。 Exchange ActiveSync使移动电话用户能够访问其电子邮件、日历、联系人和任务,并在脱机工作时继续访问此信息。

借助Exchange ActiveSync,管理员可以远程擦除移动端设备数据。如果移动设备丢失、被盗或遭到入侵,则可以使用Outlook Web App从Exchange Server计算机或任何 Web 浏览器发出远程擦除命令。 该命令将从移动设备上清除所有数据,防止数据泄漏。

那数据同步是怎么实现的呢? 直推技术。

  • Direct Push,即直接推送。

是Exchange Server内置的一项功能。 直接推送技术通过手机网络或无线网络连接使移动设备保持最新状态。 当有新内容可以准备同步时,它将通知移动设备。若要使直接推送正常工作,移动设备必须能够支持直接推送。 当前的安卓和IOS基本都支持该技术。

直推技术概述

支持直接推送的移动设备向Exchange服务器发出长期的HTTPS请求。Exchange服务器监视用户邮箱上的活动,如果有任何更改(例如新邮件或更改的电子邮件、日历、联系人或任务项),则向移动设备发送响应。 如果在HTTPS请求的生存期内发生更改,则Exchange服务器会对设备发出响应,指出已发生更改,并且设备应启动与Exchange服务器的同步。 然后,设备会向服务器发同步请求。 同步完成后,将生成一个新的长期HTTPS请求,并重复以上过程。 借此保证将电子邮件、日历、联系人和任务项快速传递到移动设备,并且始终与Exchange服务器同步。

同步过程

  • 移动客户端发起https请求到Exchange,请求的术语称为"PING"。 PING请求告诉Exchange服务器,在接下来的15m内,如果配置同步的邮箱中任何项有更新,请及时通知我。 否则的话,请返回http 200的消息代码。此时移动客户端会进入等待状态。 【15m被称为心跳间隔】

  • 如果15m内,邮箱没有任何更新,服务器则返回http 200。 移动客户端收到消息后,恢复活动状态,也称为唤醒。 唤醒后,再发起一个长期的HTTPS请求。

  • 如果15m内,邮箱中有新的邮件或者日历、或者任何其他的更新,服务器则会立即通知移动客户端有变化,同时告知变化的项目所在的文件夹。 这时,移动客户端会发起同步请求,请求同步有变化的文件夹。同步完成之后,再发球一个长期的HTTPS请求。

特殊场景

直推技术有个网络依赖条件,就是网络需要支持长期连接。 比如有些出口防护墙可能不支持或者禁止长期连接。

那这种情况下,直推技术是怎么工作的呢?【比如防火墙设置了13m的限制,13m后超时】

  • 直推技术发起PING请求,告知服务器:在接下来的15m内,如果配置同步的邮箱中任何项有更新,请及时通知我。 否则的话,请返回http 200的消息代码。移动客户端进入等待状态。

  • 15分钟后,移动客户端既没收服务器发来的更新通知,也没收到http 200的代码(因为连接在13m后已经超时)。客户端进入唤醒状态,断定因为网络原因超时了。 于是客户端重新发起一个PING请求,但是这次将默认的15m的心跳间隔减半,改成8m。

  • 8m后,如果客户端收到了服务器发来的更新通知或http 200消息,则会再次发起一个PING请求,这次将心跳间隔变成12m(否则会继续减半,为4m)。

  • 12m之内,客户端收到了服务器发来的更新通知或http 200消息,再次发起一个心跳间隔为16m的PING请求。

  • 16m后,客户端没有收到服务器发来的任何消息。 于是客户端断定,网络不能支持16m的长连接,12m是网路支持的最大时长。 因为在递增心跳间隔的过程中失败了。

  • 之后,客户端就会发起心跳间隔为12m的PING请求。

总而言之:移动设备总是尝试使用网络能支持的最长心跳间隔。因为这样可以延长移动设备的电池续航时间,并减少通过网络传输的数据量。