实验六TCP传输控制协议实验目的1、掌握TCP协议的工作原理;2、理解TCP协议的通信过程。
实验学时4学时实验类型综合型实验内容1、理解TCP首部中各字段的含义及作用;2、理解三次握手的过程;3、能够分析TCP协议的建立连接、会话和断开连接的全过程;4、学会计算TCP校验和的方法;5、了解TCP的标志字段的作用。
实验流程局域网环境,1台PC机。
实验原理详见理论教材。
实验步骤步骤1:设定实验环境1、配置主机IP和路由器IP地址;2、按照实验拓扑连接网络拓扑。
步骤2:利用网络协议分析软件捕获并分析IP数据包1、连接远程FTP服务;2、开启协议分析软件,进行数据包抓包;3、利用工具栏中的TCP连接工具对FTp服务器发起连接,如下图所示。
TCP连接工具在IP地址中填入FTP服务器地址172.16.1.253,端口填入FTP服务端口21,然后点击连接。
捕获到的三次握手报文。
三次握手第一次连接查看上图TCP报文中的报头部分:源端口:1627,由于发起连接的是客户端,因此源端口为TCP程序随机出的短暂端口,在此连接中是1627。
目的端口:21,由于是向FTP服务发起连接,因此目的端口为FTP服务的熟知端口,为21。
序列号:0XE9999DE15,此序列号为TCP程序随机出的字节编号。
确认序号:0X00000000,第一个发出的连接请求中,确认号为0。
TCP首部长度:7,TCP首部长度包括TCP报头长度和数据长度,这个字段表示TCP报头长度,其中20字节为标准TCP报头长度,另有8字节选项字段长度,选项字段中和服务器端协商了最大报文段长度。
标识位:SYN位置1,只有TCP连接中三次握手第一次连接的报文段中SYN位置1。
窗口大小:65535,默认大小。
校验和:0X58F3,校验和是对TCP报头、数据和伪首部进行计算得出的校验和。
急指针:0,当紧急标识位置1时,此16位字段才有效,说明此时报文段中包含紧急数据,紧急数据到达接收端后可以不按次序优先被接受程序处理。
TCP三次握手过程中第二个报文如下图所示。
TCP三次握手第二个报文查看上图中的TCP报头:源端口:21,服务端的源端口为相关服务的熟知端口,FTP服务端口为TCP21。
目的端口:1627,为客户端源端口复制过来得到。
序列号:0X2346F3FF,为服务端随机计算出的字节序号。
确认序列号:0XE9999DE16,确认序列号的功能是对发送端数据进行确认,为发送端序号0XE9999DE15+1得到。
TCP首部长度:7,包含20字节标准TCP首部长度和8字节选项长度。
标志位:SYN位和ACK位置1,表示此报文为TCP三次握手的第二个报文。
窗口大小:65535,为默认大小。
校验和:0X419C,TCP校验和为TCP首部、数据和伪首部三部分计算得出校验和。
紧急指针:0。
TCP三次握手过程中第二个报文如下图所示。
TCP三次握手第三个报文查看TCP三次握手第三个报文首部:源端口:1627,同一个连接发送的数据,源端口保持不变。
目的端口:21,对同一个服务发送的数据段中的目的端口保持不变。
序列号:0XE9999DE,为前一个数据段序列号加1。
确认序号:0X2346F3FF,由于此报文是对服务端发回的连接应答消息的确认,因此是上一个报文序号0X2346F3FF加1。
TCP首部长度:5,标准TCP首部长度为5*4字节=20字节。
标识位:TCP三次握手第三个报文段ACK位置1。
窗口大小:65535,默认窗口大小。
校验和:0X6E60,为TCP首部、数据、伪首部计算得出的校验和。
紧急指针:0,未使用紧急指针。
通过上面的TCP三次握手的报文,可以很清楚的分析出在TCP连接建立时,客户端和服务端所进行的工作。
三次报文的重要区别在于标识位的不同,第一个报文,SYN位置1,第二个报文是对第一个报文的确认,SYN位置1,ACK位置1,第三个报文是确认报文,ACK位置1。
分析段将显示出整个TCP连接的过程,如下图步骤3:查看本地TCP状态1、在浏览器的地址栏输入:,在命令行下输入:netstat-n回车,如图:2、观察TCP状态,记录Local Address、Foreign Address和State。
3、在浏览器的地址栏输入:,在命令行下输入:netstat-n回车,如图:4、观察TCP状态,记录Local Address、Foreign Address和State。
5、二次记录有什么不同,为什么?6、使用带其他参数的netstat命令,查看网络状态。
例如:netstat –anetstat -b步骤4:查看分析TCP确认机制1、在实验机中开启协议分析软件进行数据包捕获。
2、在协议分析软件工具栏中的TCP连接工具中连接到主机B的FTP服务器并发送dir命令,如下图所示。
发送FTP命令3、分析捕获到的FTP数据包,如下图所示。
发送FTP命令分析上图中TCP数据段首部,可以看到序列号为0X7257BB5D,数据部分长度为5字节。
再查看从分析端会返回的确认数据段,如下图所示。
TCP确认报文查看上图中TCP数据段的报头部分,确认序号为0X7257BB62,因为0X7257BB5D+5=0X7257BB62,因此,此确认序号的含义为上一个发送的TCP数据段信息全部处理,发送端可以发送0X7257BB62以后的数据,此即是TCP确认机制的过程。
步骤5:查看TCP连接超时重传过程1、查看其中一台主机的ARP缓存记录,确保有同组实验机器的ARP记录,如下图所示。
查看中ARP缓存记录2、将主机A从网络中断开,确保分析不会对编辑段发送的TCP连接请求进行回应。
3、在主机A中开启协议分析软件,进行数据包捕获。
4、在主机A中用工具栏中的TCP连接工具对主机B的FTP服务发起连接,如下图所示。
TCP连接工具发起连接5、在主机A中分析捕获的TCP数据段,如下图所示。
TCP超时重传数据段从上图中可以看到,在发出SYN位置1的TCP连接请求没有得到相应后,连接工具又发送了第二个相同的SYN位置1的TCP连接请求,进行重传,确定数据段为重传数据段可以通过TCP首部中的序列号确认,例如本例中,重传数据段中的序列号均为0XA82D33B5。
实验操作思考问题结合实验过程中的实验结果,回答下列问题1、如果在练习二发送建立连接请求帧之前,网络协议编辑软件端不运行“PING服务器”命令,而又停止了网络协议编辑软件端的TCP/IP协议,可能出现什么情况?通过实验来验证你的答案。
2、根据练习五说明:在网络协议编辑软件端,系统是如何把接收到的数据显示到相应的窗口的。
3、根据实验中窗口的变化和确认序号,分析TCP协议所使用的滑动窗口协议机制。
实验七FTP文件传输协议实验目的1、理解FTP协议的工作原理;2、了解FTP协议的常用命令;3、了解应用层协议与传输层协议的关系。
实验学时4学时实验类型综合型实验内容1、学习FTP协议的工作原理;2、学习FTP的使用方法;3、了解FTP的常用命令;4、了解FTP的工作过程;5、理解FTP的主动模式和被动模式。
实验流程实验环境实验原理详见理论教材。
实验步骤步骤1:登录FTP服务器,捕获数据报文并进行分析1、确认FTP服务器工作正常,记录FTP服务器的IP地址:192.168.1.10/24,用户名:welcome,密码:welcome。
2、在实验主机上启动网络协议分析软件,设置过滤条件并进行数据捕获。
在工具栏点击“过滤器”按钮,会弹出“设置&过滤器”对话框,在“过滤器类型”中选择“类型过滤器”,类型值中选择“ftp协议”,点击“设置参数”按钮后“确定”,然后启动协议分析仪进行捕获:设置FTP协议过滤器3、登录FTP服务器,在命令行提示符下运行:ftp 192.168.1.10 ,即可建立与FTP服务器的连接,按照提示输入账号(welcome),密码(welcome),便进入了FTP的命令行界面,此时运行FTP的命令dir、get、quit等,从中可以看到FTP的反馈信息,以及FTP服务器的文件内容:登录FTP服务器4、暂停协议分析软件的捕获,可以通过捕获的数据报文看到刚才的交互过程中,FTP 客户端和服务器端的工作详细情况,FTP报文的格式和命令的使用,以及服务器端的响应代码。
如中就可以看到FTP的USER命令,及其参数welcome,也就是用户名;而中则是PASS命令和密码welcome:FTP报文中的USER命令FTP报文中的PASS命令5、记录这个过程中客户端和服务器端的TCP报头和数据信息,填写下表:6、根据标志字段分析FTP的两个端口的连接建立、会话和断开连接的全部过程,分析该过程中的源、目的端口号。
7、这个FTP服务器工作在主动模式还是被动模式下?8、是否可以捕获到用户名和密码?以此说明FTP连接的安全性。
步骤2:使用TCP连接工具连接FTP服务器1、打开协议分析仪,准备好进行数据包的捕获,然后打开协议分析仪,点击工具栏中的“TCP”按钮,在弹出的“TCP连接工具”中填写FTP服务器的IP地址(192.168.1.10)及FTP 协议控制连接的端口号(21),点击“启动”,从而建立本机与FTP服务器21端口的TCP连接,如所示:使用TCP连接工具连接FTP服务器在“数据信息”区域显示成功连接的信息:“220-Microsoft FTP Service”,并返回了FTP服务器的名称“测试用FTP”。
若不成功,再次尝试进行连接,直到成功。
此时,在协议分析仪端,可以看到与FTP服务器建立控制连接的TCP 三次握手过程:用TCP连接工具建立FTP控制连接(1)在发送的编辑栏里面编辑发送FTP命令USER,参数为FTP帐号:USER welcome,这时服务器返回响应“331 Password required for welcome”,提示输入密码;(2)发送命令PASS welcome,输入FTP的账号密码,服务器返回“230 User welcome logged in.”,说明验证通过,已经进入FTP服务器,并回送了FTP服务器设置的欢迎词“欢迎使用,这是一个测试用的FTP服务器”;(3)发送命令“NOOP”,这是一个空操作,服务器返回“200 NOOP command successful”说明登录用户已经得到服务器的承认;(4)发送命令“HELP”,服务器返回相应的帮助信息,即所有命令的列表;(5)发送命令“STAT”,服务器返回信息为当前的FTP服务状态:211-Microsoft FTP Service status:Connected to vserverLogged in as welcomeTYPE: ASCII, FORM: Nonprint; STRUcture: File; transfer MODE: STREAMNo data connection211 End of status.(6)使用命令“QUIT”退出FTP服务。