HCIA-R&S笔记(二)
以太网帧结构
前言
网络中传输数据时需要定义并遵从一些标准,以太网是根据IEEE802.3标准来管理和控制数据帧的。了解IEEE802.3标准是充分理解以太网中链路层通信的基础
所以说。。。这看不懂的前言有个啥用呢?
凭什么以太网就根据IEEE802.3标准来管理和控制数据帧?
怎么管理和控制数据帧?
我不能自己制定自己的标准?
一、网络通信协议
20世纪60年代以来,网络发展迅速,各个厂商和标准组织为了在数据通信网络领域当老大,自然开始推出自己的标准,厂商又根据不同标准生产出不同硬件和软件:IBM的SNA协议,Novell的IPX/SPX协议,以及OSI参考模型和TCP/IP模型。
IEEE 802.3是工作组和工作组制定的电气和电子工程师协会 (IEEE)标准的集合,该工作组定义了有线以太网的物理层和数据链路层的 介质访问控制(MAC)。
主要内容为:
MAC子层的数据封装所包括的主要内容有:数据封装分为发送数据封装和接收数据封装两部分,包括成帧、编制和差错检测等功能。数据封装的过程:当LLC子层请求发送数据帧时,发送数据封装部分开始按MAC子层的帧格式组帧:
(1)将一个前导码P和一个帧起始定界符SFD附加到帧头部分;
(2)填上目的地址、源地址、计算出LLC数据帧的字节数并填入长度字段LEN;
(3)必要时将填充字符PAD附加到LLC数据帧后;
(4)求出CRC校验码附加到帧校验码序列FCS中;
(5)将完成封装后的MAC帧递交MAC子层的发送介质访问管理部分以供发送; 接收数据解封部分主要用于校验帧的目的地址字段,以确定本站是否应该接受该帧,如地址符合,则将其送到LLC子层,并进行差错校验。
由于TCP/IP 体系经常使用的局域网是 DIX Ethernet V2 而不是 802.3 标准中的几种局域网,因此现在 802 委员会制定的逻辑链路控制子层 LLC(即 802.2 标准)的作用已经不大了。
电气和电子工程师协会(IEEE,全称是Institute of Electrical and Electronics Engineers)是一个美国的电子技术与信息科学工程师的协会,是世界上最大的非营利性专业技术学会,其会员人数超过40万人,遍布160多个国家。IEEE致力于电气、电子、计算机工程和与科学有关的领域的开发和研究,在航空航天、信息技术、电力及消费性电子产品等领域已制定了900多个行业标准,现已发展成为具有较大影响力的国际学术组织。国内已有北京、上海、西安、武汉、郑州等地的55所高校成立IEEE学生分会。
所以就目前来说,使用的最多的是DIX Ethernet V2 标准,严格说来,“以太网”应当是指符合 DIX Ethernet V2 标准的局域网。D(EC)、I(ntel)、X(erox)合作提出的以太网规约DIX V1,是以太网的第一个标准,1982年又推出了第二版的DIX Ethernet V2。
DEC(美国数字设备公司):1958年初,即运出了第一批产品-数字实验室和数字系统组件
Intel:嘿嘿,这个就不用说了吧,虽然戏称为“牙膏厂”,但人家在微处理器领域地位没人敢否定吧。
Xerox(施乐):复印技术的发明公司
计算机设备生产公司+微处理器研发公司+复印技术发明公司,看起来要落实到实际,还得看生产商。
二、分层模型
1. 分层模型-OSI
国际标准化组织ISO于1984年提出OSI RM(开放式系统互联通信参考模型:Open System Interconnection Reference Model)
OSI参考模型优点:
简化相关的网络操作
提供了不同厂商之间的兼容性
促进了标准化工作 (只是促进了标准化,细品)
结构上进行了分层
易于学习和操作 (层次明确,学习研究起来更加方便)
ISO负责当今世界上绝大部分领域(包括军工、石油、船舶等垄断行业)的标准化活动。ISO现有165个成员国(包括国家和地区)。ISO的最高权力机构是每年一次的“全体大会”,其日常办事机构是中央秘书处,设在瑞士日内瓦。中央秘书处现有170名职员,由秘书长领导。ISO的宗旨是“在世界上促进标准化及其相关活动的发展,以便于商品和服务的国际交换,在智力、科学、技术和经济领域开展合作。”ISO通过它的2856个技术结构开展技术活动,其中技术委员会(简称SC)共611个,工作组(WG)2022个,特别工作组38个。中国于1978年加入ISO,在2008年10月的第31届国际化标准组织大会上,中国正式成为ISO的常任理事国。
你要问为什么这么多标准组织?这个问题我也不清楚,度娘可能可以回答你,度娘不行问谷哥,再不行必应,应该能应你一声。
2. 分层模型-TCP/IP
OSI模型与TCP/IP模型对比如下:
OSI | TCP/IP | 说明 |
---|---|---|
会话层 + 表示层 + 应用层 | 应用层 | 定义格式 + 解读数据 |
传输层 | 传输层 | UDP + TCP (端口定义) |
网络层 | 网络层 | IP协议 + ARP协议 + 路由协议 |
物理层+数据链路层 | 网络接口层 | 电信号—数据帧—介质传输 |
三、帧格式
上文已经提到过两种标准帧格式:
IEEE802.3和DIX Ethernet V2
所以说,网络设备怎么区分两种帧…总不能两种帧到达网络设备时开口说话吧?看看下图,D.MAC(目的MAC)和S.MAC(源MAC)之后,不就是Type/Length吗,当网络设备一层一层拆这个帧的时候,拆到Type/Length时,他就看这个字段的大小,通过大小区分不同的数据帧。
Type(类型):IP(0x0800)、 ARP(0x0806)
Length (长度):Data字段包含的字节数
DIX Ethernet V2格式:
IEEE802.3格式:
看起来DIX Ethernet V2格式帧简洁不少,干脆直接,没那么多杂七杂八的字段。
诶?没人觉得为什么两个帧前面都要有D.MAC和S.MAC?
这MAC是个啥玩意儿?不要行不?
慢慢来,先百度看看怎么说的
MAC地址(英语:Media Access Control Address),直译为媒体存取控制位址,也称为局域网地址(LAN Address),MAC位址,以太网地址(Ethernet Address)或物理地址(Physical Address),它是一个用来确认网络设备位置的位址。在OSI模型中,第三层网络层负责IP地址,第二层数据链路层则负责MAC位址 。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址 。
嗯,看起来像是个唯一识别码,俗套点说就是个 身份证号 吧,出厂就烧录到网卡上的识别码,那这是不是能理解为我想发个快递,除了要你的家庭住址,还得要个 手机号+姓名 呢?哪天你搬家了,这快递最后你收到没我都不知道。
那这么说,这 快递 数据帧没有这MAC地址还真不行,那问题来了,我怎么知道你的MAC地址?ARP了解一下~~~
MAC地址由两部分组成,分别是供应商代码和序列号,前24位代表供应商代码,有IEEE管理和分配。剩下的24位序列号由厂商自己分配。(想要知道一个人身份证号,除了知道出生地址之外,还得知道出生年月日+随机码,前者是国家确定的,后者是由父母决定 懂的都懂)
四、数据帧发送与接收
1. 数据帧发送方式
单播:一对一发送 (MAC地址上的OUI第8个比特为0)
组播:分组发送 (MAC地址上的OUI第8个比特为1)
广播:发送到以太网上所有主机 (MAC地址为十六进制的FF:FF:FF:FF:FF:FF)
发送方式 | 二进制 | 十六进制 |
---|---|---|
单播 | XXXXXXX0:XXXXXXXX:XXXXXXXX:XXXXXXXX | ? |
组播 | XXXXXXX1:XXXXXXXX:XXXXXXXX:XXXXXXXX | ? |
广播 | 11111111:11111111:11111111:11111111 | FF:FF:FF:FF |
2. 数据帧发送与接收流程(Type为IP:0x0800)
主机检查帧头中的目的MAC地址,如果目的MAC不是本机MAC地址,也不是本机侦听的组播或广播MAC地址,则主机会丢弃收到的帧。如果目的MAC地址是本机MAC地址,则接收帧,检查帧校验序列(FCS)字段,并与本机计算的值比对来确定帧在传输过程中是否保持了完整性。如果检查通过,就会剥离帧头和帧尾,然后根据帧头中的Type字段来决定把数据发送到哪个上层协议进行后续处理。
帧校验序列(Frame Check Sequence)
判断过程如下:发送网卡利用多项式计算,称循环冗余校验(CRC),将计算结果写入FCS字段,接收方收到这个帧,对其做相同的CRC计算。如果计算结果与接收的FCS字段相同,则帧没有发生错误。如果不同,接收方就相信帧肯定发生了错误,并丢弃这个帧。
官方文档还是看着犯困,不如一张图来的舒服,自己整了张流程图:
- 点赞
- 收藏
- 关注作者
评论(0)