# 局域网

### 网络的分类（根据规模分类）

* **广域网**：覆盖范围大，传输距离远，传输率低，误码率高
* **城域网**：覆盖范围介于局域网和广域网之间，几公里到几十公里
* **局域网**：
  * 范围：几米至几公里，一个或相邻的建筑物内
  * 特点：覆盖范围小，传输速率高，误码率低
  * 应用：多用于单位内部网络建设

### 局域网常用拓扑结构

* 总线型
* 星型
* 环型

![](https://2457808883-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRxJcEoJGnxpkBfWvFRPw%2Fuploads%2Fgit-blob-3a7a18347e5c1b7a4ace3be7b0cacb789a225762%2F%E5%B1%80%E5%9F%9F%E7%BD%91%E5%B8%B8%E7%94%A8%E6%8B%93%E6%89%91.png?alt=media)

### 局域网体系结构

局域网的体系结构本身是一种通信的网络，只涉及 OSI 参考模型中的数据链路层和物理层，不涉及高层次的内容。

IEEE802委员会将局域网分成两个子层：MAC子层和LLC子层

* **MAC子层**：与接入到传输媒体有关的内容都放在MAC子层中，主要用来解决多个节点如何使用共享介质的问题。
* **LLC子层**：与接入媒体无关的部分都集中在LLC。其主要功能是数据链路的建立和释放、LLC帧的封装和拆卸、差错控制、提供与高层的接口等。

![](https://2457808883-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRxJcEoJGnxpkBfWvFRPw%2Fuploads%2Fgit-blob-7f40db93ce75acec4144cd7f40fd80863ef958fb%2FMACLLC.png?alt=media)

### 物理地址

在局域网中，硬件地址又称为物理地址或 MAC 地址，是在数据链路层使用的地址。MAC 地址共48比特，6字节。前三个字节代表的是生产厂商的编号，后三个字节代表的是网卡的编号。

MAC 地址经常表示为12个16进制数，每两个十六进制数之间用冒号隔开

![MAC地址示例](https://2457808883-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRxJcEoJGnxpkBfWvFRPw%2Fuploads%2Fgit-blob-0f09f8c8dde6ecd53519b2db698f18254215cc80%2FMAC%E5%9C%B0%E5%9D%80.png?alt=media)

### 物理地址的使用

数据链路层中数据是以数据帧（frame）为单位进行传输的。封装成帧就是在一段数据的前后分别添加首部和尾部，然后就构成了一个帧，确定了帧的界限。

![](https://2457808883-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRxJcEoJGnxpkBfWvFRPw%2Fuploads%2Fgit-blob-d06c5afd2853914d63e5922de230a988c2227d4b%2F%E6%95%B0%E6%8D%AE%E5%B8%A7.png?alt=media)

数据帧首部的源地址和目的地址就是用MAC地址来表示的

![](https://2457808883-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRxJcEoJGnxpkBfWvFRPw%2Fuploads%2Fgit-blob-2f7ad58d6603e40a3e9e6cf33869a8a5d87bb798%2FMAC%20frame.png?alt=media)

发送数据帧时，帧首部写入目的主机的MAC地址

收到数据帧后，首先检查帧首部的目的MAC地址，如果是发给自己的，就接收数据帧，否则就丢弃

![](https://2457808883-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRxJcEoJGnxpkBfWvFRPw%2Fuploads%2Fgit-blob-1630f89a41155cab225a3ea3eb1cc96e87d2bc30%2F%E7%89%A9%E7%90%86%E5%9C%B0%E5%9D%80%E7%9A%84%E4%BD%BF%E7%94%A8.png?alt=media)

### CSMA/CD协议

目前局域网采用的最通用的通信协议标准是以太网（Ethernet）技术

最初的以太网是一个总线型的网络，任何一个主机发出的信号，都能被网络中其他所有的主机收到

以太网需要解决的问题：

* 寻址问题：如何在广播式的网络完成一对一通信
  * （MAC地址）
* 冲突问题：两台主机同时使用网络会发生冲突
  * （CSMA/CD协议）

以太网使用载波监听 / 多路访问 / 冲突检测协议（CSMMA/CD）来解决总线使用权的问题，处理网络中产生的冲突问题

* 多路访问：网络中的每个节点都能访问总线，通过总线发送数据
* 载波监听：在发送数据前，节点需要先“听”一下总线上是否有数据信号，如果检测到有数据信号，节点便等待直到总线空闲。如果“听”到总线没有数据信号，那么节点就将数据帧发送出去
* 冲突检测：在发送数据帧的同时，还需要继续监听总线，检测是否发生了冲突。如果检测到了冲突，就马上停止数据发送。等待一个随机的时间后，再次发送

**为什么需要“冲突检测”？**

* 当某个站监听到总线是空闲时，也可能总线并非真正是空闲的
* A向B发出的信息，要经过一定的时间后才能传送到B
* B若在A发送的信息到达B之前发送自己的帧（因为这时B的载波监听检测不到A所发送的信息），则必然要在某个时间和A发送的帧发送碰撞

![](https://2457808883-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRxJcEoJGnxpkBfWvFRPw%2Fuploads%2Fgit-blob-455f20387f908db7925f1a8bc813db39e43486d5%2F%E5%86%B2%E7%AA%81%E5%8E%9F%E5%9B%A0.png?alt=media)

![](https://2457808883-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRxJcEoJGnxpkBfWvFRPw%2Fuploads%2Fgit-blob-a2852dc97b43c51ef5a3dcc201961cb401867471%2F%E5%86%B2%E7%AA%81.png?alt=media)

**冲突带来的问题**

* 碰撞的结果是两个帧都变得无用（冲突使得信号相互叠加，使得原来的信号被破坏），而且这些无用的数据浪费了网络资源
* 节点在检测到冲突的时候，就马上停止数据发送。但是之前已经发送的数据还是会被接收方收到，而且是不完整的数据。所以接收方需要知道会否曾经发生冲突，收到的数据是否完整

![](https://2457808883-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRxJcEoJGnxpkBfWvFRPw%2Fuploads%2Fgit-blob-7414022396bf1128ed52ef551f5f62ee87a78db8%2F%E5%86%B2%E7%AA%81%E5%B8%A6%E6%9D%A5%E7%9A%84%E9%97%AE%E9%A2%98.png?alt=media)

**争用期（解决不完整数据问题）**

从开始发送数据，到检测到冲突，这段时间是不确定的，它的最大值成为争用期。如果在争用期内没有检测到冲突，以后也不会有冲突产生了

在以太网中，争用期 = 2倍总线长度 / 信号的传播速度

**最短帧长（解决不完整数据问题）**

以太网取 5.12 μs 为争用期的长度。对于 10Mb/s 以太网，在争用期内可发送512 bit，即64字节。以太网在发送数据时，若前64字节没有发生冲突，则后续的数据就不会发生冲突。

（10 Mb/s \* 5.12 μs = 512 bit）

以太网规定了最短有效帧长为 64 字节，凡长度小于 64 字节的帧都是由于冲突而异常中止的无效帧
