zoukankan      html  css  js  c++  java
  • 以太网协议

    作者:杨领well
    来源:CSDN
    原文:https://blog.csdn.net/yanglingwell/article/details/81266408
    版权声明:本文为博主原创文章,转载请附上博文链接!

    TCP/IP协议(2): 以太网(IEEE 802.3)协议 —— 构成有线局域网的基本协议
    关于以太网(IEEE 802.3) 协议

        以太网(Ethernet) 是一套广泛应用于局域网(LAN), 城域网(MAN) 和广域网(WAN) 的一套计算机网络技术。
        它在 1980 年第一次商业化引入, 并在 1983 年被标准化 IEEE 802.3,之后被改进以支持更高比特率和更长的链路距离。
        (Ethernet /ˈiːθərnɛt/ is a family of computer networking technologies commonly used in local area networks (LAN), metropolitan area networks (MAN) and wide area networks (WAN). It was commercially introduced in 1980 and first standardized in 1983 as IEEE 802.3, and has since been refined to support higher bit rates and longer link distances.)

    以太网帧格式

    以太网传输的 PDU(Protocol Data Unit) 是以太帧(Ethernet frame)。其必要内容如下图所示(图片来自 Wikipedia)。
    以太网帧格式

        前导(Preamble): 7 字节(0x‭AAAAAAAAAAAAAA‬)。用于确定编码位之间的时间间隔(时钟恢复(Clock recovery))。

        以太帧前导的功能就像是总统车队前面开路的摩托车警卫。它们提醒所有人注意: 重要的事情即将发生。
        除此之外,以太帧前导同时也起到时钟同步的功能。所有的位在物理层被表示高低电平,接收设备需要和接收数据的标准间隔保持一致。只有在调节好的时钟下,才能分辨出一个字节到哪里结束,下一个字节从哪里开始。
        接收方可以很容易的区分 10101010 信号的各个字节,但是如果接受方的时钟被设置的太慢, 11111111 就可能被解释为 1111111。
        以太帧前导演示了到达数据的步调,并重复足够长的 1010 串,以便接收方设置相同的时钟频率。
        (The preamble functions like the outriders in a presidential motorcade. They tell everyone ahead to wake up and pay attention: something important is coming. Apart from being a “get ready” notification, the preamble also serves as a clock synchronization device. Bits are represented as an electrical voltage – high or low. The receiver needs to keep pace with the standard interval, because it is only with a regulated clock that it can tell where one bit ends and the next starts. A 10101010 signal is easy to detect, but a 11111111 signal might be interpreted as 1111111 if the receiver’s clock is set too slow. The preamble demonstrates the pace of arriving data and repeats the 1010 pattern long enough to enable the receiver to set its clock.)

        帧起始定界符(SFD, Start Frame Delimiter): 1 字节(0xAB)。表示以太帧前导的结束,同时表示以太帧的开始。

        目的地址(destination MAC Address): 6 字节。目的主机的 MAC 地址。

        源地址(source MAC Address): 6 字节。源主机的 MAC 地址。

        以太类型(EtherType): 2 字节。主要有两个目的:
        (1) 当其值小于等于 1500 时,它表示 有效载荷 的长度(单位: 八位字节(octet))。
        (2) 当其值大于等于 1536 时,它表示以太类型, 指出有效载荷中封装的协议。

        当(该字段)作为以太类型时,帧的长度由数据包间隙的位置和**有效的帧检查序列(FCS)**决定。
        (When used as EtherType, the length of the frame is determined by the location of the interpacket gap and valid frame check sequence (FCS).)

        有效载荷(Payload): 46‑1500 字节。用于存放高层 PDU。

        帧校验序列(FCS, Frame check sequence): 4 字节。用循环冗余校验(CRC, Cyclic Redundancy Check) 对帧完整性做简单的检查。

    载波监听多点接入/碰撞检测(CSMA/CD, Carrier-Sense Multiple Access With Collision Detection)

    早期的以太网是将许多计算机连接到一根总线上。当一台计算机发送数据时,总线上所有计算机都能检测到这个数据。当网络适配器接收到数据帧,如果发现目的MAC地址地址不是自己,就丢弃它。
    当总线上只要有一台计算机在发送数据,总线的传输资源就被占用。在同一时间只能允许一台计算机发送数据。因此早期以太网采用 CSMA/CD 作为媒体访问控制(MAC, Media Access Control) 协议。

    CSMA/CD 协议的主要内容是:

        多点接入: 许多计算机以多点接入的方式连接到一条总线上。

        载波监听: 每个站首先检测目前网络正在发送的信号,并在网络空闲时发送自己的帧。

        碰撞检测: 如果有几个站在同时发送信号,则重叠的电信号被检测为一次碰撞。这时每个站都停止发送信号,然后的等待一个随机时间,然后再次尝试发送。采用 CSMA/CD,在任何给定时间内, 网络中只能有一个帧传输。

    为了增加灵活性,以太网发展为使用集线器(Hub) 的星形网络,如下图。


    集线器
    使用集线器的局域网在物理上是星形网,但使用集线器的以太网在逻辑上仍是总线网络,各站共享逻辑上的总线。使用的还是 CSMA/CD 协议。
    集线器 工作在物理层,它的每一个接口仅仅简单地转发比特,不进行碰撞检测。

    集线器虽然在一定程度扩展了以太网的覆盖范围。但随着范围的扩大,碰撞域也变得更大,影响传输速率。因此,工作在数据链路层的网桥(Bridge)设备应运而生。
    网桥依靠转发表的内容来转发帧,如下图。
    在该局域网中, A,B, C 以及网桥的 1 号接口是一个碰撞域, D, E, F 以及网桥的 2 号接口是一个碰撞域。转发表记录了各个主机与该网桥连接的接口。

        当 A 主机传输数据给相同碰撞域的 B 主机时,网桥从 1 号接口接收到。发现 B 主机也在 1 号接口的碰撞域,因此,直接丢弃这个帧。因为 A 主机传输的数据根据 CSMA/CD 算法会在该碰撞域内被 B 主机接收到。

        当 A 主机传输数据给不同碰撞域的 E 主机时,网桥从 1 号接口接收到。发现 E 主机在 2 号接口的碰撞域,因此,将该数据转发到 2 接口的碰撞域,并在该碰撞域内通过 CSMA/CD 算法被 E 主机接收到。
        网桥


    以太网交换机进一步地消除了碰撞域,它实质上就是一个多接口的网桥, 因此也工作在数据链路层。但由于交换机的每个接口都直接与单个主机相连,并且一般都工作在全双工方式。因此,当主机需要通信时,每一对相互通信的主机都能像独占传输媒体那样,无碰撞地传输数据。
    交换机



  • 相关阅读:
    【转】Android Web Server
    【转】Android Http Server
    一步一步教你150行代码实现简书滑动返回效果
    Android代码内存优化建议 OnTrimMemory
    Android应用Activity、Dialog、PopWindow、Toast窗口添加机制及源码分析
    Android 快速实现 ViewPager 滑动页卡切换(可用作整个 app上导航)
    阴影效果 ShadowLayout 布局实现(让控件实现立体效果)
    ViewDragHelper让你处理View拖动时,代码减半!
    Android淘宝电影日期选项卡的实现-tab 栏居中滚动
    Android开源项目分类汇总
  • 原文地址:https://www.cnblogs.com/darling1550lz/p/9974879.html
Copyright © 2011-2022 走看看