当前位置:网站首页>20210520-TCP滑动窗口
20210520-TCP滑动窗口
2022-07-17 00:02:00 【茴薏】
TCP滑动窗口
作用:
1.提供TCP可靠性:对发送的数据进行确认
2.流量控制:窗口大小随链路变化
一、TCP窗口控制
TCP中窗口大小是指tcp协议一次传输多少个数据。因为TCP是一个面向连接的可靠的传输协议,既然是可靠的就需要传输的数据进行确认。TCP窗口机制有两种,一种是固定窗口大小,另一种是滑动窗口。数据在传输时,TCP会对所有数据进行编号,发送方在发送过程中始终保持着一个窗口,只有落在发送窗口内的数据帧才允许被发送;同时接收方也始终保持着一个接受窗口,只有落在窗口内的数据才会被接收。这样通过改变发送窗口和接收窗口的大小就可以实现流量控制。
二、TCP窗口大小
TCP的窗口滑动技术通过动态改变窗口的大小来调节两台主机之间数据传输。每个TCP/IP主机支持全双工数据传输,因此TCP有两个滑动窗口,一个用于接收数据,一个用于发送数据。接收方设备要求窗口大小为0时,表明接收方已经接收了全部数据,或者接收方应用程序没有时间读取数据,要求暂停发送。
TCP在传送数据时,第一次接受方窗口大小是由链路带宽决定的,但是接收方在接收到的数据后,返回ack确认报文,同时也告诉了发送方自己的窗口大小,此时发送方第二次发送数据时,会改变自己的窗口大小和接收方一致。
当窗口过大时,会导致不必要的数据来拥塞我们的链路,但是窗口太小时,会造成很大的延时,比如为1时,发送方每发送一个数据,接收方就会返回一个ack报文,在发送方未接收到接收方的确认报文ack之前不会进行下一次发送。(当链路变好了或者变差了这个窗口还会发生变化,并不是第一次协商好了以后就永远不变了。)【这句话不太理解】
三、窗口滑动
边栏推荐
猜你喜欢
随机推荐
“husky install“ command already exists in prepare script, skipping./Users/982471938qq.com/Desktop
Greenplum 6.x client connection
Go 每日一库之 bitset
【日常训练】剑指 Offer II 041. 滑动窗口的平均值
(零七)Flask有手就行——初识数据库(Flask-SQLAlchemy)
从22顶会看对比学习在推荐的应用
Vite3.0 release
Solve the garbled code when inserting Chinese values in MySQL database
【Gradle】快速配置
PHP上传图片
mysql插入数据会失败?为什么?
12. Integer to Roman numerals ●●
openpyxl 绘制面积图
ROS 通信机制进阶
利用 Redis 的 sorted set 做每周热评的功能
【单例模式】饿汉式、懒汉式、双重锁安全验证
WampServer
The most beautiful yellow flower
面试官:怎么不用定时任务实现关闭订单?
347. The first k high-frequency elements ●●









