计算机网络实验——学习记录五(TCP协议2)

server/2024/10/18 18:13:34/

一、TCP协议重传机制

        TCP协议是一种面向连接、可靠的传输层协议。为了保证数据的可靠传输,TCP采用数据包重传的机制来应对网络传输过程中可能出现的丢包、错包和乱序等问题。

        TCP协议的重传包括超时重传、快速重传、带选择确认SACK的重传和重复SACK重传四种。

二、iptables命令

        执行Linux命令,用iptables设置规则,模拟丢包:以10%的概率丢弃目的地址为192.168.57.254的IP数据报。

iptables -I FORWARD -d 192.168.57.254 -m statistic --mode random --probability 0.1 -j DROP

解释:

(1)-I FORWARD 在FORWARD接口上执行命令;

(2)-d 192.168.57.254 目的地址(destination address)是192.168.57.254的IP数据报;

(3)-m statistic 以统计的概率进行丢包;

(4)-mode random 随机模式;

(5)--probability 0.1 概率是0.1;

(6)-j DROP 操作(job):丢弃;

三、Wireshark软件默认规则

1. 黑色打底、红色字体(默认的着色规则,可修改)的TCP数据包:出错的数据包;

2. TCP Dup ACK:重复(duplicate)的ACK;

3. TCP Fast Retransmission:快重传;

4. TCP Out-Of-Order:乱序(部分ACK(快重传中的特殊情况:在一次快重传的过程中,一个RTT(往返时间)之内,出现两次丢包的现象));

5. TCP Retransmission:超时重传;

四、序号

相对序号:TCP协议 右键——Protocol Preference——勾选Relative sequence numbers;

绝对序号:TCP协议 右键——Protocol Preference——取消勾选Relative sequence numbers;

五、应用到列

把序号字段应用到列:Sequence numbers 右键——Apply as Column

六、重复ACK确认

超时重传报文段发送之前,共收到几次对该报文段的前一个报文段的ACK确认:

「TCP Dup ACK 26#19」表示:对26号ACK报文,重传19次,加上正常26号ACK,一共20次。

七、重传机制

触发快重传之后,如果还是传输失败,会重置时钟,直到触发超时重传,超时重传与快重传之间的时间间隔是一个RTT。

快重传定义:三次重复ACK然后发送快重传(实际情况是可能在接收方快重传之前,就连续收到大于三次的重复ACK确认报文)。

八、回答问题

(1)找到94号TCP Out-Of-Order(乱序),前一个报文93号是部分ACK报文;

(2)根据93号部分ACK报文段,找到它前面的快重传编号是78;根据快重传报文中的序号,分析序号34713是原始报文要发送的数据编号;

(3)根据序号34713找到Wireshark分配给(引起快重传的)丢失报文段的编号:53;

(4)Wireshark分配给快重传前ns56A发送的最后一个报文段的编号:快重传前的报文是76号;快重传发生时,ns56A发送的最后一字节的编号是63672(62225 + 数据长度Len1448 - 1);

(5)ns56A收到部分ACK报文段后,会立即重传部分ACK所指向的报文60777;

九、超时重传

(1)使用部分ACK可以(一定程度)避免超时重传;

(2)超时重传需要回退N帧,从下一个确认帧(66号)开始重新发送,直到对方发来下一个确认帧(77号)结束;


http://www.ppmy.cn/server/7470.html

相关文章

比特币减半后:见证历史性暴涨吗?

作者:Alex Thorn、Gabe Parker and Simrit Dhinsa Galaxy 编译:Liam 比特币减半概述 比特币发行的透明度和可预测性是该资产区别于世界上任何其他资产或货币的关键特征。其他任何资产都没有一个可计算的通货膨胀时间表,也没有一个已知的供应事…

Redis如何查看KEY的数据类型

1. 查看数据类型 在Redis中,可以使用 TYPE 命令来查看指定key的数据类型。该命令会返回存储在指定key中的值的数据类型。以下是具体的使用方法和步骤: 连接到Redis服务器:首先,你需要使用Redis客户端工具(如命令行工具…

[已解决]react打包部署

react打包部署 问题 npm install 命令无反应 思路 换成 yarn install 安装完hadoop的环境后,使用node的yarn会报错: 我们在cmd使用where yarn,如下: 看你想保留哪一个,我平时node用的多,就把hadoop的y…

Spring-AOP

文章目录 1.基本介绍1.什么是AOP?2.示意图3.五种通知 2.AOP快速入门1.入门案例1.导入jar包2.Cal.java 接口3.CalImpl.java 实现类4.CalAspect.java 切面类5.beans06.xml 开启注解功能6.测试 2.细节说明3.AOP理解(重点)1.使用场景2.代理对象理…

【Redis 神秘大陆】001 背景基础理论

一、背景&基础理论 1.1 什么是缓存 缓存:存储在计算机上的一个原始数据复制集,以便于访问——维基百科 1.2 为什么用缓存 提升用户体验: 【即效率、效益和基本主观满意度】CAST 使用者的状态、系统性能及环境,不同的人对于…

JAVA反射-loadClass和Class.forName的区别

类初始化的时机: ▲何时会触发类初始化? 对于第一次JVM执行,类初始化只执行1次! 类会执行初始化。 通常来说,只要你使用该类,都属于主动使用类。但以下几种情况不属于主动使用: 1.使用类声明(定义)变量 2…

Git学习笔记(二)Git安装及基础命令

前面的文章中,我们已经对Git的一些基础知识进行了简单的介绍,包括它的作用,Git组件,文件状态以及一些简单的命令介绍等等。那么这一章主要介绍如何下载安装配置Git,以及Git的一些常用命令和实操截图。 Git下载与安装 …

javaWeb项目-大药房管理系统功能介绍

项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架:ssm、Springboot 前端:Vue、ElementUI 关键技术:springboot、SSM、vue、MYSQL、MAVEN 数据库工具:Navicat、SQLyog 1、Java语言简介 Ja…