在上一篇概述的基础上探讨Ethernet,主要涉及下面五方面:

  1. MAC Protocol:CSMA/CD,这个协议应用在data link layer,不管其下层的physical layer使用的是何种媒介,使用的哪种拓扑结构,这一层都使用该协议
  2. CSMA/CD协议的两个特点:
    • connectionless:不需要建立连线,在cable上双向传播
    • unreliable transimission:不可靠传输表现在两个方面
      1. collision超过16次导致的丢弃封包(Frame)
      2. interference导致的丢弃封包,比如电磁波导致的干扰导致的信号错误,即便没有collision,成功发送,但因为干扰信息变形,没有通过FCS验证,在接收端被丢弃
  3. 拓扑结构从Bus变为Star(使用Switch)
  4. Bus结构下的传送效能
  5. Star(switch)结构下的传送效能

physical layer

  1. Bus拓扑结构

    下面是一个Bus结构的physical layer一段网段的连接图:

    Bus结构的physical layer连接图

    • 物理介质:

      • terminator:位于每段网段的两个终端,用于吸收信号,防止信号反射导致自身collision
      • transceiver:收发器,用于连接cable和host以及收发信号
      • repeater:信号在cable上传播,会受到干扰及衰减,导致波形从方波变为弦波,repeater的作用就是连接两个网段,修复上游网段的波形,继续向下游网段传送(上图没有画出repeater)。理论上,通过repeater网段可以变为无限长,但因为效率问题,最多只能有4个repeater,所以一段Ethernet(LAN)的最大长度为2500m
    • 10base5

      • 第一代的physical layer,cable很粗
      • 10表示10Mbps
      • base表示baseband,意思是channel上只有一个band
      • 5表示每个网段长500m
    • physical layer的进化

      • 后续发展出10base2:cable变细了很多,但基本和10base5没什么区别
      • 10baseT
        • T指twisted pair,为双绞线,比如两根线扭在一起,两对这样的结构做成一根线。双绞线能承载多种速度,比如10M,100M,1000M,用那种速度由其连接的两端决定,当用线连接双方的时候,会看到线头亮一下,就是在沟通此事(被称为auto negotiation)
        • hub的出现为了方便管理接线,信号在其上面仍是广播,同样是physical layer设备,相当于repeater,hub的port上没有网卡,进来就转出去

    发展到后面cable尽管重量大小都有优化,也出现了方便管理接线的hub设备,但本质仍然是10base5形式,下面整理MAC protocol、Ethernet的数据结构以及关键参数的确定都是基于10base5的Bus架构

  2. Star拓扑结构

    星状结构的核心是交换机switch,有多个port,可以和多个host相连。

    • switch
      • 交换机的每一个port相当于一个网卡(所以交换机是layer 2设备),使用一根(双绞)线连接port和一台host,就相当于这段网段上只有这两台设备,同时双绞线每根线都是独立的,双方都能发送数据,且可以同时工作
      • 由于网卡的存在,交换机会将收到的封包收起来再进行处理,比如没有通过校验的丢弃,通过校验的按图索骥继续传送,而不是广播
      • 多个连接交换机的pc可以同时收发数据而不会相互干扰,这都要归功于交换机的工作方式,进来的封包带有destination mac address,交换机根据此信息去其存储的一个表中查询后续该封包应该送往何处
      • 交换机的查表转送速度能达到线速(wirespeed)
  3. Manchester Encoding

    在cable上,资料都是以二进制的形式传送,就需要将数据信息通过电位的高低或是光的明暗转成二进制形式发送,Manchester Encoding就是一种方式

    这种方法不论一个bit表示0还是表示1中间都有一个变化:

    1:从低点位到高电位变化
    0:从高电位到低点位变化

    同时这种方法还能将发送方的clock隐藏在信号里,用于对方同步接受速度,正确解析信号表达的含义

Ethernet Frame Format

下图是Ethernet封包的格式:

Ethernet Frame Format

每一部分的含义:

  • Preamble:大小7bytes,作用是让receiver和信号同步
  • SFD:大小1byte,作用是表示这个封包马上开始传送
  • DA(destination address):6bytes,表示网卡的位置,用来标识data送给谁
  • SA(source address):6bytes,网卡的位置,用来表示谁送的data
  • TYPE:2bytes,表明后面承载的数据是什么类型的(感觉这个忘记当初讲的什么意思了。。。)
  • LLC+PAD:实际传送的数据,最大1500bytes(从公平的角度),最少46bytes(从监听collision的最短需求的角度,后面有写)
  • FCS(Frame check sequence):检查码,用CRC32方法转换前面的内容,用来检查封包在传送的过程中内容有没有错误,有错误就会被丢掉,且不会通知发送方和接收方

    综上一个Ehternet封包的:

    • 最大值:1518 bytes = 6+6+2+1500+4
    • 最小值:64 bytes = 6+6+2+46+4

MAC address

MAC address跟着网卡走,不跟着电脑走,网卡位置由6bytes表示,以16进制表达每位,冒号分隔,比如:8:0:2b:e4:b1:2

每一个封包在网线上传播都能被连接的网卡接收到(广播),但收不收取决于网卡地址类型:

  • unicast address:和网卡自己的address比较,相同时收
  • broadcast address:DA全部是1
  • multicast address:群播(网卡属于这个群)

Ethernet MAC protocol

  1. 关于CSMA/CD的工作方式

    Ethernet使用CSMA/CD协议作为Data Link层协议,在发送数据前,先监听cable上是否有数据正在传送,并带有碰撞探测机制

    • CSMA:carrier(载波) sense(感知) multiple access(有很多电脑要存取媒介上的信号)

      • if channel sensed idle, transmit entire frame
      • if channel sensed busy, defer transmission
    • CSMA/CD:CD是collision detection,在CSMA的基础上,添加collision监听,如果发送方监听到封包发生了碰撞,就会停止发送,然后发送一段32-bit的jamming sequence,来彻底干扰已经冲撞的封包,保证其他adapter不接

    • 在这种协议下,只要collision发生此处不超过16次,网卡都会努力继续重试

    当2个host距离非常近的时候,一个transmitter最少会发出64-bit的preamble+32-bit的jamming sequence(共96bits,这个被称作runt frame)来处理collision情况

  2. collision window

    这个概念用来解决封包送上cable后,transmitter要监听多久才能确认这个封包没有发生collision

    由于一个最长网段是2500m,所以从一端到另一端再回来所需时间为51.2μs,也就是RTT=51.2μs,在网速10Mbps的条件下,数据量为10Mbps × 51.2μs = 512bit = 64bytes,所以上面说一个封包最短需要64bytes,原因就在这里(不能在51.2μs将封包全部送完,也就是不能低于这个值的原因是送完后再发生碰撞,不能区分是自己送出的封包还是别人的封包发生了碰撞)

Ethernet Performance

  1. 在Bus结构下,Half-duplex(两端都可以送,但不能同时),throughput和loading的关系为正态分布

    • lightly loaded:work best
    • heavy loads:too much of the network’s capacity is wasted by collisions
  2. 在Switch结构下,Full-duplex(两端都可以通信,且可以同时传送)

    由于交换机的port和host通过双绞线相连后,这条线路上只有这两个设备,所以不会发生collision,回到wirespeed,即便如此,这种结构中仍然运行CSMA/CD协议