如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
TCP连接断连问题剖析TCP连接的保持并不需要任何额外的操作,但在实际应用中,要长时间保持一个TCP连接则会受到诸多因素的影响。本文介绍了几种常见的导致TCP连接断连的原因,并在此基础上,以AIX系统上TCP连接的异常断连为例,借助相应的网络分析工具,逐步揭开AIX上TCP断连的原因,并给出两种可行的解决方案。引言TCP/IP协议簇也称为国际互联网协议簇。TCP/IP协议簇是目前使用最为广泛的全球互联网技术,其分层结构如图1所示:图1.TCP/IP协议簇分层结构如图1所示,数据链路层主要负责处理传输媒介等众多的物理接口细节;网络层负责处理数据分组在网络中的活动,包括上层数据报文的分割、选路等;传输层则负责为两台主机提供端到端的通信;应用层将负责处理应用程序的特定细节。其中,IP协议是网络层的核心协议,用来提供不可靠、无连接的数据传递服务;而TCP协议则处于传输层,其基于不可靠无连接的IP协议能够为两台主机提供面向连接的、可靠的通信。由于TCP是面向连接的协议,因此在两台主机通信之前,需要首先建立起一条连接。下面我们将简要介绍TCP连接的建立以及通信双方是如何保持已建立的TCP连接的。TCP连接的建立及保持一个TCP连接的建立需要通过著名的“三次握手”来完成。下面的例子将直观给出一个TCP连接的建立过程。在本文的下述描述中,客户端主机均为testClient.cn.ibm.com(Linux),服务器主机均为testServer.cn.ibm.com(AIX)。在testClient主机的一终端上执行tcpdump–ieth0hosttestServer命令,启动tcpdump监听网络数据(其中,eth0是客户主机与外部网络进行通信所使用的网卡);与此同时,在客户主机的另一个终端上执行下述命令:(root@testClient/)>telnettestServer。此时客户主机上tcpdump的输出如清单1所示。清单1.创建一个TCP连接的三次握手#tcpdump–S-ien0hosttestServer114:02:38.384918IPtestClient.cn.ibm.com.43370>testServer.cn.ibm.com.telnet:S3392458353:3392458353(0)…214:02:38.629578IPtestServer.cn.ibm.com.telnet>testClient.cn.ibm.com.43370:S881279296:881279296(0)ack3392458354…314:02:38.629592IPtestClient.cn.ibm.com.43370>testServer.cn.ibm.com.telnet:.ack881279297…注意:我们删除了tcpdump输出结果中的部分无关信息。为了便于理解,我们将上述输出转换为实际序列图2。图2.TCP建立创建三次握手的实际序列从图2中我们可以清楚地看到,在testClient与testServer之间建立连接时,要经过以下三次握手过程:•testClient向testServer主动发送握手协议,报文序列号为3392458353,大小为1个字节。•testServer向testClient主动发送握手协议,报文序列号为881279296,大小为1个字节;同时返回ACK3392458354,作为对testClient发来的3392458353包的应答。•testClient向testServer返回ACK881279297,作为对testServer发来的881279296包的应答。一个TCP连接在完成上述的三次握手之后便建立完毕;此后,连接的两端即可进行信息的相互传递。因此,TCP连接可以认为是以两端IP地址和端口进行标识的一个通信信道,而TCP连接的建立就是向通信双方进行上述通信信道注册的过程。TCP连接一旦建立,只要通信双方之间的中间结点(包括网关和交换机、路由器等网络设备)工作正常,那么在通信双方中的任何一方主动关闭连接之前,TCP连接都将被一直保持下去。TCP连接的这种特性,使得一个长期不交换任何信息的空闲连接可以长期保持数小时、数天甚至数月。中间路由器可以崩溃、重启,网线可以被挂断再连通,只要两端的主机没有被重启,TCP连接就可以被一直保持下来。导致TCP连接断连的因素理想状态下,一个TCP连接可以被长期保持。然而,在实际应用中,客户端或服务器端上维持的一个看似正常的TCP连接可能已经断连。TCP连接主要受到两个方面的影响而导致断连:网络中间节点和客户端/服