实验四:TCP协议探索和连接管理分析
【实验目的】
1、掌握TCP协议数据格式;
2、掌握TCP首部各字段含义;
3、掌握TCP建立连接和释放连接的过程;
4、熟悉Linux下truncate命令的使用方法;
5、了解Linux中利用nc命令开启远程shell的方法。
【实验步骤与结果记录】
要求:根据实验指导书中的实验内容和步骤,认真完成实验。采取截图、拍照等形式记录自己的实验步骤和结果。(可根据需要加页)
1.运行脚本demo3.1.sh,创建虚拟网络拓扑
2.运行脚本demo.3.2.sh,为虚拟网络拓扑中的各路由器配置静态路由
3.运行脚本demo3.3.sh,关闭网卡offload功能,将运输层封装时需要的计算还给CPU
4.打开两个终端窗口,分别模拟主机ns56A和主机ns57C
5.在主机ns57C上创建一个3500字节长度的文件备用,命名为3500.0
6.在主机ns75C上启动Wireshark,在接口tap57C上启动抓包
7.在主机ns57C上打开TCP服务程序。在主机ns56A上打开TCP客户程序,然后通过网络将主机ns57C上的3500.0文件读取到ns56A
(1)在主机ns57C的模拟终端中, 在4499端口打开TCP服务程序
(2)在主机ns56A的模拟终端中,打开TCP客户程序,并指定TCP服务程序的IP地址和端口
(3)在主机ns56A的模拟终端中,输入cat 3500.0,将该命令发送到主机ns57C的shell中,读取文件3500.0,命令执行结果通过TCP连接发送回主机ns56A
(4)文件传输完毕后,在主机ns57C和ns56A,先后用“ctrl +c”终止TCP通信
8.在Wireshark中停止抓包,保存抓包结果文件并分析本次TCP通信,理解TCP报文段格式,理解TCP建立连接和释放连接的过程
【问题与分析】
1、在步骤7中,操作系统为主机ns56A上的TCP客户程序分配的端口号是多少?截图说明你的分析过程。
ip地址:192.168.56.126 端口号:44184
2、在步骤7中,你一共截获了几个TCP报文段?分析连接建立后,第一个TCP客户发给TCP服务器的报文段,以及第一个TCP服务器发给TCP客户的报文段的首部,截图并填写表4.1和表4.2。
表4.1 TCP客户发给TCP服务器的报文段首部 | |
字段名 | 值 |
源端口 | 44184 |
目的端口 | 4499 |
序号(相对序号) | 0 |
确认号(相对确认号) | |
数据偏移 | 40 |
窗口 | 29200 |
校验和 | 0x1944 |
包含什么选项 | Maximum segment size,SACK permitted,Timestamps,No-Operation(NOP),window scale |
表4.2 TCP服务器发给TCP客户的报文段首部 | |
字段名 | 值 |
源端口 | 4499 |
目的端口 | 44184 |
序号(相对序号) | 0 |
确认号(相对确认号) | 1 |
数据偏移 | 40 |
窗口 | 28960 |
校验和 | 0x0652 |
包含什么选项 | Maximum segment size,SACK permitted,Timestamps,No-Operation(NOP),window scale |
options:
Maximum segment size(MSS选项 ,最大段大小选项)
SACK perimitted(selective acknowledgement permitted,选择性确认选项)
Timestamps(TCP Timestamps Option,时间戳选项)
No-Operation(NOP,空操作选项)
window scale(窗口扩大因子选项)
共截获17个TCP报文段
TCP客户发给TCP服务器,如下图:
TCP服务器发给TCP客户,如下图:
3、在你的实验结果中,TCP建立连接时,双方是否使用了MSS选项,主机ns56A和主机ns57C发送给对方的MSS选项值是多少?ns57C将3500字节数据发送给ns56A用了几个报文段?每个报文段中包含多少字节的数据?请计算ns57C的有效最大报文段长度,并验证是否与实验结果一致?截图说明你的分析过程。
使用了MSS(Maximum segement size最大报文段长度)选项。
MSS选项值:1460
ns57C将3500字节数据发送给ns56A用了3个报文段
第一个报文段包含1448字节的数据
第二个报文段包含1448字节的数据
第三个报文段包含604字节的数据
1448+1448+604=3500
与实验结果相符
4、在你的实验结果中,通信双方使用窗口扩大选项了么?双方的窗口移位值时各是多少?双方的窗口各扩大了多少倍?截图说明你的分析过程。
使用了窗口扩大选项(window scale)
客户端窗口移位值:7
服务端窗口移位值:7
由实验两图得知,窗口都扩大128倍
5、在步骤7中,你截获TCP建立连接和释放连接的报文段了么?分析建立连接和释放连接的几个报文段,截图并填写表4.3和表4.4。
表4.3 TCP建立连接的分析 | ||||
报文段序号 | SYN位 | ACK位 | 序号(相对序号) | 确认号(相对确认号) |
3 | 1 | 0 | 0 | 0 |
4 | 1 | 1 | 0 | 1 |
5 | 0 | 1 | 1 | 1 |
表4.4 TCP释放连接的分析 | ||||
报文段序号 | FIN位 | ACK位 | 序号(相对序号) | 确认号(相对确认号) |
24 | 1 | 1 | 3501 | 13 |
25 | 0 | 1 | 13 | 3502 |
28 | 1 | 1 | 13 | 3502 |
29 | 0 | 1 | 3502 | 14 |
TCP建立连接:
TCP释放连接: