TCP可靠传输再回顾

TCP-IP学习笔记回顾-4.4 可靠传输的工作原理 4.4 可靠传输的工作原理 4.4.1 停止等待协议(仔细阅读觉得还是有意思) 全双工通信的双发即使发送方也是接收方。 传送的数据单元都称为分组。“停止等待”就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。 (1)无差错情况 A发送分组M1,发完就暂停发送,等待B的确认。B收到M1就向A发送确认。A再收到B的确认后,就再发送下一个分组M2。 (2)出现差错 B在接收... 阅读详情

概述

总体来说TCP通过以下方式保证数据的可靠传输:

  • 确认重传
  • 数据校验
  • 数据分片和排序
  • 流量控制
  • 拥塞控制

数据校验

TCP校验和是一个端到端的校验和,由发送端计算,然后由接收端验证。其目的是为了发现TCP首部和数据在发送端到接收端之间发生的任何改动。如果接收方检测到校验和有差错,则TCP段会被直接丢弃。

数据分片

TCP会按MTU合理分片,接收方会缓存未按序到达的数据,重新排序后再交给应用层。

MTU(最大传输单元),是链路层中的网络对数据帧的一个限制。

MSS(最大分段大小),MSS是TCP里的一个概念(首部的选项字段中)。MSS是TCP数据包每次能够传输的最大数据分段,TCP报文段的长度大于MSS时,要进行分段传输。

回顾滑动窗口

滑动窗口协议

TCP采用滑动窗口协议来实现流水线传输。

为什么要使用滑动窗口协议

因为发送端希望在收到确认前,继续发送其它报文段。

发送方有一个发送窗口,发送窗口范围内的数据允许发送,随着接收方传来的确认信息,以及通知的接收窗口大小来动态调整发送窗口的起始位置以及大小。

在这里插入图片描述
发送窗口大小等于接收方提供的接收窗口的大小。

发送方会根据网络拥塞情况来动态调整发送窗口大小,前提是发送方发送窗口大小不大于接收方接收窗口大小。

窗口滑动的三种情况

  • 前沿向右移动,这种情况发生在数据发送并被确认时。
  • 情况发生在接收窗口增大或者网络拥塞情况缓解时。
  • 后沿向左移动,这种情况发生在接收方希望发送窗口缩小时,TCP标准强烈不建议出现这种情况。因为发送方在收到缩小窗口的通知时,可能已经发送了一些缩小部分的数据,容易造成错误。

TCP接收方有累计确认功能,接收方不必立刻对收到的数据进行确认,这样可以减少传输开销。

累积确认功能使得接收方只对按序到达的最后一个分组发送确认,表示这个分组之前的分组已经全部到达。

另外接收方不能够准确的通知发送方已经发送到接收方的数据分组。

例如:

序号5、6、7、9、10分组到达接收方,接收方发送的确认序号是8,接收方没有收到序号8的分组,希望下次收到序号8的分组。而序号9、10分组虽然已经到达的事实,发送方并不知晓。

这会导致一个问题:一旦发生超时重传的情况,发送方是否需要再次发送已经到达的数据呢。

这里引入了ARQ协议:滑动窗口协议 与 自动重传请求技术结合形成ARQ协议。

根据超时重发数据方式的不同分为后退N帧ARQ协议和选择重发ARQ协议。

后退N帧ARQ协议

在发生超时重传时,后退N帧ARQ协议不考虑确认序号之后的分组是否已经发送到接收方,直接从确认序号开始重传之后的数据。

在这里插入图片描述

选择重传ARQ协议

选择重传ARQ协议是指在接收方收到未按序排列的数据流时,通知发送方重传缺失的数据,而不是重传全部数据。TCP数据段首部中添加选择确认选项SACK可以实现该目的。

超时重传

为了管理TCP连接,引入了以下四个定时器:

  • 重传定时器:决定何时重传未被确认的数据分组。
  • 持续定时器:使窗口大小信息保持不断流动。避免死锁。
  • 保活定时器:检测空闲连接的另一端是否崩溃或重启。
  • 2MSL定时器:测量一个连接处于TIME_WAIT状态的时间。

流量控制

TCP连接建立时,接收方会在确认报文段中给出自己接收窗口的大小。在每次发送确认报文时能够根据情况动态调整接收窗口的大小,并将告知发送方。如下图所示:
在这里插入图片描述
流量控制简单来说就是接收方处理不过来的时候,就把窗口缩小,并把窗口值告诉发送端。

拥塞控制

拥塞控制是指防止过多的数据注入网络中,这样可以使网络中路由器或者链路不致过载。

TCP进行拥塞控制常用的算法有四种:慢启动、拥塞避免、快重传、快恢复。

慢启动

发送方维持一个拥塞窗口 cwnd ( congestion window )的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。

发送方控制拥塞窗口的原则是:只要网络没有出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。但只要网络出现拥塞,拥塞窗口就减小一些,以减少注入到网络中的分组数。

慢启动算法:

通常在刚刚开始发送报文段时,先把拥塞窗口 cwnd 设置为一个最大报文段MSS的数值。

每经过一个传输轮次,拥塞窗口 cwnd 就加倍。

在这里插入图片描述

拥塞避免

为了防止拥塞窗口cwnd增长过大引起网络拥塞,还需要设置一个慢开始门限ssthresh状态变量。

当 cwnd < ssthresh 时,cwnd以慢开始的方法指数增长;

当 cwnd > ssthresh 时,cwnd以拥塞避免的方法线性增长。

无论在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(其根据就是没有收到确认),就要把慢开始门限ssthresh设置为出现拥塞时的发送方窗口值的一半(但不能小于2)。然后把拥塞窗口cwnd重新设置为1,执行慢开始算法。

快重传

如果个别报文段在网络中丢失,网络并没有发生拥塞,这种情况下发送方收不到确认报文,在超时之后会重传该报文。发送方误以为网络发生拥塞,错误的启动慢开始算法,降低了传输效率。

采用快重传算法可以让发送方尽早知道个别报文段的丢失。快重传算法要求接收方不要延时发送确认,即使收到失序的报文段也要立刻发送对已收到报文的重复确认。

在这里插入图片描述

接收方收到M1之后发送对M1的确认报文,M2报文丢失,之后接收方收到M3、M4、M5时每次都发送对M1报文的重复确认。快重传算法规定当收到三次重复确认后,发送方就认为M2报文段丢失,立即重传M2报文段,而不用等待超时时再重传,这样可以避免发送方误认为网络发生拥塞。

快恢复

在快重传算法执行后,发送方知道只是丢失个别报文,而不是网络发生拥塞。之后并不会执行慢启动算法,而是执行快恢复算法:调整门限值ssthresh = cwnd/2,同时设置cwnd = ssthresh + 3 SMSS。从这里直接线性增长,这就是快速恢复。
在这里插入图片描述

计算机网络(1~3)课后题答案(全) 第一章 1.什么是计算机网络? 计算机网络是互联、自治的计算机集合 自治:计算机系统彼此独立,不存在主从或控制与被控制的关系 互联:利用通信线路链接,连接相互独立的计算机系统 2.网络协议的三要素是什么?每个要素的含义是什么? 语法:定义实体之间交换信息的格式与结构 语义:定义实体时间交换信息的信息发送那些控制信息,信息的具体含义,针对不同含义的控制信息,接收信息端如何响应 时序:... 阅读详情

相关推荐

保姆级教程:DBeaver社区版安装与驱动配置(附阿里云镜像解决下载超时)

本文提供DBeaver社区版的保姆级安装教程,涵盖版本选择、安装路径设置到驱动配置优化。特别针对国内用户遇到的下载超时问题,详细介绍了如何配置阿里云镜像加速驱动下载,确保高效连接MySQL等主流数据库。

weixin_30430169的博客 479

网络学习笔记(二):TCP可靠传输原理

  TCP数据段作为IP数据报的数据部分来传输的,IP层提供尽最大努力服务,却不保证数据可靠传输。TCP想要提供可靠传输,需要采取一定的措施来让不可靠的传输信道提供可靠传输服务。比如:出现差错时,让发送方重传数据;接收方来不及处理数据时,让发送方降低传输速度。 一、数据流传输方式   TCP传输的数据一般分为两类:交互数据、成块数据。交互数据一般较小,比如发送1个字节的交互数据,加上TCP数据段首...

weixin_30814223的博客 719

工业数据采集实战:用open62541库读写PLC的OPC UA节点(避坑指南)

本文详细介绍了如何使用open62541库实现工业PLC的OPC UA节点数据采集,涵盖环境搭建、节点读写优化及生产环境故障排查。通过订阅模式和多节点读写技术,显著提升数据采集效率与稳定性,适用于智能制造和工业物联网场景。

weixin_30598225的博客 399

一文搞懂TCP的数据传输

TCP协议、IP/TCP协议、TCP可靠传输、三次握手四次挥手、三挥四握、TCP建立链接、一次性讲明白TCP传输

糖拌西红柿 2810

Qt图表库三选一:Qwt、QChart、QCustomPlot实战性能对比与避坑指南

本文深入对比了Qt开发中三大主流图表库Qwt、QChart和QCustomPlot的性能与适用场景。通过实测数据展示各库在渲染效率、内存占用和功能特性上的差异,并提供针对不同项目需求的选型建议和集成避坑指南,帮助开发者高效选择最适合的Qt图表解决方案。

weixin_33691700的博客 449

Jetson-nano 编译实时内核并烧录

前言 之前一篇文章介绍了正常的烧录过程,使用的是默认内核,实际工作中需要对内核打补丁升级为实时内核,并对其重编译。 一、准备内容 官网大法好 官方内核下载链接 官方交叉编译器下载链接 官方文档 ubuntu主机一台 根据官网选择下载对应的文件, 1、L4TDriver Package (BSP) source jetson内核文件。 2、官方交叉编译器 因为我们不是在jetson上直接编译,而jetson是arm平台,所以要进行交叉编译。 二、使用步骤 1.解压 内核 tar -xjf public_s

ldl371122的博客 3287

TCP 超时时间设置过长或 MTU 设置不合理会导致网络速度变慢吗

是的,TCP 超时时间设置过长或 MTU 设置不合理都可能导致网络速度变慢。 TCP 超时时间是指在发送数据之后,如果没有收到对端的应答,就会在超时时间后再次发送数据。如果超时时间设置过长,会导致发送数据的时间延长,从而使网络速度变慢。 MTU (Maximum Transmission Unit) 是指数据包中最大数据量,如果 MTU 设置过大,就会导致数据包中的数据量增加,从而增加了网络传输的...

weixin_35749440的博客 1061

S7-1200 Modbus TCP客户端配置实战:从基础设置到数据交互详解

本文详细介绍了S7-1200 Modbus TCP客户端的配置方法,从基础设置到数据交互的完整流程。涵盖硬件准备、TIA Portal配置、MB_CLIENT指令参数详解、数据缓冲区管理及实战测试,帮助工程师快速掌握西门子PLC与Modbus TCP通信的关键技术。

fire9的博客 310

tcp/ip 传输的整个过程

TCP/IP协议栈与数据包封装   TCP/IP网络协议栈分为应用层(Application)、传输层(Transport)、网络层(Network)和链路层(Link)四层。如下图所示(该图出自[TCPIP])。 图 36.1. TCP/IP协议栈     两台计算机通过TCP/IP协议通讯的过程如下所示(该图出自[TCPIP])。 图 36.2. TCP/IP

guoke312的专栏 2万+

ROS从入门到精通6-2:gmapping激光建图与自定义建图功能包

本文用Turtlebot3实例直观介绍激光建图概念,并实现自定义建图功能包(自动建图与键盘手动控制建图)

FRIGIDWINTER的博客 2662

CANoe-vTESTstudio之Test Diagram编辑器

总之,CANoe-vTESTstudio的Test Diagram编辑器提供了一个直观且强大的工具,用于创建和管理测试用例。通过图形化的界面和丰富的功能,测试工程师可以更轻松地编写复杂的测试脚本,并有效地进行测试开发。在上面的示例中,我们创建了一个名为"MyTestCase"的测试用例,并定义了两个测试步骤"Step1"和"Step2"。在上面的示例中,我们在执行"Step1"之后使用条件语句来确定是否执行"Step2"。在每次迭代中,我们创建一个新的测试步骤,并根据迭代次数动态生成相应的日志和验证消息。

TcData的博客 248

TCP-IP学习笔记回顾-4.5 TCP报文段的首部格式 -4.6 TCP可靠传输的实现【重点】

4.5 TCP报文段的首部格式 TCP虽然是面向字节流的,但TCP传输的数据单元是报文段。一个TCP报文段分为首部和数据两部分。TCP首部的最小长度是20Byte IP数据报首部 | IP数据包数据部分 内容为{TCP首部 | TCP数据部分} 4.6 TCP可靠传输的实现【重点】 为了讲述可靠传输原理的方便,我们假定数据传输只在一个方向进行,即A发送数据,B给出确认。这样的好处是讨论限于两个窗...

c+c++的博客 265

WebRTC之beamforming算法

CSND已永久停更,最新版唯一来源点击下面链接跳转: 语音增强和语音识别网页书 坐标问题 这里以笔记本为例进行说明,当笔记本按如下方式打开: 首先是键盘和液晶屏呈90度,然后鼠标上方,也就是液晶屏上方正中间是camera,把平行于键盘的面看成是xy平面,把液晶屏所在的面看成是xz平面,所有平面的原点都在Camera的位置。 方位角:从原点开始,Camera的右侧是0度,逆时针方...

shichaog的专栏 1万+

【每日八股】复习计算机网络 Day2:TCP 断开连接时四次挥手及其相关问题

根据 csview 复习计算机网络中 TCP 连接断开时的四次挥手及其延伸出的相关问题。

YGGP的博客 1296

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

网络原理-TCP协议

TCP的10个主要特性确认应答超时重传连接管理滑动窗口流量控制拥塞控制延时应答捎带应答粘包问题异常情况。

求你们看我的博客 1373

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

网络原理(三)—— 传输层 之 UDP 和 TCP协议

介绍传输层中的 UDP 和 TCP协议

熵减玩家 1551

TCP/IP 回顾

0. 概况 路由器不涉及运输层。 采用分组交换,放弃电路交换。 套接字用(IP地址:端口号)表示。 五层协议: 其中表示层和会话层用途如下: 表示层 :数据压缩、加密以及数据描述,这使得应用程序不必关心在各台主机中数据内部格式不同的问题。 会话层 :建立及管理会话。 1. 物理层 根据信息在传输线上的传送方向,分为以下三种通信方式: 单工通信:单向传输 半双工通信...

OOC_ZC的博客 753

【亡羊补牢】计算机网络灵魂之问 第10期 tcp是怎么去保证可靠传输的?

这是博主面向腾讯学习的面试题大整理系列,可以在如下github仓库Issues中通过 Labels 标签分类查看相关内容,同时欢迎大家指正可能的错误并且提出自己的解答,希望大家学的鱼块,春秋招顺利! 传送门:https://github.com/Chocolate1999/Front-end-learning-to-organize-notes 往期精选: 【亡羊补牢】计算机网络灵魂之问 第1期 一道百度笔试题引发的血案 (有了IP地址和子网掩码,广播地址还求不出来?) 【亡羊补牢】计算机网络灵魂之问 第

超逸の学习技术博客 476

TCP/IP网络编程——基于 TCP 的服务端/客户端(上)

TCP/IP网络编程(4)——基于 TCP 的服务端/客户端(1)

u011895157的博客 1376

Linux网络:TCPsocket接口使用

介绍了TCP常用接口和使用

cat_with_cat的博客 704

初识TCP/IP协议

Question:IP都能组包了,UDP为啥还有64KB的限制,借助IP组包能力不能突破UDP的限制吗?Answer:直观上看起来,把上述数据,拆成多分,分多个IP数据包发送,好像也是OK传输过去之后,上述数据也能合并还原成原始的模样这里还原出来的数据,要交给UDP进一步的进行使用,在UDP这一层,要对上述数据进行解析,取出8个字节,作为报头,剩下的作为载荷,剩下的载荷到底多长?就会尝试从报头中,报文长度字段来读取,读出来的数字,最多还是64KB。

求你们看我的博客 1985

《路由与交换技术》读书笔记

所谓网络协议,即是为了让网络中不同设备能进行通信而预先制定的一整套通信各方遵守的格式和约定,协议定义了网络设备如何进行信息交换,是网络通信的基础。协议分两种:私有协议(网络设备厂商自定义的协议)、开放式协议(标准机构(如ISO机构、IETF机构、IEEE机构、ITU机构、EIA机构)定义的协议),私有协议与开放式协议不同处?私有的无法与其他厂商互通。

爱意随风起,人生不可弃。 1419

HCIP的知识点整理

超时重传的问题就是这个超时间间隔会越来越长,这样超长实践的重传间隔,会家中到端之间的时延,在TCP中,发送放可以通过接收方的反馈,在抄是时间端到达前,意识到数据包丢失的现象,并且进行重传。以太网特色:可以提供极大的传输速率---屏分技术:一根铜丝上可以同时发送不同屏断的颠簸而互不干扰,实现数据的并行发送,起到叠加宽带的效果。绘画层:对通信双方的会话进行建立,维护、拆除---session id--分区不同--应用程序的不同进程。

2401_88788050的博客 851

唯品会 java 面试

昨天去参加了唯品会实习生的笔试,我做的是java方向的笔试题: 总共分为三部分,笔试时间是1个小时: 第一部分是不定项选择(每题4分):总共10个题,都是一些java的基础知识,大概有数组的定义以及一些形参的使用方法等; 第二部分是简答题,总共四个小题,每题10分 (1)、操作系统中段页式的选址方式 参考:在段页式系统中,为了获得一条指令或数据,须三次访问内存。第一次访问是访问内存中的段表 ,从中取得页表始址;第二次访问是访问内存中的页表,从中取出该页所在的物理块号,并将该块号 与页内地址一起形成指令或数据

m0_67402235的博客 253

计算机网络期末复习(知识点)

基础知识总结

2301_79894935的博客 1614
上一篇: LeetCode——第163场周赛
PdKingLiu
博客等级 码龄9年 89粉丝 92原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值