首页 > 其他分享 >TCP滑动窗口(面试)

TCP滑动窗口(面试)

时间:2024-09-09 13:52:04浏览次数:11  
标签:窗口 TCP 发送 面试 大小 滑动 接收

TCP三次握手和四次挥手

TCP滑动窗口是什么?

如果传输的数据比较大,需要拆分为多个数据包进行发送。如果TCP 协议需要收到确认应答后,才可以发送下一个数据包。这样的方法效率偏低
为了避免这种情况,TCP使用了滑动窗口。
滑动窗口用于控制发送方和接收方之间的数据传输
滑动窗口机制允许发送方持续发送数据,不需要等待每个数据段的确认应答。接收方可以根据自身的处理能力和缓冲区空间调整窗口大小,从而控制发送方窗口大小。
窗口大小指的是不需要等待确认应答而可以继续发送数据包的最大值
滑动窗口组成:
发送方维护一个发送窗口,接收方则会维护一个接收窗口。窗口由两个参数定义:窗口的起始字节和窗口的大小
窗口大小指的是不需要等待确认应答而可以继续发送数据包的最大值

滑动窗口的工作原理

  1. 初始化窗口大小。建立TCP连接时,双方协商并初始化参数。其中包括窗口大小和初始的拥塞窗口cwnd大小
  2. 发送窗口滑动:发送方发送一个数据段并收到ACK确认应答后,将发送窗口向前滑动。这样,只要数据在滑动窗口范围内,发送方就可以继续发送新的数据
  3. 接收方更新确认号:接收方根据接收到的报文段的序列号确定已成功接收的字节范围,然后设置确认号设置为下一个期望接收的字节的序列号
  4. 接收方更新、通告接收窗口大小:接收方根据已成功接收的数据字节数和初始窗口大小计算并更新接收窗口的大小。然后,接收方将新的接收窗口大小通告给发送方
  5. 动态调整窗口大小:发送方可以根据接收方通告的窗口大小进行数据发送控制
  6. 流量控制:通过滑动窗口机制,接收方动态调整窗口大小以限制发送方的数据发送速率

滑动窗口组成

发送端的滑动窗口包含四大部分,如下:

  • 已发送且收到 ACK 确认
  • 已发送但未收到 ACK 确认(在发送窗口内)
  • 未发送但可发送(在发送窗口内)
  • 未发送且不可发送
    在这里插入图片描述
    接收方的滑动窗口包含三大部分:
  • 已收到ACK确认
  • 未收到ACK确认,但可以接收的数据(在接收窗口内)
  • 未收到数据并不可以接收的数据
    在这里插入图片描述

TCP协议如何保证可靠性?

TCP主要提供了检验和、超时重传、拥塞控制和流量控制等方法实现了可靠性传输。
检验和:通过检验和的方式,接收端可以检测出来数据是否有差错和异常,假如有差错就会直接丢弃TCP段,重新发送
超时重传:超时重传是指发送数据包到接收确认包之间有时间间隔上限,如果超过了这个时间会被认为是丢包了,需要重传。
拥塞控制:在数据传输过程中,可能由于网络状态的问题,造成网络拥堵,此时引入拥塞控制机制
流量控制:如果主机A 一直向主机B发送数据,不考虑主机B的接受能力,则可能导致主机B的缓冲区满了而无法再接受数据,从而会导致大量的数据丢包。所以引入流量控制机制,主机B通过告诉主机A自己接收缓冲区的大小,来使主机A控制发送的数据量。流量控制与TCP协议报头中的窗口大小有关

标签:窗口,TCP,发送,面试,大小,滑动,接收
From: https://blog.csdn.net/kiku1002149488/article/details/141938570

相关文章

  • 【网络原理】❤️Tcp 连接管理机制❤️ “三次握手” “四次挥手”的深度理解, 面试最热门
    本篇会加入个人的所谓鱼式疯言❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言而是理解过并总结出来通俗易懂的大白话,小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的.......
  • 【网络原理】❤️Tcp 核心机制❤️ 通晓可靠传输的秘密, 保姆式教学, 建议收藏 !!!
    本篇会加入个人的所谓鱼式疯言❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言而是理解过并总结出来通俗易懂的大白话,小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的.......
  • LeetCode 239. 滑动窗口最大值(滑动窗口)
    题目:239.滑动窗口最大值思路:用一个双端队列来保存滑动窗口内的值按大到小排序,时间复杂度0(n)。细节看注释classSolution{public:vector<int>maxSlidingWindow(vector<int>&nums,intk){ //元素值是nums的下标,满足nums值按大到小排序deque<in......
  • 2025秋招NLP算法面试真题(十九)-大模型分布式训练题目
    分布式训练题目1.理论篇1.1训练大语言模型存在问题?计算资源需求**:**训练大型语言模型需要大量的计算资源,包括高端GPU、大量的内存和高速存储器。这可能限制了许多研究人员和组织的训练能力,因为这些资源通常很昂贵。数据需求**:**训练大型语言模型需要大规模的数......
  • 2025秋招NLP算法面试真题(十八)-大模型训练数据格式常见问题
    1.SFT(有监督微调)的数据集格式?对于大语言模型的训练中,SFT(SupervisedFine-Tuning)的数据集格式可以采用以下方式:输入数据:输入数据是一个文本序列,通常是一个句子或者一个段落。每个样本可以是一个字符串或者是一个tokenized的文本序列。标签数据:标签数据是与输入数据对应的......
  • 2025秋招计算机视觉面试题(十二) -理清深度学习优化函数发展脉络
    问题深度学习中有很多优化函数,常见的那些你还记得它的定义以及优缺点吗?背景知识深度学习网络训练中,有很多可供选择的优化函数如SGD、Adam等等,到底用哪个好呢?其实这个问题没有确切的答案,优化函数是需要配合损失函数使用的,说白了,优化函数也是一种超参数,是需要尝试的,哪个效......
  • 嵌入式学习路线+嵌入式校招建议 嵌入式学习面试规划
    随着物联网、人工智能以及5G等技术的迅猛发展,嵌入式系统的需求逐渐增多。作为毕业生,如何制定一个合理的学习路线,以确保在找工作、参加校招时有足够的竞争力,是非常重要的。我会为你提供一个更加详细、系统的学习路线建议,帮助你避免迷失方向。一、初级阶段——基础入门目标......
  • 腾讯面试:说说6大Nginx负载均衡?手写一下权重轮询策略?
    文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完成职业升级,薪......
  • 算法题笔记-滑动窗口
    referdocleetcode对应题目:3.无重复字符的最长子串438.找到字符串中所有字母异位词解题模板://外层循环扩展右边界,内层循环扩展左边界for(intl=0,r=0;r<n;r++){ //当前考虑的元素 while(l<=r&&check()){//扩展左边界 //触发条件,改变滑动......
  • 某小厂Java开发岗面试复盘
    目录一:list和set区别二:HashSet是如何保证元素不重复三:HashMap是线程安全的吗?为什么 线程不安全四:HashMap的扩容机制 五:HashMap在1.7和1.8有啥区别六:对象的四种引用 七:获取反射的三种方法八:Arrays.sort和 Collections.sort的实现原理和区别九:数组在内存中是如何分......