当前位置: 首页 > news >正文

找做柜子的网站中国芯片制造最新消息

找做柜子的网站,中国芯片制造最新消息,网络销售网站推广,购物网站商城目录 标志位 拥塞控制 标志位 TCP有六位标志位,分别代表不同的含义 URG:表示紧急指针是否有效,URG的存在是为了让某些数据可以被接收方优先处理,这种数据被称为带外数据(Out-Of-Band Data),而与之相对的…

目录

标志位 

拥塞控制


标志位 

TCP有六位标志位,分别代表不同的含义

URG:表示紧急指针是否有效,URG的存在是为了让某些数据可以被接收方优先处理,这种数据被称为带外数据(Out-Of-Band Data),而与之相对的就是普通的带内数据

带外数据不遵循普通数据的队列顺序,也不受滑动窗口的限制,不像普通数据必须得等待接收到连续的一段数据,带外数据可以插队

URG为1时,紧急指针就指向了紧急数据,紧急数据很多时候都只有一个字节,用来传递某些信息

比如在下载任务中,如果下载到一半向取消,发送的报文就会带有URG标志位,会让服务器优先处理取消请求

Linux中要读取紧急数据,可使用recv接口

#include <sys/types.h>
#include <sys/socket.h>ssize_t recv(int sockfd, void *buf, size_t len, int flags);

将其中的flags标志位设为MSG_OOB,就会读取紧急数据 

ACK:确认号是否有效,指的是下一次应该收到的序列号

PSH:提⽰接收端应⽤程序⽴刻从TCP缓冲区把数据读⾛

TCP 协议中,发送方和接收方通常会使用缓冲区临时存储数据(例如发送方积累一定量数据后再打包发送,接收方缓冲数据后批量提交给应用),以减少网络交互次数、提高传输效率。但在某些场景下(如实时通信、交互式操作),需要数据 “即时处理”,此时 PSH 标志位就会发挥作用:

发送方设置PSH=1,告诉接收方 “本报文中的数据是紧急需要处理的,不需要等待后续数据填充缓冲区,请立即交给应用层”。

接收方收到PSH=1的报文,会立即将当前接收缓冲区中所有已接收的数据(包括本报文的数据)传递给应用程序,而不是等待缓冲区满或超时。

RST:对⽅要求重新建⽴连接; 我们把携带RST标识的称为复位报⽂段

有时服务器会崩溃,操作系统就会向已经建立连接的客户端发送RST包,客户端就能知道连接已经断开,就可以采取应对措施;或者有时三次握手客户端发出的最后一个SYN包没有被服务器接收到,而客户端认为连接已经建立,开始发送数据,服务端却并没有建立连接完成,这时服务器会向客户端发送RST包

SYN: 请求建⽴连接; 我们把携带SYN标识的称为同步报⽂段

FIN: 通知对⽅, 本端要关闭了, 我们称携带FIN标识的为结束报⽂段

拥塞控制

发送数据并不能一开始就发送大量的数据,很可能网络正处于严重的堵塞,此时无异于雪上加霜,为此,TCP引入了慢启动机制,先发送少量数据探明网络整体拥堵情况,再根据具体拥塞情况来调整发送速率

此时也可以意识到,之前对于滑动窗口大小的讨论还不够全面,只考虑了对端的接收情况而没有考虑网络情况

此处引⼊⼀个概念称为拥塞窗⼝,可以认为在一定程度上,发送的数据段数量高于这个值就会引发网络拥塞,拥塞窗口是一个整型变量
发送开始的时候, 定义拥塞窗⼝⼤⼩为1
每次收到⼀个ACK应答, 拥塞窗⼝加1
每次发送数据包的时候, 将拥塞窗⼝和接收端主机反馈的窗⼝⼤⼩做⽐较, 取较⼩的值作为实际发
送的窗⼝,所以拥塞窗口会控制发送窗口的大小,初始是1,只发送一个数据段,收到应答后变为2,这里假设接收端的接收能力强,一直大于拥塞窗口大小,接着会发送两个数据段,在一个RTT(往返时间)内,会收到两个ACK应答,那么拥塞窗口加2,变为了4

从上面可以看出,拥塞窗口会按照指数级别增长,也就是通过这个指数增长,实现了慢启动

而拥塞窗口并不能无限制增大,此处引入慢增长的阈值,拥塞窗口超过这个阈值,就会不再按照指数增长,而是改成线性增长

这个阈值实现方案不同系统可能不同,但初始都是一个比较大的值

上图阈值初始是16,到达16后就是线性增长,然后在拥塞窗口大小为24时,网络拥塞导致了超时重传,将阈值减小,这就导致了超时重传后发送的速度进一步变慢了

所以,一直维护拥塞窗口的大小(尤其是增大)是有意义的,尽管它变大到一定值不再对发送窗口的大小产生影响,但是持续增大他,可以使下次超时重传的阈值更大,使发送速度更加贴合网络的情况

关于阈值具体该怎么变化,可能有不同的算法实现,但是基本思想是一致的

http://www.dtcms.com/a/523555.html

相关文章:

  • 甘肃省临夏州建设局网站wordpress 未分类
  • 用 Excalidraw+cpolar 做会议协作,像素级还原实体白板体验
  • 使用C++开发Android .so库的优势与实践指南
  • Spring AOP:注解配置与XML配置双实战
  • 基于YOLO11深度学习的半导体晶圆外观缺陷检测系统【Python源码+Pyqt5界面+数据集+安装使用教程+训练代码】【附下载链接】
  • 笔记本电脑待机、睡眠与休眠模式的技术差异解析
  • 2025丨时间很快,又来到1024
  • 基于python人脸识别系统 人脸检测 实时检测 深度学习 Dlib库 ResNet深度卷积神经网络 pyqt设计 大数据(源码)✅
  • 【C + +】unordered_set 和 unordered_map 的用法、区别、性能全解析
  • 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-31- 操作日历时间控件-上篇(详细教程)
  • 电子商城网站建设与维护怎么建设淘客自己的网站_
  • 基于 Vue3 + WebSocket 实现的平板控制端与大屏展示端联动方案
  • 提高自己的网站网站 利润
  • 外贸seo软文发布平台上海百度推广优化排名
  • Qt 图像与定时器实战:实现动态图片轮播效果
  • C++ 模板初阶:从函数重载到泛型编程的优雅过渡
  • 第 01 天:Linux 是什么?内核、发行版及其生态系统
  • Docker 安装 MongoDB 完整指南:从入门到实战
  • Docker 离线安装
  • CUDA和cuDNN安装
  • 一篇初识什么是容器,引出 Docker
  • HTML 理论笔记
  • 《Linux系统编程之入门基础》【权限管理】
  • ELK(Elasticsearch + Logstash + Kibana + Filebeat)采集方案
  • 网站建设金手指排名霸屏主机类型wordpress
  • uniapp微信小程序简单表格展示
  • 【html】每日打卡页面
  • Server 15 ,VMware ESXi 实战指南:Ubuntu 20.04.6 版本虚拟机静态 IP 配置、分辨率固定及远程访问实践
  • 吴恩达深度学习课程一:神经网络和深度学习 第三周:浅层神经网络(三)
  • Copilot使用体验