网络编程(三)数据链路相关知识
数据链路,指 OSI 参考模型中的数据链路层,有时也指以太网、无线局域网等通信手段。
各个设备之间在数据传输时,数据链路层和物理层都是必不可少的。数据链路层的协议定义了通过通信媒介互连的设备之间传输的规范。
MAC 地址
MAC 地址用于识别数据链路中互连的节点。以太网、无线 LAN、蓝牙等设备都是使用的相同规格的 MAC 地址。
MAC 地址长 48 比特,在使用网卡(NIC)的情况下,MAC 地址一般会被烧入到 ROM 中。因此,任何一个网卡的 MAC 地址都是唯一的,在全世界都不会有重复(凡事有例外:微机板自己设置 MAC;虚拟机分配的 MAC 等不能确保不重复)。
MAC 地址中 3~24 位(比特位)表示厂商识别码,每个 NIC 厂商都有特定唯一的识别数字。25~48 位是厂商内部为识别每个网卡而用。因此,可以保证全世界不会有相同 MAC 地址的网卡。
半双工与全双工通信
半双工是指,只发送或只接收的通信方式。它类似于无线电收发器,若两端同时说话,是听不见对方说的话的。而全双工不同,它允许在同一时间既可以发送数据也可以接收数据。类似于电话,接打双方可以同时说话。
共享介质网络与非共享介质网络
从通信介质的使用方法上看,网络可分为共享介质型和非共享介质型。
共享介质网络
指由多个设备共享一个通信介质的一种网络。最早的以太网和 FDDI 就是介质共享型网络。在这种方式下,设备之间使用同一个载波信道进行发送和接收。为此,基本上采用半双工通信方式,并有必要对介质进行访问控制。
非共享介质网络
是指不共享介质,是对介质采取专用的一种传输控制方式。在这种方式下,网络中的每个站直连交换机,由交换机负责转发数据帧。此方式下,发送端与接收端并不共享通信介质,因此很多情况下采用全双工通信方式。
最近它也成为了以太网的主流方式。通过以太网交换机构建网络,从而使计算机与交换机端口之间形成一对一的连接,即可实现全双工通信。
该方式还可以根据交换机的高级特性构建虚拟局域网(VLAN,Virtual LAN)、进行流量控制等。当然,这种方式也有一个致命的弱点,那就是一旦交换机发生故障,与之相连的所有计算机之间都将无法通信。
交换集线器(以太网交换机)
这是一种将非介质共享型网络中所使用的交换机用在以太网中的技术,交换集线器也叫做以太网交换机。
以太网交换机就是持有多个端口的网桥,它们根据数据链路层中每个帧的目标 MAC 地址,决定从哪个网络接口发送数据。这时所参考的、用以记录发送接口的表就叫做转发表(Forwarding Table)。
自学过程
上面提到的转发表不需要人工在交换机上面进行设置,可以自动生成。
数据链路层的每个通过点在接到包时,会从中将源 MAC 地址以及曾经接收该地址发送的数据包的接口作为对应关系记录到转发表中。以某个 MAC 地址作为源地址的包由某一接口接收,实质上可以理解为该 MAC 地址就是该接口的目标。因此也可以说,以该 MAC 地址作为目标地址的包,经由该接口送出即可。这一过程也叫自学过程。
交换机的转发方式
1、存储转发
存储转发方式检查以太网数据帧末尾的 FCS 位后再进行转发。因此,可以避免发送由于冲突而被破坏的帧或噪声导致的错误帧。
2、直通转发
不需要将整个帧全部接收下来以后再进行转发。只需要得知目标地址即可开始转发。因此,它具有延迟较短的优势。但同时也不可避免地有发送错误帧的可能性。
VLAN
为了减少实际网络拓扑的修改,可以使用带有 VLAN 功能的交换机。
VLAN 技术附加到网桥/2 层交换机上,就可以切断所有 VLAN 之间的所有通信。因此,相比一般的网桥/2 层交换机,VLAN 可以过滤多余的包,提高网络的承载效率。
简单 VLAN
如下图所示,是一个简单的 VLAN,该交换机按照其端口区分了 A、B 两个网段,从而区分了广播数据传播的范围、减少了网络负载并高了网络的安全性。然而异构的两个网段之间,就需要利用具有路由功能的交换机(如 3 层交换机),或在各段中间通过路由器的连接才能实现通信。
TAG VLAN(定义了 IEEE802.1Q 的标准)
TAG VLAN 中对每个网段都用一个 VLAN ID 的标签进行唯一标识。
在交换机中传输帧时,在以太网首部加入这个 VID 标签,根据这个值决定将数据帧发送给哪个网段。
以太网
在众多数据链路中最为著名、使用最为广泛的莫过于以太网(Ethernet)(以太网(Ethernet)一词源于 Ether(以太),意为介质。在爱因斯坦提出量子力学之前,人们普遍认为宇宙空间充满以太,并以波的形式传送着光。) 。
现在,以太网已成为最具兼容性与未来发展性的一种数据链路。
早期以太网结构
初期使用多台终端使用同一电缆的共享介质型的连接方式。
现代以太网结构
终端与交换机之间独占电缆的方式实现以太网通信。
以太网分类
下图展示以太网介质,不做详细介绍:
以太网帧格式
以太网帧前端有一个叫做前导码(Preamble)的部分,表示一个以太网帧的开始,也是对端网卡能够确保与其同步的标志。
前导码如下所示:
以太网帧本体的前端是以太网的首部,它总共占 14 个字节。分别是 6 个字节的目标 MAC 地址、6 个字节的源 MAC 地址以及 2 个字节的上层协议类型。
版权声明: 本文为 InfoQ 作者【Albert Edison】的原创文章。
原文链接:【http://xie.infoq.cn/article/f5b6212e397c809bc0f3e1875】。文章转载请联系作者。
评论