diff --git a/notes/pics/lan-topology.png b/notes/pics/lan-topology.png index 8fe874d2..8704d430 100644 Binary files a/notes/pics/lan-topology.png and b/notes/pics/lan-topology.png differ diff --git a/notes/pics/link-framing.png b/notes/pics/link-framing.png index 679b1dac..af1ab733 100644 Binary files a/notes/pics/link-framing.png and b/notes/pics/link-framing.png differ diff --git a/notes/pics/ppp-frame.png b/notes/pics/ppp-frame.png index 11a8e2f0..a22f2d91 100644 Binary files a/notes/pics/ppp-frame.png and b/notes/pics/ppp-frame.png differ diff --git a/notes/计算机网络 - 链路层.md b/notes/计算机网络 - 链路层.md index 5174ac46..e773f621 100644 --- a/notes/计算机网络 - 链路层.md +++ b/notes/计算机网络 - 链路层.md @@ -37,13 +37,15 @@ 透明表示一个实际存在的事物看起来好像不存在一样。 -帧使用首部和尾部进行定界,如果帧的数据部分含有和首部尾部相同的内容,那么帧的开始和结束位置就会被错误的判定。需要在数据部分出现首部尾部相同的内容前面插入转义字符。如果数据部分出现转义字符,那么就在转义字符前面再加个转义字符。在接收端进行处理之后可以还原出原始数据。这个过程透明传输的内容是转义字符,用户察觉不到转义字符的存在。 +帧用首部和尾部中的控制字符定界,如果数据部分恰好含有相同的字节,接收端就会把帧的结束位置判断错。解决方法是字节填充:发送端在数据中的控制字符前面插入转义字符 ESC,数据中本来就有的 ESC 前面也再插入一个 ESC;接收端删去这些转义用的 ESC,还原出原始数据。 + +填充和删除都由链路层完成,上层交下来什么数据都能原样传过去,察觉不到 ESC 的存在,因此称为透明传输。

### 3. 差错检测 -目前数据链路层广泛使用了循环冗余检验(CRC)来检查比特差错。 +目前数据链路层广泛使用循环冗余检验(Cyclic Redundancy Check, CRC)来检查比特差错:发送端根据帧的内容算出检验序列放在帧尾,接收端重新计算,结果不一致就丢弃该帧。以太网只丢弃出错的帧、不重传,可靠传输由上层的 TCP 负责。 ## 信道分类 @@ -53,7 +55,7 @@ 所有的节点都在同一个广播信道上发送数据,因此需要有专门的控制方法进行协调,避免发生冲突(冲突也叫碰撞)。 -主要有两种控制方法进行协调,一个是使用信道复用技术,一是使用 CSMA/CD 协议。 +主要有两种控制方法进行协调:一是使用信道复用技术,二是使用 CSMA/CD 协议。 ### 2. 点对点信道 @@ -79,7 +81,7 @@ ### 3. 统计时分复用 -是对时分复用的一种改进,不固定每个用户在时分复用帧中的位置,只要有数据就集中起来组成统计时分复用帧然后发送。 +统计时分复用是对时分复用的一种改进,不固定每个用户在时分复用帧中的位置,只要有数据就集中起来组成统计时分复用帧然后发送。

@@ -106,7 +108,7 @@ 其中 S' 为 S 的反码。 -由上面的式子可知,当接收端使用码片 S 对接收到的数据进行内积运算时,结果为 0 的是其它用户发送的数据,结果为 1 的是用户发送的比特 1,结果为 -1 的是用户发送的比特 0。 +由上面的式子可知,当接收端使用码片 S 对接收到的数据进行内积运算时,结果为 0 的是其它用户发送的数据,结果为 1 的是拥有码片 S 的用户发送的比特 1,结果为 -1 的是该用户发送的比特 0。 码分复用需要发送的数据量为原先的 m 倍。 @@ -115,7 +117,7 @@ ## CSMA/CD 协议 -CSMA/CD 表示载波监听多点接入 / 碰撞检测。 +CSMA/CD(Carrier Sense Multiple Access with Collision Detection)表示载波监听多点接入 / 碰撞检测,用于总线型或使用集线器的以太网。 - 多点接入:说明这是总线型网络,许多主机以多点的方式连接到总线上; - 载波监听:每个主机都必须不停地监听信道。在发送前,如果监听到信道正在使用,就必须等待; @@ -127,6 +129,8 @@ CSMA/CD 表示载波监听多点接入 / 碰撞检测。

+需要注意的是,现在的以太网用交换机连接、以全双工方式工作,每条链路只连接主机和交换机的一个接口,收发可以同时进行,不会发生碰撞,也就不再使用 CSMA/CD。 + ## PPP 协议 互联网用户通常需要连接到某个 ISP 之后才能接入到互联网,PPP 协议是用户计算机和 ISP 进行通信时所使用的数据链路层协议。 @@ -135,11 +139,11 @@ CSMA/CD 表示载波监听多点接入 / 碰撞检测。 PPP 的帧格式: -- F 字段为帧的定界符; +- F 字段为帧的定界符,值为 0x7E; - A 和 C 字段的值是固定的,分别为 0xFF 和 0x03,不携带信息; - 协议字段指明信息部分是哪种协议的数据,例如 0x0021 表示 IP 数据报; - FCS 字段是使用 CRC 的检验序列; -- 信息部分的长度不超过 1500 字节。 +- 信息部分的长度默认不超过 1500 字节,即最大接收单元(Maximum Receive Unit, MRU),双方可以协商更大的值。

@@ -161,16 +165,17 @@ MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标 ## 以太网 -以太网是一种星型拓扑结构局域网。 +早期的以太网是总线型拓扑,目前的以太网使用星型拓扑。 -早期使用集线器进行连接,集线器是一种物理层设备, 作用于比特而不是帧,当一个比特到达接口时,集线器重新生成这个比特,并将其能量强度放大,从而扩大网络的传输距离,之后再将这个比特发送到其它所有接口。如果集线器同时收到两个不同接口的帧,那么就发生了碰撞。 +早期使用集线器进行连接,集线器是一种物理层设备,作用于比特而不是帧,当一个比特到达接口时,集线器重新生成这个比特,并将其能量强度放大,从而扩大网络的传输距离,之后再将这个比特发送到其它所有接口。如果集线器同时收到两个不同接口的帧,那么就发生了碰撞。 -目前以太网使用交换机替代了集线器,交换机是一种链路层设备,它不会发生碰撞,能根据 MAC 地址进行存储转发。 +目前以太网使用交换机替代了集线器,交换机是一种链路层设备,能根据 MAC 地址进行存储转发,每个接口独立工作,全双工时不会发生碰撞。 以太网帧格式: +- 目的地址、源地址:各 6 字节的 MAC 地址; - 类型:标记上层使用的协议; -- 数据:长度在 46-1500 之间,如果太小则需要填充; +- 数据:长度在 46~1500 字节之间,如果太小则需要填充; - FCS:帧检验序列,使用的是 CRC 检验方法。

@@ -181,7 +186,10 @@ MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标 正是由于这种自学习能力,因此交换机是一种即插即用设备,不需要网络管理员手动配置交换表内容。 -下图中,交换机有 4 个接口,主机 A 向主机 B 发送数据帧时,交换机把主机 A 到接口 1 的映射写入交换表中。为了发送数据帧到 B,先查交换表,此时没有主机 B 的表项,那么交换机就把该帧广播到除接口 1 以外的所有接口,主机 C 和主机 D 会丢弃该帧,主机 B 回应该帧向主机 A 发送数据包时,交换机查找交换表得到主机 A 映射的接口为 1,就发送数据帧到接口 1,同时交换机添加主机 B 到接口 2 的映射。 +交换机每收到一个帧,先把源 MAC 地址和收到帧的接口记入交换表,再按目的 MAC 地址查表:查到就只从对应的接口转发,查不到就从其它所有接口转发。例如下图中交换机有 4 个接口: + +- A 向 B 发送:交换机记下 A 在接口 1,表中没有 B,于是从接口 2、3、4 转发,C 和 D 发现目的地址不是自己,丢弃该帧; +- B 回复 A:交换机记下 B 在接口 2,表中查到 A 在接口 1,只从接口 1 转发。