后端开发【一大波有用知识】tcp/ip定时器与滑动窗口详解

TCP/IP详解--滑动窗口、拥塞窗口、慢启动、Negle算法 TCP的数据流大致可以分为两类,交互数据流与成块的数据流。交互数据流就是发送控制命令的数据流,比如relogin,telnet,ftp命令等等;成块数据流是用来发送数据的包,网络上大部分的TCP包都是这种包。        很明显,TCP在传输这两种类型的包时的效率是不一样的,因此为了提高TCP的传输效率,应该对这两种类型的包采用不同的算法。        总之,TCP的传输原则是尽量减少小分 阅读详情

为什么udp有包长,而tcp没有包长。

首先,send()发送一次发送1k,发送一次缓冲区满了就会返回-1。2k发送出去后缓冲区被清空,send()才会被再次调用。最大传输片会打印四个包发送。而最大传输单元是在数据链路层对网卡的一些限制,如果mss大于mtu时候就会被分割,而mss小于mtu时候就会直接发送。所以udp需要包长,而tcp不需要因为mss+tcp包头就可以完成不需要包长。具体点说,就是帧需要,加上512,可以将包长进行计算出,这里不做重复的事减轻了很多后续工作。

  • 发送1m的文件

  • sendbuf 2k

  • mss(最大传输片)=512,mss是在包头的option中设置的。

  • mtu(最大传输单元)=1500

协议头分析

  • ACK表示确认

  • PSH表示应用程序发来数据赶紧处理呀宝贝

  • RST表示告诉对端你的数据不合法,重置

  • SYN表示同步头

  • FIN表示古德拜啦~断开前兆

慢启动的问题

​对数增长慢启动后,线性增拥塞控制,最后是要快速重传。

进入弱网环境,rtt(数据包往返)出现很长时间,这就叫抖动。

rtt=0.1rtt(new)+0.9rtt(old)这是一个消抖的过程,通信专业知识,有时间应该去学学一下研究通信啦!得出的值就可以判断是否超时。当然了,拥塞避免增长速度肯定是没有慢启动指数增长的快,但是面积大,面积就是传输的数量,所以拥塞避免是为了保证传输的量更加大。

如果接收端缓冲区buffer满了,但是没有丢失数据,还会发吗?会

就不会发了呀宝贝。回应上写的windows为0。服务端的recvbuf和回应客户端返回的window完全是两个不同的概念,但是两个值会一直接近。

如果服务器端recvbuf从无到有,如何告诉客户端我有空间了呢?

服务器主动告诉客户端,我的recvbuf不为0

客户端轮询

第一种服务器主动告诉客户端,优点是实时性比较好,但是缺点是发生丢包怎么办?将会陷入死锁的状态。如果做一个定时器会不会好一点?可是客户端关机了怎么办?

**TCP的做法是什么呢?

当服务器recvbuf为0的时候,客户端主动轮训发送探测包,服务器的有空间吗?服务器被动的回。

**

如果服务器主动发送回复客户端,客户端不回服务器多次发送可以不?做法是可行的,但是违背了原则,毕竟服务器也不愿意当舔狗,主动向全世界客户端宣布爱你。

滑动窗口的运行机制

两个指针表示收尾,第三根指针作为成功接收否的标记指针,尾指针后面的接收的指针不处理。

​TCPkeepalive和应用层keepalive,应用层的keepalive可控性更强,而TCPkeepalive很笨,有点像小刘同学嘎嘎幸亏她不知道要不然肯定会打我,应用层你感知不到好难受。

C++后台开发系统学习地址:C/C++Linux服务器开发高级架构师/C++后台开发架构师​

以下学习资料,C++后台开发面试题,教学视频,C++后台开发学习路线图,免费分享有需要的可以自行添加:学习资料群720209036 进去自取

问答环节

Q1:tcp利用send函数发送数据发现数据丢失了,需要在应用层对丢包重传处理吗?

答:利用tcp传输数据,发送数据是一定会发送到对端网卡。如果你发生丢包,那要注意send()返回值是为-1,应用层处理业务逻辑有问题。往往错误都是一些低端的错误。

Q2:滑动窗口的尾指针后面组织准备接受数据的状态,这是哪里在组织,操作系统吗?

答:是tcp协议组织的。

Q3:如图,当客户端有多个数据包同时发送给服务器,发送中途状态服务器的recvbuf满了,服务器需要立刻通知客户端吗?还是要等一个阶段的数据发送的差不多了再告诉客户端有一部分数据未接收成功?目前看来,这个状况是服务器性能问题,所以不会进入快速重传状态对吧?

答:要发送多少,是接收端返回数据。接收端接收数据数据以后,会回ack,ack里面就会确定,还能接受大小。

参考资料

Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习

TCP/IP详解:协议(TCP) 第17章:TCP:传输控制协议 T C P提供一种面向连接的、可靠的字节流服务。T C P连接中,仅有两方进行彼此通信。广播和多播不能用于 T C P。 如果必要, T C P将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。 T C P对字节流的内容不作任何解释。 T C P不知道传输的数据字节流是二进制数据,还是A S C I I字符、E B C D I C字符或者其他类型数据。对 阅读详情

相关推荐

TCP/IP协议详解与TCP连接管理

本文深入探讨了TCP/IP协议中的BOOTP协议和TCP协议的工作原理。详细分析了BOOTP协议在引导无盘系统时的作用,以及TCP协议提供的面向连接的可靠传输服务。通过具体案例和步骤解析了TCP连接的建立、数据传输和终止过程,以及在各种网络条件下的超时处理和流量控制机制。

weixin_32999557的博客 910

tcp协议系列文章(7):send()的数据大小与可用的发送缓冲区大小的关系

socket之send与发送缓冲区大小的关系

aflyeaglenku的博客(QQ1010316426) 7595

DEAP数据集实战指南:从脑电信号到情绪分类的完整流程解析

本文提供了DEAP数据集在脑电信号情绪识别领域的完整实战指南。详细解析了数据下载、结构理解、频带功率特征提取等核心步骤,并演示了如何构建和评估机器学习分类模型,为研究者实现从原始脑电信号到情绪分类的完整流程提供了清晰路径。

jj890的博客 913

简单的TCP网络程序·多进程、多线程(后端服务器)

简单的TCP网络程序·多进程、多线程(后端服务器)

weixin_67595436的博客 1802

IEEE802.11bf: WLAN Sensing Standard

下表为IEEE802.11bf 定义的使用情境 (Use Cases)

qinsd19的博客 1062

旋转矩阵推导

推导前提: 坐标使用右手坐标系,角度逆时针旋转为正。 绕X轴旋转角度为 俯仰角 即Pitch 绕Y轴旋转角度为 偏航角 即Yaw(Head) 绕Z轴旋转角度为 翻滚角 即Roll 一、平面二维坐标点的旋转 如右图所示,根据三角函数关系,可以列出向量OP与OP’的坐标表示形式: x = |OP|•cosα x′ = |OP|•cos(α+β) y = |OP|•sinα y′ = |OP|•sin(α+β) 将P′(x′,y′)表达式展开: x′ =

suixinger_lmh的随笔 1384

TCP send 发送大数据量的问题

int sendTCP(SOCKET& socketfd,TString strXml) {  int iContLen = strXml.length();  int iSendLen = 0; #ifndef WIN32  fd_set scanSet;  FD_

papiping的专栏 5502

systrace分析 之 问题初步定位

如下surfaceflinger空缺点,上面对应的bufferTX 中有buffer,但VSYNC-SF 过来后,SurfaceFlinger却没有去取,检查测试app “android.settings”, 也没有GPU completion 时间长的问题,所以该部分可以请SurfaceFlinger的owner 进一步确认为何不取buffer。. GPU拿的是acquireFence HWC拿的是releaseFence, GPU是绘图,HWC是合成显示,这两个是互相等待的关系,

yangzex的专栏 3197

后台开发核心技术(七)TCP协议

TCP协议: TCP头部格式 1 ) 16位端口号: 告知主机该报文段是来自哪里以及传给哪个上层协议或者应用程序的。在TCP通信时,客户端通常使用系统自动选择的临时端口号,而服务器则使用知名服务端口号。知名服务端口号定义在/etc/services中。 2 ) 32位序号: 一次TCP通信过程中某一个传输方向上的字节流的每个字节的编号。 假设主机A和主机B进行TCP通信,A发给B的第一个T...

pourtheworld的博客 673

【回归预测】GRNN广义回归神经网络-MATLAB

广义回归神经网络(GRNN)是一种基于径向基函数(RBF)的神经网络模型,主要用于非线性回归任务。与传统的回归分析方法相比,GRNN具有更强的非线性映射能力和学习速度,能够快速逼近复杂的非线性关系。输入层、模式层、求和层和输出层。输入层接收输入数据,模式层通过径向基函数将输入映射到高维空间,求和层对模式层的输出进行加权求和,最后输出层生成预测结果。GRNN的核心思想是利用高斯核函数计算输入与训练样本之间的相似度,然后根据相似度加权平均得到预测值。

2303_77200324的博客 1093

LeRobot SO-ARM100 学习笔记(2) diffusion module

对 lerobot 中的 diffusion policy 进行基本的代码阅读

mikhailbran的博客 1588

tcp/ip定时器与滑动窗口原理

tcp 的原理

qq_42301955的博客 647

【K8S系列】Kubernetes 中 Pod 无法通过 Service 名称访问服务的 DNS 解析失败问题【已解决】

在 Kubernetes 中,Service 提供了一种稳定的方式,通过名称访问一组 Pod。当其他 Pod 无法通过 Service 名称访问服务,并且出现 DNS 解析失败时,通常会导致应用无法正常工作。本文将详细分析此问题的常见原因及其解决方案。

颜淡慕潇 1万+

TCP 和 UDP 的区别,TCP/IP模型,TCP定时器,TCP滑动窗口

** 5、 TCP 是如何通过滑动窗口协议实现流量控制和拥塞控制的? ** ** 6、 描述 TCP 和 UDP 的区别? ** TCP:传输控制协议,是一种面向连接的可靠传输协议(三次握手),----在完成了传输层基本工作的基础上还需要保障数据传输的可靠性; (重传,确认,)状态和序列号,以及错误校验(可以查看TCP和UDP的请求头,就会发现两者之间的差距了),其实所谓的TCP三次握手请求连接,无非就是初始化一个序列号,保证后面的数据有序到达,同时TCP还支持重传,错误校验,保证数据的可靠性,当然UDP也

冷鞘-的博客 262

LeRobot — 基于 PyTorch 的真实世界机器人学习框架(一)- 核心框架模块解析

LeRobot 是一个开源的机器人学习框架,由 Hugging Face 开发,旨在降低机器人学的准入门槛。该框架提供完整的机器学习流程支持,包括数据采集、训练、评估和部署。核心模块涵盖数据集标准化、策略算法、硬件抽象和强化学习组件,采用模块化设计实现灵活扩展。通过集成 Hugging Face Hub,用户可以轻松共享数据集和预训练模型。LeRobot 特别注重真实世界的机器人应用,支持多种前沿算法如模仿学习、视觉语言动作模型等,并提供统一的硬件接口和仿真环境适配。

熊猫小妖的AI世界 171

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【TCP/IP知识点总结】

程序员的TCP/IP基础知识

qq_43479628的博客 2183

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

TCP/IP详解学习笔记

 TCP/IP详解学习笔记[http://blog.youkuaiyun.com/goodboy1881/category/204448.aspx?PageNumber=2]TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议     摘要:TCP/IP协议中最核心的IP协议,实际上非常的单纯,只是简单的承载数据,并不保证送达。    ——点击此处阅读全文

visame的专栏 7451

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

TCP/IP协议十八:通俗易懂说网络-滑动窗口机制

通俗易懂说网络-滑动窗口机制1. 定义2. 作用3. 背景4. 分类4.1 1比特滑动窗口/停等协议4.2 后退n协议4.3 选择重传协议5. 参考 1. 定义 滑动窗口机制/协议指的是: 在任意时刻,发送方和接收方都维持了一个允许发送/接收的帧序号,称为滑动窗口。 发送方称为发送窗口,接收方称为接收窗口。 这种机制称为滑动窗口机制/协议。 2. 作用 TCP通过它来进行流量控制。 3. 背景 在...

哈尼的博客 2337

Linux服务器开发,tcp/ip定时器与滑动窗口

推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习 为什么udp有包长,而tcp没有包长。 首先,send()发送一次发送1k,发送一次缓冲区满了就会返回-1。2k发送出去后缓冲区被清空,send()才会被再次调用。最大传输片会打印四个包发送。而最大传输单元是在数据链路层对网卡的一些限制,如果mss大于

sinat_28294665的博客 682

TCP/IP详解---滑动窗口机制及其三种协议

      在介绍滑动窗口之前先来简单介绍一下TCP可靠传输原理中的停止等待协议,该协议就是发送方每发送一个报文段后就停止发送,一直等收到接收方的确认后再发送下一个报文段。   TCP通信是全双工的,这里为了方便理解,就以一个方向为例,假设A为发送方,B为接收方。A会有一个发送窗口,B有一个接收窗口。 发送窗口表示在没有收到B确认的情况下,A也可以连续把发送窗口的数据发送出去。但是已经发送过...

ShWe的博客 1万+

TCP/IP协议——TCP详解

TCP提供面向连接的、可靠的字节流服务。面向连接意味着两个使用TCP的应用(同常一个客户端一个服务器)在彼此交换数据之前必须先建立一个TCP连接。在一个TCP连接中,仅有两方进行通信,广播和多播不能用于TCP。TCP通过以下方式提供可靠性: 1,应用数据被分割成TCP认为最适合发送的数据块。这和UDP完全不同,应用程序产生的数据报长度保持不变。由TCP传给IP的信息单位称为报文段或段。 2,当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。 3

weixin_42853463的博客 4741

知识体系之TCP/IP详解

TCP/IP

JaweG 2488

[TCP/IP] 滑动窗口

什么是滑动窗口? 滑动窗口机制是TCP协议的一种流量控制和防拥塞的机制。 滑动窗口的工作原理? 简单来讲,就是接收方和发送方分别保留一块缓冲区,作为接收和发送数据来使用,发送数据过程中,如果发送方发的快了,处理方处理不过来,缓冲区放不下了,接收方就会通过消息交互告诉发送方,慢点发,等接收方处理完,可接收了,又会通知发送方可以继续发送了,通过这种方式来防止由于双方能力不一致导致的拥塞...

XIEXINGHUA2010的博客 274

TCP/IP协议(五、tcp滑动窗口)

终于来到了TCP的滑动窗口,本来计算第二节就讲滑动窗口,但是每次都是计划赶不上变化,一推再推,所以来到了第5节,不过也不晚,趁早搞懂TCP/IP还是很有用的。

酱油师兄的博客 1251

TCP/IP 详解卷一 - TCP的定时器和拥塞控制

TCP 是提供可靠的传输层,它使用的方法之一就是确认从另一端收到的数据。但是数据和确认都可能会丢失。TCP 通过在发送时设置一个定时器来解决这个问题。如果当定时器溢出时还没收到确认,它就会重传该数据。关键在于超时和重传策略,即怎样决定超时的时间间隔和如何确定重传的频率。         对于每个连接,TCP 管理着四个不同的定时器:重传定时器、坚持定时器、保活定时器 以及  2MSL 定时器。

灯火阑珊处 871
上一篇: 后端开发【一大波有用知识】—Redis,Memcached,Nginx网络组件
下一篇: 后端开发【一大波有用知识】定时器方案红黑树,时间轮,最小堆
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值