首页 > 其他分享 >郑州大学计算机网络实验05 TCP可靠传输和重传分析

郑州大学计算机网络实验05 TCP可靠传输和重传分析

时间:2024-06-10 22:58:19浏览次数:23  
标签:ns56A 重传 05 主机 报文 TCP 序号

实验五:TCP可靠传输和重传分析

【实验目的】

1、掌握TCP可靠传输原理;

2、掌握TCP的超时重传和快重传机制;

3、了解Linux下iptables命令的使用方法。

【实验步骤与结果记录】

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

步骤1:修改Linux系统参数

1.在Linux中,执行如下命令,修改TCP连接的接收缓存参数,减少Linux 分配的接收缓存,降低接收窗口值。

sysctl -w net.ipv4.tcp_rmem='4096 65536 65536'

2.在Linux中,执行如下命令,关闭SACK选项,避免执行基于SACK的重传算法。

sysctl -w net.ipv4.tcp_sack=0

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

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

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

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

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

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

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

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

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

步骤5:在路由器RA上,用iptables设置规则,模拟丢包

1.执行如下Linux命令,在路由器RA中,用iptables 设置规则,以10%的概率丢弃目标地址为192.168.57.254(ns57C)的IP数据报。

ip netns exec RA iptables -I FORWARD -d 192.168.57.254 -m statistic --mode random --probability 0.1 -j DROP

步骤6:打开两个终端窗口,分别模拟主机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,并修改终端名。

步骤7:在主机ns56A上创建一个100K字节长度的文件备用

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

truncate -s 100K 100K.0

步骤8:在主机ns56A上启动Wireshark,在接口tap56A上启动抓包

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

ip netns exec ns56A wireshark &

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

步骤9:在主机ns57C上打开TCP服务程序。在主机ns56A上打开TCP客户程序,然后通过网络将主机ns56A上的100K.0文件发送到主机ns57C

1.在主机ns57C的模拟终端中,执行如下命令,在4499端口打开TCP服务,并将输出重定向到文件100K.1

nc -lv 4499 > 100K.1

执行上述命令后,通过TCP连接收到的字符被保存到文件100K.1中。

2.在主机ns56A的模拟终端中,执行如下命令,打开TCP客户程序,指定TCP服务程序的IP地址和端口,并将输入重定向到文件100K.0。

nc 192.168.57.254 4499 < 100K.0

执行上述命令后,TCP连接建立后,会自动读取文件100K.0,并从TCP连接发送出去。

3.文件100K.0发送完成后,ns56A上的nc命令会主动释放TCP连接。

步骤10:在Wireshark中停止抓包,保存抓包结果文件并分析本次TCP通信,理解TCP超时重传机制和快重传机制。

停止抓包,保存抓包结果。

1.如果抓包结果中没有出现快重传,可以重复执行实验步骤8-10,直至抓到理想的结果。

2.如果抓包结果中没有出现超时重传,可以重复执行实验步骤8-10,直至抓到理想的结果。

3.如果抓包结果中没有出现部分ACK,可以重复执行实验步骤8-10,直至抓到理想的结果。

【问题与分析】

1.本实验要求捕获到TCP超时重传事件,快重传事件和部分ACK事件,你在实验中捕获这几种事件时,操作系统为主机ns56A上的TCP客户程序分配的端口号是多少,如果这些事件是分多次捕获的,请分别给出客户进程的端口号。截图说明。

由图可知,在实验中捕获这几种事件时,操作系统为主机ns56A上的TCP客户程序分配的端口号是40674。

2.在你的实验结果中,任意选择一个超时重传的报文段,分析并回答以下问题:

(1) wireshark给这个超时重传报文段的编号是多少?分析超时重传报文段的首部,截图并填写表5.1。

这个超时重传报文段的编号是67。

打开相对序号选项,获取相对序号。

表5.1 超时重传报文段分析

Wireshark分配给重传报文段的编号

67

源端口

40674

目的端口

4499

序号(相对序号)

32769

数据偏移

32bytes

窗口

7300

(2) 这个超时重传报文段重传的原TCP报文段的编号是多少,分析原TCP报文段的首部,截图并填写表5.2。

将序号字段排列到列,便于寻找序号。

由图可知,上一个号码为32769的报文为51号报文。

表5.2原TCP报文段分析

Wireshark分配给原报文段的编号

51

源端口

40674

目的端口

4499

序号(相对序号)

32769

数据偏移

32bytes

窗口

7300

(3) 超时重传报文段发送之前,共收到几次对该报文段的前一个报文段的ACK确认?该超时重传报文段触发过快重传么?该报文段与原报文段的时间间隔是多长?截图说明你的分析过程。

如图所示,共有5次错误确认,应还有1个正确确认,故共收到6次确认。

该超时重传报文段没有触发过快重传。

该报文段时间约为0.2。

原报文段时间约为0.0。

故该报文段与原报文段的时间间隔是0.2-0.0=0.2s。

3.在你的实验结果中,任意选择一个快重传的报文段,分析并回答以下问题:

(1) wireshark给这个快重传报文段的编号是多少?分析超时重传报文段的首部,截图并填写表5.3。

这个快重传的编号是29。

按照内容填写数值即可。

表5.3 快重传报文段分析

Wireshark分配给快重传报文段的编号

29

源端口

40674

目的端口

4499

序号(相对序号)

11089

数据偏移

32bytes

窗口

7300

(2) 这个快重传报文段重传的原TCP报文段的编号是多少,分析原TCP报文段的首部,截图并填写表5.4。

由相对序号可知原TCP报文段的编号是22。

按照报文段内容填写即可。

表5.4原TCP报文段分析

Wireshark分配给原报文段的编号

22

源端口

40674

目的端口

4499

序号(相对序号)

11089

数据偏移

32bytes

窗口

7300

(3) 快重传报文段发送之前,共收到几次对该报文段的前一个报文段的ACK确认?截图说明你的分析过程。

共有3次错误确认,还有1次正确确认,故共有4次对前一个报文段的ACK确认。

4、在你的实验结果中,找到一次主机ns57C发给主机ns56A的部分ACK报文段。分析这次快重传过程中,引起快重传的丢失报文段、快重传报文段、快重传之前ns56A发送的最后一个报文段、部分ACK报文段,截图并填写表5.5。

含有该字段说明发生了部分确认。

丢失报文段是40,快重传报文段是50。

快重传前ns56A发送的最后一个报文段的编号是48。

Wireshark分配给部分ACK报文段的编号是52号。

丢失报文段的序号是24577。

丢失报文段的数据部分长度为1448。

快重传报文段的序号为24577。

快重传之前ns56A发送的最后一个报文段的序号是31817。

快重传之前ns56A发送的最后一个报文段的数据部分长度是952。

最后一字节编号=31817+952-1=32768。

部分ACK报文段的确认号是31817。

表5.5部分ACK分析

Wireshark分配给丢失报文段的编号

40

Wireshark分配给快重传报文段的编号

50

Wireshark分配给快重传前ns56A发送的最后一个报文段的编号

48

Wireshark分配给部分ACK报文段的编号

52

丢失报文段的序号(相对序号)

24577

丢失报文段的数据部分长度

1448(字节)

快重传报文段的序号(相对序号)

24577

快重传之前ns56A发送的最后一个报文段的序号(相对序号)

31817

快重传之前ns56A发送的最后一个报文段的数据部分长度

952(字节)

快重传发生时,ns56A发送的最后一字节的编号

32768

部分ACK报文段的确认号(相对确认号)

31817

ns56A收到部分ACK报文段后,是如何处理的?截图说明你的分析过程。

收到部分ACK立刻重传缺失数据,避免触发超时重传。

标签:ns56A,重传,05,主机,报文,TCP,序号
From: https://blog.csdn.net/unbug1/article/details/139235133

相关文章

  • 架构设计-全局异常处理器404、405的问题
    javaweb项目中经常会遇到异常处理的问题,普遍的做法是使用全局异常处理,这样做有以下几种原因:集中化处理:全局异常处理允许你在一个集中的地方处理整个应用程序中的异常。这有助于减少代码重复,因为你不必在每个可能抛出异常的方法中都编写相同的异常处理代码。统一错误响应:通过......
  • MySQL8.0默认TCP端口介绍
    1、本文内容选择题TCP/IPMySQL8.0的默认TCP端口showvariables查看总结2、选择题A、3306B、33060C、33062D、330633、TCP/IPTCP/IP(TransmissionControlProtocol/InternetProtocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。以下是......
  • 代码随想录算法训练营第三十五天 | 1005.K次取反后最大化的数组和 134.加油站 135.分
    1005.K次取反后最大化的数组和题目链接文章讲解视频讲解思路:  按绝对值从大到小排序  遍历数组,遇到负数,如果次数未用完就取反  最后如果剩余次数未用完且为奇数就将数组最后一个元素取反classSolution{staticboolmyCompare(constint&lhs,constint&r......
  • tcpdump抓包后wireshark无法打开,报错中带有272
    问题引入tcpdump抓包后wireshark无法打开(2开头版本的wireshark不能打开,4开头的wireshark可以打开)。安装最新的4开头的wireshark后可以打开抓包。使用的抓包命令是tcpdump-iany-wfff.pcap。原因2开头版本的wireshark不支持解析链路层数据类型为linuxcookedv2的抓包。......
  • P10572 [JRKSJ R8] +1-1 题解
    样例给了我们一个很好的提示。观察样例中\(1\rightarrow4\)的路径,发现\(4\rightarrow5\)这条边走了两遍,再结合题目描述中不需要保证是简单路径的提示,我们发现:如果路径两侧分别是(\(\rightarrow\)(和)\(\rightarrow\))的话,那么中间不管怎么走都可以通过左右横跳来......
  • 2024-06-05 拷贝、函数、装饰器、迭代生成器
    一、浅拷贝lists=[1,2,[6]]内存空间不同,浅拷贝内容不变 new_lists=copy(lists)lists.append(7)print(lists,new_lists)//[1,2,[6],7][1,2,[6]]改变列表中内容,内存空间相同,数值改变new_lists=copy(lists)lists[-1].append(7)print(lists,new_lists)//[......
  • Keysight 是德 DSOX3054G 数字示波器
    DSOX3054G示波器:500MHz,4个模拟通道DSOX3054G500MHz示波器提供了4个模拟通道、4Mpts存储器和1,000,000波形/秒的捕获率,以及8.5英寸电容触摸屏和区域触摸触发功能,同时标配嵌入式软件,其中可提供波形和测量直方图。500MHz4个模拟通道8.5英寸大尺寸电容触摸屏让......
  • OSI七层模型与TCP\IP四层模型
    1、OSI(OpenSystemsInterconnection)七层模型是由国际标准化组织(ISO)提出的一个理论框架,用于描述网络通信的过程。这个模型将网络通信的功能分为七个独立的层级,每一层都负责特定的任务,并且依赖于其下一层提供的服务。下面是OSI七层模型的详细解释:1.**应用层(ApplicationLayer......
  • 【QT5】<总览五> QT多线程、TCP/UDP
    文章目录前言一、QThread多线程二、QT中的TCP编程1.TCP简介2.服务端程序编写3.客户端程序编写4.服务端与客户端测试三、QT中的UDP编程1.UDP简介2.UDP单播与广播程序前言承接【QT5】<总览四>QT常见绘图、图表及动画。若存在版权问题,请联系作者删除!一、QThre......
  • SpringBoot社区配送服务系统小程序-计算机毕业设计源码88705
    摘要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,社区当然也不例外。社区配送服务系统小程序是以实际运用为开发背景,运用软件工程原理和开发方法,采用Java技术构建的一个管理系统。整个开发过程首先对软件系统进......