HCIP--2 TCP有关笔记

学习目标:

  • 目录

    学习目标:

    学习内容:

    TCP协议

    七层结构

    END..........

    问题:TCP/IP 的四层协议

    问题:网络的七层结构及其作用

    问题:协议名称是什么?

    TELNET---远程登陆系统

    HTTP---超文本传输协议

    HTTPS----超文本传输安全协议

    FTP---文件传输协议

    SMTP ---电子邮件传输

    ‌DNS---域名系统

    DHCP---动态主机配置协议

    POP3---邮件接收协议

    END..........

    问题:TCP选项有哪些?

    TCP可靠性(确认机制是TCP保障可靠性的核心)

    排序机制---MSS,MTU

      确认机制

    累积确认机制

    SACK机制---选择确认机制

    问题:如何提高网络利用率

    延迟确认应答机制

    捎带应答

    重传机制

    超时间隔加倍机制

    快速重传机制

    问题:说说TCP 流量控制?---”窗口值“是TCP实现流控的核心参数,真正的流量控制是由窗口关闭机制实现的

    问题.1:说说TCP 滑动窗口

    问题.2:说说TCP 滑动窗口

    窗口关闭

    窗口扩大因子

    TCP的拥塞控制机制

     拥塞

    慢启动---增加一倍MSS的大小,超时,上一次门限值的一半

    拥塞避免---只增加一个MSS,窗口大小≥门限值

    快速恢复---三次冗余ACK

    学习时间:

    学习产出:


学习内容:

TCP协议

  • 是一种面向连接的可靠传输协议

面向连接:指的是数据传输之前,收发双方需要先建立一条逻辑通路。

无面向连接:指的是数据可以自由传输,无需建立逻辑通路。

TCP是在不可靠的IP层之上,实现可靠的数据传输能力。数据有序、无丢失、不重复

  • TCP提供全双工通信

        发送缓存 :

  •        存放发送应用程序传输给发送方TCP准备发送的数据。
    • 存放TCP已发送但是尚未收到确认的数据。

        接收缓存 :

  • 按序到达的数据
  • 按序到达,但未被应用程序接收的数据

  • TCP是面向字节流的。

四元组:源IP、源端口、目IP、目端口。四元组是用来建立一个完整的TCP连接。
套接字:IP+端口

七层结构

网络的七层结构及其作用

自上而下是:

应用层(数据):确定进程之间通信的性质以满足用户需要以及提供网络与用户应用

表示层(数据):主要解决用户信息的语法表示问题,如加密解密

会话层(数据):提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制,如服务器验证 用户登录便是由会话层完成的

传输层(段):实现网络不同主机上用户进程之间的数据通信,可靠 与不可靠的传输,传输层的错误检测,流量控制等

网络层(包):提供逻辑地址(IP)、选路,数据从源端到目的端的 传输---分组转发,路由寻址

数据链路层(帧):将上层数据封装成帧,用MAC地址访问媒介,错误检测与修正

物理层(比特流):设备之间比特流的传输,物理接口,电气特性等

END..........

问题:TCP/IP 的四层协议

————应用层,传输层,网际层 ,网络接口层

问题:网络的七层结构及其作用

问题:协议名称是什么?

TELNET---远程登陆系统

HTTP---超文本传输协议

HTTPS----超文本传输安全协议

FTP---文件传输协议

SMTP ---电子邮件传输

DNS---域名系统

DHCP---动态主机配置协议

POP3---邮件接收协议

END..........

问题:TCP选项有哪些?

TCP可靠性(确认机制是TCP保障可靠性的核心)

确认、重传、排序、流控。

  • 排序-->确认
  • 累积确认机制---(TCP的确认)
  • SACK机制---选择确认机制(协商)
  • 延迟确认应答机制

排序机制---MSS,MTU

最大字节数由MSS控制。该参数是需要在TCP连接握手的过程中,通过前两次SYN报文段来进行参数 协商。

如果双方的MSS数值不同,则选择数值较小的作为传输标准。

MSS受到MTU的限制。

MTU:最大传输单元,指的是数据链路层在封装成时所允许携带的最大数据量,在以太网当中, MTU数值为1500字节。

MSS:数据中携带的数据字节数。

MSS===MTU-IP首部-TCP首部

通过序列号字段,保证分段的有序性。将根据序列号的大小,将乱序的报文段进行重组。

  确认机制

是TCP保障可靠性的核心点。

TCP协议保证对方能够收到本端发送的数据段的方式,就是让对方回复一个确认报文段。这是确认 机制的做法。

确认报文是唯一一种不需要被确认的数据段信息

累积确认机制

TCP的确认是累积确认机制,正确接收失序的报文段是不会被接收方逐个确认的。因此,发送方在
重传的时候,需要将冗余ACK报文及之后的报文段都重新发送一遍。----导致资源浪费。

SACK机制---选择确认机制

TCP在可选项字段中,添加了一个变量。该变量中携带的就是自己已经收到的数据信息

选择确认机制,不是所有运行TCP协议的设备都支持的。该机制会在TCP三次握手的前两次SYN报文中进行协商。

问题:如何提高网络利用率

延迟确认应答机制

收到数据以后不立即返回确认报文,而是延迟一段时间。

  • 在没有收到2*MSS的数据为止,不做确认应答。
  • 其他情况,最大延迟0.5秒发送确认应答。

捎带应答

TCP的确认应答和回执数据可以通过一个数据包进行发送。

延迟确认机制和捎带应答一般共同使用

确认报文丢失不会触发重传机制---窗口关闭,死锁


重传机制

  • 超时间隔加倍机制---(RTT/RTO)
  • 快速重传机制---(失序报文,以数据包为驱动)

RTT/RTO
超时重传----当超过一定时间未收到确认报文,则触发重传机制。


超时重传的判断时间依据RTT(往返时间)参数来判断。RTO被称为超时重传时间。


RTT---指的是发送端将数据发出后,到他接收到对端反馈的确认报文之间的这段时间。


RTO取值应该略大于RTT,但是也不能太大。RTT并非是固定数值,他是动态变化的数值。

超时间隔加倍机制

超时间隔加倍机制。当连续多次未收到确认报文,设备会认为是网络拥塞过大,将重传时间加倍,
因为如果按照原本的重传时间发送报文,很可能造成网络拥塞的加剧。


快速重传机制

在TCP中,发送方可以通过接收方的反馈,在超时时间到达前,意识到数据包丢失的现象,并进行
重传。这种情况一般出现在接收端收到一个失序报文的情况下。


快速重传机制不是因为RTO时间到达而触发,这种重传机制是以数据包为驱动的一种重传机制。


当接收方意识到自己所期望的报文段丢失,服务器不能调取失序报文,并且不能确认这些报文信
息。


因为TCP协议无法直接发送一个否认确认报文(没有办法直接发送一个数据报文段,告诉对端自己
哪个报文没有收到),所以,TCP将采用冗余ACK的方式来完成缺失报文通告。


问题:说说TCP 流量控制?---”窗口值“是TCP实现流控的核心参数,真正的流量控制是由窗口关闭机制实现的

————回答:                                                               

问题:说说TCP 流量控制?

流量控制是为了控制发送方发送速率,保证接收方来得及接收。

 流量控制是为了让接收方能够来得及接收,而拥塞控制是为了降低整个网络的堵塞程度。

接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小

从而影响发送方的发送速率。将窗 口字段设置为 0,则发送方不能发送数据。

实际上,为了避免此问题的产生,发送端主机会时不时的发送一个叫做窗口探测的数据段,此数据段仅 包含一个字节来获取最新的窗口大小信息

TCP的流量控制机制
        是属于TCP的传输效率问题。


问题.1:说说TCP 滑动窗口

————回答:                                                               + .2                        

        TCP头部中的”窗口值“是TCP实现流控的核心参数。

       窗口的大小是可以指定的,该参数的大小指的是无需等待确认应答,而可以继续发送数据包的最大量。


        窗口的大小,其实体现的就是接收缓存区的大小


        TCP要求发送方依据对方的接收窗口(rwnd)来控制数据的发送量。

        最初,TCP的接口窗口===接收缓存区大小。接口窗口会随着时间的增长而动态变化。

问题.2:说说TCP 滑动窗口

问题:说说TCP 滑动窗口

窗口是缓存的一部分,用来暂时存放字节流。发送方和接收方各有一个窗口,接收方通过 TCP 报文段中 的窗口字段告诉发送方自己的窗口大小,发送方根据这个值和其它信息设置自己的窗口大小。

发送窗口内的字节都允许被发送,接收窗口内的字节都允许被接收。如果发送窗口左部的字节已经发送 并且收到了确认,那么就将发送窗口向右滑动一定距离,直到左部第一个字节不是已发送并且已确认的状态;接收窗口的滑动类似,接收窗口左部字节已经发送确认并交付主机,就向右滑动接收窗口。

接收窗口只会对窗口内最后一个按序到达的字节进行确认,例如接收窗口已经收到的字节为 {31, 34, 35},其中 {31} 按序到达,而 {34, 35} 就不是,因此只对字节 31 进行确认。发送方得到一个字节的确 认之后,就知道这个字节之前的所有字节都已经被接收。

窗口关闭


        窗口的大小接收端根据自己的缓存空间的剩余量来决定的一个动态变化的数值,那么这个剩余量就有归0的可能性。也就代表此时接收方所有缓存空间均已占用并且没能及时处理里面的资源。
        所以,当接收方反馈窗口值为0时,那其实就是在通知发送方,别再发送数据,处理不过来。


        该机制存在风险:接收方通过确认ACK报文来通知发送方自己的窗口大小。理论上,如果接收方将自己的缓存里的数据清空后,将反馈一个窗口值非0的报文来通知对端,可以继续发送数据了。但是如果这个非0的ACK报文在重传过程中丢失。----会引发风险,因为确认报文丢失不会触发重传机制。所以,客户端依然处于窗口关闭状态,不会发送数据,在等待服务器的响应。而服务器也在等待客户端发送数据。此时,两者进入到死锁状态。


解决方式:客户端周期性发送窗口探测报文,该报文只包含TCP首部信息。通过触发TCP确认机制,来让服务端发送确认报文,从而告知客户端,此时的窗口大小。打破死锁现象。


窗口大小仅仅是实现了将TCP数据传输的效率提高(不需要确认);但是并没有看到所谓的流量控
制,而真正的流量控制是由窗口关闭机制实现的。


窗口扩大因子


        TCP选项字段中的窗口扩大因子,可以解决首部中窗口值过小的问题。因为首部中窗口值大小仅为16bit,最大值为65536。


        窗口扩大因子占据3字节大小。取值仅为0-14。是用来将TCP的窗口的值左移的位数,使得原本的窗口值加倍。


        窗口扩大因子,只能出现在同步报文段中,否则将被忽略。

 流量控制是为了让接收方能够来得及接收,而拥塞控制是为了降低整个网络的堵塞程度。


TCP的拥塞控制机制

 流量控制是为了让接收方能够来得及接收,而拥塞控制是为了降低整个网络的堵塞程度。

拥塞控制算法--->慢启动,拥塞避免,快速恢复。

  • 慢启动---增加一倍MSS的大小,超时,上一次门限值的一半
  • 拥塞避免---只增加一个MSS,窗口大小≥门限值
  • 快速恢复---三次冗余ACK

 

假设,最开始传输数据时,慢启动门限为16
1、通过慢启动算法,逐步增加窗口大小
2、当窗口大小≥门限值,则切换为拥塞避免算法
3、当网络中出现拥塞情况后,因为确认报文超时而判断的拥塞--->被称为快重传
3.1、此时将慢启动门限值设定为上一次门限值的一半,此时为8
3.2、将窗口大小设定为1
4、此时重新启动慢启动算法,重复之前过程
5、如果拥塞是因为三次冗余ACK而判断--->快恢复
5.1、将慢启动门限值设定为上一次门限值的一半
5.2、将窗口大小设定为此时的门限值,直接开始使用拥塞避免算法进行扩大窗口 

发送方,发出未收到确认的报文的字节数,必须小于或等于拥塞窗口和接收窗口的最小值

 拥塞

中间链路的处理能力--->拥塞控制机制

  • 网络中对资源需求量超过了资源的可用量的情况,被称为拥塞。
  • 如果出现了拥塞情况。--->分组丢失。重传--->网络的拥塞情况加剧。 

TCP如何判断此时网络环境出现拥塞
TCP将连接中出现的丢包行为,视为拥塞的表现。

  • 一种是数据包确认超时
  • 收到来自接收方发送的三个冗余ACK报文

自计时。--->通过收到的确认报文来增加拥塞窗口

(TCP如何来控制数据的发送量

拥塞窗口--->跟接收窗口一样,都可以对发送的字节数大小进行限制。)

自计时:拥塞窗口的数值是依靠TCP拥塞控制算法得出。TCP是在保证能够支持的最大传输效率的情况下,来保证没有拥塞发生。

慢启动---增加一倍MSS的大小,超时,上一次门限值的一半

慢启动--->通常在开始传输数据时,拥塞窗口会被设置的很小。一般等于一个MSS数值。即一次只能发送一个数据报文段。
        每收到一个新的ACK确认报文,就会增加一倍MSS的大小。
        TCP会设定一个慢启动门限来评判。评判是否要停止慢启动的机制。
                当拥塞窗口<门限,继续使用慢启动算法
                当拥塞窗口>门限,此时将慢启动算法切换为拥塞避免算法。
                当拥塞窗口=门限,两者均可使用。


拥塞避免---只增加一个MSS,窗口大小≥门限值


        在一个RTT时间线内,拥塞窗口只增加一个MSS。
        拥塞避免算法,不是说直接避免拥塞,而是通过降低窗口的增大速率而使得网络不容易出现拥塞。


快速恢复---三次冗余ACK


        如果网络中没有发生拥塞,那么拥塞窗口就会无时无刻的增长下去。
        但是如果出现了拥塞,那么这个增长必须停止。


学习时间:

学习时间为学习时间


学习产出:

  • 技术笔记 1遍
  • 有错误请指出,作者会及时改正

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【优先算法】双指针

✨✨欢迎大家来到Celia的博客✨✨ &#x1f389;&#x1f389;创作不易&#xff0c;请点赞关注&#xff0c;多多支持哦&#x1f389;&#x1f389; 所属专栏&#xff1a;优先算法 个人主页&#xff1a;Celias blog~ 目录 ​​​​​​移动零 复写零 快乐数 盛水最多的容器 …

Apache配置案例二:基于域名的虚拟主机搭建

文章目录 前言一、任务要求&#xff1a;二、任务分析&#xff1a;二、任务步骤&#xff1a;总结 前言 基于域名的虚拟主机搭建&#xff0c;涉及诸多知识点&#xff0c;一是域名服务器的搭建配置&#xff0c;前面的博文《图示详解OpenEuler下 DNS安装、配置与测试》、《图示详解…

如何选择适合自己的 Python IDE

集成开发环境&#xff08;IDE&#xff09;是指提供广泛软件开发能力的软件应用程序。IDE 通常包括源代码编辑器、构建自动化工具和调试器。大多数现代 IDE 都配备了智能代码补全功能。在本文中&#xff0c;你将发现目前市场上最好的 Python IDE。 什么是 IDE&#xff1f; IDE…

开源项目-投票管理系统

哈喽&#xff0c;大家好&#xff0c;今天主要给大家带来一个开源项目-投票管理系统 投票管理系统主要有首页&#xff0c;发起投票&#xff0c;管理投票&#xff0c;参与投票&#xff0c;查看投票等功能 首页 为用户提供了一键导航到各个功能模块的便捷途径。 新增投票 用户…

OpenSSL

OpenSSL 概述 OpenSSL 是一个开源的、安全传输协议实现工具&#xff0c;广泛应用于数据加密与解密、证书生成与管理以及其他安全性相关的任务。在现代网络安全中&#xff0c;OpenSSL 被用于构建和维护 SSL/TLS 通信&#xff0c;确保数据在传输过程中的机密性和完整性。 简单来…

ApsaraMQ Serverless 能力再升级,事件驱动架构赋能 AI 应用

本文整理于 2024 年云栖大会阿里云智能集团高级技术专家金吉祥&#xff08;牟羽&#xff09;带来的主题演讲《ApsaraMQ Serverless 能力再升级&#xff0c;事件驱动架构赋能 AI 应用》 云消息队列 ApsaraMQ 全系列产品 Serverless 化&#xff0c;支持按量付费、自适应弹性、跨可…

fmql之Linux以太网

正点原子第57章。 dts fmql-dtsi&#xff1a; 我们用的PHY芯片是RTL8211F&#xff1a; 需要添加PHY信息&#xff1a; fmql-dtsi提供的参考&#xff1a; 根据vivado工程自动生成的&#xff1a; reg <0x1>; 配置 疑问 网口通讯需要网线&#xff0c;但是目前板卡上只有PS…

Java面试经典 150 题.P26. 删除有序数组中的重复项(003)

本题来自&#xff1a;力扣-面试经典 150 题 面试经典 150 题 - 学习计划 - 力扣&#xff08;LeetCode&#xff09;全球极客挚爱的技术成长平台https://leetcode.cn/studyplan/top-interview-150/ 题解&#xff1a; class Solution {public int removeDuplicates(int[] nums) …

在 Elasticsearch 中顺利管理季节性时间变化

作者&#xff1a;来自 Elastic Valeriy Khakhutskyy, James Gowdy 用于 Elasticsearch 异常检测的新夏令时日历。 每年春季和秋季两次&#xff0c;许多国家/地区都会调整时钟以更好地利用日光。这些时钟调整不仅会带来时差和 “困倦的星期一” 的感觉&#xff0c;还会带来来自…

Qt——信号和槽

一.信号和槽概述 谈及信号&#xff0c;很容易联想到在Linux系统中所分享到的信号。那么Linux信号和Qt信息有什么不同&#xff1f; 在 Qt 中&#xff0c;用户和控件的每次交互过程称为⼀个事件。比如 "用户点击按钮" 是⼀个事件&#xff0c;"用户关 闭窗口&quo…

必胜客万圣节“邪恶鬼手披萨”,品牌营销的“鬼”才之作!

在万圣节的神秘氛围下&#xff0c;各大品牌纷纷推出创意营销活动&#xff0c;试图在这个充满奇幻色彩的节日里捕获消费者的心。其中&#xff0c;必胜客推出的“邪恶鬼手披萨”无疑是一次令人拍案叫绝的品牌营销“鬼”才之作&#xff0c;它不仅巧妙地融合了节日元素&#xff0c;…

3D Gaussian Splatting代码详解(一):模型训练、数据加载

1 模型训练 def training(dataset, opt, pipe, testing_iterations, saving_iterations, checkpoint_iterations, checkpoint, debug_from):first_iter 0# 初始化高斯模型&#xff0c;用于表示场景中的每个点的3D高斯分布gaussians GaussianModel(dataset.sh_degree)# 初始化…

[MySQL#6] 表的CRUD (1) | Create | Retrieve(查) | where

目录 1. 插入 1.1 单行数据 - 全列插入 指定列插入 1.2 多行数据 - 全列插入 指定列插入 1.3 更新 1.4 替换 2. 查找 2.1 select 列 2.2 where 条件 具体案例 2.3 结果排序 总结关键字执行顺序 2.4 筛选分页结果 CRUD : Create(创建)&#xff0c;Retrieve(读取)&…

[机器学习]集成学习

1 集成学习 强强联合、弱弱变强Bagging&#xff08;平权投票&#xff09;&#xff1a;随机森林Boosting&#xff08;加权投票&#xff09;&#xff1a;Adaboost、GBDT、XGBoost、LightGBM 2 随机森林 3 Adaboost 放大错误数据&#xff0c;缩小正确数据

第三十三篇:TCP协议如何避免/减少网络拥塞,TCP系列八

一、流量控制 一般来说&#xff0c;我们总是希望数据传输得更快一些&#xff0c;但是如果发送方把数据发送得太快&#xff0c;接收方可能来不及接收&#xff0c;造成数据的丢失&#xff0c;数据重发&#xff0c;造成网络资源的浪费甚至网络拥塞。所谓的流量控制&#xff08;fl…

在Excel中如何快速筛选非特定颜色

Excel中的自动筛选是个非常强大的工具&#xff0c;不仅可以筛选内容&#xff0c;而且可以筛选颜色&#xff0c;例如筛选A列红色单元格。但是有时希望筛选除了红色之外的单元格&#xff08;下图右侧所示&#xff09;&#xff0c;其他单元格的填充色不固定&#xff0c;有几种颜色…

数据结构---链表(一)【不带头单向非循环】

文章目录 链表概念链表的使用LinkedList 的几种遍历方式单链表的模拟实现&#xff08;不带头&#xff09;链表面试题 观察ArrayList 顺序表的源码发现&#xff0c;底层是使用数组实现的。由于其底层是一段连续空间&#xff0c;当在ArrayList任意位置插入或者删除元素时&#xf…

Pytorch(一)

一.PyTorch环境配置及安装 1.1 工具安装 1.1.1 Anaconda下载 清华大学镜像站下载&#xff0c;版本为Anaconda3-5.2.0-Windows-x86_64&#xff08;对应python3.6.5&#xff09; Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 1.1.2…

关于我的数据结构与算法——初阶第二篇(排序)

&#xff08;叠甲&#xff1a;如有侵权请联系&#xff0c;内容都是自己学习的总结&#xff0c;一定不全面&#xff0c;仅当互相交流&#xff08;轻点骂&#xff09;我也只是站在巨人肩膀上的一个小卡拉米&#xff0c;已老实&#xff0c;求放过&#xff09;。 排序的概念及其运…

AI驱动的低代码未来:加速应用开发的智能解决方案

引言 随着数字化转型的浪潮席卷全球&#xff0c;企业对快速构建应用程序的需求愈发强烈。然而&#xff0c;传统的软件开发周期冗长、成本高昂&#xff0c;往往无法满足快速变化的市场需求。在此背景下&#xff0c;低代码平台逐渐成为开发者和企业的优选方案&#xff0c;以其“低…