当前位置: 首页 > news >正文

短信技术的几个基本概念

1. 短信的有效期(validity period)

如果接收手机离线,一条短信会暂时存储在短信服务中心.也可以给短信设置一个时间期限,就是短信过多久才会从短信 服务中心删除,这样一来即使是接收手机转成在线短信也不会被发送给接收手机.这个时间期限就叫做有效期.
举个例子来说明如何使用有效期.比如 现在发现电视播放的某个节目非常的有意思,你的朋友没准也想观看一下.因此,你发了一条短信把电视节目告诉你朋友.假设这个节目会持续1个小时.如果他的手机在电视节目结束之后才可用,那么你的短信息对你的朋友就没有用处.在这种情况下,你也许想给你的朋友发送一个有效期是一个小时的短信. 如果他的手机在有效期结束前不可用,无线运营商不会把短信发送给你的朋友.
手机应该有一个菜单选项让用户可以设置有效期.设置了以后,手机会在外发信息中自动包含有效期.

2. 信息状态报告(Sent status report)

有时你也许想要知道某个短信是否成功的到达了接收手机.想要获得这个信息,需要在短信中设置一个标识位来告诉短信服务中心你想要一个关于这条短信送达的状态报告.状态报告会以一条短信的形式发送给你.
手机应该有一个菜单选项用来设置状态报告特性是否打开.打开了状态报告后,手机会在外发的短信中自动的设置相应的标识位.在大多数的手机和GSM/GRPRS调制解调器上,状态报告特性默认是关闭的.
sms technology figure

3. 信息提交报告(submission report)

一条短信离开手机后就到了短信服务中心。当到达短信服务中心后,短信服务中心会给手机返回一个信息提交报告以通知是否有错误或失败(比如,短信息格式不正确,短信服务中心繁忙等).如果没有任何错误或失败,短信服务中心会给手机发回一个正面的提交报告.否则会给手机发回一个反面的提交报告.然后手机可以通知用户信息提交失败了以及失败的原因.
如果经过一段时间后手机没有收到提交报告,就可以认定信息提交报告已经丢失.手机也可以重新发送短信给服务中心.新短信中可以设置标识位来告诉服务中心这条信息已经发送过.如果先前的短信已经提交成功,那么服务中心会忽略掉这条新短信,然后把提交报告发回给手机.这种机制可以防止 给接收者多次发送同一条信息.
有时并不会使用消息提交报告机制而是在更底一层用消息提交确认来实现.

4. 消息送达报告(delivery report)

当收到一条短信后,接收手机会给服务中心发回一个消息送达报告来告知服务中心是否有错误和失败(例如因为:不支持的短信格式,存储空间已满等).这个过程对手机用户是透明的(也就是说用户无需关心或做什么设置,程序会自动处理).如果没有错误或失败,接收手机会给服务中心发回一个积极的送达报告.否则就会发送一个消极的送达报告.
如果发送者先前请求过状态报告,那么服务中心当收到接收者发回来的送达报告时就会给发送者发送状态报告.
如果经过一段时间后服务中心没有收到送达报告,会认定送达报告已经丢失.服务中心会给接收者重新发送短信.
有时并不使用消息送达报告机制,而是在更底一层使用消息送达确认.

原文: Basic Concepts of SMS Technology

补充:

信息的提交报告和送达报告对用户是透明的,也就是说用户无需关心,手机会自动处理,这是协议中必须要做的,因此也不会给出选项来打开或关闭.
有些手机会把送达报告当作选项(use delivery report),这其实是状态报告(sent status report),当打开了以后会收到信息发送的状态报告,而不是上面提及的送达报告.有些手机也称为短信回执,但都指的是状态报告.
另外需要指出的是,对于某些运营商发送状态报告(或者短信回执)是需要额外付费开通业务的.

相关文章:

  • log4j:WARN No appenders could be found for logger
  • gbs使用手册之配置文件
  • gbs使用手册之gbs build
  • gbs使用手册之gbs chroot
  • 如何用doxygen生成文档
  • FreeMarker教程
  • Timer、TimerTask实现定时业务处理
  • windows宿主机与linux目标机联网通信
  • 腾讯面试题(持续更新ing)
  • 几种排序算法与运用实例
  • 计算文件夹下.h和.cpp文件的总行数
  • 为什么仍还用C编码?
  • 线程同步
  • AndEngine安全移除精灵的方式
  • 可评审代码之道
  • 2017前端实习生面试总结
  • CentOS7简单部署NFS
  • input的行数自动增减
  • Java 23种设计模式 之单例模式 7种实现方式
  • JavaScript新鲜事·第5期
  • js对象的深浅拷贝
  • js写一个简单的选项卡
  • opencv python Meanshift 和 Camshift
  • python 装饰器(一)
  • Redux系列x:源码分析
  • Shell编程
  • text-decoration与color属性
  • Vim Clutch | 面向脚踏板编程……
  • Vue ES6 Jade Scss Webpack Gulp
  • vuex 学习笔记 01
  • 百度地图API标注+时间轴组件
  • 服务器从安装到部署全过程(二)
  • 复杂数据处理
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 简析gRPC client 连接管理
  • 前端之Sass/Scss实战笔记
  • 悄悄地说一个bug
  • 微信公众号开发小记——5.python微信红包
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 学习笔记:对象,原型和继承(1)
  • 再次简单明了总结flex布局,一看就懂...
  • Android开发者必备:推荐一款助力开发的开源APP
  • 湖北分布式智能数据采集方法有哪些?
  • #include到底该写在哪
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • $refs 、$nextTic、动态组件、name的使用
  • (1) caustics\
  • (1)Android开发优化---------UI优化
  • (k8s中)docker netty OOM问题记录
  • (六)软件测试分工
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (一)Linux+Windows下安装ffmpeg
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)