💻 Computer Basics
1、计算机网络
1.1 传输层:TCP和UDP
1.1.1 三次握手
1.1.2 四次挥手
1.1.3 流量控制
1.1.4 拥塞控制
1.1.5 TCP和UDP的区别
1.1.6 TCP如何保证传输的可靠性
1.1.7 TCP长连接和短连接
1.1.8 应用层提高UDP协议可靠性的方法
1.1.9 UDP和IP的首部结构
1.2 应用层:HTTP和HTTPS
1.2.1 HTTP和HTTPS的区别
1.2.2 GET和POST的区别
1.2.3 Session与Cookie的区别
1.2.4 从输入网址到获得页面的过程(越详细越好)
1.2.5 HTTP请求有哪些常见的状态码
1.2.6 什么是RIP,算法是什么
1.2.7 HTTP1.1和HTTP2.0的主要区别
1.2.8 DNS
1.2.9 HTTPS加密和认证过程
1.2.10 常见网络攻击
1.2.11 REST
1.3 计算机网络体系结构
1.4 网络层协议
1.4.1 IP地址的分类
1.4.2 划分子网
1.4.3 什么是ARP协议
1.4.4 NAT协议
2、操作系统
2.1 进程和线程
2.1.1 进程和线程的区别
2.1.2 进程间通信方式
2.1.3 同步原语
2.1.4 进程状态
2.1.5 进程调度策略
2.1.6 僵尸进程和孤儿进程
2.1.7 协程
2.1.8 异常控制流
2.1.9 IO多路复用
2.1.10 用户态和内核态
2.2 死锁
2.3 内存管理
2.3.1 分段与分页
2.3.2 虚拟内存
2.3.3 页面置换算法
2.3.4 局部性原理
2.3.5 缓冲区溢出
2.4 磁盘调度
-
+
tourist
register
Sign in
流量控制
## 1 为什么要有流量控制 1. **一条 TCP 连接的每一侧主机都为该连接设置了接收缓存**,**当该 TCP 连接收到正确**、**按序的字节后**,**他就将数据放入接收缓存**,**相关联的应用进程会从该缓存中读取数据**,**但不必是数据刚一到达就立即读取**。 2. 事实上,**接收方应用也许正忙于其他任务**,**甚至要过很长时间后才去读取该数据**,**如果某应用程序读取数据时相对缓慢**,**而发送方发送得太多**、**太快**,**发送的数据就会很容易地使该连接的接收缓存溢出**。 3. 因此**TCP 为他的应用程序提供了流量控制服务**(Flow Control Service)**以消除发送方使接收方缓存溢出的可能性**,**流量控制是一个速度匹配服务**,**即发送方的发送速率与接收方应用程序的读取速率相匹配**,**可以让发送端根据接收端的实际接收能力控制发送的数据量**,**其根本目的是防止分组丢失**,**是构成[TCP 可靠性](https://notebook.ricear.com/project-26/doc-306)的一方面**。 ## 2 原理 1. TCP 流量控制的具体操作是**接收端主机向发送端主机通知自己可以接收数据的大小**,于是**发送端会发送不超过这个限度的数据**,**该大小限度就被称作窗口大小**。 2. **TCP 首部中专门有一个字段用来通知窗口大小**,**接收主机将自己可以接收的缓冲区大小放入这个字段中通知给发送端**,**这个字段的值越大**,**说明网络的吞吐量越高**。 3. **当接收端的缓冲区一旦面临数据溢出时**,**窗口大小的值也会随之被设置为一个更小的值通知给发送端**,**从而控制数据发送量**,也就是说,**发送端主机会根据接收端主机的指示**,**对发送数据的量进行控制**,**这样就形成了一个完整的 TCP 流量控制**。 4. 具体实例如下: ![](/media/202206/2022-06-07_172217_935748.png) 1. 如上图所示,**当接收端收到从 3001 号开始的数据段后其缓冲区即满**,此时**不允许发送方再发送数据了**,**直到接收端重新发送一个新的窗口值为止**。 2. 这种方式会存在一个问题,**当接收端向发送端发送了零窗口的报文段之后**,**接收端的接收缓存又有了一些存储空间**,**于是接收端向发送端发送了一个包含新窗口值的报文段**,**而这个报文段在传送过程中丢失了**,**发送端一直等待收到接收端发送的非零窗口通知**,**而接收端也一直等待发送端发送的数据**,**如果没有其他措施**,**这种互相等待的死锁局面将一直延续下去**。 3. 为了解决上面这个问题,**TCP 为每一个连接设有一个持续计时器**(Persistence Timer),**只要 TCP 连接的一方收到对方的零窗口通知**,**就启动持续计时器**,**若持续计时器设置的时间到期**,**就发送一个仅携带 1 字节数据的零窗口探测报文段**,**而对方就在确认这个探测报文段时给出了现在的窗口值**,**如果窗口依然是零**,**那么收到这个报文段的一方就重新设置持续计时器**,**如果窗口不是零**,**那么死锁的僵局就可以打破了**。 ## 3 流量控制与[拥塞控制](https://notebook.ricear.com/project-26/doc-304)的区别 1. 流量控制往往是指**点对点通信量的控制**,**是个端到端的问题**(接收端控制发送端)。流量控制所要做的就是**抑制发送端发送数据的速率**,**以便使接收端来得及接收**。 2. 拥塞控制就是**防止过多的数据注入到网络中**,这样可以**使网络中的路由器或链路不致过载**,拥塞控制所要做的都有一个前提,就是**网络能够承受现有的网络负荷**,拥塞控制**是一个全局性的过程**,**涉及到所有的主机**、**路由器以及与降低网络传输性能有关的所有因素**,**TCP 连接的端点只要迟迟不能收到对方的确认信息**,**就猜想在当前网络中的某处很可能发生了拥塞**,**但这时却无法知道拥塞到底发生在网络的何处**,**也无法知道发生拥塞的具体原因**(是访问某个服务器的通信量过?还是在某个地区出现自然灾害?)。 3. 具体实例如下: 1. 假设某个光纤网络的链路传输速率为 1000Gbit/s,有一台巨型计算机向一台个人电脑以 1Gbit/s 的速率传送文件,显然,网络本身的带宽是足够大的,因而不存在产生拥塞的问题,但流量控制却是必需的,因为巨型计算机必须经常停下来,以便使个人电脑来得及接收。 2. 但如果有另一个网络,其链路传输速率为 1Mbit/s,而有 1000 台大型计算机连接在这个网络上,假定其中的 500 台计算机分别向其余的 500 台计算机以 100kbit/s 的速率发送文件,那么现在的问题已不是接收端的大型计算机是否来得及接收,而是整个网络的输入负载是否超过网络所能承受的。 ## 参考文献 1. 《计算机网络-自顶向下方法第七版》 2. 《图解 TCP IP 第 5 版》 3. 《计算机网络-第 7 版-谢希仁》
ricear
June 9, 2022, 8:55 p.m.
©
BY-NC-ND(4.0)
转发文档
Collection documents
Last
Next
手机扫码
Copy link
手机扫一扫转发分享
Copy link
Markdown文件
share
link
type
password
Update password