实验3-传输层协议分析

一、实验目的

掌握TCP协议的运行过程

学习TCP协议报文段结构

二、实验内容

任务一、发送一个TCP数据报

任务二、发送多个TCP数据报

三、实验要求

采用以学生自主实验为主的开放模式组织教学

四、实验准备

网络协议分析器Wireshark,PCATTCP工具

五、实验原理、方法和手段

1、所有主机使用【快照】将虚拟机恢复到初始状态。

2、实验分为两人一组,互相发送数据并记录数据包的接收情况。

六、实验条件

网络协议分析器Wireshark,PCATTCP工具

图3-1 实验环境

注:(1)PCATTCP是一个简单、实用的TCP和UDP调试工具,使用这个工具可产生TCP或UDP数据流。(2)将pcattcp应用程序拷贝到C盘Windows下System32文件夹中,可在命令行中使用pcattcp命令。

七、实验步骤

任务一、本地ttcp连接,发送一个TCP数据报。

1.作为客户端的同学,运行pcattcp,并输入命令:pcattcp -t -l 1024 -n 1 10.10.104.141,与此同时打开wireshark来捕捉数据。该命令将向服务器发送一个TCP数据包,数据包大小为1024B。

然后,在客户端命令行窗口会看到下面的信息。

在wireshark中可以看到捕获的信息:

从上图可以看出,上图操作执行了建立连接、发送数据和释放连接等三个阶段,其中,分组40-42是建立连接阶段的分组,对应于三次握手,分组43是发送数据阶段的分组,分组44-47是释放连接阶段的分组,对应于四次握手。

(1)第一条报文分组40不携带数据,其首部的SYN位为1,又被称为SYN分组。这个报文段里的序号可以被设置成任何值,一般被设置为0。观察下图给出的分组40的信息,Wireshark显示的序号是0。然而,如果选择分组首部的序号字段,原始框中"59 db 64 af"被突出显示。Wireshark所显示的是逻辑序号,而真正的初始序号不是0。需要注意的是,TCP规定,SYN=1的报文段不能携带数据,但要消耗掉一个序号。

注:过滤条件

(tcp and (ip.src==10.10.104.142 and ip.dst==10.10.104.141)) or (tcp and (ip.src==10.10.104.141 and ip.dst==10.10.104.142))

(2)第二条报文分组41的首部SYN位和ACK位都为1,又被称为SYNACK分组。SYNACK分组在确认收到SYN分组的同时也发出一个初始的数据流序号给客户端,通常为0。观察下图给出的分组41的信息,注意到分组41的确认号字段在Wireshark的协议框中显示为1,并且在原始框中的值是"59 db 64 b0"(比"59 db 64 af"多1)。这解释了TCP的确认模式,即TCP接收端确认第X个字节已经收到,并通过设置确认号为X+1来表明期望收到的下一个字节号,另外,也说明了SYN=1的报文段虽然不能携带数据,但消耗掉一个序号。另外,分组41的序号字段在Wireshark中显示为0,但在原始框中的实际值却是"8c 95 dc 44"。这就表明TCP连接的双方会选择数据流中字节的起始编号,所有初始序号逻辑上都视同为序号0。同样地,该报文段也消耗掉一个序号。

(3)最后,客户端发送带有标志ACK,但是不带有SYN的TCP报文段来完成三次握手的过程,对应分组42。这个报文段将确认服务器发送的SYNACK分组,并检查TCP连接的两端是否正确地打开和运作。需要注意的是,TCP标准规定,ACK报文段不携带数据时,不消耗序号。因此,分组43的序号还是1。

(4)分组43表示客户端向服务器传送1024B数据。注意,分组43里的序号是1,长度为1024,也就是说,分组43里面有1024字节,它们的编号是1-1024。

(5)分组44-47对应的是TCP连接释放的过程。即客户端给服务器发送带有FIN标志的TCP报文段,服务器给出确认,服务器端给客户端发送带有FIN标志的TCP报文段,客户端给出确认。

需要特别注意的是:(a)在分组44中,Ack=1表示客户端期望收到的下一个字节号是1,为了保证Ack有效,ACK设置为了1。 (b)在分组45里,服务器确认已经收到了所有发送的数据,这时确认号为1026而不是1025,这是由于FIN自身被当作第1025个字节了。分组45中的ACK分组并不占字节,所以,分组46的序号还是1。(c)在分组46中,服务器也发送了一个FIN标志只是不会发送任何其它附加的数据了。客户端最后发送一个确认号(Ack )为2的报文段来确认服务器所发的FIN标志,即分组47。再说一遍,确认号是2而不是1,因为FIN本身也被看作为最后的字节。

任务二:本地ttcp连接,发送多个TCP数据报

作为客户端的同学,在运行pcattcp并输入命令:pcattcp -t -l 1024 -n 5 10.10.104.141,并打开wireshark来捕捉数据。该命令表示向服务器发送5个数据包,每个数据包大小为1024B。

然后,在客户端命令行窗口可以看到下面的信息:

在wireshark中可以看到以下数据:

(1)分组39-41是TCP建立连接阶段的分组。

(2)分组42-45是传送数据过程的分组。其中,分组42-44对应的数据包大小分别是1024B、2048B、2048B,共计5120B。分组42的序号是1,有1024个字节,编号从1到1024。分组43的序号是1025,有2048个字节,编号从1025到3072。分组44的序号是3073,有2048字节,编号从3073到5120。

(3)分组46-49是释放TCP连接对应的分组。

当两端交换带有FIN标志的TCP报文段并且每一端都确认另一端发送的FIN包时,TCP连接将会关闭。

八、思考题

  1. 在任务一实验结果中,哪些分组包含三次握手,哪些分组包含四次握手?

答:分组40-42是建立连接阶段的分组,对应于三次握手。分组44-47是释放连接阶段的分组,对应于四次握手。

  1. 在任务一实验结果中,每个方向中真实的初始序号是多少?

(1)初始序号为59 db 64 af

  1. 初始序号为8c 95 dc 44
  1. 初始序号为59 db 64 b0
  1. 初始序号为59 db 68 b0
  1. 初始序号为8c 95 dc 45
  1. 初始序号为59 db 68 b1
  1. 在tcp_pcattcp_n1.cap中,哪些分组只包含首部而没有数据?

答:分组3,4,5,8,12,14,15,16只包含首部而没有数据。

  1. 在TCP流中仅有的没有设置ACK标志的报文段是什么?为什么?

答: 分组3代表TCP第一次握手,用于发起连接请求。此时,客户端并未收到来自服务器的任何报文,因此没有可以确认的内容,也就没有必要设置 ACK 标志位。

  1. 在tcp_pcattcp_n1.cap中,所有的从服务器到客户端的分组的确认号都是相同的吗?为什么?所有的从客户端到服务器的分组的确认号也都是相同的吗?(注意:在这种情况下,服务器是接收端,因为它监听接入的连接)

答: (1)所有的从服务器到客户端的分组的确认号不相同。在 TCP 协议中,确认号是基于接收方期望的下一个字节序列号。每次服务器发送确认时,确认号等于最后一个成功接收到的字节序列号加1。

  1. 所有的从客户端到服务器的分组的确认号不相同。在前几个分组中,确认号都为1。但最后一个分组的确认号为2,因为FIN本身也被看作为最后的字节,所以客户端最后发送一个确认号为2的报文段来确认服务器所发的FIN标志。
  1. 在tcp_pcattcp_n1.cap中,有多少分组是分组12确认的呢?分组14确认的分组又有多少呢?

答:分组12确认2个分组,分别是分组9和分组10。分组14确认2个分组,分别是分组11 [1] 和13。

  1. 客户端主机通过pcattcp命令向服务器发送了多少数据? 你是如何知道的?

答:将这些分组的length相加,可知客户端主机通过pcattcp命令向服务器发送了8192B数据。

  1. 15号分组的相对序号是多少?分组16的相对确认号是多少?

答:15号分组的相对序号是1,分组16的相对确认号是2。

相关推荐
幸幸子.13 小时前
实验4-HTTP协议的运行过程
计算机网络
Eira-Z14 小时前
日志分析与安全数据上传脚本
python·计算机网络
白帽黑客沐瑶14 小时前
【网络安全入门基础教程】网络安全行业,未来两年就业和再就业都会很难
网络·人工智能·计算机网络·安全·web安全·网络安全就业
kyle~17 小时前
计算机网络---CA证书体系(Certificate Authority)
前端·数据库·计算机网络
晚风(●•σ )20 小时前
【华为 ICT & HCIA & eNSP 习题汇总】——题目集23
网络·计算机网络·华为·ensp·交换机
珹洺1 天前
计算机网络:(十七)应用层(上)应用层基本概念
计算机网络
小白不想白a1 天前
【计算机网络】HTTP是什么?
网络协议·计算机网络·http
Molder6212 天前
【计算机408计算机网络】第四章:自底向上五层模型之网络层
网络·笔记·后端·计算机网络·考研
Reicher3 天前
计算机网络总览
网络·计算机网络·php