3.6.1 局域网的基本概念与体系结构
3.6.1.1 冲突域与广播域的概念
一个最简单的局域网就是把每个电脑都通过网线连接起来。一条电脑发出的信息别人都能接受到。
广播是局域网的核心。甚至可以认为,局域网的本质就应该是广播的网络单元。为什么需要广播呢?因为我们知道发现网络里有谁。要么有一个中心化的索引记录着网络中的索引(这不就是路由器么),而去中心化的方式就只有广播。
3.6.1.2 MAC地址
链路层地址有不同的叫法,比如物理地址 比如LAN 地址和 MAC 地址。
如果整个网络里只有点对点的网络,那么显然是不需要地址的。但这会让我们需要 条线路,更别说无线通讯从根本上就不是点对点的。只要有中间转发,那么帧中就必须包含目的地址。
3.6.2 以太网与IEEE 802.3
3.6.2.1 以太网
以太网诞生于七十年代施乐的实验室。严格意义上讲,以太网应该指的是DEC,Intel和施乐推出的以太网 DIX Ethernet v2。
1983年的IEEE 802.3 建立了一种接近局域网规格。严格来讲,它不应该称为以太网。但实际中我们常常混为一谈。它们的帧格式有一些微小变化,但是可以互操作。
今天,市面上实际采用的标准都是DIX Ethernet v2
3.6.2.2 以太网CSMA/CD
经典的以太网是采用总线型的同轴电缆连接的,称为10 Base-5,一个冲突域里面最多有5个网段。网段之间用中继器连接。采用CSMA/CD协议搭配指数退避算法。
3.6.2.3 以太网指数退避算法
在冲突域内两个相距最远的主机的端到端传播时延的两倍被称为争用期。
比如这是我们第一次冲突,那么我们退避{0,1}倍时间中随机。
这是第二次冲突,退避{0,1,2,3}倍时间中随机。
第三次冲突,退避{0,1,2,3,4,5,6,7}倍时间中随机,
冲突10倍之后,但是最多也只能退避1023倍时间中随机取。
如果16次之后仍然冲突,放弃传输报告上层。
3.6.2.4 MAC地址
MAC 地址有48位,仅仅取决于网卡,是全球唯一的,靠IEEE来分配管理,网卡生产商需要经过授权。它表示为12个十六进制数字,用连字符或者冒号分割。高24位是厂商代码,低24位厂商自行分配。
FF:FF:FF:FF:FF:FF 是广播地址。
MAC地址的整套设计都只是为了一件事:防止链路层的身份地址重复。
网络适配器有多种不同的速率,比如10Gbps的和1Gbps的100Mbps的等等,它们会在网线连上的那一刻交换。
3.6.2.5 以太网帧结构
以太网帧采用曼彻斯特编码:
- 前同步码:8 字节。前七个字节都是10101010,用于同步时钟。原因是不同适配器的时钟保持出厂时就一致是不现实的,它们的时钟速率总有些偏差。
- 目的地址:6 字节的 MAC 地址
- 源地址:同上
- 类型字段: 2字节,决定你是ARP/IPv4/IPv6
- 数据
- CRC: 4字节
- 前同步码
一个好问题是为什么要带有类型字段。我们会发现,在互联网的更底层的包结构里。因为上一层有多种协议,如果你直接扔给上层。上层的数据就会不知道怎么处理。当然,你可以在上层设置一个区别不同协议的头部。请记住,这个头部区别于每个协议自己的头部。这个头部其实可以归到下一层的协议的头部里。
以太网帧的前同步码是硬件生成的,也不受CRC的保护,在未经特殊说明的情况下,当提到以太网帧,我们总是不包含前同步码.
以太网的适配器包含一种特殊的模式,称之为混杂模式,这种情况下它会接收所有可以接受到的帧,又称为绣探
3.6.2.6 以太网标准
10Base-5 半双工 10Base-T: 代替同轴电缆的经典以太网,采用两根双绞线,从而实现了全双工,速度为10Mb/s。采用集线器来连接多个主机.
快速以太网: 100Base-T
以太网提供的是不可靠服务,不可靠就是不是可靠传输,没有后退N帧或者选择重传协议。
3.6.3 IEEE 802.11无线局域网
3.6.4 VLAN基本概念与基本原理
局域网的本质是广播的最小单元。但局域网之内的设备一旦大到一个量级,广播就会带来巨大的负担。所以我们希望能够把局域网切的小一点。
同一个局域网之内是没有流量隔离的。但或许你会想要隔离流量,就不得不需要多个局域网。但多个局域网就会给每一个局域网分配一个交换机。但其实很多交换机的接口都没有用满。
VLAN 技术能够让你用更少的交换机去隔离出更多的局域网。
支持VLAN的交换机在里面增加了流量隔离功能,交换机会记住哪个属于哪个VLAN。
那么对于不同VLAN之间的互通呢。比如说一个VLAN在两个交换机上各有一部分怎么办。一个思路是靠路由器。但这个就不在链路层了。
另一个思路就是直接用线吧应该属于同一个VLAN的给连接起来。当然这样也有不方便的地方。假设你有很多个VLAN都分布在不同的交换机上就要拉很多线。一个更好的解决方案是干线连接. 每台交换机上有一个特地配置的端口叫干线配置端口。发送到交换机之后会在帧加上一个VLAN tag,然后到达别的交换机之后tag会删掉。