[架构之路-41]:目标系统 - 系统软件 - Linux下的网络通信-1-计算机网络拓扑架构ISO协议栈以太网协议栈与工作原理

Posted 文火冰糖的硅基工坊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[架构之路-41]:目标系统 - 系统软件 - Linux下的网络通信-1-计算机网络拓扑架构ISO协议栈以太网协议栈与工作原理相关的知识,希望对你有一定的参考价值。

目录

前言:

第1章 计算机网络

1.1 什么是计算机网络

1.2 互联网

1.3 什么是移动互联网

1.4 移动网络

1.2 什么是协议(protocol)

1.3 ISO七层协议

1.4 常见的网络拓扑结构

第2章 以太网协议栈

2.1 以太网在TCP/IP协议栈中的位置

2.2 以太网协议族概述

2.3 以太网协议栈

第3章 以太网MAC层

3.1 MAC层基本帧结构

3.3 以太网最小帧长度

3.4 以太网最大帧长

第4章 物理层

4.2 物理层

4.3 物理层标准

第5章 以太网交换机原理

5.1 概述

5.2 以太网交换机外观

5.3 以太网交换机硬件组成

5.4 MAC地址

5.5 MAC地址表与其建立过程

5.6 以太网交换原理(数据转发)


前言:

网络的本质是把多个计算机的资源整合起来,组织一个更大的计算机资源。

本文就是探讨,计算机网络的基本架构以及以太网。

第1章 计算机网络

1.1 什么是计算机网络

计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来。在网络操作系统网络管理软件网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。

计算机网络主要是由一些通用的、可编程的硬件互连而成的,而这些硬件并非专门用来实现某一特定目的(例如,传送数据或视频信号)。这些可编程的硬件用于传送多种不同类型的数据,并能支持广泛的和日益增长的应用。

计算机网络也称计算机通信网。关于计算机网络的最简单定义是:一些相互连接的、以共享资源为目的的、自治的计算机的集合。若按此定义,则早期的面向终端的网络都不能算是计算机网络,而只能称为联机系统(因为那时的许多终端不能算是自治的计算机)。但随着硬件价格的下降,许多终端都具有一定的智能,因而“终端”和“自治的计算机”逐渐失去了严格的界限。若用微型计算机作为终端使用,按上述定义,则早期的那种面向终端的网络也可称为计算机网络。

1.2 互联网

互联网(internet),又称国际网络,指的是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一巨大国际网络。

互联网始于1969年美国阿帕网。通常internet泛指互联网,而Internet则特指因特网。这种将计算机网络互相联接在一起的方法可称作“网络互联”,在这基础上发展出覆盖全世界的全球性互联网络称互联网,即是互相连接一起的网络结构。互联网并不等同万维网,万维网只是一建基于超文本相互链接而成的全球性系统,且是互联网所能提供的服务其中之一。

internet表示的意思是互联网,又称网际网络,根据音译也被叫做因特网(Internet)、英特网,是网络与网络之间所串连成的庞大网络。这些网络以一组通用的协议相连,形成逻辑上的单一且巨大的全球化网络,在这个网络中有交换机路由器等网络设备、各种不同的连接链路、种类繁多的服务器和数不尽的计算机、终端。使用互联网可以将信息瞬间发送到千里之外的人手中,它是信息社会的基础。

1.3 什么是移动互联网

移动互联网是PC互联网发展的必然产物,将移动通信PC互联网二者结合起来,成为一体。

它是互联网的技术、平台、商业模式应用移动通信技术结合并实践的活动的总称。

移动互联网是移动和互联网融合的产物,继承了移动随时、随地、随身和互联网开放、分享、互动的优势,是一个全国性的、以宽带IP为技术核心的,可同时提供话音、传真、数据、图像、多媒体等高品质电信服务的新一代开放的电信基础网络,由运营商提供无线接入,互联网企业提供各种成熟的应用。

1.4 移动网络

移动网络(Mobile web)指的是使用移动设备,如手机 ,掌上电脑或其它便携式工具连接到公共网络,实现互联网访问的方式。移动网络不需要固定的设备进行访问。移动网络主要指的是基于浏览器的Web服务,如万维网 , WAP和i - mode(日本)。

1.2 什么是协议(protocol)

协议,网络协议的简称,网络协议是通信计算机双方必须共同遵从的一组约定。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。

它的三要素是:语法语义时序

为了使数据在网络上从源到达目的,网络通信的参与方必须遵循相同的规则,这套规则称为协议(protocol),它最终体现为在网络上传输的数据包的格式。

协议往往分成几个层次进行定义,分层定义是为了使某一层协议的改变不影响其他层次的协议。

1.3 ISO七层协议

开放系统互联(OSI)模型是由国际标准化组织(ISO)于1984年提出的一种标准参考模型,是一种关于由不同供应商提供的不同设备和应用软件之间的网络通信的概念性框架结构。它被公认为是计算机通信和 internet 网络通信的一种基本结构模型。

当今使用的大多数网络通信协议都是基于 OSI 模型结构。OSI 模型将通信处理过程定义为七层,并将网络计算机间的移动信息任务划分为七个更小的、更易管理的任务组。各个任务或任务组被分配到 ISO 参考模型各层。各层相对独立(self-contained),从而使得分配到各层的任务能够独立实现。这样当其中一层提供的某解决方案更新时,它不会影响其它层。每一层使用下层提供的服务,并向上层提供服务。

ISO 定义了基于 OSI 模型的 internet 网络通信协议组,基本上由欧洲国家提出。

应用层

网络服务与最终用户的一个接口。

协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP

表示层

数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层)

格式有,JPEG、ASCll、EBCDIC、加密格式等 [2] 

会话层

建立、管理、终止会话。(在五层模型里面已经合并到了应用层

对应主机进程,指本地主机与远程主机正在进行的会话

传输层

定义传输数据的协议端口号,以及流控和差错校验。

协议有:TCP UDP,数据包一旦离开网卡即进入网络传输层

网络层

进行逻辑地址寻址,实现不同网络之间的路径选择。

协议有:ICMP IGMP IP(IPV4 IPV6)

数据链路层

建立逻辑连接、进行硬件地址寻址、差错校验 [3]  等功能。(由底层网络定义协议)

将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。

物理层

建立、维护、断开物理连接。(由底层网络定义协议)

 ''

TCP/IP 层级模型结构,应用层之间的协议通过逐级调用传输层(Transport layer)、网络层(Network Layer)和物理数据链路层(Physical Data Link)而可以实现应用层的应用程序通信互联。

应用层需要关心应用程序的逻辑细节,而不是数据在网络中的传输活动。应用层其下三层则处理真正的通信细节。在 Internet 整个发展过程中的所有思想和着重点都以一种称为 RFC(Request For Comments)的文档格式存在。针对每一种特定的 TCP/IP 应用,有相应的 RFC [4]  文档。

1.4 常见的网络拓扑结构

网络拓扑结构是指网络上的计算机和各种设备实现互联时的抽象连接方式。

拓扑不关心每台计算机或设备的细节,关心它们相互的连接关系,并试图将这些关系通过图表示出来。

拓扑Topology)是将各种物体的位置表示成抽象位置。在网络中,拓扑形象地描述了网络的安排和配置,包括各种结点和结点的相互关系。拓扑不关心事物的细节也不在乎什么相互的比例关系,只将讨论范围内的事物之间的相互关系表示出来,将这些事物之间的关系通过图表示出来。

网络中的计算机等设备要实现互联,就需要以一定的结构方式进行连接,这种连接方式就叫做"拓扑结构",通俗地讲这些网络设备如何连接在一起的。

拓扑图给出网络服务器工作站的网络配置和相互间的连接。它的结构主要有星型结构总线结构、树型结构、网状结构、蜂窝状结构、分布式结构等。

(1)总线型拓扑结构

【释义】

采用一条公共总线将所有站点连接起来,即所有节点连接到一条传输介质上。

所有节点通过相应的硬件接口连接至总线,每一个节点发送的信息都沿着总线向两个方向传输,该节点发送的信息可以被总线上的所有节点接收,每个节点上的网络接口板硬件都具有接收信息和发送信息的功能。也就说,总线为所有被连接的节点共享,它们分时复用总线,但不能同时占用总线。

【案例】

  • 传统的总线型以太网,总线是一根物理额传输线。
  • 无线基站+手机终端, WIFI路由器+WIFI终端,构成的就是一个“类“总线型的网络,“总线”是指空口无线电磁波资源。

【特点】:

  • 总线型拓扑结构只具备一定程度的负载能力,导致总线长度有限,一条总线上连接的节点数量因此也是有限的;
  • 总线型结构简单灵活,成本较低,非常易于扩充,增减节点相对比较容易;
  • 多个节点共用一条总线
  • 在低负载时信道利用率高
  • 在高负载时,冲突增加,信道利用率急剧下降

(2)星型拓扑结构

【释义】:

星型拓扑结构由各个节点通过点对点的方式与中央节点连接构成,中央节点执行集中式通信控制策略,所以中央节点非常复杂,通信处理负荷也非常重。

【案例】

  • 以太网交换机、路由器自身构建的就是星型网络拓扑结构

【特点】:

  • 任何两个节点都必须通过中央节点进行通信;
  • 网络拓扑结构简单,易于管理;
  • 部署与维护相对比较容易;
  • 中央节点负荷较重;
  • 任意两个节点,可以通过中央节点并行通信,不相互干扰

(3)环型拓扑结构

【释义】:

环型网络拓扑结构中,各个节点通过环路接口连接至一条首尾相连的闭合环型通信线路,连接至环路的任何节点都可以发送信息,一个节点发出的信息必须穿越所有的环路接口,信息流中目的地址与线路中某节点地址一致时,则该节点接收信息,信息会继续向下一个环路接口传送,直到该信息流回到最开始的发送环路接口节点为止。常见的就是令牌环网络。

令牌环网(Token-ring network)常用于IBM系统中,其支持的速率为4Mbps和16Mbps两种。Novell、IBM LAN Server支持16MbpsIEEE802.5/令牌环网技术。在这种网络中,有一种专门的帧称为“令牌”,在环路上持续地传输来确定一个结点何时可以发送包,只有获得令牌的节点,才允许发送数据包。由于以太网技术发展迅速,令牌网存在固有缺点,令牌在整个计算机局域网已不多见,原来提供令牌网设备的厂商多数也退出了市场,所以在局域网市场中令牌网可以说是“明日黄花”了。

【特点】:

  • 两个节点间仅有唯一的通路,信息沿固定方向流动,信息传输的路径选择控制得以简化;
  • 所需的电缆长度较短;
  • 由于信息是串行穿过环路中多个节点,当节点过多时,会影响传输效率,延长网络的响应时间;
  • 由于环路是封闭的,所以不利于扩充;
  • 由于信息传输要通过环路上的每一个节点,因此某个节点发生故障将会导致全网故障。

(4)树型拓扑结构

【释义】:

树形拓扑总线拓扑演变而来,形状像一棵倒置的树,顶端是树根,树根以下带分支,每个分支还可再带子分支。

树形拓扑(tree topology)是一种类似总线拓扑的局域网拓扑。树形网络可以包含分支,每个分支又可包含多个结点。树形拓扑是总线拓扑的扩充形式,传输介质是不封闭的分支电缆,树形拓扑和总线拓扑一样,一个站点发送数据,其他站点都能接收。

树形拓扑是适应性很强的一种拓扑结构,适应范围很宽,非常适合于分主次、分等级的层次型管理系统。树形拓扑的特点与总线形拓扑相同。 

【案例】:

  • 2G/3G/4G/5G无线通信网就是树型的网络架构
  • 以太网组成的局域网

【特点】:

  • 采用分级的集中控制方式,每条通信线路均可以双向传输,任何一个节点发送的信息都可以传输至整个树型网路中的所有节点,具备一定的容错能力;
  • 利于扩展,树型拓扑结构可以比较容易地继续增加其他分支以及子分支;
  • 易于隔离故障,出现故障的某个分支可以比较容易地隔离开来。
  • 除叶节点及其相连链路以外的任何其他节点或链路出现的故障都将会影响整个网络。
  • 任何节点出故障,都会响应其管辖的所有节点。

(5)网状拓扑结构

【释义】:网状拓扑结构是指各个节点通过传输线路互相连接起来,并且每一个节点都至少与其他两个节点两两相连接

【案例】:

  • 只有安全要求极高的场合才会采用此网络拓扑

【特点】:

  • 各个节点之间路径比较多,局部故障不会影响整个网络,因此可靠性高;
  • 节点间有多种通信信道,信息传输可选择最佳路径使得延时最小;
  • 网络结构复杂,成本较高,不易扩充,不易维护;
  • 网络控制机制比较复杂。

(6)混合型拓扑结构

【释义】:

混合型拓扑结构是指将两种或两种以上的网络拓扑结构混合而成的一种网络拓扑结构。

【案例】:

  • 互联网

【特点】:

  • 可以集合多种网络拓扑结构中的优点;
  • 易于诊断故障,把故障网络进行隔离即可;
  • 网络扩展比较容易;
  • 所需线路较长,建网成本较高。

第2章 以太网协议栈

2.1 以太网在TCP/IP协议栈中的位置

2.2 以太网协议族概述

以太网是一种计算机局域网技术。IEEE组织的IEEE 802.3标准制定了以太网的技术标准,它规定了包括物理层的连线、电子信号和介质访问层协议的内容。

以太网是应用最普遍的局域网技术,取代了其他局域网技术如令牌环FDDIARCNET

以太网的数据传输速率高达到10M、100M、1Gbit/s, 10Gbit/s,  25Gbit/s、100G, 可满足非持续性网络数据传输的需要。

以太网大量用于局域网和传输网。

2.3 以太网协议栈

(0)上层:IP/ARP/......

(1)MAC层

(2)MAC层与物理层接口

(3)物理层

第3章 以太网MAC层

3.1 MAC层基本帧结构

上图中每个字段的含义如下表所示:

字段含义
前同步码用来使接收端的适配器在接收 MAC 帧时能够迅速调整时钟频率,使它和发送端的频率相同。前同步码(时钟同步)为 7 个字节,1 和 0 交替。
帧开始定界符帧的起始符,为 1 个字节。前 6 位 1 和 0 交替,最后的两个连续的 1 表示告诉接收端适配器:“帧信息要来了,准备接收”。
目的地址接收帧的网络适配器的物理地址(MAC 地址),为 6 个字节(48 比特)。作用是当网卡接收到一个数据帧时,首先会检查该帧的目的地址,是否与当前适配器的物理地址相同,如果相同,就会进一步处理;如果不同,则直接丢弃。
源地址发送帧的网络适配器的物理地址(MAC 地址),为 6 个字节(48 比特)。
类型上层协议的类型。由于上层协议众多,所以在处理数据的时候必须设置该字段,标识数据交付哪个协议处理。例如,字段为 0x0800 时,表示将数据交付给 IP 协议。
数据也称为效载荷,表示交付给上层的数据。以太网帧数据长度最小为 46 字节,最大为 1500 字节。如果不足 46 字节时,会填充到最小长度。最大值也叫最大传输单元(MTU)。

在 Linux 中,使用 ifconfig 命令可以查看该值,通常为 1500。
帧检验序列 FCS检测该帧是否出现差错,占 4 个字节(32 比特)。发送方计算帧的循环冗余码校验(CRC)值,把这个值写到帧里。接收方计算机重新计算 CRC,与 FCS 字段的值进行比较。如果两个值不相同,则表示传输过程中发生了数据丢失或改变。这时,就需要重新传输这一帧。

3.2 MAC层VLAN以及VLAN帧结构

VLAN(Virtual Local Area Network)的中文名为"虚拟局域网"。

虚拟局域网(VLAN)是一组逻辑上的设备和用户,这些设备和用户并不受物理位置的限制,可以根据功能、部门及应用等因素将它们组织起来,相互之间的通信就好像它们在同一个网段中一样,由此得名虚拟局域网。

虚拟局域网是在底层的共享的物理网络的基础之上构建的一个个相关隔离的虚拟的局域网,这得益于对MAC层帧结构进行了改造。在现有的以太网帧结构的基础之上,增加了vlan tag的域。

3.3 以太网最小帧长度

最小长度: 64byte, 设定最小长度的目前是为了区分出超小的错帧。

高层协议必须保证Data域至少包含46字节,这样加上以太网帧头的14字节和帧尾的4字节校验码正好满足64字节的最小帧长,如图所示。如果实际数据不足46个字节,则高层协议必须填充一些数据单元。

为什么有最小长度限制呢?

这与以太网的底层机制CSMA/CD(载波侦听多路访问冲突检测)相关。

以太网中最小帧长是由最大传输距离冲突检测机制共同决定的。

规定最小帧长是为了避免这种情况发生:A站点已经将一个数据包的最后一个Bit发送完毕,但这个报文的第一个Bit还没有传送到距离很远的B站点,而B站点认为线路空闲继续发送数据,导致冲突。设置了最小长度,能够确保A连续发送数据完成前,所有的节点都能够检测到网络中的载波信号,就检测到链路忙,这样,任何其他站点不会误认为链路此时空间,而实际有一个成功发送的数据帧在链路上传输。

3.4 以太网最大帧长

以太网自身设计的最大承载:

(1)length/type<= 0x600 (1536),表示数据区的数据是原始的Raw数据,没有特定的数据,该则域指示了Raw数据的长度,最大长度为1536字节。

 (2)length/type > 0x600 (1536)时,表示数据区是特定数据结构类型的数据,不需要以太网帧头指示数据帧的长度,数据的实际长度有数据区内部指定。

  • 地址域:6 + 6 = 12个字节
  • 类型/长度域:2个字节
  • VLAN Tag:4字节
  • CRC/FCS:4字节
  • 数据域:0~1500
  • 填充域:0~46

非VLAN以太网帧的IP 数据域(PDU)的最大长度:1500

非VLAN以太网帧的IP数据全帧的最大长度:12 + 2 + 1500 + 4 = 1518,

VLAN以太网帧的IP数据全帧的最大长度:12 + 2 + 4 + 1500 + 4 = 1522。

无论是1518,还是1522的长度,都没有超过以太网的最大限制的长度:1536字节。

(3)jumbo帧:超长帧、巨帧

巨帧(巨型帧、Jumbo Frame)是一种厂商标准的超长帧格式,专门为千兆以太网而设计,目前还没有获得IEEE标准委员会的认可。以太网标准的最大帧长度为1518字节,而Jumbo Frame的长度各厂商有所不同,从9000字节~64000字节不等。采用Jumbo Frame能够令千兆以太网性能充分发挥,使数据传输效率提高50%~100%。超长帧一般在内部网络的存储环境中应用较多。

巨帧需要在相互通讯的2个通讯端口(交换机端口或网卡端口)上同时支持,交换机把Jumbo Frame格式的数据转发向不兼容Jumbo Frame的端口时应进行帧格式的转换,即把Jumbo Frame帧格式的数据转换成标准以太网的帧格式,从而保证其正常工作。相反,从不兼容Jumbo Frame的端口向支持Jumbo Frame的端口转发数据时,交换机可以把多个标准以太网帧合并成超长Jumbo Frame帧,从而提高传输效率。

第4章 物理层

4.1 MAC层与物理层接口

  • MII:媒体无关接口,支持10M/100M
  • GMII:媒体无关接口,支持10M/100M/1000M
  • RMII:简化媒体无关接口,比MII有更少的I/O接口,  支持10M/100M
  • RGMII:简化媒体无关接口,比MII有更少的I/O接口,  支持10M/100M/1G
  • SGMII:串行媒体无关接口,采用单线串行通信, 支持10M/100M/1G
  • SGMII:串行媒体无关接口,采用单线串行通信, 支持10M/100M/1000M/10G/100G

4.2 物理层

  • PCS:物理层编码与解码
  • PMA:物理媒介无关子层
  • PMD:物理媒介相关子层
  • 物理媒介:光或电

4.3 物理层标准

(1)标准以太网

  • 10Base-5 使用粗同轴电缆,最大网段长度为500m,基带传输方法;
  • 10Base-2 使用细同轴电缆,最大网段长度为185m,基带传输方法;
  • 10Base-T 使用双绞线电缆,最大网段长度为100m;
  • 1Base-5 使用双绞线电缆,最大网段长度为500m,传输速度为1Mbps;
  • 10Broad-36 使用同轴电缆(RG-59/U CATV),最大网段长度为3600m,是一种宽带传输方式;
  • 10Base-F 使用光纤传输介质,传输速率为10Mbps;

(2)快速以太网

(3)千兆以太网

  • 1000Base-SX 只支持多模光纤,可以采用直径为62.5um或50um的多模光纤,工作波长为770-860nm,传输距离为220-550m。
  • 1000Base-LX 可以采用直径为62.5um或50um的多模光纤,工作波长范围为1270-1355nm,传输距离为550m。
  • 1000Base-LX 可以支持直径为9um或10um的单模光纤,工作波长范围为1270-1355nm,传输距离为5km左右。
  • 1000Base-CX 采用150欧屏蔽双绞线(STP),传输距离为25m。
  • 000Base-T 是100Base-T自然扩展,与10Base-T、100Base-T完全兼容

(4)10Gbps以太网

  • 10GBASE-CX4 -- 短距离铜缆方案用于InfiniBand4x连接器和CX4电缆,最大长度15米。

  • 10GBASE-SR -- 用于短距离多模光纤,根据电缆类型能达到26-82米,使用新型2GHz多模光纤可以达到300米。

  • 10GBASE-LX4 -- 使用波分复用支持多模光纤240-300米,单模光纤超过10公里。

  • 10GBASE-LR和10GBASE-ER -- 透过单模光纤分别支持10公里和40公里

  • 10GBASE-SW、10GBASE-LW、10GBASE-EW。用于广域网PHY、OC-192 / STM-64同步光纤网/SDH设备。物理层分别对应10GBASE-SR、10GBASE-LR和10GBASE-ER,因此使用相同光纤支持距离也一致。(无广域网PHY标准)

  • 10GBASE-T-- 使用屏蔽或非屏蔽双绞线,使用CAT-6A类线至少支持100米传输。CAT-6类线也在较短的距离上支持10GBASE-T。

(5)40G/100Gbps以太网

  • 40GBASE-KR4 -- 背板方案,最少距离1米。

  • 40GBASE-CR4 / 100GBASE-CR10 -- 短距离铜缆方案,最大长度大约7米。

  • 40GBASE-SR4 / 100GBASE-SR10 -- 用于短距离多模光纤,长度至少在100米以上。

  • 40GBASE-LR4 / 100GBASE-LR10 -- 使用单模光纤,距离超过10公里。

  • 100GBASE-ER4 -- 使用单模光纤,距离超过40公里。

第5章 以太网交换机原理

5.1 概述

以太网交换机是转发以太网帧结构数据交换机

老式的以太网是采用共享总线型+侦听冲突检测构建的总线型局域网。

新型的以太网是以以太网交换机为中心构建的星型局域网。

以太网交换机的结构是每个端口都直接与主机相连,并且一般都工作在全双工方式。

交换机能同时连通许多对端口,使每一对相互通信的主机都能像独占通信媒体那样,进行无冲突地传输数据。

5.2 以太网交换机外观

5.3 以太网交换机硬件组成

  • KS8999是MAC层基于MAC地址表进行以太网帧转发的芯片。
  • 25M:以太网时钟
  • PHY层芯片
  • Pluse H1164:变压器,进行电压的变换
  • S3C4510B:ARM CPU, 运行管理软件,包括Web Server、串口
  • SDRAM:存放代码和永久性数据
  • FLASH:存放程序
  • E2PROM:存放CPU的以太网网接口的MAC地址。
  • MAX232:串口电平变压器
  • 串口接口
  • JTAG接口:JTAG调试

5.4 MAC地址

MAC地址英语:Media Access Control Address),直译为媒体存取控制位址,也称为局域网地址(LAN Address),MAC位址以太网地址(Ethernet Address)或物理地址(Physical Address),它是一个用来确认网络设备位置的位址。在OSI模型中,第三层网络层负责IP地址,第二层数据链路层则负责MAC位址 [1]  。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址。

网络中每台设备都有一个唯一的网络标识,这个地址叫MAC地址或网卡地址,由网络设备制造商生产时写在硬件内部。MAC地址则是48位的(6个字节),通常表示为12个16进制数,每2个16进制数之间用冒号隔开,如08:00:20:0A:8C:6D就是一个MAC地址。具体如下图所示,其前3字节表示OUI(Organizationally Unique Identifier),是IEEE的注册管理机构给不同厂家分配的代码,区分不同的厂家。后3字节由厂家自行分配 [2]  。

MAC地址最高字节(MSB)的低第二位(LSb)表示这个MAC地址是全局的还是本地的,即U/L(Universal/Local)位,如果为0,表示是全局地址。所有的OUI这一位都是0。

MAC地址最高字节(MSB)的低第一位(LSb),表示这个MAC地址是单播还是多播。0表示单播。

MAC(Media Access Control, 介质访问控制)地址是识别LAN(局域网)节点的标识。

网卡的物理地址通常是由网卡生产厂家烧入网卡的EPROM(一种闪存芯片,通常可以通过程序擦写),它存储的是传输数据时真正赖以标识发出数据的电脑和接收数据的主机的地址。

5.5 MAC地址表与其建立过程

交换机技术在转发数据前必须知道它的每一个端口所连接的主机的MAC地址,构建出一个MAC地址表。

当交换机从某个端口收到数据帧后,读取数据帧中封装的目的地MAC地址信息,然后查阅事先构建的MAC地址表,找出和目的地地址相对应的端口,从该端口把数据转发出去,其他端口则不受影响,这样避免了与其它端口上的数据发生碰撞。因此构建MAC地址表是交换机的首要工作。

下面举例说明交换机建立地址表的过程:

(1)假设主机A向主机C发送一个数据帧(每一个数据帧中都包含有源MAC地址和目的MAC地址),当该数据帧从E0端口进入交换机后,交换机通过检查数据帧中的源MAC地址字段,将该字段的值(主机A的MAC地址)放入MAC地址表中,并把它与E0端口对应起来,表示E0端口所连接的主机是A。此时,由于在MAC地址表中没有关于目的地MAC地址(主机C的MAC地址)的条目。交换机技术将此帧向除了E0端口以外的所有端口转发,从而保证主机C能收到该帧(这种操作叫flooding)。

(2)同理,当交换机收到主机B、C、D的数据后也会把他们的地址学习到,写入地址表中,并将相应的端口和MAC地址对应起来。最终会把所有的主机地址都学习到,构建出完整的地址表。此时,若主机A再向主机C发送一个数据帧,应用交换机技术则根据它的MAC地址表中的地址对应关系,将此数据帧仅从它的E2端口转发出去。从而仅使主机C接收到主机A发送给它的数据帧,不再影响其他端口。那么在主机A和主机C通信的同时其他主机(比如主机B和主机D)之间也可以通信。

(3)当交换机建立起完整的MAC地址表之后,对数据帧的转发是通过查找MAC地址表得到对应的端口,从而将数据帧通过特定的端口发送出去的。但是,对于从一个端口进入的广播数据及在地址表中找不到地址条目的数据,交换机会把该数据帧从除了进入端口之外的所有端口转发出去。从这个角度来说,交换机互连的设备处于同一个广播域内,但它们处于不同的碰撞域内,并且处于不同区域!

5.6 以太网交换原理(数据转发)

交换机是位于数据链路层,主要目的就是识别帧和转发帧。

1、直通转发(cut-through switching )

直通式交换,也就是交换机在收到帧后,只要查看到此帧的目的MAC地址,马上凭借MAC地址表向相应的端口转发;这种方式的好处是速度快,转发所需时间短,但问题是可能同时把一些错误的、无用的帧也同时转发向目地端。

2、存储转发(Store-and-Forward switching)

存储转发机制就是交换机的每个端口被分配到一定的缓冲区(内存空间,一般为64 k),数据在进入交换机后读取完目标MAC地址,凭借MAC地址表了解到转发关系后,数据会一直在此端口的缓冲区内存储,直到数据填满缓冲区然后一次把所有数据转发到目的地。在数据存储在缓冲区期间,交换机会对数据作出简单效验,如果此时发现错误的数据,就不会转发到目地端,而是在这里直接丢弃掉了。当然这种方式可以提供更好的数据转发质量,但是相对的转发所需时间就会比直通交换要长一点。

3、无碎片转发(segment-free switching)

碎片隔离式也叫改进型直通式交换,利用到直通式的优势就是转发迟延小,同时会检查每个数据帧的长度。因为原理上,每个以太网帧不可能小于64字节,大于1518字节。如果交换机检查到有小过64字节或大于1518字节的帧,它都会认为这些帧是“残缺帧”或“超长帧”,那么也会在转发前丢弃掉。

这种方式综合了直通交换和存储转发的优势,很多高速交换机会采用,但是并没有存储转发方式来的普及。

无论是直通转发还是存储转发都是一种基于MAC地址二层转发方式,而且它们的转发策略都是基于 目的MAC(DMAC)的,在这一点上这两种转发方式没有区别。

第三种方法主要是第一种“直通转发”的变形。

它们之间的最大区别在于:它们何时去处理转发,也就是交换机怎样去处理数据包的接收进程和转发进程的关系。

以上是关于[架构之路-41]:目标系统 - 系统软件 - Linux下的网络通信-1-计算机网络拓扑架构ISO协议栈以太网协议栈与工作原理的主要内容,如果未能解决你的问题,请参考以下文章

[架构之路-11]:目标系统 - 架构 - 嵌入式系统软件+硬件的基本通用架构

[架构之路-56]:目标系统 - 平台软件 - 总体架构概述

[架构之路-28]:目标系统 - 系统软件 - Linux OS内核功能架构图解内核构建内核启动流程

[架构之路-25]:目标系统 - 系统软件 - bootloader uboot内存映射与启动流程

[架构之路-21]:目标系统 - 系统软件 - 计算机系统架构计算机指令系统结构化程序与分层编程。

[架构之路-29]:目标系统 - 系统软件 - Linux OS内核以及内核驱动的调试技术