Skip to content

Commit 97a2edd

Browse files
author
张瑞龙
committed
feat: add 计算机网络
1 parent 57e4cb3 commit 97a2edd

20 files changed

+228
-0
lines changed

docs/computer-basic/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# 计算机基础
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# 计算机网络
Lines changed: 203 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,203 @@
1+
# 各层协议概览
2+
3+
![TCP/IP 各层协议概览](./assets/network-protocol-overview.png)
4+
5+
# 数据链路层
6+
7+
https://juejin.cn/post/7147950339377856526
8+
9+
## CSMA/CD协议
10+
11+
12+
13+
## 重传协议(流量控制与可靠传输)
14+
15+
https://cloud.tencent.com/developer/article/2247789
16+
17+
停止等待协议
18+
19+
回退N帧(GBN)协议
20+
21+
选择重传(SR)协议
22+
23+
24+
25+
26+
27+
28+
29+
# 网络层
30+
31+
## IP协议
32+
33+
IP数据报格式:
34+
35+
- 版本 : 有 4(IPv4)和 6(IPv6)两个值;
36+
- 首部长度 : 值为 1 表示的是 1 个 32 位字的长度,`也就是 4 字节`。因为固定部分长度为 20 字节,因此该值最小为 5。如果可选字段的长度不是 4 字节的整数倍,就用尾部的填充部分来填充。
37+
- 标识 : 在数据报长度过长从而发生分片的情况下,相同数据报的不同分片具有相同的标识符。
38+
- 片偏移 : 和标识符一起,用于发生分片的情况。`片偏移的单位为 8 字节`
39+
40+
![img](./assets/dev-network-ip-2.jpeg)
41+
42+
IP数据报分片形式:
43+
44+
![img](./assets/dev-network-ip-3.png)
45+
46+
47+
48+
## ARP协议
49+
50+
ARP 实现由 IP 地址得到 MAC 地址,每个主机都有一个 ARP 高速缓存,里面有本局域网上的各主机和路由器的 IP 地址到 MAC 地址的映射表。
51+
52+
![img](./assets/dev-network-ip-6.jpeg)
53+
54+
如果主机 A 知道主机 B 的 IP 地址,但是 ARP 高速缓存中没有该 IP 地址到 MAC 地址的映射,此时主机 A 通过广播的方式发送 ARP 请求分组,主机 B 收到该请求后会发送 ARP 响应分组给主机 A 告知其 MAC 地址,随后主机 A 向其高速缓存中写入主机 B 的 IP 地址到 MAC 地址的映射。
55+
56+
![img](./assets/dev-network-ip-7.png)
57+
58+
59+
60+
## ICMP协议
61+
62+
ICMP 是为了更有效地转发 IP 数据报和提高交付成功的机会。它封装在 IP 数据报中,但是不属于高层协议。
63+
64+
ICMP 报文分为差错报告报文和询问报文,具体类型如下:
65+
66+
![img](./assets/dev-network-ip-9.png)
67+
68+
基于ICMP协议的工具主要有ping 和traceroute
69+
70+
- Ping 是 ICMP 的一个重要应用,主要用来测试两台主机之间的连通性。
71+
- Traceroute 是 ICMP 的另一个应用,用来跟踪一个分组从源点到终点的路径。
72+
73+
## NAT协议
74+
75+
76+
77+
## 内部网关协议
78+
79+
### RIP
80+
81+
RIP 是一种基于距离向量的路由选择协议。距离是指跳数,直接相连的路由器跳数为 1。跳数最多为 15,超过 15 表示不可达。
82+
83+
- RIP 协议实现简单,开销小。
84+
- RIP 能使用的最大距离为 15,限制了网络的规模
85+
- 网络出现故障时,要经过比较长的时间才能将此消息传送到所有路由器
86+
87+
88+
89+
90+
91+
### OSFP
92+
93+
开放最短路径优先 OSPF,是为了克服 RIP 的缺点而开发出来的。开放表示 OSPF 不受某一家厂商控制,而是公开发表的;最短路径优先表示使用了 Dijkstra 提出的最短路径算法 SPF。
94+
95+
OSPF 具有以下特点:
96+
97+
- 向本自治系统中的所有路由器发送信息,这种方法是洪泛法。
98+
- 发送的信息就是与相邻路由器的链路状态,链路状态包括与哪些路由器相连以及链路的度量,度量用费用、距离、时延、带宽等来表示。
99+
- 只有当链路状态发生变化时,路由器才会发送信息。
100+
- 所有路由器都具有全网的拓扑结构图,并且是一致的。相比于 RIP,OSPF 的更新过程收敛的很快。
101+
102+
103+
104+
105+
106+
## 外部网关协议
107+
108+
### BGP
109+
110+
111+
112+
113+
114+
115+
116+
117+
118+
# 传输层
119+
120+
## TCP协议
121+
122+
### 三次握手与四次挥手
123+
124+
三次握手:
125+
126+
- SYN
127+
- SNY + ACK
128+
- ACK
129+
130+
四次挥手:
131+
132+
- FIN
133+
- ACK
134+
- FIN + ACK
135+
- ACK
136+
137+
![img](./assets/dev-network-tcpip-4.jpg)
138+
139+
### 重传机制
140+
141+
#### 超时重传(停止等待ARQ协议)
142+
143+
发送方计时器到期前没收到ACK则重传
144+
145+
#### 快速重传(连续ARQ协议)
146+
147+
如果发送方连续收到3次相同的ack就重传,流程如下图所示:发送端收到了三个ack=2的确认,知道了2还没有到,于是就马上重转2。然后,接收端收到了2,此时因为3,4,5都收到了,于是ack回6
148+
149+
![img](./assets/dev-network-tcpip-7.png)
150+
151+
### 滑动窗口
152+
153+
154+
155+
### 拥塞控制
156+
157+
> 拥塞控制就是防止过多的数据注入网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制是一个全局性的过程,和流量控制不同,流量控制指点对点通信量的控制。
158+
159+
一个简单的图示以同时看一下各种算法的表现形式:
160+
161+
![TCP的拥塞控制](./assets/tcp-congestion-control.png)
162+
163+
#### 慢开始与拥塞避免
164+
165+
发送方维持一个叫拥塞窗口cwnd的状态变量,`当收到单个确认但此确认多个数据报的时候就加相应的数值`。所以一次传输轮次之后拥塞窗口就加倍。这就是乘法增长,和后面的拥塞避免算法的加法增长比较。
166+
167+
为了防止cwnd增长过大引起网络拥塞,还需设置一个慢开始门限ssthresh状态变量。ssthresh的用法如下:
168+
169+
- 当cwnd<ssthresh时,使用慢开始算法。
170+
- 当cwnd>ssthresh时,改用拥塞避免算法。
171+
- 当cwnd=ssthresh时,慢开始与拥塞避免算法任意。
172+
173+
无论在慢开始阶段还是拥塞避免阶段,只要发送方判断网络出现拥塞(没有按时收到确认),就要把慢开始门限`ssthresh`设置为出现拥塞时发送方窗口值的一半(但不能小于2)。然后把`拥塞窗口cwnd重新设置为1`,执行慢开始算法。
174+
175+
![img](./assets/SouthEast-20241203211957402.jpeg)
176+
177+
### 快重传后快恢复
178+
179+
快重传的流程即上述介绍的快速重传,当收到三个重复ACK后,没必要从头开始,而是将sshthresh设置为cwnd的一半,并将cwnd设置为sshthresh,开始执行慢开始算法
180+
181+
- sshthresh = cwnd /2
182+
- cwnd = sshthresh
183+
184+
![img](./assets/SouthEast.jpeg)
185+
186+
## UPD协议
187+
188+
189+
190+
191+
192+
## 报文对比
193+
194+
待补充
195+
196+
197+
198+
199+
200+
# 应用层
201+
202+
203+
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# 集线器
2+
3+
4+
5+
6+
7+
# 交换机
8+
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# 分层模型
2+
3+
全局上理解 `7层协议,4层,5层`的对应关系
4+
5+
![img](./assets/dev-network-protocol-1.png)
6+
7+
# 各层功能
8+
9+
![TCP/IP 四层模型](./assets/tcp-ip-4-model.png)
10+
11+
12+
13+
# TCP/IP协议族概览
14+
15+
![img](./assets/osi-model-detail.png)

0 commit comments

Comments
 (0)