diff --git a/notes/pics/byte-stuffing.png b/notes/pics/byte-stuffing.png
new file mode 100644
index 00000000..e9d7815c
Binary files /dev/null and b/notes/pics/byte-stuffing.png differ
diff --git a/notes/pics/cdma.png b/notes/pics/cdma.png
new file mode 100644
index 00000000..659cac36
Binary files /dev/null and b/notes/pics/cdma.png differ
diff --git a/notes/pics/csma-cd.png b/notes/pics/csma-cd.png
new file mode 100644
index 00000000..9581dcd0
Binary files /dev/null and b/notes/pics/csma-cd.png differ
diff --git a/notes/pics/ether-frame.png b/notes/pics/ether-frame.png
new file mode 100644
index 00000000..39ddf2cb
Binary files /dev/null and b/notes/pics/ether-frame.png differ
diff --git a/notes/pics/lan-topology.png b/notes/pics/lan-topology.png
new file mode 100644
index 00000000..8fe874d2
Binary files /dev/null and b/notes/pics/lan-topology.png differ
diff --git a/notes/pics/link-framing.png b/notes/pics/link-framing.png
new file mode 100644
index 00000000..679b1dac
Binary files /dev/null and b/notes/pics/link-framing.png differ
diff --git a/notes/pics/mux-fdm.png b/notes/pics/mux-fdm.png
new file mode 100644
index 00000000..30bfbef3
Binary files /dev/null and b/notes/pics/mux-fdm.png differ
diff --git a/notes/pics/mux-stdm.png b/notes/pics/mux-stdm.png
new file mode 100644
index 00000000..6e2b3635
Binary files /dev/null and b/notes/pics/mux-stdm.png differ
diff --git a/notes/pics/mux-tdm.png b/notes/pics/mux-tdm.png
new file mode 100644
index 00000000..af06c38e
Binary files /dev/null and b/notes/pics/mux-tdm.png differ
diff --git a/notes/pics/ppp-access.png b/notes/pics/ppp-access.png
new file mode 100644
index 00000000..d41102f4
Binary files /dev/null and b/notes/pics/ppp-access.png differ
diff --git a/notes/pics/ppp-frame.png b/notes/pics/ppp-frame.png
new file mode 100644
index 00000000..11a8e2f0
Binary files /dev/null and b/notes/pics/ppp-frame.png differ
diff --git a/notes/pics/switch-learning.png b/notes/pics/switch-learning.png
new file mode 100644
index 00000000..ebab1b43
Binary files /dev/null and b/notes/pics/switch-learning.png differ
diff --git a/notes/pics/vlan-broadcast.png b/notes/pics/vlan-broadcast.png
new file mode 100644
index 00000000..136e36af
Binary files /dev/null and b/notes/pics/vlan-broadcast.png differ
diff --git a/notes/pics/vlan-tag.png b/notes/pics/vlan-tag.png
new file mode 100644
index 00000000..3d070768
Binary files /dev/null and b/notes/pics/vlan-tag.png differ
diff --git a/notes/计算机网络 - 链路层.md b/notes/计算机网络 - 链路层.md
index 641f8f7a..7b8353a7 100644
--- a/notes/计算机网络 - 链路层.md
+++ b/notes/计算机网络 - 链路层.md
@@ -21,6 +21,7 @@
* [以太网](#以太网)
* [交换机](#交换机)
* [虚拟局域网](#虚拟局域网)
+ * [参考资料](#参考资料)
@@ -30,7 +31,7 @@
将网络层传下来的分组添加首部和尾部,用于标记帧的开始和结束。
-
+
### 2. 透明传输
@@ -38,7 +39,7 @@
帧使用首部和尾部进行定界,如果帧的数据部分含有和首部尾部相同的内容,那么帧的开始和结束位置就会被错误的判定。需要在数据部分出现首部尾部相同的内容前面插入转义字符。如果数据部分出现转义字符,那么就在转义字符前面再加个转义字符。在接收端进行处理之后可以还原出原始数据。这个过程透明传输的内容是转义字符,用户察觉不到转义字符的存在。
-
+
### 3. 差错检测
@@ -66,13 +67,13 @@
频分复用的所有主机在相同的时间占用不同的频率带宽资源。
-
+
### 2. 时分复用
时分复用的所有主机在不同的时间占用相同的频率带宽资源。
-
+
使用频分复用和时分复用进行通信,在通信的过程中主机会一直占用一部分信道资源。但是由于计算机数据的突发性质,通信过程没必要一直占用信道资源而不让出给其它用户使用,因此这两种方式对信道的利用率都不高。
@@ -80,7 +81,7 @@
是对时分复用的一种改进,不固定每个用户在时分复用帧中的位置,只要有数据就集中起来组成统计时分复用帧然后发送。
-
+
### 4. 波分复用
@@ -90,59 +91,56 @@
为每个用户分配 m bit 的码片,并且所有的码片正交,对于任意两个码片 S 和 T 有
-
-
-
+```text
+(1/m) S·T = 0
+```
为了讨论方便,取 m=8,设码片 S 为 00011011。在拥有该码片的用户发送比特 1 时就发送该码片,发送比特 0 时就发送该码片的反码 11100100。
在计算时将 00011011 记作 (-1 -1 -1 +1 +1 -1 +1 +1),可以得到
-
-
-
-
-
-
-
+```text
+(1/m) S·S = 1
+(1/m) S·S' = -1
+```
其中 S' 为 S 的反码。
-利用上面的式子我们知道,当接收端使用码片 S 对接收到的数据进行内积运算时,结果为 0 的是其它用户发送的数据,结果为 1 的是用户发送的比特 1,结果为 -1 的是用户发送的比特 0。
+由上面的式子可知,当接收端使用码片 S 对接收到的数据进行内积运算时,结果为 0 的是其它用户发送的数据,结果为 1 的是用户发送的比特 1,结果为 -1 的是用户发送的比特 0。
码分复用需要发送的数据量为原先的 m 倍。
-
+
## CSMA/CD 协议
CSMA/CD 表示载波监听多点接入 / 碰撞检测。
-- **多点接入** :说明这是总线型网络,许多主机以多点的方式连接到总线上。
-- **载波监听** :每个主机都必须不停地监听信道。在发送前,如果监听到信道正在使用,就必须等待。
-- **碰撞检测** :在发送中,如果监听到信道已有其它主机正在发送数据,就表示发生了碰撞。虽然每个主机在发送数据之前都已经监听到信道为空闲,但是由于电磁波的传播时延的存在,还是有可能会发生碰撞。
+- 多点接入:说明这是总线型网络,许多主机以多点的方式连接到总线上;
+- 载波监听:每个主机都必须不停地监听信道。在发送前,如果监听到信道正在使用,就必须等待;
+- 碰撞检测:在发送中,如果监听到信道已有其它主机正在发送数据,就表示发生了碰撞。虽然每个主机在发送数据之前都已经监听到信道为空闲,但是由于电磁波的传播时延的存在,还是有可能会发生碰撞。
-记端到端的传播时延为 τ,最先发送的站点最多经过 2τ 就可以知道是否发生了碰撞,称 2τ 为 **争用期** 。只有经过争用期之后还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
+记端到端的传播时延为 τ,最先发送的站点最多经过 2τ 就可以知道是否发生了碰撞,称 2τ 为 **争用期**。只有经过争用期之后还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
-当发生碰撞时,站点要停止发送,等待一段时间再发送。这个时间采用 **截断二进制指数退避算法** 来确定。从离散的整数集合 {0, 1, .., (2k-1)} 中随机取出一个数,记作 r,然后取 r 倍的争用期作为重传等待时间。
+当发生碰撞时,站点要停止发送,等待一段时间再发送。这个时间采用 **截断二进制指数退避算法** 来确定。从离散的整数集合 {0, 1, .., (2k-1)} 中随机取出一个数,记作 r,然后取 r 倍的争用期作为重传等待时间。其中 k = min(重传次数, 10),重传 16 次仍不成功就丢弃该帧。
-
+
## PPP 协议
互联网用户通常需要连接到某个 ISP 之后才能接入到互联网,PPP 协议是用户计算机和 ISP 进行通信时所使用的数据链路层协议。
-
+
PPP 的帧格式:
-- F 字段为帧的定界符
-- A 和 C 字段暂时没有意义
-- FCS 字段是使用 CRC 的检验序列
-- 信息部分的长度不超过 1500
+- F 字段为帧的定界符;
+- A 和 C 字段暂时没有意义;
+- FCS 字段是使用 CRC 的检验序列;
+- 信息部分的长度不超过 1500 字节。
-
+
## MAC 地址
@@ -158,7 +156,7 @@ MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标
可以按照网络拓扑结构对局域网进行分类:
-
+
## 以太网
@@ -170,11 +168,11 @@ MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标
以太网帧格式:
-- **类型** :标记上层使用的协议;
-- **数据** :长度在 46-1500 之间,如果太小则需要填充;
-- **FCS** :帧检验序列,使用的是 CRC 检验方法;
+- 类型:标记上层使用的协议;
+- 数据:长度在 46-1500 之间,如果太小则需要填充;
+- FCS:帧检验序列,使用的是 CRC 检验方法。
-
+
## 交换机
@@ -184,7 +182,7 @@ MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标
下图中,交换机有 4 个接口,主机 A 向主机 B 发送数据帧时,交换机把主机 A 到接口 1 的映射写入交换表中。为了发送数据帧到 B,先查交换表,此时没有主机 B 的表项,那么交换机就把该帧广播到除接口 1 以外的所有接口,主机 C 和主机 D 会丢弃该帧,主机 B 回应该帧向主机 A 发送数据包时,交换机查找交换表得到主机 A 映射的接口为 1,就发送数据帧到接口 1,同时交换机添加主机 B 到接口 2 的映射。
-
+
## 虚拟局域网
@@ -192,7 +190,17 @@ MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标
例如下图中 (A1, A2, A3, A4) 属于一个虚拟局域网,A1 发送的广播会被 A2、A3、A4 收到,而其它站点收不到。
+
+
使用 VLAN 干线连接来建立虚拟局域网,每台交换机上的一个特殊接口被设置为干线接口,以互连 VLAN 交换机。IEEE 定义了一种扩展的以太网帧格式 802.1Q,它在标准以太网帧上加进了 4 字节首部 VLAN 标签,用于表示该帧属于哪一个虚拟局域网。
-
+
+## 参考资料
+
+- 谢希仁. 计算机网络(第 7 版)[M]. 电子工业出版社, 2017.
+- Kurose J F, Ross K W. 计算机网络:自顶向下方法(第 7 版)[M]. 机械工业出版社, 2018.
+- [RFC 1661: The Point-to-Point Protocol (PPP)](https://www.rfc-editor.org/rfc/rfc1661)
+- [RFC 1662: PPP in HDLC-like Framing](https://www.rfc-editor.org/rfc/rfc1662)
+- [IEEE 802.3 Ethernet Working Group](https://www.ieee802.org/3/)
+- [IEEE 802.1Q: Bridges and Bridged Networks](https://www.ieee802.org/1/pages/802.1Q.html)