实验七传输控制协议TCP实验目的1.掌握使用WIRESHARK工具对TCP协议进行抓包分析的方法。2.通过实验,进一步了解TCP协议。实验环境1.安装Windows2000/2003Server/XP操作系统的PC计算机一台。2.每台PC具有一块以太网卡,通过双绞线与局域网相连。3.每台PC运行网络协议分析软件WIRESHARK。实验原理因特网在传输层有两种主要的协议:一种是面向连接的协议(TCP),另一种是无连接的协议(UDP)。传输控制协议(TransmissionControlProtocol,TCP)是一种可靠的面向连接的传送协议。它在传送数据时是分段进行的,主机之间交换数据必须建立一个会话。它用比特流通信,即数据被作为无结构的字节流。通过每个TCP传输的字段指定顺序号,以获得可靠性。它是在OSI参考模型的第4层,TCP是使用IP的网际间互联功能而提供可靠的数据传输,IP不停地把报文放到网络上,而TCP负责确信报文到达。在协同IP的操作中TCP负责握手过程、报文管理、流量控制、错误检测和处理(控制),并根据一定的编号顺序对非正常顺序的报文给予重新排列顺序。TCP是面向连接的协议。在面向连接的环境中,开始传输数据之前,在两个终端之间必须先建立一个连接。对于一个要建立的连接,通信双方必须用彼此的初始化序列号seq和来自对方成功传输确认的应答号ack(指明希望收到的下一个八位组的编号)来同步,习惯上将同步信号写为SYN,应答信号写为ACK。整个同步的过程称为三次握手,如图6-1所示。图6-1TCP连接的建立对于一个已经建立的连接,TCP使用四次握手来结束通话(使用一个带有FIN附加标记的报文段)。如图图6-2TCP连接的释放TCP每发送一个报文段,就对这个报文段设置一次计时器。只要计时器设置的重传时间到期,但还没有收到确认,就要重传这一报文段。图6-3TCP报文格式TCP首部各字段分析TCP的头信息是:042800153ADF055300000000700240009A8D0000020405B401010402端口号:常说FTP占21端口、HTTP占80端口、TELNET占23端口等,这里指的端口就是TCP或UDP的端口,端口就像通道两端的门一样,当两机进行通讯时门必须是打开的。源端口和目的端口各占16位,2的16次方等于65536,这就是每台电脑与其它电脑联系所能开的“门”。一般作为服务一方每项服务的端口号是固定的。本例目的端口号为0015,换算成十进制为21,这正是FTP的默认端口,需要指出的是这是FTP的控制端口,数据传送时用另一端口,第三组的分析能看到这一点。客户端与服务器联系时随机开一个大于1024的端口,本例为0428,换算成十进制为1064。你的电脑中了木马也会开一个服务端口。观察端口非常重要,不但能看出本机提供的正常服务,还能看出不正常的连接。Windows察看端口的命令时netstat。32位序号:也称为顺序号(SequenceNumber),简写为SEQ,从上面三次握手的分析可以看出,当一方要与另一方联系时就发送一个初始序号给对方,意思是:“让我们建立联系吧?”,服务方收到后要发个独立的序号给发送方,意思是“消息收到,数据流将以这个数开始。”由此可看出,TCP连接完全是双向的,即双方的数据流可同时传输。在传输过程中双方数据是独立的,因此每个TCP连接必须有两个顺序号分别对应不同方向的数据流。32位确认序号:也称为应答号(AcknowledgmentNumber),简写为ACK。在握手阶段,确认序号将发送方的序号加1作为回答,在数据传输阶段,确认序号将发送方的序号加发送的数据大小作为回答,表示确实收到这些数据。4位首部长度。这个字段占4位,它的单位时32位(4个字节)。本例值为7,TCP的头长度为28字节,等于正常的长度20字节加上可选项8个字节。,TCP的头长度最长可为60字节(二进制1111换算为十进制为15,15*4字节=60字节)。6个标志位。URG紧急指针,告诉接收TCP模块紧要指针域指着紧要数据ACK置1时表示确认号(为合法,为0的时候表示数据段不包含确认信息,确认号被忽略。PSH置1时请求的数据段在接收方得到后就可直接送到应用程序,而不必等到缓冲区满时才传送。RST置1时重建连接。如果接收到RST位时候,通常发生了某些错误。SYN置1时用来发起一个连接。FIN置1时表示发端完成发送任务。用来释放连接,表明发送方已经没有数据发送了。16位窗口大小:TCP的流量控制由连接的每一端通过声明的窗口大小来提供。窗口大小为字节数,起始于确认序号字段指明的值,这个值是接收端正期望接收的字节。窗口大小是一个16字节字段,因而窗口大小最大为65535字节。16位检验和:检验和覆盖了整个的TCP报文段:TCP首部和TCP数据。这是一个强制性的字段,一定是由发端计算和存储,并由收端进行验证。16位紧急指针:只有当URG标志置1时紧急指针才有效。紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。选项。最常见的可选字段是最长报文大小,又称为MSS(MaximumSegmentSize)。每个连接方通常都在握手的第一步中指明这个选项。它指明本端所能接收的最大长度的报文段。实验步骤1、抓取本机和远程计算机进行文件传输时TCP数据包在分析TCP之前,先通过HTTPPOST的方式(通过HTTP方式传输数据有POST和GET两种方式,前者相对后者而言,更适合用于传输具有大量数据的文件),将本地的一个文件上传到一个远程的Web服务器上,然后使用WIRESHARK去捕获该文件传输过程中的TCP数据包。(1)打开IE浏览器,在地址栏内输入“”,输入你的用户名和密码,登录。图6-4浏览器界面(2)启动WIRESHARK协议分析工具,并点击程序上方“Capture”菜单下的“Start”开始数据包的抓取。(3)登录完成以后,停止WIRESHARK的抓包工作,会看到如图6-5所示的WIRESHARK窗口。找出你的用户名和密码。图6-5WIRESHARK抓取的TCP协议数据包2、过滤无关的其他数据包由于WIRESHARK抓包的时候,将网卡设为监听模式,因此在抓取的数据包中,会将网络上出现的所有数据包都抓下来,其中许多是与该实验无关的数据包,如ARP数据包、交换机的通讯包等,因此需要将这些抓到的无关数据包给过滤掉。过滤的步骤为:首先在WIRESHARK中的“Filter”域中输入关键字“TCP”,然后点击右边的“Apply”按钮,将捕获到的与传输无关的数据包过滤掉,剩下与本实验相关的部分。在过滤后的数据包捕获窗口中,看到的是本机和通讯信息,其中有初始化连接的含有“SYN”信息的3次TCP握手,一个HTTPPOST信息和一系列的从本机发往包。查看捕获的数据包,回答以下问题:(1)本地计算机的IP地址是什么,通讯使用的TCP端口号是多少?(2)地址是多少,对方使用哪个端口发送和接收TCP数据包?3、TCP协议分析分析查看这些TCP数据包,回答以下问题:(1)用于初始化连接的TCPSYN数据包中的sequence号是多少?在该数据包中哪部分表明了该数据包是否为一个SYN数据包?(2)号是多少?数据包中的哪部分表明了该数据包是否为一个SYNACK数据包?(3)包含HTTPPOST指令的TCP数据包中的sequence号是多少?4、运行netstat命令(1)在DOS命令行方式下运行:netstat–s显示每个协议的使用状态,观察TCP协议的使用情况。图6-7netstat–s命令的结果(2)在DOS命令行方式下运行:netstat–a显示所有主机的端口号,观察与TCP协议相关的内容。图6-8netstat–a命令的结果思考题1.为什么说TCP是面向连接的协议?TCP3次握手的工作过程是什么,安全不安全?2.TCP数据包中的sequence号有什么作用?3.试用具体例子说明为什么在运输连接建立时要使用三次握手。说明如不这样做可能会出现什么情况。4.使用TCP对实时话音数据的传输有没有什么问题?使用UDP在传送数据文件时会有什么问题?5.TCP在进行流量控制时是以分组的丢失作为产生拥塞的标志。有没有不是因拥塞而引起的分组丢失的情况?如有,请举出三种情况。期末综合实验(实验考试)1、利用WIRESHARK软件分别捕获一个包含TCP和UDP报文的数据包。2、分别分析每个数据包的以太帧格式、IP帧格式、TCP/UDP帧格式,以及其上层协议格式(如有)3、要求数据包在实验室2201捕获。在实验报告中必须给出原始数据。特别提醒:不允许抄袭、不允许伪造数据,如发现抄袭、伪造数据一律以零分计。下周星期三交所有实验报告和本次综合实验报告。