实验四、传输层协议分析
【实验目的】
1. 通过捕获TCP 包并进行分析,了解传输层协议的工作过程,加深对TCP 及面向连接
的服务的工作原理的理解与掌握,
2. 观察简单的TCP 流传输,理解其首部各字段的变化。
3. 理解UDP 数据报的传输特点。
【实验原理】
【实验内容】
1、查看分析TCP 链路管理
(1)、在PC2(192.168.2.24)中安装有FTP 服务端程序。 (2)、在PC1 中开启协议分析软件,进行数据包抓包。
(3)、在PC1 中的协议分析软件中利用工具栏中的TCP 连接工具对PC2 发起连接,如下图所示。
PC1 主动打开
连接请求
确认
PC2 被动打开
确认
确认
SYN ,SEQ = x
ACK,SEQ = x+1,ACK = y +1
SYN,ACK,SEQ = y , ACK = x+1
图 4-12 TCP连接工具
在IP地址中填入PC2地址192.168.2.24,端口填入FTP服务端口21,然后点击连接。
分析捕获到的三次握手报文。
图 4-13 三次握手第一次连接
查看上图TCP报文中的报头部分:
源端口:3241,由于发起连接的是客户端,因此源端口为TCP程序随机出的短暂端口,在此连接中是3241。
目的端口:21,由于是向FTP服务发起连接,因此目的端口为FTP服务的熟知端口,为21。 序列号:0X732020CD,此序列号为TCP程序随机出的字节编号。
确认序号:0X00000000,第一个发出的连接请求中,确认号为0。
TCP首部长度:7,TCP首部长度包括TCP报头长度和数据长度,这个字段表示TCP报头长度,其中20字节为标准TCP报头长度,另有8字节选项字段长度,选项字段中和服务器端协商了最大报文段长度。
标识位:SYN位置1,只有TCP连接中三次握手第一次连接的报文段中SYN位置1。
窗口大小:65535,默认大小。
校验和:0X5D64,校验和是对TCP报头、数据和伪首部进行计算得出的校验和。
紧急指针:0,当紧急标识位置1时,此16位字段才有效,说明此时报文段中包含紧急数据,紧急数据到达接受端后可以不按次序优先被接受程序处理。
TCP三次握手过程中第二个报文如下图所示。
图4-14 TCP三次握手第二个报文
查看上图中的TCP报头:
源端口:21,服务端的源端口为相关服务的熟知端口,FTP服务端口为TCP21。
目的端口:3241,为客户端源端口复制过来得到。
序列号:0X219DEAA0,为服务端随机计算出的字节序号。
确认序列号:0X732020CE,确认序列号的功能是对发送端数据进行确认,为发送端序号0X732020CD+1得到。
TCP首部长度:7,包含20字节标准TCP首部长度和8字节选项长度。
标志位:SYN位和ACK位置1,表示此报文为TCP三次握手的第二个报文。
窗口大小:65535,为默认大小。
校验和:0X1115,TCP校验和为TCP首部、数据和伪首部三部分计算得出校验和。
紧急指针:0。
TCP三次握手第三个报文如下图所示。
图 4-15 TCP三次握手第三个报文
查看TCP三次握手第三个报文首部:
源端口:3241,同一个连接发送的数据,源端口保持不变。
目的端口:21,对同一个服务发送的数据段中的目的端口保持不变。
序列号:0X732020CE,为前一个数据段序列号加1。
确认序号:0X219DEAA1,由于此报文是对服务端发回的连接应答消息的确认,因此是上一个报文序号0X219DEAA0加1。
TCP首部长度:5,标准TCP首部长度为5*4字节=20字节。
标识位:TCP三次握手第三个报文段ACK位置1。
窗口大小:65535,默认窗口大小。
校验和:0X7DD9,为TCP首部、数据、伪首部计算得出的校验和。
紧急指针:0,未使用紧急指针。
通过上面的TCP三次握手的报文,可以很清楚的分析出在TCP连接建立时,客户端和服务端所进行的工作。三次报文的重要区别在于标识位的不同,第一个报文,SYN位置1,第二个报文是对第一个报文的确认,SYN位置1,ACK位置1,第三个报文是确认报文,ACK位置1。将三次握手的过程画出示意图并说明,并填写表中的信息
表4-1TCP 报头和数据信息列表
客户端TCP连接建立阶段(控制连接)FTP服务器
Port(21) SYN=(1),ACK=(0) ,FIN=(0)
seq num(0X732020CD)
ack num(0X00000000)
Port(21) SYN= (1),ACK=(1),FIN=(0)
seq num(0X219DEAA0)
ack num(0X732020CE)
SYN=(0),ACK=(1), FIN=(0)
seq num(0X732020CE)
ack num(0X219DEAA1)
2. 通过捕获DNS数据包分析其传输层UDP报头各字段含义并写出你捕获到的下列字段的数值(选做内容)
● 端口号:4104
● 目的端口号:53
● UDP总长度:53
【思考题】
1.TCP在建立连接时为什么需要3次握手,而断开连接是需要几次握手?
答:4次。
(1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送。
(2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN 一样,一个FIN将占用一个序号。
(3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A。
(4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1