网络协议分析与设计 实验报告
实验名称: 实验 TCP协议分析
班 级: 姓 名:
实验地点: 日 期:
一、实验目的:
1. 掌握TCP报文段首部中各字段的含义及作用
2. 掌握TCP连接建立和释放的过程
3. 了解TCP的确认机制
二、实验环境:
1. 联网并运行wireshark软件的PC机
三、实验内容和要求:
1、捕获并分析TCP连接建立过程的三次握手过程中发送和接收的TCP报文段
2、捕获并分析TCP连接释放过程中发送的TCP报文段。
3、捕获并分析一个TCP报文段及该报文段的确认报文段
4、捕获并分析TCP连接超时重传所发送的报文段
四、实验步骤:
1、 开启协议分析软件,设置过滤器为只捕获TCP协议报文段
2、 利用协议分析软件的TCP连接工具连接到FTP服务器,捕获并分析建立TCP连接时发送的TCP报文段,分析TCP连接建立的过程
3、 在已经连接到FTP服务器之后,通过TCP连接工具发送FTP命令:
USER anonymous
PASS test@
PWD
捕获并分析发送和接收的报文段,注意其序号及确认号之间的关系
4、 在已经连接到FTP服务器之后,通过TCP连接工具发送FTP命令:QUIT释放TCP连接,捕获并分析释放连接过程中发送和接收的报文段
5、 通过TCP连接工具连接到10.132.254.1上不存在服务进程的端口,观察服务器与本机交互的报文。
6、 通过TCP连接工具连接到IP地址不在本网段且不存在的主机,观察本机发送的请求建立连接报文段超时重传报文。
五、实验结果与分析(含程序、数据记录及分析和实验总结等):
1、以十六进制形式写出建立TCP连接过程中发送和接收的TCP报文段,给出各字段的取值及含义。
07 11(源端口) 00 15(目标端口) 01 FB 24 31 (序列号)00 00 00 00 (确认序列号)B0(TCP首部长度) 02(标志位:SYN)FF FF(窗口大小)F7 31(校验和) 00 00 (紧急指针)02 04 05
B4 01 03 03 03 01 01 08 0A 00 00 00 00 00 00 00 00 01 01 04 02
00 15(源端口) 07 11 (目标端口)5D BF ED 2F (序列号)01 FB 24 32 (确认序列号)B0 TCP首部长度)12(标志位:SYN|ACK)44 70 (窗口大小)67 C4 (校验和)00 00 (紧急指针)02
04 05 B4 01 03 03 00 01 01 08 0A 00 00 00 00 00 00 00 00 01 01 04 02
2、以十六进制写出捕获到的TCP报文段和确认报文段
07 0A(源端口) 00 15 (目标端口)F8 50 A0 9A (序列号)6E 4E 2A 57确认序列号)
80TCP首部长度) 10 标志位:ACK)B5 C9(窗口大小) F2 EE (校验和)
00 00 (紧急指针)01 01 08 0A 00 00 83 DA 00 00 00 00 00 00
3、以十六进制形式写出释放TCP连接过程中发送和接收的TCP报文段,给出各字段的取值及含义,注意这些报文段控制位的置位和复位情况。
00 15(源端口) 07 0A(目标端口) 6E 4E 2B 0C(序列号) F8 50 A0 CB (确认序列号)80 (TCP首部长度)19(标志位:FIN|PUSH|ACK)44 3F( 窗口大小)6B BB(校验和) 00 00 (紧急指针)01 01 08 0A 00 D5 62 56 00 00 8B 17 32 32 31 20 20 0D 0A
07 0A (源端口)00 15 (目标端口)F8 50 A0 CB (序列号)6E 4E 2B 14 确认序列号)80(TCP首部长度) 10(标志位:ACK)B5 B2(窗口大小) 87 9D(校验和) 00 00 (紧急指针)01 01
08 0A 00 00 8B 29 00 D5
62 56 32
07 0A(源端口) 00 15(目标端口) F8 50 A0 CB(序列号) 6E 4E 2B 14 (确认序列号)80(TCP首部长度) 11(标志位:FIN|ACK)B5 B2(窗口大小) 86 CA (校验和)00 00 (紧急指针)01 01 08 0A 00 00 8B FB 00 D5 62 56 32
00 15(源端口) 07 0A(目标端口) 6E 4E 2B 14 (序列号)F8 50 A0 CC (确认序列号)80(TCP首部长度) 10(标志位:ACK) 44 3F (窗口大小)F7 6B (校验和)00 00 (紧急指针)01 01
08 0A 00 D5 63 28 00 00
8B FB 32 32
4、以十六进制形式写出原始的和重传的TCP报文段。
07 0F(源端口) 00 50(目标端口) FD 0C 12 D6 (序列号)00 00 00 00 (确认序列号)B0(TCP首部长度) 02(标志位:SYN)FF FF(窗口大小) 55 1E(校验和) 00 00(紧急指针) 02 04 05 B4 01 03 03 03 01 01 08 0A 00 00 00 00 00 00 00 00 01 01 04 02
六:思考题:
1、为什么说TCP协议采用了三次握手的算法来建立连接?
因为TCP协议提供可靠的连接服务。
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据
建立连接的过程中,发送和接收报文段的序号和确认号之间、源端口和目的端口之间、控制位的置位和复位之间有什么关系?
序号和确认号的关系:序号是本报文中所发送数据的第一个字节的序号,确认号是期望对方的下一个报文字段数据的第一个字节的序号。
源端口和目的端口的关系:都是传输层和应用层的服务接口
控制位和复位的关系: 控制位有6中,复位时控制为的其中一种
2、 TCP报文段的序号、确认号和报文段长度之间有什么关系?
报文字段=确认号-序号 3、释放TCP连接时,共发送接收了多少个报文段?这些报文段的序号和确认号、各控制位的取值情况是怎样的?
理论上是4次报文段的,但在实际操作中却收到一个或两个。
序号和确认号、控制位的取值都是根据上一个报文段然后根据某些计算方法决定的
4、怎么样才能识别出一个报文段是另一个报文段的重传报文?
根据控制位时钟等要素来判断
七、教师评语: