以太网和wifi协议

以太网和wifi协议

 

前言

 

若是你知道”小喇叭开始广播了”,估计你得有必定的年纪了,开玩笑,小喇叭是好久之前的一个儿童广播节目.在节目一开始,都是有这样一段播音:”小朋友,小喇叭广播开始了!”,听到这里,收音机前的小朋友就兴奋了起来,准备好听节目了:本次的内容是以太网协议与wifi协议.html

 

以太网和wifi是连接层的两种协议.在连接层,信息以帧为单位传输.帧就像信封同样将数据包裹起来,并注明收信地址和送信地址.连接层实现了”本地社区”的通讯.算法

 

 

 

以太网的帧格式

 

帧本事是一段有限的0/1序列.它能够分为头部,数据和尾部三部分:安全

Preamble网络

SFD加密

DSTspa

SRC设计

Typecode

Payload(Data)视频

Padhtm

FCS

Extension

 

帧按照上面的顺序从头至尾依次被发送/接受.咱们下面进一步解释各个区域.

 

 

 

头部

 

帧的最初7byte被称为序言(preamble).它的每一个byte都是0xAA(这里是十六进制,也就是二进制的10101010).一般,咱们都会预约好以必定的频率发送0/1序列(好比每秒10bit).若是接收设备以其余频率接受(好比每秒5bit),那么就会错漏掉应该接受的0/1信息.可是,因为网卡的不一样,发送方和接收方即便预约的频率相同,二者也可能因为物理缘由发生误差.这就好像两我的约好的10点见面,结构一我的的表快了,一我的的表慢了.序言是为了让接收设备调整接受频率,以便于发送设备的频率一致,这个过程就叫作时钟复原.

 

就像在听收音机以前,调整转钮,知道声音清晰.网卡会在接受序言的过程当中不断微调本身的接收频率,知道本身听到的是...1010...

 

时钟调整好之后,咱们等待帧的起始信号(SFD).SFD是固定的值0xAB.这个0xAB就好像”小喇叭开始广播了”同样,提醒咱们节目立刻上演.

 

紧随SFD以后的是6 byte的目的地(DST)6byte的发出地(SRC),这就是咱们开始说的目的地和出发地.要注意,这里写在信封上的是对地址的”本地描述”,也就是MAC地址.MAC地址是物理设备自带的序号,只能在同一个以太网中被识别(正如邮差只熟悉本身的社区同样).

 

头部的最后一个区域是Type,用以说明数据部分的类型.好比0x0800IPV4,0x0806ARP

 

 

 

数据

 

数据通常包含有符合更高层协议的数据,好比IP.链接层协议自己并不在意数据是什么,它只负责传输.注意,数据尾部可能填充有一串0(PAD区域).缘由是数据须要超过必定的最小长度.

 

 

 

尾部

 

跟随在数据以后的是校验序列(FCS).检验序列是为了检验数据的传输是否发生错误.在物理层,咱们经过一些物理信号来表示0/1序列(好比高压/低压,高频/低频等),但这写物理信号可能在传输过程当中受到影响,以至于发生错误.如何来发现咱们的数据是正确的呢?

 

一个方法是将数据发送两次,而后对比一下是否同样.可是这样的话,网络的效率就下降了.FCS采用了CRC算法.这就好像是一家饭店的老板雇佣了一个收银员,可是这个老板担忧收银员黑钱.老板就想了一个好方法:只记住收到钱的最后一位(好比收到19,老板记住9).当有新的进帐(好比13,尾数为3),他就将新的尾数和旧的尾数相加,再记住和的尾数(也就是2).当收银员交给老板钱的时候,老板只用看看总额的最后一位是否和本身记住的最后一位相同,就能够知道收银员是否诚实了.若是说咱们的数据是收银的总额,咱们的FCS就是老板记录的尾数.若是二者不相符,咱们就知道数据在传输过程当中出现了错误,不能使用.

 

上面的比喻其实是用营业额总额不断的除以10,得到最终的尾数.CRC算法也相相似.n位的CRC算法取一个n bit的因子,好比下面的1011.数据序列结尾增长n-10.因子与数据序列的不断进行XOR运行,直到获得n-1位的余数,也就是100.该余数个位取反(011),而后存储在FCS的位置.

 

000 <--- 数据序列末尾增长3位0
              <--- 因子
000 <--- XOR结果
             <--- 因子
000
 
000
 
000
 
000
 
000
 
000
 
000 
1
-----------------
100 <--- 3位余数


 

上面的案例用的是4CRC.Ethernet中使用的因子为32,以达到更好的检测效果.

 

 

 

集线器(HUB) VS 交换器(Switch)

 

以太网使用集线器或者交换器将帧从出发地传送到目的地.一台集线器或交换器上有多个端口,每一个端口均可以链接一台计算机(或其余设备).

 

集线器一个广播电台.一台电脑将帧发送到集线器,集线器会将帧发到全部的其余的端口.每台计算机检查本身的MAC地址是否是符合DST.若是不是,则保持沉默.集线器是比较早期的以太网设备.它有明显的缺陷:

 

1.任意两台电脑的通讯在同一个以太网上是公开的.全部链接在同一个集线器上的设备都能收听到别人在传输什么,这样很不安全.能够经过对信息加密提升安全性.

 

2.不容许多路同时通讯.若是两台电脑同时向集线器发信,集线器会向全部设备发出”冲突”信息,提醒发生冲突.能够在设备上增长冲突检测算法:一旦设备发现有冲突,则随机等待一段时间再从新发出.

 

交换器克服了集线器的缺点.交换器记录有各个设备的MAC地址.当帧发送到交换器时,交换器会检查DST,而后将帧只发送给对应端口.交换器容许多路同时通讯.因为交换器的优越性,交换器基本上取代了集线器.但比较陈旧的以太网还有可能在使用集线器.

http://v.youku.com/v_show/id_XNDgwNTQ5OTI4.html

这段视频很形象的解释了这两种设备

 

 

 

WiFi

 

WiFi的工做方式与集线器链接下的以太网相似.一个Wifi设备会向全部的WiFi设备发送帧,其余的WiFi设备检查本身是否符合DST.因为wifi采起无线电信号,因此很难像交换器同样定时发送,因此WiFi的安全性很值得关注,WiFi采用的加密的方法来实现信息的安全性.

(早期的WEP加密方法很是脆弱,建议使用WPA或者WPA2加密方法.隐藏WiFi设备ID的方法不是颇有用.)

 

 

 

总结

 

咱们深刻了连接层协议的一些细节.连接层是物理与逻辑的接口,个人设计兼顾了物理需求(好比时钟复原,CRC)和逻辑须要(好比地址,数据).因为连接层处于网络逻辑的底层,有许多基于连接层的攻击手段,着须要咱们对连接层的工做方式有必定的的了解,以设计出更好的网络安全策略.