---
# System prepended metadata

title: 802.11 wireless networkg聖經本

---

802.11 wireless network: the definitive guild:
author: Mattbew S. Gast
個人心得筆記:
#

ch2 802.11 network introduction: 術語/設計/網路運作/移動性支持  

ch3 802.11 MAC基礎: mac 訪問模式與時機/DCF and PCF/ frame 分段重組 格式  

ch4 802.11 形成frame細節: data Frame/ control Frame/ management frame/ 身分驗證  

ch5 有限等效加密: WEP密碼/加密操作/動態WEP  

ch6 802.11x 用戶身分驗證: EAP(可擴展身分驗證協議)/ EAP認證方式/ 802.1X 網路連接端口認證  

ch7 802.11 RSN, TKIP與CCMP: TKIP(臨時密鑰完整性協議)/ CCMP(計數器模式及密碼鏈訊息認證)/ RSN(強健安全網路)運作  

ch8 管理操作: 管理結構/ 掃描/ 身分驗證/ 關聯操作/ 節省電力  

ch9 PCF無競爭服務: PCF無競爭訪問/ PCF frame封裝細節  

ch10 物理層概述: 物理層架構/ 無線鏈路/ RF傳播與802.11  

ch11 跳頻 ch12直接序列   

ch13 802.11a 與802.11j OFDM正交分頻復用  

ch14 增強速率物理層 ch15 MIMO-OFDM  
  
# 



### ch2 802.11 network introduction: 術語/設計/網路運作/移動性支持

802.11 1Mbps, 2.4Ghz, 支持跳頻與直接序列; 802.11g 54Mbps, 2.4Ghz 第四代PHY標準採用802.11a編碼技術(正交分頻復用)目前最常見

openwrt是甚麼? 
預設映像安裝是有 WIFI 功能靈活的路由器，精簡的 Linux ，輕鬆添加用戶安裝的軟體包(VPN、VLAN、動態 DNS、日誌記錄、防火牆、連接埠轉送等)
LuCI介面是openwrt的Web管理介面


:::success
Station工作站: 裝置無線網路街口的設備.  
AccessPoint 接入點: 具備無線至有線的橋接功能設備  
Distribution ststem分布式系統(一組用網路互相通訊的電腦(AP)形成的系統): 通訊的骨幹網路是802.11的邏輯組件，負責接入點間的轉發Frame  
Beacon frame(信標) 用來宣布802.11網路的存在並協助關聯  association的frame  

PLCP(物理層匯聚過程)負責將mac frame映射到傳輸媒介  
PMD(物理媒介相關)負責傳送frame

IBSS獨立基本服務集: 一組station相連通訊無AP存在 (因小且目的特殊 也稱ad hoc特設網路)
Infrastucture BSS基礎結構服務集: AP接入點負責網路中所有通訊
ESS擴展服務集: 用分布式系統將多個BSS連一起，所有同一ESS的接入點AP 有相同SSID服務組標示符

無線媒介本身也可做為分布式系統(WDS) 允許工程師在鏈路層連接兩LAN
:::
訊號傳送可用二種方式：
(1)一種是把頻率限制在載波附近，發送強大訊號通過，優點是訊號清楚，但缺點就是只有一個人使用，不太經濟，此種方式稱為「窄頻通訊」。
(2)一種是把頻率放寬，但所有人都在此頻段通過，優點是效率較高，但訊號較弱，此種稱為「寬頻通訊」。


### ch3 802.11 MAC基礎: mac 訪問模式與時機/DCF and PCF/ frame 分段重組 格式

使用CSMA/CA 而非CD 因衝突會浪費傳輸且無線電波偵測衝突代價高.(波受物體影響 怎麼判斷是衝突而非其他干擾等因素)，還要求送了就要收到回覆ACK得機制。

:::danger
隱藏節點: 不知道鄰居的鄰居的存在，因而通訊可能訊號衝突，難以監測原因是收發器常為half-duplex即無法同時收發數據。解決方法使用RTS, CTS訊號清空傳送區域，封包超過RTS_threshold值才要發RTS/CTS控制，不超過可直接送frame

無線媒介訪問由協調功能(coordination function)控制，DCF(分布式協調)與基礎，PCF(point coordination)則在其架構上提供優先權。

DCF: 檢測link idle超過DIFS時間後，選一隨機backoff退避時間，只在link idle超過difs後開始遞減到0就可發送
PCF: 由協調者偵測link idle PIFS時間後選擇某工作站可發無競爭的frame，使用poll down, poll up

虛擬載波監聽由NAV網路分配向量(似timer)提供，frame包含duration表示占用媒介時間，只要NAV不為0就表示媒介忙碌，這就是虛擬仔波監聽。NAV可保證automic operation(RTS/CTS or 一送一回ACK)不被中斷
:::
SIFS 高優先權，RTS/CTS, ACK, poll 這些經過link idle 超過SIFS後就可傳輸

NAV與SIFS控制媒介的使用:
超過fragmentation thresgold 就進行frame 分段，每片段有相同序列號及遞增fragment number便於重組  
(注意送方3SIFS + 2 ACK + 1 fragment 為何? 請回憶重送是我們送方的職責，自然希望fragment完後，送方範圍內的NAV都設定著，直到我們正確收到ACK0，而收方是 2SIFS+1ACK+1fragment)  
![control-nav-sifs](https://hackmd.io/_uploads/rJTmW6mrkl.png)

![frame-type](https://hackmd.io/_uploads/r1QGmpXH1x.png)

Power 管理位元: 802.11網路適配器(網卡)常以pc card形式出現，此位用來只是送端完成automatic frame交換後是否進省電模式

More data: 位服務省電中的工作站，接入點將接收的frame緩存若接入點設定此位代表有frame待傳給休眠工作站

Protected frame:無限傳送本質易被攔截，若frame受到鏈路層安全協議保護'就設定為1

Duration: 設定NAV
![duration](https://hackmd.io/_uploads/ByLgS67B1e.png)
Duration第15位為0時，此字段拿來設定NAV

CF frame之duration 設為32768 被解讀為NAV 讓沒收到beacon frame的工作站公告無競爭週期 以便將NAV更新從而避免干擾到傳送

PS-poll: 在省電-輪詢frame中，第14,15設定為1，休眠工作站必須定時醒來確保不遺漏frame，醒來時送出ps-poll(工作站加AID標示其所屬的網路(BSS))以便從access point取得緩存的frame

FCS(frame check sequence): 
通常是cyclic redundancy check(CRC)碼,計算涵蓋MAC標頭裡所有字段以及frame主體

BSSID: 接入點AP無線接口所使用的MAC位址

:::warning 
802.1H tunnel encapsulation/ RFC 1042(IETF封裝) 兩種封裝LLC(payload)數據的方式，均衍生自802.2的子網路訪問協議(SNAP)，MAC地址複製到封裝frame開頭後插入SNAP標題(DSAP目的服務接入點,SSAP源服務接入點)，並開始填入WIFI header format
#### 就是做 Ethernet to 802.11 的封裝處理
:::

![enc](https://hackmd.io/_uploads/SkTXOp7BJe.png)

![broadcast](https://hackmd.io/_uploads/SyfKOpXSJg.png)
:::success
因為這類frame(廣播與組播)不用回應，組播frame不用分段也不用確認，只涉及一個frame，故NAV設0

unicast 單播:
frame分段: 上層IP常用到fragmenttation 缺點是接收端重組若有一小frame遺失則整包要重送，在link layer層分段可以提升速度，此外802.11可以利用frame分段避免干擾。無線電波干擾常以瞬間高能撥出現常與AC電源線同步，frame分段可保護大部分不損壞。
:::


![frame-frag](https://hackmd.io/_uploads/S1f-cTQB1x.png)

接收到ps-poll的接入點有兩選擇: 立即響應(SIFS)/ 等環境許可(先回簡單defferred respond) 這由接入點(無線基地台)廠商用的芯片決定

關於傳輸速率: 設備彼此有不同的支持速率(station內有operational rate list) 為保證正常溝通 要求控制frame(RTS/CTS)必須以基本速率集 中的一種作傳送，且回應frame需與初始frame使用相同調製(modulation是一種將一個或多個週期性的載波混入想傳送之訊號的技術)方式(DSSS or CCK互補碼鍵控 or OFDM)


:::danger
![trasport](https://hackmd.io/_uploads/BJXIj6XB1e.png)


接入點扮演802.11與Ethernet間的橋梁 需要了解frame在兩種媒介的傳輸:
1.檢查完整性 FCS
2. 改動address 1 成接入點MAC地址和移除重複frame
3. 若有受鏈路層安全協議保護就解密 解密後看是否要重組，還有標頭轉換成Ethernet標頭

有線至無線: 
1.驗證乙太FCS(frame check sequence)，檢查地址與接入點有無關聯
2. 附加SNAP標頭並封裝 看是否有加密需求，以及將Ethernet目的MAC地址複製到802.11 MAC標頭address 1部分，將BSSID(base service set 設備id)複製到address 2部分 填其他地址和duration並交給802.11接口傳送
:::

contentsion free 的duration要設成32768 (對應Duration 那圖片的設定) 
廣播與組播的duration要設成0，addr1設廣播/組播地址


### ch4 802.11 形成frame細節: data Frame/ control Frame/ management frame/ 身分驗證:

地址字段的編號與功能取決於設定的DS位
![DS-bits](https://hackmd.io/_uploads/rkSQxA7Bkg.png)

:::warning
基本就思考 media缺陷與需求 就知道Frame control裡面有: power, retry, more frag, more data, protected frame等bit 還有ToDS FromDs設定4個addr和type分management(00)/control(01)/data(10)

小細節: 廣播組播addr1設成0 還有duration 0 因為不需確認無須NAV防止別人用媒介

#### 工作站址回應來自同一基本服務集(BSS)的廣播或組播，若來自不同BSS的則忽略
![four-addr](https://hackmd.io/_uploads/Sy2J7EtUJx.png)
#### 基本可用 addr1 收端地址 addr2送端地址 addr3來源地址 addr4目的地址 的概念 配合ToDs, FromDs bit 值 來設定出上表



NULL frame 在傳統Ethernet只是負擔，但802.11中移動式工作站利用null frame 通知接入點 我改變了省電狀態(若工作站沒數據要經DS傳送可以用null frame 同時power mana bit 設成1)。接入點不可能進省電所以不傳null frame
:::
802.11中工作站會用NULL frame通知接入點AP 說工作站變成省電狀態
frame類型 完全取決subtype (由type 2bit 看是 管理 控制 數據 哪種, 再由sub type 4 bits 看是哪個細類)
![data-frame](https://hackmd.io/_uploads/HJA1yAXrkg.png)

RTS frame 只包含frame header， body中不含任何數據, header後就是FCS
![rts-frame](https://hackmd.io/_uploads/SJtYEVYIkg.png)


![ACK](https://hackmd.io/_uploads/HJb5RTQHJg.png)

![ps-poll](https://hackmd.io/_uploads/Bk3yApmS1g.png)

:::success
管理類型的frame: 這些額外內容 都是放frame body 又分固定長度(10個以 capability, listen interval, reason code, status code, current AP, association ID為重點) 與變動長度(information element (FH,DS,OFDM等參數, support rate,TIM(是一種虛擬位元映射 休眠工作有其ID 此TIM若將對應ID設成1代表此工作站需要接收AP幫緩存的frame)))

AID(關聯標示符): 接入點指定的一個數值(1~2007)來識別關聯，可讓接入點找出為移動式工作暫緩存的frame


![capability](https://hackmd.io/_uploads/B1UkvNtI1l.png)


listen interval: 就是以beacon interval為單位計算的休眠時間，越長則AP要幫休眠站緩存越久

Reason code(16 bits): 當對方不適合加入網路，工作站送取消關聯frame作為回應，這些frame包含16位原因代碼表示對方作法有誤

Status code(16bits)狀態碼用來表示某操作成功或失敗 成功為0

:::


有線網路識別工作站簡單，但無線網路身分驗證 需要管理機制三步驟:
#### 可供訪問的無線網路 -> 網路系統(AP)對host身分驗證 -> host要與接入點建立關聯

Frame管理類型: Beacon frame(通知AP存在與講述自身能力(FH,DS,CF等)); CF-poll CF-down CF-Up ; 認證(RSN/TKIP); Probe and association 探測與連線

![frame-mana-format](https://hackmd.io/_uploads/HyTEZCQB1e.png)

IBSS中沒有AP，如果工作站有位休眠的某暫緩存frame，就送ATIM(announcement TIM)通知對方有訊息待傳

:::warning
關聯請求 自然要驗證對方能力capability, listent interval(記錄對方多久聽一次beacon frame以監視TIM訊息), SSID, support rate
![asso-request](https://hackmd.io/_uploads/B1za1r5UJg.png)


以及 各狀態要接收的frame(依ACK,RTS,CTS等優先高分class 1(control frame, probe, authenication), 2(association), 3(data frame,ps poll))
![status](https://hackmd.io/_uploads/Hk9EySc8Jx.png)

這些某種程度也是filter，身分不到就過濾，還有同一BSS成員的廣播組播才收，也有點像過濾的感覺
因為媒介本身問題(開放 移動 干擾) 認證 與 確認重送(提升可靠)等機制也是wifi MAC更關心的
:::


### ch5 有線等效加密(Wired Equivalent Privacy): WEP密碼/加密操作/動態WEP:

WEP不安全，但易實現且簡單計算(RC4加密)，此外新技術TKIP仍會用到WEP frame處理

加密前通過完整校驗算法產生 ICV(intergrity check value)的hash值
IV則是初始向量 跟payload與secretive key都是用戶輸入項
從四個主secret key中選一個與IV結合 做RC4 key加密payload and ICV 
![WEP-flow](https://hackmd.io/_uploads/B12gQAmS1g.png)
加密的資料 為 payload and ICV 供接收方用ICV驗證frame有無被改動

![WEP-frame](https://hackmd.io/_uploads/SkBwrAXHyl.png)

:::success
順序:
1. frame在queue中等待傳送，WEP保護payload，標頭不變動
2. 算ICV 加密frame組裝
3. WEP(key 分secret key and IV(因同一secretive每個frame密碼重複故用IV產生不同flow 密碼))組裝完，IV附加在secret key之前
4. frame key 作為RC4(串流加密算法)的私鑰用來加密payload(始於SNAP標頭第一位至body最後一位)，然後送出
:::


(WEP不夠完善 最佳攻擊可在數秒內破解取得密鑰)

![WEP-header](https://hackmd.io/_uploads/ByuOfHqL1g.png)


手動與動態WEP (分配key)，動態WEP比靜態好，接入點每隔一段時間更換密鑰

:::success
映射密鑰(mapped key) 保護流動於特定來源與收端間的數據，也稱unicast key or station key 因其適合保護單播數據

若兩工作站間無映射，則用default key (或稱broadcast key)
WEP密碼編號與儲存:
WEP密鑰有對應編號，工作站可指定4個，動態WEP裡工作站從接入點收到兩key 映射(0號)與默認(1號)，工作站以0號加密單播數據，以1號加密廣播數據
:::


RC4弱點: 重複使用key strean是所有steam cipher系統弱點
RADIUS 是一種AAA協議(A身份驗證涉及證明身份，A授權涉及授予權限，A記帳涉及透過日誌記錄維護連續且可靠的稽核追蹤。)

#### 因為認證與加密 不夠好 802.11X加強認證(包括key分派 允許網管對用戶作身分認證，使用EAP over LAN + RADIUS(遠端使用者撥入驗證服務)認證伺服器與RADIUS封包)


### ch6 802.11X 用戶身分驗證: EAP(可擴展身分驗證協議)/ EAP認證方式/ 802.1X 網路連接端口認證:
:::warning
EAP是一種簡單封裝方式可運行於任何鏈路層來支持身分認證
![EAP-format](https://hackmd.io/_uploads/HJXRq1Erkl.png)
Code(1請求 2回應 3成功 4失敗) 對應請求與回應服務
Identifier(1身分(eg用戶名) 2通知 3 NAK): 代表EAP封包類型

認證者送出請求給想來訪問的系統，根據回應決定是否允許對方來訪問
![EAP-process](https://hackmd.io/_uploads/rJriSHc8Jx.png)
詢問握手認證協議（Challenge-Handshake Authentication Protocol，CHAP 就像上圖  認證方 會挑戰 申請者
:::

EAP把證明用戶身分的操作授權給EAP method(一組驗證用戶身分的規則)的附屬協議
如此可不管用戶細節與需求改變，開發新EAP method處理就好
(EAP的擴展性 即是指method可擴展 是最大優點也是最大缺點  method選擇取決於後端用的身分認證系統 主要三要求要處理: 加密防護/ 相互認證/ 分派密鑰 EAP-TLS第一個符合三項要求的認證方式 但難度高 (每個設備都要發證書==)大多系統也不特別用)

:::success
TTLS 與PEAP 可搭配 "舊式(現有公司習慣做法 eg. windows domain)身分驗證方式" ，還有她架構是外層需要證書(認證伺服器) 而內層不用 故減少資料庫需求大小而受歡迎

#### 步驟為: 先建TLS tunnel 然後(外層)用認證伺服器的證書 驗證此網路(host設備)是否可信賴  之後(內層)用TLS tunnel 為舊式身分驗證協議 作加密再加以認證用戶身分
:::


![EAP-table1](https://hackmd.io/_uploads/S1e-nJNHkx.png)
21 TTLS 隧道式TLS; 以TLS加密保護較弱的身分驗證方式

TTLS其他內層保護協議: PAP密碼認證協議, CHAP質詢握手認證協議



### 802.1X 網路連接端口認證: (舉例學校學生到處跑 權限變動 故使用認證端口): 只是一套框架，實際認證式通過 認證伺服器(實際負責判斷方) 來完成的 ，協議只提供發出詢問訊息以及確認或拒絕訪問

認證過程在邏輯上 是通過申請者與認證伺服器完成，認證者只扮演中介角色
802.X定義EAP over LAN(EAPOL)，申請者與認證者間(前端)用EAPOL，後端則通過RADIUS封包傳遞EAP，就算端口尚未得授權也未得IP，申請者仍能與RADIUS(遠端使用者撥入驗證服務)伺服器做EAP交換

:::warning
![EAPOL-message](https://hackmd.io/_uploads/S1182S981x.png)
![EAPOL-message2](https://hackmd.io/_uploads/ryKPnB9U1x.png)

能動態產生密鑰，EAPOL-key frame讓AP能送secret key 給客戶端，反之亦然。指在認證成功後才會傳送，可避免key外洩，key frame也可來定期動態更新secret key



#### 總結802.11X 處理了WEP認證問題 也可以動態更新key 剩下 加密性不足 由TKIP,CCMP 802.11i處理
:::



:::danger
EAPOL用在端口認證，EAPOL交換(認證frame)跟EAP交換幾乎依樣插在申請者可EAPOL-start觸發開始與EAPOL-logoff解除端口授權

![EAPOL-flow](https://hackmd.io/_uploads/r1nt34HS1e.png)

:::


### ch7 802.11 RSN, TKIP與CCMP: TKIP(臨時密鑰完整性協議)/ CCMP(計數器模式及密碼鏈訊息認證)/ RSN(強健安全網路)運作

:::warning
802.1X提供認證與密鑰管理的框架，再來就WEP缺陷的加密(TKIP(加強pre-802.11i硬體安全) 與 CCMP(非RC式的新型加密))

#### TKIP算WEP升級，為易受攻擊的弱點綁上"安全帶" : 自動密鑰管理(非WEP單一主key 轉用多個主key且可管理)/ frame sequence 防止relay重放攻擊/ Michael完整性校驗算法




因IV初始向量洩漏資訊，太短危險，TKIP加長變48bits 且用更好的完整性校驗算法Michael(用32bit的block做運算 類似CCMP弱版)算出MIC值(驗證value)

#### 若工作站發現MIC錯誤:
標記MIC錯誤(驗證MIC前 frame會通過relay攻擊防護和WEP )但出現MIC錯誤表示可能有安全問題 要停止所有TKIP通訊與換密鑰


CCMP 基於AES的block cipher塊密碼為基礎的安全協議 以固定128bit做密鑰匙

RSN強健安全網路 主要定義密鑰的產生與分配
802.11i 規範派發密鑰的機制，密鑰匙的交換要經過握手協議
:::




:::success

![TKIP-vs-WEP](https://hackmd.io/_uploads/rJBU799Lkl.png)
就是每個frame 構造特殊key(由IV,發送端地址,臨時key(主key中抽選) 與序列號(防止重放攻擊)這些來構造，如此就算不同工作站用相同IV RC4 key也不同)
![TKIP-ENC](https://hackmd.io/_uploads/BkMaTH5LJe.png)
![TKIP-key](https://hackmd.io/_uploads/HkDyCB5U1e.png)



以AES的block cipher為基礎，規定用128bits key and 128 bits data block to process 
![CCMP-enc](https://hackmd.io/_uploads/ByXMAS5UJg.png)

![PMK-produce-key](https://hackmd.io/_uploads/HJY0v5cL1g.png)
![PTK](https://hackmd.io/_uploads/SyDfdq9U1l.png)

TKIP與CCMP都使用單一 主密鑰(扮演root secret角色來衍生keying material) 來產生操作所用的密鑰，稱作 成對主密鑰PMK (來源包括 網管設定 RADIUS設定等)
再用PMK做偽隨機 展開成 成對臨時密鑰 PTK (使源於EAPOK 密鑰  KCK 計算生key訊息完整性 KEK 加密 key生成訊息  以EAPOL的key frame保護傳遞) 
![EAPOL-key-hire](https://hackmd.io/_uploads/rkPNKPoIkl.png)




![802.11i-key](https://hackmd.io/_uploads/SybLwqqU1g.png)

802.11i規定一種分派密鑰的機制，為防範重放攻擊，key交換使用隨機樹且要經過握手，pairwise(unicast) secret key 與 group key 分別通過各自握手加以更新 (four handshake)
![key-exchange](https://hackmd.io/_uploads/ByaKAr5U1g.png)
![key-exchange2](https://hackmd.io/_uploads/ryCQcqcIJl.png)


:::

### ch8 管理操作: 管理結構/ 掃描/ 身分驗證/ 關聯操作/ 節省電力
管理結構由三件組成: MAC管理實體(MLME)/ 物理層管理實體(PLME)/ 系統管理實體(SME)
MAC與PHY層皆可訪問MIB(management information base)管理訊息庫

找出AP使用sanning 分主動(host probe AP)/被動(AP broadcast beacon信標frame)

主動細節: 工作站掃描channel list跳到某個channel(eg 2.4Ghz)等
是否有frame，有就證明此channel有人用 就近DCF等使用權來送probe request(廣播式 所以可能多個回應)，接入點則回probe response
最後掃描報告有多個參數: BSSID, SSIS(服務集識別碼), BSSType, 還有Beacon interval, PHY層參數, BSSBasicRateSet

加入網路判斷標準以power level and signal strength決定

:::success
802.11i dynamic key produce: (感謝交大都寫中文論文，ch2,ch3的介紹很有幫助)
![NYCU-802.11i-PTK](https://hackmd.io/_uploads/rkS4ELYBkx.png)

身分驗證(802.11i預先身分驗證 握手生pairwise key 與EAPOL連RADIUS伺服器認證)完後 工作站可以跟接入點association 連接
![asso](https://hackmd.io/_uploads/r1GAxUSHkl.png)

原文本 特殊點在 工作站一次只能與一個AP關聯，因此預先認證(屬於完整802.1X交換)frame要通過就AP轉達，主要就是產生PMK及key four handshake步驟 最後放入緩存表儲存
:::

:::warning
開放系統身分驗證 是802.11要求必備的唯一方法，其實接入點並未驗證工作站真實身分，是以MAC地址做身分證明，做做表面文章，單純提供方便的關聯
![open-aut](https://hackmd.io/_uploads/SkCd9DoUJg.png)
(frame之 authenication algorithm identification設為0  但若是共享密鑰身分認證(使用WEP 此值則設成1，但因其WEP故強健網路802.11i不允許此認證的傢伙加近來網路(只允許TKIP,CCMP,802.1X) )，以及status code 指出身分認證結果)

![shared-key-aut](https://hackmd.io/_uploads/B1GMiviL1l.png)

:::



:::warning
TIM(傳輸指示映射) traffic indication map 指示特定AID(關聯標示符)，代表為此AID的工作暫緩存了frame
![ps-poll-flow](https://hackmd.io/_uploads/B1KhZ8BrJg.png)
傳組播與廣播frame: 延遲傳輸指示映射DTIM緩存frame並指示對應AID工作站有此類frame要收
簡單說就是從TIM延伸 組播廣播類 設置AID 0 以及用DTIM period 設定每過幾 beacon interval 就發送特殊類的TIM 稱作DTIM，經緩存的廣播與組播 會在DTIM beacon後傳送 

ATIM則是在IBSS網路中(因為沒有AP 就由其他工作站自己協助) announcement 通知休眠工作站有為其緩存的frame，叫醒對方

:::

:::success
IBSS 因無AP協助，變更頻道等操作困難，無AP功能而是通過DFS(dynamic frequency selection) owner service來協調各工作站執行頻率選擇服務，還有包括 頻道測量(measurement request) 監控雷達訊號(干擾源 所以要換頻道)等服務，使用Action frame 要求工作站採取必要動作
![action-frame](https://hackmd.io/_uploads/BJ8bZOoUJx.png)

CCA(空閒頻道評估)報告(測量類型值 分0 基本測量 1 CCA 2接收功率指示)中，主要字段 CCA busy fration 描述評估忙碌時間 1byte 以0~255整數表示 數值高就表示常忙碌
:::




### ch9 PCF無競爭服務: PCF無競爭訪問/ PCF frame封裝細節
CF-poll frame(在清大課程裡是分CF-down接入點發問/CF-Up工作站要傳的優先權frame) 由接入點發給工作站賦予無競爭傳送權力
CF-end 結束無競爭 媒介控制權轉回DCF機制
![cf-poll](https://hackmd.io/_uploads/BkbWNUBSyl.png)

![cf_para](https://hackmd.io/_uploads/Syb8VIHHJl.png)

:::success
cfp count: 告知下個無競爭周期開始前，還會傳送幾個DTIM(Delivery Traffic Indication Message) frame
cfp period: 指示兩個周期相聚多少DTIM間隔

Beacon frame 裡面有含TIM 參數有指示 基地台喊話說
"wireless client 請注意 我有暫存資料要丟給你了"
ap 所定義的dtim 是指間隔多少becaon 才含dtim訊框

PCF封裝細節，包括 單一frame結合多種功能 eg Data+CF-ACK 包含數據 也ACK確認前次數據 

superframe 則是 cotention free period + contention period frame組成

#### 在無競爭週期期間，不允許polling list中的工作站進入些眠，故這些frame也不用緩存
廣播與組播的frame傳送由DTIM frame觸發
:::



### ch10 物理層概述: 物理層架構/ 無線鏈路/ RF傳播與802.11:
:::danger
兩個子層: 物理層匯聚過程(PLCP) 跟物體媒體相關(PMD)，PLCP功能結合來自MAC的frame與電波，preamble協助數據同步進行成frame操作，PMD負責將PLCP形成的frame做實際傳送
:::





CCA(clear channel assessment )空閒訊道評估

標準: 跳頻(frequency hopping)/  直接序列DS

802.11a OFDM正交頻分複用/ 802.11b高速直接序列HR/DS物理層/ 802.11g 增強速率物理層Extended rate PHY (ERP)
802.11n MIMO OFDM

:::success
括頻是使用ISM(2.4Ghz免費頻帶)頻帶傳送數據的基礎，用數學函數將訊號功率分散到較大頻率範圍，窄帶噪音會被過濾掉使訊號可清楚重現(收端反向操作重組為窄帶訊號) 

跳頻FH(隨機在頻率間不斷跳換，子訊道只做瞬間傳輸)跟直接序列DS(用數學函數分散功率到較寬頻帶)和OFDM(訊道劃分唯一些子通道，對每個子道做平行編碼)都是擴頻技術     跳頻最便宜 不必經過複雜訊號處理取出bit flow (簡單就省電)， DS則是傳輸率更高

多路徑干擾: 本質就是波的疊加影響，是相同傳輸在不同路徑延遲的結果

路徑損耗與through put 和傳輸距離關係:
![distance](https://hackmd.io/_uploads/ByHR3uJvJl.png)

基礎概念: 天線(antenna)是RF系統零件，負責訊號轉電波or電波轉訊號，天線長短取決頻率，頻率高則天線短
放大器 可以增強訊號，分low noise/ high power ，低噪音常與天線接，來將訊號放大到墊子零件可識別程度，高功率則是將訊號提升至最大功率後傳送(dBm測量單位)， 802.11 PC Card 指能低功率傳送器(因裝筆電上 電力考量)，AP則可外接放大器

相比有線，無線易受干擾，性能取決於SNR(signal-noise ration)
:::



### ch11 跳頻(淡出歷史沒人生產，主要想成 跳來跳去 對原頻帶用戶只瞬間干擾 用戶也只影響某個小頻隙): FH PLCP 在MAC來的frame加上header (preamble由Sync和start frame delimiter SDf(指示同步結束與frame開始)組成)
![freq-hopping](https://hackmd.io/_uploads/rytgkFyP1l.png)
類似FDMA 分頻多重存取，差在FDMA設備分配固定頻率，而跳頻系統用頻率依時間不同(dwell time駐留時間)，beacon frame裡的FH參數包刮 hop pattern number(依地區規定 eg 北美hop seq = 1, pattern = {3,26,65,11,...}), hop index來令工作站能同步

GFSK(高斯頻移鍵控)，頻移鍵控就是將數據 編碼成載波(carrier)中一系列的頻率變動，高斯指 電波脈衝的形狀
![2GFSK](https://hackmd.io/_uploads/r1fzZY1P1g.png)
![2GFSK-enc](https://hackmd.io/_uploads/HkUf-YJDkg.png)

frame被modulation至RF載波之前，來自MAC的frame要先經過PLCP(負責成frame)處理，PMD則負責收送frame
![FH-PLCP](https://hackmd.io/_uploads/r1hLQK1PJl.png)
![FH-PMD](https://hackmd.io/_uploads/S1XDQtJvJl.png)

為了落實802.11的CSMA/CA功能，PLCP包含一種功能，可判斷當前媒介是否使用中(CS載波監聽/CCA 空閒訊道評估 )


### ch12直接序列: 精確控制將RF能量分散至某寬頻帶，接收器用correlation process找出變動所在

![DSSS](https://hackmd.io/_uploads/HJL6vtrr1l.png)
#### 以碎片序列(chipping sequence or say PN code)對數據流做處理，chip是擴頻過程用的二進制數字，用硬體設備來產生高碎片率(chip rate)對低的位率bit rate訊號編碼，產生訊號功率被擴展至較寬頻帶副作用，高擴頻率也能提高訊號還原能力

用barker序列(10110111000 優點是良好自動相關性質)作PN code 每個原始bit與其作用合併產生帶數據的11個碎片，由收端來還原
:::success
![spearding](https://hackmd.io/_uploads/BkV9EKyvye.png)
以高chip rate對低bit rate訊號編碼可產生訊號功率被擴展至較寬頻帶的作用，高chip rate -> 高頻帶寬 -> 要可在高頻率運作的RF零件 貴 ，因此設計DS系統要儘量將 擴頻率 壓低 ，省成本加不浪費帶寬
:::


#### DPSK差分相移鑑控: DS系統的基礎，以傳輸訊號的相位差對數據進行編碼，同PSK可抗干擾，以及重點在相位的相對變動



DS系統用(11 million chip per sec)原本是畫分為一系列11位barker word每秒傳100萬個，┤根據使用1.0Mbps or 2.0Mbps 編碼1 or 2 位(eg 波峰與波谷)，為了symbol能乘載更多符號 使用了CCK 

:::warning
PSK就是將phase shift偏移量(兩波型相同點的位移量)做編碼，DBPSK(波峰0波谷1),DQPSK(每pi/4 編一碼)，時間被分割為一系列符號週期，每周期由幾個載波週期構成。
![DQPSK](https://hackmd.io/_uploads/r1IOIYJvkg.png)
![DQPSK-end](https://hackmd.io/_uploads/H1mZPtkwJx.png)

CCK補碼鍵控將chip stream劃分為一系列由8個位構成的code symbol，因此每秒傳137.5萬code symbol，其數學轉換可在每個symbol編碼4 or 8bits. i.e total 5.5Mbps or 11Mbps
![CCK](https://hackmd.io/_uploads/rJO24zdSyx.png)
:::


#### PLCP再傳送前進行與物理曾相關的成frame操作，而PMD(物理媒介相關)則負責Frame的實際傳送
![PLCP](https://hackmd.io/_uploads/BkUnXGdBJg.png)
![PMD](https://hackmd.io/_uploads/HkLAQMdSyx.png)


#### 高速直接序列(HR/DS): 以11Mbps運行的 PLCP負責準備傳送所需的frame PMD將其轉換為無線電波 直接序列用的長標頭降低性能，現在多了"PLCP短標頭"
![HR-ds plcp](https://hackmd.io/_uploads/SyfrBz_Byx.png)
![hr-ds-pmd](https://hackmd.io/_uploads/ryJ9HfdHJg.png)
當然，除非所有工作站都提供支持，否則短frame就無法使用，11b規定 回復probe request主動掃描的工作站須用相同的PLCP標頭回應。

以CCK進行11Mbps傳輸: 高速傳輸是基於DQPSK(差分正交相移鍵控 以每個符號編碼數個位元)的相位差調製技術實現
![CCK and DQPSK](https://hackmd.io/_uploads/HJWQvz_Hyl.png)


### ch13 802.11a 與802.11j OFDM正交分頻復用
5-GHz OFDM:
2.4太擁擠，後來使用5GHz的頻譜


OFDM與傳統FDM關係密切，均將帶寬(20Mhz,40Mhz, 我們頻率2.4Ghz 可用範圍 = 2400Mhz ~2500 Mhz)分割為許多稱為 carrier or subcarrier的片段，同時將這些載波作為個別channel進行數據傳輸，OFDM當一條link不夠就增加幾條平行的link 處理

傳統FDM用guard band避免某channel溢出的訊號不干擾到相鄰訊道
![FDM](https://hackmd.io/_uploads/HyVlGqkP1l.png)
但guard band 浪費戴寬與capacity資源，故OFDM使用彼此重疊但不互相干擾的訊道(每個subcarrier的波峰 此時其他兩個subcarrier的振幅均為0)
![FDMvsOFDM](https://hackmd.io/_uploads/H1amfcJw1x.png)



:::success
OFDM作法將較大的訊道劃分成多個子訊道，這些子訊道隨後以平行方式利用，以多路副載波(multiple subcarrier)進行單一傳送，有些較慢的子訊道會被組合成較快的訊道(似multiple PPP 也和FDM技術關係密切)

![OFDM](https://hackmd.io/_uploads/H1tI5GOBkl.png)
:::
    

![ofdm-work](https://hackmd.io/_uploads/S1lCqfOrke.png)

ISI(符號間干擾 也就是不同路徑延遲使 data混疊 eg 多路徑干擾)是接收器面臨的主問題，如果採用OFDM則ISI不會造成問題，代價是多個副載波被緊密包到一個操作訊道若副波頻率有小偏移會有ICI(載波間干擾)

加窗法(windowing): 訊號的過度(transition)不一定平順，突然的轉換會產生高頻成分(noise)，為使ODFM收發器表現好，在訊號前後加padding bit，如此在達到完全功率過程能以ramp up or ramp down斜降方式進行

加窗法 是讓新訊號能緩升至完全強度以及 舊訊號能逐漸消逝的技術
![cosine-window](https://hackmd.io/_uploads/B11sY5Jwkx.png)



802.11a(54Mbps)的OFDM有部分妥協，bandwidth固定(由管理者來限制)，delay取決OFDM系統環境，還有符號的持續時間 應該比防護時間長
![tradeOff](https://hackmd.io/_uploads/SJFG5qkP1x.png)

操作訊道的結構: OFDM將頻譜組織為 操作訊道，每個戴寬為20Mhz的訊道由52個subcarrier組成 ，其中4個subcarrier作為pilot carrier用以監控路徑偏移與ICI，其餘48的subcarrier用來傳遞數據，subcarrier間彼此相距0.3125Mhz
![OFDM-channel-structure](https://hackmd.io/_uploads/SyarATkPkx.png)



:::success
![QAM](https://hackmd.io/_uploads/B1jDnG_S1g.png)
子訊道 使用QAM(正交振幅調製)，在單一載波上編碼數據，由同相(in-place) 和正交(quadrature)兩種訊號組成，QAM同時對兩種進行modulation。同相與正交訊號經過量子化(quantization)被限定在一組特定電平(兩點在相同阻抗下電量的相對比值)。當兩種訊號都被限定在一組特定電平時，結果就形成星座圖(constellation)，是二維上描繪訊號可能值，每一點代表一種symbol，每symbol代表特定位值
![802.11a-star](https://hackmd.io/_uploads/HJSYi6JwJl.png)
:::

搭配糾錯碼的OFDM 也稱作 coded OFDM 在每個訊道用FEC向前糾錯碼

coded OFDM在每個channel 使用FEC，若遺失bit少就可讓接收器檢測並修復。為具備糾錯能力，需再data flow 中加入redundant bit。
FEC分兩種 block code採大小固定的input block 
#### 而convolutional code可應用于任何長度的flow，無線用convolutional code因為frame長度通常不固定

:::success
捲積碼 兩個主要參數 constraint length 決定數據位的平均時間，constranit length 越長，平均數據位就需要越多時間，解碼器也更複雜，可靠傳輸的代價。
編碼率 (coding rate, R)決定加入多少redundant bit(eg R = 3/4 代表 每四個bit 有3個傳送一個數據位元)
:::


捲積編碼率 可透過 puncturing(收縮)過程來改變，作法是丟棄某些 coded bit。
eg 802.11a要求最低的編碼率為1/2 ie 加入冗餘位後 數據為原先兩倍。 要將編碼率提升為3/4 可丟棄其中1/3的編碼數據(1/2 * (1/(2/3) )= 3/4)來傳送 (少掉的在收端用padding補充)

子訊道交錯: 每個操作訊道由48的訊道組成，基本上每個操作訊道through put 就是48 data flow sum。 所接收到的編碼位流 必須映射道 正確的subcarrier，802.11a用一組交錯規則 而非簡單round-robin algo來輪流將bit 映射道subcarrier

:::warning
![OFDM-PLCP](https://hackmd.io/_uploads/SyiJ6G_BJg.png)
負責添加preamble and PLCP header

OFDM PHY(6Mbps~54Mbps) 速率分四級 (6,9), (12,18), (24,36), (48,54) 而6,12,24是必要項目，遭遇干擾也最穩定，第一級用BPSK，每一symbol 48 bits，第二級用QPSK正交相移鍵控在每個subchannel編碼兩個位，每symbol 96位 去掉冗餘捲積碼 實際有48 or 72 data bit，第三四級用QAM正交振幅調製 

OFMD-PMD:
![OFDM-PMD](https://hackmd.io/_uploads/H1ZIN1lDJe.png)
pilot insertion: Pilots are predefined reference signals that are transmitted to let the receiver estimate the channel

interleaving: technique that spreads out the continuous burst of errors and improves data decoding using FEC codes

數據傳送前必須經過擾頻Scrambling: 將輸入訊號打亂 使輸出的0/1個數幾乎相同 (假安全性) 還有clock時脈同步用途 
:::


:::success
#### what is a symbol: (回憶ch12 DS系統 and CCK補碼鍵控 ) 對字母M編碼(1001101) 相當於將時間軸 區分為 7 個符號時間，在每個符號範圍內以適當的偏移相位傳送波  可理解 Symbol is the transmission signal in the time domain  
![symbol-DQPSK](https://hackmd.io/_uploads/SyZr6AJvJg.png)
:::


### ch14 802.11g 增強速率物理層:

為了在有802.11a(OFDM)高速的產品 又要向下兼容802.11b(FH/DS)的標準

因此802.11g設備必須支持1與2Mbps的DSSS調製(802.11)以及5.5, 11 Mbps的CCK調製(802.11b) 還有支持6,12,24的OFDM modulation 

此外802.11g設備 必須實現 ERP-OFDM(基本就是802.11a)


![ERP-1](https://hackmd.io/_uploads/By7ppMOH1g.png)
![ERP-2](https://hackmd.io/_uploads/rktaazdBkl.png)

![dev-requirement](https://hackmd.io/_uploads/SyOIRfuSyl.png)

保護機制是802.11b(2.4Ghz DS,CCK)與802.11g主要差異(使用RTS/CTS 設NAV )，要避免b 與g網路互相干擾 要讓b的工作站能得知802.11g正在傳輸，制定保護機制，802.11g工作站使用CTS-to-self protection。當工作站必須為待傳frame採用保護機制時，就發送一個CTS frame並將收端地址設為自身MAC，用來更新NAV。雖然傳給自己 但網路上所有工作站都會監聽CTS frame然後更新NAV。

第二種是 完整的RTS/CTS交換，在遇到隱藏節點時較可靠，但少through put

使用時機點包括: 802.11b工作站關聯AP時其他有關聯的802.11g要啟動保護機制，確保b工作站不受到干擾，或是b接入點共享channel情況下也會啟用保護

保護機制透過beacon frame中的ERP訊息元素(element information)來控制







![protect](https://hackmd.io/_uploads/S1131XuByx.png)

:::success
#### ERP-OFDM PLCP成frame: 所有工作站均需實現此模式，支持802.11g即指ERP-OFDM，大多工作站默認用此模式(framing 跟802.11a完全依樣)



![erp-ofdm-plcp](https://hackmd.io/_uploads/SyTuxQuH1x.png)

![ERP-PLCP2](https://hackmd.io/_uploads/r1oUNmeDJx.png)




:::
### ch15 MIMO-OFDM: (p333 to p364  新技術 發展中 有空再讀)
目標在扣除協議管理功能(eg preamble, IFS, ack)造成的負擔後達到100Mbps的淨througput(改善MAC 或增加最大速超過100Mbps)
#### 直接上802.11n 同作者的下本書 此處則是看概念 

使用MIMO技術:
![mimo-1](https://hackmd.io/_uploads/rkbKZXOrJe.png)

![mac](https://hackmd.io/_uploads/BkN6-mdrJl.png)

使用多個天線來允許更高的資料傳輸率，並使用了Alamouti於1998年提出的空時分組碼來增加傳輸範圍。
支援4個MIMO空間串流
802.11n的最高速率為600 Mbps
使用56個（頻寬20 MHz）或114個（頻寬40 MHz）副載波

:::success
*** WireShark 安裝到Ubuntu上:
sudo apt install wireshark
查看Wireshark使用者組 cat /etc/group/ |grep wireshark
加入user到可使用wireShark的使用組 sudo usermod -aG wireshark $user

抓SSH封包 : 先執行wireshark
sudo wireshark
選擇網卡 : ens0 or ens33
指定ip addr 與protocol : ip.addr = "xxx.xxx.xxx.xxx" && ssh
ssh ipaddr
:::


![wireshark](https://hackmd.io/_uploads/rybuFQ_Hkl.png)
Capture(擷取)封包/ Display(顯示)封包 
![語法](https://hackmd.io/_uploads/HyxiCFQOS1x.png)
![wireShark](https://hackmd.io/_uploads/HkaLVOsUyl.png)
capture eg: host xxx.xxx.xxx.xxx && port 21(TCP)





偏向網路管理員做設定
ch19 802.11與Linux: PCMCIA/ 無限擴展功能與工具/ Agere(Lucent) Orinoco
ch21 無線網路邏輯架構: 評估邏輯架構/ 網路拓樸範例/ 邏輯架構選擇
ch22 安全性架構: 安全性定義/ 身分驗證與訪問控制/ 安全協議的選擇
ch23 網路規劃與項目管理: 項目規劃與需求/ 網路需求/ 物理層選擇與設計
ch24 802.11 網路分析: 網路分析工具/ Ethereal/ 802.11網路分析項目清單
ch25 802.11性能與調整: 802.11性能評估/ 改善性能










