实验七 TCP传输控制协议
(本次实验中FTP服务器IP地址为202.117.144.29,用户名为anonymous,密码为空)
一实验目的
1、掌握 TCP 协议的工作原理;
2、理解 TCP 协议的通信过程。
二实验内容
1、理解 TCP 首部中各字段的含义及作用;
2、理解三次握手的过程;
3、能够分析 TCP 协议的建立连接、会话和断开连接的全过程;
4、学会计算 TCP 校验和的方法;
5、了解 TCP 的标志字段的作用。
三实验环境
四实验流程
五实验原理
传输控制协议(Transmission Control Protocol,TCP)是一种面向连接的、可靠的、基于字节流的运输层通信协议,通常由 IETF 的RFC 793 说明。在简化的计算机网络 OSI 模型中,它完成运输层所指定的功能。该协议主要用于在主机间建立一个虚拟连接,以实现高可靠性的数据包交换。IP 协议可以进行 IP 数据包的分割和组装,但是通过 IP 协议并不能清楚地了解到数据包是否顺利地发送给目标计算机。而使用 TCP 协议就不同了,在该协议传输模式中在将数据包成功发送给目标计算机后,TCP 会要求发送一个确认;如果在某个时限内没有收到确认,那么 TCP 将重新发送数据包。另外,在传
输的过程中,如果接收到无序、丢失以及被破坏的数据包,TCP 还可以负责恢复。
TCP 协议是面向连接的、端到端的可靠传输协议,它支持多种网络应用程序。TCP 必须解决可靠性,流量控制的问题,能够为上层应用程序提供多个接口,同时为多个应用程序提供数据,TCP 也必须能够解决通信安全性的问题。
1、 TCP 的封装如图所示:
TCP数据包
IP首部TCP首部TCP数据
IP数据报
2、 TCP 的首部格式如图所示:
16位源端口16位目的端口
32位序列号
32位确认序列号
4位首部长度保留(6位) U
R
G
A
C
K
P
S
H
R
S
T
S
Y
N
F
I
N
16位窗口大小16位校验和16位紧急指针
字段说明:
16 位源端口号和 16 位目的端口号:端口号通常也称为进程地址。
32 位序号:序号用来标识从 TCP 发送端向 TCP 接收端发送的数据字节流。(该报文数据在发送方的数据流中的位置)
32 位确认序列号:表示一个准备接收包的序列号。
4 位首部长度:首部长度指出了首部中 32 bit 字的数目,正常的TCP 首部长度是 20 字节。
6 个标志字段:URG 紧急指针;ACK 确认序号;PSH 推标志;RST 重建连接;SYN 同步序号;FIN 结束标志。
16 位窗口:TCP 的流量控制由连接的每一端通过声明的滑动窗口大小来提供,窗口大小为字节数。
16 位检验和:检验和字段覆盖了 TCP 首部和 TCP 数据。TCP 检验和的计算方法和 UDP 检验和的计算方法一样,计算时需要考虑伪报头。
16 位紧急指针:URG 标志置 1 时紧急指针才有效。
3、连接建立的过程:
4、连接释放的过程:
六实验步骤
步骤一:查看分析 TCP 三次握手
1、连接远程 FTP 服务
2、开启协议分析软件,进行数据包抓包。
3、利用工具栏中的 TCP 连接工具对 FTP 服务器发起连接:
在 IP 地址中填入 FTP 服务器地址 172.16.1.253,端口填入 FTP 服务端口 21,然后点击连接。
4、捕捉三次握手过程中的报文并分析捕获到的三次握手过程中的第一个报文如图所示
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报头部分详解:
源端口:21,服务端的源端口为相关服务的熟知端口,FTP 服务端口为 TCP21。
目的端口:1627,为客户端源端口复制过来得到。
序列号:0X2346F3FF,为服务端随机计算出的字节序号。
确认序列号:0XE9999DE16,确认序列号的功能是对发送端数据进行确认,为发送端序号0XE9999DE15+1 得到。
TCP 首部长度:7,包含 20 字节标准 TCP 首部长度和 8 字节选项长度。
标志位:SYN 位和 ACK 位置 1,表示此报文为 TCP 三次握手的第二个报文。
窗口大小:65535,为默认大小。