打印
[嵌入式linux]

Ethernet底层细节

[复制链接]
2487|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sinanjj|  楼主 | 2010-9-28 09:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以太网符合IEEE802.3标准, IEEE802.3 标准等价于CSMA/CD协议. 以太网有3种速率:
•10 Mbps—10Base-T 以太网
•100 Mbps—快速以太网
•1000 Mbps—GB以太网

以太网简史

原始的以太网在1970年代被被Xerox 公司开发出来用于同轴电缆的通讯网络上, 它有3Mbps的速度, 使用了载波侦听技术(CSMA/CD) 来处理偶然的大流量信息. 这一技术的成功, 最终导致Digital Equipment公司, intel公司和xerox公司在1980年代联合起来开发以太网的1.0版本.

最早的 IEEE 802.3 标准就是基于, 并且非常类似于 以太网标准1.0. 在本文档中,以太网和802.3实际上指的都是符合IEEE802.3标准的网络.


以太网的组成部分
以太网由网络节点和链接媒介组成. 网络节点分为两大类:
•数据终端设备(DTE)—既是数据源又是数据终点的设备. 比如PCs, 打印机.
•数据通讯设备(DCE)—就是接受信息并传递信息的. 主要是路由器和交换机.

在这篇文档里, 网卡简写为NICs(Network interface cards).

当前的以太网媒介主要是非屏蔽双绞线 (UTP)和屏蔽双绞线(STP), 和各种光纤媒介.


以太网拓扑
点对点连接.
最开始, 以太网是同轴总线的链接(并连), 如图.
                CT840702.jpg (9.35 KiB) Viewed 74 times               

虽然现在都不是总线结构了, 但有一些系统的总线结构还在使用.
从1990s年代开始, 星形网络拓扑成为首选, 如图:
                CT840703.jpg (7.05 KiB) Viewed 73 times               


星形结构的中心事一个hub或是一个交换机. 所有节点都是与中心直接连接的.

IEEE 802.3 分层和 ISO 分层区别
如图:
                               


802.3的MAC-client 层可能是
•Logical Link Control (LLC), 如果设备是DTE. 这一层提供了MAC和上层协议栈的接口.
•Bridge entity, 如果是DCE. 这一层提供了和别的标准的转换.

MAC层控制节点对底层数据的获取. 两个节点之间能通讯的前提是他们都支持相同的速率.

802.3 物理层规定了传输速度, 信号编码, 物理连接方式等.

MAC层的主要目的:
•数据封装, 检测数据错误, 并对数据进行封包.
•数据传输初始化和错误处理

以太网帧结构
•7个byte的预处理头 Preamble (PRE)— 7 bytes . 用于同步信号.
•1个byte的开始标志
•6个byte的目的地址, 就是我们常说的MAC地址(DA)
•6个byte的源地址, 就是我们常说的MAC地址 (SA)
•2个byte的长度, 或者类型
•数据, 46个byte以上, 1500个byte以下. (一般都500byte内)
•4byte的crc.

我们一般能监听到目的地址,源地址, 长度/类型, 数据, 其余被硬件过滤掉.

               

相关帖子

沙发
sinanjj|  楼主 | 2010-9-28 09:27 | 只看该作者
本帖最后由 sinanjj 于 2010-9-28 09:30 编辑

发送一个数据包
一旦从llc层接收到要发包的信号, MAC层就开始:
•构造同步头和开始头(7+1 byte)
•目的地址和源地址
•长度/类型
•放入数据, 数据长度不够46补全0成46. (就是最小包长60)
•生成CRC
包构造完成后, 看是否是全双工的, 看是否立即发射. 一般的, 都支持全双工了, 立即发射.


半双工发送----CSMA/CD方法

CSMA/CD 规则:
•载波检测. 信道上无载波的时候发送.
•一旦没有信息在信道上立即发出信号.
•碰撞检测. 就是一般发, 一般截取看看信号对不.
一旦检测到碰撞, 立即停下来, 等待一个随机的时间后再检测/发送.

因为冲突检测机制的限制, 需要数据有一定的长度, 10M/100M的时候限制为: 最小64byte一个包, repeaters 不能超过5/2.


全双工发送
全双工在点对点的情况下不需要检测冲突, 所以很简单.

Flow Control (流控制??)
检测对方的接收是否还有缓存区. 接受方会主动的发送脉冲信号说明自己的缓冲区情况. 如果缓冲区满, 并且接受了一个数据包, 那么接收方会立即发送一个要求从发数据包的脉冲信息. 如图:

接收数据包




(底下的内容无关紧要)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:In God We Trust 独立的个人,体赖科学技术工具提供针对个人的产品与服务,是通向幸福的唯一道路 工程师,设计师等可以个人创业的群体,将逐步瓦解官僚体制公司,成为中国中产。(重复劳动,工厂等,将逐步机械化) seacer.co

456

主题

6300

帖子

25

粉丝