Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7175556
  • 博文数量: 510
  • 博客积分: 12019
  • 博客等级: 上将
  • 技术积分: 6836
  • 用 户 组: 普通用户
  • 注册时间: 2005-08-01 16:46
文章分类

全部博文(510)

文章存档

2022年(2)

2021年(6)

2020年(59)

2019年(4)

2018年(10)

2017年(5)

2016年(2)

2015年(4)

2014年(4)

2013年(16)

2012年(47)

2011年(65)

2010年(46)

2009年(34)

2008年(52)

2007年(52)

2006年(80)

2005年(22)

分类: LINUX

2006-11-08 10:03:44

协议分析工具学习TCP/IP()

作者:担子 发文时间:2004.08.10

 

 

一、 前言

  曾在赛迪网发过一篇《用协议分析工具学习TCP/IP》(以下简称"学习"),看到"希望能够再次提供其它的补充"的留言就一直考虑 补充些什么,要补充的东西很多,毕竟TCP/TP协议簇是Internet的根基,不管在网上跑什么服务,归根结底都是建立在TCP/TP协议的基础上, 要学的东西很多,"学习"一文概述了数据的传送过程,讲到了TCP标志位的变化,本文重点阐述TCP的状态变迁的情况,如果对TCP协议还不熟悉请参阅" 学习"一文,前文讲过的本文不再赘述。

二、 为什么要学习TCP的状态变迁

  要说清楚为什么,先说说状态,打个简单的比方,一般来说一个人"""高兴"的状态,"""悲伤"的状态,"怒吼""发怒" 的状态等等,也就是说一个人在做某个动作时就处于一定的状态,其实,网络中的计算机在相互通讯时,在不同的阶段就处于不同的状态,"学习"一文中讲到的数 据的几个传送过程(建立连接、数据传送、结束连接),在各个过程中,TCP分别处于不同的状态,由此可以看出,只有非常熟悉TCP的状态,才能知道目前你 的计算机在网络中处于什么状态,是正在连接别人的计算机?还是不怀好意的人偷偷连入你的机器窃取你的东西?是否受到了攻击?哪些端口处于开放状态?中木马 了吗?等等诸如此类的问题都与TCP的状态有关,这就是学习TCP状态的原因。

三、 学习要点

1
、要有""的概念

  状态是随着不同的情况而发生变化的,还用上面的比方,一个人""是处于"高兴"的状态,他笑着笑着不笑了也就从"高兴"的状态变为 别的状态了。状态是随着条件的不同而变化的,是动的,从下面的学习可以看出,在不同的阶段,TCP协议的标志位各不相同,反映出来的现象就是状态的变化。

2
、要分清楚哪些是客户端的状态,哪些是服务器端的状态

  何谓客户端和服务器端,你正在上网时,你的计算机就是客户端,而你访问的网站的服务器就是服务器端。如果你在你的机器中提供了一个www服务,那此时你的机器就是服务器端,访问你的计算机是客户端。可见一台计算机即可作为客户端也可作为服务器端。

有些状态是客户端独有的,有些是服务器端独有的,有些是都有的,在下面的学习中一定要注意区别。

3
TCP的状态实际上就是某个端口的状态

  "学习"一文提到TCP协议在通讯时用到源端口和目的端口,源端口是本机打开的,目的端口是正在和本机通信的另一台计算机的端口,源 端口分主动打开的客户端口和被动连接的服务端口两种。本机提供一个服务就打开一个端口,例如:提供www服务默认打开80端口,提供E_mail服务默认 打开25端口,提供FTP服务默认打开21端口,服务端口号一般是固定的,当有其它的计算机访问你的www服务时,那台计算机要随机开个端口(1024以 上)与你的80端口进行通讯,此时你的80端口的TCP状态将会随着不同的阶段而发生变化,而此时2125等服务端口在没有被访问的情况下是不会发生变 化的。

学习时一定要清楚TCP的状态实际上就是某个端口的状态这句话的含义。

四、 测试环境

测试环境请参见用协议分析工具学习TCP/IP一文。

测试工具:协议分析工具IRISSniffer pro

协议分析工具有很多,也有免费的,只要能把包抓下来就行了。Windows 系统自带的网络监视器和Linux自带的TCPDUMP也是不错的工具。

TCP
状态观察工具TCPview,该软件很小只有93KB,而且是个绿色软件,不用安装。下载地很多,到华军down一个吧

五、 概述

1和图2都是在《TCP/IP祥解》一书中截取的非常经典的TCP的状态变迁图,这两张图非常清晰地显示了TCP状态变迁的详细过程。希望能在看完此文后在懂得TCP状态的基础上将这两张图烧到你的脑子里。

1中,虚线是服务器端的正常状态变化:

CLOSED->LISTIN->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSED->LISTIN

粗实线是客户端的正常状态变化:

CLOSED->SEND_SENT->ESTABLISHED->FIN_WAIT_1-> FIN_WAIT_2->TIME_WAIT->CLOSED

其中CLOSED状态是个开始状态,在实际观察中是看不到的(本人观点)

细实线是数据传输过程中可能出现的一些情况的状态。


 
2是将客户端和服务器端分开的状态显示。

这两张图在下面的学习中要常常用到。


 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 TCP的状态变迁图



2 TCP正常连接建立和终止所对应的状态

(
责任编辑:)

 

 

阅读(1377) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~