实验14 TCP 建立连接过程实验
1 实验目的
通过实验掌握TCP 建立连接的过程,理解TCP 的工作原理。
2 实验环境
VMware 中虚拟机,相互能够连通。WireShark 软件包。
3 实验原理或背景知识
TCP 是TCP/IP 协议体系中运输层的重要协议。它为应用层提供面向连接的、可靠的数据传递服务。在提供数据可靠性的同时,TCP 还为应用层提供了全双工的数据传输服务。
TCP 接收应用层的数据,添加TCP 首部后形成TCP 报文段。TCP 报文段需要被下层的IP 协议封装,发送到目的地。如图1所示。
图1TCP 报文段的组成和封装
3.1 TCP 报文段
TCP 的报文段如图2所示。
TCP报文段IP报文
图2TCP 报文段的结构
1、源端口和目的端口:16bit ,分别对应发送数据的应用进程和接收数据的应用进程。TCP 用这两个字段来实现多路复用和多路分解。
2、序号和确认号:32bit ,TCP 将连接上发送的每一个字节都进行编号,序号和确认号用来实现可靠的数据传输。其中,序号是TCP 报文段数据部分的第一个字节的编号;确认号是告诉对方期望收到对方的下一个字节的编号。
3、数据偏移:4bit ,表示TCP 报文段中的数据部分距离TCP 首部的起始位置有多少字节。它实际上就是TCP 首部的长度。
4、保留字段:6bit ,保留作为以后扩展。
5、标志字段:6bit ,当其值为1时称为置位。这里有6个位,分别是URG 表示紧急指针,ACK 表示确认,PSH 表示请求推送,RST 表示连接复位,SYN 表示同步序号,FIN 表示终止连接。
6、窗口大小:16bit ,主要用于流量控制,用来告诉对方的TCP 自己接收缓存的大小。
7、检验和:用来确保数据的可靠性。
8、紧急指针:给出紧急数据距离当前序号的偏移量。
9、可选项:可选的,TCP 只规定一种可选项,最大报文段长度(MSS ),规定TCP 报文段的最大字节数。
10、填充项:当可选项字段的长度不是4字节的整倍数时,填充项字段需要将其补足,填充项字段全部都是0。
3.2TCP 连接
TCP 提供面向连接的传输服务。利用TCP 通信的两个应用进程要首先建立连接,这个连接是软件意义上的连接,并不是一条实际的物理线路。
建立连接的目的是使通信双方在开始传输数据前建立联系,使双方都确定对方愿意与之通信;同时在建立连接的过程中传递和协商一些必要的参数(如发送字节的起始编号和MSS :最大报文段长度),为后面的数据传递打下基础。连接建立后,两边的应用进程就可以开始
TCP首部
20字节
长度可变
全双工的通信,在此期间,连接两端的TCP 会记录数据发送和接收的情况,利用控制信息始终保持这个连接,直到数据传输完毕。最后TCP 还要负责关闭这个连接,释放与这个连接相关的资源。TCP 连接的3次握手如图3所示。
图3TCP 的三次握手示意图
4 实验任务
利用WireShark 捕捉TCP 建立连接的数据包,分析TCP 建立连接的过程。
5 实验步骤
第1步,搭建一个基于TCP 服务的服务器,如(FTP 或Web )服务器,为客户端提供访问。本例创建的是www 服务器。
第2步,打开WireShark ,设置捕捉TCP 数据包,如图4所示。打开web 站点,捕捉到TCP 数据包。如图5所示。
客户端
服务器
LISTEN
SYN-RECEIVED
SYN-RECEIVED
ESTABLISHED
图4WireShark中捕捉TCP数据包
图5捕捉TCP数据包
第3步,根据TCP建立连接的过程,针对三次握手的报文段,填写相关内容。
注:上面表格中内容为示例,请以实际实验数据填写。
【练习与思考】
1、如果要列出本机当前建立的连接,可以使用的命令是()
https://www.wendangku.net/doc/857855025.html,stat -s
https://www.wendangku.net/doc/857855025.html,stat -o
https://www.wendangku.net/doc/857855025.html,stat -a
https://www.wendangku.net/doc/857855025.html,stat -r
2、TCP 的主要功能是
A .进行数据分组
B .保证可靠传输
C .确定数据传输路径
D .提高传输速度
3、TCP报文段中序号字段指的是
A 数据部分第一个字节
B 数据部分最后一个字节
C 报文首部第一个字节
D 报文最后一个字节
4、TCP报文中确认序号指的是
A 已经收到的最后一个数据序号
B 期望收到的第一个字节序号
C 出现错误的数据序号
D 请求重传的数据序号
5、TCP的确认是对接收到的数据中()表示确认
A 最高序号
B 第一个序号
C 第二个序号
D 倒数第二个序号
6、TCP发送一段数据报,其序号是35~150,如果正确到达,接收方对其确认的序号为()
A 36 B150 C 35 D 151
填空题:
7、TCP报文的首部最小长度是20字节
8、TCP报文段中给源端口分配了 2字节的长度
9、TCP报文段中序号字段为 4 字节
10、TCP报文段中的数据偏移实际指明的是TCP报文段首部的长度
11、TCP报文段中,如果要使当前数据报传送到接收方后,立即被上传应用
层,可将 URG 置1
12、TCP协议对每一个要发送字节编了一个号
判断题:
13、TCP报文段中的确认序号只有在ACK=1时才有效(T )
14、TCP报文段中的PSH字段置1时,表明该报文段需要尽快传输( T)
15、TCP报文段校验时也需要像UDP协议那样增加一个伪首部(T )
16、TCP协议是按报文段进行编号的(F )