tcp协议范文

时间:2023-04-10 10:54:36

导语:如何才能写好一篇tcp协议,这就需要搜集整理更多的资料和文献,欢迎阅读由公务员之家整理的十篇范文,供你借鉴。

tcp协议

篇1

关键词:tcp/IP协议网络接口层网络层传输层端口应用层

中图分类号:TP311.52 文献标识码:A 文章编号:1007-9416(2012)03-0000-00

因特网是当今世界上最大的信息网络,自80年代以来,它的应用已从军事、科研与学术领域进入商业、传播和娱乐等领域,并于90年代成为发展最快的传播媒介。信息传输和网络互连是根据协议进行的,而因特网使用的就是TCP/IP协议。TCP/IP协议是因特网最基本的协议,是因特网的基础。TCP/IP的全称是Transmission Control Protocol/Internet Protocol的简写,中文译为传输控制协议/因特网互联协议。

1969年,因特网的前身阿帕网(ARPAnet),诞生之初仅连接了4台计算机,供科学家们进行计算机联网实验用。到70年代,ARPAnet已经有了好几十个计算机网络,但是每个网络只能在网络内部的计算机之间互联通信,不同计算机网络之间仍然不能互通。卡恩于1973 年提出开放的网络结构的思想。所谓开放的网络结构,指的是任何类型的网络都可以通过“网络互联结构”与其他网络连接,这是因特网的核心技术思想。为了适应开放的网络结构环境的需要,瑟夫与卡恩共同开发了TCP/IP协议,并于1974年正式提出。TCP/IP是实现不同网络互联的标准,成功地解决了不同硬件平台、不同网络产品和不同操作系统之间的兼容性问题。

TCP/IP协议定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准,它是因特网事实上的国际标准。协议采用了4层的层级结构,层次由低到高依次为:网络接口层、网络层、传输层、应用层。每一层都调用它的下一层所提供的服务来完成自己的需求。

1、网络接口层

网络接口层(通信子网)是数据包从一个设备的网络层传输到另外一个设备的网络层的方法。由于ARPNET的设计者注重的是网络互联,允许网络接口层采用已有的或是将来有的各种协议,所以这个层次中没有提供专门的协议,因此网络接口层实际上并不是因特网协议组中的一部分。实际上,TCP/IP协议可以通过网络接口层连接到任何网络上,例如X.25交换网或IEEE802局域网。[1]

2、网络层

网络层可以接收由网络接口层发来的数据包,并把该数据包发送到传输层;也可以把从传输层接收来的数据包传送到网络接口层。网络层的数据包是不可靠的,因为网络层并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。数据包中含有发送它的主机的地址(源IP地址)和接收它的主机的地址(目IP的地址)。

网络层的协议包括IP协议、ICMP协议、ARP协议、RARP协议等,其中IP协议是网络层的核心协议,完成数据从从源网络传输到目的网络的基本任务。IP协议定义了数据包在网际传送时的格式,目前使用最多的是IPv4版本,这一版本中用32位定义IP地址,可供使用的地址数超过37.2亿,但是仍然不能满足现今全球网络飞速发展的需求,因此IPv6版本应运而生。在IPv6版本中,IP地址共有128位,这样的IP地址数是原IP地址数的296倍,目前来看,IPV6的IP地址是不可能用完的。[2]

3、传输层

传输层提供应用进程间的通信。两个系统之间的应用进程的通信,是用每个信息中的如下四项进行确认的:源IP地址、目的IP地址、源端口号、目的端口号。其中源IP地址和目的IP地址已在网络层的介绍中说明。TCP/IP的端口号是一个软件结构,用来标识本地计算机应用层中各个进程在和运输层交互时的接口。在因特网不同的计算机中,相同的端口号是没有关联的。一个端口号对应一个16比特的数。服务进程通常使用一个固定的端口,例如,SMTP使用25、HTTP使用80。客户进程通常使用系统分配的一个随机端口号。[2]

传输层协议主要是传输控制协议TCP(Transmission Control Protocol)和用户数据报协议UDP(User Datagram protocol)。TCP协议是一种面向连接的、可靠的的传输机制。通信之前要建立连接,通讯完成时要拆除连接。它提供一种可靠的字节流保证数据完整、无损并且按顺序到达,TCP协议还能尽量连续不断地测试网络的负载并且控制发送数据的速度以避免网络过载,对于一些需要高可靠性的应用,可以选择TCP协议。UDP是一种面向无连接的,不可靠的传输机制。不是它特别不可靠,而是它不检查数据包是否已经到达目的地,并且不保证它们按顺序到达。UDP的典型应用是如音频和视频等这样的流媒体,对它们而言,按时到达比可靠性更重要,或者如DNS查找这样的简单查询/响应应用,否则建立可靠的连接所需的额外开销将是不成比例地大。

4、应用层

应用层是大多数与网络相关的程序为了通过网络与其他程序通信所使用的层。数据从与网络相关的程序以这种应用程序使用的格式编码成标准协议的格式并进行传送。来自应用程序的数据一旦被编码成一个标准的应用层协议,它将被传送到TCP/IP协议的下一层。

应用层一般提供面向用户的服务,如HTTP、FTP、SMTP、POP3。HTTP是超文本传输协议,用于浏览网页,FTP是文件传输协议,一般用于下载和上传文件。SMTP是简单邮件传输协议,用来控制信件的发送、中转。POP3是邮局协议第3版本,用于接收邮件。

TCP/IP有一个非常重要的特点,就是开放性,即TCP/IP的规范和Internet的技术都是公开的。目的就是使任何厂家生产的计算机都能相互通信,使Internet成为一个开放的系统。这正是后来Internet得到飞速发展的重要原因。

参考文献

[1]万雅静,黄巍,梁玉凤.网络基础实用教程[C].北京:机械工业出版社,2011:14-16.

篇2

关键词:TCP/IP;网络拥塞;拥塞控制;算法

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2013)07-1513-03

随着网络用户的不断增加,制约网络应用和发展的关键瓶颈是网络拥塞问题,对进入网络的数据流量进行控制是拥塞控制的主要目的,通过控制拥塞保证用户发送的数据流对通信网络不造成阻塞,并且瓶颈资源能够被合理的使用。可以在网络协议的不同层次上实施拥塞控制,首先对网络拥塞产生的原因进行分析,分类、归纳拥塞控制,持续时间越长的拥塞需要越高的控制层次来解决拥塞问题,并且拥塞控制的实现主要在传输层和网络层。

1 网络拥塞概述

网络的性能会逐渐下降,当过多的数据包存在于网络中时,这种现象被称为网络拥塞。吞吐量下降在发生网络拥塞的时候,并且严重的时候拥塞崩溃的现象会在发生。通常而言,增加的网络负载导致网络效率降低,在此时容易发生拥塞崩溃的现象。拥塞现象的描述如图1 。

图1 拥塞现象的描述

在较小的网络负载时,吞吐量随着负载的增长也会增长,两者为线性关系,相应的时间也缓慢增长。当网络容量被负载达到的时候,相应的时间急剧增加,吞吐量呈现缓慢增长,这一点被成为Knee点。吞吐量在负载超过一定量时开始急剧下降,路由器在负载继续增加的情况下开始丢包,这一点是死锁点。在拥塞控制机制中有拥塞控制和拥塞避免两种方式,前者的目的是在控制运行在死锁点附近的网络拥塞现象,后者是避免网络运行在Knee点的时候发证拥塞现象。前者是一种恢复措施,使网络从拥塞中恢复过来,进入正常运行状态;后者是一种预防措施,使网络维持在低延迟、高吞吐量状态,网络拥塞现象得以避免。

2 分析网络拥塞产生的原因

网络的处理能力和资源容量被网络的负载超出了是网络拥塞产生的根本原因,也就是网络对资源的总需求量大于总的可用资源,下面分析一下网络拥塞产生的原因。

1)不足的存储空间

一个输出端口需要对各种报文在接收端口的缓冲区域中进行排队,因为它接受的报文是由多个端口转发而来的,若满足使用要求的缓冲空间在输出端,报文就会丢失,尤其是突发的数据流也会丢失。这一矛盾的缓解通过增加存储空间来实现。但将会出现更加严重的拥塞现象在不断增加存储容量时。因为缓冲区网络结点的延时增加的时候,报文也会增加,最终端到端的确认时间也增加了,就会产生超时重发。网络负载因此会进一步增加,拥塞现象最终会加重。

2)不足的宽带容量

在低速链路中流通的高速数据流经常会产生拥塞现象,在数据发送率小于信道容量的时候,拥塞现象才会避免。不然在节点的缓冲区域堆集大量的报文就会产生拥塞。

3)速度缓慢的节点处理机

报文被放入其CPU队列中进行缓存当被路由器对其进行接收的时候,路由器来选择路由并且把报文转发到相应的节点。此时路由器的处理速度的快慢是能否出网络现拥塞的关键因素。

总而言之,只有考虑到从以上三方面的因素,来解决拥塞现象,优化整体性能。只考虑一方面内的因素拥塞问题不仅不能够解决,反而拥塞问题还会更加严重。

3 控制拥塞的策略

1)Tahoe和Reno拥塞控制算法

随着网络技术的发展,TCP拥塞控制有快速恢复(fast recovery)、快速重传(fast retransmit)、拥塞避免(congertion avoidance)、慢启动(slow start)这四种,其中常用的是TCP Tahoe和TCP Reno两种算法。快速重传、拥塞避免、慢启动是Tahoe包括的三个部分,并且改进了往返时间RTT,从而对超时重发计时器进行更好的重新设定,具体的算法描述如下:

最多发一个报文在一个RTT内。其中窗口的大小由w来表示,慢启动门限值由ssthresh来表示,是慢启动进入拥塞避免的分界值。

这种算法的基本思想是通过线性增加速率源端对网络中的空闲容量进行探测,当拥塞被检测到的时候用指数递减它的速率,在源端丢包被检测到的时候确认拥塞。实现拥塞避免和慢启动的例子如图图2 慢启动和拥塞避免的实现举例

由上图可知,每当一个丢包被检测到的时候,慢启动门限值被源端设置为当前窗口的一半,对丢失的包重传,窗口被设置为1,重新进入慢启动。

2)TCP中拥塞控制的关键

TCP协议在Internet上被95%的数据流使用,对发送端的发送速率进行控制是TCP中拥塞控制的关键。可以采用控制算法中的乘法减少加法增加(AIMD)的来解决拥塞问题。每个拥塞窗口由发送方维持着,如果没有发生窗口中的报文丢失,那么目前是良好的网络状况,窗口的大小被发送者加大,同时报文的发送速率加大。当窗口内的一个报文被发送方发现丢失的时候,则认为报文的丢失是由网络拥塞造成的,于是窗口的大小减半,随之发送速率也减小,拥塞加重的现象得以避免。

3)慢启动阶段的拥塞控制

一个连接被TCP启动的时候多个数据包被发送到网络时会造成不必要的网络拥塞和数据丢失,而慢启动可以避免这种现象的发生,还能避免吞吐量在AIMD算法中增加引起网速过慢的问题。初始化拥塞窗口cwnd为一个数据包大小在新的TCP连接建立的时候,按照cwnd大小源端进行数据的发送,也就是随着RTT的增长cwnd呈指数增长。

4)拥塞避免阶段

处理丢失数据包的方法被称为拥塞避免算法。当重复确认被发送方收到或数据包超时被发送方发现的时候,网络拥塞就会发生,此时进入拥塞避免阶段,置为1的cwnd在数据包发送超时并且重复确认被发送方收到时,那么每收到一个ACK,cwnd将增加segsize*segsize/cwnd。其中数据包的大小被称为segsize,cwnd在拥塞避免阶段不是呈指数增长而是呈线性增长的。

5)快速恢复和快速重传阶段

当3个或3个以上的重复ACK被源端收到的时候,发送方认为出现数据包丢失的现象,对数据包进行重新传输,而且启动阈值ssthresh被设置为一半的当前cwnd,然后对丢失的数据包重新传输,这个过程被称为快速传输。系统执行的不是慢启动算法而是拥塞避免算法,这被称为快速恢复,能够使TCP连接的吞吐量提高。另外,不必要的重传超时要想避免可以应用一种受限传输机制:在接收方中允许如果有广播窗口,一个或两个重复的ACK被发送方接收到后,发送方对新的报文段继续传输,具有较小窗口的TCP在受限的传输机制的允许下进行错误码恢复,不必要的重传得以避免。

6)IP 拥塞控制策略

对于Internet 的健壮性而言基于窗口的端到端的TCP拥塞控制起着关键性作用,在Internet的迅速发展的今天网络的规模也越来越大,并且日趋复杂的结构在不断出现,端对端的拥塞控制已经不能满足需求,那么对拥塞的控制也需要在网络层进行,需要在路由器中采用数据丢弃和排队算法策略。其中丢弃策略进行分配缓存是通过决定哪些包被丢弃来实现的,排队算法进行分配宽带是是通过决定哪些包可以被传输来实现的。IP 拥塞控制的方法有:先进先出、公平排队算法、加权公平排队算法。

总而言之,无论哪种拥塞控制方法都有它的优势,总体上包括TCP 拥塞控制和IP 拥塞控制两种,下面表格针对这两种方式进行了比较:

[TCP 与IP 拥塞控制的比较\&参数\&TCP 拥塞控制\&IP 拥塞控制\&实现位置\&端系统中\&网络内部\&短期拥塞\&可以处理\&较好处理\&长期拥塞\&可以处理\&无法处理\&不同数据流间的公平性\&难于实现\&可以实现\&延迟\&较大\&无\&]

4 结束语

通过上述网络拥塞概述、网络拥塞产生的原因、控制拥塞的策略,可以得知,随着互联网用户越来越多,网络宽带等资源也在持续增加,但是用户的需求仍然不能得到满足,逐渐暴漏出网络拥塞问题,拥塞如何更好的预防和控制,使网络具有同时到达资源并且低延时和低丢包率的最大效用。无论TCP拥塞控制还是IP 拥塞控制都有自身的优势,要想在这个基础上更好的解决网络拥塞问题,需要结合各种方法并且灵活的使用。

参考文献:

[1] The Stream Control Transmission Protocol (SCTP) as a Transport for the Session Initiation Protocol(SIP).internet Draft,IETF,Jan,2005 Work in Progress.

[2] 黄卫平.TCP/IP 协议中拥塞控制算法探讨[J].广西工学院学报,2003,14(2):71-73.

[3] Gonzalo Camarillo,Raimo Kantola.Evaluation of Transport Protocols for SIP .IEEE Network September/October 2003.

[4] 武航星,慕德俊,潘文平.网络拥塞算法综述[J].计算机科学,2007,34(2):51-54.

篇3

【关键词】 嵌入式 TCP/IP协议 以太网

一、引言

嵌入式网络通信在各个方面都得到了非常广泛的运用。目前最常见的就是总线和USB数据传输方式,传输速度即使可以达到较快的水平,但是其并不能够满足长距离的数据传输。因此,以太网能够弥补其在数据传输方面的缺陷。以太网能够实现一百米距离点对点的数据传输,如果要实现更加远距离的数据传输,则需要使用路由器或者交换机来完成。此文基于对CP2200嵌入式TCP/IP协议进行探究,并实现以太网嵌入式系统设计。

二、嵌入式TCP/IP协议的探究与实现

TCP/IP协议栈从上到下分别是由应用层、运输层、网络层和网络接口层所组成的四层结构,每一层各司其职,都有着不同的网络协议。依据软件实际使用的情况,在嵌入式系统当中为了达到网络通信的目的,需要对TCP/IP协议族进行裁剪。在对软件进行初始化的时候,也对单片机同时进行了初始化,其中包括对系统时钟、定时器、端口和串口进行了初始化。当然还有CP2200进行初始化,其中包括对MAC层和物理层进行初始化,并且中断使能。

在TCP/IP协议栈当中,运用层包含HTTP协议,运输层包含TCP协议和UDP协议,网络层包含ARP协议、IP协议和ICMP协议。以下是嵌入式TCP/IP协议的每个模块的实现流程:

1、HTTP协议模块。HTTP协议的发送函数http_send()即是TCP协议的发送函数和数据信息的结合,但是http_ send()函数主要是实现设计网页内容,JPEG的图片和HTML(超文本标记语言)等信息的使用依靠其函数实现。

2、TCP协议模块。TCP协议的发送函数tcp_send()是需要发送一个不包含任何数据的TCP报文,其作用是能够对字节头和校验和进行处理。通过对时间功能的设定,TCP协议的重传函数tcp_retransmit()能够实现对数据最多为两次重传的传输功能,实现传输功能的应用程序是依靠传送页数据而实现的,即是HTTP服务程序。TCP协议的保活函数tcp_ inacivity()是没半秒运行一次,当连接正在建立的状态下,保活期满了的时候并且没能被再次使用,就会中断连接。TCP协议的接收函数tcp_rcve()实现对字节头和校验和的运算,进而对HTTP服务程序和其连接状态等情况进行断定,最后进行TCP有限的状态机判断数据包的程序。

3、UDP协议模块。UDP协议的发送函数udp_send()能够实现对字节头和校验和进行处理,其接收函数udp_rcve()是对所接收的UDP报文进行处理,如果没有受到UDP报文数据,就需要发送ICMP终点不可到达报文。

4、ARP协议模块。ARP协议的发送函数arp_send(),在发送请求报文的时候,对于不清楚目的物理地址的,则是广播报文;在发送应答报文的时候,接收的一方的目的物理地址需要添加物理地址。ARP协议的重传函数arp_retransmit()能够实现当其发出ARP请求之后的半秒时间内没有任何响应,则进行再一次发送的功能,但是当两次发送没有得到响应就会对报文进行删除。ARP协议的缓存更新函数age_ arp_cache()能够每一分钟更新一次。ARP的解析函数arp_ resolve()能够对所发送的IP报文目的IP地址进行解析,如果发送IP地址和目的IP地址都不在相同的一个网络当中,那么此IP地址是网关IP地址,然后在缓存表当中对其进行查找,如果找不到就需要发送ARP请求报文。ARP协议的接收函数arp_rcve()能够实现对报文进行接收或者应答,对缓存表需要进行更新和重新定时,如果所接受的报文是应答报文,则需要发送等候地址解析的IP报文,但是所接收到的报文是请求报文 ,则需要发送ARP应答报文。

5、IP协议模块。IP协议的发送函数ip_send9()能够实现对发送IP报文的20字节头和校验和进行处理,进而使用网络接口层进行发送。IP协议接收函数ip_rcve()能够根据版本情况和所接收报文的种类转移到相应的接收函数来处理。

6、ICMP协议模块。ICMP协议模块的接收函数icmp_ rcve()是实现对ping请求的接收进行处理,并且处理ICMP不同种类的报文。其中Ping命令请求信息函数ping_send()是用来检测发送接收两方的接收情况。

三、结言

综上所述,此文对TCP/IP的网络结构中的各层协议模块进行探究,基于网络控制芯片CP2200的以太网接口和单片机C8051F340,并用编程语言来实现嵌入式以太网通信,同时进一步通过对各个层协议的裁剪,实现嵌入式以太网的数据通信。根据现阶段来看,嵌入式网络通信基本上都是依靠TCP/IP协议来实现的,嵌入式设备和网络两者相结合是嵌入式系统今后发展的主要方向。因此,我们要更加深入地对嵌入式TCP/IP协议进行探究以及更深层次的功能实现。

参 考 文 献

篇4

1网络隐蔽通道的基本原理

早期对隐蔽通道的定义只局限于操作系统内部,研究的重点也是针对操作系统的安全。随着网络技术的快速发展,隐蔽通道已经被应用到网络技术中。由于网络协议在设计时存在漏洞,如网络协议的首部存在冗余字段,而网络设备对这些字段的限制比较宽松,由此可以通过精心的构造,利用这些字段实现隐蔽通信,就形成了网络隐蔽通道[5]。因此,广义地讲,网络隐蔽通道是指各种利用非正常的通信手段在网络中传递信息的通道。图1为隐蔽通道模型。

2建立网络隐蔽通道的方法

建立隐蔽通道的方法一般就是利用网络传输协议设计中存在的一些不严密的地方来隐藏信息,以躲过网络安全防护系统和防火墙系统,达到传输非法信息的目的[6]。由于防火墙或入侵检测系统往往只注重对数据部分的检测,而忽略了对首部息的检测,因此就可以从以下途径来建立隐蔽通道:一是利用TCP/IP协议的首部中的一些很少使用或不使用的域来隐藏信息;二是可以利用数据传输时数据包头中的一些必须强制填充的域(如IP数据包头中的源地址、目的地址和TCP数据包头中的源端口域、目的端口域、序列号域等)来隐藏信息;此外,还可以利用第三方合法主机中转建立隐蔽通道,利用Ping命令隐藏信息建立隐蔽通道等方法。

3基于TCP协议首部的隐蔽通道

3.1TCP协议首部隐蔽通道设计思想基于TCP协议模型网络隐蔽通道的设计思想主要是利用该模型中的协议来进行的,而双方的通信方式则是“合法的”,通信前双方约定好用以隐藏或解析隐蔽信息的规则,然后发送端依据该规则对要发送的隐蔽信息进行编码、伪装、发送,接收端收到经过编码的信息后,便会依据发送端产生的规则来解析隐蔽信息。TCP协议首部就是用于隐蔽信息的首选目标。图2为TCP协议首部的结构,主要包括源端口和目标端口字段、确认序列号、首部长度、标志位、窗口、检验和及紧急指针等字段。在TCP协议首部的这些字段中,很多字段在通常情况下根本不用或很少使用,可以用来隐藏信息。本文选择序列号字段和确认序列号字段作为隐蔽通道的载体,主要有两方面的原因:一是它们的长度达到32bit,可以隐藏更多信息,同时数据位很多,往往难以检测;二是它们的值在数据传输过程中的变化具有规律性,接收端还原数据比较容易。假设要在网络中的客户端A和服务端B之间构建隐蔽通道,还需要借助第三方受信的Web服务器C。利用TCP序列号来实现数据隐蔽传输的方法是:首先客户端A构造自己的SYN数据包,向受信的Web服务器C发出建立连接的请求,而服务端B也捕获到该SYN包,就伪造Web服务器C向客户端A发送返回的SYN+ACK数据包,并在TCP序列号字段中携带加密的隐秘信息;客户端A从服务端B伪造的Web服务器返回数据包中捕获隐秘信息或指令解析并执行,从而实现了将信息从客户端A到服务端B之间的隐蔽传输。由于在整个数据通信过程中并没有形成任何一个完整的TCP三次握手,并且返回的SYN+ACK包可看作对每个SYN包的响应,因此可以达到规避防火墙,实现隐藏信息的目的。

3.2隐蔽通道的构建利用TCP协议首部构建隐蔽传输通道,主要就是要在发送端生成包数据包时将隐秘信息嵌入,然后在接收端捕获含有隐秘信息的数据,并将其解码出来。由于在数据传输过程中使用了第三方受信的Web服务器,隐秘信息是隐藏在向Web服务器发送请求的数据包中,又通过接收方伪造Web服务器向发送方返回应答数据包,同时也将隐秘信息隐藏在返回的应答数据包中。在隐秘信息传输过程中没有形成完整的三次握手,因此不会给正常通信造成影响,也不会引起防火墙的反应。而将隐秘信息嵌入TCP数据包首部的序列号字段和确认序列号字段,这两个字段长度均为32bit,因而可以隐藏更多信息,同时数据位多,更加难以检测。

3.2.1数据包的生成和发送生成网络数据包的方法有基于原始套接字的方法、基于WinPcap的方法和基于Libnet的方法等[7]。本文采用基于WinPcap的方法,具体包括两个部分:(1)在客户端生成获取网关MAC地址的ARP请求数据包,目的是为了获取本机、服务端以及网关的MAC地址。由于局域网中ARP数据包大量存在,且机器中的动态ARP表需要不断更新,正常的ARP数据包不会引起防火墙等设备的怀疑,因此只需要生成正常的ARP请求数据包即可。使用Winsock库提供的SendARP()函数能十分方便地生成ARP请求数据包,获取与IP地址对应的物理地址。(2)生成手工制作的TCP数据包,各字段符合TCP协议的定义,发起对受信的Web服务器的建立连接请求,在服务端则伪造Web服务器,返回嵌入了隐秘信息的SYN+ACK数据包到客户端。

3.2.2数据包的捕获客户端捕获数据包后,需要对其进行分解,对每层协议进行解析,然后读取所传送的数据内容,最后再对数据进行解码和处理。捕获数据包的方法也有多种,对应发送端,也采用了基于WinPcap的方法。其步骤为:首先使用pcap_findalldevs()获得主机的网络设备列表,然后使用pcap_open_live()打开网络设备,使用函数pcap_compile()编译过滤规则和使用函数pcap_setfilter()设置过滤规则。之后使用pcap_loop()和pcap_next_ex()捕获数据包。捕获到数据包后就可以对其进行分解和解析,将TCP首部中含有隐秘信息的序列号或确认序列号的内容取出,经解密后就得到隐秘信息。

4基于TCP首部的隐蔽通道系统的实现

实现基于TCP首部的隐蔽通道就是采用第3节中所述的思想和方法,在发送端伪造TCP协议发送包含有隐秘信息数据包,在接收端对接收的数据包中的隐蔽信息进行相应处理。

4.1系统的总体构架系统的功能原理如图3所示。通过数据包生成技术,客户端将隐藏信息加密后嵌入TCP协议首部的序列号字段或确认号字段,对可信的第三方Web服务器发起连接请求。服务端则伪造Web服务器向客户端返回SYN+ACK数据包。通过数据包捕获技术,服务端从客户端发往Web服务器的请求数据包中捕获隐秘信息并还原。客户端则从服务端伪造Web服务器的返回数据包中捕获隐秘信息或指令解析并执行。

4.2系统功能及实现

系统功能模块系统可分为数据包生成模块、数据包捕获模块、管理与控制模块和指令解析模块,如图4所示。其中,数据包的生成和捕获模块利用多线程技术实现,执行时不会造成MFC界面假死。管理与控制模块负责处理网络设备的获取与控制。指令解析模块对传递的信息进行显示和执行指令。秘密信息经加密后嵌入数据包发往公开信道,接收端在公开信道捕获数据包并对其进行解密。

5实验结果及分析

经过实验,通信功能方面,双方互发的消息都能正确接收。控制功能方面,能够通过在客户端发送命令来实现对服务端的控制。经测试,该系统在WindowsXPSP2和Windows7操作系统中运行良好。实验结果见表1和表2。实验结果表明,该系统不仅可以实现信息传输和远程控制的功能,而且能够成功躲避各种安全防护系统的防范。

6结束语

篇5

关键词:嵌入式系统;TCP/IP协议;应用研究

1. 前言

随着互联网商品化的不断发展,互联网信息共享表现出越来越大诱惑力。在不用PC机基础上,通过ISP采取8位的微控制器接到互联网上并取代传统以PC机为核心应用模式,已成为现在乃至未来互联网发展主要趋势。为把单片机体系有效接到互联网上务必要做好两手准备,在硬件上要根据系统的主控器加上网络接口,在软件商要为之提供相对应通信协议。因单片机具有较小存储单元且数据处理较慢,因此采用PC机TCP/IP协议已无法嵌到单片机里,所以简化TCP/IP协议,实现单片机和互联网间电子邮件的运输对达到单片机和互联网间信息传输目的具有重要推动作用,下面主要研究嵌入式系统的TCP/IP协议的应用研究。

2. 嵌入式系统TCP/IP协议在硬件中的应用

2.1 单片机嵌入互联网模式选择

2.1.1 EmWarea其EMIT技术

这种技术采取的是标准互联网协议并对16位和8位嵌入式的设备管理,该类嵌入模式是使用TCP/IP协议栈和网关在Internet里桥接。选取EMIT技术虽可使用在各类型单片机上,但却要求系统工程师熟悉相关接口和掌握emNeT协议,有着较大工作量。

2.1.2 PC网卡加上专用网

该类单片机嵌入互联网模式是采用CANBus、RS485、RS232等专用网络将小批量单片机均连接起来后,再把专业网络均连接在同一台的PC机上面,因其依靠PC机为协议实现机制转换,所以当多个单片机体系较为分散时,该类专用网络的布置就显得很不方便,在PC机里装上专门协议软件来转换机制,又将发开成本增加了。

2.1.3 MCU加上网卡芯片

这类单片机嵌入互联网模式是用单片机对TCP/IP协议进行加载并据此对以太网网卡进行控制实现数据的传输,是采用TCP/IP协议嵌入互联网。该饭饭么有使用网关或PC机平台,因此,开发成本降低,只需相关人员深层次了解单片机、网卡的驱动程序和TCP/IP协议。

分析完以上三种单片机嵌入互联网方案,可知MCU加上网卡芯片为最佳方案,最为经济模式。

2.2 系统的硬件结构

系统单片机应该采取89C51,而网卡芯片应该采取RTL8019AS。此外,读取键盘其输入数据与指令应该串行E2PROM采取24C256.89C51在处理操作时,要通过网络接口的电路和网卡芯片来实现单片机和互联网接入任务,从而进一步达成电子邮件接收发送功能。

3. 嵌入式系统TCP/IP协议在软件中的应用

3.1 TCP/IP协议特点

高级系统里虽可支持完整TCP/IP协议,但针对单片机系统却很难将其做到。根据以上特点,第一,要按照各类系统特点及功能对TCP/IP协议进行特定设计,仅仅需要达到相关协议需求;第二,针对具体实际运用,为避免单片机其内部资源出现不足,在保证所需协议实现基础功能前提下做好精简工作。单片机中程序结构通常为硬件中断和顺序执行相结合模式,因此,对于处理TCP/IP协议工作应该将其在主程序顺序循环里,使用查询式来控制网卡芯片,其它中断任务实行间隙中间隙TCP/IP协议处理,使用时间成本换取系统可靠性。

单片机读取数据是靠RTL8019AS在网络上面接受,并从网络接口的控制程序处将其读到缓冲区即E2PROM里来检测协议字段类型,从而去夜店那种协议可用来处理该分组。当格式出现错误时就将该分组丢弃。

3.2 TCP/IP协议的实现

实现软件采取51系列的单片机C语言开发的平台伟福6000,同时用COMP51编译器,下面具体就协议实现进行分析:

3.2.1 APR协议

APR协议其首要目的是完成IP地址和以太网地址间映射。在APR包里操作码相应字段突出APR应答、APR请求、RARP应答、RARP请求四种操作形式。该单片机体系仅仅对APR请求与APR应答响应,为有效提升网络传输效率与速度,防止每次数据传输前都要对APR地址给予解析才可活动响应目的地址,可构建一个储存常用目的地地址APR的高速缓存。其实现需要两个进程:(1)进程处理,处理APR响应与APR请求,与此同时也将APR的高速缓存更新;(2)进程寻址,在APR的高速缓存里为相应IP地址寻址与之对应以太网的地址。

3.2.2 IP协议

为实现单片机里对IP协议进行加载,同时又不对多个IP地址支持,主要通过以上进程来完成:(1)进程发送,首先把待发数据密闭封装到IP包里,然后再查看本机和目的主机在同一子网里与否,当处在同一子网里就将IP数据直接发送给目的主机,若不在同一子网就将数据包经默认路发送到路由器里;(2)进程接收,在得到了IP包过后,要对TP目的地址、头部版本等进行校验,正确以后,再将协议字段类型给予解析,并交由高层协议去处理。

3.2.3 ICMP协议

IP协议因无法提供链接服务,所以错误信息和报文无法传送给最初主体,针对此情况,对系统里接收ICMP包校验且无误后,且CODE域和TYPE来替代echo请求后,还需发送echo来应答,从而实现网络其诊断功能。

3.2.4 TCP协议

TCP协议面向端对端、连接可靠的通信协议,该部分主要通过以下进程达成:(1)构建连接。首先在客户机发送对端接入要求时,要可随时选送初始的序号;其次,服务器同样要选送属于自身初始的序号,客户机传送来的序号对答号要及时返送到客户机上;最后,客户机要再次发送应答段给服务器来当作服务器发送请求接入响应,包括数据每个TCP段均要取得相应对端返回应答段来当作握手信号以确保数据的可靠接收。作为应答段其自身则不需应答来预防应答陷入永无止境嵌套;(2)进程验证,该进程要使用相应措施对传输中错误给予消除来确保数据传输可靠性,例如:可用持续跟踪法对已发出的数据段进行跟踪来判断其返回与否以及数据丢失与否;也可用序列号对通信时失序、重复问题给予解决;对于数据误码的问题可用校验来解决等;(3)进程流量控制,首先设计滑动窗口用循环缓冲区域来做,对于窗口与ACK的配合要指明处于正确接收最后数据包后,同时要处在可接受序列号的范围内,并以此来控制流量;(4)连接关闭,首先客户 机对服务器发送关闭段,该时刻客户机只可对数据进行接收,不可再次发送数据;其次,服务器对客户机发送关闭即应答段,该时段,服务器仍旧可为客户机传输数据,也就是接入处在半关闭的状态;再次,服务器对客户机发送关闭段,此时可服务器不可再次发送出去数据;最后,客户机务必要对服务器关闭做出响应,对服务器发送关闭即应答段。

3.2.5 SMIP协议

SMIP协议只需依赖一个可靠规则数据的流通道,而不需依赖特定传输子系统。SMIP主要为面向基于命令、文字的协议,设计系统时该部分协议主要靠两进程构成:(1)处理底层邮件,提取信头其各字段的信息,并按照数据编码性质来处理数据,让其以用户能够接受刑事传输为图形用户的界面;(2)发送邮件,通过DATA、TO、RCPT、MAILFROM、HELO一系列接受方会话和指令,由25号能够采取电子邮件的传输TCP其保留端口来进行邮件的传输工作。

综上所述,嵌入式系统TCP/IP协议在硬件和软件上的应用可有效实现在单片机里采取电子邮件传输任务,探究嵌入式系统TCP/IP协议的应用不仅能够提高单片机和互联网间信息共享度,还可减少硬件的使用、降低成本和为使用带来便利。此外,采取51系列的单片机,虽然利于软件移植及二次开发,但却有着较慢数据传输速度,还需我们进一步探究。

参考文献:

.自动化与仪器仪表,2011(05).

作者简介:

篇6

【关键词】网络设备;TCP/IP协议;TELNET协议;工作脚本

一、背景

随着各电信运营商全业务市场运营的开展,电信企业内部的竞争日趋激烈,在电信企业如火如荼的竞争过程中,企业内部的人力、成本等资源都集中到了市场营销、客户服务与维系等窗口中,作为后台网络、设备维护人员,如何使用有限的人力资源和维护成本,来保障设备更稳定、更高效的运行成了各电信企业运维管理、系统支撑部门必须考虑的问题。

二、问题分析

电信企业内部接入网络的设备主要由应用服务器、生产终端设备和内部局域网的组建、管理、支撑设备组成。在日常的维护过程中,我们发现这些设备存在以下特性:

1)设备的多样性。上述设备中有网络交换机、路由器、小型机、工控机等,涉及操作系统有HP UNIX、SCO UNIX、LINUX、SUN SOLARIS等多种。

2)设备数量较多。随着电信企业内部的信息化水平不断提高,各类设备数量也不断增加,仅以路由器、交换机为例,德州的数量就数以百计。

3)地理位置的分散性。由于上述设备主要为各级分公司的系统提供服务,由于各级分公司、营业部位置的相对分散,就决定了此类设备在地理位置上的分散性。

设备多样、数量庞大、位置分散的特性就造成了此类设备管理的复杂性,那么,如何对上述设备进行有效的维护和管理呢?本文结合德州的实践经验,基于TCP/IP协议族,提出了电信企业内部设备智能化管理系统设计方法。

三、技术介绍

传输控制协议(TCP)、Telnet协议都是TCP/IP协议族中的一员。这两种协议为用户提供了在本地计算机上完成连接、控制远程服务器的能力。在终端使用者的电脑上使用TCP或telnet协议,连接到远程服务器,并可以通过程序,在本地终端上输入命令,送到服务器上运行,就像直接在服务器的控制台上输入一样。

TCP协议、TELNET协议是各类设备或其操作系统上普遍支持的两种网络协议,基于上述两种协议,通过编程可以实现对各种网络设备自动控制、数据采集,来为我们的维护工作提供便利。

四、系统结构

应用服务器通过C语言编写程序通过TCP协议、TELNET协议与各网络设备建立连接通道,通过两种方式与设备之间进行交互。一种方式是定时解析通过既定的数据采集脚本向各网络设备发送数据采集命令,由结果分析程序将命令返回的结果进行分析,写入数据库。第二种方式,终端用户通过主动向应用服务器发起查询、操作命令请求,由应用服务器将操作命令对一台或多台设备进行命令处理,并将处理结果返回。

在整个处理过程中,应用服务器扮演了两种角色,一方面与各网络设备建立双向命令处理通道,一方面通过网页来接受终端用户的查询、操作命令请求。

五、系统实现关键技术难点分析

在智能化网络设备管理系统的实现过程中,我针对系统实现过程的两个重点、难点问题,来介绍系统的设计方案。

1、TCP、TELNET协议接口设计

在使用TCP、TELNET协议与各网络设备连接过程中,在两个过程中下可能会出较长的时间延迟。

(1)在使用SOCKET、CONNECT函数与网络设备建立连接的过程中,如果远程设备掉电,或出现局部的网络中断,这部分设备在整个局域网中将变为不可见状态。而无论是TCP协议还是TELNENT协议,在面向连接的协议,如果CONNET函数在建立连接的过程中阻塞,会进行多次重试,直到重试次数超过操作系统设置最大超时次数位置,这个过程一般会持续3分钟左右的时间。(2)在CONNECT连接建立后,与SOCKET套接字进行命令发送的过程中,如果服务器对命令返回的结果未正确识别出有效的命令结束符号,或由于网络设备自身硬件故障的原因造成命令处理过程放缓、或不执行,从而无法获得正确的返回结果,造成长时间存在一个无效连接,这实际也是一种阻塞状态。

上述两种状态如果在程序编写的过程中,如果不增加超时处理,将大大放缓命令的执行效率,造成终端用户对系统的认同度下降。因此,在上述两种过程中,我们首先需要两种基本数据局域网内部的正常时间延迟、网络设备的回显延时。

(1)局域网内部的正常通信延时的计算过程中,可要选取各IP网段的最大网络延时作为参考。(2)网络设备的回显延时,由于网络设备的生产厂家、设备型号、硬件配置、软件配置、发送命令的不同,回显时间延时也会不同,这种情况下,对于同厂家、同型号设备,选取一个日常维护操作处理时间最长的操作时间作为参考。

通过上述两种时间的界定,使用SELECT函数来设置超时时间,在超时时间到达前如果没有收到正确的命令返回结果描述符,则产生一个中断信号,来打破阻塞状态。

2、各网络设备采集命令管理问题

由于网络设备类型众多、变更较为频繁,如果将所有的操作、数据采集命令都固化到程序中,虽然会对程序代码的执行效率有一定的提升作用,但是同时会面临程序拓展性差、维护困难的问题。会让我们工作陷入不断进行代码更新,同时由于设备更替,代码中又会产生部分冗余代码僵局。为解决此问题,首先,我们编写了一个工作脚本分析进程,固化部分关键字,如TELNET_IP(使用TELNET协议连接IP地址)、 AUTO_TCP_IP(使用TCP协议连接IP地址)、FIND(搜索返回结果串)、ENTER(输入命令)、TO(将结果输出到文件)等。然后,根据上述关键字规范,结合日常使用较为频繁的操作命令。下面我通过SCO UNIX工控机和CISCO路由器的两个工作脚本,来给大家介绍下此系统德州联通内部的实际应用。

六、技术总结

在电信企业网络设备智能化管理实现过程中,通过TCP/IP协议族协议的灵活使用,成功地解决了对多种数量庞大、位置离散的网络设备的管理难题,实现各网络设备数据的采集、入库、显示,以及管理人员与网络设备的双向交互。通过在德州联通内部的建设和使用,实践表明此系统可以在网络设备维护、监控、操作方面,有效地缩短人工处理时间,此系统的实现方案对于各电信企业具有较强的借鉴意义。

参考文献

[1]尚穆盖姆.TCP/IP详解(第2版).电子工业出版社,2003

篇7

关键词:档案库系统;Modbus/TCP;自动识别;COM

中图分类号:TP31

随着信息化建设的不断深入,各单位已经全面的使用电子档案系统,电子档案具有传递便捷、资源共享、查阅方便等多种好处,不过由于纸质档案的形成必须要经过人工操作,对原文件的任何篡改都会留下痕迹,所以纸质档案在法律上的可信度很高,能够起到原始凭证的作用。因此在实际工作中电子档案并不能完全替代纸质档案,很多情况下还是需要用到纸质档案。如何将电子档案利用与纸质档案管理结合起来,大幅度降低档案维护成本,提搞档案管理效率,成为目前迫切需要解决的问题。

本文针对以上问题,提出了自动档案库系统的解决方案。自动档案库由多层档案柜、通信模块和计算机控制系统等组成,能够实现档案的自动借阅和归还,是综合了信息自动化、存储和自动识别技术于一身的立体集成化系统。设计该系统的目标是为了减少档案管理人员的工作量,对档案管理的业务流程进行调整和优化,进而规范档案业务操作,提升档案管理的自动化水平,大大提高工作效率。

1 系统总体设计

本文所设计的控制系统分为三层:应用管理层、档案柜管理层和档案柜控制层。应用管理层与档案柜管理层通过TCP协议进行通信,档案柜管理层与档案柜控制层通过Modbus/TCP进行通信,如图1所示。

应用管理层为档案管理系统,它构件了完整的档案资源信息共享服务平台,支持档案管理全过程的信息化处理,主要包括以下功能:档案接收、档案移交、档案查询、档案统计、档案借阅、档案归还、档案数据维护、档案借阅记录管理、档案发送记录管理、报表打印输出、数据库管理等。

档案柜管理层对档案柜控制层的集中管理,包括两个方面的内容:把应用管理层发来的指令转化为对档案柜控制层的指令,定时读取档案柜控制层的消息,并转为系统事件通知应用管理层进行相应。

档案柜控制层根据档案柜管理的指令,控制档案柜的走层、档案的存取、档案盘库等操作,实时根据传感器改变状态寄存器的内容。

图1 系统总体框架图

2 基于Modbus/TCP的传输控制协议

Modbus是一种应用层报文传输协议,用于实现不同类型的网络连接的设备之间的客户机服务器之间的通信。Modbus/TCP协议一种的开放的通信协议,用户可以根据需要灵活进行扩展。[1]它支持C/S模式,将应用层的Modbus消息封装成IP包在网络上传输。[2]

Modbus/TCP是采用C/S模式来进行报文传输,此模式基于4种类型报文,即请求(Modbus Request)、指示(Modbus Confirmation)、响应(Modbus Indication)和证实(Modbus Response),如图2所示。请求是客户端发送给服务器用来启动报文,指示是服务端接收的请求报文对客户端的反馈,响应是服务器针对客户端的请求发送的具体响应,证实是在客户端接收的响应信息时给服务器的反馈。[3]

图2 Modbus/TCP报文传输

协议档案柜管理层由运行在PC机上档案柜管理程序构成,档案柜控制层由触摸屏(TPC)和控制电机和传感器的可编程逻辑器件(PLC)构成。协议档案柜管理层通过网络的Modbus/TCP协议,对各个触摸屏(TPC)和可编程逻辑器件PLC的位变量、整型变量等的读写实现对档案柜的远程测控,如图3所示。

图3 协议档案柜管理层构成图

3 档案自动识别

目前成熟的档案识别方法有条码识别法[4]、RF识别法[5]。条码识别法是在把打印好的条形码粘贴到档案盒上,把条形码作为识别档案的唯一标示;RF识别法则是通过粘贴在档案盒上的电子标签来识别档案的。两种识别方法特点不一,接下来对这两种方法进行具体讨论。

使用条码管理档案,做法是为每个档案盒编配唯一的条码,条码中包含特定规则的位置信息,然后将条码贴到档案盒外面的背脊上。一旦档案盒中有档案存入时,条码、档案盒和档案就建立起了唯一的映射关系。将这种对应关系信息录入到计算机上的档案管理系统中,为每一份档案建立一条记录,保存这份档案对应的条码、在档案柜中的位置、是否在柜等信息,这样就打好了档案识别的基础。档案首次入库时,条码与档案的映射关系建立,数据库中产生相关记录。当需要借阅或者归还档案时,档案识别系统就可以通过条码定位档案盒,找到了档案盒就相当于找到了目标档案。

射频识别系统由电子标签和阅读器两部分组成。在档案识别系统中通常的做法是把阅读器安装在档案柜中,把电子标签粘贴到档案盒上。电子标签中保存的数据通过特定的编码存储在电子标签中,阅读器可以非接触的读取电子数据。系统工作过程分为能力供给和信号识别两个部分。其中能力供给指的是电子标签对电子标签阅读器发出的微波查询信号进行转换,把微波信号转换为电流;信号识别指的是微波查询信号经过电子标签内部的电路处理之后,携带了电子标签内部存储的数据信息,利用电子标签自带的微型天线返回到阅读器中。经过能力供给和信号识别两个过程,阅读器就可以拿到电子标签存储的数据信息,实现档案识别。以下针对条码识别法、RF识别法分别比较两者优缺点,如表1所示。

表1 条码识别法、RF识别法优缺点比较

条码识别法 RF识别法

扫描速度 扫描枪一次只能扫描一个条码 RFID阅读器可同时辨识读取多个RFID标签

抗污染能力和耐久性 条形码采用纸张打印,抗污染能力和耐久性差 RFID一般采用塑料材质封装,具有很强的耐污性和耐久性

穿透性和无屏障阅读 在没有阻挡和近距离的情况下,条码才能被识别 RFID通信具有一定的穿透性,除金属材质外一般材质都能穿透

成本 条码和条码扫描枪成本很低 RFID标签和RFID阅读器成本较高

针对条码识别法、RF识别法的特点,各单位可以根据需求选用不同的方案。条码识别法和RF识别法在系统中识别和传输过程中,由于条码被污染和斜放等情况,RF识别法信道中有噪声干扰和标示有重叠的情况,引起数字信号波形的失真导致错误,针对错码的问题,通过两种策略来处理。一种方法是在档案标识上设置冗余的信息位,在一定错误率的情况下可以通过算法推算出错误的信息,常用算法有循环冗余CRC校验;另外一种是设置校验位,通过校验位来验证发送的信息,验证不通过的情况下让接收方请求重传,常用算法有奇偶校验、汉明校验。因为档案柜在扫描枪扫描过程中一般都是一次扫描,所以我们一般采用纠错码的策略来解决误码的问题。

5 档案自动盘库

为了解决人工归还和借阅档案时放错位置的问题,设计档案自动盘库功能,通过该功能可以对整个档案柜的档案进行批量整理并与档案信息系统中存放的档案存放信息进行核对修改。

自动盘库操作流程如下所示:(1)执行档案柜走层操作,准确走到确定层;(2)启动盘库扫描枪从左到右运动扫描整个层中的档案,一层扫描完成后,盘库扫描枪从右到左运动回到起始点再执行走层动作,直到扫描完毕,经过扫描得到的柜号、层号、档案标识通过Modbus/TCP协议传给档案柜控制层,档案柜控制层通知应用层程序,对扫描的数据进行处理;(3)档案柜向上走一层,继续流程2,直到完成所有层的扫描,自动盘库完成。

在进行盘库操作时,档案柜控制层把盘库扫描枪扫描到一个档案标识就会将柜号、层号、档案标识发送给档案柜管理层,档案柜管理层触发应用层程序的事件,应用程序处理相应事件显示差异信息,用户根据差异信息选择进行更新档案存取信息和借阅情况。

5 档案管理层接口规范

不同厂商采用的硬件类型一般是不同的,同一厂商的不同型号的设备通常也有所区别,传统的档案管理软件基本都是针对某一款特定的档案柜设计的,所以不具有通用性。硬件上一些小改动或升级就会导致整个应用程序的大范围改动甚至重写。传统的档案管理程序与设备是一一对应的,每一种设备都需要开发专用的管理程序和相应驱动。传统档案管理层的开发示意图如图4所示。

图4 传统档案管理层的开发示意图

在实际的大型档案管理系统中,档案柜类型往往不止一种,同种类型的档案柜每隔一段时间也会进行硬件升级,在这种情况下,档案管理层的接口如果仍然按照传统的结构进行设计,必然会带来很多问题,在很大程度上增加系统开发和维护的成本。在本文的档案柜系统设计中,档案柜管理层为了实现与底层硬件设备的无关性,需要硬件设备已经统一的基于COM组件,不同硬件设备指需要按照统一COM编写自己组件,就可以实现协议档案柜管理层对档案柜控制层的操作,如图5所示。

图5 基于COM组件的档案层接口规范

6 结束语

通过对自动档案库系统合理设计,将系统分为应用管理层、档案柜管理层和档案柜控制层。应用管理层与档案柜管理层通过TCP/IP协议进行通信,档案柜管理层与档案柜控制层通过Modbus/TCP协议进行通信,针对人工归还和借阅档案时放错位置的问题,专门设计档案自动盘库功能,同时为了实现档案柜管理层与底层硬件设备的无关性,制定了档案管理层接口规范。实际使用表明:基于Modbus/TCP协议自动档案库系统可以方便快捷的实现电子档案系统与纸载档案管理的无缝结合,在大幅度提高档案的管理效率和档案管理自动化水平的同时,降低了档案管理费用和档案管理人员的工作量,充分提高工作效率。

参考文献:

[1]乔永卫,程帅.基于Modbus协议的自动控制系统的通信研究[J].自动化与仪表,2012(08):34-37.

[2]白焰,钟艳辉,秦宇飞.基于VC的Modbus协议通信测试软件的实现―Modbus串口通信与Modbus/TCP通信[J].现代电力,2008(06):76-81.

[3]翁建年,张浩,彭道刚.基于嵌入式ARM的Modbus_TCP协议的研究与实现[J].计算机应用与软件,2009(10):36-39.

[4]张应福.物联网技术与应用[J].通信与信息技术,2010(01):50-54.

[5]杜晓明,葛世伦.基于RFID和条形码的中小企业仓库管理系统研究[J].组合机床与自动化加工技术,2010(02):106-110.

[6]郎为民.射频识别(RFID)技术原理与应用[M].北京:机械工业出版社,2006.

[7]康东,石喜勤,李勇鹏.射频识别RFID核心技术与典型应用开发案例[M].北京:人民邮电出版社,2008.

[8]Don 本质论[M].潘爱民,译.北京:中国电力出版社,2001.

[9](美)WilliamA.Shay.高传善等译.数据通信与网络教程[M].北京:机械工业出版社,2005.

[10]胡啸,陈星,吴志刚.无线射频识别安全初探[J].信息安全与通信保密,2005(06).

[11]柴先明,黄知涛.信道编码盲识别问题研究[J].通信对抗,2008(02):1-4.

[12]Vaidya N,Das S R.RFID based networks exploiting diversity and redundancy[J].ACM SIGMOBILE Mobile Computing and Communications Review,2008(01):2-14.

[13]叶佳帆.基于modbus/tcp以太网技术的静电除尘器的研究[D].硕博学位论文,2009.

篇8

关键词:风电场;远程监控;SCADA;Modbus/TCP;PLC

中图分类号:TP277 文献标识码:A 文章编号:1674-7712 (2014) 02-0000-01

对风力发电机组进行远程监视控制十分必要,而风电厂远程监控系统的软件则是重中之重,它直接决定了整个系统的稳定性和效率。

Modbus/TCP协议目前应用广泛,绝大多数厂商的PLC都支持Modbus/TCP协议,其具有良好的通用性,因此基于Modbus/TCP协议开发客户端程序已成为风电远程监控系统一种行之有效的方法。

一、Modbus/TCP协议

Modbus/TCP协议以一种非常简单的方式将Modbus帧嵌入到TCP帧中,使其成为工业以太网应用层协议,Modbus协议层在TCP之上,其主要完成的任务为:在服务器端,负责解译来自客户端的Modbus帧,执行相应的请求[1]。

Modbus TCP协议的帧格式如表1所示。应用协议报头分为4个部分,数据标识符用来标识Modbus帧的次序,每多发送一个Modbus帧,该值加1;协议标识符用来确认是不是Modbus协议,如果是Modbus协议用1表示,其他协议用0表示;接下来2个字节用来表示后续字节数,即从单元标识符开始一直到数据域结束的字节数,单元标识符用来标识Modbus串行线上的某个设备单元,由于风机都是网络结构,所以这一字节并没有实际意义,填0x0或0xFF即可。功能码的含义如表2所示。数据域则添加要发送的数据,如果是向PLC发送读请求的话,数据域为要读取的寄存器起始地址和要读取的寄存器个数,如果是向PLC发送写请求,则数据域为要写入的寄存器起始地址和要写入的寄存器个数、需要写入的字节数以及需要写入的数据。

一、运用C#编程实现通讯

C#是微软公司设计的一种编程语言,是从C和C++派生来的一种简单、现代、面向对象和类型安全的编程语言,并且能够与.NET框架完美结合[2]。

为了简化网络编程复杂度,.NET对套接字又进行了封装,封装后的类就是.Sockets命名空间下的TcpListener类和TcpClient类。但是要注意,TcpListener和TcpClient只支持标准协议编程。如果希望编写非标准协议的程序,只能使用套接字来实现[3]。

核心代码

值得一提的是,由于PLC与计算机的数据存储方式可能不同,因此需要进行大小端判断及转换,转换可以采用Reverse()方法。软件界面的设计如图2所示,通过该界面可以实现对风机进行启停控制,功率调节,数据采集,绘制图表,查看故障等功能,可满足风电场远程监控系统的绝大部分需求。

三、结束语

实践表明,该软件通过Modbus TCP协议与风力发电机组实现了数据交互,可通过上位机对机组进行启动、停机、复位、限定功率等控制,查看机组各传感器反馈数据,查看故障代码,运行稳定,操作简单,具有实际价值。

参考文献:

[1]郝晓弘,祖守圆,徐维涛.基于VC的Modbus/TCP协议模型通信测试软件的实现[J].微计算机信息,2006.

篇9

关键词:会话初始化协议SIP;TCPN;建模;模型

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)25-0035-02

1 引言

第三代合作伙伴3GPP选择SIP协议作为第三代移动通信系统的IP多媒体子系统(IMS)心灵协议,是因其具有灵活、无缝和可扩展性,它将逐渐成为下一代网络NGN中关键控制协议之一。它可以满足多媒体通信与网络电话的要求,所以很多的通讯公司均先后研发出了支持SIP的服务产品与终端产品。为充分适应这些技术的发展,SIP协议需要进行进一步的完善与扩充,但是如果协议在设计环节出现任何问题都会给系统带来难以预料的影响,所以为保证协议的稳定性和安全性,应在早期开发时尽可能挖掘其隐蔽的问题并找出解决方案。

目前研究SIP协议主要涉及以下几方面:基于SIP的应用于服务[3];SIP测试工具和方法;其他协议与SIP协同工作。因时间着色Petri网TCPN[2]在描述带有较复杂的交互动作和时间约束的系统过程中具有明显的优势,故本文以TCPN为模型分析工具进行SIP协议分层TCPN模型的构造,并在不同状态下实现分层建模。

2 SIP协议事务处理

SIP协议通过事务进行会话控制,其主要事务有INVITE、non_INVITE事务。INVITE事务完成会话的创建,non_INVITE事务则完成会话的保持与关闭。SIP端系统(User Agent,UA)是连接服务器从而发送服务请求的一种应用程序。因UA向服务器发送服务请求并接收来自服务器的响应,故一个UA有UAS(用户服务器)和UAC(用户客户端)两部分,这两部分就是SIP协议中的两个最关键的参与者,UAC创建呼叫请求,UAS接受呼叫给出响应。

在SIP的请求消息中,最常用的有INVITE、REGISTER、CANCEL和BYE。其响应消息有1xx、2xx、3xx、4xx、5xx、6xx6种。SIP的呼叫方式有3种:从UAC到UAS的直接呼叫、从UAC发出的重定向呼叫、服务器发起呼叫。本文主要针对应用最广的直接呼叫进行分层建模。

3 SIP协议TCPN分层建模

本文应用CPN Tools[4]进行INVITE事务的分层建模,并在不同的抽象层次上描述协议行为细化模型。这种方法在一个层次中描述协议细节,有利于优化或局部完善协议模型,也能有效把握模型规模,便于确认模型与分析协议性质。

SIP协议的TCPN分层模型中的10个模型页分别处于不同的层次,每页所描述的是对应抽象级别上的协议功能,低级别页作为高级别页的替代变迁子页。各层次模型页功能描述如下表1。各层内部模块细化是依据UAS与UAC在INVITE事务执行过程中具备的不同状态进行的,因在terminated状态下协议无行为,而仅表示终止事务,故没有单独描述此状态。

3.1 总体流程建模

SIP协议分层TCPN模型的top page(顶级页)如下图1所示,它总体描述了协议运行的网络拓扑,其中使用了2个替代变迁对NET、UAS和UAC在协议运行过程中的交互行为进行描述。UAC通过NET向UAS发送REQUEST型数据,UAS将RESPONSES型数据通过NET回传给UAC。

Client页用以描述UAC的行为,下图2所示为其页模型。图中的3个替代变迁对应的子页能够更加细致地描述处于不同状态的UAC端行为。库所Scene用以描述UAC的行为,变迁TransErr可以模拟协议在不同条件下出现传输层错误时所采取的处理方式。

3.2 网络层建模

下图3所示为NET页模型,描述的是由UAC到UAS的网络传输建模。库所Schannel_Em记录的是有多少个消息被成功地传送到了UAS端,其初值为0。库所CollectorCTS用以收集不可靠链路丢失的消息。变迁RCTS与CTOS用以模拟不可靠链路。不可靠链路的具体建模方式如表2所示。

通过上述时间类型、弧表达式及防卫表达式的应用,可模拟存在重复数据包、延迟、丢包的不可靠链路。若对其某些参数做适当的修改,便可动态调整其链路的可靠性,以此来真实地模拟不可靠链路。

3.3 具体行为建模

本文表1中的Sproceeding、Ccalling、Cproceeding等底层模型页描述UAS和UAC在不同状态下处理事件的过程,也就是对协议的具体行为建模。下文以UAC端处于Ccalling状态时的应答消息处理行为为例,阐述具体行为的模型描述方式。

下图4所示为UAC处于Ccalling状态时处理INVITE消息的模型,即Ccalling页模型。图中CallTimer表示UAC处于超时状态时消息的处理过程,CallResp表示UAC收到UAS应答时对消息的处理过程。库所TimerAorB用以控制A与B两个定时器的触发。融合库所cloneCs用队列存放UAC每次状态的变化,其队首为UAC的当前状态,Scenec记录UAC的当前状态和导致UAC变为此状态的事件。Message存放初始条件下从SIP协议上层收到的INVITE请求。Channel_Em用以记录当前是否收到UAS的应答,其初值为0。

当收到UAS会送的响应消息时,变迁CallResp被点火执行,即运行其对应的函数代码。此函数代码中sta与st均为SCENEC型变量,st是处理消息前UAC的状态,sta为处理消息后UAC的状态。Action部分调用函数call_resp(st,resp)完成UAC对不同类型响应消息的处理,该函数代码如下:

由上述代码可知,处理类型为r2xx的应答消息后UAC处于TERM状态,处理类型为r3xx的应答消息后处于COMP状态,处理类型为r1xx的应答消息后处于PROC状态。

4 总结

本文给出了SIP协议处理INVITE事务的TCPN分层模型,对该协议总体流程、网络层、UAS与UAC间的具体行为在不同模型层次上分别进行建模。该层次模型规模可控、功能划分直观、数据结构完备,为建模后期协议的验证与改进提供了较完善的模型基础。

参考文献:

[1] 姜秀玉,杨峰,崔再惠.SIP协议实现中消息解析的研究[J].计算机工程与设计,2010(7).

[2] 何中阳,李鸥,杨白薇,等.基于TCPN的TCP协议形式化描述[J].计算机工程,2011(9).

篇10

关键词:UDP协议;Socket;网络通信

中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)34-1867-02

Socket Network Programs Based on UDP Protocol

ZHOU Li-juan

(College of Science, Hunan University of Technology, Zhuzhou 412008, China)

Abstract: Windows Socket is a network programming interface,and applications can correspond to eachother in different domains without worrying about the different protocols by using it.This paper introduces the mechanism and principle of Socket network programs based on UDP protocol,and proposes a method of network with Java socket.

key words: UDP protocol;socket; network communication

Socket适用于网络环境中的进程间通信,它已成为当前许多操作系统的网络API,也是网络操作系统中必不可少的基础功能。随着Linux操作系统和Internet的不断发展,Linux网络环境下尤其是基于UDP的socket通信技术仍广为注目。文章介绍了socket的编程原理,并通过一个Java编写的客户/服务器程序,描述了网络中基于UDP的不同主机上的两个进程之间的socket通信机制。

1 Socket通信机制

Socket(套接字)机制是一种API,是网络应用程序的编程接口。Socket是通过标准文件描述符和其它程序通讯的一个方法。每一个套接字都用一个半相关描述:{协议,本地地址、本地端口}来表示;一个完整的套接字则用一个相关描述:{协议,本地地址、本地端口、远程地址、远程端口},每一个套接字都有一个本地的由操作系统分配的唯一的套接字号。

根据传输数据类型的不同,Socket主要分为三类:1) 流式Socket(SOCK_STREAM),在这种方式下,两个通讯的应用程序之间要先建立一种虚拟的连接,提供可靠的、面向连接的通信流,它使用TCP协议,从而保证了数据传输的正确性和顺序的。2) 数据报Socket(SOCK_DGRAM),它使用数据报协议UDP,定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证可靠、无差错。3) 原始Socket,原始套接字允许对底层协议如IP或ICMP直接访问,它功能强大但使用较为不便,主要用于一些协议的开发。

2 UDP协议的工作原理

UDP协议是一个面向无连接的协议,其连接的建立不必像TCP那样需要服务器端侦听,也不需要有客户机请求连接,属于一种“强制”性的网络连接。UDP提供一对一或一对多的、无连接的数据报服务。该服务对消息中传输的数据提供不可靠的、最大努力的传送,这意味着它不保证数据的到达,也不保证所传送的数据报的顺序是否正确,UDP不重新传输丢失的数据。其主要工作是:将应用程序传输过来的数据分块交给网络层,确认接受到分组信息。

尽管UDP无法像TCP一样提供可靠的数据传输,但UDP并不比TCP缺乏优越性。UDP在传输效率方面比TCP要高一些,而且许多应用程序并不需要保证严格的传输可靠性,比如视频会议系统等,需要实时的交互,但并不要求音频视频的绝对正确。

使用UDP协议传输数据时,首先设置客户计算机的Local Port(本地端口)属性,而作为服务器的计算机只需要设置Remoter Host(远程主机)属性为客户计算机的IP地址或域名即可,并将其Remote Port属性设置为客户计算机上的Local Port属性。使用UDP端口号时,端口提供了用于发送消息的位置,每个端口由一个唯一的编号来标识。当应用程序向另一台计算机发送数据时,UDP生成一个数据头,包括源端口,这些端口提供送达信息所需要的地址。UDP协议还为数据和数据头计算出求和检验的值,在目标计算机中,数据包被传递至UDP协议程序并送到目的地端口。

3 UDP套接字的通信过程

中提供了两个类DatagramSocket和DatagramPacket用来支持数据报通信。DatagramSoc ket用来在程序之间建立传送数据报的通信连接,是数据报通信中的Socket。在数据报实现C/S通信程序时,无论在客户端还是服务器端,都要首先建立一个DatagramSocket对象,用来表示数据报通信的端点,应用程序通过Socket接收或发送数据报。

DatagramPacket则用来表示一个数据报,它是传输数据的载体,封装了数据、数据长度、数据报地址等信息。

采用UDP套接字方式实现C/S的通信程序由客户端和服务器端两部分组成。服务器进程依次按以下步骤进行:1) 调用Socket()创建一个数据报套接字;2) 调用bind()把服务器地址绑定在该套接字上;3) 调用recvform()等待客户进程发来的请求,服务器此时处于无限循环状态;4) 服务进程接收到客户进程所发来的数据报后,进行处理,调用sendto()将处理结果返回给客户进程,返回状态3),继续监听;5)服务进程调用close()撤消套接字,终止服务。

客户进程则按以下步骤进行:1) 调用Socket()创建一个数据流套接字;2) 调用sendto()向服务器进程发送数据报;3) 调用recvfrom()等待服务器进程返回该处理结果;4) 客户进程调用close()撤消套接字。

4 数据报通信实例

程序由服务器端和客户端两部分组成,服务器端主机中有一个名为“udp_socket.txt”文件,文件中保存了一段英文。服务器端接收一个客户端的请求,就从文件中读取若干个英文字符发送给客户端。当文件中所有内容发送给完毕,服务器端程序将退出。客户端首先构造一个数据报发送给服务器端,然后等待接受服务器端响应,当接收到服务器端的数据报后,显示数据并结束通信。

1) 服务器端程序

public class Server_Th

{ boolean m_q=true;

public void serverWork() throea IOException

{DatagramSocket ds=new DatagramSocket(2000)

//创建端口号为2000的数据报套接字

BufferedReader in=new BufferedReader(new FileReader (“udp_socket.txt”));

while(m_q)

{ byte buf[ ]=new byte[256];//创建缓冲区

DatagramPacket packet=new DatagramPacket (buf, buflength); //创建接收数据报对象

ds.receive(packet);//接收数据报

String dString=null;

if((dString=in.reaLine())==null)

{in.close();

m_q=false;

dString=”Good Morning!”;}

buf=dString.getBytes();//将数据存储到buf中

inetAddress address=packet.getAddress();

//得到客户端IP地址

int prot=packet.getPort();//得到客户端的端口

packet=new DatagramPacket (buf,buf.length, address. port );

//构造要发送数据报

ds.send(packet);//发送数据报

}

ds.close();//关闭

}

public void main(String args[])

{ Server_Th server=new Server_Th();

try

{server.serverWork();}

Catch(IOException e){}

}}

2) 客户端程序

public class Client_Th

{public void main(String args[ ]) throws IOException

{ DatagramSocket socket=new DatagramSocket( );

//创建套接字对象

byte buf[ ]=new byte[256];

InetAdress address=InetAddress.getByName(“20.14.30.9”);

//服务器IP地址

DatagramPacket packet=new DatagramPacket(buf,buf. Length,address,2000);//创建要发送的数据报对象

socket.send(packet);//接收数据报

packet=new DatagramPacket(buf,buf.length);

//创建要接收的数据报对象

socket.receive(packet);//接收数据报

String received=new String(packet.getData());

System.out.println(“The string form the server: ”+recerived);

//取得数据报中的数据并显示

Socket.close();//关闭socket

}}

编写程序时客户端和服务器端的DatagramSocket必须用一个端口,因为客户端向服务器端请求时,服务器需要知道从哪个端口监听请求。当数据进行传输时,服务器从接收到的数据报中得到客户端的接收数据的端口,然后将数据报发送到这个端口,客户端则监听这个端口而得到服务器端发送过来的数据报并显示其内容。运行时要先运行服务器端程序,再运行客户端程序。

5 小结

Socket在网络编程方面发挥着很大的作用。UDP是可靠性无法得到保障的协议,但对于质量要求不是很高的网络应用程序,UDP是一个很好的选择。

参考文献:

[1] 张桂珠.Java面向对象程序设计[M].北京:邮电出版社,2006.

[2] 周坤,傅德胜.基于Windows Socket的网络数据传输及其安全[J].计算机工程与设计,2007,28(22):5381-5386.