计算机网络-传输层 TCP协议(下)

目录

TCP核心机制五:流量控制

TCP核心机制六:拥塞控制

TCP核心机制七:延迟应答

TCP核心机制八:捎带应答

TCP核心机制九:面向字节流

粘包问题

TCP核心机制十:异常处理

(1)进程崩溃

(2)主机关机(正常流程的关机)

(3)主机掉电(拔电源)

(4)网线断开

总结

TCP/UDP 对比


TCP核心机制五:流量控制

接收端处理数据的速度是有限的. 如果发送端发的太快, 导致接收端的缓冲区被打满, 这个时候如果发送端继续发送, 就会造成丢包, 继⽽引起丢包重传等等⼀系列连锁反应.如下图:

因此TCP⽀持根据接收端的处理能⼒, 来决定发送端的发送速度. 这个机制就叫做流量控制(Flow Control);

ACK不能携带应用数据,那这个数据怎么反馈给发送方呢?

回忆我们的TCP⾸部中, 有⼀个16位窗⼝字段, 就是存放了窗⼝⼤⼩信息;

那么问题来了, 16位数字最⼤表⽰65535(64KB), 那么TCP窗⼝最⼤就是65535字节么?

不是的.选项中,可以设置一个特殊的选项“窗口扩展因子”,发送方的窗口大小=

窗口大小<<窗口扩展因子。实际窗⼝⼤⼩是 窗⼝字段的值左移 M 位;

流量控制,也不是TCP独有的机制.其他的协议,也可能会涉及到流量控制(比如,数据链路层中有的协议,也支持流量控制)

TCP核心机制六:拥塞控制

虽然TCP有了滑动窗⼝这个⼤杀器, 能够⾼效可靠的发送⼤量的数据. 但是如果在刚开始阶段就发送⼤量的数据, 仍然可能引发问题.

因为⽹络上有很多的计算机, 可能当前的⽹络状态就已经⽐较拥堵. 在不清楚当前⽹络状态下, 贸然发送⼤量的数据, 是很有可能引起雪上加霜的.

TCP引⼊ 慢启动 机制, 先发少量的数据, 探探路, 摸清当前的⽹络拥堵状态, 再决定按照多⼤的速度传输数据;




下面介绍拥塞控制中,窗口大小具体的变化过程......

TCP核心机制七:延迟应答


TCP核心机制八:捎带应答


延时应答,梢带应答,都是TCP提升性能的机制~~
TCP之所以复杂,不仅仅在考虑可靠传输,要在可靠传输的基础上,尽可能提高效率~~

TCP核心机制九:面向字节流

粘包问题

TCP核心机制十:异常处理

(1)进程崩溃

Java中的体现,就是抛出异常,但是没人catch,最终异常到了JVM这里,JVM进程就会直接嘎了~
看起来是崩溃,挺严重,实际上操作系统会进行善后.当进程崩溃的时候进程中的PCB就要被回收=>PCB中的文件描述符表里对应的所有文件,也都会被系统自动关闭
其中针对socket文件,也就会触发正常的关闭流程(TCP四次挥手)

(2)主机关机(正常流程的关机)

(3)主机掉电(拔电源)

(4)网线断开

总结

这十个只是咱们讲到的十个重要机制,不是TCP一共只有十个机制!
TCP更多机制的详情,rfc标准文档https://www.ietf.org/rfc/rfc9293.html
简历上干万不能出现"熟练掌握TCP十大特性"这样的说法~~
可以写熟悉TCP协议的常见特性~~

回到TCP报头结构还有几个属性没讲到......

URG: 紧急指针是否有效

URG是和紧急指针配合使用的,为1时紧急指针能够生效
紧急指针里保存的是一个偏移量~~
TCP正常情况来说,都是按照顺序来传输数据~~
紧急指针,就是让后面的数据插队,根据紧急指针的偏移量,把指定位置的数据,优先发送出去

特殊场景的特殊方案.不是一个通用的方案.日常开发中很少直接涉及到~~

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

PSH催促标志位,带有这个标志位的数据,就相当于提醒接收方,要尽快的来处理这个数据
(也是特殊场景下的特殊方案)

TCP/UDP 对比

我们说了TCP是可靠连接, 那么是不是TCP⼀定就优于UDP呢? TCP和UDP之间的优点和缺点, 不能简单, 绝对的进⾏⽐较

• TCP⽤于可靠传输的情况, 应⽤于⽂件传输, 重要状态更新等场景;

• UDP⽤于对⾼速传输和实时性要求较⾼的通信领域, 例如, 早期的QQ, 视频传输等. 另外UDP可以⽤ 于⼴播;

归根结底, TCP和UDP都是程序员的⼯具, 什么时机⽤, 具体怎么⽤, 还是要根据具体的需求场景去判定.

⽤UDP实现可靠传输(经典⾯试题)

参考TCP的可靠性机制, 在应⽤层实现类似的逻辑; 例如:

• 引⼊序列号, 保证数据顺序;

• 引⼊确认应答, 确保对端收到了数据;

• 引⼊超时重传, 如果隔⼀段时间没有应答, 就重发数据;

• ......

编写应用层代码的时候,首先引入确认应答,接收方返回ack,
为了能够区分ck应答谁,引入序号和确认序号,约定确认序号的规则…
考虑丢包的情况,引入超时重传…
为了进一步提高传输效率,引入滑动窗口,引入快速重传
为了限制滑动窗口,引入流量控制/拥塞控制…
把TCP的这些机制都吹出来就行了~~

TCP协议上半部分内容在上篇文章计算机网络-传输层 TCP协议(上)-CSDN博客

至此TCP协议的全部内容就介绍完啦*★,°*:.☆( ̄▽ ̄)/$:*.°★* 😊。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/937278.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【游戏设计原理】10 - 科斯特的游戏理论

科斯特的游戏理论强调了游戏与学习之间的关系&#xff0c;认为“玩得开心”与“学习”是紧密相连的。换句话说&#xff0c;游戏的核心魅力在于通过适当的挑战和不断的学习进程激发玩家的内啡肽循环&#xff0c;这让玩家在不断的探索和进步中找到乐趣。 科斯特的理论通过游戏是…

【Android学习】RxJava

文章目录 资料连接1. Merge & Zip操作符: 合并数据源2. Map & FlapMap & ConcatMap & Buffer: 变换操作符3. retry & retryUntil & retryWhen : 错误处理操作符4. Transformer & Compose 转换符 资料连接 Android RxJava&#xff1a; 这是一份全面…

数据结构初阶---二叉树---堆

一、树 1.树的概念 树是一种非线性的数据结构&#xff0c;由n(n≥0)个有限结点组成的一个有层次关系的集合。形状类似一棵倒挂的树&#xff0c;根朝上&#xff0c;分支向下。 根结点没有前驱结点&#xff0c;可以有n(n≥0)个后继结点。 其余结点被分为M个互不相交的集合&am…

高等动力学中的正则变换

1 正则变化的定义 在相空间中&#xff0c;如果以时间t为参数的坐标变换 使得满足哈密顿正则方程 的动力变量 和 变成满足新的正则方程 的新的动力变量 和 &#xff0c;则称该变换为正则变换。 该变换可逆的条件&#xff1a;雅可比行列式值不等于零 正则变换的充要条件&#…

在线图片格式转换器 - 加菲工具

图片格式转换器-加菲工具 支持JPG\JPGE\PNG\ICO\BMP之间相互转换。 打开加菲工具或者直接打开 https://www.orcc.online/tools/image 选择“图片格式转换器” 上传图片&#xff0c;选择目标格式 转换完成

python web练习案例:基于表单类的商品管理(修改并删除商品信息)

目录 1、修改商品信息 &#xff08;1&#xff09;修改show.html页面&#xff0c;增加 修改 栏 &#xff08;2&#xff09;创建 update.html 网页&#xff0c;继承 add.html 模板 &#xff08;3&#xff09;定义视图函数 &#xff08;4&#xff09;定义路由 (5) 浏览器查看 …

【容器】k8s学习笔记基础部分(三万字超详细)

概念 应用部署方式演变 在部署应用程序的方式上&#xff0c;主要经历了三个时代&#xff1a; 传统部署&#xff1a;互联网早期&#xff0c;会直接将应用程序部署在物理机上 优点&#xff1a;简单&#xff0c;不需要其它技术的参与 缺点&#xff1a;不能为应用程序定义资源使…

数据结构速成

1. 数据结构与算法 2. 顺序表 3. 链表 4. 栈与队列 5. 串 6. 树与二叉树&#xff08;1&#xff09; 7. 树与二叉树&#xff08;2&#xff09; 8. 图 9. 图的应用 10. 查找 11. 排序&#xff08;1&#xff09; 12. 排序&#xff08;2&#xff09;

算法题(5):求和

审题&#xff1a; 首先我们需要对这个式子先整理一下。 整理后可以知道 我们发现ai乘的那一串数字逐渐减少&#xff0c;而每次减少的就是ai。 思路&#xff1a; 获取数据&#xff1a;用n获取数据个数-》确定获取数据的循环次数 用数组a存储数据 用sum获录入数据之和 用num存储最…

el-table 动态计算合并行

原始表格及代码 <el-table:data"tableData"class"myTable"header-row-class-name"tableHead" ><el-table-column prop"date" label"日期"> </el-table-column><el-table-column prop"name" …

深圳国威HB1910数字IP程控交换机 generate.php 远程命令执行漏洞复现

0x01 产品描述: 深圳国威主营国威模拟、数字、IP 交换机、语音网关、IP 电话机及各种电话机。深圳国威电子有限公司HB1910是一款功能强大的网络通信设备,适用于各种企业通信需求。 0x02 漏洞描述: 深圳国威电子有限公司HB1910数字IP程控交换机generate.php存在远程命令执行…

数据结构(链表)JAVA方法的介绍

注意&#xff1a; 1.我们从上图中可以看出链表LinkedList继承于List接口&#xff1a; 如果不懂List接口的朋友们可以先看我上期作品了解一下List接口 数据结构&#xff08;顺序表&#xff09;JAVA方法的介绍-CSDN博客 2.本期注重讲解Java中LinkedList链表中个方法的使用&am…

UE5中实现Billboard公告板渲染

公告板&#xff08;Billboard&#xff09;通常指永远面向摄像机的面片&#xff0c;游戏中许多技术都基于公告板&#xff0c;例如提示拾取图标、敌人血槽信息等&#xff0c;本文将使用UE5和材质节点制作一个公告板。 Gif效果&#xff1a; 网格效果&#xff1a; 1.思路 通过…

文件包含 0 1学习

漏洞原理 成因 文件包含漏洞是一个最常见的依赖与脚本运行而影响Web应用程序的漏洞.当应用程序使用攻击者控制的变量建立一个可执行代码的路径,允许攻击者控制在运行时执行哪个文件时,就会导致文件包含漏洞.程序开发人员通常会把可重复使用的函数写入单文件中,在使用这些函数…

docker login 出错 Error response from daemon

在自己的Linux服务器尝试登陆docker出错 输入完用户密码之后错误如下&#xff1a; 解决方案 1.打开daemo文件&#xff1a; vim/etc/docker/daemon.json 2.常用的国内Docker 镜像源地址 网易云 Docker 镜像&#xff1a;http://hub-mirror.c.163.com 百度云 Docker 镜像&#x…

专业140+总分410+浙江大学842信号系统与数字电路考研经验浙大电子信息与通信工程,真题,大纲,参考书。

考研落幕&#xff0c;本人本中游211&#xff0c;如愿以偿考入浙江大学&#xff0c;专业课842信号系统与数字电路140&#xff0c;总分410&#xff0c;和考前多次模考预期差距不大&#xff08;建议大家平时做好定期模考测试&#xff0c;直接从实战分数中&#xff0c;找到复习的脉…

【html网页页面012】html+css制作品牌主题宏宝莱网页含视频、留言表单(7页面附效果及源码)

品牌主题宏宝莱网页制作 &#x1f964;1、写在前面&#x1f367;2、涉及知识&#x1f333;3、网页效果完整效果(7页)&#xff1a;代码目录结构&#xff1a;page1、首页page2、衍生品page3、包装设计page4、视频介绍page5、留言板page6、联系我们page7、详情页&#xff08;三层页…

Unity 获取鼠标点击位置物体贴图颜色

实现 Ray ray Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out RaycastHit hit)) {textureCoord hit.textureCoord;textureCoord.x * textureMat.width;textureCoord.y * textureMat.height;textureColor textureMat.GetPixel(Mathf.Flo…

游戏引擎学习第50天

仓库: https://gitee.com/mrxiao_com/2d_game Minkowski 这个算法有点懵逼 回顾 基本上&#xff0c;现在我们所处的阶段是&#xff0c;回顾最初的代码&#xff0c;我们正在讨论我们希望在引擎中实现的所有功能。我们正在做的版本是初步的、粗略的版本&#xff0c;涵盖我们认…

Mac备忘录表格中换行(`Option` + `Return`(回车键))

在Mac的ARM架构设备上&#xff0c;如果你使用的是Apple的原生“备忘录”应用来创建表格&#xff0c;换行操作可以通过以下步骤来实现&#xff1a; 在单元格中换行&#xff1a; 双击你想要编辑的单元格你可以输入文本&#xff0c;按Option&#xff08;⌥&#xff09; Enter来插…