【实验目的】
1、掌握TCP的流量控制机制;
2、理解TCP的零窗口通知及处理方法。
【实验步骤与结果记录】
要求:根据实验指导书中的实验内容和步骤,认真完成实验。采取截图、拍照等形式记录自己的实验步骤和结果。(可根据需要加页)
1.修改Linux系统参数
(1)在Linux中,修改TCP连接的接收缓存参数,限制Linux分配的接收缓存为9032字节
2.创建虚拟网络拓扑
3.为虚拟网络拓扑中的各路由器配置静态路由
4.关闭网卡offload功能,将运输层封装时需要的计算还给CPU
5.打开两个终端,分别模拟主机ns56A和ns57C
利用网络空间命名ns56A和ns57C模拟两台通信的主机,模拟的主机和实验三相同
6.在主机ns56A上创建一个10K字节长度的文件备用
7.在主机ns57C上启动Wireshark,在接口tap57C上启动抓包
8.在主机ns57C上打开TCP服务程序,在主机ns56A上打开TCP客户程序,通过网络将主机ns56A上的10K.0文件发送到主机ns57C,并限制ns57C上的TCP服务程序延迟5秒再读取程序
(1)在4499端口打开TCP服务,nc进程延迟操作5秒,并将输出重定向到文件10K.1
(2)在主机ns56A的模拟终端中,打开TCP客户程序,指定TCP服务程序的IP地址和端口,并将输入重定向到文件10K.0
9.在Wireshark中停止抓包,保存结果并分析
【问题与分析】
1、在步骤8中,操作系统为主机ns56A上的TCP客户程序分配的端口号是多少?截图说明你的分析过程。
34612
2、在你的实验结果中,主机ns56A发送了多少字节数据后,收到了来自主机ns57C的零窗口通知报文?主机ns57C发送第一个零窗口通知报文之前,最后发送的那个ACK报文段中,窗口字段值是多少?收到第一个零窗口通知报文前,主机ns56A发送的最后一个数据报文段的序号字段值是多少?它包含多少字节数据?截图说明你的分析过程。
主机ns56A发送了9032字节数据后,收到来自主机ns57C的零窗口通知报文
最后发送的那个ACK报文段中,窗口字段值是344,不是86,因为还有一个窗口扩大系数4,所以是86*4
最后一个数据报文段的序号字段值是8689,包含344字节数据
15号报文的窗是344,那16号报文只能发344个字节了,这就是流量控制.
3、在你的实验结果中,主机ns56A一共发送了几个窗口探测报文。第一个窗口探测报文与第一个零窗口通知报文的时间间隔多少?随后的多个窗口探测报文之间的时间间隔分别是多少?在窗口探测报文中包含多少字节的数据?窗口探测报文中的序号字段值是多少?零窗口通知报文中的确认号字段值是多少?这两个值有什么关系?截图说明你的分析过程。
共发送4个窗口探测报文,第一个窗口探测报文与第一个零窗口通知报文的时间间隔为0.520191255-0.301351262=0.218839993s
之后的窗口探测报文之间的时间间隔分别是:
0.951641762-0.520191255=0.431450507s
1.790204031-0.951641762=0.838562269s
3.433134203-1.790204031=1.642930172s
零窗口探测报文没有数据
探测报文序列号是9032,零窗口通知报文确认号是9033,发的是9032,但是接受方已经接受了第9032个字节了的,这种报文为保护报文,也被用来做探测报文,接收方回一个9033表示希望接受第9033开始以后的数据。也就是+1的关系