TCP/IP通信(精选9篇)
TCP/IP通信 篇1
1 引言
Delphi具有如下的优点:可视化开发环境的性能;编译器高速度和已编译代码的高效率;编程语言的功能强大,复杂性低;数据库结构的灵活,可扩展性强;框架对设计和使用模式的扩充支持。应用delphi可以很容易地在完成一个C/S结构的局域网系统的设计和实现。这通常涉及到图形用户界面设计、TCP/IP协议、UDP数据广播、局域网内文件传输等一系列技术。本文通过一个简单示例程序,展示了在Delphi语言中进行UDP数据广播及利用Delphi的TServer Socket、TClient Socket构件实现局域网内基于TCP/IP通信的一般步骤和方法。
2 TCP/IP/UDP协议
传输控制协议TCP是Internet最基本的网络通信协议,它由一系列协议组成,下面分别概括介绍TCP/IP协议族中的各协议。
2.1 IP协议网际协议
IP协议是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输。IP协议提供的是不可靠无连接的数据报传送服务,它只提供最好的传输服务,但不保证IP数据报能成功的达到目的地。IP层也可配置成路由器,路由器比主机多了数据报转发的功能,即对于目的地址为非本机地址的数据报进行转发。
2.2 TCP传输控制协议
TCP是属于传输层的协议,向应用层提供一种面向连接的、可靠的字节流服务。面向连接意味着两个使用TCP的应用(通常为一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接。因此在一个TCP连接中,仅有两方进行彼此通信,没有广播和多播的概念。TCP的特点是可以以某些方式来提供数据传输的可靠性。
2.3 UDP用户数据报协议
UDP是一个简单的面向数据报的传输层协议,它只提供不可靠性的数据传输服务,把应用程序传给IP层的数据发送出去,但并不保证它们能到达目的地。这意味着UDP客户机向指定的远端主机发送数据报时,并未事先确知对方是做好了接收数据的准备的。因此就会发生某一客户机发给一个主机,而此主机事先并未把此客户机列入其目标端口号而加以监听的情况。TCP的校验和是必需的,而UDP的校验和是可选的。当校验和有差错时,UDP就将数据报丢弃并不产生任何差错报文。
综合三种协议,如果通信强调可靠性,应该使用TCP;如果可靠性要求不高,但实时性要求高时可以应用UDP协议。本文这里应用TCP/IP协议作为通信协议,可以保证很强的可靠性。
3 socket编程
在Windows环境下开发网络应用程序,通常都是使用Microsoft的网络编程接口,即Windows套接字Windows Socket(简称Win Sock),它包含在Winsock.dll中的一组API中,用于在网络上传输数据和交换信息,编程人员需要熟悉和掌握相关的网络协议、系统的底层知识以及网络软硬件技术,因而Win Sock编程相当复杂。所幸的是,Delphi对Win Sock进行了有效的封装,并不需要直接与Win Sock的API打交道,只需使用其NMUDP、TClient Socket和TServer Socket等构件,使得对Winsock的访问大大简化。本文通过利用Delphi的TServer Socket、TClient Socket构件实现了局域网内基于TCP/IP的通信。
3.1 Socket简介
抽象地说,Socket是一种双向通信接口,实际上Socket是一种数据结构,用以创建一条在没有互联的进程间发送、接受消息的通道(连接点)。对互联的Socket提供通信接口,使两端可以传输数据。Socket屏蔽了底层通信软件和具体操作系统的差异,使得任何两台安装了TCP协议软件和实现了Socket规范的计算机之间的通信成为可能。Socket接口是TCP/IP网络最为通用的API,也是在Internet上进行应用开发最为通用的API。
3.2 编程代码
在主界面中,使Sever Socket控件和Client Socket控件。Sever Socket控件是基于TCP/IP协议传输的服务器方的控件,它的主要作用是用来监听其它基于TCP/IP传输计算机的连接请求,并在收到连接请求时,建立连接,进行数据传输。Client Socket控件是基于TCP/IP传输的客户方的控件,它的主要作用是监听TCP/IP传输的服务器发出连接请求,在收到服务器的允许连接的响应后,建立连接,并传输数据。之所以在窗体中同时创建Server Socket和Client Socket控件,是因为应用程序既可作为服务器,又可作为客户端使用如图1。
3.2.1 Serversocket和Client Socket之间的连接
对于连接Form(如图2所示),编写客户的申请连接,代码如下:
3.2.2 消息的输入
3.2.3 服务器端的监听
3.2.4 断开链接
4 运行界面
如图3所示,这是程序运行的主界面。在两台计算机各打开一个程序的实例,通过设置好IP和端口以后,就可以进行通信了。通信可以在广域网内进行,也可以在局域网内进行,但要保证计算机支持TCP/IP协议,这可以通过设置计算机实现。
5 结语
通过编程,实现了Delphi下的网络编程。这极大地增强了对TCP/IP协议的理解,认识了套接字的编程思想。通过运用Delphi编程,可以使认识到Delphi本身就是一个功能十分强大的面向对象开发平台,Delphi的可视组件库VCL(Visual Component Library)是一个易学、易用、高效的可重用的软件对象,本文应用的是通信组件。使用Delphi编程不仅界面开发方便迅速,而且对于系统所带组件和自编组件的运用十分方便,只要将组件放置在窗体中,用鼠标移动到要求的位置,改变某些属性就可以满足要求。
摘要:介绍网络传输所涉及的网络通讯技术,包括传输控制协议(TCP)和用户数据报文协议(UDP)的应用,并给出使用Delphi和Socket函数的方法。利用Delphi的TServerSocket,TclientSocket构件实现局域网内基于TCP/IP的通信。
关键词:传输控制协议TCP,用户数据报文协议UDP,IP地址,Winsock
参考文献
[1]黄文兰.Delphi语言开发教务管理系统[J].电脑知识与技术,2006,(20).
[2]向继文.Delphi与汇编语言的混合编程[J].吉林大学学报(自然科学版),2006,(3).
[3]林瑜华.如何在DELPHI中使用SQL语言[J].福建电脑,2005,(10).
[4]严丽平.基于Delphi的C语言词法分析器的实现[J].科技广场,2004,(8).
[5]王忠,迟忠先.Delphi5开发指南[M].北京:电子工业出版社,2000,28-30.
[6]Craig Zacker.TCP/IPAdministration[M].北京:中国水利出版社,1998,620-625.
TCP/IP通信 篇2
摘要:介绍了嵌入式TCP/IP协议单片机在网络通信中的数据传输技术。将TCP/IP协议嵌入式单片机中,借助网卡芯片CS8900实现了单片机在局域网内和通过局域网在因特网上的数据传输。用户终端以单片机系统板为媒介,通过网络与远程数据终端实现数据通信。
关键词:TCP/IP协议 单片机 因特网 局域网 网卡芯片
在因特网上,TCP/IP协议每时每刻保证了数据的准确传输。在数据采集领域,如何利用TCP/IP协议在网络中进行数据传输成为一个炙手可热的话题。在本系统中,笔者利用TCP/IP协议中的UDP(用户数据报协议)、IP(网络报文协议)、ARP(地址解析协议)及简单的应用层协议成功地实现了单片机的网络互连,既提高了数据传输的速度,又保证了数据传输的正确性,同时也扩展了数据传输的有效半径。
1 TCP/IP协议简介
TCP/IP协议是一套把因特网上的各种系统互连起来的协议组,保证因特网上数据的准确快速传输。参考开放系统互连(OSI)模型,TCP/IP通常采用一种简化的四层模型,分别为:应用层、传输层、网络层、链路层。
(1)应用层
网络应用层要有一个定义清晰的会话过程,如通常所说的Http、Ftp、Telnet等。在本系统中,单片机系统传递来自Ethernet和数据终端的数据,应用层只对大的数据报作打包拆报处理。
(2)传输层
传输层让网络程序通过明确定义的通道及某些特性获取数据,如定义网络连接的端口号等,实现该层协议的传输控制协议TCP和用户数据协议UDP。在本系统中使用UDP数据报协议。
(3)网络层
网络层让信息可以发送到相邻的TCP/IP网络上的任一主机上,IP协议就是该层中传送数据的机制。同时建立网络间的互连,应提供ARP地址解析协议,实现从IP地址到数据链路物理地址的映像。
(4)链路层
由控制同一物理网络上的不同机器间数据传送的底层协议组成,实现这一层协议的协议并属于TCP/IP协议组。在本系统中这部分功能由单片机控制网卡芯片CS8900实现。
(本网网收集整理)
2 硬件框图
如图1所示,系统提供RJ45接口连接Ethernet网络,并且提供一个串口给用户使用。系统板可以将从Ethernet上过来的IP数据报解包后送给串口,也可将从串口过来的数据封装为IP包送到局域网中。外部RAM使用61C1024(128KB),从而为数据处理提供了很大的缓存;使用E2PROM――X25045,既可以作为看门狗使用,也可以将IP地址、网卡物理地址和其他参数保存在里面。
CS8900芯片是Cirrus Logic公司生产的一种局域网处理芯片,它的封装是100-pin TQFP,内部集成了在片RAM、10BASE-T收发滤波器,并且提供8位和16位两种接口,本文只介绍它的8位模式。
NE103是一种脉冲变压器,在CS8900的前端对网络信号进行脉冲波形变换。
3 工作原理
3.1 CS8900的工作原理
CS8900与单片机按照8位方式连接,网卡芯片复位后默认工作方式为I/O连接,基址是300H,下面对它的几个主要工作寄存器进行介绍(寄存器后括号内的数字为寄存器地址相对基址300H的`偏移量)。
・LINECTL(0112H)
LINECTL决定CS8900的基本配置和物理接口。在本系统中,设置初始值为00d3H,选择物理接口为10BASE-T,并使能设备的发送和接收控制位。
・RXCTL(0104H)
RXCTL控制CS8900接收特定数据报。设置RXTCL的初始值为0d05H,接收网络上的广播或者目标地址同本地物理地址相同的正确数据报。
・RXCFG(0102H)
RXCFG控制CS8900接收到特定数据报后会引发接收中断。RXCFG可设置为0103H,这样当收到一个正确的数据报后,CS8900会产生一个接收中断。
・BUSCT(0116H)
BUSCT可控制芯片的I/O接口的一些操作。设置初始值为8017H,打开CS8900的中断总控制位。
・ISQ(0120H)
ISQ是网卡芯片的中断状态寄存器,内部映射接收中断状态寄存器和发送中断状态寄存器的内容。
・PORT0(0000H)
发送和接收数据时,CPU通过PORT0传递数据。
・TXCMD(0004H)
发送控制寄存器,如果写入数据00C0H,那么网卡芯片在全部数据写入后开始发送数据。
・TXLENG(0006H)
发送数据长度寄存器,发送数据时,首先写入发送数据长度,然后将数据通过PORT0写入芯片。
以上为几个最主要的工作寄存器(为16位),CS8900支持8位模式,当读或写16位数据时,低位字节对应偶地址,高位字节对应奇地址。例如,向TXCMD中写入00C0H,则可将00h写入305H,将C0H写入304H。
系统工作时,应首先对网卡芯片进行初始化,即写寄存器LINECTL、RXCTL、RCCFG、BUSCT。发数据时,写控制寄存器TXCMD,并将发送数据长度写入TXLENG,然后将数据依次写入PORT0口,如将第一个字节写入300H,第二个字节写入301H,第三个字节写入300H,依此类推。网卡芯片将数据组织为链路层类型并添加填充位和CRC校验送到网络同样,单片机查询ISO的数据,当有数据来到后,读取接收到的数据帧。读数据时,单片机依次读地址300H,301H,300H,301H…。
3.2 单片机工作流程
如图人所示,单片机首先初始化网络设备。网卡IP地址和物理地址存在X25045中,单片机复位后首先读取这些数据以初始化网络。
单片机主要完成数据的解包打包。当有数据从RJ45过来,单片机对数据报进行分析,如果是ARP(物理地址解析)数据包,则程序转入ARP处理程序(因为在网络上正是ARP协议将IP地址和物理地址相映射)。如果是IP数据包且传输层使用UDR协议,端口正确,则认为数据报正确,数据解包后,将数据部分通过串口输出。反之,如果单片机从串口收到数据,则将数据按照UDP协议格式打包,送入CS8900,由CS8900将数据输出到局域网中。
可以知道,单片机主要处理协议的网络层和传输层,链路层部分由CS8900完成。因单片机将数据接收后完整不变地通过串口输出,所以将应用层交付用户来处理,用户可以根据需求对收到的数据进行处理。
在单片机的程序处理中,包含了完整的APR地址解析协议。通过在单片机中正确设置网关、子网掩码等参数,实现了通过局域网单片机与外部因特网上的终端设备的数据通信。
4 应用
TCP/IP通信 篇3
下面介绍的电信动力与环境集中监控系统使用了模块化和面向对象的设计,并且重点讨论了一个专门设计的TCP/IP通信库。
1 动力监控系统架构
一个完整的电信动力与环境监控系统应该包括配电系统设备、环境系统参数、消防系统信息和保安系统等数据,这些监控对象包括可以直接使用通信协议采集的所谓智能设备,也包括向温湿度传感器一样的非智能设备,对于不同的监控对象需要使用不同的数据采集前端设备,这些前端设备放置在被监控设备的附近或者通过现场铺设通信电缆进行数据采集。
当前以太网技术已经非常成熟,电信公司的DCN网络(专用数据通信网)是一个完全意义上的分组交换网络,TCP/IP协议在公司内和机楼之间都可以随处可用,所有数据通过前端采集设备采集后都可以通过TCP/IP网络进行传输。本系统整体的设计都基于电信完善的TCP/IP网络,系统以数据库为基础、以数据处理机为数据的中心,所有的监控段包括监控机和办公室都可以通过使用TCP/IP协议连接到数据处理机获得实时处理的监控数据,通过连接中心数据库获得保存的历史数据。
2 系统软件设计
监控软件功能模块以数据处理软件为实时数据分发中心,以数据库为历史数据存放中心。其余客户端软件都通过Sockets的方式连接到数据处理中心,数据处理中心作为Socket Server给其他客户端提供数据服务,客户端作为Socket client主动与中心建立连接,使用TCP/IP协议与中心进行通信。
3 通信库实现原理
在Windows操作系统下实现的TCP/IP通信程序,用户进程的每次网络访问都要通过操作系统来完成,Socke通信中发送方首先在用户空间将欲发送的数据准备好,通过系统调用进入核心,由核心将发送的数据从用户空间拷贝到核心空间,数据经TCP/UDP协议和IP协议处理,最后由网卡驱动程序发送到网络,当消息被接收方的网络接口卡收到后,产生硬件中断通知核心,接收方核心同样要经过IP协议和TCP/UDP协议的处理然后才能将数据拷贝到接收方进程的用户空间中。
除了操作系统负责完成的部分以为,用户程序还需要实现客户业务数据的调度,尤其对于服务程序需要建立一个高效的线程级的服务架构,因为服务程序需要实时响应很多监控客户端的同时数据请求。故很有必要专门为之设计一个高性能的TCP/IP通信库,用于实现高效的通信服务程序和通信客户程序。
这里设计的通信库基于TCP Client/TCP Server的通信模式,而不是Peerto-Peer的通信模式。基于Client/Server通信模式需要至少完成两项任务:
1)TCP客户端负责发起一个与服务器的连接,因此客户端只需要关心并处理仅仅一个简单的向外的连接。
2)服务器端监听所有指向自己的客户端的请求,服务器端必须关心并处理多个向内的连接请求和向内的连接。
4 通信库设计实现
本系统的大部分软件都使用微软的新开发平台.NET进行开发,通信库也使用.NET平台下的C#语言进行设计和实现,可以供.NET平台支持的所有语言调用。
4.1 关键接口设计
基于.NET开发平台,在通信库中设计一个向外的连接类OutgoingConnection供客户端程序连接服务器程序使用。当客户端请求一个向服务器程序的连接时,服务器程序创建一个向内的连接类IncomingConnection的实例负责与客户端进行通信。OutgoingConnection类和IncomingConnection类都继承自同一个基础通信类ConnectionBase类,它提供了向内和向外通信相关的公共方法(如发送、接收数据等),都由接口ICommunicationsBase进行声明,这两个连接类共同实现的接口包含如下元素:一个Socket实例(发送和接收数据的管道);一个可以有管道接收到的新的数据触发的事件;一个可以通过管道与远程主机进行数据传输的方法;一个可以关闭Socket的方法。
客户端使用的OutgoingConnection类需要另外实现一些元素:一个连接方法(包含节点地址、端口参数)用来初始化与服务器的连接;三个线程:分别负责接收数据、发送数据和从数据流中提取数据。服务端使用的IncomingConnection类需要另外实现一些元素:一个类实例隶属的通信服务器指针实例;一个用来标识自己的ID编号;一个指向要发送的信息的接口IIncomingMessageHandler的实现。
几个关键的接口之间的关系如下,ICommunicationsServer包含了实现了接口ICommincomingConnection的类的多个实例,并且动态建立。
4.2 信息传输设计
动力与环境监控系统TCP/IP类库的核心功能就是在设备和系统之间、系统内部、系统之间高效、正确地传输实时信息,实时信息可以是一段打包的实时变化的字节流或者字符的集合,类库负责的内容就是保证打包发送信息,并且负责接收、解包信息,并保证发送的信息和接收到的信息完全一致。
通信类库提高性能的第一步是合理的利用多线程技术,监听、接收、发送都使用单独的线程,以有效的利用CPU时间并且不会互相影响和造成不合理的等待。
类库设计了一个线程安全的类SendReceiveBuffer作为发送的信息缓冲区,缓冲区中的字节等待被发送或被处理,使用线程安全的队列保存缓冲区数据。提供发送性能的关键在于减少少量字节的多次发送,将需要发送的多个少量字节预先保存在队列缓存中,发送时可以合并成单个的TCP/IP包进行发送以提供效率。
通信库中另一个提高通信性能的方法是使用非阻塞模式,因为非阻塞模式在发送和接收是不需要等待,可以立即进行下一次接收和发送,而阻塞模式将使得当前线程进入等待直到发送或接收完成。尤其在通信库的服务器端性能的提高将非常明显,因为在有大量的数据等待发送到大量的客户端时,非阻塞模式可以立即进行下一个客户端的发送和接收。
5 结论
文章介绍的电信动力与环境集中监控系统已经在电信公司实际运行,获得了良好的效果。系统采用了新的软件平台,并且使用了专门设计的高性能TCP/IP通信库,经过测试,可以支持100个以上的监控客户端没有明确的通信滞后,表现了良好的性能,也有一定的通用性。
参考文献
[1]Christian Holm,Mike Kruger等.C#软件项目全程剖析[M].北京:清华大学出版社,2003:13-36.
[2]严蔚敏,吴伟民.数据结构:[M].北京:北京:清华大学出版社,1997.
[3]Ivar Jacobson,Grady Booch等.统一软件开发过程[M].北京:机械工业出版社,2002.
[4]Erich Gamma,Richard Helm.设计模式[M].北京:机械工业出版社,2000:54-91.
[5]刘险峰,倪涉权.蓄电池容量在线监测研究[J].通信电源技术,2009(5):51-54.
[6]王彦桂,郁滨等.配电自动化系统中应用DNP3.0协议进行数据通信[J].计算机自动测量与控制,2001(T):99-101.
怎样安装“TCP/IP”协议? 篇4
第一步:在桌面上单击“开始”一“设置”一“控制面板”,双击“网络”。
第二步:如果在列表框中找不到TCP/IP,单击“配置”一“添加”,开始安装。
第三步:在“请选择要安装的网络组件”列表框中单击“协议”,再单击“添加”。
第四步:在“厂商”列表框中单击“Microsoft”,在“网络协仪”列表框中单击“TCP/IP”。
第五步:在光驱中放入Windows安装光盘。
TCP/IP通信 篇5
随着计算机和网络技术的飞速发展,仪器智能化以及远程控制仪器操作具有非常重要的意义和使用价值。以Internet为代表的网络技术的出现,为远程通信及测控技术带来了更大的发展空间和机遇。网络化的测控技术与具备网络功能的新型仪器的应运而生,满足了大型工业自动化系统远程控制、远程监视、远程访问以及远程数据传送等复杂测控任务,极大地提高了测控能力。 通过Internet技术可以将许多监控工作站连接到Internet,从而实现远程控制和数据共享。测控方式的网络化,是未来测控技术发展的必然趋势,它能够充分利用现有资源和网络带来的种种好处,实现各种资源的最有效合理配置。
本文针对大型工业控制系统信息传输距离远、网络拓扑结构复杂,信息种类繁杂,通信可靠性要求高的特点,基于TCP/IP网络通信协议,实现了大型工业测控系统信息管理平台的搭建。
1系统设计
在TCP/IP网络应用中,通信的两个进程间相互作用的主要模式是客户机/服务器模式(C/S),即客户机向服务器发出服务请求,服务器接到请求后,提供相应的服务。在大型工业测控系统中,根据网络拓扑结构,通常采用“一对一”或者“一对多”的TCP通信方式。如图1所示,指挥计算机与各分系统计算机位于不同网段,信息管理工作站作为连接指挥计算机和各分系统的中转站,主要作用是转发指挥计算机的指令给各分系统工作站,各分系统工作站通过控制相应的测试设备,将控制结果回复给信息管理工作站。信息管理工作站再对各分系统的信息进行有效的校验整合,剔除无效信息,简化有效信息,统一转发给指挥计算机, 从而实现了信息的集中和分布控制、统一管理、资源共享。
Lab View可直接使用TCP/IP的传输层,这一层的功能主要是提供应用程序间的通信,TCP/IP协议簇在这一层的协议有TCP和UDP,Lab View提供了与这两个协议相关的功能函数。UDP协议较为简单,但可靠性稍差;TCP协议提供的是面向连接、可靠的字节流服务。当客户端和服务器彼此交换数据前,必须先在双方之间通过“三次握手”协议建立一个TCP连接,之后才能传输数据。TCP提供了超时重发、丢弃重复数据、检验数据、流量控制等功能,保证数据能顺序从一端传到另一端,因此,为了实现可靠的数据传输,考虑使用TCP协议构建信息管理工作站PC端通信模块。根据网络物理特性,在软件设计上采用二级服务器/ 客户端的通信模式,具体通信流程图如图2所示。
其中,信息管理工作站作为客户端与总控网指挥计算机通信,达到指令接收、重组,回令转发;同时作为服务器与各个分系统计算机通信,达到指令转发,回令接收、重组的功能。
2基于LABVIEW的TCP编程
在Lab VIEW中,可以采用TCP节点来实现基于TCP协议的局域网通讯,该节点在函数面板的数据通信/协议/TCP下,该节点分为三个部分:
(1)Connection节点:用于建立客户机和服务器之间通讯的连接;
(2)Transmission节点:用于在客户机和服务器之间传输数据;
(3)Conversion节点:用于计算机IP地址和计算机名称间的切换。
基于Labview多线程并行执行,分割时间片占用CPU资源的运行机制。信息管理工作站监测软件分为:服务器端建立侦听、 服务器端接收数据、服务器端数据发送、客户端数据通信(发送 /接收)、数据处理及显示线程。线程之间的数据流如图3所示。
其中,客户端数据通信线程包括数据接收子线程、数据发送子线程。当客户端TCP/IP打开连接成功,数据接收和数据发送子线程通过WHILE循环分别调用读取TCP数据、写入TCP数据函数独立工作,当其中某一个子线程返回通信错误状态为真, 则两个子线程同时停止工作,重新打开连接,进入下一轮循环。
TCP/IP通信 篇6
数传电台因其低成本、长距离通信的优势在石油、煤炭、环境等工业现场有着较为广泛的应用。然而, 随着计算机技术的发展, 基于网络编程实现的各类应用已逐渐成为主流, 数传电台的组网通信问题便成为了限制其进一步推广应用的关键瓶颈。
本文在充分借鉴Linux网卡虚拟化思想、成果的基础上, 结合数传电台的通信特点, 完成了一个专用TCP/IP网络通信平台的设计, 并以该平台为基础, 搭建了由两个网络节点组成的通信验证网络。经过测试, 该通信平台的应用实现了数传电台间的有序组网通信, 为基于网络编程开发的上层应用程序的移植提供了良好的平台支持。
2 虚拟网卡基本原理
虚拟网卡目前多用于网络安全及构建虚拟网络等应用领域, 在Linux平台上, 虚拟网卡实际上就是一个网卡驱动程序。
2.1 虚拟网卡工作原理
虚拟网卡并不与真实的物理设备进行数据交互, 而是提供了一种在操作系统内核态和用户态之间进行数据交互的机制。通常情况下虚拟网卡驱动并不是单纯的网卡驱动程序, 其中还实现了部分字符设备驱动的功能。因此, 应用程序通过访问用户态字符设备文件, 即可实现数据在Linux操作系统两种运行状态下的交互。
2.2 虚拟网卡体系结构
依据标准虚拟网卡程序的体系结构, 分为网络协议接口层、网络设备表示层、设备驱动功能层及设备接口层。
网络协议接口层为虚拟网卡与内核TCP/IP协议栈之间的接口, 通过调用该层提供的函数, 虚拟网卡可实现与TCP/IP协议栈的交互;网络设备表示层提供了统一的用于描述具体网络设备属性和操作的结构体;设备驱动功能层在具体实现了表示层中提到的各种操作的同时还可于该层实现一些定制化的功能;设备接口层为虚拟网卡与物理或虚拟设备之间的接口, 提供了对设备的读写操作函数。
3 通信平台设计
本文在借鉴标准虚拟网卡体系结构的基础上, 针对数传电台的特点, 针对性的完成了一款通信平台的设计。该平台的系统架构如图1所示, 由协议预处理层、数据链路层及物理接口层组成。该平台的设计核心在数据链路层, 该层在定义了数据帧格式的基础上, 实现了数传电台组网、通信链路控制等功能。协议预处理层介于内核TCP/IP协议栈与数据链路层之间, 实现了网络层数据格式与自定义数据链路层帧格式间的转换及数据的双向传输。物理接口层介于数据链路层与物理设备 (数传电台) 之间, 通过串口读写操作, 实现了数据帧的收发。
3.1 数据链路层设计
3.1.1 数据帧格式定义
数据帧保障了数据在链路层上传输的完整性和有序性, 其格式定义如图2所示。
其中, Type字段占一个字节, 其中bit0表示该数据帧的类型, ‘0’代表普通数据帧, ‘1’代表网络管理帧;bit1用于区分原帧与应答帧, ‘0’代表原帧, ‘1’代表应答帧;bit2用于标识该数据帧的本次传输是否由主节点发起, ‘0’代表由从节点发起, ‘1’代表由主节点发起;bit3-7暂未定义。To字段占一个字节, 标识该数据帧的目的地址;From字段占一个字节, 标识该数据帧的源地址;Seq.字段占一个字节, 用于标识该原帧在发送队列中的序号, 接收方正确接收数据后, 在应答帧中沿用原帧Seq.值。Data字段占0-64个字节, 为实际发送的数据。Resd.字段为保留字段, 占一个字节, 用于今后协议的扩展。Checksum字段占一个字节, 为该数据帧的校验和。
3.1.2 自组网协议设计
自组网协议由组网策略、入网策略、出网策略组成。组网策略负责将多个网络设备以主从模式组成稳定、有序的星型数据通信网络。其中主节点的选择使用最小ID分簇算法 (LID) , 主节点产生后由其负责建立并维护网络成员列表。
入网策略设计了从节点加入网络的机制, 主节点接收到从节点的入网请求并成功入网后负责更新网络成员列表。
出网策略的实现机制为主节点对各网络成员进行超时监测, 若发现从节点不可达, 即通信超时次数达到上限, 则从成员列表中删除该成员。
3.1.3 数据链路控制模块设计
该模块的设计及实现解决了网络从节点占用信道发送数据的问题。根据接收到数据帧类型的不同, 系统在具体实现时定义了数据帧接收缓冲区及管理帧接收缓冲区。数据链路控制模块对接收到的管理帧进行分析, 当发现信道使用权分配指令后即对发送模块进行设置, 完成发送前的准备。
3.1.4 数据接收及发送模块设计
该模块实现数据帧的收发功能。接收子模块对接收到的数据帧的目的地址进行判断, 如果与本节点一致则按照该帧的具体类型完成针对性的写缓存操作;发送子模块在发送数据之前首先判断是否具备信道的使用权限, 若具备则在规定的时间片内完成发送缓冲区中数据帧的发送。
3.2 协议预处理层设计
该层主要实现IP包预处理功能, 包括分包组帧功能及解帧组包功能。分包组帧功能指将内核TCP/IP协议栈下发的IP数据包按数据链路层数据帧格式进行分割和组帧, 原理如图3所示, 然后将数据帧存入发送缓存的过程;解帧组包功能指将从接收缓存中获取的数据帧解析后按照规则组成IP包并发送给内核TCP/IP协议栈的过程。
3.3 物理接口层设计
该层主要设计实现了对基本网络设备进行读写操作的功能, 实现了数据链路层数据帧在实际网络设备上的收发。针对数传电台的实际控制方式, 本文在该层设计实现了RS-232串口读写功能函数。
4 测试及验证
本文以网络命令ping为例介绍了通信平台的测试验证过程。测试搭建了两个节点的通信网络, 每个网络节点由一台运行Linux (内核版本2.6.32) 操作系统的计算机配一个数传电台组成。节点A虚拟网卡IP为192.168.0.1;节点B虚拟网卡IP为192.168.0.2。在两台计算机上分别运行insmod vnic.ko及ifconfi gvnic192.168.0.1 (2) up两个命令完成虚拟网卡的加载与启动。在节点A上运行ping命令后的效果如图4所示。
在两台计算机上的调试打印信息分别如图5、6所示。图5为节点A执行ping命令时发出的IP包, 0x0800表示ping请求, 前面分别为节点B及节点A的IP地址;图6为节点A接收到的ping命令回复IP包, 0x0000表示ping应答请求, 前面分别为节点A及节点B的IP地址。
5 结束语
本文以Linux虚拟网卡技术为基础, 以实现多个数传电台间的组网通信为目标, 设计实现了一个完整的TCP/IP通信平台。数据链路层是该平台的设计重点, 结合数传电台的通信特点, 在该部分重点设计实现了一套完整的数据链路层协议栈。经过验证, 该通信平台屏蔽了底层的具体通信及组网方式, 满足了网络编程的需要。
摘要:数传电台组网技术是制约其进一步推广应用的关键问题。本文参考Linux虚拟网卡技术设计实现了一个以数传电台为基础通信方式的网络通信平台, 通过该平台的应用实现了多个数传电台的组网并向上层应用屏蔽了具体的通信细节, 使得基于TCP/IP协议开发应用可方便地移植于该电台网络之上。
关键词:数传电台,虚拟网卡,Linux,TCP/IP
参考文献
网络TCP/IP协议分析 篇7
关键词:TCP/IP协议,常用命令,安全
TCP/IP (Trans m is s ion ControlProtocol/Inte rne t Protocol的简写, 中文译名为传输控制协议/互联网络协议) 协议是当今Internet最基本的协议。TCP/IP协议组是目前使用最广泛的网络互连协议。按照OSI体系划分, TCP/IP协议可分为数据链路层、网络层、传输层和应用层。TCP/IP的几个常用命令。
1 ping
当网络运行中出现故障时, 采用这个实用程序来预测故障和确定故障源是非常有效的。如果ping不成功, 则可以推断故障出现在以下几个方面:网线是否连通, 网络适配器配置是否正确, IP地址是否可用等;如果执行ping成功而网络仍无法使用, 那么问题很可能出在网络系统的软件配置方面, ping成功只能保证当前主机与目的主机间存在一条连通的物理路径。它还提供了许多参数, 如-t使当前主机不断地向目的主机发送数据, -n可以自己确定向目的主机发送的数据帧数等等, 使用Ctrl+C可以中断ping命令。
2 trace rt
这个程序的功能是判定数据包到达目的主机所经过的路径、显示数据包经过的中继节点清单和到达时间。还可以使用参数-d决定是否解析主机名。
3 ne ts tat
这个命令可以看到当前网络的整体使用情况。它可以显示当前正在活动的网络连接的详细信息, 如协议类型、当前主机与远程主机的IP地址以及它们之间的连接状态等。常用的参数为:-e用以显示以太网的统计信息;-s显示所有协议的使用状态, 这些协议包括TCP、UDP和IP, 一般这两个参数都是结合在一起使用的-se。另外-p可以选择特定的协议并查看其具体使用信息, -n以数字形式显示地址和端口号, -a可以显示所有主机的端口号, -r则显示当前主机的详细路由信息。
4 ipconfig
TCP/IP协议的设计与实现使不同计算机之间、不同操作平台之间的通信成为可能。但是, TCP/IP协议是在网络规模不大、应用范围不广、计算机技术尚不够发达的情况下设计与实现的, 当时的一种普遍认识是:安全性同题是上层的问题与底层协议无关, 因此TCP/IP在安全性方面做得不够完善。随着网络规模、计算机技术的日益发展, TCP/IP存在的不可克服的脆弱性。越来越阻碍着TCP/IP的进一步广泛使用, 也难以满足未来网络发展的需求。由于TCP/IP协议族本身存在一些安全缺陷, 所以即使正确地实现了它, TCP/IP网络仍会受到攻击。像序列号欺骗、路由攻击、源地址欺骗和授权欺骗等。对于TCP/IP协议族的安全缺陷可得出三个结论:1) 依赖于IP源地址的认证是极其不安全的;2) 大量的入侵都源于序列号攻击;3) 大多数网络控制机制都是危险的, 而且基于以太网的数据包易被监听, 入侵者甚至可以更改IP或MAC地址, 致使攻击方式更加复杂。
在以太网中, 数据以“帧”为单位进行传输。任何主机发送的帧都会到达与其处于同一网段的所有主机的网络接口, 而每一个网络接口都有一个唯一的硬件地址, 即网卡的MAC地址。信息以数据包的形式传送, 其报头包含了目的主机的MAC地址, 如果其携带的MAC地址是自己的或者是广播地址, 那么就会将数据帧交给IP层, 否则丢掉。网络上也存在一些能接收所有数据包的接口, 攻击通过某些手段使网卡工作在监听模式下, 从而达到非法窃取他人信息的目的。
处理方法:1) 对网络中传输的数据进行加密, 使攻击方无法正确还原窃取的数据, 并且传输的数据是经过压缩的, 可以加快传输的速度。2) 安装检测软件, 做到防范于未然。3) 改用交换式的网络拓扑结构。因为在交换式以太网中, 数据只会被发往目的地址的网卡, 其他网卡接收不到数据包, 但是交换机的成本比较高。
参考文献
[1]Craig Zacker著, 王晓东等译.TCP/IP网络管理[M].中国水利水电出版社, 1998.
TCP/IP通信 篇8
1 嵌入式 TCP/IP 协议
TCP/IP包含应用层、传输层 、网络层等一系列协议 , 且每层可采用的协议有多种。由于嵌入式设备的硬件资源有限, 其可直接寻址的程序空间和数据空间都很小, 处理速度较慢, 所以嵌入 式设备一 般采用最 精简的TCP/IP协议栈 (包括ARP、IP、UDP、ICMP等协议)[1], 在设计和开发过程中主要使用了ARP和TCP协议。
(1) ARP协议 (地址解析协议 : Address Resolution Proto- col) 是获取MAC物理地址的TCP/IP协议, 其主要作用是通过已知IP地址, 获取对应MAC物理地址的协议。当ARP请求被广播到网络上后, 目的主机收到请求包后发出一个ARP回应包, 给出自己的MAC地址和IP地址[2]。
(2) TCP协议 (传输控制协议 : Transmission Control Pro- tocol) 是一种面向连接的、可靠的、基于字节流的传输层通信协议, 通过3次握手建立连接, 通信完成时要删除连接, 采用“带重传的肯定确认”技术来实现传输的可靠性。
2 系统设置流程
上位机远程修改嵌入式设备的IP地址的流程包括:
(1) 上位机发出查询下位机MAC地址的ARP广播请求包, 嵌入式设备接收后响应ARP请求, 返回本地MAC地址; (2) 上位机记录响应ARP请求的嵌入式设备IP地址和MAC, 为建立TCP连接做准备; (3) 选择需要进行修改的嵌入式设备IP并发送TCP连接请求, 嵌入式设备建立与上位机的TCP连接;(4) 上位机发送IP?参数数据包, 嵌入式设备截取数据包中的信息来完成本地IP设置[3]。
3 上位机软件系统实现
在VC++开发平台上对上位机软件系统进行了实现, 使用基于TCP的Socket与嵌入式设备进行连接, 通过gethostby- name函数返回给定嵌入式设备IP地址对应于的包含主机名字和地址信息的hostent结构指针。使用IP地址和默认端口号与下位机进行连接, 如果连接成功则将封装好的数据包到下位机并给出提示[4]。关键代码如下:
4 结语
TCP/IP通信 篇9
随着网络时代的到来, 监控技术的不断创新, 特别是随着CPU处理能力、硬盘容量和光纤传输等技术发展, 促使实时监控的多媒体处理技术的发展, 实时的监控技术从而成熟。它是集视频技术、网络技术和处理技术的综合技术的系统, 被应用在很多领域。利用视频监控技术, 能自动监视重点地区的危险状况, 当一些危害社会行为出现时, 监控系统能够实时向相关人员和部门提供现场情况, 从而避免工作人员出现场, 避免二次事故的发生, 从而节省了大量的物质资料的投入。另外, 实时的监控技术对城市商业区、城市交通十字路口、学校门前等重点地区的人流量进行监控[1]。除了上述的应用, 还有一些应用允许游客访问遥远的景点。
2 实时监控系统需求
实时监控系统主要应用在远程视频监控上, 同时连接数字/模拟摄像头、有线或无线网络等, 实时监控系统需要将得到视频数据处理后传输至网络, 用户可以在PC机、手持PDA或智能手机上的客户端实时监控现场等[1]。其实时监控系统的应用架构如图所示。
实时监控系统主要的硬件是流媒体服务器。在系统构架设计之前必须做好硬件选型, 其次结合硬件平台, 进行软件研究和系统设计。流媒体转发服务系统[2]包括硬件设备、文件管理和系统软件等几部分。整个系统的工作流程是:第一, 通过视频监控设备采集监控现场的音视频信息;第二, 将采集的视频数据信息编码压缩;第三, 是通过网络传输技术将处理后数据传输至用户的客户端。同时, 实时监控系统按照应用的需要进行用户数量和传输的控制, 确定网络自动调整发送码率。因此, 流媒体转发服务的实时监控必须具备以下功能和性能: (1) 支持多路复用和多用户服务, 同时支持不同的编码的视频格式; (2) 提供实时视频数据的处理, 实现视频数据的帧率、码率和和网络带宽适应; (3) 支持各种网路环境的监控, 实时视频数据质量高, 传输数据连续性高。
3 实时监控方案设计
根据分析实时监控系统的需求, 确定了流媒体服务器的功能需求, 通过流媒体服务器的协议栈的设计, 在传输层协议上解释RTP, RTCP, RTSP协议, 流媒体数据也都是打成RTP包, 通过UDP端口发出去的, 因此, 对系统进行模块化分析, 对于TCP/IP端口事件的调度以及把大量的流媒体数据从磁盘空间传递到网络上, 依据此给出了流媒体系统的软件架构, 由流媒体服务器和客户端两部分组成, 二者之间通过信令传输信息, 数据发送和控制。计算机网络系统的结构复杂, 其最基本的体系结构是分层次的, TCP/IP协议的传输层有面向连接的传输控制协议TCP和无连接的用户数据报协议UDP两个重要的协议。而RTP/RTCP是端对端的协议, RTP协议通常使用UDP来传送数据, 也可以使用TCP协议提供时间信息和实现流同步。RTP和RTCP的配合使用, 能有效的适合网上的实时数据处理。
4 实时监控系统工作流程
根据实时监控系统的方案设计, 通过视频编码技术对所采集的视频数据信息进行处理, 从而将视频数据信息压缩成为能够适合网络传输的信息;客户端的任务是执行接收视频信息和解压缩视频数据, 从而使得使用者能够通过客户端观看实时监控图像信息, 其系统工作流程为:
(1) 实时监控流媒体转发服务器初始化, 开启监听线程; (2) 自动搜索实时监控服务器, 准备接收数据; (3) 进行登录实时监控服务器, 并且配置传输方式发出请求; (4) 对请求用户进行认证, 检查用户权限及服务用户的上限; (5) 传输连接建立后, 向流媒体转发服务器发送视频传输请求, 等待建立会话; (6) 用户接收到视频通道信息, 并且产生接收数据地址; (7) 成功建立链接, 服务器将该用户加入发送队列, 并处理控制命令; (8) 进行发送实时监控的流媒体信息; (9) 流媒体服务器控制信令传输, 控制视频、音频数据的反馈信息; (10) 断开服务器连接, 结束会话。
5 小结
本文分析了实时监控系统的需求以及整体的方案设计和系统的工作流程。实现了实时视频数据传输的设计, 并设计了调用关系以及接口。
摘要:随着计算机技术与网络技术的广泛应用, 实时视频监控的技术也得到了广泛应用。在现今的网络公司均把大力发展视频流技术放在了非常重要的位置, 其中的流媒体编码技术也得到很大的发展, 而客户端与服务器之间的认证和传输也成为了该技术的重点, 谁能更好的解决这些问题, 提供最方便, 快捷的解决办法, 谁就能在未来的网络竞争中占得先机。
关键词:流媒体,TCP/IP,实时监控
参考文献
[1]陈轶博.智能视频监控系统的设计与实现[D].大连:大连海事大学, 2008 (05) :15-21.
[2]Karim Yaghmour.Building Embedded Linux System.Sebastopol:O'Reilly, 2003:53-54.
[3]陈颖, 视频编码技术的流媒体网络传输适应性[J].福建信息技术教育, 2007 (04) .
【TCP/IP通信】推荐阅读:
TCP/IP通信协议10-06
数据通信网络通信06-05
配网通信中无线通信07-05
通信设备之数据通信07-23
通信监测技术与通信网11-15
4G通信技术的无线通信05-30
电力通信中的光纤通信12-19
短波通信装备操作实验报告(通信课程)06-11
计算机通信网光纤通信08-02
加密通信07-15