《tcp协议【优秀8篇】》
下面是小编精心为大家整理的tcp协议【优秀8篇】,如果对您有一些参考与帮助,请分享给最好的朋友。
tcp协议 篇1
【关键词】TCP/IP协议,协议分析,三次握手
一、引言
《TCP/IP协议分析》是计算机网络专业必修课程,内容涵盖了TCP/IP协议族中的IP协议、ICMP协议、TCP协议、UDP协议以及应用层的DNS、TELENT、FTP、HTTP、SMTP、POP3等协议,内容抽象,晦涩难懂[1]。在实际教学过程中,作者发现传统的讲授方法主要使用课件讲解协议的封装格式以及实体之间的通信过程,使用动画演示协议实体之间的交互过程,虽然这样做,形象化了协议交互过程,但学生还是感觉比较抽象,有的学生甚至因此失去了学习计算机网络课程的兴趣[2]。学生没有真正理解TCP/IP协议,所谓的理解只能算是表面上的,理论联系实际更是无从谈起[3]。为了较直观地学习网络协议,本文提出将网络协议分析软件应用到教学中,利用该软件使学生在学习网络协议的过程中能清楚地看到网络数据的详细格式和具体传输过程,从而加深对网络协议的理解并提高自身的实际动手能力。本文以最有代表性的三次握手为例具体阐述其全过程。
二、协议分析及理论概述
网络协议分析软件可以实时捕获网络上传输的数据信息,能跟踪剖析网络协议运行的整个过程,让学生直观地看到网络中的数据内容,把抽象的概念形象生动地表现出来,因此,网络协议分析软件开始被广泛地用于网络实验甚至是课堂的教学当中。TCP是一种可靠的、面向连接的传输协议,因此端到端的数据传输前必须先建立一个会话,这个会话过程是通过三次往返来实现的,被形象的称为“三次握手”,其具体步骤是:
1、主机A向主机B发出连接请求报文,序列号字段Seq随机生成,假设为x,确认号字段Ack为0。
2、如果B收到则发回确认报文,其确认号字段Ack = x+1,同时随机生成序列号字段Seq,假设为y。
3、A收到后向B给出确认,其Seq=x+1,Ack= y+1。
至此,双方确认已建立连接。
一般来说,这是很多教师在讲授时常采用的方式,应该说其实现原理并不深奥。但实际问题是具体细节并不详细,比如序列号字段Sequence Number和确认号字段Acknowledge Number的具体值有什么特点?每个阶段的SYN和ACK字段的值是多少?各功能字段如何配合使用的?等等问题并没有直观的体现出来。此时协议分析实验平台则可大显身手。
三、协议分析实验案例
本文以访问学校官网?为例进行抓包实验。浏览器访问网站采用的是HTTP协议,它是应用层协议之一,其传输手段正是TCP,也就是说,客户机和服务器的这次会话过程一定有TCP建立连接的过程,即三次握手,通过协议分析软件就能看到其详细过程和内容。
第一步:启动协议分析软件,本文采用的是中软吉大和我院共建的专用网络协议实训平台,其功能基本和其它的抓包软件相同,如Sniffer和Ethereal等。需要说明的是,为了减少抓包的数量,便于查找和分析,建议设置过滤器,比如HTTP过滤。
第二步:启动浏览器访问网站,只要一打开页面即可停止捕获,表面上看到的页面呈现似乎一瞬间就完成了,其实从最底层的原始数据来看,成百上千个数据帧已经捕获了,也正好借此机会给学生讲解原因,贯穿以前所学以及为今后的内容打下埋伏。
第三步:展开协议分析树,找到所需要的会话项,就本例来说,客户端IP是192.168.3.33,端口是1118,服务器IP是192.168.100.1,端口是80。
第四步:详细解读三次握手的数据信息。源端口、目的端口、首部长度等TCP头部信息字段一清二楚。为了更好理解TCP三次握手的原理细节,我们重点关注序列号、确认号以及各种标志位的含义。
1、选中第一帧数据,即标示为SYN,表示第一次握手,序列号是585188878,系统随机生成的,可以看出该值足够大,理论上不会重复,确认号确实是0。标志位SYN为1,ACK为0,表示连接请求,证实了上节理论概述的第一条。
2、选中第二帧数据,即标示为SYN ACK,其含义是第二次握手,确认号是585188879,其值正好是第一次握手中序列号值加一,表示收到客户端的连接请求了,同时为了给客户端回复,也需要随机生成一个序列号,其值是3570280288。标志位SYN和ACK均为1,表示既是响应又有新请求,证实了上节理论概述的第二条。
3、选中第三帧数据,即标示为ACK,表示第三次握手。序列号是585188879,其值是第二次握手中的确认号,表示客户端已经知道和服务器端连接上了,确认号是3570280289,其值正好是第二次握手中序列号值加一,如果一切正常,待服务器端收到并看到该确认字段值后就表示已经和客户端连接上了。标志位SYN为0,ACK为1,表示回应,证实了上节理论概述的第三条。至此双方都确认互相连接上了,后续就是正常的携带有效数据载荷的传输了,其最终的序列号585188879和确认号3570280289就是双方秉持的令牌凭证了。
四、结束语
在计算机网络专业的课程中,TCP/IP协议课程原理的复杂性及抽象性决定了其必然成为教学的难点。由于网络协议分析软件能够捕获各种网络实验协议的数据并进行解析,进而再现网络实验通信的整个过程。本文以三次握手为例,通过协议分析软件以图解方式直观方式展示网络会话过程中数据帧的传输方向及每个数据帧的功能,把隐性变成了显性,对理论数据格式与实验捕获的实际数据帧比较,使学生对协议交互机制和工作过程有了更深刻的认识,也提升了对网络故障的分析能力。改变了过去的传统教课方式,符合先感性后理性的认知规律,使学生感觉到网络协议易学易懂,激发了兴趣,增强了信心,取得了良好的教学效果。
参考文献:
[1]梅海彬。 协议分析软件在计算机网络教学中的应用。 安徽:科教文汇。 2012
tcp协议 篇2
【关键词】计算机多线程 协议还原 方法概述
1 协议并行处理方法
1.1 数据包级别并行方法
在协议栈并行处理方法中,数据包级别并行方法是一种并行度最高的处理方法。对于不同的数据包都会按照对应的处理器进行系列处理,达到同时处理多个数据包或者是归属于同一个链接的数据包。因巨大的吞吐性能以及不存在负载均衡的优势得到了广泛运用。虽然其具有高度的并发性,但是在面对带有上下文信息或状态的协议来说,例如TCP,可以获得的性能提升空间受到了很大的约束。
1.2 函数级别并行方法
函数级别并行方法主要运用于早期的协议并行处理中。早期协议是将链路控制数据和传送数据置于同一个数据包中,这就意味着协议并行处理的函数必须要同时处理链路控制数据外加上传送数据,从而出现的一个问题就是协议处理函数单元之间务必会存在大量的上下文相关结果。
1.3 协议栈层次间并行方法
协议栈层次间并行方法主要运用于目前网络协议的层次结构中。在早期设计相关网络协议时,为了大幅度的降低协议实现难度而将每个层次协议设计成为了相对独立的部分,从而完成独立层间之间的并行处理。但是就目前实际情况来看,这种方法虽然有许多的优势,但是性能受到了层次结构中吞吐量最低层次结构的限制,所以目前需要对协议栈中的每一个层次进行研究,优化吞吐量最低的层次结构。
2 基于连接性多线程TCP/IP协议并行处理方法概述
2.1 TCP/IP协议栈多线程并行化存在的问题
TCP/IP协议栈多线程并行化存在的问题主要存在于临界锁以及处理器之间的负载均衡情况上。考虑到临街锁解决共享冲突的代价极大问题,多线程并发程序虽然可以解决部分问题,但是又带来了诸如临界区碰撞、内核陷入等等问题,影响程序的运行效率。因此,对于多线程并行的TCP/IP协议而言,消除临界锁问题是至关重要的。对于处理器之间的负载均衡情况,需要考虑的就是协调好处理器之间的负载均衡问题。
2.2 多线程TCP/IP协议栈的结构
本文所要分析的多线程TCP/IP协议栈结构主要还是共享内存多处理器平台运行下的多线程TCP/IP协议栈结构,其基本的特点就是当共享内存对处理器平台上的处理器数量增加时,其结构的性能也随之增加。多线程TCP/IP协议栈结构如图1所示。
2.3 处理器均衡措施
处理器均衡措施具体可以细化分为两个步骤。第一个步骤就是对IP数据包中的三元组即源地址、目的地址以及协议标识,按照一定的标准进行分发。仅仅采取第一步不能够对处理器进行深度的处理,需要借助于第二个步骤。第二个步骤包括设置协议栈、促进操作系统借助于任务调度完成负载均衡的操作。后者的时间点在于运行线程数不小于硬件平台的处理器数量。按照上述顺序,可以达到处理器负载均衡的目的。
3 实验方案结果
从本文的实验方案测试结果中可以看出,首先单线程下的程序只能够通过串来执行,从而不能够发挥出处理器的实际性能。其次,在处理器的数量和线程数量对等的情况之下,也不能够发挥出系统硬件的全部性能。最后,在处理器数量小于协议栈线程数量的时点,通过适当的增加线程数量,可以在很大程度上提高整个系统的吞吐量。另外,对于内存分配方式对系统性能的影响上,结合实践经验以及实验方案结构可以发现,相比PtMalloc以及SmartBits而言,FixMalloc可以降低动态内存分配过程中出现的处理器消耗,降低的幅度值大概在8.12%上下。
4 结束语
由于现代处理器性能和网络传输能力发展之间存在的很大的不平衡,从而推进了多处理器的发展。本文从网络协议还原技术出发,提出了一整套的多线程并行的TCP/IP协议的相关还原方案。此外,在通用性的多处理器计算平台的实际操作过程中发现,虽然计算机多线程TCP/IP协议还原技术可以很好的保障当下处理器平台性能的发挥,但是对于进一步提升网络入侵监测系统协议还原能力以及挖掘高性能处理器平台,以此来协调处理器性能和网络传输能力发展不平衡的矛盾,将是下一阶段研究和探究的重点内容。
参考文献
[1]Bjorkman M,Gunningberg P Performance Modeling of Multiprocessor Implementations of Protocols[J],2009,11(03):142-145.
[2]田伟,顾韵华,丁妮。网络行为监测与还原系统及关键技术研究[J].计算机工程与设计,2011,29(02):111-113.
[3]谭敏生,汤亮。基于HTIP的网络数据包还原技术研究[J].计算机技术与发展,2011,17(06):14-16.
tcp协议 篇3
关键词:网络工程;TCP/IP协议;课程建设;教学改革
文章编号:1672-5913(2013)14-0042-04 中图分类号:G642
TCP/IP协议是高校计算机网络工程专业的专业基础课,是计算机网络学科领域和网络工程专业人才应具备的理论基础,在网络工程专业课程体系中处于重要地位。该课程是高级路由与交换、网络性能测试与分析、网络通信程序设计、网络信息安全等课程的前导课程,如果学习不好会直接影响网络工程专业学生学习后续专业课的兴趣和信心,从而影响整个课程体系的教学质量。然而,TCP/IP协议课程内容以各类通信协议为主,教学过程中容易出现以下问题:学生感到内容抽象和枯燥,似懂非懂、不好理解;网络技术的飞速发展易使理论与实际脱节,学生以为在实际工作中用处不大;实验环节设计不够合理,难以发挥应有作用。笔者针对长春大学计算机科学技术学院网络工程专业多年来在TCP/IP协议课程的建设和教学改革过程中积累的一些微薄经验加以总结,供广大教师同行切磋探讨。
1 课程定位与目标
TCP/IP协议是网络工程专业的一门专业基础课,而且是必修课,是在本专业学生已有的计算机网络知识基础上进一步学习研究互联网的核心技术,以提高和加深学生的理论深度和实践水平。通过该课程的教学,教师引导学生逐步理解因特网的网络体系结构――事实上的国际标准TCP/IP,理解多个异构物理网络如何能够互连在一起,互连网络协议如何协调工作,应用程序如何使用互连网络系统,数据如何从一个应用进程传输到另一个应用进程。学生可以了解到Intemet的许多技术细节和前沿热点,掌握TCP/IP协议族的结构,掌握TCP/IP协议族中各子协议的结构和功能,重点掌握ARP协议、IP协议、UDP协议和TCP协议等相关理论知识。该课程的学习将为下一步的专业学习和计算机网络相关的应用、设计和开发工作打下必要且坚实的基础。
2 课程建设与改革探索
2.1 教学内容规划及教材的选用
按照TCP/IP协议课程的定位与目标,依据教育部高等学校计算机科学与技术教学指导委员会编写的《高等学校网络工程专业规范(试行)》,结合长春大学培养应用型本科网络工程专业人才的定位和学生的实际情况,将该课程规划为48学时,其中理论课38学时,实验课10学时。该课程是网络工程专业学生在学完计算机网络课程后进一步深入学习和掌握计算机网络理论的进阶课程,主要内容包括底层物理网络技术、ARP协议、IPv4编址技术、IP辅助协议、单播路由选择协议、UDP协议、TCP协议、SCTP协议、应用层协议和IPv6相关协议等。教材选用的是清华大学出版的《TCP/IP协议族(第4版)》,由Behrouz A.Forouzan著,王海、张娟等译。该教材为世界著名的计算机经典教材,曾荣获“第八届全国高校出版社优秀畅销书一等奖”。该教材大量运用图文并茂的方法讲述技术性很强的内容,重点突出、实例丰富。我们从该教材第二版开始使用一直到目前的第四版,效果较好。该课程的具体理论课讲授学时规划如下:
(1)引言(概论)部分占2学时,主要讲授Intemet简史、协议和标准、因特网标准、因特网管理机构,适当扩展一些互联网的前沿和热点技术以激发学生对该课程的兴趣,使学生了解Intemet历史,理解并掌握协议和标准概念,了解标准创建委员会,掌握RFC的成熟度。
(2)OSI模型和TCP/IP协议族部分占2学时,主要讲授OSI模型、TCP/IP协议族,使学生掌握数据通信和组网中多层结构的思想以及层与层之间的相互关系,掌握OSI模型中每一层的功能,掌握TCP/IP协议族与OSI模型的差异和特点。
(3)底层技术部分占2学时,主要讲授有线局域网技术、无线局域网技术、广域网技术和常用互连设备,使学生掌握有线局域网中占主导地位的以太网技术理论知识,包括传统以太网、快速以太网等,了解无线局域网技术、蓝牙技术、点到点广域网技术。
(4)IP编址部分占4学时,主要讲授IP编址的方法、地址的种类、分类地址、分类地址互联网划分实例、划分子网的方法、无分类编址、构成超网的方法,使学生理解IPv4编址思想以及如何在分类编址中实现,掌握分类结构中的划分子网的方法以及构造超网和无分类编址方法。
(5)IP分组交付和路由选择部分占2学时,主要讲授面向连接和无连接、直接交付与间接交付、路由选择的类型,使学生理解面向连接和无连接的区别,直接交付与间接交付的区别,掌握路由器结构和路由选择的类型。
(6)网际协议(IPv4)部分占4学时,主要讲授IP数据报首部、分片、选项、检验和IP软件包设计,使学生理解IP协议的总体思想,掌握IP数据报的一般格式、首部中各个字段的名称和意义,掌握IP数据报的分片和重装,理解IP数据报首部中检验和计算方法以及IP协议软件设计算法。
(7)地址解析协议(ARP)部分占2学时,主要讲授地址映射、ARP协议、ATMARP、ARP软件包设计,使学生掌握ARP的基本原理、ARP数据包格式和各字段意义、了解ARP存在的问题和缺陷、了解RARP的用途。
(8)网际控制报文协议(ICMP)部分占2学时,主要讲授ICMP报文类型、ICMP报文格式、排错工具的原理和用法、ICMP软件包设计原理,使学生掌握ICMP报文的分类及格式、Ping和Traceroute的用法和工作原理,理解ICMP协议软件设计思路。
(9)移动IP部分占2学时,该节内容较新,主要讲授移动IP编址、归属、外地、移动主机通信的3个阶段、移动IP的低效率,使学生了解移动IP通信的相关基础、存在的问题与解决方案。
(10)用户数据报协议(UDP)部分占2学时,主要讲授UDP用户数据报、UDP的服务和应用、UDP软件包设计算法,使学生掌握UDP报文格式及各字段意义,了解检验和的基本概念和计算方法、UDP协议软件实现思路。
(11)传输控制协议(TCP)占6学时,主要讲授TCP服务类型与特点、TCP报文段首部格式、连接控制、流量控制、差错控制、拥塞控制、TCP软件包设计思路,介绍流控制传输协议SCTP,使学生掌握TCP的报文格式,理解TCP的服务类型、滑动窗口的概念、流量控制和差错控制的方法、TCP的传输机制、TCP协议软件实现思路,了解SCTP协议。
(12)单播路由协议部分占2学时,主要讲授RIP、OSPF和BGP,使学生理解自治系统的概念,掌握距离向量和链路状态路由选择协议特点,重点掌握RIP、OSPF、BGP的原理及应用。
(13)应用层协议部分占4学时,主要讲授客户一服务器范式、DHCP、域名系统DNS、远程登录、文件传送协议、万维网、电子邮件、网络管理SNMP等应用层协议,使学生理解常用应用层协议的基本原理和用途。
(14)IPv6协议部分占2学时,主要讲授IPv6编址、分组格式、IPv4到IPv6的过渡技术,使学生掌握IPv6地址记法、3种地址类型、过渡技术,了解IPv6分组格式和优越性。
教学内容以大纲和教材为基础,适当结合和扩充一些较新的技术热点,尽量做到理论联系实际。学生普遍认为课程内容设置较合理,易于理解和接受,对该课程的学习兴趣较高。
2.2 实验内容的设计
经过多年的实践与改进,目前长春大学计算机科学技术学院TCP/IP协议课程共规划了5个实验(10学时),分别为IP协议分析、ARP地址解析协议分析、ICMP协议分析与应用、UDP用户数据报协议分析、TCP传输控制协议分析。每个实验都包括基础实验、进阶实验、思考、创新设计4个环节,主要内容见表1。
实验课内容由TCP/IP协议课程组教师精心组织和设计,已充分考虑到课程的重、难点以及后续课程学习的需求。实验目的要保证清晰明确,这对学生做实验至关重要。实验内容分为基础和进阶两段,好处是基础实验操作简单,容易实现,增进了一些基础较差学生的信心与兴趣,更方便进一步在其基础上完成进阶实验内容。每个实验都设置了几个让学生思考的问题,使学生发现不足、开拓思路。完成以上几项内容,该实验目的就基本达到。创新设计环节则是对学生提出的更高要求,对学生理论联系实际、创新和学以致用提供了发挥空间。该实验规划考虑到了不同层次的学生情况,从实验课指导和实验报告提交情况来看也基本达到了课程组的预期目标。
2.3 教学团队建设
优秀的课程和实验资源离不开教师的讲授,课程建设与改革需要建设一支高水平的教学团队。TCP/IP协议课程教学团队由5名教师组成,是一支长期从事本课程及相关课程教学的“双师型”队伍(取得了如CcomA、RcomA、CcomP等业界著名的网络厂商认证)。职称结构为副教授2人、讲师3人,学历结构为博士1人、硕士4人。团队成员都是中青年教师,接受和更新知识能力强,经常参加各种技术培训与学术交流,参与企业公司的网络工程项目和实验室建设,具备扎实的理论基础和丰富的工程经验,在教学过程中对重点把握到位,理论与实践融会贯通。课程组还定期召开教学研讨会,交流在课程讲授过程中的心得和问题;每学期都组织互听课,相互学习并指出不足。教学团队成员的讲课水平不断提高,在学生评教测评中成绩突出,深受学生欢迎。近几年来课程组成员承担和完成各级教学质量工程项目9项,其中省级5项、校级4项,公开发表教学论文7篇,建设省级优秀课一门,并荣获2012年校级优秀教学团队称号。
2.4 教学方法与教学管理的改进
教学团队业务水平进步的同时,教学方法和教学管理也应不断地改进,先进的教学方法与科学的教学管理必然获得更好的教学效果。本文主要就以下方面进行探讨。
(1)发挥多媒体优势,扬长避短。现在多媒体授课已经在高校普及,多媒体课件图文并茂、信息量大,但是也有弊端。在多媒体教室授课的教师很难离开控制台,一边讲课一边控制电脑的过程容易忽略与学生的交流,一些形象的肢体语言也无暇表达。很多学生感觉教师缺少了传统黑板讲课的潇洒。教师使用有无线翻页功能的激光笔就可以基本解决这个问题。这样教师可以走下控制台,来到学生中间,无形中便拉近了与学生的距离,教师与学生更容易交互和沟通,课堂气氛会更加轻松融洽。制作课件时,能用动画演示的尽量不用图,能用图表达的尽量不用文字。比如讲解数据从一台计算机的进程传送到另一台计算机进程时,用动画的形式来演示一下会更容易理解。
(2)用好Wffeshark和Packet Racer工具辅助教学。TCPdP协议课程中有大量的协议,协议数据单元到底是什么样子?单纯靠语言讲述效果是有限的。若利用协议分析工具Wireshark现场抓包、现场分析,讲解效果会直观且容易理解。Packet Tracer是由Cisco公司的一个辅助学习工具,除了模拟设计、配置网络环境外,还可以提供数据包在网络中行进的详细处理过程,观察网络实时运行情况。例如在讲授路由选择协议时,可以利用Packet Tracer清晰地观察到路由信息传递和学习的过程。还可以模拟跟踪网络报文经过路由器和交换机之后各个字段所发生的变化。在本课程教学中用好这两样工具可以起到事半功倍的效果,学生学会使用这两样工具在实验和实际工作中也大有用途。
(3)加强与学生的课后交流。虽然现在提倡启发式教学,鼓励学生积极参与教学,但是课堂时间毕竟有限,课程任务要完成还是以教师讲授为主,不可能所有学生都有机会参与,所以要多利用网络资源不受时间地点限制的优势,如使用QQ群进行课程讨论、为学生答疑,这样所有的学生都能看到,从而避免了重复解答同类问题,提高效率。
(4)注重过程化教学管理,改革考核制度。改变以往全靠期末考试定成绩的办法,根据长春大学计算机科学技术学院制订的“课程过程考核制度管理办法”,提出过程与能力有机结合的考核体系,加大学生课堂讨论和发言表现、课后作业质量、实验质量、课堂测验所占总成绩的比重,全面考核学生的知识、能力和综合素质,增强学生学习自觉性和主动性。
3 结语
经过多年对TCP/IP协议课程的建设与改革研究,该课程的教学和实验内容不断改进,教学资源不断丰富,教学团队也在课程建设和教学改革中不断进步和成长,可谓硕果累累。网络工程专业的实践性很强,我们的课程教学也应更加紧密结合实际,紧跟因特网的发展步伐,不断改革创新,为社会培养更多高质量的网络工程应用型人才。
参考文献:
[1]教育部高等学校计算机科学与技术教学指导委员会,高等学校网络工程专业规范(试行)[M],北京:高等教育出版社,2012
[2]ForouzanBA,TCP/IP协议族[M],4版,王海,张娟,等,译,北京:清华大学出版,2011:3-4
tcp协议 篇4
[关键词]tcp协议 网络安全 协议攻击
一、tcp连接的建立与终止
1.概述
虽然tcp使用不可靠的ip服务,但它却提供一种可靠的运输层服务。
2.建立连接协议(三次“握手”)
(1)客户端发送一个带syn标志的tcp报文到服务器。这是三次握手过程中的报文1.
(2)服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ack标志和syn标志。因此它表示对刚才客户端syn报文的回应;同时又标志syn给客户端,询问客户端是否准备好进行数据通讯。
(3)客户必须再次回应服务段一个ack报文,这是报文段。
3.连接终止协议(四次握手)
由于tcp连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个fin来终止这个方向的连接。收到一个 fin只意味着这一方向上没有数据流动,一个tcp连接在收到一个fin后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。
(1)tcp客户端发送一个fin,用来关闭客户到服务器的数据传送(报文段4)。
(2)服务器收到这个fin,它发回一个ack,确认序号为收到的序号加1(报文段5)。和syn一样,一个fin将占用一个序号。
(3)服务器关闭客户端的连接,发送一个fin给客户端(报文段6)。
(4)客户段发回ack报文确认,并将确认序号设置为收到序号加1(报文段7)。
closed:表示初始状态。
listen:表示服务器端的某个socket处于监听状态,可以接受连接了。
syn_rcvd:这个状态表示接受到了syn报文,在正常情况下,这个状态是服务器端的socket在建立tcp连接时的三次握手会话过程中的一个中间状态,很短暂,基本上用netstat你是很难看到这种状态的,因此这种状态时,当收到客户端的ack报文后,它会进入到established状态。
syn_sent:这个状态与syn_rcvd遥相呼应,当客户端socket执行connect连接时,它首先发送syn报文,因此也随即它会进入到了syn_sent状态,并等待服务端的发送三次握手中的第2个报文。syn_sent状态表示客户端已发送syn报文。
established:表示连接已经建立了。
fin_wait_1:fin_wait_1和fin_wait_2状态的真正含义都是表示等待对方的fin报文。而这两种状态的区别是:fin_wait_1状态实际上是当socket在established状态时,它想主动关闭连接,向对方发送了fin报文,此时该socket即进入到fin_wait_1状态。而当对方回应ack报文后,则进入到fin_wait_2状态,当然在实际的正常情况下,无论对方何种情况下,都应该马上回应ack报文,所以fin_wait_1状态一般是比较难见到的,而fin_wait_2状态还有时常常可以用netstat看到。
fin_wait_2:上面已经详细解释了这种状态,实际上fin_wait_2状态下的socket,表示半连接,也即有一方要求close连接,但另外还告诉对方,我暂时还有点数据需要传送给你,稍后再关闭连接。
time_wait:表示收到了对方的fin报文,并发送出了ack报文,就等2msl后即可回到closed可用状态了。如果fin_wait_1状态下,收到了对方同时带fin标志和ack标志的报文时,可以直接进入到time_wait状态,而无须经过fin_wait_2状态。
closing:这种状态比较特殊,属于一种比较罕见的例外状态。正常情况下,当你发送fin报文后,按理来说是应该先收到(或同时收到)对方的ack报文,再收到对方的fin报文。但是closing状态表示你发送fin报文后,并没有收到对方的ack报文,反而却也收到了对方的fin报文。什么情况下会出现此种情况呢?那就是如果双方几乎在同时close一个socket的话,那么就出现了双方同时发送fin报文的情况,也即会出现closing状态,表示双方都正在关闭socket连接。
close_wait:这种状态的含义表示在等待关闭。怎么理解呢?当对方close一个socket后发送fin报文给自己,你系统毫无疑问地会回应一个ack报文给对方,此时则进入到close_wait状态。接下来呢,实际上你真正需要考虑的事情是察看你是否还有数据发送给对方,如果没有的话,那么你也就可以close这个socket,发送fin报文给对方,也即关闭连接。所以你在close_wait状态下,需要完成的事情是等待你去关闭连接。
last_ack:这个状态是被动关闭一方在发送fin报文后,最后等待对方的ack报文。当收到ack报文后,也即可以进入到closed可用状态了。
二、tcp协议安全问题
1.概述
tcp协议现在用得非常广泛,但它本身也有一些安全上的缺陷。一些缺陷是由于主机使用ip源地址作为认证机制引起的;berkeley的r系列涮用就是一个明显的例子。其它的一些缺陷是由于网络控制机制,特别是路由协议,缺少认证机制引起的。
2.tcp序列号预测攻击
tcp序列号预测攻击最早是1985年由对这一安全漏洞进行阐述的。他使用tcp序列号预测,即使是没有从服务器得到任何响应,来产生一个tcp包序列。这使他能欺骗在本地网络上的主机。
(1)攻击方法。tcp协议有一个非常令人着迷的漏洞,简单的说,就是通过预测初始序列号来伪造tcp包。并且不需要得到回应。这样就可以使攻击者伪装成一台和服务器在同一个局域网上的一台可信任的机器。通常建立tcp连接需要三次握手。客户机送一个初始序列号isnc,服务器应答它并送出它自己的序列号isns,客户机再发出一个应答包。这三个数据包发送以后,就可以传输数据了。这个过程可以用下图来表示:
c一>s:syn(isnc)
s一>c:syn(isns),ack(isnc)
c一>s:ack(isns)
c一>s:data
and/or
s一>c:data
这就是说,要使一个连接建立起来,c必须知道isns,这个数多少有一些随机性,假没入侵者x有一种方法可以预测isns。在这种情况下,他可以通过以下的步骤来模仿可信任的主机t:
x->s:syn(isnx),src=t
s->t:syn(isns),ack(isnx)
x一>s:ackfisns),src=t
x一>s:ack(isns),src=t,nasty-data
即使s一>t的数据包不经过x,x也能知道它的内容,因此能发送数据。如果x在一个能够执行命令的连接上实行这种攻击(例如berkeley rsh服务),他就可以运行——恶意的命令。那么怎样预测随机的isn 呢?在berkeley系统中,初始序列号变量是以每秒固定的数目递增的,而每次连接的序列号就是这个变量的一半。因此,如果有人通过合法的连接观察isns,他就有很大的机会通过计算得到下一次连接的isns。
应该指出的是服务器的应答消息s一>t:syn(isns),ack(isnx)。并没有消除这种攻击;虽然真正的t主机将接收到它,并且会重设连接。这并不是一个严重的障碍,因为我们可以通过一些拒绝服务的攻击使t主机暂时失效,也可以在t主机关机或重起的时候攻击。还有一种通过netstat服务对tcp序列号进行的攻击。在这种攻击中,入侵者模仿一台关闭的主机。如果在目标机上有netstat服务。它就会提供另一个端口必要的序列号信息:这样就根本不需要猜测了。
(2)防御。很明显,这种攻击的关键是berkeley系统中初始序列号变量变化方式太简单了。tcp标准要求这个变量必须以每秒钟将近250,000的速度增长:berkerey系统则使用了一个比它慢得多的速度然而关键的因素是间隔的大小而不是平均速度。从4.2bsd系统的每秒增加128到4.3bsd 的每秒增加125,000的改变是没有意义的。下面让我们来看看以250,000的频率运行是否有用。为了简单起见,现忽略了其它连接产生的问题,仅仅考虑本计数器固定速度的改变:为了知道当前的序列号,必须发送一个syn包,并接收它的回应。如下:
x一>s:synfisnx1
s一>x:syn(isns),ack(isnx)(1)
第一个使服务器产生下一序列号的伪造的数据包,可以紧跟在服务器对探测包的回应后送出:
x一>s:syn(isnx),src=t (2)
序列号isns在应答中使用
s一>t:syn(isns),ack(isnx)
它是由数据包(1)产生到服务器接收到数据包(1)之间的时间唯一确定的。但是这个时间是由x到s的来回时间确定的。因此如果攻击者能够测量或预测到这个时间。即使使用一个能精确的4微秒的时钟也不能阻止这种攻击。对来回时间的测量能精确到什么程度呢?如果假设网络很稳定,我们可以精确到10毫秒左右。很明显,互联网不可能长期这么稳定。但是却有可能在一个较短的时间内稳定。因此我们有2500个isns的可能值。考虑到重新测量来回时间所需的时间,我们假设每次尝试需要花5秒,那么一个攻击者很可能在7500秒内获得成功。条件更好的网络或更精确的测量,能够提高成功的可能性。因此,仅仅是按tcp协议标准是不行的。在这里,我们默认的假设是目标机上不运行任何进程。实际上,当新的请求到达时,是会运行一些进程的。在一个6mips的机器上,一个时钟周期-4秒大约可执行25条指令。高优先级的中断tcb分配顺序的不同,都对下一个序列号有相当大影响。这种随机的效果是被认为是主机的优点。
tcp协议 篇5
【 关键词 】 TCP;移动设备;优化
1 引言
近年来,我国大力发展网络事业,网络已经成为人们学习、工作、生活中不可缺少的一部分。随着无线网络技术的推广和发展,人们的上网方式已经不再仅仅局限在固定的场所,通过移动设备访问互联网已经成为人们当前上网的主要方式,但由于无线网络中的系统切换、信号抖动、随机错误等原因而产生的丢包使得移动设备中使用TCP协议受到限制,对TCP协议进行优化,以适应移动设备的需求具有非常大的实用价值。
2 TCP协议
2.1 TCP概述
TCP(传输控制协议)是在不可靠的网络上实现端到端的字节流通信,提供可靠的网络服务的协议。利用TCP协议进行通信时,首先发送方向接收方发送一个TCP连接请求,以确保两端建立全双工的双向传输通道。TCP协议的数据单元是Segment(报文段),报文段的大小不能超过65535字节,另外报文段不能超过最大的传送单元MTU,假如报文段超过MTU,那边报文段将被分割成两个或以上。在TCP协议进行通信以前,通信的双方要进行协商确定最大的通信报文段的值。当发送方发送出报文段后,网络是不确定的,为了保证报文段的安全,设计一个计时器,当报文段到达接收方后,接收方向发送方回复一个确认报文段,该确认报文段包含希望接收下一个报文段的序列号,由此发送方收到确认报文段后,即知道接收方已经收到发送的报文段。根据定时器的计时,假如在设定的时间内没有收到接收方回执的确认,则表明接收方没有收到报文段,则重新发送该报文段。
由TCP协议的通信可知,TCP协议通过确认和超时机制两种手段来保证传输的安全可靠性。但是,网络是一个非常复杂的系统工程,在数据的通信过程中不可避免地会出现断开或阻塞的现象,另外由于报文段经过不同的路由器,超时之后可能报文段也会到达接收方。由此可见,仅仅通过超时机制和确认不能保证TCP协议的安全。
2.2 TCP Reno
1990年,对TCP协议增加快速恢复算法(快速重传算法、快速恢复算法、加速增加和下降算法等)形成TCP Reno,经过20多年的发展,已经成为当前最常见的TCP协议。
(1)快速重传算法。在TCP的接收方,当收到报文后就给发送方发送一个确认。假如接收方收到的报文不是所需要的报文,就会给发送方发出一个重复的确认报文,当发送方收到三个及以上重复确认报文,就对丢失的报文进行重发。
(2)快速恢复算法。当对丢失的报文重发之后,可以通过增加拥塞窗口的大小、自动对重复确认报文接收数加1、发送报文的大小与接收窗口相适应等方法来提高接收的成功率。
3 移动设备上的TCP协议
3.1 移动设备
当前,随着集成电路和嵌入式技术的飞速发展,移动设备的功能越来越强大,而体积越来越小,特别是移动设备与无线网络相结合后,在各行业中应用越来越广泛。对移动设备的定义,并没有一个专业的描述,总结起来,移动设备主要具有无线性、移动性和携带方便等特点。另外,由于移动设备采用通为固定的硬件设备,使之具有CPU速度慢、内存小、功耗受限和有限的输入输出功能等缺点。
3.2 TCP协议与无线网络
无线网络根据覆盖区域的大小可以划分为无线广域网和无线局域网。在无线广域网主要采用GPRS和CDPD技术;在无线局域网中主要采用蓝牙技术和IEEE802.11。无论采用哪种技术,在无线网络中传输数据都具有较高的链路错误率、较低的带宽及较长的时延。
在无线网络中采用TCP协议,由于无线网络的特性,使得TCP协议的性能明显下降。首先,在无线网络上建立无线链路时,TCP协议的报文丢失率较高,特别是对于非拥塞性的丢包现象,TCP协议的错误检测无法做出正确的判断。在快速重发和恢复算法中,当发送方收到3个及以上重复确认报文时,就对报文重发,而从应用层的角度来看,无线网络中的TCP协议使得连接的延迟增加,进而加大了宽带的使用,整个网络连接的性能下降,发送方重新发送的报文可能由于连接线路而再次丢失,这使得TCP协议在无线网络中的使用更加困难。
对于上述的情况,在上个世纪末期,对TCP协议进行了初步的优化,首先对于非拥塞丢包进行屏蔽;另外在不破坏TCP语议的前提下,针对连接的节点双方进行改进优化,根据实际情况进行针对性的错误恢复。
4 TCP协议优化
4.1 TCP结构
为了保证TCP在移动设备中安全、准确使用,首先对TCP的数据结构进行描述分析,其主要包含的字段有连接状态、定时器、重传计数器、最大报文段大小、收到确认报文个数、对应的IP控制块、初始发送窗口大小、已经发送但未收到的报文、待发数据、接收窗口、发送计时等。
当接收和发送数据时,TCP的数据结构主要包含源端口、目的端口、确认号、窗口大小、序号、检验和、标志位等信息。
(1)接收数据。首先对接收到的数据进行检验和检查,假如出错,直接返回错误给发送方;校验和正确,则TCP数据存入相关的缓冲中,利用相关的接收函数完成接收,并将正确接收的结果返回给发送方。
(2)发送数据。由窗口和系统决定发送数据的长度,正常情况下,待发数据的大小是TCP的最大报文段大小、待发数据超过窗口的一半、窗口中无已经发送但没有收到确认的数据信息;特殊情况下的发送有立即发送确认、发FIN包、发送紧急数据等。对于发送适当调整窗口值,对定时器进行重传。
4.2 优化改进算法
4.2.1 避免拥塞改进算法
TCP协议收到超过3个重复确认报文,就立即发送报文,有时不仅仅无法使报文发送到接收方,相反使得原有的通信线路更加拥塞。因此,设计一个拥塞计时器,在第一次收到超过3个重复确认报文后立即进行发送,随着收到重复确认报文的增加,TCP协议不再立即发送未收到的报文,而是在拥塞计时器的规定时间范围内,随机进行发送。当重复确认报文收到的越多,其拥塞计时器的数值越大,即发送的间隔时间越长,从而避免了由于过多地发送同一报文而加重了线路的拥塞。
4.2.2错误恢复改进算法
对于TCP的错误恢复,首先要对丢包进行判断分析丢包是拥塞丢包还是非拥塞丢包,可以通过判断网络状态进行分析。对TCP收到的第一个确认报文的时间进行判断,假如该时间与发送时间差小于规定的时间,则表明假如该报文丢失的情况是由非拥塞丢包引起的,则直接进入错误恢复阶段。
5 结束语
本文针对移动设备中的TCP协议进行研究,随着网络的发展,移动设备已经成为人们日常工作学习中不可缺少的一部分,如何提高移动设备的安全性和可靠性是当前IT业内关注的重点。
参考文献
[1] Douglas E. Comer 著,林瑶,蒋慧等译,谢希仁审校,《用 TCP/IP 进行网际互联 第一卷:原理、协议与结构》第四版,电子工业出版社。
[2] M. Allman, V. Paxson, On Estimating End-to-End Network Path Properties, In Proceedings of ACM SIGCOMM 99,1999.
tcp协议 篇6
关键词:档案库系统;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.
tcp协议 篇7
关键词:嵌入式IP;TCP/IP;嵌入式TCP;嵌入式Internet
中图分类号:TP393文献标识码:A文章编号:1009-3044(2010)08-1815-02
The Design and Implementation of the Embedded TCP/IP Protocol
LIU Chun-yan1, YAN Xing-jian2
(1.Yunnan Province School of Posts and Telecommunications, Kunming 65000, China; 2.China Mobile Group Yunnan Co., Ltd., Kunming 65000, China)
Abstract: This paper analyzed the designed principal and the implementation method of the embedded TCP/IP protocol stack. The source code of the embedded TCP/IP protocol is developed with the GNU tool chain on the Linux operating system. In the concrete implementation, this paper concentrates in the reduction of the standard TCP/IP protocoland is mainly achieved IP, TCP, ARP, ICMP protocol to make it applicable to embedded systems.
Key words: embedded IP; TCP/IP; embedded TCP; embedded Inernet
1 概述
嵌入式系统应用日益广泛,其TCP/IP协议的实现,业界开展了不少工作,结合对嵌入式TCP/IP协议栈的分析,本文给出了一种设计实现并就相关问题进行了探讨,为方便以后的叙述,将所设计和实现的嵌入式TCP/IP协议栈命名为EmbedIP。
2 EmbedIP设计与实现描述
使用Linux系统作为嵌入式TCP/IP的设计与实现开发的操作系统。GNU工具的编译器和项目管理工具,主要包括:GNU GCC,Make,Gdb,Binutils等。源代码调试工具使用gnu gdb, DDD和kgdb作为辅助的源代码调试工具。对于TCP/IP协议开发来说必须使用IP包处理工具来完成IP包的发送和侦测,这里选用netwag作为IP包的发送和侦测的工具。netwag共集成221相关的网络工具,其中最为常用的工具为sniff和spoof两个工具。另也同时使用ethereal,它是优秀的网络抓包工具,并有一定错误提示功能。并且一般linux系统都有基于命令行的tcpdump,这个软件也是一很好的IP包侦测工具。将netwag,ethereal,tcpdump三种工具灵活地组合使用将极大地帮助了嵌入式TCP/IP的设计与实现,高质量和快速地完成。
在PC机系统上TCP/IP协议栈的实现通常符合RFC标准,而在嵌入式环境下进行TCP/IP协议栈设计时不可能像PC机系统一样实现完全符合RFC标准的TCP/IP协议栈。嵌入式TCP/IP协议的设计与实现必须对TCP/IP协议进行一定裁减,并尽可能在最大程度上兼容和满足RFC标准。
结合实际的应用,在EmbedIP中实现了必要的几种协议:IP、 TCP、 ARP、ICMP。现对EmbedIP的整体执行流程作一介绍,EmbedIP整体流程看参见图1。
由图1可看出,EmbedIP的处理是基于事件处理模型的思路设计的,该设计思路主要参考了uip 0.6[4] 的实现方法。
在图1中,读入的链路层数据帧存储于一长度为1500字节的缓冲区内,处理好的数据放入这1500字节的发送缓冲区内,然后将数据发送。图中超时处理由文件eip_tcp.c中的TCPTimerProc()函数来进行时钟的管理,ARP协议的处理由位于文件eip_arp.c中的ARPProc()函数来进行处理,IP包头的处理由位于eip_ip.c中的IPProc()函数来进行处理,TCP协议处理由位于eip_tcp.c中的函数TCPProc()来进行处理。
以下对两个主要协议进行说明。
3 EmbedIP中的IP协议
IP层是整个INTERNET层次模型中的核心部分。IP协议规范在RFC791中进行了定义,IP协议是网络层的核心协议,在EmbedIP中暂不支持IP包的分片传送和重组,在这样的情况下,通常IP包头长度都是标准的20字节。
根据IP包头的协议格式可以得出IP包头的C语言描述。IP包头的C语言描述见上。对于网络层来说主要处理的是IP包头,由IP包头的判断决定下一步使用的处理协议。IP包头的处理流程参见图2。在图2中有5个包含有检查字样的活动状态,在这5个检查状态中一旦检查出错就直接转到终止状态。
4 EmbedIP中的TCP协议
为使TCP协议能在嵌入式的环境中运行,可进行裁减。
现设计的嵌入式TCP/IP主要应用于服务器端,因此那些在客户端才会使用的TCP协议部分就将其裁减掉。这样在TCP协议中就不支持主动打开,与之相应的状态就不再实现,而仅支持被动打开。同时地,超时处理的相关模块也就不用实现与之相关的内容。考虑到在实用中时很少使用urgent功能,所以urgent功能也裁减掉,不实现。因窗口协议需要大量的缓冲区,这在嵌入式系统中,没有足够的RAM来完成这一要求,因此,TCP窗口协议也裁减掉,不实现。这样一来,TCP协议就变得相对简单,TCP协议的实现也就集中到TCP状态机的实现上,这不仅能符合实际需求,还能使TCP协议能在小型嵌入式系统上良好的运行。
TCP协议的整体流程见图3。IP包头处理完后,若是TCP协议,那么程序就会转入TCP处理模块,这也就是TCP协议处理的开始。TCP协议的处理通常是按照TCP的标志位进行分流的,从而转向不同的处理过程。TCP协议在开始处理时,最为重要的步骤是根据TCP段的IP地址,端口号区分该段是一要求建立新连接的段还是一已存在的连接的TCP段,然后才进行进一步的处理。对于是一要求建立新连接的TCP段,先找到一个未用的连接数据结构,然后根据所得的TCP段填写相关的内容,一切好了以后,被动打开端应返回确认帧,并为三次握手定理作好准备,这个时候作为被动打开端的服务器的TCP连接状态处于SYN_RCVD状态。当TCP段的IP地址和端口信息为某一连接的信息时,证明该TCP段为某一连接应处理的TCP段,这个时候,程序对TCP段进行必要的处理后就进入到TCP状态机的处理。
当所有输入处理都完成了,程序将根据是否有数据要发送的信号为数据的发送准备数据,最终设置并启动数据发送函数。
TCP状态机的处理通常伴随着超时处理,两者相辅相成共同完成任务。因在TCP协议的实现时对TCP协议进行了裁减,并裁减了一部分TCP状态,这造成在状态机转换时与RFC标准有所不同,但实现了的状态机转换一定必须符合RFC标准。现已实现的TCP状态机转化和超时处理见图4。
图4 状态机转化和超时处理 图5 TCP层数据发送流程
TCP协议是基于IP协议的,所以其在进行数据发送时就比IP协议的数据发送处理要复杂,这里就对TCP协议进行发送的流程作一说明。TCP协议层的数据发送过程见图5。
以上的流程在实现时用两个函数TCPSndPreProc()和TCPAppDataSnd()进行了抽象。由图5可见,数据发送时,由高层数据开始,往底层处理,处理每一层时加上符合该层的数据,最终调用链路层接口将数据发送出去。
5 结束语
在本嵌入式TCP/IP的设计与实现中,设计和实现了TCP/IP协议通信的必要部分,这包括:IP、TCP、ARP、ICMP协议的实现四个部分。结合应用实践,实现时进行了必要剪裁,通过测试该协议正确,在此基础上今后可进一步对EmbedIP进行完善,以使其更为有用和更为健壮。
参考文献:
[1] Stevens W R.TCP/IP详解 卷一:协议(英文版)[M].北京:机械工业出版社,2002.
[2] Stevens W R.TCP/IP详解 卷三:TCP事务协议(英文版)、HTTP、NNTP和UNIX域协议(英文版)[M].北京:机械工业出版社,2002.
[3] Stevens W R.TCP/IP详解 卷二:实现(英文版)、HTTP、NNTP和UNIX域协议(英文版)[M].北京:机械工业出版社,2002.
tcp协议 篇8
【关键词】TCP/IP协议 Android OpenWrt 远程无线控制
一、TCP/IP协议
TCP/IP协议栈是一个实现网络上通信的协议族,这种协议使得不同平台架构网络之间的互联成为可能,它是一个真正开放系统,最早起源于一个关于分组交换网络研究的项目,后来发展成为Internet 事实上的通信标准。TCP/IP协议采用分层的结构形式,总共分成四层,是对OSI结构的简化,它们每一层都实现了不同的功能模块和通信协议,每一层都为上一层提供支持,其结构如图1所示:
图1 TCP/IP协议结构
二、OpenWrt路由嵌入式系统
OpenWrt是一个开源的Linux版本,主要是用于嵌入式系统,其强大之处在于它的网络部分功能,现在很多嵌入式设备的代码都是使用OpenWrt或者参考OpenWrt做成的。OpenWrt是运行在嵌入式CPU上,主频一般都在几百兆左右,Flash闪存一般为8M或者16M,SDRAM内存一般是16M。主流路由器固件有 dd-wrt,tomato,openwrt三类。对于开发人员,OpenWrt 是使用框架来构建应用程序,而无需建立一个完整的固件来支持;对于用户来说,这意味着其拥有完全定制的能力,可以用前所未有的方式使用该设备。
本文中的mini路由器是常见的TP-LINK TL-WR703N v1,4MFlash,32MDDR,无线标准:IEEE 802.11n、IEEE 802.11g、IEEE 802.11b, 有线标准:IEEE 802.3、IEEE 802.3u,最高传输速度150Mbps,信道数1-13,1个10/100Mbps LAN/WAN复用接口,1个USB接口,内置天线,支持3G、VPN、WDS无线桥接、无线MAC地址过滤、无线安全功能开关、64/128/152位WEP加密、WPA-PSK/WPA2-PSK、WPA/WPA2安全机制,远程WEB管理,配置文件导入与导出,WEB软件升级。
在。com下载中心下载TL-WR703N的OpenWrt固件,路由器通过网线连接电脑后登陆路由器,在路由器的固件升级中选择文件进行升级,升级中不要断电,否则导致路由器损坏,整个过程需要5分钟左右,升级后路由器的USB就具备了驳接摄像头或者直插U盘的功能,而官方版本只支持驳接3G上网卡。刷完后固件版本为OpenWrt FirmWare Attitude Adjustment(r31054)/LuCI Trunk(trunk-svn8380),嵌入式Linux内核版本为3.2.12。WIFI 智能模块, 就是把 3G 路由器改装的, 直接把 TTL 焊点引到了迷你 USB 接口,这样就可以跟控制板进行通信和供电。
远程设置的基本流程就是将连上宽带的无线路由器添加一个虚拟服务器,IP为192.168.1.17,新建两个服务端口,视频接入端口为8080,控制端口为2001,将3G无线路由器的模式从Access Point改为Client并连上无线路由器,查看无线路由器的WAN口IP地址为202.203.41.14,在手机端接入服务器IP设置为202.203.41.14,这样手机连上宽带后就可以连接上远程的3G路由器。图2是一个IP远程连接控制的拓扑图。
图2 IP远程连接拓扑结构
三、Arduino控制系统
Arduino平台的基础就是AVR指令集的单片机。Arduino是一个能够用来感应和控制现实物理世界的一套工具。它由一个基于单片机并且开放源码的硬件平台,和一套为Arduino板编写程序的开发环境组成。Arduino可以用来开发交互产品,比如它可以读取大量的开关和传感器信号,并且可以控制各式各样的电灯、电机和其他物理设备。图3是Arduino控制板的框图。
图3 Arduino控制板的框图。
图4 控制系统组成框图
四、Android手机端软件设计
Android提供一套关于wifi连接和数据信号收发的API,我们利用这些API可以快速开发相关软件,软件Main.java的基本函数构成如图5。
图5 Main.java基本函数构成
视频传输与呈现的MySurfaceView.java的基本函数构成如图6。
图6 MySurfaceView.java基本函数构成
常用钢琴键为21个键,即分别实现高中低三个音阶,安卓软件界面如图7。
图7安卓软件界面效果图
在代码段将视频接入IP地址和控制IP地址均设置为服务器IP地址202.203.41.14,经过实践,这套系统可以很好的实现远程连接与控制,达到了预期的效果。
六、总结
本文提出了一套完整了远程控制方案,包括硬件部分和软件部分,随着远程无线控制的发展,这个方向会越来越被大家所青睐,然而目前网络连接中广泛使用的IPv4协议地址空间上存在很大的局限性,地址空间的局限往往使得运营商动态分配IP地址。如果自己有唯一的域名的话就可以解决这个问题,解析到域名的IP地址就可以唯一的连接到此地址作为服务器了,理论上全国各地均可以进行远程连接和控制。
参考文献:
[1]候国照。基于OpenWrt的无线传感器网络协议研究与实现[D].哈尔滨工业大学,2009.
[2]焦双伟。基于TCP/IP网络的智能家居控制系统的研究与实现[D].南昌航空大学,2012.
[3]肖飞。嵌入式Internet远程控制设计与实现[D].河南师范大学,2009.
[4]周正杰。基于Internet的家电控制的研究[D].广西大学,2011.