【网络原理】——拥塞控制,延时/捎带应答,面向字节流,异常情况

简介: 拥塞控制,延时应答,捎带应答,面向字节流(粘包问题),异常情况(心跳包)

  image.gif 编辑

阿华代码,不是逆风,就是我疯

你们的点赞收藏是我前进最大的动力!!

希望本文内容能够帮助到你!!

目录

一:拥塞控制(重点)

1:情境引入

2:解决方案

3:如何找寻最佳窗口

4:总结

二:延时应答

三:捎带应答

四:面向字节流

1:粘包问题

2:解决方案

(1)分隔符标志

(2)指定包的长度

(3)应用层协议格式

(4)知识回顾

五:异常情况

1:一方出现进程崩溃

2:正常流程关机

3:一方断电

(1)断电的是接收方

(2)断电的是发送方

①问题引入

②心跳包

③特点

4:网线断开

六:应用场景


一:拥塞控制(重点)

通过“流量控制”的学习,我们可以通过从接收方的角度来制约发送方的发送速率,(即:动态控制窗口大小)。接下来我们引入的拥塞控制也是要限制发送方发送数据的速率

1:情境引入

我们知道,数据在传输的过程当中需要经过交换机和路由器的转发,进而可以选择很多条路径到达接受方,现在假设数据在路径上阻塞了,此时就算接收方,接受数据的速度非常快也无济于事。

2:解决方案

假设发送方按照某个窗口大小进行数据发送,发生了丢包情况,就视为“路径拥塞”,此时就要缩小窗口;如果没有拥塞,就扩大窗口

3:如何找寻最佳窗口

image.gif 编辑

(1)慢启动:不知道网络拥塞情况,所以起始传输速率很小,使用小窗口,避免网络带宽吃紧。

(2)如无丢包,指数增大窗口大小(增加传输速率)

(3)指数增大到“阈值”,改用线性增大窗口大小(求稳)

(4)线性增大到一定数值,发生“丢包”,重新把窗口设置为较小值(旧版本是设置为非常小的值,已被废弃,TCP Reno版本重新设置的值是以一个较高的值为起点,看图)

此时指数增长转变为线性增长的阈值也会被重新设置

4:总结

“流量控制”和“拥塞控制”遵循谁的窗口更小,谁说的算

二:延时应答

image.gif 编辑

“延时应答”机制也是以“流量控制”机制和“拥塞控制”机制为基础,通过延迟返回ack来达到,尽可能增大窗口的目的

可以形象想象成,以前是一个数据就对应一个ack,现在是每隔几个数据再返回一个ack,这样不仅提高了效率,还节省了ack的开销

当然这里即使接收的数据没有达到一定的数量,也会返回ack

三:捎带应答

“捎带应答”机制是基于“延时应答”机制的,我们不仅可以通过改变窗口大小来提高数据传输效率,还可以通过尽可能的合并数据包提高传输效率。

image.gif 编辑

正常情况下②③发送数据包之间会有一定时间间隔,通过“延时应答”机制,把②③合并成一个TCP数据包,进行发送

因为ack报文本身并不带有载荷,我们只需要把合并后的数据包中六位标志符中ack的值设置为1,并且设置确认序号以及窗口大小即可,这几个属性与一个response报文并不冲突

注:这里的模型,不能理解成“三次握手”,因为数据传输的连接一般都是“长连接”,中间可能有好几次ack+response

image.gif 编辑

四:面向字节流

1:粘包问题

粘(nian)引入:从之前的学习我们知道,一个TCP数据报到达接受方之后,需要调用server 的API中的read方法,read出来的结果就是应用层数据包

由于read的过程非常灵活,就无法区分出来从哪到哪是一个完整的数据包,

image.gif 编辑

image.gif 编辑

2:解决方案

明确包与包之间的边界

(1)分隔符标志

通过特殊符号作为分隔符,见到分隔符,就视为一个包结束了

例如:之前的写的TCP回显服务器中就应用到了这种思想

image.gif 编辑

(2)指定包的长度

例如:在包的首部,加上一个特殊的空间来表示整个数据的长度

注:粘包问题,不是TCP独有的问题,只要是面向字节流,就会存在这样的问题

注:我们之前学习的UDP数据报包不存在这样的问题,UDP的传输单位是UDP数据报,每一个数据报,只承载一个应用层数据包。

UDP的接收缓冲区类似于一个链表。

(3)应用层协议格式

——xml,json,protobuffer

(4)知识回顾

数据报(Datagram)

UDP无连接的数据传输单元,通常用于网络层,每个数据报独立传输,传输不可靠

数据包(Packet)

是TCP/IP协议通信传输中的数据单位,处于网络层。数据包是一个完整的数据单元,它包含了网络层传输所需的所有信息

有连接,可靠传输

两者关系

数据包是整个的数据单元,而数据报是组成这个数据单元的分组

每一层封装后的数据都可以称作数据报,也就是说,一个完整的数据包是由若干个数据报组成的。

五:异常情况

考虑比“丢包”严重的情况,我们应该如何处理呢?

1:一方出现进程崩溃

进程无论是正常结束还是崩溃,都会触发回收文件资源,关闭文件这样的效果,(即四次挥手)

TCP的连接生命周期比进程更长,虽然进程退出了,但是TCP连接仍然存在,可以进行四次挥手

2:正常流程关机

主机关机,强杀进程,“四次挥手”挥的快,可以在数据结构中删除掉对端的连接信息;

挥的不够快,至少也能发送一个FIN给对方,如果久久收不到ack,会进行“超时重传”,重传几次后还是收不到ack,就单方面的释放连接信息。

3:一方断电

(1)断电的是接收方

发送方发送FIN后,收不到ack,重传后,还是没反应,进入“复位连接”

下面这张图是TCP数据报中六位标志符

image.gif 编辑

RST——复位报文段

URG——TCP中有一些特殊的数据包,携带一些特殊功能的数据

PSH——push催促对方快点发送信息

(2)断电的是发送方

①问题引入

接受方本来就是在阻塞等待“发送方”发送数据,如果发送方“挂了”,接受方怎么区分出,发送方是“挂了”还是暂时刚好没有发送数据。

②心跳包

TCP中,接收方一段时间没有接受到发送方的数据,就会发送一个“心跳包”来确认发送方是否还处于“存活状态”

③特点

心跳包是周期性的发送

没有心跳,视为对端挂了,那就单方面的断开连接

4:网线断开

哦吼~~~~属于是物理打击了

六:应用场景

如果需要可靠传输:首选TCP

需要传送数据包很大:首选TCP

绝大部分的场景都可以优先考虑TCP

UCP相比较于TCP最大的优势就是,传输效率,比如有些场景中,对可靠性要求不高,对效率要求很高,那就可以考虑UDP

如何用UDP来实现可靠性传输(重点)

我们的思路就是借鉴TCP传输的这些特性(不止这些)进行类比

image.gif 编辑

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
2月前
|
网络协议 安全 5G
网络与通信原理
【10月更文挑战第14天】网络与通信原理涉及众多方面的知识,从信号处理到网络协议,从有线通信到无线通信,从差错控制到通信安全等。深入理解这些原理对于设计、构建和维护各种通信系统至关重要。随着技术的不断发展,网络与通信原理也在不断演进和完善,为我们的生活和工作带来了更多的便利和创新。
76 3
|
1天前
|
前端开发 网络协议 安全
【网络原理】——HTTP协议、fiddler抓包
HTTP超文本传输,HTML,fiddler抓包,URL,urlencode,HTTP首行方法,GET方法,POST方法
|
1天前
|
域名解析 网络协议 关系型数据库
【网络原理】——带你认识IP~(长文~实在不知道取啥标题了)
IP协议详解,IP协议管理地址(NAT机制),IP地址分类、组成、特殊IP地址,MAC地址,数据帧格式,DNS域名解析系统
|
1天前
|
存储 JSON 缓存
【网络原理】——HTTP请求头中的属性
HTTP请求头,HOST、Content-Agent、Content-Type、User-Agent、Referer、Cookie。
|
1天前
|
安全 算法 网络协议
【网络原理】——图解HTTPS如何加密(通俗简单易懂)
HTTPS加密过程,明文,密文,密钥,对称加密,非对称加密,公钥和私钥,证书加密
|
10天前
|
运维 监控 安全
公司监控软件:SAS 数据分析引擎驱动网络异常精准检测
在数字化商业环境中,企业网络系统面临复杂威胁。SAS 数据分析引擎凭借高效处理能力,成为网络异常检测的关键技术。通过统计分析、时间序列分析等方法,SAS 帮助企业及时发现并处理异常流量,确保网络安全和业务连续性。
32 11
|
4天前
|
网络协议 安全 网络安全
探索网络模型与协议:从OSI到HTTPs的原理解析
OSI七层网络模型和TCP/IP四层模型是理解和设计计算机网络的框架。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型则简化为链路层、网络层、传输层和 HTTPS协议基于HTTP并通过TLS/SSL加密数据,确保安全传输。其连接过程涉及TCP三次握手、SSL证书验证、对称密钥交换等步骤,以保障通信的安全性和完整性。数字信封技术使用非对称加密和数字证书确保数据的机密性和身份认证。 浏览器通过Https访问网站的过程包括输入网址、DNS解析、建立TCP连接、发送HTTPS请求、接收响应、验证证书和解析网页内容等步骤,确保用户与服务器之间的安全通信。
30 1
|
1天前
|
网络协议 算法 Java
【JavaEE】——初始网络原理
局域网,广域网,局域网连接方式,交换机,集线器,路由器,网络通信,五元组(源IP,源端口,目的IP,目的端口,协议),协议分层,TCP/IP五层网络协议,封装和分用,交换机和路由器的封装和分用
|
1月前
|
运维 物联网 网络虚拟化
网络功能虚拟化(NFV):定义、原理及应用前景
网络功能虚拟化(NFV):定义、原理及应用前景
87 3
|
1月前
|
安全 Java Linux
如何确定 Broken Pipe 异常是由网络问题还是其他原因引起的
Broken Pipe 异常可能由网络问题或其他原因引起。要确定具体原因,可以检查网络连接状态、防火墙设置和系统日志,同时分析异常发生时的上下文信息。
225 5

热门文章

最新文章