- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
老师把无线网络用一节课一遍过了…感觉没能学透,便课后自己总结,看书,找资料补充,把无线网络大概摸了个七七八八。虽然不算精细,但还能看!内容包括WLAN总概,WiFi—WLAN的实现,802.11规定的帧结构,以及蜂窝网络.
强烈推荐一本书:《802.11 Wireless Networks: The Definitive Guide》, 2nd Edition by Matthew S. Gast;这本书有效地帮助了这节课的复盘.
还有推荐一个知乎的博主徐工 徐方鑫 ,在这方面的知识能学到很多! 。
无线网络在近些年来一直是个非常流行的东西。现在的移动用户数量已经大大超过了有线用户数量,比例大于5:1.
从有线到无线是网络构建上一个伟大的设想,挑战性主要集中在 wireless 和 mobility 两个点上.
这两个是不同的概念!不要混为一谈!两个概念不等价,虽然很紧密.
wireless无线 :如何 使用无线链路 进行通信 。
mobility移动性 :如何处理 改变网络连接点 的移动用户,即用户可以随时改变接入节点(mobile的节点链路不一定是无线的,有线网络也有着随时拔线插线的问题,这也是一个移动性问题) 。
根据无线网络中所处位置的不同,我们可以将组成元素分为三类:
wireless hosts 无线终端:
base station 基站:
wireless link 无线链路:
因为无线通信受距离影响极大,所以根据距离的不同有不同的无线协议标准。(距离很长很长就进行长波通信,如渔船潜艇;再长就到卫星通信) 。
传统的 infrastructure mode :
新兴的 ad-hoc mode :
下图展示了两种模式在通信中所处单跳和多跳环境时的不同之处:
无线链路因为其无线信号传播的性质,和有线链路有几个不同之处: 信号易衰减 , 多路传播自干扰 ,以及 不同源干扰 .
信号在传输过程中受到的损伤可以分为衰减、噪声和失真几种。在课上主要学习了信号的 衰减的量化指标 和 噪声指标相应的的量化关系 .
无线信号在路径上通过介质传播时,强度会因为反射,衍射,吸收,地形轮廓(城市,农村,植被),湿度等因素不断减弱。这也被称为 路径损耗 ( Path loss )。这个损耗的指标用一个叫 自由空间损耗 ( FSPL )的值来衡量,它是一个“ 增益负值 ”,可以表示信号总发送功率和接收功率之间的比值关系,单位为分贝。 $$ FSPL = P_L = 10\lg(\frac{P_{recv}}{P_{tran}})=10\lg(\frac{4\pi{d 2}}{\lambda {2}}) = 20\lg{d} + 20\lg{f} + 32.44 $$ 可以看看这篇文章,写了有关FSPL的推导: 802.11协议精读15:链路模型(基于Free-Space Path Loss) 。上图即为自由空间损耗模型.
除了衰减,信号在传输过程中也会受到一定的噪声干扰,噪声是指 在传送和接收之间的某处插入的不希望有的信号 。在计网课上并没有详细阐述噪声的类型,但给出了 信噪比 ( SNR )和 误码率 ( BER )之间的量化关系.
信噪比是表征信号质量的重要指标之一。绝对信号功率是影响信号质量的重要因素,但并不代表信号质量——也就是说并不是绝对信号功率越强,信号质量越好。而 SNR 作为信号功率和噪声功率的比值表示,可以有效预测通信系统中信号的质量,可以说SNR是越高信号质量越好的;同时,噪声叠加会导致解码器解码错误,错误衡量的指标就是 BER 。总的来说,SNR越高,BER则越低.
下图展示了SNR和BER在不同调制编码方式(物理层)下的关系:
可以看到:
所以我们要对SNR和BER做出一定的权衡.
同一调解方式下可以通过升高SNR来获取比较好的BER,但是,SNR是不能无限升高的,尽管可以通过增强信号来增加SNR,但过高会导致放出的能量过大,对人体有害.
给定了SNR,可以选择一个调制编码方式(物理层)来选取相对的BER(越先进即越深的调制编码越容易受干扰,因为一个信号中带的bit较多) 。
SNR会根据移动性来变换,动态切换调制编码方式(可以看看拿着手机的时候,自己的网速会跟着自己的移动而变化) 。
这里有一篇文章值得看一看: 无线通信中的SNR、SINAD和SINR 。
无线信号不是按照一个确定的直线方向进行传播的,就像上面所给出的自由空间损耗模型;信号在传播时会接触到不同的表面而产生反射,这些反射会导致信号传播的时差,从而到达目的地时会产生叠加,形成自干扰。如下图:
如果在同一时间有其他设备与你一起共享无线网络频段(如2.4 GHz的信道叠加),就会产生一定的干扰;除此之外,一些无线设备(如蓝牙鼠标、键盘,甚至USB3.0等)也会干扰你的信号.
这篇文章讲了对WIFI网络信号的影响因素: What affects Wi-Fi networks ?里面提到了各种各样的发射源干扰.
把目光从无线链路放到无线网络上,无线网络也有一些总体的特点:
传播媒介是 broadcast 的:任何在邻近的接收端都能收到信号,以及对发送端造成干扰; 。
半双工:即不能同时收发信号;尽管在近些年来研究发现全双工是可以实现的,但是在商业成本上过高。可以看看这篇回答: 为什么有线网络可以全双工,而无线网络只能半双工呢?
发送端发送的信号并不总是以接收端接收到为结束; 。
产生的问题:多址接入问题,隐藏终端问题( Hidden terminal problem ) 。
WiFi我们平时常常挂在嘴边,但它和802.11协议簇有什么关系呢?简单来说,IEEE 802.11是无线局域网的实现标准,Wi-Fi是对IEEE 802.11标准的产品实现, IEEE 802.11的标准并不等同于Wi-Fi.
Wi-Fi是Wi-Fi联盟的商标。Wi-Fi联盟是一个为了推动IEEE 802.11标准的商业组织,其主要目的是在全球范围内发展基于IEEE 802.11标准的无线局域网技术。IEEE 802.11提出的标准较为理论化,在实际生产中,各个厂家对于Wi-Fi产品的实现不尽相同,Wi-Fi联盟很好地解决了符合IEEE 802.11标准的各Wi-Fi产品生产和设备兼容问题.
也就是说, IEEE 802.11侧重无线局域网理论层面,包括物理层、MAC层相关技术标准制定;Wi-Fi联盟侧重产品层面,对符合IEEE 802.11标准要求的产品制定规范以达到设备兼容的目的.
组成元素对应的术语如下:
Station
(STA): device with IEEE 802.11 conformant MAC and physical layer Access Point
(AP): Provides access to the distribution system via the wireless medium Basic Service Set
(BSS):A single cell coordinated by one access point (base station) Extended Service Set
(ESS):Multiple BSSs interconnected by Distribution System (DS)
Distribution System
(DS): A system used to interconnect a set of BSSs and integrated LANs to create an ESS PS: IBSS 为 Independent Basic Service Set,可以说是在ad-hoc mode下的BSS。 WDS 为wireless distribution system.
我们以802.11b协议为标准来做一个简单的举例.
beacon frame
)(即扫描有啥WIFI可以连接); authentication
); 来看看其中的一些过程以及产生的问题:
Host的侦听过程发生在host将无线信号接入到已经扫描到的channels的过程中,过程可以分为passive和active两类:
Passive Scanning(左图): AP们会不断地往周围发出信标帧,间隔为100ms;Host扫描( 本地网卡在每一个信道上进行轮换扫描 )接收到后,发出一个选择AP的request帧,AP们收到request帧后,被选择的对应AP返回一个response帧给Host,连接建立; 。
Active Scanning(右图): 首先Host会 在不同的channel上周期性 广播一个probe-request帧(这个帧有两种格式,见链接),然后等待AP们收到该帧后返回的probe-response帧(带着各个的SSID);Host接收到后,发出一个选择AP的request帧,AP们收到request帧后,被选择的对应AP返回一个response帧给Host,连接建立; 。
这两篇blog给出了详细的阐述: 802.11中的主动扫描与被动扫描 , wifi的主动扫描和被动扫描 。
还有一个好回答!能学到东西: 有关WIFI中的扫描SSID的问题?
如图,多址接入会产生隐藏终端、信号衰减、暴露终端等问题。其中比较重要的是隐藏终端 hidden terminal 问题.
什么是 hidden terminal problem?这里有太长不看的锻炼英语能力的阐释: The Hidden Terminal Problem ;用我们的话来说,就是存在两个或以上的STA,这些STA在距离上离得非常远(超出彼此传输范围),谁也不知道谁的存在,但他们却要同时向接收端(AP)发送数据,就像上图A和C被一座大山挡着了一样.
这个问题会让A和C在发送的时候都会认为当前信道空闲,导致数据在B处产生了collision.
那么该如何解决呢?采用了 IEEE 802.11 RTS/CTS 协议! 。
PS:RTS/CTS exchange is a required function, but can be disabled. 。
隐藏终端是由于监听到的信道空闲而不是真的空闲,故引发冲突。而暴露终端是由于监听到的信道忙而不是真的忙,故其可以传输而不传输.
还是继续来一篇好文章,深入解释: 802.11协议精读5:隐藏终端和暴露终端 。
PS:最下面一层是物理层即编码方式的选择.
在详细阐述两种802.11MAC类型以及对应的协议机制前,我们先来引入关于 帧间间隙 的概念:
在802.11使用的CSMA/CA协议中,发一个帧之前,都需要 "等待" 一个相应的帧间间隔,比如发送数据之前至少要等待DIFS时间,发送ACK之前需要等待SIFS时间。这种机制可以有效地 避免 传输冲突。而不同类型的traffic需要不同的优先级,我们可以根据 优先级 来分配 帧间间隙 ,那么有哪些帧间间隙?对应各类优先级?
SIFS
(Short Inter_Frame_Space):短帧间间隙,发送ACK,、LLC(链路层控制)的控制信息数据包、轮询回应、CTS……时使用,基本都为控制信号; PIFS
(point coordination function IFS):点协调帧间间隙,被中心控制器使用(中心节点),发送轮询信息时使用; DIFS
(Distributed coordination function IFS):分布式帧间间隙,用于所有普通异步通信信息(就是最普通的发信息啦) 无线的MAC主要有两类: PCF 和 DCF (也就是两个MAC子层)。其中DCF是指 分布式协调功能 ,分布式控制,用于传输异步数据;PCF是指 点协调功能 ,集中式控制,用于发送实时数据,优先级仅次于控制帧.
下面是IEEE给出的DCF和PCF定义:
IEEE 802.11 defines two MAC sub-layers
- Distributed Coordination Function (DCF) – DCF uses CSMA/CA as access method as wireless LAN can't implement CSMA/CD. It only offers asynchronous service.
- Point Coordination Function (PCF) – PCF is implemented on top of DCF and mostly used for time-service transmission. It uses a centralized, contention-free polling access method. It offers both asynchronous and time-bounded service.
Both DCF and PCF are 802.11 medium access types that are the mechanisms for the implementation of CSMA/CA in WLAN. 。
在当前的802.11协议中,除了初始定义的DCF和PCF工作模式外,在802.11e中还定义了EDCA,HCCA(DCF被扩展为EDCA模式,PCF模式被扩展为HCCA模式).
PCF和DCF和两种无线应用模式的关系( DCF and PCF in Wifi-networks ):PCF只在infrastructure module中使用,因为PCF需要一个站点作为point coordinator. 。
DCF 分布式协调MAC 。
DCF使用CSMA/CA机制进行数据传输。在DCF模式下存在两种子模式:Basic模式与RTS/CTS模式。其中Basic模式就是CSMA/CA机制的使用模式,而RTS/CTS模式在前文我们以有所讲解.
CSMA/CA机制 。
由于无线信道只有一个冲突域的特性,所以需要设置一种随机接入机制,以避免多个节点同时访问网络所带来的冲突问题,在WiFi协议中,该随机接入机制即是CSMA/CA( Carrier Sense Multiple Access with Collision Avoidance ).
CSMA/CA和以太网中使用的CSMA/CD都是基于CSMA机制,但在细节方面有着许多的不同。CSMA/CA主要是要 “避免” 冲突的出现。来看一个时序图:
可以看到两个STA的竞争信道的步骤为:
如果没有收到ACK,则如图:总共等待EIFS时间后重新开始信道竞争。( EIFS=SIFS+ACK+DIFS时间 ) 。
PS:当一个站要发送数据帧时,仅在下面的情况下才不使用退避算法:检测到信道是空闲的,并且这个数据帧是它想发送的第一个数据帧。除此以外的所有情况,都必须使用退避算法.
PCF 点协调MAC 。
在PCF中,必须要有一个coordinator来保证 无竞争 媒介接入。在802.11中,coordinators须为AP,所以PCF只能在infrastructure mode中使用( 但不是全程使用,由于PCF是以DCF作为基础扩展的,所以 infrastructure mode中往往是PCF和DCF交替提供服务 );当PCF使用起来的时候,媒介上的时间段被划分为contention-free周期(PCF控制访问)和contention周期(DCF控制访问).
PCF的过程如下:
PS:新的标准中PCF已经被废弃.
802.11MAC的逻辑图如下:
结合文章 802.11协议精读2:DCF与CSMA/CA 和 802.11协议精读4:PCF工作模式 来看,还有一个问题的回答 802.11协议中为什么DCF比PCF应用更广泛? ,能很好地理解.
PS:对802.11帧各个字段的详细阐述: IEEE 802.11 Mac Frame 。
看到这个帧结构时是不是会觉得莫名奇怪?先撇开其它不谈,为什么802.11帧会有四个地址?
课上给出了一定的解释:
课上说,前三个地址使得无线帧可以“转换”成有线帧,即从802.11转换到802.3.
那dest的地址字段不用填了?明明在802.3的LAN中就只有两个地址字段(src和dest)……而802.3中的bridge和switch对host来说是透明的,也不见得要填它们的MAC啊……虽然第三讲中有“当主机想要向外网通信时,需要用寻找的MAC是第一跳路由器的MAC”,但对于WLAN来说,还是讲得不清不楚啊!自己动手,丰衣足食! 。
在stackexchange上找到了同样有疑惑的老哥: Four layer-2 addresses in 802.11 frame header ,回答里面提到,当802.11设备向接收设备发送数据时,这些设备中的一个(或两个)可能不是流量的实际源或目的地。面对这种情景我们可以构建四个地址,这是一点准备工作; 。
查阅帧结构发现:
四个地址字段和frame control字段中的DS位有关:
- Address 1 to 4 – These are 6 bytes long fields which contain standard IEEE 802 MAC addresses (48 bit each). The meaning of each address depends on the DS bits in the frame control field.
DS位又和分布式系统有关…… 。
- To DS: It is a 1 bit long field which when set indicates that destination frame is for DS(distribution system).
- From DS: It is a 1 bit long field which when set indicates frame coming from DS.
蝙蝠书给出了一个对应不同功能填写地址字段的表:
Function | ToDS | FromDS | Address 1 (receiver) | Address 2 (transmitter) | Address 3 | Address 4 |
---|---|---|---|---|---|---|
IBSS | 0 | 0 | DA | SA | BSSID | Not used |
To AP (infra.) | 1 | 0 | BSSID | SA | DA | Not used |
From AP (infra.) | 0 | 1 | DA | BSSID | SA | Not used |
WDS (bridge) | 1 | 1 | RA | TA | DA | SA |
可以说,在802.11中,transmitter并不一定就是帧的creator,同样,receiver并不一定就是最终解包的processor。根据功能的不同,地址字段的填写也不同。课上的情况其实就是二和三行的情况,Address3填写的是路由器的MAC地址,这一点和“当主机想要向外网通信时,需要用寻找的MAC是第一跳路由器的MAC”是相同的。(下图为二三行分别对应情形) 。
host可以保持在不同的BSS之间移动过程中IP不变;这个过程需要网络层的 Mobile IP 协议(RFC3344)来实现,在这里先不展开阐述(因为这课是自底向上……); 。
而在链路层中,移动性的实现需要交换机来协助完成:交换机需要记住host是在哪个AP!记忆行为就通过交换机的自学习机制来实现.
802.11中有一些为适应无线网络的特点而做出来的功能,如 rate adaptation 和 power management 。
Rate adaptation允许在无线网络中以不同的速率进行传输,传输的速率取决于所处的网络条件。在无线网络中,信号强度是有强有弱的,rate adaptation技术的出现可以让传输速率根据信号强度而跟随变动。信号强时采用高速调制方式,弱时则相反.
在IEEE上的有关 rate adaptation 的算法论文综述: Rate adaptation algorithms for IEEE 802.11 networks: A survey and comparison 。
power management 指在不工作时关闭电源或将系统切换到低电源状态的功能。在WLAN中(infrastructure mode),基本思想是AP缓存下行数据,并周期性向对应的节点其广播缓存区情况,从而节点可以知道自己是否被数据缓存了。在休眠结束后,被缓存数据的节点就会进行数据请求,反之就继续休眠。广播缓存区情况内容包含在信标帧中,AP的周期性广播也是广播信标帧.
在前面我们知道了一台host是如何接入WiFi的,但大多数WiFi的覆盖范围只有10~100m左右,当我们在户外的时候无法访问WiFi时,该如何接入无线Internet呢?
我们可以将蜂窝电话扩展到蜂窝网络,使它既支持语音电话,又能支持无线Internet接入。下面我们简要介绍一下.
多个移动设备接入基站时,无线射频的划分有两种方式:组合FDMA/TDMA, 以及CDMA。2G就是采用了组合FDMA/TDMA的对空接口,下面是自顶向上的阐述:
4G和5G就不是一张两张图能够概括的了...还有很长的路要走! 。
最后来一个移动通信的演化图^^ 。
最后此篇关于计网学习笔记五wireless&&mobilenetworks的文章就讲到这里了,如果你想了解更多关于计网学习笔记五wireless&&mobilenetworks的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 9 年前。 Improve
介绍篇 什么是MiniApis? MiniApis的特点和优势 MiniApis的应用场景 环境搭建 系统要求 安装MiniApis 配置开发环境 基础概念 MiniApis架构概述
我正在从“JavaScript 圣经”一书中学习 javascript,但我遇到了一些困难。我试图理解这段代码: function checkIt(evt) { evt = (evt) ? e
package com.fastone.www.javademo.stringintern; /** * * String.intern()是一个Native方法, * 它的作用是:如果字
您会推荐哪些资源来学习 AppleScript。我使用具有 Objective-C 背景的传统 C/C++。 我也在寻找有关如何更好地开发和从脚本编辑器获取更快文档的技巧。示例提示是“查找要编写脚本的
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 4年前关闭。 Improve thi
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
关闭。这个问题不符合 Stack Overflow guidelines 。它目前不接受答案。 想改善这个问题吗?更新问题,以便堆栈溢出为 on-topic。 6年前关闭。 Improve this
我是塞内加尔的阿里。我今年60岁(也许这是我真正的问题-笑脸!!!)。 我正在学习Flutter和Dart。今天,我想使用给定数据模型的列表(它的名称是Mortalite,请参见下面的代码)。 我尝试
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 9年前关闭。 Improve this que
学习 Cappuccino 的最佳来源是什么?我从事“传统”网络开发,但我对这个新框架非常感兴趣。请注意,我对 Objective-C 毫无了解。 最佳答案 如上所述,该网站是一个好地方,但还有一些其
我正在学习如何使用 hashMap,有人可以检查我编写的这段代码并告诉我它是否正确吗?这个想法是有一个在公司工作的员工列表,我想从 hashMap 添加和删除员工。 public class Staf
我正在尝试将 jQuery 与 CoffeScript 一起使用。我按照博客中的说明操作,指示使用 $ -> 或 jQuery -> 而不是 .ready() 。我玩了一下代码,但我似乎无法理解我出错
还在学习,还有很多问题,所以这里有一些。我正在进行 javascript -> PHP 转换,并希望确保这些做法是正确的。是$dailyparams->$calories = $calories;一条
我目前正在学习 SQL,以便从我们的 Magento 数据库制作一个简单的 RFM 报告,我目前可以通过导出两个查询并将它们粘贴到 Excel 模板中来完成此操作,我想摆脱 Excel 模板。 我认为
我知道我很可能会因为这个问题而受到抨击,但没有人问,我求助于你。这是否是一个正确的 javascript > php 转换 - 在我开始不良做法之前,我想知道这是否是解决此问题的正确方法。 JavaS
除了 Ruby-Doc 之外,哪些来源最适合获取一些示例和教程,尤其是关于 Ruby 中的 Tk/Tile?我发现自己更正常了 http://www.tutorialspoint.com/ruby/r
我只在第一次收到警告。这正常吗? >>> cv=LassoCV(cv=10).fit(x,y) C:\Python27\lib\site-packages\scikit_learn-0.14.1-py
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be
我是一名优秀的程序员,十分优秀!