TCP网络连接(精选四篇)
TCP网络连接 篇1
关键词:TCP/IP通信,长连接,连接组
0引言
TCP/IP长连接通信是指 Client 方与 Server 方先建立通讯连接, 连接建立后不会断开, 然后再进行报文发送和接收, 报文发送与接收完毕后, 原来的连接不会断开而继续存在, 因此可以连续进行交易报文的发送与接收。在实际应用中TCP/IP长连接主要面临的问题是:由于只需建立一次连接, 如果通信过程中连接断开而发送方使用write () 或send () 函数发送数据时并不马上报错, 直到通信缓冲区阻塞溢出或TCP/IP资源耗尽导致系统报错。目前解决这个问题主要有两种方法, 一种方法是在client端启动一个进程在一定间隔时间内向Server端发ping命令测试线路是否保持连接状态, 如果Client端数量很大, 大量发出ping包可能导致Server端通信堵塞;另一方法是在联机交易空闲时间间隔内Client端向Server端发送测试包 (空包) , 在规定时间内能接受到返回包来测试线路。
在银联交易中, 基于长连接中存在的问题, 中国银联在《银行卡联网联合技术规范V2.0》中对通信接口规范作了相关规定:
(1) 对于入网机构和处理中心之间的多条通信连接, 增加“连接组”的概念。“连接组”的含义是指对多条通信连接进行分组, 同组的一条连接中断时, 要关闭同组内的其它连接并重建该组的所有连接。
(2) 针对单工连接, 该规范规定了3种情况。
第一种情况:在一个连接组中, 如果入网机构发现它的发送连接中断, 则关闭同组内的其它连接, 并向处理中心发起连接请求, 重建该组内的所有连接。
第二种情况:在一个连接组中, 如果入网机构检测到该连接已被中断或在5分钟之内在某接收连接上没有收到任何报文 (包括空闲连接查询报文) , 则认为该连接已经中断, 将关闭在本连接组内的所有连接, 并向处理中心发起连接请求, 重建该组内的所有连接。
第三种情况:在一个连接组中, 对于任意一个连接对, 如果处理中心发现该连接的发送连接中断, 而其相应的接收连接正常时, 则处理中心首先关闭该接收连接, 然后回复到侦听状态, 等待接收入网机构重新建立连接的请求。
1设计图
根据银联通信接口规范, 入网机构前置机采用TCP/IP长连接的单工方式, 采用2进2出4条连接, 具体连接见图1所示。
入网机构前置机通信模块设计结构图如2所示。
相关事项说明如下:
sender:此网络通讯模块中用于消息发送的功能模块 (即Socket连接中的client方) 。
receiver:此网络通讯模块中用于消息接受的功能模块 (即Socket连接中的Server方) 。
manager:此网络通讯模块中用于管理一个“连接组”的通讯管理模块, 用于管理组内所有连接。
2详细设计
2.1manager设计
manager功能模块被设计管理同一“连接组”内的所有连接。具体的功能如下:①等待接收来自sender和receiver发来的状态消息 (一般指通讯故障或者超时) ;②发送消息通知sender跟CUPS建立连接 (或重新建立连接) ;③发送消息通知sender跟CUPS断开连接 (关闭连接) ;④发送消息通知receiver在特定端口诊听来自CUPS的连接请求;⑤发送消息通知receiver在特定端口断开与CUPS的连接, 并继续诊听下一个连接。
manager处理sender和receiver发来的消息的方式如下:
(1) 如果是sender发来的消息 (一般指连接中断消息) , 说明发送连接中断, 则manager应该关闭它管理的所有连接, 并重建这些连接。
(2) 如果是receiver发来的消息 (包括连接中断和超时消息) , 说明接收连接中断, manager关闭它所管理的所有连接, 并重建这些连接。
2.2sender设计
sender表示一个用来发送数据的进程, 它建立一个与服务器的socket连接, 并一直保持该连接。manager根据配置文件中的设置, 启动一个或多个sender进程, 由它们共同负责发送数据。当连接中断时, 它们会向manager发送一个连接中断消息, 由manager进行处理。一个sender进程的工作流程按照以下步骤进行:①设置socket的“LINGER”属性为关闭状态, 设置“REUSEADDR”属性为打开状态;②与服务器建立连接, 并一直保持连接状态;③设置计时器, 如果连接上4分钟 (可配置) 未发送数据, 则发送“空闲连接查询报文”。发送完成后, 将计时器重置;④当有发送数据的消息到来时, 从消息队列中取出待发送的数据, 通过已建立的连接进行发送。发送完成后, 重置计时器;⑤当发送信息失败或发现连接已断开的时候, 向manager发送连接中断消息;⑥当收到manager重建连接的消息时, 关闭当前连接并重新建立;⑦当收到manager关闭连接的消息时, 关闭当前连接并退出进程。
2.3receiver设计
receiver表示一个接收数据的进程, 它首先进行端口的监听, 当有连接请求, 并且是合法连接时就建立连接。receiver是由manager进行管理的, manager根据配置文件中的设置管理一个或多个receiver。每个receiver都保持着一个长连接, 当连接中断时会向manager发送一个中断消息。receiver的工作流程为:①设置socket的“LINGER”属性为关闭状态, 设置“REUSEADDR”属性为打开状态;②根据参数, 建立socket并监听端口;③当有连接请求时, 首先检查是否为合法地址, 如果非法则继续监听;如果合法, 则建立连接并一直保持;④启动计时器, 如果5分钟 (可配置) 内没有接收到任何数据, 则认为连接中断, 向manager发送连接中断消息;⑤当有数据到达时, 接收数据并将其发送到消息队列中。接收完成后, 重置计时器;⑥当收到manager发送的重建消息时, 关闭计时器, 关闭连接并重新监听;⑦当收到manager发送的关闭消息时, 关闭连接并退出进程。
2.4通信设计
manager和sender、receiver之间通讯是同一台主机之间的不同进程之间的通讯, 通讯的内容如下:
(1) manager向sender发送的消息有:
关闭连接、 重建连接
(2) manager向receiver发送的消息有:
关闭连接、 重建连接
(3) sender向manager发送的消息有:
发送连接关闭。
(4) receiver向manager发送的消息有:
接收连接关闭、 接收连接超时。
3结束语
本文针对TCP/IP中长连接单工方式中连接中断后重新连接的问题, 采用了类似守护进程的原理, 使用统一的管理模块manger负责发送长连接sender和接收长连接receiver的管理。manger主要功能是发送消息通知sender跟cups建立连接或断开连接, 发送消息通知receiver在特定端口侦听来自CUPS的连接请求, 或断开连接并继续诊听下一个连接。manger之所以发出断开连接的消息是因为它收到“连接组”中sender或receiver发来的通讯故障或超时的状态消息。在具体连接中如果sender在规定时间内没有交易发生, 则发送空闲连接查询报文, 如果在规定时间内receiver没有收到响应报文来判断通讯故障或超时, 向manger发送状态消息。
参考文献
[1]中国银联股份有限公司.Q/CUP 006.1-2005, 银行卡联网联合技术规范V2.0[S].上海:中国银联股份有限公司, 2005.
[2]刘光宝.TCP/IP应用程序的通信连接模式.北京:developerWork中国, AIX and UNIX, 文档库[EB/OL].http://www.ibm.com/developerworks/cn/aix/library/0807_liugb_tcpip/#author.2008.7.
[3]W.RICHARD STEVENS.TCP/IP详解[M].范建华, 译.北京:机械工业出版社, 2000.
TCP如何建立/拆除连接 篇2
TCP如何建立连接
图 1TCP 首部格式中SYN 标志位仅使用在建立TCP 连接的过程中,TCP 建立连接的过程被称为“三路握手“连接,即一般通信双方共需要传输三个数据包方能成功建立一个TCP 连接,我们通常将建立连接作为使用TCP 协议理所当然的前导过程,但很少去质疑这样一个建立连接过程的必要性。
实际上,使用TCP 协议必须首先建立一个连接是保证TCP 协议可靠性数据传输的基本前提(当然由于TCP 协议是一个有状态协议,必须通过某种机制进行通信双方状态上的同步,而建立连接就是这样一种机制)。
至于为何需要三个数据包,原因是建立连接过程中信息的交换必须至少使用三个数据包,从下文的分析来看,建立连接最多需要使用四个数据包。需要再次提到的是:SYN 标志位只是用在建立连接的三个(或者四个)数据包中,一旦连接建立完成后,之后发送的所有数据包不可设置SYN 标志位。单从保证数据可靠性传输角度而言,TCP 协议需要在正式数据传输之前首先进行某些信息的交换,这个信息即是双方的初始序列号(另外的一些信息包括最大报文长度通报等)。
诚如前文所述,序列号的使用对于 TCP 协议而言至关重要,在正式数据传输之前,双方必须得到对方的初始字节数据的编号,这样才有可能对其所接收数据的合法性进行判断,才有其它的对数据重复,数据重叠等一系列问题的进一步判别和解决。故交换各自的初始序列号必须在正式数据传输之前完成,我们美其名曰这个过程为连接建立过程。至于双方TCP 协议各自状态的更新主要是软件设计上可靠性保证的一个辅助,并非这个所谓的建立过程所主要关注的问题,
初始序列号的交换从最直接的角度来说需要四个数据包:
1>主机 A 向主机B 发送其初始序列号。
2>主机 B 向主机A 确认其发送的初始序列号。
3>主机 B 向主机A 发送其初始序列号。
4>主机 A 向主机B 确认其发送的初始序列号。
我们将<2><3>两步合为一步,即B 向A 确认其(A 之前发送的)初始序列号的同时发送其(即B 自己的)初始序列号。所谓确认数据包即将数据包的ACK 标志位设置为1 即可。注意这三个(或四个)数据包中SYN 标志位设置为1,而且SYN 标志位也仅在这三个(或四个)数据包中被设置为1。
此处有一个问题:即A,B 主机在通报各自初始序列号的同时能否传输一些正常数据,原理上可以(TCP 协议规范上并没有说不可以),但是大多数实现在通报初始序列号时都不附带正常数据,而是将其作为一个单独的过程,由此正式确立建立连接一说。
TCP如何拆除连接
当前连接的双方都可以发起拆除连接操作,但简单的拆除连接可能会造成数据丢失。为此,TCP采用四次握手的方式拆除连接。
四次握手与三次握手类似:
①1发拆除请求
②2收到请求,并发确认,1收到该确认后,不再发送数据,但任然会接收数据(半连接)
③2发拆除请求
TCP网络连接 篇3
【关键词】工业以太网;TCP/IP协议;嵌入式系统技术
1.工业以太网发展现状
以太网(Ethernet)是一种拥有产品设计、冲突检测、载波监听等多种功能接入的技术,既是计算机连接局域网络的标准,又是互联装备共同分享数据的通信协议。比如说在接入检测冲突接口时,主机在检测到线路空闲时才能发送数据,而不是直接将数据发送。随着以太网传输速率的大幅度提高,以太网被广泛使用,形成了以太网集线器的技术领域。在以太网+TCP/IP协议上,先进的网络技术不断碰撞、摩擦,最终形成了在工业网络中低成本、高效控制的工业以太网技术。该项技术使用起来方便快捷且功能强大,可以把多项企业网络层面连接起来,形成企业特殊的基于TCP/IP光纤环网网络的网上信息系统。
2.矿山应用工业以太网的必要性
目前,我国越来越多的矿井实施了矿山综合信息化建设,已成为当代矿井开发的一种必然趋势。参考已经实施过的矿井的综合信息化建设结果,可以发现凡是走矿井综合信息化建设老路没有创新改革和建设过程中信息软件平台臃肿的矿井单位,其最终的建设结果都是失败的,所以这就需要树立可靠、实用的信息化建设目标,对矿井生产加工时不能漏掉每一项安全检查,在保证矿井安全的基础上再谈控制矿井的要求。因此,统一的软件平台、硬件传输平台和管理平台的建设是实现矿井综合信息化建设的必经步骤。红岭的有色矿业之前的网络布线重复且复杂,传输效率也不高,所以,环形网的建设是相对合理科学的,将井上和井下的线路建立统一的数据传输平台,这样既能够满足现代矿井信息建设的发展要求,又能够利用工业以太网的优势掌控整个红岭矿山的电子信息技术。此外,工业以太网采用信号传输和独立的检测系统也能够无限制接入信息平台。
3.基于TCP/IP光纤环网网络的设计目标
构建覆盖全部矿井的工业以太网,实现工业生产过程自动化、数字监控安全化、企业管理信息化、信息管理集约化,利用统一的以太网数据传输平台实现智能化、科学化的矿井管理是工业以太网系统的设计的总体目标。通过信息技术、网络技术的综合利用把视频、音频、图画的现象呈现的眼前,达到综合管理的目标,实现安全生产礦井的目标。在技术方面要有统一的技术标砖,既能够确保技术指标标准,规范系统流程,又能够保证系统软件正常安全的运行;在实施过程和内容中,要统一分配,组织明确,实施中突出实施重点、难点,投入时多加慎重,利用充足的机械装备进行勘察检测,满足工作人员的基本需求,保证其工作环境不受干扰;在管理上,需要精简机构,完善人员分配,结合现代化管理技术实现管理自动化、科学化;在系统调用上,要求用户资料的规范性和详细性,并保证用户的安全性。
4.设计的原理
(1)工业以太网拓扑结构 环形工业以太网是综合信息自动化控制平台最主要的主干结构,主干网的传输介质是光纤,运用交换机进行工业以太网数据交换。井上和井下可以设置多个环网,环网相连构成的信息网会成为安全的监控中心。由于在矿井条件下,环境十分恶劣,恶劣的地理环境将会导致网络的意外断裂的风险升高,所以处于安全生产的需要,要求信息传输网络链线路冗余。因此,使用环形以太网结构在很大程度上解决了网络意外断裂的可能,确保了以太网的安全性和可靠性。从生产上来看,其实环形网络是一个简单的网络环,在任意一条网络线路出现问题时都会有备用的线路使用传输,实现了以太网的高效可用性。(2)嵌入式系统技术 嵌入式系统是能够完成一种或多种特定功能的计算机系统,具有高度灵活化、相应速度迅速、代码简便的特点,是软硬件的紧密结合体,适用于多任务或任务限制的应用条件。与常规计算机系统不同的是,嵌入式系统技术的每一套嵌入系统的开发都有其针对性和目的性的联系,也有着相应的特殊功能,不仅大大提高了传输效率更最大限度的发挥了硬件和软件的作用。另外,在通信和控制领域内,嵌入式系统也发挥了不可替代的作用。
5.技术分析
控制系统网络可分为信息层、控制层和设备层三层,与传统的控制系统相比,工业以太网打破了之前只在信息层采用以太网技术的缺陷,在控制层和设备层也采用了相当先进的以太网技术,基本来说,所有的PLC和I/O供应商都能够提供支持TCP/IP的以太网借口产品。工业以太网被广泛使用后,控制器的作用被凸显出来,既可位于现场控制又可远程控制,打破了时间、地点的限制。目前,控制的远程I/O支持以太网的功能越来越广泛,有的甚至已经集成了Web服务器,并且允许在信息层的用户也可以像处在控制层的用户一样直接获取控制器和远程I/O模块中的当前状态值,但在本质上仍有着一定的差距。
TCP网络连接 篇4
对于网线断开后重新连上 tcp socket 连接保持 ESTABLISH 状态不变的问题的解释有些网络应用在网线断开后重新连上的情况下 tcp socket 连接保持 ESTABLISH 状态不变,
如果应用程序不使用 tcp 的 keepalive,在网线断开之后,以前建立的 socket 链接仍然会保持在
ESTABLISH 状态不会改变,
对于网线断开后重新连上 tcp socket 连接保持 ESTABLISH 状态不变的问题的解释Unix系统
,
实际上 tcp 协议对这部分是有所处理的,要求服务端程序,在设置 socket 属性时,
使用 keepalive option, 一旦有此设置,这些长时间无数据的链接会根据 tcp 的keepalive 内核属性,
在 >(tcp_keepalive_time + (tcp_keepalive_probes * tcp_keepalive_intvl))
所对应的时间(单位为秒)之后,断开这些链接。
原文转自:www.ltesting.net
★ 系统测试总结
★ 基于机内测试的故障注入系统设计
★ 在Ubuntu系统上安装KDE图形化界面的教程
★ 在Ubuntu系统的服务器上安装Webuzo控制面板的教程
★ 直升机电动绞车测试系统的研制
★ 火箭发动机测试系统热电偶通路抗干扰技术
★ ubuntu语言设置成汉语
★ 基于虚拟仪器技术的车身控制器功能测试系统
★ 多内核CPU的性能测试Unix系统
相关文章:
排除医院网络连接故障01-24
机械工安全操作规程01-24
恐怖电影中的哲学意蕴01-24
网络连接状态01-24
Zigbee无线连接01-24
机械工人安全操作规程01-24
钢筋机械安全操作规程01-24
机械安全操作规程01-24
机械操作手安全规程01-24
机械加工安全操作规程01-24