郑州大学计算机网络实验04 TCP协议探索和连接管理分析

实验四:TCP协议探索和连接管理分析

【实验目的】

1、掌握TCP协议数据格式;

2、掌握TCP首部各字段含义;

3、掌握TCP建立连接和释放连接的过程;

4、熟悉Linux下truncate命令的使用方法;

5、了解Linux中利用nc命令开启远程shell的方法。

【实验步骤与结果记录】

要求:根据实验指导书中的实验内容和步骤,认真完成实验。采取截图、拍照等形式记录自己的实验步骤和结果。(可根据需要加页)

步骤1:创建虚拟网络拓扑。

1.使用script3.1.sh 脚本,创建如图所示的网络拓扑结构。

在Linux中,该虚拟网络拓扑的实现如图所示。

运行脚本,创建虚拟网络拓扑。

2.执行Linux命令,ip netns list 查询已经建立的NS列表,在所有NS内执行ifconfig -a 命令查看NS内的网络接口配置,执行Linux命令 brctl show 查看交换机桥接状态,验证网络拓扑。

步骤2:为虚拟网络拓扑中的各路由器配置静态路由。

1. 使用script3.2.sh 脚本,为各路由器配置静态路由。

步骤3:关闭网卡offload功能,将运输层封装时需要的计算还给CPU

1. 使用script3.3.sh 脚本,关闭网卡offload功能。

步骤4:打开两个终端窗口,分别模拟主机ns56A和主机ns57C

1.打开一个终端窗口,利用Linux命令bash将本窗口模拟成主机ns56A的终端  执行以下命令

ip netns exec ns56A bash

执行上述命令后,Linux将在网络命名空间ns56A中开启bash交互,之后输入的Linux命令均在ns56A中执行,相当于模拟了主机ns56A的终端。

2.然后输入 ifconfig -a ,确认是否成功模拟成主机ns56A。

为了避免混淆,可以改变终端窗口名字。

3. 再打开一个终端窗口,利用Linux命令bash将本窗口模拟成主机ns57C的终端  执行以下命令  

ip netns exec ns57C bash

  模拟主机ns57C的终端。

4.然后输入ifconfig -a ,确认是否成功模拟成主机ns57C,并修改终端名。

步骤5:在主机ns57C上创建一个3500字节长度的文件备用。

1.在主机ns57C的模拟终端中,执行如下命令,创建一个3500字节长度的文件,命名为3500.0。

 truncate -s 3500 3500.0

步骤6:在主机ns57C上启动Wireshark,在接口tap57C上启动抓包。

1.新开一个终端窗口,执行以下命令,在主机ns57C后台上启动Wireshark。

ip netns exec ns57C wireshark &

2.在Wireshark窗口中选择接口tap57C,启动抓包。

步骤7:在主机ns57C上打开TCP服务程序。在主机ns56A上打开TCP客户程序,然后通过网络将主机ns57C上的3500.0文件读取到主机ns56A

1.在主机ns57C的模拟终端中,执行如下命令,在4499端口打开TCP服务,并开启shell服务。

nc -e /bin/sh -lv 4499

执行上述命令后,通过TCP连接收到的字符将被发送到主机ns57C的shell中执行。

2.在主机ns56A的模拟终端中,执行如下命令,打开TCP客户程序,并指定TCP服务程序的IP地址和端口。 

nc 192.168.57.254 4499

3.在主机ns56A的模拟终端中,输入如下命令,将该命令被发送到主机ns57C的shell中,读取文件3500.0,命令执行结果通过TCP连接发送回主机ns56A。

cat 3500.0

4.文件传输完毕后,在主机ns57C和ns56A上,先后用 Ctrl+C 终止TCP通信。

步骤8:在Wireshark中停止抓包,保存抓包结果文件并分析本次TCP通信,理解TCP报文段格式,理解TCP建立连接和释放连接的过程

1.停止抓包后保存抓包数据,便于后续进行分析。

【问题与分析】

1.在步骤7中,操作系统为主机ns56A上的TCP客户程序分配的端口号是多少?截图说明你的分析过程。

如图所示,操作系统为主机ns56A上的TCP客户程序分配的端口号是59502。

2.在步骤7中,你一共截获了几个TCP报文段?分析连接建立后,第一个TCP客户发给TCP服务器的报文段,以及第一个TCP服务器发给TCP客户的报文段的首部,截图并填写表4.1和表4.2。

如图所示,共有25个报文段,有10个是ARP,有15个是TCP报文段。

第一个TCP客户发给TCP服务器的报文段是8号报文,按照报文内容填写即可。

按照如图所示将相对序号关闭即可获得真实序号。

表4.1 TCP客户发给TCP服务器的报文段首部

字段名

源端口

59502

目的端口

4499

序号(真实序号)

2046422412

确认号(真实确认号)

851582143

数据偏移

32bytes

窗口

229

校验和

0xd213

包含什么选项

No-Operation (NOP), Timestamps

第一个TCP服务器发给TCP客户的报文段是9号报文,按照报文内容填写即可。

表4.2 TCP服务器发给TCP客户的报文段首部

字段名

源端口

4499

目的端口

59502

序号(真实序号)

851582143

确认号(真实确认号)

2046422423

数据偏移

32bytes

窗口

227

校验和

0x2b94

包含什么选项

No-Operation (NOP), Timestamps

3.在你的实验结果中,TCP建立连接时,双方是否使用了MSS选项,主机ns56A和主机ns57C发送给对方的MSS选项值时多少?ns57C将3500字节数据发送给ns56A用了几个报文段?每个报文段中包含多少字节的数据?请计算ns57C的有效最大报文段长度,并验证是否与实验结果一致?截图说明你的分析过程。

双方都使用了MSS选项。

如图所示,双方发给对方的MSS值都为1460bytes。 

将数据值应用到列,便于查看数据长度。

改变标题,避免混淆。

由数据可知,共用了3个报文段,数据长度分别为1448,1448,604。

EMSS=min(RMTU,SMTU)-TCP首部长度-IP首部长度

SMTU=1500

RMSS=RMTU-40=1460

RMTU=1460+40=1500

EMSS=min(1500,1500)-TCP首部长度-IP首部长度

IP首部长度为20。

TCP首部长度为32

EMSS=1500-20-32=1448

与计算的一致。

4.在你的实验结果中,通信双方使用窗口扩大选项了么?双方的窗口移位值时各是多少?双方的窗口各扩大了多少倍?截图说明你的分析过程。

由图可知客户使用了窗口扩大选项,窗口移位值为7,窗口扩大了128倍。

由图可知服务器使用了窗口扩大选项,窗口移位值为7,窗口扩大了128倍。

5.在步骤7中,你截获TCP建立连接和释放连接的报文段了么?分析建立连接和释放连接的几个报文段,截图并填写表4.3和表4.4。

建立连接使用了3个报文段。

通过查询报文段的Flags的内容即可知道SYN位与ACK位的值,按照数据填写表格即可。

表4.3 TCP建立连接的分析

报文段序号

SYN位

ACK位

序号(真实序号)

确认号

(真实确认号)

3

1

0

2046422411

0

4

1

1

851582142

2046422412

5

0

1

2046422412

851582143

释放连接共使用了4个报文段。

通过查询报文段的Flags的内容即可知道FIN位与ACK位的值,按照数据填写表格即可。

表4.4 TCP释放连接的分析

报文段序号

FIN位

ACK位

序号(真实序号)

确认号

(真实确认号)

18

1

1

851585643

2046422423

19

0

1

2046422423

851585644

22

1

1

2046422423

851585644

23

0

1

851585644

2046422424

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值