利用TCP标记分析网络故障

日期: 2008-08-05 作者:菜鸟人飞 来源:TechTarget中国 英文

一、 TCP标记简介


TCP,全称Transfer Control Protocol,中文名为传输控制协议;它工作在OSI的传输层,提供面向连接的可靠传输服务。


在TCP的报头中,有一个TCP标记字段,这个字段用来指出当前这个数据包的用途。TCP连接标记字段长6比特,共有6种不同的标记,在一个TCP连接中可能会使用其中的多个标记。这6种标记是:


1. 紧急(Urgent,简称URG):通知对方主机该TCP数据包中包含有紧急数据;


2. 确认(Acknowledgement,简称ACK):用来确认接收到对方主机的TCP数据包;


3. 急迫(Push,简称PSH):通知对方主机立即将该数据包送往上层协议;


4. 重置(Reset,简称RST):表示此TCP连接已被对方主机重新启动;


5. 同步(Synchronization,简称SYN):用来建立和对方主机的TCP连接;


6. 终止(Finish,简称FIN):用来关闭TCP连接。


不同数据包中的TCP 标记可能相同,也可能不同,通过数据包的解码,可以知道当前数据包正在进行的操作及其作用。如TCP三次握手的第一步会将同步位置为1;第二步会同时将确认位和同步位置为1;第三步会将确认位置为1。根据TCP标记的特性,我们可以利用它分析网络中常见的网络应用故障。


二、 利用TCP标记分析网络故障


当遇到目标主机的某TCP服务不能访问时,我们可以通过对其访问的过程进行抓包分析,从而找出不能访问的原因,下面我们以Telnet为例说明分析的方法。


下面是在Windows主机上使用Telnet命令访问其他主机的情况。从返回结果可知,两台主机的Telnet服务都不能正常访问。但从这里,我们无法确定不能访问的原因,是因为网络不通,还是这台主机没有提供Telnet服务。


TCP标记



  注意:


1. 这里使用的Telnet命令是在假定目标服务器使用默认的端口配置,即Telnet服务器端口是TCP 23;


2. 可能有些用户想到使用Ping命令测试网络的连通性,但由于承载Ping命令的ICMP协议可以导致一些非法攻击,对网络的安全会造成一定的威胁,使得某些ISP厂商或者网络管理员都在他们的三层设备处禁用了ICMP协议的转发。在这种情况下,使用Ping命令便无法准确测试主机的连通性。


下图是在Telnet命令访问192.168.2.10主机时的数据包原始信息。


利用TCP标记分析网络故障


从上图可知,使用Telnet命令访问192.168.2.10主机时,两主机间共有三个数据包通信,仔细查看数据包及其解码,发现三个数据包都是从客户端发往192.168.2.10主机的,三个数据包的确认号都是0,且都将TCP标记中的同步位置1,表明三个数据包都是TCP三次握手的第一步,即 TCP同步数据包。没有从192.168.2.10发往客户端的数据包,说明此时客户端与192.168.2.10主机在物理链路上不通,可能是网络中没有IP地址为192.168.2.10这台机器,或者这台机器没有开机。


下图是在Telnet命令访问192.168.2.100主机时的数据包原始信息。


利用TCP标记分析网络故障


从上图可知,使用Telnet命令访问192.168.2.100主机时,两主机间共有6个数据包通信,仔细查看数据包及其解码,发现1,3,5这三个数据包是从客户端发往192.168.2.100主机的,这三个数据包的确认号是0,TCP标记是同步位置1,表明三个数据包都是TCP三次握手的第一步,即TCP同步数据包。2,4,6这三个数据包是从192.168.2.100主机发往客户端的,这三个数据包的确认号是确认号 1589766797,TCP标记是确认位和重置位同时置1,表示这三个数据包都是192.168.2.100对客户端的确认数据包,同时它拒绝了客户端的建立连接的TCP同步请求,告诉客户端当前主机(这里是192.168.2.100)没有打开客户端请求的服务,并中断这个连接。


注意:我们发现,两次Telnet请求都是客户端都向服务器(这里是192.168.2.10和192.168.2.100)发送了三次相同的TCP SYN请求,这是为什么呢?其实这是TCP的协议规定造成的,当客户端使用TCP SYN向服务器发起三方握手的第一步后,如果没有收到服务器的SYN/ACK响应,就会在等待一段时间后再次尝试对服务器进行连接,如果连接三次后仍然失败,则不会再重复此操作,所以我们在图中看到了三次完全一样的TCP SYN数据包。


通过对上面两种情况的抓包分析,我们可知道,192.168.2.10主机不能访问的原因是两台主机之间的物理链路不通,可能是不存在 192.168.2.10这台机器,或者192.168.2.10处于关机状态等。而192.168.2.100不能访问的原因是 192.168.2.100这台机器没有提供客户端请求的Telnet服务,即没有打开TCP 23端口。


这种方法适用于中所有的TCP服务,用户在遇到不能访问某服务器(各种TCP应用的服务器)时,便可使用这种方法对数据包进行跟踪分析,帮助用户对故障进行排查。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐

  • IP网络安全的基石——IPSec协议

    IPSec(IP Security)产生于IPv6的制定之中,用于提供IP层的安全性。由于所有支持TCP/IP协议的主机进行通信时,都要经过IP层的处理,所以提供了IP层的安全性就相当于为整个网络提供了安全通信的基础。

  • 除分层数外 OSI模型和TCP/IP协议还有何区别?

    除了分层数以外,OSI模型和TCP协议之间有什么区别呢?专家就此阐述了二者之间的区别,并分解了TCP/IP和OSI模型的各个分层。

  • TCP/IP协议当中的安全漏洞

    目前绝大多数互联网用户使用的是IPv4版本的网络,在这个版本下,我们的网络协议基础是TCP/IP协议。那么这个协议族下都存在着那些漏洞呢?

  • 解决局域网中IP盗用的技术手段

    局域网上若有两台主机IP地址相同,则两台主机相互报警,造成应用混乱。因此IP地址盗用成了网管员最头疼的问题。当几百台、甚至上千台主机同时上网,如何控制IP地址盗用?