欢迎来真孝善网,为您提供真孝善正能量书籍故事!

全面解读:无线网络(WIFI)必备知识

时间:11-24 神话故事 提交错误

这篇文章给大家聊聊关于全面解读:无线网络(WIFI)必备知识,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

由于通信双方通过无线方式进行通信,因此在通信之前需要先建立连接;而有线网络则是通过线缆直接连接,没有这个过程。通信双方的通信方式为半双工;而有线网络可以是全双工的。通信过程中网络层以下发生错误的概率非常高,因此帧重传的概率非常高。有必要在网络层以下的协议中添加重传机制(不能仅仅依靠TCP/IP延迟等待重传等开销)。以确保);而有线网络的错误概率很小,网络层不需要这么复杂的机制。数据在无线环境下处理,很容易被抓包,存在安全风险。因为它发送和接收无线信号,所以消耗的电量很大,这对电池来说是一个考验。与有线网络的低吞吐量相比,这一点正在逐步改善。 802.11n协议可以达到600Mbps的吞吐量。

协议

以太网和Wifi使用的协议都属于IEEE 802协议集。其中,Ethenet采用802.3协议作为其网络层以下的协议;而Wifi则使用802.11作为其网络层以下的协议。无论是有线网络还是无线网络,网络层以上的部分基本都是一样的。

这里的主要焦点与Wifi 网络有关。 Wifi 的802.11 协议包含许多子部分。按时间顺序发展主要包括:

(1)802.11a,1999年9月制定,工作在5gHZ频率范围(带宽325MHZ),最大传输速率为54mbps,但当时还不是很流行,所以使用不多。

(2)802.11b,于1999年9月制定,略晚于802.11a,工作在2.4G频率范围(带宽83.5MHZ),最大传输速率为11mbps。

3)802.11g,2003年6月制定,工作在2.4gHZ频率范围(带宽83.5MHZ),最大传输速率为54mbps。

(4)802.11n,2009年才被IEEE批准,可以工作在2.4gHZ和5gHZ,最大传输速率为600mbps。

这些协议都是无线网络通信所需的基础协议。最新的发展通常比最初的发展要好。

另外值得注意的是,802.11n在MAC层上做了一些重要的改进,从而带来了网络性能的巨大提升。例如:

由于传输速率在很大的程度上取决于Channel(信道)的ChannelWidth有多宽、802.11n采用了信道绑定技术,在传输数据时可以将两个信道合并为一个,然后进行传输,大大提高了传输速率(这个也叫HT-40,高直通)。 802.11n的MIMO(多输入多输出)特性允许两对天线同时在同一信道上传输数据而不会互相干扰(使用OFDM特殊调制技术)

术语

在描述之前,我们需要了解无线网络中的一些常用术语。这里是一些后面描述中出现的新术语,会在描述中解释。

LAN:局域网,是由路由器和主机组成的内部局域网,通常是有线网络。

WAN:广域网,是一个较大的外部局域网。

WLAN(无线局域网):我们之前说过LAN就是局域网。其实大部分都是指有线网络中的LAN。无线网络中的LAN一般采用WLAN。

AP(Access point的缩写):是无线网络中的特殊节点。通过该节点,无线网络中的其他类型的节点可以与无线网络的外部和内部进行通信。此处,AP 和无线路由器位于一台设备(即Cisco E3000)上。

Station:代表连接到无线网络的设备。这些设备可以通过AP与其他内部设备或无线网络外部进行通信。

联:连接。如果Station想要加入无线网络,则需要与无线网络中的AP关联(即Associate)。

SSID:用于标识一个无线网络,后面会详细介绍。这里我们只需要了解每个无线网络都有自己的SSID即可。

BSS(Basic Service Set):一组相互通信的工作站组成,是802.11无线网络的基本组成部分。 IBSS 和基于基础设施的网络主要有两种类型。 IBSS 也称为ADHOC。组网是临时的,通信方式是站对站。这种组网方式这里不关心。我们关心的基础设施网络有Station-AP-Station的通信方式,都是无线网络。网络中的设备想要进行通信,就必须通过AP。在基础无线网络中,有两类最重要的设备:AP和Station。

BSSID:用于标识一个BSS。其格式与MAC地址相同,均为48位地址格式。一般为就是所处的无线接入点的MAC地址。在某种程度上,它的工作原理类似于SSID,只不过是SSID是网络的名字,是给人看的,BSSID是给机器看的,BSSID类似MAC地址

*) DS(分布式系统):分布式系统。分布式系统是一个802.11逻辑组件,负责将帧转发到目标地址。 802.11 没有指定其技术细节。大多数商业产品使用桥接引擎和逐步系统介质来形成分布式系统。分散式系统是骨干网络,通常是以太网,在接入点之间转发帧。事实上,骨干网并不是阶梯系统的全部,而是它的媒介。主要有三点:骨干网(如以太网)、桥接器(包括具有有线和无线网络接口的接入点)、属于骨干网上接入点管辖的基础网络的站点通信(与外界或站点) BSS内部必须经过DS,而外部路由只知道站点的mac地址,因此还需要经过分布式系统才能知道站点的具体位置,并正确传递到该步骤中的接入点。步步系统必须传递相互关联的工作站信息,这样整个步步系统才能知道哪个工作站与哪个ap关联,保证步步系统正常工作(即,中继到正确的站)。分散式系统也可以使用无线介质(WDS),不一定是以太网,简而言之,采用逐步系统主干网络(例如以太网)作为连接各个接入点的介质。每个接入点和其中的站可以形成一个BSS。每个接入点中的桥控制器具有到达骨干网络及其内部BSS无线网络接口(类似于两个MAC地址)的能力,站点通信需要经过分布式系统。

MAC(Medium/MediaAccess Control,媒体访问控制)是数据链路层的一部分。 MAC地址被烧录到Network InterfaceCard(网络接口卡,简称NIC)中。也称为硬件地址,由48位(bit,一个字节为8位,1byte=8bits)十六进制数组成。位0-23称为组织唯一标识符(简称OUI),是用于标识LAN(局域网)节点的标识符(有些抓包工具在抓包时会将前三个字节映射为某种组织名称字符,您也可以选择不显示此映射)。位24-47 由制造商分配。

Band(频率范围) 一般来说,AP可以支持5G或2.4G两个频率范围的无线信号。如果两者可以同时设置,而不是互相排斥,那么这个路由器还可以支持两个频段(band),相当于这个ap可以建立两个无线网络,他们使用不同的频段(这个类似长波范围内的广播和短波范围内的广播)。

频道** 频道是频段(将5G或者2.4G的频段范围再划分为几个小的频段,每个频段称作一个Channel),有”5.18GHZ“,“Auto(DFS)”等等,处于不同传输信道上面的数据,如果信道覆盖范围没有重叠,那么不会相互干扰。对于信道的使用,在国际上有所规定。其中有些信道是无需授权即可直接使用的(究竟是那个频段的那个信道,依照各个国家而不同),无需授权使用的意思是,传输数据的时候(无论以哪种无线方式),可以让设备收发的功率导致传输时的数据进入该信道的频率并在该信道所在频段宽度内进行传输;授权的使用的意思是,不允许传输时使用授权信道进行,否则会违反规定,并且干扰该信道上其他数据的传输。另外,的进一步划分。除wifi外,微波、红外、蓝牙(使用802.15协议)的工作频段也在2.4gHZ范围内。因此,他们在传输的时候,会对WiFi传输造成干扰,因为两者在不同的协议下通信,所以彼此都将对方传输的信号识别为噪声**。有时在配置AP时,Channel中有一个类似“Auto”的选项值。这意味着当AP开启时,AP会扫描周围环境并选择干扰最小的信道进行通信。选择频道后,时间一般不会改变。

Channel Width(通道宽度) 这里的Channel Width是指通道的带宽,包括“20M HZ”、“40M HZ”等,代表一个Channel段的宽度(假设5G频段的总宽度为100M,均匀划分为互不干扰的10个Channel,则每个Channel的通道宽度为100M/10=10M(实际Channel不一定完全不重叠)。该参数可能取决于其他一些选项。例如,如果不是802.11N协议,则可能没有40M HZ Channel Width(N模式的一个特点是可以合并两个Channel,通过增加ChannelWidth来提高吞吐量)。例如,选择“20M HZ”通道宽度后,再选择“5.18GHZ”通道,则表示占用了第一个“10M HZ”以及以5.18GHZ为中心的“10M HZ”频段范围。

Wireless Security(无线网络的安全性)

主要涉及WEP、WPA、WPA2和RC4、TKIP、AES。

WPA(Wi-Fi Protected Access)实际上是Wi-Fi联盟制定的安全标准。该商业标准的目的是支持IEEE 802.11i这一面向技术的安全标准;而WPA2实际上就是WPA的第二个版本。从直观的角度来看,WEP 是一种较旧的身份验证方法,存在一些弱点,因此它于2003 年被WPA 淘汰,并于2004 年被完整的IEEE 802.11i 标准(也称为WPA2)所取代。

WEP(有线等效保密)使用称为RC4 的RSA 加密技术; WPA(Wi-Fi 保护访问)使用新的TKIP 算法。 TKIP算法保留了RC4因此也有其弱点,但目前还没有更好的CCMP。完成了,所以首先在WPA上使用TKIP技术; WPA2是WPA的第二个版本,使用CCMP加密协议(在某些路由器等设备上设置加密协议或加密算法时,可能会使用AES Replaces CCMP等字样)。因此,WPA2+AES是最安全的。

此外,您还会在某些无线网络设备的参数中看到WPA-Enterprise/WPA2-Enterprise、WPA-Personal/WPA2-Personal等字样。其实WPA-Enterprise/WPA2-Enterprise就是WPA/WPA2; WPA-Personal/WPA2-Personal实际上是WPA-PSK/WPA2-PSK,它使用“预共享密钥”或“密码”认证模式,而不是IEEE 802.1X/EAP认证模式。 PSK 模式下无需认证。服务器(如RADIUS Server),因此特别适合家庭或SOHO用户。

另外,WEP 是一种旧的加密方法,工作在802.11B/G 模式下,而802.11N 草案不支持这种加密方法,因此如果802.11N 设备采用WEP 加密方法,则只能工作在802.11b/G 模式下。在g模式下,N的性能无法充分发挥。

事实上,在某些路由器上,设置可能并不严格遵循这个规定(例如,如果设置使用WPA,也可以选择AES),但大体是一样的。

Region在无线网络中的AP上一般都会有一个参数,表示自己处于哪个Region。站点根据AP中设置的Region来调整自己对应的发射功率,以符合该地区的规定。 AP调整过程一般是手动的。设置AP所在的Region后,该信息将包含在AP发送的Beacon帧中(后面会讲到);通过此AP 连接到无线网络上的Station。从Beacon帧中获知这些Region信息,并按照这些信息中的规定与AP进行通信。如果一开始AP设置错误,站点和AP将使用不符合所在地区规定的频段,可能会对所在地区的其他传输网络造成干扰。这应该是“非法的”。

传输速率传输速率设置传输速率。这里使用的无线网络传输协议不同(802.11a、802.11b、802.11g等),因此可以设置的速率范围不同。这里的速度是指理论速度。在实际应用中,由于各种干扰因素,传输速率可能会小于设定值。

一般来说,在无线网络中,在描述某种协议的性能时,需要注意描述中提到的传输速率(Datarate)和吞吐量(Throughput)是不同的。 Datarate是理论最大数据传输速率,而Throughput是实际最大数据吞吐量。由于制造商、传输时使用的协议等各种因素造成的开销,实际吞吐量会小于理论吞吐量。一般情况下,实际最大吞吐量约为理论最大吞吐量的50%左右(一个不准确但相对直观的估计:在网络中,高清视频所需的吞吐量只有30mbps左右,网络上的平均视频只有4mbps左右) )。

Qos(Quality Assurance)无线网络中的QOS就是质量保证,大致是指在传输数据时,考虑各种因素(如计费政策、地区等),以一定的优先级保证特定的传输要求。 (通常是速度),如果带宽足够,则不需要QOS。

RTS阈值/CTS保护模式:这里的RTS是Request-To-Send的缩写,CTS是Clear-To-Send的缩写。设置RTS阈值后,如果超过该阈值,则会在发送信息之前先发送RTS以减少干扰,并且对应的CTS会响应之前的RTS。一般情况下,AP发送CTS数据,Station发送RTS数据。

这里简单解释一下RTS和CTS: 假设两个Station A和B都在同一个AP覆盖的无线网络范围内。由于距离的原因,它们可能彼此不可见(例如,它们在AP 网络范围内)。两端,且两端之间的距离大于两者的信号覆盖范围),但AP知道它们在自己的范围内。当A要在AP网络中进行通信时,其信息必须通过AP进行转发。由于A不知道B的存在,如果B也同时通过AP进行通信,则AP也会同时收到该消息。来自两个站A和B的通信请求,这在无线网络中是不允许的(在无线网络中,多人不能同时传输数据)。在这种情况下,B和A互相干扰通信,但彼此不可见(不可见节点称为隐藏节点)。如果一个网络中有很多这样的隐藏节点,必然会影响网络的性能(因为一旦数据发送失败,就必须重传,隐藏节点会增加重传的概率)。这时就可以使用RTS和CTS机制。即:当A想要通信时,首先向AP广播发送RTS,告诉AP“它想要通信”。同时,其他接收到RTS的站(它们对发送RTS的站是可见的)就会知道A要发送数据,因此不会发送数据,以免干扰A; AP收到RTS后,会广播发送CTS,告诉AP范围内的所有站点(包括A的隐藏节点B)“A将进行通信(也相当喻告诉A,A可以在不受干扰的情况下发送信息)” ,这样A的隐藏节点B也知道有A并且想要发送信息,那么B就不会干扰A。这里,A和B可以在不同的网络上,也就是说不同网络上的工作站还可以使用RTS/CTS来消除相互干扰。

信标间隔:表示无线路由器定期广播其SSID 的时间间隔。这个一般不用专门设置,使用默认值即可。如果停止广播,站点在扫描时可能会发现不定期广播的AP的SSID对应的网络丢失,从而导致连接断开。这里的定期广播是指AP会在其范围内定期广播SSID信息,以表明AP的存在。这样,Station进入某个区域后,就可以扫描得知该区域内是否有AP。当然,除了AP通过广播SSID来告知其无线网络的存在之外,Station还可以主动广播发现包来询问其可以覆盖的范围内是否有AP(也就是我们通常所说的)呼叫扫描接入点)。

DTIM Interval:DTIM/TIM 表示告诉Station AP 正在为Station 进行数据包缓冲的缓存时间(例如,当Station 处于睡眠状态时)。为了节省电池寿命,无线网络上的Station 可能会在一定时间后自动进入睡眠状态。此时AP会缓存发送给Station的数据,处于休眠状态的Station只会在一定的时间间隔内向AP发送数据帧,以确认是否有数据发送给自己。例如,当我们ping 主机上另一台睡眠机器时,另一台机器的响应时间比它不睡眠时的响应时间要长得多。

Fragmentation Threshold:包的碎片阈值。我们可以设置片段大小。当发送的数据包超过此阈值时,802.11协议将自动对数据包进行分片。如果分片值设置得较小,则整个数据包传输成功的可能性更大(因为如果发生错误,只需要传输一个分片而不是整个数据包。无线wifi中数据传输过程中出错的概率网络比有线以太网要大得多),当然开销也更大(因为需要额外的信息来标记每个分片,以及每个分片成功传输后涉及的重组问题)。

2. 抓包

一般来说,当我们机器上的软件捕获无线网卡上的数据包时,这些数据包的目标地址实际上就是本机的无线网卡,因为所有没有发送到本机无线网卡的数据包都被过滤掉了通过网卡。所以如果我们想要捕获无线网络环境中的所有数据包,我们需要给机器配备一个特殊的设备(sniffer就是嗅探器),然后通过抓包工具来捕获并分析。有一个名为AirPcap 的硬件设备就是用于此目的。其成本为数百至数千美元。它可以同时用作嗅探器或无线网卡。然而,当用作嗅探器时,它将捕获通过它的所有内容。包裹。该工具目前只有Windows版的驱动,因此在Windows上只能使用Wireshark抓包软件使用该工具进行抓包。

这里假设使用AirPcap嗅探和Wireshark软件进行抓包(其他抓包软件,如Linux下的tcpdump等,也有类似的分析)。这里不以图解的方式详细展示具体的抓包过程和分析方法,主要讲一下抓包时需要注意的问题(这里的包其实主要是指网络层以下的包,比较常见的有:名称应该是数据框)。

Wireshark显示包时,一般会根据协议中指定的字段来显示,有些地方还会以自己特定的方式显示。因为这里我们重点介绍抓包时需要注意的一些基本原则,所以在此不再过多阐述。粗略地说,在Wireshark软件中,显示包时,协议中指定的字段会分两部分显示:Header和Body。另外,Header之前还有两部分,是Wireshark显示的包的大小,以方便用户使用。全局信息,例如时间(例如,当您看到通道1 表明该数据包处于B 和G 模式时,它由“BG1”表示)。所以,其实我们在分析的时候,其实应该按照以下两个部分来进行:Header和Body。稍后将基于上述进行进一步的解释。

抓包时,首先需要确认该包是否是完整、正确的包。只要校验和(checksum)不正确,就是一个错误的数据包,并且无法确定接收过程中出了什么问题,所以这个数据包应该被忽略,几乎没有分析价值。另外,抓包时,由于干扰等原因,抓到的内容可能不是实际传输所在Channel上的数据包(例如嗅探到了Channel 1,却嗅到了Channel 2的数据包)。

在授权阶段抓包的时候需要注意的是,真正的授权是在后面进行的。 Authentication的时候,初始阶段其实是Open(也就是没有授权),也就是说一开始其实连接就已经建立了,所以我们抓包的时候,首先看到的一般都是验证,但是之后,连接就真正建立起来了。然后使用802.11x等安全增强协议进行重新认证。如果失败,所建立的协会将立即断开。这个机制之所以会这样,是因为原来的802.11没有充分考虑安全性,同时也兼容了之前的802.11。

对于捕获的报文数据,请注意报文是否加密。根据协议标准的描述,如果数据包中存在dataprotected字段,则意味着数据本身是加密的。我不知道数据是什么。当然,如果有密码,Wireshark也有工具可以根据密码解密。有时它不起作用。这里所说的数据加密和网络的加密是不同的。也许访问网络本身需要密码(网络是安全的),但数据本身并没有crpted(加密)。对于加密的数据包,我们一般无法判断该数据包的用途、类型。

抓包时,请注意数据包中指示的源地址和目的地址以及数据包的序列号。在无线网络中通信时,当我们抓包时,我们可能会看到抓到的数据包对应的AP的MAC地址不存在。事实上,AP抓包时的MAC是BSSID,与实际标记的MAC地址不同。它们一定是一样的(但一般都是相似的,就是最后几个不一样)。有时,我们看到抓到的数据包中有很多MAC地址,相差只有几秒,那么它们可能都属于同一个设备(因为虽然该设备可能只标记了一张网卡的MAC地址,但是“虚拟”出来的或者实际上有多个MAC地址),所以当我们看到数据包中两个AP对应的MAC地址几乎相同时,一般来说,这两个MAC地址很可能属于同一个设备。同样,在捕获数据包时,一个地址处的数据包序列(序列号)是连续的,除非数据包丢失导致重复或删除。如果一个设备虚拟了两个地址,可能这两个地址上的数据包是连续的,没有经过任何处理(前面说过,这两个地址距离MAC很近,应该是BSSID)。

如果捕获的数据帧是广播帧,则不需要确认(ACK)。如果是单播帧,一般需要确认(ACK)。例如,Probe帧是广播帧,因此它没有对应的ACK确认帧,对Probe的回复称为Probe Response;注意,ACK帧本身用于确认,是单播的,但不需要再次确认。从数据包中的目的MAC地址可以看出该数据包是广播/组播帧还是单播帧。 MAC第一个字节第一位为1,表示组播,前两位为1,表示广播,第一个字节第一位为0,表示单播。这里注意,MAC不是一个值,而是一个Pattern,所以不存在Endian之类的东西,也不存在哪一位高或者哪一个MAC大的问题。例如:“a8:27:26:b7”,这里的第一个字节是a8(10101000),第一个字节的第一个字节是8的“右”位,也就是“0”,所以它的第一个位第一个字节为0,为单播地址。其实这就涉及到big-endian和little-endian的问题,后面会讲到。简而言之,消息在以太网线路上以“Big Endian”字节顺序传输(即先传输最高字节),而位顺序为“Little Endian”(即先传输字节中的最低位)第一的)。因此,以十六进制表示的MAC地址01-80-C2-00-00-00,传输时的比特序列为:1000 0000 0000 0001 0100 0011 0000 0000 0000 0000 0000 0000。

使用Wire Shark捕获或显示数据包时,可以设置过滤器。捕获数据包时设置的过滤器称为捕获过滤器,用一种称为BPF(berkerley package filter)的相对通用的语言来描述(注意,这不是Wireshark专用的过滤器语言,而是通用语言)。但抓包时的过滤有时并不准确,所以我们通常会先捕获所有数据包,然后使用WireShark中显示的过滤器(即视图过滤器)来显示我们关心的数据包。这里我们可以使用宏来定义更复杂的显示过滤条件。保存时,可以通过显示过滤或爬行过滤来保存内容。

尽量不要抢W频道

idth为40MHZ的Channel上的帧。我们还需要注意的是,使用Sniffer抓取无线网络包的时候,AirPcap无法正常抓取40MHZ Channel Width的包,或者说对抓取这个Channel Width上面的包支持不好。如果非要抓取40MHZ Channel Width的包,那么就在40或者36号Channel上面进行抓取,并在Wireshark上面设置“channel=36,offset+1”(平时offset都是0),这样能够抓取 Channel Width为40MHZ的包(但是,其他Channel上面的40mHZ的包还是无法抓取),这是由AirPcap内部的芯片固件的问题决定的(估计broad com芯片公司也不愿花过多的精力来支持这个很少有人用的抓包工具的这个功能)。 另外,假设一个无线工作站是基于Android系统的(例如智能手机或者平板电子书)那么我们可以利用“wpa_cli status”命令来可以查看当前设备的连接的SSID,BSSID,MAC,IP等信息,(这里“cli”=“command line interface”)。 还有更“复杂”的命令“wc”和“wl”,其中wc是比较上层的命令,wl是下层的命令(是基于芯片是否支持的,例如wl在broadcom芯片上支持,但是在ti上面就没有了)。 常见的帧在802.11中的帧有三种类型:管理帧(Management Frame,例如Beacon帧、Association帧)、控制帧(Control Frame,例如RTS帧、CTS帧、ACK帧)、数据帧(Data Frame,承载数据的载体,其中的DS字段用来标识方向很重要)。帧头部中的类型字段中会标识出该帧属于哪个字段。 ACK帧 单播(unicast)帧都需要用ACK来确认,ACK本身不是广播帧,ACK在MAC上是unicast的,帧中有receive地址字段(用来标识是对谁的确认),但是它却不需要再确认了。ACK只有接收地址(receive)而无源地址(src)和序号(sequence),因为发送和接受是一个整体,发送之后,其他人(除了这个发送的接受者)都不会再发送数据了(无线协议中的冲突避免机制),所以接受者会发送一个没有src的ack帧给receiver,而接收ACK的一端会根据这个知道它收到了一个ACK帧(其实根据协议,应当把发送单播帧和收到它相应的ACK看作一个原子的不可分割的整体,表示一次成功的通信)。 Beacon帧 Beacon帧定时广播发送,主要用来通知网络AP的存在性。Station和AP建立Association的时候,也需要用到Beacon。Station可以通过Scan来扫描到Beacon,从而得知AP的存在,也可以在扫描的时候通过主动发送Probe来探寻AP是否存在。也就是说,建立Association的时候有主动的扫描或者被动的扫描两种方式。另外,Beacon还包含了关于Power Save、以及地区等信息。 Association帧 通常Association帧都有Probe Request和相应的Probe Response。Association的Request中有其所需要的Channel以及Data Rate等状态,以便让AP决定是否让它与自己建立Association。而关联是否成功,主要是看Response中的Status code是否为Success。 Data帧 Data Frame具有方向,这个方向用DS(分布式系统)字段来标识,以区分不同类型帧中关于地址的解析方式;其它的类型Frame例如Control Frame或者管理帧中,这个字段是全零。这个字段用两位表示,这两个位的含义分别表示“To Ds”和“From Ds”,大致含义如下: (a)To DS:表示Station->AP,一般也叫Upload。 (b)From DS表示AP->Station,一般也叫Download。 这里,我们可以大致将DS看做AP,To/From是从AP的角度来考虑的。To DS就是让AP干活。另外Data Frame中还有一个比较重要的字段就是Sequence,表示帧的序号。重传帧序号一样,但是多了一个Retry的字段表示该帧是重传的。 为了便于理解,这里再次详细解释一下DS字段的含义: To DS=0,From DS=0:表示Station之间的AD Hoc类似的通信,或者控制侦、管理侦。 To DS=0,From DS=1:Station接收的侦。 To DS=1,From DS = 0:Station发送的侦。 To DS=1,From DS = 1:无线桥接器上的数据侦。 这里,我们主要关注To DS和From DS分别是01和10的情况,DS虽然大致等于AP但是它不是AP,它其实是一个系统,从Station的角度来看,比较容易理解。并且To DS和From DS一定是无线网络上面数据侦才有的字段。帧和大端小端Ethernet和802.11都是按照Little Endian的方式来传输数据,也就是说,而MAC层传输的时候,是采用Little Endian的方式,一个字节一个字节的传输的,前面的低位字节先传输,后面的高位字节后传输(传输单位不是按位而是字节);在协议标准上描述一个帧的时候,一般是先按照Little Endian的方式对其进行总体描述,然后具体细节说每个字段的值,这时候这个字段值是Big Endian方式表示的,这一点应当注意。 例如,协议标准中可能能对某个帧格式做如下的描述: |b0|b1|b2|b3|b4|b5|b6|b7|b8|b9|...|...|这里,最低位b0在最前面,所以这里采用的就是小端的方式来描述帧的总体格式信息。传输的时候,就按照这里的方式,以字节为单位向物理层进行传输(先传b0~b7然后b8~b16等等)。 但是,在解释这个帧的各个域的时候却采用大端的方式进行描述。假设b3=0,b2=1,b1=0,b0=0四者共同组成一个名字为“FLAG”的域,那么会有类似如下的描述: FLAG=4(即FLAG为0100):表示XXX。所以,协议标准中具体描述某个域的时候,一般直接用大端方式表示的数值(b3b2b1b0=0100)来描述;而传输数据帧或者在协议标准中描述整体帧的时候,中给出的却是小端的方式(b0b1b2b3=0010)。 这里的每个字段都是帧的一个部分,在管理帧(后面会说)中长度不固定的部分又叫IE(information Element) 。另外注意,内存地址是用来标记每个字节的而不是位,所以内存里面大端小端也是以字节而不是位为单位的(前面描述“大端“、”小端”的时候却以位序而非字节序,这一点需要明辨,不要混淆)。假设奔腾的机器,CPU为32位,采用Little Endian方式,那么表示1这个int类型整数的时候,假设它在数值上是十六进制的"00000001",那么存放在内存中却是由低位到高位依次存放的,由低到高地址依次为:"01"、"00"、"00"、"00"(也就是说小端方式存放在内存中的时候,是按照含有最低位的字节存放在低地址,注意是字节,在内存中“位”没有地址,所以没有大端小端一说)。在传递帧的时候,也是按照一个字节一个字节的传输,而一个字节内部在实际上其实没有什么端的分别,但是wireshark一律使用“b7b6b5b4b3b2b1b0”这样的方式来用大端的方式显示。 总之,需要注意网络层下面的帧的大端小端问题(不是网络中的字节序,TCP/IP中规定的网络字节序是Big Endian),大致就是:协议规定,传输的时候使用Little Endian;标准描述的时候用Big Endian和Little Endian都用;另外,Wire shark软件抓的包中,好象全都用Big Endian来进行标示(无论是信息窗口还是内存窗口都这样展示)。 3、CSMA/CA的机制 与以太网的CSMA/CD机制(冲突检测)相对,802.11采用的CSMA/CA机制(冲突避免)。采用这个机制,可以保证每次通信的原子性(即每次通信所需要传输的多种不同类型的帧之间没有夹杂其它通信的帧的干扰),大体过程是:

(a)链路空闲下来之后,所有Station在发送帧之前都首先等待一段时间(即DIFS,又称帧间隔时间); (b)到达DIFS之后,所有的Station进入竞争时间窗口(就是竞争期间),将这个竞争时间窗口分割成多个Slot(退避时间间隔),然后每个Station随机选择一个Slot; (c)当某个Station到达它的Slot对应的时间之后,就开始发送数据。这里,选择的Slot越靠前,则表示Station在DIFS之后再等待的时间(退避时间)越短,也就会越早发送实际数据; (d)退避窗口的Slot有多个,选择的时候,可能某个Slot被多个站点同时选取,这个时候发送会产生真正的数据冲突(如果多个人同时发送,那么它们都要经过AP来转发,AP无法同时听见多个人的“说话声音”)那么Station就会再重新选择并发送; (e)当一个Station发送数据之后,所有Station会检测到链路忙,于是放弃尝试发送,等那个Station发送完数据之后,链路开始空闲,于是又进入到(a)重新开始这个过程。 对于以上的机制,如果我们让某个Station经过DIFS之后,选择的Slot越小,就意味着它发送帧的机会越大,也就是说这个Station的优先权越高。这就是Qos(质量保证)的基本,前面也说过,Qos就是“以一定的优先级来保证传输的特定要求”,要获得这种优先级,就要有相应的条件(例如“花钱”)(有一种不常用的无竞争发送,其实就是DIFS之后,不退避而直接发送)。 另外,其实对物理层上来说,所有的发送都是广播,单播与否只是在链路层以上分辨的。上面提到的检测链路是否忙,可以从链路上用软件方式进行(例如增加帧的特殊字段),也可以直接在物理层上进行,实际因为在物理层上成本较高,经常用的是前者,具体参见协议。软件检测大致的思路就是,进行一个通信的时候,这个通信包含多个帧,每个帧有不同的作用,发送的第一帧的时候,会通过其中的某个特殊字段(Duration字段,也叫NAV,即网络分配向量,是一个延迟时间值)告诉所有其它Station,在未来的一段时间内,链路被占用,以完成整个通信过程。这样,其它Station在此期间就不会发送数据干扰这次通信了,以后这个通信的每一帧以及其ACK确认帧之间都会有一个很小的时间间隔(小于DIFS,即SIFS),并且每帧会视情况延长那个Duration字段,保证整个通信期间确实不会有其它人干扰,这样整个通信就是原子性的了。4、帧的来源和目的地址 因为无线网络中没有采用有线电缆而是采用无线电波做为传输介质,所以需要将其网络层以下的帧格式封装的更复杂,才能像在有线网络那样传输数据。其中,仅从标识帧的来源和去向方面,无线网络中的帧就需要有四个地址,而不像以太网那样简单只有有两个地址(源和目的)。这四个地址分别是: SRC:源地址(SA),和以太网中的一样,就是发帧的最初地址,在以太网和wifi中帧格式转换的时候,互相可以直接复制。 DST:目的地址(DA),和以太网中的一样,就是最终接受数据帧的地址,在以太网和wifi中帧格式转换的时候,互相可以直接复制。 TX:也就是Transmiter(TA),表示无线网络中目前实际发送帧者的地址(可能是最初发帧的人,也可能是转发时候的路由)。 RX:也就是Receiver(RA),表示无线网络中,目前实际接收帧者的地址(可能是最终的接收者,也可能是接收帧以便转发给接收者的ap)。 注意,其实,还有一个BSSID,用来区分不同网络的标识。在802.11帧中,有四个地址字段,一般只用到其中的三个,并且,这四个字段对应哪种地址或者使用哪些地址,根据帧中的另外一个DS字段以及帧的类型而有不同的解释。 举例: (1)无线网络中的Station和以太网中的Host进行通信: Station<- - - - ->AP<---------->Host a)当Station->Host的时候: 首先Station->AP,这时候Src=Station,Dst=Host,Tx=Station,Rx=AP,然后AP->Host,这时候Src=Station,Dst=Host,因为AP转发的时候,是在以太网中,所以没有Tx和Rx。 b)当Host->Station的时候: 首先Host->AP,这时候Src=Host,Dst=Station,然后AP->Station,这时候,Src=Host,Dst=Station,Tx=AP,Rx=Station。 (2)无线网络中的Station之间进行通信: Station1<- - - - ->AP<- - - - ->Station2 a)当Station1->Station2时 首先Station1->AP,Src=Station1,Dst=Station2,Tx=Station1,Rx=AP,然后AP->Station2,Src=Station1, Dst=Station2, Tx=AP, Rx=Station2。 可见,在无线网络中,始终存在Tx和Rx,但是,这四个地址中还是只有三个地址足矣。 (3)当两个无线网络中的Station进行通信的时候: Station1<- - - - ->AP1<- - - - ->AP2<- - - - - ->Station2 当Station1->Station2时: 首先Station1->AP1,Src=Station,Dst=Station2,Tx=Station1,Rx=AP1,然后AP1->AP2,Src=Station, Dst=Station2, Tx=AP1, Rx=AP2,然后AP2->Station2,Src=Station1,Dst=Station2,Tx=AP2,Rx=Station2。 注意,这个时候,AP起到桥接的作用,所以四个地址各不相同,同时,AP之间或者Station和AP之间的那部分连接,也可以是以太网。 综上可知,无线网络中的Station想要通信,必须经过AP来进行“转发”,其实,Tx和Rx是无线网络中的发和收,也就是Radio;而Src和Dst是真正的发送源和接收者。Sleep和Power save(节电)其实,无线网络中的Power save是指Station的Sleep(睡眠),并且这个Sleep并不是整个系统的Sleep,确切来说,应该是其wifi中Receiver(接收天线)的Sleep。Station在睡眠的期间还是可以Transmit(发送)的,只是当AP知道Station的Receiver处于Sleep状态时,就不会给Station发送帧了。Station在Sleep之前,会给AP发送一个特殊的帧,告诉AP说它(Station)要睡眠了,AP通过这个帧来记住是这个Station睡眠了,然后AP就不会给这个Station单独发送数据了。 当有和这个Station通信的包想通过AP转达的给这个Station时候,AP会帮这个Station将它们缓存起来,然后在Beacon广播帧中添加一个特殊的位(实际这个位是一个bitmap中的位,这个bitmap表示所有和该AP建立了关联的Station,而这个睡眠的Station的相应位为被置1则表示有消息要传达给这个Station),来表示这个Station有数据到达了(Beacon是定时广播的帧,前面说过它是用来通知无线网络,这个AP的状态),而不是直接发送给Station。而这个睡眠的Station,会在睡眠期间不时地醒来,以检查Beacon帧中的状态,当发现有给它的数据的时候,就会通过发送一个Power Poll的帧来收取数据,收取之后继续睡眠(所以ping一个睡眠状态的Station,响应的时间要慢好多)。 对于发送给这个Station的广播帧,其处理方式和普通帧有一点不同:当有广播帧要传达给这个Station的时候,AP会为这个Station缓存发送给它的广播帧,但是缓存的时间是DTIM(一般为300ms)。注意:单播帧缓存的时间不一定是多少,广播帧却缓存DTIM的时间。AP每发送一个Beacon的时候,都会将Dtim减少1,而Station睡眠的时候,会不时地醒来,查看一下Beacon帧中的dtim值。当Station发现其DTIM值变成0的时候,就醒来长一些的时间,看看有没有广播给它的数据,如果有的话就用类似Power Save Poll的帧接受,没有则继续睡眠。 这里,接收数据是根据是否有more data类似的字段来确认是否有更多的数据的;重发的帧是用类似retry的字段来标记。另外注意,当Station进行Sleep的时候,还是可以主动Tranmit消息的,当Station主动Transmit消息的时候,它会等待Reply,所以这个时候,Receiver是on的状态。用一个图示来标识Sleep,Receive,Transmit时的电源消耗状况,大致如下: 可见不同状态,电源消耗状态不同(传送比接收更耗电),另外,如果电源供电不足,在某个状态中就会出现通信失败的情况。(好像ap上面broadcom芯片中的睡眠之后,醒来立即重新发送的时候经常开始会失败,可能就是这个原因)。 6、建立Association 下面是Station和Ap建立开放Association的过程: (0)Ap周期性地广播Beacon帧 (1)Station广播Probe Request到达Ap (2)Ap向Station发送Probe Reponse (3)Station向Ap发送ACK (4)Station向Ap发送Authentication Request (5)Ap向Station发送ACK (6)Ap向Station发送Authentication Reponse (7)Station向Ap发送ACK (8)Station向Ap发送Association Request (9)Ap向Station发送ACK (10)Ap向Station发送Association Reponse (11)Station向Ap发送ACK (12)Station和Ap开始相互通信。

用户评论

颓废i

最近手机网速太慢了,怀疑是WIFI的问题

    有20位网友表示赞同!

╭摇划花蜜的午后

想学点WIFI的知识,以后自己能解决一些问题

    有6位网友表示赞同!

素衣青丝

好多家都是租用的WIFI,不知道有没有什么更好的选择

    有20位网友表示赞同!

有你,很幸福

想知道不同类型的路由器有什么区别

    有15位网友表示赞同!

无望的后半生

wifi怎么调到更快一点啊?

    有16位网友表示赞同!

青袂婉约

听说WIFI 6比WIFI 5速度快很多是真的吗?

    有16位网友表示赞同!

←极§速

学习一下WIFI基础知识,方便以后升级设备

    有17位网友表示赞同!

经典的对白

哪些app会占用WIFI流量最多啊?

    有6位网友表示赞同!

今非昔比'

想了解一下如何设定密码和安全设置,避免被人盗用

    有17位网友表示赞同!

淡写薰衣草的香

在家办公需要稳定的WIFI连接,不知道怎么维护好

    有14位网友表示赞同!

ー半忧伤

最近手机经常断网,可能是WIFI问题吧

    有6位网友表示赞同!

风中摇曳着长发

想用WIFI实现语音控制家电,听说需要一些特殊配置呢

    有15位网友表示赞同!

旧爱剩女

想知道WIFI覆盖范围是怎么确定的?我的书房信号很差

    有19位网友表示赞同!

熏染

有没有什么方法可以减少WIFI干扰?

    有6位网友表示赞同!

爱你的小笨蛋

邻居家WIFI一直自动连接,是哪个软件弄的?

    有16位网友表示赞同!

命硬

WIFI和蓝牙的区别是什么呢,什么时候用哪种好

    有14位网友表示赞同!

浮殇年华

想了解一下关于WIFI的最新技术发展

    有13位网友表示赞同!

优雅的叶子

买路由器的配置参数好多,不太懂需要选什么型号

    有11位网友表示赞同!

有阳光还感觉冷

想学习一些解决WIFI连接问题的技巧

    有19位网友表示赞同!

予之欢颜

希望可以学习到一些WIFI知识,提升效率

    有7位网友表示赞同!

【全面解读:无线网络(WIFI)必备知识】相关文章:

1.蛤蟆讨媳妇【哈尼族民间故事】

2.米颠拜石

3.王羲之临池学书

4.清代敢于创新的“浓墨宰相”——刘墉

5.“巧取豪夺”的由来--米芾逸事

6.荒唐洁癖 惜砚如身(米芾逸事)

7.拜石为兄--米芾逸事

8.郑板桥轶事十则

9.王献之被公主抢亲后的悲惨人生

10.史上真实张三丰:在棺材中竟神奇复活