当前位置:文档之家› TCP-UDP协议

TCP-UDP协议

第7章TCP/UDP协议

主要内容

1.TCP协议基本原理。

2.UCP协议基本原理。

https://www.doczj.com/doc/0012230511.html,sat实验。

能力要求

1.理解传输层在OSI体系结构中的地位和作用。

2.了解传输层如何保证通信服务的可靠性。

3.掌握TCP/UDP协议基本原理和报文数据结构。

因为世界上各种通信子网在性能上存在着很大差异,例如电话交换网、分组交换网、公用数据交换网,局域网等通信子网等,但网络的互联互通的特性决定了它们必须互连,而它们提供的吞吐量、传输速率、数据延迟通信费用各不相同,但对于会话层来说,却要求有一性能恒定的界面,传输层就承担了这一功能。传输层(Transport Layer)是OSI体系结构中重要、关键的一层,负责总体的数据传输和数据控制。传输层提供端到端的交换数据的机制。传输层对会话层等高三层提供可靠的传输服务,对网络层提供可靠的目的地站点信息。传输层协议主要包括TCP/UDP协议。它屏蔽了网络底层技术的差异,使会话层感受不到各种通信子网在技术标准和网络结构上的区别。此外传输层还要具备差错恢复,流量控制等功能。传输层面对的数据对象已不是网络地址和主机地址,而是端口。

传输层的最终目的是为会话提供可靠的、无误的数据传输。传输层的服务一般要经历传输连接建立阶段、数据传送阶段、传输连接释放阶段3个阶段才算完成一个完整的服务过程。在数据传输过程中,传输层要保证提供通信服务的可靠性,避免报文的出错、丢失、延迟时间紊乱、重复、乱序等差错。

7.1 传输层功能概述

传输层也称为运输层,是介于低3层通信子网系统和高3层之间的一层,是源端到目的端对数据传送进行控制从低到高的最后一层。

传输层功能的目的是为会话提供可靠、无误的数据传输服务。传输层的服务一般要经历传输连接建立阶段、数据传送阶段、传输连接释放阶段3个阶段才算完成一个完整的服务过程。为完成这一服务,传输层要具备以下基本功能:

199

(1)连接管理(Connection Management):定义了允许两个用户像直接连接一样开始交谈的规则。通常把连接的定义和建立的过程称为握手(handshake)。传输层要建立、维持和终止一个会话。在数据传输开始时,发送方和接收方的应用都要通知各自的操作系统初始化一个连接,一个连接就建立了,数据传输也就开始了,在传输的过程中,两台主机还需要继续通过协议软件来通信以验证数据是否被正确接收。数据传输完成后,发送端主机发送一个标识数据传输结束的指示。接收端主机在数据传输完成后确认数据传输结束,连接终止。

(2)流量控制(Flow Control):就是以网络普遍接受的速度发送数据,从而防止网络拥塞造成数据报的丢失。

(3)差错检测(Error Detection):数据链路层的差错检测功能提供了可靠的链路传输,但无法保证源点和目的之间的传输完全无错,比如网络中的路由器收到了完整无缺的IP分组,但是在将含有分组的帧重新格式化的过程中出现了影响分组内容的错误。这种错误可能是由于软件或硬件问题导致路由器在进行分组期间引起的,也就是说并不是由于物理链路在进行数据传输的过程中产生的差错,因此数据链路层的差错检测功能无法通过校验识别出差错。传输层的差错检测机制会检测到这种类型的错误。

(4)对用户请求的响应(Response to User's Request):包括对发送和接收数据请求的响应,以及特定请求的响应,如用户可能要求高吞吐率、低延迟或可靠的服务。传输层面对的数据对象不是网络地址和主机地址,而是端口。

(5)建立无连接或面向连接的通信:TCP/IP协议的TCP提供面向连接的传输层服务,UDP则提供无连接的传输层服务。

为了评价传输层提供的服务质量(QoS),我们一般用一组量化的指标来衡量,主要有:

(1)连接建立延迟/连接释放延迟

(2)连接建立/释放失败概率

(3)传输时延

(4)吞吐率

(5)残留误码率

(6)传输失败概率

总之,我们设计传输层的目的就是提高传输服务的可靠性和保证服务质量QoS,下面我们分别就传输层的两个重要协议TCP和UDP分别介绍。

200

7.2 TCP协议

用户的应用程序进程最终需要得到的是端到端的通信服务,传输层的主要任务就是建立应用程序间的端到端连接,并且为数据传输提供可靠或不可靠的通信服务。

TCP/IP协议族的传输层协议主要包括TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)。TCP是面向连接的可靠的传输层协议,它支持在不可靠网络上实现面向连接的可靠的数据传输。

7.2.1 TCP协议的特点

RFC 793定义的TCP是一种面向连接的、端到端的可靠传输协议。TCP的主要特点如下:

(1)三次握手(Three-Way Handshake)建立连接:确保连接建立的可靠性。

(2)端口号:通过端口号标识上层协议和服务,实现了网络通道的多路复用。

(3)完整性检验:通过对协议和载荷数据计算校验和,保证了接收方能检测出传输过程中可能出现的差错。

(4)确认机制:对于正确接收到的数据,接收方通过显式应答通告发送方,超出一定时间之后,发送方将重传没有被确认的段,确保传输的可靠

性。

(5)序列号:发送的所有数据都拥有唯一的序列号,这样不但唯一标识了每一个段,而且明确了每个段在整个数据流中的位置,接收方可以利

用这些信息实现确认、丢失检测、乱序重排等功能。

(6)窗口机制:通过可调节的窗口,TCP接收方可以通告期望的发送速度,从而控制数据的流量。

由于TCP具有这些特点,一些对数据传输可靠性、次序等比较敏感的应用程序和协议使用TCP作为其传输层协议。这些应用和协议包括FTP、Telnet、E-mail(SMTP/POP3)等。

7.2.2 TCP/UDP端口号

在IP网络中,一个IP地址可以唯一地标识一个主机。但一个主机上却可能

201

同时有多个进程访问网络,要标识这些进程,只用IP地址就不够了。因此TCP/UDP采用端口号(Port Number)来标识这些上层的应用进程,从而使这些进程可以复用网络通道。而为了区分TCP和UDP协议,IP用协议号6标识TCP,用协议号17标识UDP,如图7-1所示。

图7-1 TCP/UDP端口号

在实际的端到端通信中,通信的双方实际上是两个应用进程,这两个进程都需要用各自的端口号进行识别。所以,一个通信连接可以用双方的IP地址以及双方的端口号来标识,而每一个数据报内也必须包含源IP地址、源端口、目的IP地址和目的端口。IP地址在IP头中标出,而端口号在TCP/UDP头中标出。

TCP/UDP的端口号是一个16位二进制数,即端口号范围可以为0~65535。其中,端口0~1023由IANA统一管理,分配或保留给众所周知的服务使用,这些端口称为熟知端口(Well-Known Port)。大于1023的端口号没有统一的管理,可以由应用进程任意使用。虽然UDP端口号与TCP端口号是不相关的,但通常仍然为同一个应用保留相同的TCP和UDP端口号,以免不必要的麻烦。一些常见协议的保留端口号如表7-1所示。详细分配信息可参见RFC 1700。

保留熟知端口的必要性显而易见。例如,若HTTP服务的端口号是任意值,

202

则用户在访问Internet网站是就会遇到麻烦,因为浏览器不知道目的网站所使用的端口号,用户就要自己输入端口号。但是这并不意味着众所周知的协议必须使用众所周知的端口号。例如管理员也可以为HTTP协议分配端口8080,目的恰恰是避免任何人都能随意访问其网页。

知道一个特定的TCP/IP应用进程服务使用了哪一个端口是非常重要的。如果把主机当成一个封闭的堡垒,那么端口号就是堡垒上的窗户的编号,可以开放主机上特定的端口来允许其他人访问,也可以关闭特定的端口来阻止非法的访问。

在windows系统中也可以查看所使用的端口号信息。打开windows的命令窗口,输入netstat命令,可以看到本地主机和目标主机使用的端口号,详见本章后面的实验。

7.2.3 TCP封装

如图7-2所示,TCP收到应用层提交的数据后,将其分段,并在每个分段前封装一个TCP头。最终的IP包是在TCP头之前再添加IP头形成的。

图7-2 TCP封装

图7-3所示为TCP头的格式。TCP头由一个20B的固定长度部分加上变长的选项字段组成。TCP头的各字段含义如下。

(1)源端口(Source Port):16位的源端口字段包含初始化通信的端口号。源端口和源IP地址的作用是识别报文的返回地址。

(2)目的端口(Destination Port):16位的目的端口字段定义传输的目的地址。

这个端口指明接收方计算机上的应用进程接口。

(3)顺序号(Sequence Number):该字段用来标识TCP源端设备向目的端设备发送的字节流,它表示在这个报文段中的第一数据字节在整个字节流中的序号。如果将字节流看做在两个应用进程间的单向流动,则TCP用序列号对每个字节进行计数,序列号是一个32位的数。

203

204

图7-3 TCP 头格式

(4) 确认号(Acknowledgement Number ):TCP 使用32位的确认号字段标识

期望收到的下一个段的第一个字节在整个字节流中的序号,并声明此前的所有数据都已经正确无误地收到,因此,确认号应该是上次已成功收到的数据字节序列号加1。收到确认号的源计算机会知道特定的段已经被收到。确认号的字段只在ACK 标志被设置时才有效。

(5) 数据偏移(Data Offset ):这个4位字段包括TCP 头大小,以32位数据结

构(字)为单位。

(6) 保留(Reserved ,阴影部分):6位置0的字段。为将来定义新的用途保留。

(7) 控制位(Control bits ):共6位,每1位标志可以打开一个控制功能,这6

个标志从左至右是URG (Urgent pointer field significant ,紧急指针字段标志)、ACK (Acknowledgment field significant ,确认字段标志)、PSH(Push function ,推功能)、RST (Reset the connection ,重置连接)、SYN (Synchronize sequence numbers ,同步序列号)、FIN (Final ,No more data from sender ,数据传送完毕)。

① URG :此标志表示TCP 包的紧急指针字段有效,用来保证TCP 连接

不被中断,并且督促中间层设备要尽快处理这些数据。

② ACK :取值为1时表示应答字段有效,也即TCP 应答号将会包含在

TCP 段中;为0则反之。

③ PSH :这个标志位表示Push 操作。所谓Push 操作就是指在数据包达

到接收端以后,立即传送给应用进程,而不是在缓冲区中排队。

④ RST :这个标志表示连接复位请求,用来复位那些产生错误的连接,

也被用来拒绝错误和非法的数据包。

⑤ SYN :表示同步序号,用来建立连接。

⑥ FIN :表示发送端已经发送到数据末尾,数据传送完成,发送FIN 标

志位的TCP 段后,连接将被断开。

(8)窗口(Window):目的主机使用16位的窗口字段告诉源主机它期望每次收到的数据的字节数。窗口字段是一个16位字段。

(9)校验和(checksum):TCP头包括16位的校验和字段用于错误检查。源主机基于部分IP头信息、TCP头和数据内容计算一个校验和,目的主机也要进行相同的计算,如果收到的内容没有错误,两个计算结果应该完全一

样,从而证明数据的有效性。

(10)紧急指针(Urgent Pointer):紧急指针字段是一个可选的16位指针,指向段内的最后一个字节位置,这个字段只在URG标志被设置时才有效。(11)选项(Options):至少1B的可变长字段,标识哪个选项(如果有)有效。

如果没有选项,这个字节等于0,说明选项字段的结束。这个字节等于1表示无须再有操作;等于2表示下4个字节包括源机器的最大段长度

(Maximum Segment Size,MSS)。MSS是数据字段中可包含的最大数据量,源和目的机器要对此达成一致。当一个TCP连接建立时,连接的双方都要通告各自的MSS,协商可以传输的最大段长度。常见的MSS有1024B,以太网可达1460B。

(12)填充(Padding):这个字段中加入额外的零,以保证TCP头是32位的整数倍。

(13)数据(Data):从技术上讲,它并不是TCP头的一部分,但应该了解到,数据字段位于紧急指针和选项字段之后,填充字段之前。字段的大小是最

大的MSS,MSS可以在源和目的机器之间协商。数据段可能比MSS小,但却不能比MSS大。

7.2.4 TCP的连接建立和拆除

TCP协议是一个面向连接的可靠的传输控制协议,在每次数据传输之前需要首先建立连接,当连接建立成功后才开始传输数据,数据传输结束还要断开连接。这一过程与打电话很相似,先拨号振铃,等待对方摘机说“喂”,双方通过说“喂”确认可以通话后才开始通话。

由于TCP使用的网络层协议IP是一个不可靠、无连接的数据报传送服务,为确保连接的建立和终止都是可靠的,TCP使用三次握手的方式来建立可靠的连接,也就是说其中交换了3个消息;结束TCP连接则采用四次握手来实现。TCP 使用报头中的标志同步段来描述创建一个连接的三次握手中的消息,用结束段来描述关闭一个连接的消息。另外,握手过程确保TCP只有在两端一致的情况下,才会打开或关闭一个连接。创建一个连接的三次握手过程中要求每端产生一个随

205

机32位序列号,因为每一个新的连接用的是一个新的随机序列号。

下面介绍三次握手和四次握手的过程。TCP的三次握手建立连接的过程如图7-4所示。

图7-4 tcp连接的建立

(1)由发起方HostA向被叫方HostB发出连接请求。将段的序列号标为a,SYN置位。由于是双方发的第一个包,ACK无效。

(2)HostB收到连接请求后,读出序列号为a,发送序列号为b的包,同时将ACK置为有效,将确认号置为a+1,同时将SYN置位。

(3)HostA收到HostB的连接确认后,对该确认再次确认。HostA收到确认号为a+1、序列号为b的包后,发送序列号为a+1、确认号为b+1

的段进行确认。

(4)HostB收到确认报文后,连接建立。

这样,一个双向的TCP连接就建立好了,双方可以开始传输数据。

下面来讨论三次握手过程是如何保证连接的可靠性的。如果接收方HostB在收到发送方HostA的连接请求分段a后,发送确认分段b并等待数据。由于其使用的网络层协议IP是不可靠的,可能使得该确认信息丢失,这样会使得发送方HostA认为接收方没有确认,而事实上接收方正在等待发送方传数据分段确认。为避免接收方的盲目等待,接收方HostB要收到发送方HostA对它的确认后才开始等待,如果没有收到的发送方HostA的确认,它将认为它自己的确认丢失,因而将反复重传刚发过的确认分段b。对于发送方HostA也一样,在收到接收方HostB的确认后立即对HostB的确认再做确认,然后开始发数据。如果HostA发送的对HostB的确认a+1传递丢失了,HostB不会认为连接已建好,而发送方HostA却会开始发送数据a+2,面对这种故障可能性,是否要求HostB对a+1确认,而HostA收到此确认后再传a+2呢?没有必要。因为如果进行更多的确认,

206

连接可靠性无疑会不断增加,但这样会消耗更多的连接时间,并且如果HostB没有收到a+1,它会反复重传以前的确认分段b,HostA也可以借此意识到需要重新发送a+1确认。这样,在效率与可靠性的权衡中,TCP选择了三次握手建立连接,在尽可能保证连接的可靠性的前提下也保证了一定的效率。

当数据传输结束后,需要断开TCP连接,过程如图7-5所示。

图7-5断开TCP连接

(1)HostA要求终止连接,发送序列号为p的段,FIN置为有效,同时确认此前刚收到的段。

(2)HostB收到HostA发送的段后,发送ACK段,确认号为p+1,同时关闭连接。

(3)HostB发送序列号为q的段,FIN置为有效,通知连接关闭。

(4)HostA收到HostB发送的段后,发送ACK段,确认号为q+1,同时关闭连接。TCP连接至此终止。可见这是一个四次握手过程。

7.2.5 TCP可靠传输机制

1.传输确认

为保证数据传输的可靠性,TCP要求对传播的数据进行确认。TCP协议通过序列号和确认号来确保传输的可靠性。每一次传输数据时,TCP都会标明该段的起始序列号,以便对方确认。在TCP协议中并不直接确认收到哪些段,而是通知发送方下一次该发送哪一个段,表示前面的段都已收到。序列号还可以帮助接收方对乱序到达的数据进行排序。

207

收到一个段确定一个段的方法虽然简单,但是会消耗较多网络资源。为了提高通信效率,TCP采取了一些提高效率的方法。

首先,TCP并不要求每个段一对一地发送确认。接收端可以用一个ACK确认之前收到的所有数据。例如,接收到的确认序列号为N+1时,表示接收方对到N为止的所有数据全部正确接收,

另外,TCP并不要求必须单独发送确认,而是允许将确认放在传输给对方的TCP数据段中。如果收到一个段后没有段要马上传到对方,TCP通常会等待一个微小的延时,希望将确认与后续的数据段合并发出。

由于每个段都有唯一的编号,这样当对方收到了重复的段时容易发现,数据段丢失后也容易定位,乱序后也可以重新排列。在动态路由网络中,一些数据包很可能经过不同的路径,因此报文可能会乱序到达。32位的序列号由接收端计算机用于把段的数据重组成最初形式。

图7-6给出了一个经过简化的TCP传输过程示例。为了便于理解,本例只关注从HostA到HostB的单向传输。假设HostA向HostB发送的初始序列号为1,且发送窗口为4096B,HostA向HostB发送的每个段数据长度为1024B,HostA 将一次性向HostB发送4个字段。而HostB收到并校验了数据的正确性后,在回送确认时只需发送确认号4096+1=4097,就可以表示4096之前的全部数据都已经正确接收,下一次期望接收从4097开始的数据。下一次,HostA仍然一次发送总量为4096B的4个段给HostB。

2.超时重传

图7-7给出了一个经过简化的典型的TCP重传过程示例。假设HostA向HostB发送的序列号为1025的第二个段在途中丢失。HostB只对全部按序无错接收到的序列号最高的段给以确认,即HostB只以确认号1025向HostA确认第一个段已收到。

HostA在收到这个确认时,并不能确定HostB没有收到第二个段,因为第二个段也许还没有到达HostB,或者HostB发出的第二个确认可能被延迟了,因此,HostA不能立即重传第二段。只有在第二个段发出超出RTT(Round Trip Time,往返时间)而仍没有收到确认时,HostA才认为这个段已经丢失,并重传这个段。

208

图7-6 TCP传输确认

图7-7 TCP超时重传

HostB收到重传的第二段后,按序无误收到的最后一个段的序列号为3073,因此向HostA发送确认号为4097的确认,表示之前的数据均正确无误地收到。

TCP接收方并不通过“错误通告”告知发送方重传。如果HostA向HostB发送的序列号为1025的第二个段到达了HostB,但被检查出校验错误,HostB也不会向HostA发送“错误通知”要求重传。因此,RTA仍然需要等待RTT时间之后再重传这个段。

必须考虑的另一种情况是,HostB回送的确认段也同样可能在传输中丢失或

209

出错。此时对HostA来说并不需要额外的机制,因为HostA面临的现象与此前的例子是完全相同的———没有收到确认。HostA仍然用同样的超时重传机制来处理即可。而如果HostB回送的确认只是被延迟,则HostA在重传后就可能收到两个确认,此时HostA只需要忽略多余的确认即可。

因此,RTT时间就成为一个非常重要的参数。过大的RTT导致TCP重传非常迟缓,可能会降低传输的速度;过小的RTT则会导致TCP频繁重传,同样降低资源的使用效率。在实际实现中,TCP通过实时跟踪发送的段与其相应确认之间的时间间隔来动态调整RTT的数值。

3.滑动窗口

TCP使用大小可变的滑动窗口,并定义了窗口尺寸的通告机制,以增强流量控制的功能。这些机制为TCP提供了在终端系统之间调整流量的动态方法。

TCP滑动窗口尺寸的单位为字节,起始于确认字段指明的值,这个值是接收端正期望一次性接收的字节。窗口尺寸是一个16位字段,因而窗口最大为65535B。在TCP的传输过程中,双方通过交换窗口的大小来表示自己剩余的缓冲区空间,以及下一次能够接收的最大的数据量,避免缓冲区的溢出。

图7-8仍然通过数据单向发送的简化示例,介绍TCP如何通过滑动窗口实现流量控制。

图7-8 TCP滑动窗口

假定初始的发送窗口大小为4096,每个段的数据为1024B,则HostA每次发送4个段给HostB。HostB正确接收到这些数据后,应该以确认号4097进行确认。然而同时,HostB由于缓存不足或处理能力有限,认为这个发送速度过快,并期望将窗口降低一半。此时HostB在回送的确认中将窗口尺寸降低到2048,

210

要求HostA每次只发送2048B。HostA收到这个确认后,便依照要求降低了发送窗口尺寸,也就降低了发送速度。

若接收方设备要求窗口大小为0,表明接收方已经接收了全部数据,或者接收方应用进程没有时间读取数据,要求暂停发送。

TCP运行在全双工模式,所以发送者和接收者可能在相同的路线上同时发送数据,但发送的方向相反。这暗示着,每个终端系统对每个TCP连接包含两个窗口,一个用于发送,一个用于接收。

可变滑动窗口解决了端到端流量控制问题,但是无法干预网络。如果中间节点,例如路由器被阻塞,则没有任何机制可以通知TCP。如果特定的TCP实现对超时设定和再传输具有抵抗性,则会极度增加网络的拥挤程度。

7.3 UDP协议

7.3.1 UDP的特点

RFC768定义的UDP是为实现数据报模式的分组交换计算机网络通信而设计的。UDP对应用进程提供了用最简化的机制向网络上的另一个应用进程发送消息的方法。UDP提供无连接的、不可靠的数据报服务。

UDP是面向数据报的传输协议。由于没有流的记录能力,UDP无法记录数据位于流中的确切位置,因此不能像面向流的传输协议一样自动调整段的大小,而只能对应用进程的每个输出消息产生一个UDP数据报。

UDP也采取端口号来标识这些上层的应用进程,从而使这些进程可以复用网络通道。

总的说来,UDP的特点如下:

(1)UDP是无连接的。UDP传送数据前并不与对方建立连接,在传输数据前,发送方和接收方进程需自行相互交换信息使双方同步。

(2)UDP不对收到的数据进行排序。在UDP报文的首部中并没有关于数据顺序的信息(如TCP所采取的序列号),由于IP报文不一定按顺序达到,所以接收端无从排序。

(3)UDP对接收到的数据包不发送确认,发送端不知道数据是否被正确接收,也不会重发数据。

(4)UDP传送数据较TCP快速,系统开销也少。

(5)UDP缺乏拥塞控制机制,需要基于网络的机制来减小因失控和高速UDP流量负荷而导致的拥塞崩溃效应。换句话说,因为UDP发送者不能够检测

211

拥塞,所以像使用包队列和丢弃技术的路由器这样的网络基本设备往往就成为降低UDP过大通信量的有效工具。

7.3.2 UDP封装

UDP收到应用层提交的数据后,将其分段,并在每个分段前封装一个UDP 头。最终的IP包是在UDP头之前再添加IP头形成的。IP用协议号16标识UDP。

由于功能简单,UDP头相对于TCP头简化了很多。UDP头包含以下字段。

(1)源端口:16位的源端口号,含义与TCP相同。

(2)目的端口:16位的目的端口号,含义与TCP相同。

(3)16位的长度字段,表示包括UDP头和数据在内的整个UDP数据报的长度,单位为字节。

(4)校验和:16位的错误检查字段,根据部分IP头信息、UDP头和载荷数据的内容计算得到,用于检测传输过程中出现的错误。

7.3.3 UDP基本工作过程

图7-9给出了UDP数据报传输过程。当应用进程有报文需要通过UDP发送时,它就将此报文传送给执行UDP协议的传输实体。UDP传输实体将用户数据加上UDP报头,形成UDP用户数据报。在UDP数据报上增加IP报头,形成IP 分组,传送给数据链路层。数据链路层在IP分组上增加帧头与帧尾,形成一个帧,再通过物理层发送出去。由于UDP是一种无连接服务协议,因此它没有传输连接建立的的过程,只需将UDP数据报传送给网络层。网络层执行IP协议,选择该数据报的传输路径。

当该帧到达目的主机后,数据链路层、网络层按照协议进行检查。如果没有发现差错,UDP协议将对用户数据报进行检查。如果没有差错,按照目的端口号,将数据传送给接收端进程,从而完成源与目的进程之间的数据交换功能。

UDP用户数据报传输队列是与UDP端口相关联的。当主机运行TCP/IP协议族时,可能会有多个进程想要使用UDP服务。多个进程可以用不同的端口来区别,每个进程都分配一个端口号,UDP就可以通过复用和分用来处理多个进程接收用户数据报。发送端的UDP协议处理多个进程的用户数据报称为UDP复用,接收端根据接收的每个进程的端口号分别处理称为UDP分用。在加上UDP 报头之后,UDP将用户数据报发送给网络层。

212

图7-9 UDP用户数据报传输过程中的封装与拆封Internet号码分配局(IANA)定义的UDP端口号分为三类:熟知端口号(well known port number)、注册端口号和临时端口号。由于端口号长度为16,因此端口号是在0-65536之间的整数。熟知端口号又称为公认端口号,范围为0-1023,它被统一分配和控制。注册端口号的范围为1024-49151,用户可根据需要在IANA 注册,以防止重复。临时端口号由运行在客户主机上的UDP软件随意选取,范围为49152-65535,它们可由任何进程来使用。

7.3.4 UDP与TCP的对比

可见,相对于TCP,UDP缺乏可靠性保证机制。UDP段没有序列号、确认、超时重传和滑动窗口,其传输没有任何可靠性保证。当然,使用UDP作为传输层协议也有独特的优势:

(1)实现简单,占用资源少。由于抛弃了复杂的机制,不需要维护连接状

213

态,也省却了发送缓存,UDP协议可以很容易地运行在处理能力低、资源少的节点上。例如,无盘工作站在获得OS软件之前不可能实现复杂的传输机制,但系统的传递恰恰需要基于传输层协议,这时就可以使用基于UDP的BootP(自取协议)获取引导信息。

(2)开销浪费小,传输效率高。UDP头比TCP头的尺寸小,而且UDP节约了TCP用于确认的带宽消耗,因此提高了带宽利用率。

(3)延迟小。由于不需要等待确认和超时,也不需要考虑窗口的大小,UDP 发送方可以持续而快速地发送数据。对于很多应用而言,特别是实时应用,重新传输实际上没有意义。例如对V oIP来说,如果丢失了一个语音包,通话质量立即会受到影响,但重新传递这个语音包也已经没有必要了,因为话音通信实时性很强。这种情况下UDP比TCP更加合适。

UDP适用于不需要可靠传输的情形,例如当高层协议或应用程序自己可以提供错误和流的控制功能时,或错误重传没有意义时。另外,UDP也适用于对传输效率或延迟较敏感的应用。UDP服务用于很多知名的应用,包括NFS(网络文件系统)、SNMP(简单网络管理协议)、DNS(域名系统)、TFTP(简单文件传输协议)、DHCP(动态主机配置协议)、RIP(路由信息协议)和语音视频流媒体传输等。

实验:用netsat命令查询网络连接状态实验目的

netstat命令运行于Windows系统的DOS命令行,利用该工具可以显示与IP、TCP、UDP和ICMP协议相关的统计数据,主要用于检验本机各端口的网络连接情况。用户或网络管理人员可以得到非常详尽的统计结果,并获得系统网络连接的信息(使用的端口和在使用的协议等),收到和发出的数据,被连接的远程系统的端口等。通过本实验,应该掌握利用netstat命令获得系统网络连接的信息的方法。

实验环境

运行Windows 2000/2003 Server/XP操作系统的PC机1台。

214

实验步骤

步骤1了解Netstat命令的语法格式及各参数的意义。

Netstat命令的格式:netstat[-a][ -e][ -n][ -s][ -p protoc01][ -r][interval]

单击所有“程序”→“附件”→“命令”提示行,进入命令行窗口,输入netstat /?回车,显示界面如图7-9所示。

图7-9 netstat参数意义

netstat命令常用参数的意义如下:

netstat -a——本选项显示一个所有的有效连接信息列表,包括已建立的连接(ESTABLISHED),也包括监听连接请求(LISTENING)的那些连接,断开连接(CLOSE_WAIT)或者处于联机等待状态的(TIME_WAIT)等。

netstat -n——本选项用数字形式显示所有的有效连接信息列表。

netstat -s——本选项能够按照各个协议分别显示其统计数据。

netstat -e——本选项用于显示关于以太网的统计数据。

215

netstat -r——本选项可以显示关于路由表的信息,除了显示有效路由外,还显示当前有效的连接。

步骤2 输入-a参数,查询所有连接和监听端口。

在笔者电脑的命令行窗口,输入netstat –a后回车,显示结果如图7-10。

图7-10 输入netstat –a的显示结果

最左侧是连接使用的传输层协议(TCP),第二列是本地地址及端口号,第散列是外部地址及端口号,最后一列是网络连接的状态。从图中可看到一些端口处于监听状态,一些端口已经建立了连接,还有一些处于等待状态,有一个端口的连接已经断开。

步骤3输入-n参数,用数字形式显示所有的有效连接信息列表。

在笔者电脑的命令行窗口,输入netstat –n后回车,显示结果如图7-11。

216

图7-11 输入netstat -n的显示结果

从图中可看出第二列和第三列的地址已经用数字形式的IP地址显示了。

步骤4输入-s参数,按照各个协议分别显示其统计数据。

在笔者电脑的命令行窗口,输入netstat –s后回车,显示结果如图7-12所示。

217

(a)

218

自由格式协议_chn

自由协议 控制器与显示器相连接的一个简单的通信协议,控制器是主控端, 显示器是从属端,在控制器中,只需编写简单的通信读/写程序,而不用编写通信中断服务程序。 首先,控制器发送一个请求给显示器,显示器接受请求之后,给控制器回复一个响应。显示器和控制器交换数据为128(最大)字,为MW0~MW127,字的每个比特可以作为线圈使用,为MWx.i(x=0..127,i=0..15)。 请求的格式: 站号:显示器站号(0~255,0表示广播方式,显示器不需要回复) 命令:‘R’表示从显示器读取,‘W’表示向显示器写数据 地址:MW(0~127)的索引号 长度:需要读/写MW的个数(1~128) 数据:MW的值,如果命令是‘R’则没数据 校验:从站号到校验前的字节,所有字节相加,再取0x100的余数 (注意:如果校验是0x5A,则忽略,不作检查) 状态:通信的状态 :0 –正常 :1 –地址错误 :2 –长度错误 :3 –范围错误(地址+ 长度> 128 ) :4 –命令错误 当命令是‘W’或不正常时,则没有地址、长度和数据 数据的格式

协议: 首先,控制器发送一个请求给显示器。显示器收到请求后,检查校验,如果校验正确,且站号等于显示器本身站号,显示器就响应这个请求。否则,显示器将不作响应。 控制器需要检查显示器的响应是否超时,超时时间为50毫秒。如果超时,控制器应该重新发送请求。 显示器检查接收数据是否超时,超时时间为25毫秒。如果超时,显示器初始化通信,等待控制器的新的请求。 读(从显示器读数据) 数据:需要读的MW的值 写(向显示器写数据) 例子 a) 控制器从DP210读MW0,MW1 控制器发送:01H 52H 00H 02H 55H DP210回应:01H 00H 00H 02H 00H 00H 00H 0CH 0FH (MW0=0 MW1=12) b) 控制器写256 到MW0 控制器发送:01H 57H 00H 01H 01H 00H 5AH DP210回应:01H 00H 01H

常用的硬件接口及通信协议详解

一:串口 串口是串行接口的简称,分为同步传输(USRT)和异步传输(UART)。在同步通信中,发送端和接收端使用同一个时钟。在异步通信中,接受时钟和发送时钟是不同步的,即发送端和接收端都有自己独立的时钟和相同的速度约定。 1:RS232接口定义 2:异步串口的通信协议 作为UART的一种,工作原理是将传输数据的每个字符一位接一位地传输。图一给出了其工作模式: 图一 其中各位的意义如下: 起始位:先发出一个逻辑”0”的信号,表示传输字符的开始。

数据位:紧接着起始位之后。数据位的个数可以是4、5、6、7、8等,构成一个字符。通常采用ASCII码。从最低位开始传送,靠时钟定位。 奇偶校验位:资料位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验资料传送的正确性。 停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。 空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。 波特率:是衡量资料传送速率的指针。表示每秒钟传送的二进制位数。例如资料传送速率为120字符/秒,而每一个字符为10位,则其传送的波特率为10×120=1200字符/秒=1200波特。 3:在嵌入式处理器中,通常都集成了串口,只需对相关寄存器进行设置,就可以使用啦。尽管不同的体系结构的处理器中,相关的寄存器可能不大一样,但是基于FIFO的uart框图还是差不多。

发送过程:把数据发送到fifo中,fifo把数据发送到移位寄存器,然后在时钟脉冲的作用下,往串口线上发送一位bit数据。 接受过程:接受移位寄存器接收到数据后,将数据放到fifo中,接受fifo事先设置好触发门限,当fifo中数据超过这个门限时,就触发一个中断,然后调用驱动中的中断服务函数,把数据写到flip_buf 中。 二:SPI SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB 的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。

单片机串口通信协议程序

#include #include #define R55 101 #define RAA 202 #define RLEN 203 #define RDATA 104 #define RCH 105 //#define unsigned char gRecState=R55; unsigned char gRecLen; unsigned char gRecCount; unsigned char RecBuf[30]; unsigned char gValue; void isr_UART(void) interrupt 4 using 1 { unsigned char ch; unsigned char i; unsigned char temp; if (RI==1) { ch=SBUF; switch(gRecState) { case R55: // wait 0x55 if (ch==0x55) gRecState=RAA; break;

case RAA: if (ch==0xaa) gRecState=RLEN; else if (ch==0x55) gRecState=RAA; else gRecState=R55; break; case RLEN: gRecLen=ch; gRecCount=0; gRecState=RDATA; break; case RDATA: RecBuf[gRecCount]=ch; gRecCount++; if (gRecCount>=gRecLen) { gRecState=RCH; } break; case RCH: temp=0; for(i=0;i

编码器RS485自由通讯协议

编码器RS485自由通讯协议 正常工作状态编码器按照编程设定参数:波特率为设定值,一般为9600、19200、38400等,数据位8位,停止位1位,无奇偶校验,无控制流。 编码器的主被动模式需对编码器进行设定。 编码器为主动模式时,即编码器主动向上位机发送数据。数据长度为13位16进制ASCII码,格式为:=±DATA↙,即: 1 2 3 4 5 6 7 8 9 10 11 12 13 = ± DATA ↙ 其中,“=”为前导字母,±为符号位。DATA为数据,ASCII格式,10位,由0~9构成,范围为-9,999,999,999~+9,999,999,999。最后是回车符(0D)。 编码器地址为被动模式时,即问答模式。上位机向编码器发送询问指令,指令为4位16进制ASCII 码,格式为:#AB↙(带地址返回主测量值询问指令为:&AB↙)。 AB为编码器地址,范围为0到99。 编码器对上位机回答的数据格式与主动模式发送的数据格式是一样的。 (带地址返回的数据格式在“=”与符号位之间有“AB>”,“>”为分隔符) 例:被动模式,地址设为1,波特率为19200,与上位机通讯时的数据为: 发送:23 30 31 0D 发送:26 30 31 0D 接收:3D 2B 30 30 30 30 30 30 30 30 31 32 0D 接收:3D 30 31 3E 2B 30 30 30 30 30 30 30 30 31 32 0D 即,发送#01↙接收=+0000000012↙。 即,发送&01↙接收=01>+0000000012↙。 编码器RS485信号及接线端子引脚分配 DB9针脚 定义 3 RS485(A+) 8 RS485(B-) 编程允许线(Poen)的使用 编程模式时,编码器棕色线与编程允许线(Poen)并在一起接正电源,兰色线接电源地线。此时,编码器的通讯速率固定为19200bps。 非编程模式,即正常工作时,建议将兰色线与编程允许线(Poen)并在一起接电源地线。 RS485通讯的注意事项: 1. 通讯速率与传输距离是一对矛盾。速率越高,传输距离越近、但也越稳定,反之亦然。 2. 在外部电磁干扰强时,外部置位线在对编码器置位需接高电平,但置位结束后建议强制接低电平,以防止编码器由于外部干扰而突然回零。 3. 在外部电磁干扰强时,RS485接线最好使用双屏蔽电缆。 4. 多个编码器接上位机时,由于编码器返回数据没有奇偶校验,故建议在上位机编程时在时间上对各个编码器返回的数据进行区分。 5. 当系统中有电动机时,编码器电源需与其他电源隔离。 6. 由于RS485电路是差分形式的,A+,B-都是带电压的,常时间接地或接高电平都会造成RS485电路损坏。 上海楚嘉自动化科技有限公司 技术服务部

IC卡通信协议详解(7816-3)

目录 第一章IC卡通信过程整体归纳 (1) 第二章IC卡的电气特性 (3) 1.IC卡的触点分配 (3) 2.IC卡的电气特性 (3) 2.1 VCC (3) 2.2 I/O (3) 2.3 CLK (3) 2.4 RST (3) 2.2 VPP (3) 第三章IC卡的操作过程 (4) 1、IC卡操作的一般过程 (4) 2、卡激活 (4) 3、冷复位 (4) 4、热复位 (5) 5、时钟停止 (6) 6、去激活 (6) 第四章复位应答 (8) 1、异步字符 (8) 1.1 字符结构 (8) 1.2 错误信号和字符副本 (8) 2、复位应答 (9) 2.1 复位应答的序列配置 (9) 2.2 复位应答的结构和内容 (11) 第五章协议和参数选择 (14) 1.PPS协议 (14) 2.PPS请求的结构和内容 (14) 3.成功的PPS交换 (14) 第六章异步半双工字符传输协议 (16) 1、命令的结构和处理 (16) 2、过程字节 (16) 3、NULL字节 (16) 4、确认字节 (16) 5、状态字节 (17) 第七章异步半双工块传输 (18) 1.数据块块帧结构 (18) 2.起始域 (18) 3.信息域 (18) 4.终止域 (19) 5.信息域尺寸 (19) 6.等待时间 (19) 7.数据链路层字符成分 (20) 8.数据链路层块成分 (20) 9.链接 (20)

第一章IC卡通信过程整体归纳 根据协议,IC卡的操作信息交互流程大概为(见图1): (1)接口设备能够控制IC卡各IO引脚使其激活。 (2)接口设备给卡发送复位信号使卡复位启动。 (3)卡要向接口设备发送复位应答信号,将通信中必要的相关信息告知接口设备。(4)接口设备对卡进行一次热复位,卡进行复位应答。 (5)接口设备发起一个PPS交互指令,选择要与卡通信的协议和相关参数。 (6)根据选择的协议(T=0或T=1)进行数据的通信。

通讯协议标准

编号: 密级:内部 页数:__________基于RS485接口的DGL通信协议(修改) 编写:____________________ 校对:____________________ 审核:____________________ 批准:____________________ 北京华美特科贸有限公司 二○○二年十二月六日

1.前言 在常见的数字式磁致伸缩液位计中,多采用RS485通信方式。但RS485标准仅对物理层接口进行了明确定义,并没有制定通信协议标准。因此,在RS485的基础上,派生出很多不同的协议,不同公司均可根据自身需要设计符合实际情况的通信协议。并且,RS485允许单总线多机通信,如果通信协议设计不好,就会造成相互干扰和总线闭锁等现象。如果在一条总线上挂接不同类型的产品,由于协议不一样,很容易造成误触发,造成总线阻塞,使得不同产品对总线的兼容性很差。 随着RS485的发展,Modicon公司提出的MODBUS协议逐步得到广泛认可,已在工业领域得到广泛应用。而MODBUS的协议规范比较烦琐,并且每字节数据仅用低4位(范围:0~15),在信息量相同时,对总线占用时间较长。 DGL协议是根据以上问题提出的一种通信协议。在制定该协议时已充分考虑以下几点要求: a.兼容于MODBUS 。也就是说,符合该协议的从机均可挂接到同一总线上。 b.要适应大数据量的通信。如:满足产品在线程序更新的需要(未来功能)。 c.数据传输需稳定可靠。对不确定因素应加入必要的冗错措施。 d.降低总线的占用率,保证数据传输的通畅。 2.协议描述 为了兼容其它协议,现做以下定义: 通信数据均用1字节的16进制数表示。从机的地址范围为:0x80~0xFD,即:MSB=1; 命令和数据的数值范围均应控制在0~0x7F之间。即:MSB=0,以区别地址和其它数据。 液位计的编码地址为:0x82~0x9F。其初始地址(出厂默认值)为:0x81。 罐旁表的编织地址为:0xA2~0xBF。其初始地址(出厂默认值)为:0xA1。 其它地址用于连接其它类型的设备,也可用于液位计、罐区表地址不够时的扩充。 液位计的命令范围为:0x01~0x2F,共47条,将分别用于参数设定、实时测量、诊断测试、在线编程等。 通信的基本参数为:4800波特率,1个起始位,1个结束位。字节校验为奇校验。 本协议的数据包是参照MODBUS RTU 通信格式编写,并对其进行了部分修改,以提高数据传输的速度。另外,还部分参照了HART协议。其具体格式如下: 表中,数据的最大字节数为16个。也就是说,整个数据包最长为20个字节。 “校验和”是其前面所有数据异或得到的数值,然后将该数值MSB位清零,使其满足0~7F 的要求。在验证接收数据包的“校验和”是否正确时,可将所有接收数据(包括“校验和”)进行异或操作,得到的数据应=0x80。这是因为,只有“地址”的MSB=1,所以异或结果的MSB也必然等于1。 本协议不支持MODBUS中所规定的广播模式。 3.时序安排 在上电后,液位计将先延迟10秒,等待电源稳定。然后,用5秒的时间进行自检和测试数据。

51串口通信协议(新型篇)

51串口通信协议(新型篇) C51编程:这是网友牛毅编的一个C51串口通讯程序! //PC读MCU指令结构:(中断方式,ASCII码表示) //帧:帧头标志|帧类型|器件地址|启始地址|长度n|效验和|帧尾标志 //值: 'n' 'y'| 'r' | 0x01 | x | x | x |0x13 0x10 //字节数: 2 | 1 | 1 | 1 | 1 | 1 | 2 //求和: ///////////////////////////////////////////////////////////////////// //公司名称:*** //模块名:protocol.c //创建者:牛毅 //修改者: //功能描述:中断方式:本程序为mcu的串口通讯提供(贞结构)函数接口,包括具体协议部分 //其他说明:只提供对A T89c51具体硬件的可靠访问接口 //版本:1.0 //信息:QQ 75011221 ///////////////////////////////////////////////////////////////////// #include #include //预定义 //帧 #define F_ST1 0x6e //帧头标志n #define F_ST2 0x79 //帧头标志y #define F_R 0x72 //帧类型读r #define F_W 0x77 //帧类型写w #define F_D 0x64 //帧类型数据帧d #define F_B 0x62 //帧类型写回应帧b #define F_C 0x63 //帧类型重发命令帧c #define F_Q 0x71 //帧类型放弃帧q #define F_ADDR 0x31 //器件地址0-9 #define F_END 0x7a //帧尾标志z #define F_SPACE 0x30 //空标志0 #define F_ERR1 0x31 //错误标志1,flagerr 1 #define F_ERR2 0x32 //错误标志2 2 //常数 #define S_MAXBUF 16 //接收/发送数据的最大缓存量 #define FIELD_MAXBUF 48 //最小场缓存,可以大于48字节,因为协议是以20字节为

永宏FBs-PLC的自由通讯协议及应用

引言 电子技术的日益发展,通讯接口给工业控制的自动化集中控制带来巨大的变化,系统的分布控制,网络的远程监控等都是通过通讯来实现监控。各个智能设备之间要进行正常通讯,首先要保证以下 3 个条件一致:通讯硬件界面相同;通讯参数设置一致;以及通讯协议一致。在串口的通讯中,界面都已经是标准化,参数设定亦可透过设定来保持一致。但在智能自动化设备中,由于品牌和产品都存在差异,对于同一种产品,不同的品牌就可能存在不同的通讯协议!所以,智能设备的通讯,设备的选择是关键!但针对同种协议的产品,就有可能缩小设备选型范围,势必会对系统的组成存在影响。如造成成本的提升,系统得不到优化等问题。 1. 系统硬件要求 1.1 永宏FBs-PLC 通讯功能 永宏FBs-PLC提供相当强大的通讯功能,SoC单晶片中集合 5 个高速通讯端口。主机自带一个通讯端口。多样的扩展方式,可以选择通讯模块或者通讯板实现通讯端口的扩展,单一主机可以最多扩展至 5 个通讯端口;数据传输可以选择ASCII 码或者速度快一倍的二进制码来传输;每个通讯端口通讯速率高达921.6Kbps ;支持RS-232,RS-485,USB 和Ethernet 等界面;通讯协议提供永宏标准通讯协议,工业界通用的ModBus 标准协议,以及自由口协议。这里我们就永宏PLC 的自由通讯协议做进一步探讨。 1.2 永宏PLC 自由通讯协议简介 所谓自由通讯协议,永宏PLC 作为主站,根据通讯的从站设备通讯格式来编写通讯传输数据格式,以保证通讯格式的一致性。在符合从站设备的数据格式时设备才能识别主站发送出来的命令要求,再根据命令来进行处理数据、做响应回复等工作。这样将大大提高PLC 控制对象的通讯接口兼容。 图 1.1 RS-485 单主多从通讯示意图 如图 1.1 所示,一个永宏PLC 可以跟多个智能从站进行通讯;智能从站可以同为一种设备不同品牌,或者不同设备不同品牌,例如其他品牌的PLC、变频器、智能仪表等,只要 符合RS-485 通讯要求即可组网。 2. 软件系统要求与设计

电话视频通信协议(协议模板)

A contract is generally a legal act of both parties and can only be established if the parties reach an agreement. Protect the legal rights of both parties after signing. (协议范本) 甲方:___________________ 乙方:___________________ 日期:___________________ 电话视频通信协议(协议模板)

电话视频通信协议(协议模板)说明:合同一般是双方的法律行为,只有双方当事人达成协议才能成立。签订合同后依法保护双方的合法权益,避免很多不必要的争议。可用作电子存档或实体印刷,使用时请详细阅读条款。 甲方:_________乙方:_________ 为了满足宽带网用户使用高科技视频通信的需要,促进中国互联网增值业务的发展,_________公司推出具有国际领先水平的可视电话视频通信业务。为维护甲、乙双方的合法权益,双方就甲方使用乙方提供的视频通信服务一事,根据国内现时的相关法律、行规规定达成如下协议,以供共同遵照执行: 1.为了保证乙方对甲方的服务质量,甲方必须向乙方提供包括姓名(单位用户则为单位全称)、出生年月、住址(包括邮政编码)、身份证号、工作单位、联系电话等在内的客户资料。若甲方提供的客户资料虚假或不详细,乙方保留向甲方要求进一步提供身份证复印件(单位用户则为法人营业执照副本复印件)的权利,必要时有权停止向甲方提供服务,并依法追究甲方的法律责任。乙方保证对甲方提供的身份资料只作提供本协议项下的服务之用,未经甲方授权不向任何第三方公开,但法律另有规定的除外。

各种通信协议

分层及通信协议 协议软件是计算机通信网中各部分之间所必须遵守的规则的集合,它定义了通信各部分交换信息时的顺序、格式和词汇。协议软件是计算机通信网软件中最重要的部分。网络的体系结构往往都是和协议对应的,而且,网络管理软件、交换与路由软件以及应用软件等都要通过协议软件才能发生作用。 一、通信协议 1、什么是通信协议 通信协议(简称协议Protoco l),是指相互通信的双方(或多方)对如何进行信息交换所一致同意的一整套规则。一个网络有一系列的协议,每一个协议都规定了一个特定任务的完成。协议的作用是完成计算机之间有序的信息交换。 通信网络是由处在不同位置上的各节点用通信链路连接而组成的一个群体。通信网必须在节点之间以及不同节点上的用户之间提供有效的通信,即提供有效的接入通路。在计算机通信网中,将这种接入通路称为连接(connection)。建立一次连接必需要遵守的一些规则,这些规则也就是通信网设计时所要考虑的主要问题。 (l)为了能在两个硬件设备之间建立起连接,应保证在源、宿点之间存在物理的传输媒介,在该通路的各条链路上要执行某种协议。 如果传输线路使用电话线,则要通过调制解调器将信号从数字转换成模拟的,并在接收端进行反变换。 如果用的是数字传输线路,则在数据处理设备和通信设备之间,必须有一个数字适配器,以便将数字信号的格式转换成两种设备各自所期望的形式。 为了在两个端设备之间互换数据,需要协调和同步,调制解调器和数字适配器必须执行它们自己的协议。 无论是模拟的还是数字的通信设备,调制解调器和数字适配器的状态必须由接到节点上的设备来控制,这里必定有一个物理的或电气的接口来执行这种功能,执行某种适当的协议来达到这一控制目的。 (2)在计算机通信网中,许多信息源都是突发性的(bursty),问题是要利用信息的这种突发性质来降低消耗在线路上的费用,由此开发了许多共享通信资源的技术。所谓共享,是指允许多个用户使用同一通信资源,这就产生了多用户的接入问题。多路接入

S7-200 CPU 通信口的自由口模式实现 Modbus 通信协议

在组态王里点击“com1”(根据你在前面已经定的com口而定),然后在右边的界面上显示你所建立的文件,然后对你编译的主画面点反键,然后在下拉菜单中点击“测试---”(你的文件名),再随便在选项里输入一个你编写的程序里的标志位,看能不能显示你的PLC内的当前值,如果可以显示,就应该是通信上了。 通过 S7-200 CPU 通信口的自由口模式实现 Modbus 通信协议,可以通过无线数据电台等慢速通信设备传输。这为组成 S7-200 之间的简单无线通信网络提供了便利。 详细情况请参考《S7-200系统手册》(2002 年 10 月或以后版本)的相应章节。Modbus 是公开通信协议,其最简单的串行通信部分仅规定了在串行线路的基本数据传输格式,在 OSI 七层协议模型中只到 1,2 层。 Modbus 具有两种串行传输模式,ASCII 和 RTU。它们定义了数据如何打包、解码的不同方式。支持 Modbus 协议的设备一般都支持 RTU 格式。 通信双方必须同时支持上述模式中的一种。 Modbus 是一种单主站的主/从通信模式。Modbus 网络上只能有一个主站存在,主站在 Modbus 网络上没有地址,从站的地址范围为 0 - 247,其中 0 为广播地址,从站的实际地址范围为 1 - 247。 Modbus 通信标准协议可以通过各种传输方式传播,如 RS232C、RS485、光纤、无线电等。在 S7-200 CPU 通信口上实现的是 RS485 半双工通信,使用的 是 S7-200 的自由口功能。 Modbus RTU 主站指令库(测试版) 西门子针对 S7-200 最新推出支持 Modbus RTU 主站的协议库(测试版),用户可以将这个库添加到 Micro/WIN 软件中,并通过调用库指令,方便地实 现 Modbus RTU 主站的功能。 注意: 1. Modbus RTU 主站指令库的功能是通过在用户程序中调用预先编好的程序功 能块实现的,该库只对 Port 0 口有效。该指令库将设置 Port 0 工作在自由口通信模式下。 2. Modbus RTU 主站指令库使用了一些用户中断功能,编其他程序时不能在用户程序中禁止中断。 使用 Modbus RTU 主站指令库,可以读写 Modbus RTU 从站的数字量、模拟 量 I/O 以及保持寄存器。 要使用 Modbus RTU 主站指令库,须遵循下列步骤: 取得 Modbus RTU 主站指令库文件,并添加到编程软件 STEP 7-Micro/WIN 中;按照要求编写用户程序调用 Modubs RTU 主站指令库。

思科X.25协议详解

C H A P T E R 17Chapter Goals ? Discuss the history and development of the X.25 protocol.? Describe the basic functions and components of X.25.?Describe the frame formats of X.25. X.25 Introduction X.25 is an International Telecommunication Union–Telecommunication Standardization Sector (ITU-T) protocol standard for WAN communications that defines how connections between user devices and network devices are established and maintained. X.25 is designed to operate effectively regardless of the type of systems connected to the network. It is typically used in the packet-switched networks (PSNs) of common carriers, such as the telephone companies. Subscribers are charged based on their use of the network. The development of the X.25 standard was initiated by the common carriers in the 1970s. At that time, there was a need for WAN protocols capable of providing connectivity across public data networks (PDNs). X.25 is now administered as an international standard by the ITU-T. X.25 Devices and Protocol Operation X.25 network devices fall into three general categories: data terminal equipment (DTE), data circuit-terminating equipment (DCE), and packet-switching exchange (PSE). Data terminal equipment devices are end systems that communicate across the X.25 network. They are usually terminals, personal computers, or network hosts, and are located on the premises of individual subscribers. DCE devices are communications devices, such as modems and packet switches, that provide the interface between DTE devices and a PSE, and are generally located in the carrier’s facilities. PSEs are switches that compose the bulk of the carrier’s network. They transfer data from one DTE device to another through the X.25 PSN. Figure 17-1 illustrates the relationships among the three types of X.25 network devices.

通信服务合同模板(标准版)

编号:GR-WR-19539 通信服务合同模板(标准 版) After negotiation and consultation, both parties jointly recognize and abide by their responsibilities and obligations, and elaborate the agreed commitment results within the specified time. 甲方:____________________ 乙方:____________________ 签订时间:____________________ 本文档下载后可任意修改

通信服务合同模板(标准版) 备注:本合同书适用于约定双方经过谈判、协商而共同承认、共同遵守的责任与义务,同时阐 述确定的时间内达成约定的承诺结果。文档可直接下载或修改,使用时请详细阅读内容。 通信服务协议 为保护乙方的通信权利,维护甲方合法的通信经营权,双方本着自愿、平等的原则,达成协议如下: 一、协议双方的权利与义务 (一)乙方的权利与义务 1.依法使用电信的自由和通信秘密受法律保护。 2.有权自主选择使用甲方依法开办的固定电话通信业务。 3.有对甲方执行的收费项目和资费标准的知晓权。 4.应当在约定的时限内(全月)缴纳电信费用。 5.登记办理固定电话业务须提供真实、无误的乙方资料,并对乙方资料的准确性、真实性,承担法律责任。 6.乙方名称、结算方式发生变更时,应在一周内办理变更确认手续,因未按时办理变更手续造成的损失由乙方自行承担。

7.使用的用户终端设备必须符合国家规定的标准并取得进网许可证。 8.使用电信网络传输的信息内容及其后果由乙方负责。 9.配合甲方实施的固定电话服务变更。 (二)甲方的权利和义务 1.按照规定的标准收取各项费用。 2.按照国家规定的服务标准向乙方提供固定电话服务。并在营业场所公布收费项目和资费标准,并为乙方缴费提供方便。 3.甲方免费向乙方提供火警(119)、匪警(110)、医疗急救(120)、交通事故 报警(122)等紧急电话的接入服务。 4.甲方免费向乙方提供长途话费详细清单查询,并为乙方保留话费信息半年。 5.根据国家关于电话交换设备技术规范书、国家计委和信息产业部对电信计费的有关规定,固定网本地电话不提供详细话单。 6.乙方对缴纳的电信费用有异议的,甲方有义务采取必

HLP SV Modbus标准通讯协议格式

HLP_SV Modbus RTU 标准通讯协议格式 通信资料格式 Address Function Data CRC check 8 bits 8 bits N×8bits 16bits 1)Address通讯地址:1-247 2)Function:命令码8-bit命令 01 读线圈状态 上位机发送数据格式: ADDRESS 01 ADDRH ADDRL NUMH NUML CRC 注: ADDR: 00000 --- FFFF(ADDR=线圈地址-1);NUM: 0010-----0040 (NUM为要读线圈状态值的二进制数位数) 正确时变频器返回数据格式: ADDRESS 01 BYTECOUNT DATA1 DATA2 DATA3 DATAN CRC 注: BYTECOUNT:读取的字数 错误时变频器返回数据格式: ADDRESS 0X81 Errornum CRC 注: Errornum为错误类型代码 如:要检测变频器的输出频率 应发送数据:01 01 00 30 00 10 3D C9(16进制) 变频器返回数据:01 01 02 00 20 B8 24(16进制) 发送数据:0030hex(线圈地址49) 返回的数据位为“0020”(16进制),高位与低位互换,为2000。即输出频率为 303(Max Ref)的50%。关于2000对应50%,具体见图1。

03读保持寄存器 上位机发送数据格式: ADDRESS 03 ADDRH ADDRL NUMH NUML CRC 注:ADDR: 0 --- 0XFFFF;NUM: 0010-----0040 (NUM为要读取数据的字数) ADDR=Parameter Numbe r×10-1 正确时变频器返回数据格式: ADDRESS 03 BYTECOUNT DATA1 DATA 2 DATA 3 DATAN CRC 注: BYTECOUNT:读取的字节数 错误时变频器返回数据格式: ADDRESS 0X83 Errornum CRC 如:要读变频器参数303的设定值 应发送数据:01 03 0B D5 00 02 95 BC (16进制) Parameter 303(3029)=0BD5HEX 变频器返回数据:“:”01 03 04 00 00 EA 60 B5 7B 返回的数据位为“00 00 EA 60”(16进制)转换为10进制数为60000, 表示303设置值为60.000 ※当参数值为双字时,NUM的值必须等于2。否则无法读取或读取错误。 05 写单个线圈状态 上位机发送数据格式: ADDRESS 05ADDRH ADDRL DATAH DA TAL CRC 注:ADDR: 0 ---- 0XFFFF(ADDR=线圈地址-1);DATA=0000HEX(OFF) OR FF00(ON) HEX 正确时变频器返回数据格式: ADDRESS 05 DATAH DATAL BYTECOUNT CRC 错误时变频器返回数据格式: ADDRESS 0X85 Errornum CRC 如:要使写参数为写入RAM和EEPROM 应发送数据:01 05 00 40 FF 00 CRC(16进制) 变频器返回数据:01 05 FF 00 00 01 CRC(16进制) 发送数据:0040hex(线圈地址65) 06 写单个保持寄存器值(只能写参数值为单个字的参数) 上位机发送数据格式: ADDRESS 06 ADDRH ADDRL DA TAH DATAL CRC 注:ADDR: ADDR=Parameter Numbe r×10-1 正确时变频器返回数据格式: ADDRESS 06 ADDRH ADDRL DA TAH DA TAL CRC 错误时变频器返回数据: ADDRESS 0X86 Errornum CRC 如:要对变频器参数101写入1 应发送数据:01 06 00 03 F1 00 01 19 BD(16进制) 变频器返回数据:01 06 03 F1 00 01 19 BD(16进制) PARAMETER 101(1009)=03F1 HEX

菱f系列plc编程口通信协议

三菱FX系列 PLC 编程口通信协议总览 三菱PLC-FX2N 三菱FX系列PLC编程口通信协议总览 该协议实际上适用于PLC编程端口以及 FX-232AW 模块的通信。 通讯格式: 命令命令码目标设备 DEVICE READ CMD "0" X,Y,M,S,T,C,D DEVICE WRITE CMD "1" X,Y,M,S,T,C,D FORCE ON CMD " 7" X,Y,M,S,T,C FORCE OFF CMD "8" X,Y,M,S,T,C 传输格式: RS232C 波特率: 9600bps 奇偶: even 校验: 累加方式(和校验) 字符: ASCII 16进制代码: ENQ 05H 请求 ACK 06H PLC正确响应 NAK 15H PLC错误响应 STX 02H 报文开始 ETX 03H 报文结束 帧格式: STX CMD DATA ...... DATA ETX SUM(upper) SUM(lower) 例子: STX ,CMD ,ADDRESS, BYTES, ETX, SUM 02H, 30H, 31H,30H,46H,36H, 30H,34H, 03H, 37H,34H

SUM=CMD+......+ETX; 30h+31h+30h+46h+36h+30h+34h+03h=74h; 累加和超过两位取低两位 1、DEVICE READ(读出软设备状态值) 计算机向PLC发送: 始命令首地址位数终和校验 STX CMD GROUP ADDRESS BYTES ETX SUM 例子:从D123开始读取4个字节数据 02h 30h 31h,30h,46h,36h 30h,34h 03h 37h,34h 地址算法:address=address*2+1000h 再转换成ASCII 31h,30h,46h,36h PLC返回 STX 1ST DATA 2ND DATA ..... LAST DATA ETX SUM 注:最多可以读取64个字节的数据 例子:从指定的存储器单元读到3584这个数据 02h 33h 35h 38h 34h 03h 44h,36h 2、DEVICE WRITE(向PLC软设备写入值) 始命令首地址位数数据终和校验 STX CMD GROUP ADDRESS BYTES 1ST DATA 2ND DATA ...... LAST DATA ETX SUM 例子:向D123开始的两个存储器中写入1234,ABCD 02h 31h 31h,30h,46h,36h 30h,34h 33h,34h,31h,32h,43h,44h,41h,42h 03h 34h,39h PLC返回 ACK (06H) 接受正确 NAK (15H) 接受错误 3、位设备强制置位/复位 FORCE ON置位 始命令地址终和校验 STX CMD ADDRESS ETX SUM 02h 37h address 03h sum FORCE OFF复位 始命令地址终和校验

RIP路由协议详解

RIP路由协议(Routing Information Protocols,路由信息协议)是使用最广泛的距离向量协议,它是由施乐(Xerox)在70年代开发的。当时,RIP是XNS (Xerox Network Service,施乐网络服务)协议簇的一部分。TCP/IP版本的RIP是施乐协议的改进版。RIP最大的特点是,无论实现原理还是配置方法,都非常简单。 度量方法RIP的度量是基于跳数(hops count)的,每经过一台路由器,路径的跳数加一。如此一来,跳数越多,路径就越长,RIP算法会优先选择跳数少的路径。RIP支持的最大跳数是15,跳数为16的网络被认为不可达。 路由更新RIP路由协议中路由的更新是通过定时广播实现的。缺省情况下,路由器每隔30秒向与它相连的网络广播自己的路由表,接到广播的路由器将收到的信息添加至自身的路由表中。每个路由器都如此广播,最终网络上所有的路由器都会得知全部的路由信息。正常情况下,每30秒路由器就可以收到一次路由信息确认,如果经过180秒,即6个更新周期,一个路由项都没有得到确认,路由器就认为它已失效了。如果经过240秒,即8个更新周期,路由项仍没有得到确认,它就被从路由表中删除。上面的30秒,180秒和240秒的延时都是由计时器控制的,它们分别是更新计时器(_updateTimer)、无效计时器(Invalid Timer)和刷新计时器(Flush Timer)。 路由循环距离向量类的算法容易产生路由循环,RIP路由协议是距离向量算法的一种,所以它也不例外。如果网络上有路由循环,信息就会循环传递,永远不能到达目的地。为了避免这个问题,RIP等距离向量算法实现了下面4个机制。 水平分割(split horizon)。水平分割保证路由器记住每一条路由信息的来源,并且不在收到这条信息的端口上再次发送它。这是保证不产生路由循环的最基本措施。 毒性逆转(poison reverse)。当一条路径信息变为无效之后,路由器并不立即将它从路由表中删除,而是用16,即不可达的度量值将它广播出去。这样虽然增加了路由表的大小,但对消除路由循环很有帮助,它可以立即清除相邻路由器之间的任何环路。 触发更新(trigger update)。当路由表发生变化时,更新报文立即广播给相邻的所有路由器,而不是等待30秒的更新周期。同样,当一个路由器刚启动RIP 路由协议时,它广播请求报文。收到此广播的相邻路由器立即应答一个更新报文,而不必等到下一个更新周期。这样,网络拓扑的变化会最快地在网络上传播开,减少了路由循环产生的可能性。 抑制计时(holddown timer)。一条路由信息无效之后,一段时间内这条路由都处于抑制状态,即在一定时间内不再接收关于同一目的地址的路由更新。如果,路由器从一个网段上得知一条路径失效,然后,立即在另一个网段上得知这个路由有效。这个有效的信息往往是不正确的,抑制计时避免了这个问题,而且,当一条链路频繁起停时,抑制计时减少了路由的浮动,增加了网络的稳定性。 即便采用了上面的4种方法,路由循环的问题也不能完全解决,只是得到了最大程度的减少。一旦路由循环真的出现,路由项的度量值就会出现计数到无穷大(_countto Infinity)的情况。这是因为路由信息被循环传递,每传过一个路由器,度量值就加1,一直加到16,路径就成为不可达的了。RIP路由协议选择16作为不可达的度量值是很巧妙的,它既足够的大,保证了多数网络能够正常运行,又足够小,使得计数到无穷大所花费的时间最短。 邻居有些网络是NBMA(Non-Broad_cast MultiAccess,非广播多路访问)

几种通信协议

RS-232-C RS-232-C是OSI基本参考模型物理层部分的规格,它决定了连接器形状等物理特性、以0和1表示的电气特性及表示信号意义的逻辑特性。 RS-232-C是EIA发表的,是RS-232-B的修改版。本来是为连接模拟通信线路中的调制解调器等DCE及电传打印机等DTE拉接口而标准化的。现在很多个人计算机也用RS-232-C作为输入输出接口,用RS-232-C作为接口的个人计算机也很普及。 RS-232-C的如下特点:采用直通方式,双向通信,基本频带,电流环方式,串行传输方式,DCE-DTE间使用的信号形态,交接方式,全双工通信。RS-232-C在ITU建议的V.24和V.28规定的25引脚连接器在功能上具有互换性。 RS-232-C所使用的连接器为25引脚插入式连接器,一般称为25引脚D-SUB。DTE端的电缆顶端接公插头,DCE端接母插座。 RS-232-C所用电缆的形状并不固定,但大多使用带屏蔽的24芯电缆。电缆的最大长度为15m。使用RS-232-C在200K位/秒以下的任何速率都能进行数据传输。 RS-449 RS-449是1977年由EIA发表的标准,它规定了DTE和DCE之间的机械特性和电气特性。RS-449是想取代RS-232-C而开发的标准,但是几乎所有的数据通信设备厂家仍然采用原来的标准,所以RS-232-C仍然是最受欢迎的接口而被广泛采用。 RS-449的连接器使用ISO规格的37引脚及9引脚的连接器,2次通道(返回字通道)电路以外的所有相互连接的电路都使用37引脚的连接器,而2次通道电路则采用9引脚连接器。 RS-449的电特性,对平衡电路来说由RS-422-A规定,大体与V.11具有相同规格,而RS-423-A大体与V.10具有相同规格。

相关主题
文本预览
相关文档 最新文档