TCP超时与重传

2023-05-16

1、TCP重传

A、基于时间信息

设置RTO:tcp协议对超时报文的处理响应比较剧烈,如:i、基于拥塞控制机制,减小发送窗口大小——限窗;ii、当一个重传报文段被再次重传时,则增大RTO退避因子——再次重传,会进行指数退避策略

B、基于确认信息:若没有延时发生,累积ACK报文数达dupthresh次数或ACK报文包含选择确认信息(SACK)表明出现失序报文段时,会启动快速重传机制。(快速重传:不必等待RTO,便重传报文,也可发送新报文,但会触发拥塞控制机制)

PS:TCP重传应尽量避免超时(RTO)重传。

2、带选择确认的重传(select ACK,作为tcp报文头部的option部分)

合理的SACK可以重传丢失的数据来填补接收端缓存中的空缺,同时也可保证不重传已正确接收到的数据。

空缺:ACK号与接收端缓存中的其他数据之间的间隔(有待接收报文的序号)

失序数据:序列号高于空缺的数据

报文失序时,收发端都必须启动SACK选项才可进行带选择确认重传。

发送端行为:第一个SACK块内包含的是最近接收到的报文段的序号范围。

接收端行为:根据SACK信息提供接收端数据序列号范围,从而推断需要重传的空缺数据。一般而言,先填空缺信息,再继续发送新数据。

PS:SACK存在“食言”行为,所以一切要以ACK确认号或重传计时器为准。

3、包失序与包重复

包失序:因为IP层不能保证包传输是有序进程的,所以会存在轻微失序(可自动恢复)、严重失序(启动快速重传)。

包重复:即同一个包产生了完全相同的多个副本,利用SACK可简单忽略此现象。

4、重新组包

当tcp超时重传时,并不需要完全重传相同的报文段。tcp允许执行重新组包,发送一个更大的报文段来提高性能。

5、与TCP重传有关的攻击

低速率DoS攻击:攻击者向网关或主机发送大量数据,使得受害系统持续处于重传超时的状态。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TCP超时与重传 的相关文章

  • IPv4 允许的最大 TCP/IP 网络端口号是多少?

    可以使用的最大端口号是多少 端口号是一个无符号 16 位整数 即 65535
  • 如何通过 GPRS 向 GPS 追踪器(TK103、GT02、GT06、TK102 等)发送命令

    这已经被问过这里https stackoverflow com questions 25460743 gps tracker tk103 how to send message through server https stackoverf
  • 如何监控 TCP 连接的 cwnd 和 ssthresh 值? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我希望在通过套接字连接发送或接收数据包时确定这些值 有没有现有的工具可以做到这一点 The ss http linux die net m
  • Python。从 6 字节字符串中打印 mac 地址

    我有 6 字节字符串的 mac 地址 您将如何以 人类 可读的格式打印它 Thanks import struct x x x x x x struct unpack BBBBBB your variable with mac
  • 无法通过 ngrok ssh 进入远程 Linux

    远程Linux计算机位于内部网络中 没有公共IP地址 所以我安装了ngrok ngrok tcp 22 ngrok by inconshreveable Ctrl C 退出 在线隧道状态版本2 0 19 2 0 17网页界面http 127
  • 为什么我无法发送这个IP数据包?

    我正在尝试使用 C 发送 IP 数据包 destAddress IPAddress Parse 192 168 0 198 destPort 80 Create a raw socket to send this packet rawSoc
  • tcp_max_syn_backlog 和 somaxconn 有什么区别?

    我一直在阅读一些关于 Linux 上的 TCP 实现的文章 我很困惑 它们之间有什么区别net ipv4 tcp max syn backlog and net core somaxconn和backlog作为参数传递给listen 系统调
  • TCP 兼容性:为什么 TCP 不兼容数据包广播和组播操作?

    http en wikipedia org wiki User Datagram Protocol http en wikipedia org wiki User Datagram Protocol 与 TCP 不同 UDP 与数据包广播
  • 是否可以通过 TCP 连接到正在侦听 3G 网络端口的 iPhone?

    我正在开发一个严重依赖 P2P 的应用程序 但我目前没有任何 SIM 卡可供实验 因此我正在 wifi 网络上进行测试 我想知道 3G 网络上的 iPhone 是否可以连接以及是否需要穿越 NAT 设备 您位于提供商的路由器后面 您的 IP
  • 在 C# 中通过 TCP 发送 C 结构体

    我正在编写一个程序 通过 TCP 与一台设备的管理界面进行交互 问题是 设备的文档是用C写的 而我写的程序是用C 写的 我的问题是 文档指定 通信基于基于C结构的API缓冲区 再多的谷歌搜索似乎也无法让我找到这个 API 或如何通过 TCP
  • 在 Perl 中如何接受多个 TCP 连接?

    我对 Linux 的 Perl 脚本有疑问 它的主要目的是成为 3 个应用程序之间的中间人 它应该做什么 它应该能够等待 UDP 文本 不带空格 udp port 当它收到 UDP 文本时 它应该将其转发到连接的 TCP 客户端 问题是我的
  • C# - 从客户端检查 TCP/IP 套接字状态

    我想为我的 TCP IP 客户端类提供 CheckConnection 函数 以便我可以检查是否发生了错误 我自己的客户端断开连接 服务器断开连接 服务器卡住等 我有类似的东西 bool isConnectionActive false i
  • 发起TCP连接关闭后如何接收数据?

    TCP 允许一侧发出 FIN 并让另一侧在结束其一侧的连接之前响应一些数据 我如何使用 NET 来实现这一点TcpClient 看来我必须使用Close发出FIN 但之后我不能再打电话Client Receive since Client被
  • AMQP如何克服直接使用TCP的困难?

    AMQP如何克服直接使用TCP发送消息时的困难 或者更具体地说 在发布 订阅场景中 在 AMQP 中 有一个代理 该代理接收消息 然后完成将消息路由到交换器和队列的困难部分 您还可以设置持久队列 即使客户端断开连接 也可以为客户端保存消息
  • 无法分配请求的地址 - 可能的原因?

    我有一个由主服务器和分布式从服务器组成的程序 从属服务器向服务器发送状态更新 如果服务器在固定时间内没有收到特定从属服务器的消息 则会将该从属服务器标记为关闭 这种情况一直在发生 通过检查日志 我发现从站只能向服务器发送一个状态更新 然后永
  • 分配 TCP/IP 端口供内部应用程序使用

    我编写了一个由 Windows 服务托管的 WCF 服务 它需要侦听已知的 TCP IP 端口 我可以在什么范围内安全地分配端口供我的组织内使用 该端口将嵌入到服务和使用该服务的客户端的配置文件中 端口 0 1023 是众所周知的端口 由
  • 如果其中一台机器死机,TCP 连接如何终止?

    如果两个主机 A 和 B 之间建立了 TCP 连接 假设主机 A 已向主机 B 发送了 5 个八位字节 然后主机 B 崩溃了 由于未知原因 主机 A 将等待确认 但如果没有收到确认 将重新发送八位字节并减小发送者窗口大小 这将重复几次 直到
  • Erlang gen_tcp 连接问题

    简单的问题 这段代码 client gt SomeHostInNet localhost to make it runnable on one machine ok Sock gen tcp connect SomeHostInNet 56
  • 如何在Linux内核源代码中打印IP地址或MAC地址

    我必须通过修改 Linux 内核源代码来稍微改变 TCP 拥塞控制算法 但为了检查结果是否正确 我需要记录 MAC 或 IP 地址信息 我使用 PRINTK 函数来打印内核消息 但我感觉很难打印出主机的MAC IP地址 printk pM
  • Linux:如何从特定端口发送TCP数据包?

    如何打开原始套接字以从特定 TCP 端口发送 我希望所有连接始终来自临时端口以下的一系列端口 如果您正在使用raw套接字 然后只需在数据包标头中填写正确的 TCP 源端口即可 相反 如果您使用 TCP 套接字接口 socket connec

随机推荐

  • H.265编码视频播放器EasyPlayerPro-WIN版播放HLS协议视频流显示时间与实际不符如何修复?

    经过多年的技术积累与实践打造 xff0c TSINGSEE青犀视频团队研发的EasyPlayer播放器项目系列无论是在对接设备型号种类 xff0c 还是在对接编码的兼容性上 xff0c 都具备较高的可用性 xff0c 从集成进第三方平台到支
  • H.265流媒体播放器EasyPlayer.js的属性、方法及事件的调用汇总

    EasyPlayer是可支持H 264 H 265视频播放的流媒体播放器 xff0c 性能稳定 播放流畅 xff0c 可支持的视频流格式有RTSP RTMP HLS FLV WebRTC等 xff0c 具备较高的可用性 EasyPlayer
  • 接插件分类选型

    型号 特点 图片 排针排母 针距多为2 0 或 2 54 xff1b 分为直插 贴片 xff0c 直针 弯针 线 FPC 0 3 0 5 1 0 座 FFC 0 3 0 5 1 0 多用于连接液晶屏 SH1 0 GH1 25 MX1 25
  • vscode实用插件

    1 vscode icons 文件 文件夹图标 xff0c 使编辑器更漂亮 2 indent rainbow 使用四种颜色交替显示缩进 3 TinyPNG 压缩 JPG PNG 图片 4 Live Server 启动具有实时重载的本地开发服
  • 超声波测距的误差分析

    不管在液体还是气体中影响超声波测距精度的都有以下几个因素 一 气介状态下影响超声波测距精度的因素 xff1a 1 压力 不同压力的环境声速是会变化的 xff0c 一般来说压力越大 xff0c 声速越大 xff0c 压力越小 xff0c 声速
  • HAL库的串口基础学习(包含串口接收不定长数据的实现)

    HAL库的串口基础学习 xff08 1 xff09 HAL库有一个特点就是对于许多外设的初始化以及功能操作 xff0c 都提供有一个weak版本的函数 xff0c 这是充分的展现出库名字的含义 xff08 Hardware Abstract
  • 解决头文件相互包含问题的方法

    所谓超前引用是指一个类型在定义之前就被用来定义变量和声明函数 一般情况下 xff0c C C 43 43 要求所有的类型必须在使用前被定义 xff0c 但是在一些特殊情况下 xff0c 这种要求无法满足 xff0c 例如 xff0c 在类C
  • 101. 对称二叉树

    101 对称二叉树 给定一个二叉树 xff0c 检查它是否是镜像对称的 例如 xff0c 二叉树 1 2 2 3 4 4 3 是对称的 1 2 2 3 4 4 3 但是下面这个 1 2 2 null 3 null 3 则不是镜像对称的 1
  • code

    class Solution public void push int node stack1 push node int pop int temp while stack2 empty while stack1 empty temp 61
  • c++ unordered_map

    include lt iostream gt include lt unordered map gt int main simple comparison demo std unordered map lt int char gt exp
  • opencv 打开网络摄像头

    闲着没事从同学那里找到了个openwrt xff0c 突然间想起来OPENCV可以很轻松的打开自带的摄像头 xff0c 刚开始学习OPENCV 打开过若干次笔记本的摄像头 xff0c OPENCV能否打开网络摄像头呢 xff1f 在百度上搜
  • opencv 识别网球 ,或者绿色的小球 输出重心坐标

    void image process IplImage image int iLowH 61 26 int iHighH 61 69 int iLowS 61 42 int iHighS 61 206 int iLowV 61 0 int
  • linux 下面如何安装Eigen

    linux 下面如何进行安装 Eigen 1 安装 xff1a sudo apt get install libeigen3 dev 2 调整 xff0c 默认安装路径是 xff1a usr include eigen3 cd usr in
  • matlab 怎么把二维数组画出三维的图像出来

    最近要用到matlab 来进行可视化显示以下数据 xff0c 把数据导入matlab 之后 是二维数组的数据 xff0c 想以数组的x和y 分别为x 和y 轴 xff0c 然后以数组相对应的数据为z 轴 xff0c 然后进行画图显示 cle
  • C++ 怎么批量读取多个文件

    C 43 43 怎么批量读取多个文件 char szName 100 61 39 0 39 sprintf szName 34 training wall clouser wall d pcd 34 j num wall 格式化输出文件名
  • ros 下面同步相机和IMU 两个topic

    This file is used for collecting data fromm imu and camera at the same time One camera and one imu include lt ros ros h
  • 线程和进程的区别与联系以及单线程多进程与单进程多线程的区别

    线程和进程 概念 进程 xff08 process xff09 xff1a 是指具有已一定功能的独立程序 xff0c 是系统资源分配的基本单位 xff0c 在内存中有其完备的数据空间和代码空间 xff0c 拥有完整的虚拟空间地址 一个进程所
  • QgraphicsScene类

    概述 QgraphicsScene类为管理大量的2D图形item提供了一个管理界面 xff0c 做为item的容器 xff0c 它配合使用QgraphicsView使用来观察items 例如线 xff0c 矩形 xff0c 文本或者自定义的
  • 最好的 Curl 学习指南,强烈建议收藏!

    来自 xff1a 阮一峰的网络日志 链接 xff1a http www ruanyifeng com blog 2019 09 curl reference html 简介 curl 是常用的命令行工具 xff0c 用来请求 Web 服务器
  • TCP超时与重传

    1 TCP重传 A 基于时间信息 设置RTO xff1a tcp协议对超时报文的处理响应比较剧烈 xff0c 如 xff1a i 基于拥塞控制机制 xff0c 减小发送窗口大小 限窗 xff1b ii 当一个重传报文段被再次重传时 xff0