作为移动通信软件工程师您应该了解最基本的移动通信协议,更严格的来讲不是了解,而应该是精通,面临3G时代的到来,国家需要复合型移动通信人才,对于开发人员也提出了新的更高的标准要求:即拥有传统软件的开发经验又掌握丰富的移动通信技术。毕竟移动通信软件工程师主要编程方向是通信子网和资源子网的接口,所有的编程思路也都基于通信协议之上。如果不懂协议那么我们在实现这些编程思路的时候就会很迷茫,或者说思路很不清晰,对于某种通信状态的流程不了解,大概框架不了解也就做不出优秀的软件。譬如如果您不知道一条短信是如何实现发送和接受的整个过程,那么在开发相应的应用软件时也就会一头雾水,在团队中只能跟着别人的思路走。有人可能会说:“我为什么要知道通信协议?我又不做那方面的开发!”。注意,我这里只是针对于想在移动通信领域搞软件开发的人员来说的。毕竟社会上传统的java工程师很多,如果您是其中一位,能够体现您比别人有优势的地方未必就是您多知道多态分为两种:一种是方法的重载;一种是和继承有关的多态。扎实的java基础固然是必须,但是对于个人整体能力的提升和对于自己目标的实现,单一的java工程师还是显得有些劣势所在。
我个人认为作为移动通信软件开发人员应该掌握如下有关移动通信协议的内容:(备注:资料完全是有笔者亲自整理,不足之处请读者朋友指正)
作为移动通信软件工程师应该熟悉基本的移动通信协议,在这里我就说高级移动通信协议了,那个涉及到更复杂的内容。
整个框架:(如果读者朋友感觉下边内容过于专业或者枯燥可以直接阅读文章的最后部分,本人总结了关于OSI部分的精华)
一、TCP/IP:
(1)掌握协议的构成成份。
(2)理解OSI模型、TCP/IP模型。
(3)掌握以太网的接入方法,以太网和802.3帧的区别是什么?了解无线以太网无线以太帧的构成。
(4)第二层主要设备和工作原理。
(5)掌握IP层主要必须协议、IP编址、理解协议配置步骤。
(6)理解传输和应用层主要协议功能。
二、七号信令
(1)掌握三种信令单元的功能。
(2)信令网组成。
(3)信令点编码。
(4)移动网和信令网的关系。
三、移动网
(1)GSM网络结构、信道、帧。
(2)GSM互联其他网络。
(3)GSM网络组成设备的功能。
(4)GSM的编号。
(5)MSC局数据步骤。
(6)GPRS网络结构。
(7)GPRS协议模型。
(8)GPRS路由管理。
(9)EDGE组网。(在欧洲使用,我们国家没有,所以只是作为了解内容)
第一、网络技术的基础(向移动通信软件开发人员转型的入门阶段) 要学习通信协议,我们先从网络技术基础开始学起,这也是传统软件开发人员向移动通信软件开发人员过渡的入门知识,掌握这几个知识点后,你也就基本对计算机通信有个概念了。
在本阶段应该掌握以下知识点:
(1)网络协议的概念
(2)传输模式的种类和它们的区别
(3)能够描述出OSI(开放系统互连参考模型)的七层
(4)了解调频、调幅、调相的原理和区别
(5)知道正交调幅的概念和解决的问题
(6)知道脉码调制和脉冲幅度调制的区别(模数转换的两种方式)
(7)复用的概念及其主要的三种复用技术是什么
(8)FDM(频分复用)如何将多个信号组合为一个,又如何分开?FDM和WDM的相似之处和不同之处
(9)TDM(时分复用)的两种类型。TDM如何将多个信号合并成一个,又如何分开
(10)CDM(码分复用)的原理
(11)单比特差错和突发差错的区别
(12)已知数据比特的位数,掌握计算纠正一位差错所需要的冗余比特数的公式
(13)海明码的先进之处和引入的目的。
详细介绍:
一、网络协议的基本概念
网络协议是在网络上的各台计算机之间的一种语言,它是通信双方为了实现通信所进行的约定或所做的对话规则,不同的计算机之间必须使用相同的网络协议才能进行通信(为了避免重复工作,每个协议应该处理没有被其他协议处理过的通信问题,并且协议之间可以共享数据和信息)internet上的计算机通常使用的是TCP(传输控制协议)/IP(互联网协议---主要用于负责IP寻址、路由选择和IP数据包的分割和组装)。
协议包括三部分:
(1)语法:确定通信双方“如何讲“,定义了数据格式、编码和信号电平等
(2)语义:确定“讲什么“,定义了用于协调同步和差错处理等信息
(3)同步:确定“讲话的次序“,定义了速度匹配和排序等
二、传输模式的种类和区别(由于传输模式的概念比较简单,本文已省略)
(一)基本概念:
(1)传输:是信源到信宿之间的过程
(2)信道:是指通信系统中传输信息的媒体或通道
(3)传输速率:是衡量传输的一个标准,单位是Mpbs(兆比特/秒),它与我们通常所说的“带宽”是一个意思.
(4)带宽:有两层意思:
从电子电路角度出发,指电子电路中存在一个固有通频带,指的是电路可以保持稳定工作的频率范围(包括显示器带宽、通信/网络中的带宽)。
第二层意思指的就是传输率(如内存带宽、总线带宽、网络带宽等)。
(二)模式分类:
(1)单工:如键盘和传统的监视器
(2)半双工:对讲机和BP机等民用无线电设备都是半双工(无论哪一方进行传输,都使用信道的整个带宽)
(3)全双工:如电话网络。原理解释:两个方向的信号共享链路带宽,共享有两种方式进行:一种是链路具有两条物理上独立的传输路径,一条发送,一条接收;一种是为传输两个方向的信号而将信道一分为二。
三、画出OSI(开放系统互连参考模型)。
(一)物理层:包含那些在物理介质上传输比特流所必需的功能,它定义了接口与传输介质的机械和电气特性,也定义了物理设备和接口为了传输而必须执行的过程与功能,还有传输介质的类型。
(二)数据链路层:将物理层中对数据不做任何改动的传输通道变成可靠的链路,并负责节点到节点的传输。这样可以将物理层的数据无错的传给上层(网络层)。
具体职责:
(1)成帧(将比特流划分成帧的易处理数据单元)
(2)物理地址(也叫硬件地址)
(3)流量控制
(4)差错控制
(5)访问控制
(三)网络层:负责将包从源地址传递到目的地址,可能会通过多个网络(或链路)。
网络层的具体任务:
(1)逻辑寻址
(2)路由
(四)传输层:负责整个报文从源端到目的端(端到端)的传输过程。
建立一条连接包含三个步骤:建立连接、数据传输和连接释放。
传输层的具体任务:
(1)服务点寻址
(2)拆分和组装
(3)连接控制
(4)流量控制
(5)差错控制
(五)会话层:前面三层提供的服务对某些进程是不需要的。会话层是网络的对话控制器,它建立和维护以及同步通信系统交互操作。
具体任务:
(1)会话控制
(2)同步
(六)表示层:是关于两个系统之间交互信息的语义和语法。
具体职责:
(1)翻译
(2)加密/解密(
实际中加密在这层现在并没有实现,都是在高层应用软件来解决的)
(3)压缩
(七)应用层:使得用户(无论是人还是软件)可以访问网络。它为用户提供了接口和服务支持,如电子邮件、远程文件访问和传输、共享数据库管理以及其他分布式信息服务。(注意:在本层中不增加任何头部和尾部信息)。
应用层的具体任务如下:
(1)网络虚拟终端
(2)文件传输、访问和管理(FTAM)
(3)邮件服务
(4)目录服务
四、了解调频、调幅和调相的原理和区别?
(1)调幅(AM):对载波信号进行调制,使振幅根据调制信号的改变而 变化(调制信号变成了载波信号的包络线)。调幅信号的带宽BWt等于调制信号带宽BWm的两倍,并且覆盖以载波频率为中心的频率范围。
(2)调频(FM):载波信号的频率随着调制信号电压(振幅)的改变而调整。一个调频信号的带宽等于调制信号带宽的10倍,即BWt=10*BWm,而且和调幅带宽一样以载波频率为中心。
(3)调相(PM):载波信号的相位随调制信号的电压变化而调整,当信息信号的振幅变化时,载波信号和相位随之发生相应的改变。
五、什么是正交调幅
QAM (Quadrature Amplitude Modulation) 正交调幅。
一种调制数字信号的编码方法,它兼用振幅编码和相位编码。该方法既可以用于下行,也可以用于上行,不但可以增加合法信号的数目,也能让信号之间保持较大的差异,它为每个比特组合分配一个给定振幅和相移的信号。该方法的优点是能充分利用带宽和抗噪声能力强。(备注说明:(1)波特率:模拟信号的速率,等于每秒钟传输的数据位数,有压缩和没压缩之分,跟阀门电路有关.(2)比特率:数字信号的名词,模拟信号经过采样量化后,变为数字信号,那在数字信号要如何表示经过数字化的视频和音频呢,就要用到比特率来表示,用的比特位越多(比特就是二进制里面最少的单位),比特率就越大,视频音频质量就越好.
)
六、知道脉码调制和脉冲幅度调制的区别(此为模数转换的两种方式)
(1)脉冲幅度调制(PAM)
按照一定的时间间隔对模拟信号进行采样,接着产生一个振幅等于采样信号的脉冲。
(2)脉码调制(PCM)
由PAM产生的信号看起来似乎是数字式的,但由于脉冲的振幅和采样信号一样,所以其取值是随意的。使脉冲真正数字化的一种方法为采样信号分配一个预先确定的振幅,这种处理方法称为脉码调制(pulse code modulation,PCM)
PCM有几种普通的应用:
其一是长途电话线上的语音信号的数字化。按照国际标准,每秒采样8000次,每个采样8个比特,依照尼奎斯特定理这个频率是电话机所能够处理的最大语音频率的两倍多一点,它要求每秒8*8000,即大约64kbps的比特速率;
其二是光盘(CD)技术。CD上的音乐是应用PCM编码成数字格式的。
七、复用的概念及其三种主要的复用技术是什么
(一)复用:当连接两台设备的介质的传输能力比设备间的传输要求更高时,该链路就可以被共享。复用就是允许同时通过一条数据链路传输多个信号的一种技术。
(二)主要的复用技术:
(1)频分复用FDM:
所有用户在同样的时间占用不同的带宽资源。多路信号调制在不同载频上进行复用。是一种模拟技术,在链路带宽大于要传输的所有信号带宽之和时采用。如有线电视、无线电广播、光纤的波分复用、频分多址的TACS制式模拟移动通信系统。
(2)时分复用TDM(是在物理层实现的):
所有用户在不同的时间占用同样的频带宽度。多路信号占用不同时隙进行复用。是一个数字化过程,当传输介质的数据速率容量大于发送和接收设备所需要的数据速率时就可以采用它。如电话网采用 这种技术。
包括同步时分复用(电路交换)和异步时分复用(包交换)。
在这里我多说几句:中国采用欧洲体制,以E1为一次群(2.048M=32*64k);
而美国、日本等国家采用北美体制,以T1为一次群(24*64k)。
具体原理:3.9ns为一个话路,共32个话路,发送方逆时针旋转的同时接收方顺时针旋转,转一圈就是一帧,它的缺点是浪费资源。
(3)码分复用CDM:
多路信息调制在不同的码型上进行复用。(例如码分多址CDMA数字移动通信技术,cdma的多址技术的原理是采用一组正交或准正交的伪随机序列通过相关处理实现多用户共享频率资源和时间资源)
八、FDM如何将多个信号组合为一个?又如何将一个FDM信号分离成原来的多个?FDM和WDM有何相似之处和不同
(1)复用过程:FDM是一个模拟过程,把频率范围相似的信号采用调幅或调频技术将信号调制到独立载波频率上(f1、f2、f3),然后将调制后的信号合成为 一个复合信号并通过具有足够带宽容量的介质链路发送出去。载波频率之间的频率差必须 能够容纳调制信号的带宽。这些带宽范围就是不同信号传输的 信道。信号之间必须由狭长的未用带宽(警戒频带)以防止信号交叉。另外,载波频率必须不会影响原来的数据频率。
(2)多路分解:在多路分解器中采用了一系列过滤器来将复合信号分解成组成它的各个信号。每个信号随后被送往解调器,解调器将他们与载波信号分离并转发给等待的接收方。
(3)波分复用WDM是频分的一个特例,用在光纤通信中,除了复用和多路分解包括通过光纤信道传输光信号之外wdm在概念上与频分复用相同。不同之处是组合的频率很高。
九、时分复用的两种类型,TDM如何将多个信号合并成一个,又如何分开?考虑TDM实现的两种方法。
多道传输流通过细分链路和交织过程来使用单条链路,采用的链路与FDM中一样,但是这里显示的分割是时间上的并不是频率上的,信号按顺序占据链路。
(一)同步时分复用:同步所包含的意义与在远程通信等其他领域中的含义不同,这里同步是指复用器在所有时间为每个设备都分配完全一样的时间片,不管该设备有没有数据要传输。
(1)帧。一帧由时间片的一个完整循环组成,包括分配给每个发送设备的 一个或者多个时间片。
(2)交织。同步时分复用以恒定速率和固定顺序在设备间轮转的过程乘坐交织。
(3)帧定位比特。因为在同步时分复用系统中各帧内时间片的顺序不变,因而在每帧头上只需要很少的额外开销。
(4)同步时分复用实例
(5)比特填充
(二)异步时分复用。
同步时分复用不能保证使用链路的全部容量。实际上很有可能在一个给定时刻只使用了一部分时间片。因为时间片是预分配的和固定的。每当有一台设备不发送时,对应的时间片就会是空的并且浪费了通路带宽。
异步时分复用(也叫统计复用)就是为避免这种浪费而设计的,这里的异步是可变的、不固定的。异步时分复用允许将许多较低速率的输入线路复用到一条较高速率的线路上,但是与同步时分复用 不同的是,在异步中所有输入线路之和可能比通路容量大。
十、单比特差错和突发差错的区别
(1)单比特差错是指在给定数据单元(例如一个字节、字符、数据单元或数据包)只有一个比特被从0变为1或是从1变为0,即在数据单元中只有一个比特发生了改变。
(2)突发差错指数据单元中的两个或者连个以上连续的比特从0变为1或是从1变为0.但它的长度是由第一各改变的位置到最后一个改变的位置来确定,其中间某些比特可以不改变
突发差错大多发生在串行传输时。
十一、已知数据比特的位数,计算纠正一位差错所需要的冗余比特数的公式是什么?
2的r次方大于等于m+r+1
(说明:m为给定数量的数据位数即要传输的数据单元的原始长度;r为冗余位的数量,它的值可以通过插入m)
十二、引入海明码的目的和作用是什么
海明码是一种可以纠正一位差错的编码。它可以利用单比特差错状态所需要的比特数来发现出现的差错状态,它可以在任意长度的数据单元上应用。海明码的纠错在物理层。
这个阶段的内容大概就是这么多。下面我来总结一下这个阶段的一些东西或者一些需要读者必须掌握的东西,当然这个掌握是相对而言的。其实,涉及到物理层的东西是固化的东西,我们在实际工作中根本就用不到,但是作为(移动通信软件工程师)通信入门的基础还是必须得了解的,我们可能做不到精通但是大概应该听过这些东西。
首先,我说一下OSI(开放系统互连参考模型)七层。我们知道这个模型是由国际标准化组织(ISO)制定的一个覆盖网络通信各个方面的标准,包括以后要讲到的TCP/IP模型都是这个模型(OSI)某层具体实现的一个版本。
建立七层模型的主要目的是为解决异种网络互连时所遇到的兼容性问题。它的最大优点是将服务、接口和协议这三个概念明确地区分开来:服务说明某一层为上一层提供一些什么功能,接口说明上一层如何使用下层的服务,而协议涉及如何实现本层的服务;这样各层之间具有很强的独立性,互连网络中各实体采用什么样的协议是没有限制的,只要向上提供相同的服务并且不改变相邻层的接口就可以了。网络七层的划分也是为了使网络的不同功能模块(不同层次)分担起不同的职责。
从应用层开始说起,它为应用程序提供接口,应用程序调用这个接口以实现对应用程序的一个初始化。接下来是表示层涉及到编码(比如同样的文件在windows系统和linux系统下编码肯定会不一样)、加密和压缩,要加入表示层首部H6。再往下是会话层,跟踪会话、管理传输模式(比如是全双工还是半双工等等),要加入会话层首部H5,再下边是传输层,这是应用程序的终点传输数据片(切片工作是由网络层来完成的)每片加上首部H4,加源端口和目的端口,这个层已经有了识别应用程序的能力,以上四层在本机实现(有人观点会不同:把传输层独立出来将上三层和下三层连接起来并保证下层是以上层能够使用的型式传输的)
低三层再来说一下,网络层包括主机域和网络域,它解决的是网间的寻址(IP地址),再往下是数据链路层,解决寻找硬件地址,即网段中具体的某一台机子,再下边是物理层,注意它不是实际的传输介质,但是它定义了传输介质的接口和机械与电气特性(规程就是流程的意思;电气特性就是电平信号的一些定义;机械特性就是比如传输介质的尺寸的配合等等,格式化的数据经过这层后它被转换成电磁信号,并在物理链路上传输)。
说到物理层我们不得不说两种设备:DTE和DCE:前者是数据终端设备,是具有数据处理、发送和接收能力的一种设备(比如路由器,可以想象成计算机或者终端);后者是数据通信设备,它在DTE和传输线路之间提供信号变换和编码的功能。注意:DTE和DCE之间是由物理层来定义的(这里用到典型的物理规范RS232,可以说是串行通信的一种协议EIA-232/V.24),标准的传输距离是100米,这里进行简单的信号定义即可通信如只是对:信号地、保护、发送数据和接收数据的定义。
概括:在发送端每一层都在从直接上层传来的报文中加上自己的信息并将整个包传到它的直接下层,这些信息以报文头或尾部(附加在数据包的头或尾的控制信息)的型式加入报文,一般来说报文头加在第6、5、4、3、2层,尾部通常只加在第二层。在接收端报文被一层一层地打开,每一层接收并提取对他有意义的数据。
我们说两台计算机之间能不能通信呢?这句话严格来说是错误的,应该是计算机之间的应用程序之间的通信。那么如何实现两台计算机应用程序之间的通信呢?第一、通过网络层寻找网络地址(逻辑地址即我们通常所说的IP地址)。第二、通过数据链路层来识别是那个网络的具体哪一台机子(即通过这个层的ARP和RARP协议将IP地址映射为硬件地址)。第三、通过应用层的端口号来识别是哪个应用程序(说明:当然不是只有端口才能识别应用程序)。
如果链路是理想的传输信道,所传送的任何数据既不会出差错也不会丢失,那么数据链路层协议是根本不需要的。但是,这可能吗?不可能。所以我们需要数据链路层协议。
如果不管发送方以多快的速率发送数据,接收方总是来得及收下,并及时上交主机,那么数据链路层协议也是不需要的。但是,这可能吗?不可能。所以我们还是需要数据链路层协议。
这就是说,传输数据的信道是不可靠的(即不能保证所传的数据不产生差错),并且还需要对数据的发送端进行流量控制。
看看最简单的停止等待协议。
收方在收到一个正确的数据帧后,向发方发送一个确认帧ACK(表示“我收到啦”)。当发方收到确认帧后才能发送一个新的数据帧。这样就实现了收方对发方的流量控制。假如数据帧在传输过程中出现了差错。由于通常都在数据帧中加上了循环冗余校验CRC,所以收方很容易校验出收到的数据帧是否有差错。当发现差错时,收方就向发方发送一个否认帧NAK(表示“嘿,哥们儿,你搞错了”),以表示发方应当重发出错的那个数据帧。
有时,链路上的干扰很严重,或由于其他一些原因,收方收不到发方发来的数据帧。这种情况称为帧丢失。发生帧丢失时,收方当然不会向发方发送任何应答帧。如果发方要等收到收方的应答信息后再发送下一个数据帧,那么就将永远等下去。要解决这个问题,可在收方发送完一个数据帧时,就启动一个超时定时器。若到了超时定时器所设置的重发时间仍收不到收方的任何应答帧,则发方就重传前面所发送的这一数据帧。
然而现在问题并没有完全解决。当出现数据帧丢失时,超时重发的确是一个好办法。但是若丢失的是应答帧,则超时重发将使收方收到两个同样的数据帧。由于收方现在无法识别重复的数据帧,因而在收方收到的数据中出现了另一种差错,称为重复帧。要解决这个问题,必须使每一个数据帧带上不同的发送序号。若收方收到序号相同的数据帧,就表明出现了重复帧。这时应当丢弃这重复帧。但应注意,此时收方还必须向发方发送一个确认帧,因为收方已经知道发方还没有收到上一次发过去的确认帧。
我们知道,任何一个编号系统的序号所占用的比特数一定是有限的。因此,经过一段时间,发送序号就会重复。序号占用的比特数越少,数据传输的额外开销就越少。对于停等协议,由于每发送一个数据帧就停止等待,因此用一个比特来编号就够了。就是说序号轮流使用0和1。
由于发方对出错的数据帧进行重复是自动进行的,所以这种差错控制体制常简称为ARQ(Automatic Repeat reQuest),直译是自动重复请求,意思是自动请求重发。
停止等待协议ARQ比较简单,但信道利用率不高,信道远远没有被数据比特填满。为了克服这一缺点,就产生了另外两种协议,即连续ARQ和选择重传ARQ。
连续ARQ的要点就是在发送完一个数据帧后,不是停下来等待应答帧,而是可以连续再发送若干个数据帧。如果这时收到了收方发来的确认帧,那么还可以接着发送数据帧。由于减少了等待时间,整个通信的吞吐量就提高了。但是,收方只按序接收数据帧,如果收到有差错的某帧之后接着又收到了正确的几个数据帧,都必须将它们全部丢弃;而发方在重传时,又必须把原来已正确传送过的数据帧进行重传(仅因为这些数据帧之前有一个数据帧出了错)。这种做法又使传送效率降低。由此可见,若传输信道的传输质量很差因而误码率较大时,连续ARQ不一定优于停止等待协议。
为了进一步提高信道的利用率,可设法只重传出现差错的数据帧或者是定时器超时的数据帧。但这时必须加大收方的缓冲区,以便先收下发送序号不连续但仍处在缓冲区中的那些数据帧。等到所缺序号的数据帧收到后再一并送交主机。这就是选择重传ARQ协议。使用选择重传ARQ协议可以避免重复传送那些本来已经正确到达收方的数据帧。但我们付出的代价是在接收端要设置具有相当容量的缓冲空间,这在许多情况下是不够经济的。正因为如此,选择重传ARQ协议在目前就远没有连续ARQ协议使用得那么广泛。
本篇是续上篇未结束部分--这些都是OSI七层的精华部分(请读者牢记):
一、OSI七层小结(容易记忆)
物理层:OSI模型的最底层。它提出了网络的物理特性,比如连接的电缆类型。这里是二进制值0和1的世界,也就是数据以信号的电特性(高低电平)来表示。 涉及在物理信道上传输原始比特,处理与物理传输介质有关的机械的和电器的过程的接口。
数据链路层:指明将要发送的每个数据包的大小、每个数据包的地址以使它们送到指定的接收者那里。也能提供基本的错误识别和校正机制,以确保发送的数据和接收的数据一样。分为介质访问控制(MAC)和逻辑链路控制(LLC)两个子层。MAC子层解决广播型网络中多用户竞争信道使用权的问题(因为它使用的是CSMA/CD协议)。LLC的主要任务是将有噪声的物理信道变成无传输差错的通信信道,提供数据成帧、差错控制、流量控制和链路控制等功能。
网络层:负责将数据从物理连接的一端传到另一端,即所谓点到点通信。主要功能是寻径,以及与之相关的流量控制和拥塞控制等。就是告诉数据包从一个网络到另一个网络怎样走(术语叫“路由”)。
传输层:通过一个唯一的地址指明计算机网络上的每个节点(可能就是你的计算机),并管理节点之间的连接。同时将大的信息分成小块信息(也就是所谓的切片),并在接收节点将信息重新组合起来。主要目的在于弥补网络层服务与用户需求之间的差距。传输层通过向上提供一个标准、通用的界面,使上层与通信子网的细节相隔离。传输层的主要任务就是提供进程间通信机制和保证数据传输的可靠性。
会话层:在网络节点之间建立“会话”(你理解为谈判前的准备工作也行)。主要功能是信息转换,包括信息压缩、加密、与标准格式的转换(以及上述各操作的逆操作)等等。
表示层:负责把网络上传输的数据从一种陈述类型转换到另一种类型,也能在数据传输前将其打乱,并在接收端将其恢复,这里使用了复杂的技术,甚至连福尔摩斯也难以将其弄明白。主要功能是信息转换,包括信息压缩、加密、与标准格式的转换(以及上述各操作的逆操作)等等。
应用层:OSI的最高层,提供最常用且通用的应用程序。讨论应用程序用于同网络通信所需要的技术。在这里,我们可以看到很多熟面孔,比如HTTP(超文本传输协议),FTP(文件传输协议),WAP(无线应用协议),SMTP(简单邮件协议)等等。
二、物理层的典型的协议规范
RS -232C标准(协议)的全称是EIA-RS-232C标准,其中EIA(Electronic Industry Association)代表美国电子工业协会,RS(ecommeded standard)代表推荐标准,232是标识号,C代表RS232的最新一次修改(1969),在这之前,有RS232B、RS232A。。它规定连接电缆和机械、电气特性、信号功能及传送过程。常用物理标准还有RS-232-C、RS-422-A、RS-423A、RS-485。这里只介绍RS-232-C(简称232,RS232)。例如,目前在IBM PC机上的COM1、COM2接口,就是RS-232C接口。物理层规范都描述了哪几类规定呢?机械特性:在RS-232C中,规定采用的连接器接口有25根针,接口形状为D形接口。电气特性:RS-232C规定,对数据信号,以+12V或+8V表示"0",-12V或-8V表示"1",对控制信号,"0"表示"开","1"表示"断 ",数据速率0-20Kbps(比特每秒),连接电缆传输距离最大为15M。功能特性:如RS-232-C的第二根针是用于发送数据的,第三根针是用于接收数据的,第四根针表示请求发送,第五根针表示允许发送。规程特性。例如,RS-232-C的一段规程为:第四根针置位->请求发送第五根针置位,允许发送->数据通过第二根针发送
先来介绍两个很重要的概念:
DTE (Data Terminal Equipment) 是数据终端设备,是具有一定的数据处理能力和发送、接收数据能力的设备。
DCE (DataCircuit-terminating Equipment)是数据电路端接设备,它在 DTE 和传输线路之间提供信号变换和编码的功能,并且负责建立、保持和释放数据链路的连接。
一.电气特性
EIA-RS-232C对电器特性、逻辑电平和各种信号线功能都作了规定。
在TxD和RxD上:逻辑1(MARK)=-3V~-15V
逻辑0(SPACE)=+3~+15V
在RTS、CTS、DSR、DTR和DCD等控制线上:
信号有效(接通,ON状态,正电压)=+3V~+15V(高电平)
信号无效(断开,OFF状态,负电压)=-3V~-15V(低电平)
电缆长度:在通信速率低于20kb/s时,RS-232C所直接连接的最大物理距离为15m(50英尺)。
最大直接传输距离说明:RS -232C标准规定,若不使用MODEM,在码元畸变小于4%的情况下,DTE和DCE之间最大传输距离为15m(50英尺)。(注意这里的15米是指DTE和DCE之间,而有的地方说是100米那是指从一个DTE到另一个DTE来说的,中间当然有modem,实际上现在可以达到600米,当然这不是一个公开的数字,是我认识的人中有通过这种方法实现了600米的通信距离。)可见这个最大的距离是在码元畸变小于4%的前提下给出的。为了保证码元畸变小于4%的要求,接口标准在电气特性中规定,驱动器的负载电容应小于2500pF。
说到这里我不得不提232芯片,实际上它就是为了克服在长距离通信的电压的衰减而实现一个电平转换,不然串口无法识别电压,不能识别信号。
二、RS-232C的接口信号
(一)RS232常用的接口信号有:
(1)数据装备准备好(DSR:data set ready)
(2)数据终端准备好(DTR: data terminal ready
(3)请求发送(RTS:request to sent)
(4)允许发送(CTS:clear to sent)
(5)接收线信号检出(RLSD:received line detection)
也叫数据载波检出线(DCD:data carrier detection)
(6)振铃指示(RI:ringing)
(7)发送数据(TxD:transmitted data)
(8)接收数据(RxD:received data)
(9)信号地(SG)和保护地信号线(PG)(备注:无方向)
RS-232C规标准接口有25条线,4条数据线、11条控制线、3条定时线、7条备用和未定义线,常用的只有9根,它们是:
(1)联络控制信号线:
数据装置准备好(Data set ready-DSR)——有效时(ON)状态,表明MODEM处于可以使用的状态。
数据终端准备好(Data set ready-DTR)——有效时(ON)状态,表明数据终端可以使用。
这两个信号有时连到电源上,一上电就立即有效。这两个设备状态信号有效,只表示设备本身可用,并不说明通信链路可以开始进行通信了,能否开始进行通信要由下面的控制信号决定。
请求发送(Request to send-RTS)——用来表示DTE请求DCE发送数据,即当终端要发送数据时,使该信号有效(ON状态),向MODEM请求发送。它用来控制MODEM是否要进入发送状态。
允许发送(Clear to send-CTS)——用来表示DCE准备好接收DTE发来的数据,是对请求发送信号RTS的响应信号。当MODEM已准备好接收终端传来的数据,并向前发送时,使该信号有效,通知终端开始沿发送数据线TxD发送数据。
这对RTS/CTS请求应答联络信号是用于半双工MODEM系统中发送方式和接收方式之间的切换。在全双工系统中作发送方式和接收方式之间的切换。在全双工系统中,因配置双向通道,故不需要RTS/CTS联络信号,使其变高。
接收线信号检出(Received Line detection-RLSD)——用来表示DCE已接通通信链路,告知DTE准备接收数据。当本地的MODEM收到由通信链路另一端(远地)的 MODEM送来的载波信号时,使RLSD信号有效,通知终端准备接收,并且由MODEM将接收下来的载波信号解调成数字两数据后,沿接收数据线RxD送到终端。此线也叫做数据载波检出(Data Carrier dectection-DCD)线。
振铃指示(Ringing-RI)——当MODEM收到交换台送来的振铃呼叫信号时,使该信号有效(ON状态),通知终端,已被呼叫。
(2)数据发送与接收线:
发送数据(Transmitted data-TxD)——通过TxD终端将串行数据发送到MODEM,(DTE→DCE)。
接收数据(Received data-RxD)——通过RxD线终端接收从MODEM发来的串行数据,(DCE→DTE)。
(3)地线
有两根线SG、PG——信号地和保护地信号线,无方向。
上述控制信号线何时有效,何时无效的顺序表示了接口信号的传送过程。例如,只有当DSR和DTR都处于有效(ON)状态时,才能在DTE和DCE之间进行传送操作。若DTE要发送数据,则预先将DTR线置成有效(ON)状态,等CTS线上收到有效(ON)状态的回答后,才能在TxD线上发送串行数据。这种顺序的规定对半双工的通信线路特别有用,因为半双工的通信才能确定DCE已由接收方向改为发送方向,这时线路才能开始发送。
2个数据信号:发送TXD;接收RXD。
1个信号地线:SG。
6个控制信号:
DSR数传机(即modem)准备好,Data Set Ready.
DTR数据终端(DTE,即微机接口电路,如Intel8250/8251,16550)准备好,Data Terminal Ready。
RTS DTE请求DCE发送(Request To Send)。
CTS DCE允许DTE发送(Clear To Send),该信号是对RTS信号的回答。
DCD 数据载波检出,Data Carrier Detection当本地DCE设备(Modem)收到对方的DCE设备送来的载波信号时,使DCD有效,通知DTE准备接收, 并且由DCE将接收到的载波信号解调为数字信号, 经RXD线送给DTE。
RI 振铃信号 Ringing当DCE收到交换机送来的振铃呼叫信号时,使该信号有效,通知DTE已被呼叫。
简单的来概括RS232接口信号通信程序为:就绪-请求-发送-释放
三、通信的流量控制如何进行的,详细描述,纠错分为几个层面.
在上一篇文章中我已经提到了ARQ纠错方法,也可以说它是流量控制的方法,也就是说它有差错控制和流量控制两种功能。也正是这种有效的检错重传机制保证了数据链路层对上面的网络层提供可靠传输的服务,强调一点ARQ是属于数据链路层的纠错方法,停止等待协议是它的一个特例。其重要的方法还是包括那两种即连续重传(只按序接收数据帧,即如果不按序就要求重传)和选择重传。还有提到的重传时间,一般选为略大于“从发完数据帧到收到确认帧所需的平均时间”。
(一)停止等待协议的要点有:
(1)连续出现相同发送序号的数据帧,表明发送方进行了超时重传,接收方连续收到相同发送序号的数据帧,表明接收端收到了重复帧。
(2)发送端在完成发送数据帧时,要保留副本以备没有发送成功进行重传,直到确认收到后则清除这个副本。
(3)CRC检验是由硬件完成的,自动丢弃出错帧(用户或上层软件感觉不到)
(二)通信的流量控制:(由收方控制发方的数据流,乃是计算机网络中流量控制的一个基本方法)
采用滑动窗口协议作为流量控制方法。
滑动窗口协议是一种改进的连续ARQ协议,它在发送端和接收端分别设定所谓的发送窗口和接收窗口。发送窗口用来对发 送端进行流量控制,而发送窗口的大小就代表在还没有收到对方确认信息的情况下发送端最多可以发送多少个数据帧。同理,在接收端设置接收窗口是为了控制可以 接收哪些数据帧而不可以接收哪些帧。在接收端只有当收到的数据帧的发送序号落入接收窗口内才允许将该数据帧收下。若接收到的数据帧落在接收窗口之外,则一 律将其丢弃。当接收端接收到了接收窗口内起始的那个数据帧后,接收窗口将向前移动。同理,当发送端收到了发送窗口内起始帧对应的确认帧之后,发送窗口也将 向前移动。不难看出,只有在接收窗口向前移动时,发送窗口才有可能向前移动。正因为收发两端的窗口按照以上的规律不断地向前滑动,因此这种协议称为滑动窗口协议。
精华提取:
滑动窗口(协议)
(1)发送端和接收端分别设置发送窗口和接收窗口;
(2)发送窗口用来对发送端进行控制;
(3)发送窗口的大小Wt在对方还没有发送过来之前规定的窗口的大小,规定对方最多发送多少个数据帧(明确一点:是接收方发给发送方)。
重要性 :
当发送窗口和接收窗口的大小都等于1时,就是停止等待协议(因为等于1时就没有校验尺了,每一次都要确认,就会称为停止等待协议,应该是成批的数据才可以。)
(二)纠错层面:
(1)数据链路层的差错控制:数据链路层增加了一些机制用来检测与重发损坏帧或丢失帧,从而增加了物理层的可靠性。差错控制通常在一个帧的结束处增加一个尾部来处理。
(2)传输层的差错控制:这一层的差错控制是端到端的,不是在单条链路上,发送方的传输层确保整个报文无差错(损坏、丢失或重复)地到达接收方的传输层。通常通过重发来纠正错误。
(3)另外物理层面也有纠错功能
四、OSI模型的目标和所解决的问题。
解决不同系统交换信息的方法问题,使得用户不必去关心个别系统怎样工作和如何通信。它希望打造开放的平台,通过分层的概念开发分层的设备。解决异种网络互连时所遇到的兼容性问题。就是在不需要改变系统的软硬件逻辑结构的条件下,使不同的系统间的通信称为可能。
它的最大优点是将服务、接口和协议这三个概念明确地区分开来:服务说明某一层为上一层提供一些什么功能,接口说明上一层如何使用下层的服务,而协议涉及如何实现本层的服务;这样各层之间具有很强的独立性,互连网络中各实体采用什么样的协议是没有限制的,只要向上提供相同的服务并且不改变相邻层的接口就可以了。网络七层的划分也是为了使网络的不同功能模块(不同层次)分担起不同的职责,从而带来如下好处:
(1)减轻问题的复杂程度,一旦网络发生故障,可迅速定位故障所处层次,便于查找和纠错;
(2)在各层分别定义标准接口,使具备相同对等层的不同网络设备能实现互操作,各层之间则相对独立,一种高层协议可放在多种低层协议上运行;
(3)能有效刺激网络技术革新,因为每次更新都可以在小范围内进行,不需对整个网络动大手术; 便于研究和教学。
(4)网络分层体现了在许多工程设计中都具有的结构化思想,是一种合理的划分。