Layer 1,2의 Packet 단위에 관한 기본용어와 관리 주체들의 용어를 알아보자.
WIFI IEEE 802.11 MAC/PHY Index
- Layer 1 (Physical Layer)
- PSDU (PLCP Service Data Unit, Physical layer Service Data Unit)
- PPDU (PLCP Protocol Data Unit, Physical layer Protocol Data Unit)
- PLCP (Physical Layer Convergence Procedure): PSDU들어가는 Preamble/Header
- PMD (Physical Medium Dependent)
- PLME (Physical Layer Management Entity)
- CS/CCA (Carrier Sense/Clear Channel Assessment)
PHY의 종류
PHY
http://media.techtarget.com/searchMobileComputing/downloads/CWAP_ch8.pdf
- FHSS PHY (Frequency-Hopping spread spectrum)
- DSSS PHY (Direct-sequence spread spectrum)
- IR PHY (Infrared)
- OFDM PHY (Orthogonal frequency division multiplexing)
- HR/DSSS PHY (High Rate direct sequence spread spectrum)
PHY
http://media.techtarget.com/searchMobileComputing/downloads/CWAP_ch8.pdf
- Layer 2 (Data Layer)
- MPDU (MAC Protocol Data Unit): L1의 PSDU
- MSDU (MAC Service Data Unit): MPDU의 내부 DATA
- A-MPDU (Aggregated MAC Protocol Data Unit): Frame Aggregation 사용시
- A-MSDU (Aggregated MAC Service Data Unit): Frame Aggregation 사용시
- MAC(Media Access Control)
- SAP (Service Access Point)
- MLME(MAC sublayer Management Entity)
- 802.11 L2(Data)/L1(Phy) 구조
L1은 PHY로 두개로 나뉘어지며, PLCP는 MSDU에 PLCP Header를 넣어 주고, PMD는 각각의 PHY에 따라 전송을 하는 구조이며, 이를 PLME에서 관리
http://media.techtarget.com/searchMobileComputing/downloads/CWAP_ch8.pdf |
- 802.11 L2(Data)/L1(Phy) Packet 구조 및 명칭
그리고, PLCP Format은 각각의 PHY에 따라 다르므로, 이 부분은 각 개별 PHY정보 참고
상위 Layer1 과 Layer2의 용어를 보면 쉽게이해가 간다.
https://en.wikipedia.org/wiki/Protocol_data_unit#MPDU
https://en.wikipedia.org/wiki/MAC_service_data_unit
https://en.wikipedia.org/wiki/MAC_service_data_unit
802.11 L2 의 Frame Aggregation (상위 A-MPDU 참조)
https://www.netmanias.com/ko/post/qna/6640
https://en.wikipedia.org/wiki/Frame_aggregation
http://haru21.tistory.com/entry/%EB%AC%B4%EC%84%A0%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%9D%B4%ED%95%B4-4-Chapter3-80211n-2
https://wireless.wiki.kernel.org/en/developers/documentation/glossary
세부사항
IEEE 802.11 Part 11: Wireless LAN Medium Access Control (MAC)
and Physical Layer (PHY) Specifications
2. 802.11 Frame Layer2 MPDU 전체구조
- MPDU Frame 의 구조
- MPDU의 Address
- Address 1: Receiver Address
- Address 2: Transmitter Address
- Address 3: Recevier에 의해 Filer 목적으로 사용되어진다고 한다.
- Address 4 ESS(Extended Service Set) 안에 AP들 or Mesh network Node들 간의 Data frame에서 전송시 사용된다고 한다. (AP의 Roaming 시)
- MPDU의 Duration /ID
- MPDU의 Sequence Control
- 기타사항
- QoS Control
- HT Control
MPDU의 처음 FC(Frame control) Field 의 2 byte에 대한 설정으로 약간 복잡하다.
Subfield | Protocol Version | Type | Subtype | To DS | From DS | More Fragments | Retry | Power Management | More Data | Protected Frame | Orders |
Bits | 2 bits | 2 bits | 4 bits | 1 bit | 1 bit | 1 bit | 1 bit | 1 bit | 1 bit | 1 bit | 1 bit |
https://en.wikipedia.org/wiki/IEEE_802.11i-2004
- FC의 Protocol Version (2bit)
- FC 의 Type (2bit)
- Management Frames
- Control Frames
- Data Frames
- FC의 SubType (4bit)
FC의 Type에 의해 각 역할이 정해지고, FC의 Subtype의 세부기능결정
- FC의 Type 과 SubType 의 각 역할표
Type value (b3,b2) | Type description | Subtype value (b7 b6 b5 b4) | Subtype description |
---|---|---|---|
00 | Management | 0000 | Association request |
00 | Management | 0001 | Association response |
00 | Management | 0010 | Reassociation request |
00 | Management | 0011 | Reassociation response |
00 | Management | 0100 | Probe request |
00 | Management | 0101 | Probe response |
00 | Management | 0110-0111 | Reserved |
00 | Management | 1000 | Beacon |
00 | Management | 1001 | ATIM |
00 | Management | 1010 | Disassociation |
00 | Management | 1011 | Authentication |
00 | Management | 1100 | Deauthentication |
00 | Management | 1101 | Action |
00 | Management | 1110-1111 | Reserved |
01 | Control | 0000-0111 | Reserved |
01 | Control | 1000 | Block Ack Request (BlockAckReq) |
01 | Control | 1001 | Block Ack (BlockAck) |
01 | Control | 1010 | PS-Poll |
01 | Control | 1011 | RTS |
01 | Control | 1100 | CTS |
01 | Control | 1101 | ACK |
01 | Control | 1110 | CF-End |
01 | Control | 1111 | CF-End + CF-Ack |
10 | Data | 0000 | Data |
10 | Data | 0001 | Data + CF-Ack |
10 | Data | 0010 | Data + CF-Poll |
10 | Data | 0011 | Data + CF-Ack + CF-Poll |
10 | Data | 0100 | Null (no data) |
10 | Data | 0101 | CF-Ack (no data) |
10 | Data | 0110 | CF-Poll (no data) |
10 | Data | 0111 | CF-Ack + CF-Poll (no data) |
10 | Data | 1000 | QoS Data |
10 | Data | 1001 | QoS Data + CF-Ack |
10 | Data | 1010 | QoS Data + CF-Poll |
10 | Data | 1011 | QoS Data + CF-Ack + CF-Poll |
10 | Data | 1100 | QoS Null (no data) |
10 | Data | 1101 | Reserved |
10 | Data | 1110 | QoS CF-Poll (no data) |
10 | Data | 1111 | QoS CF-Ack + CF-Poll (no data) |
11 | Reserved | 0000–1111 | Reserved |
WIFI IEEE 802.11 MAC/PHY Index
상위정보는 아래 Index에서 찾아서 Spec으로 자세히 보도록하자
- FC의 ToDS(1bit) and From DS (1bit)
Data Frame은 이 둘 중 한 Bit를 1로 설정하여 AP와 STA을 알수 있다. (infra mode),
IBBS(independent basic service set) network , 즉 ad mode에서는 모두 0으로 설정.
ToDS | FromDS | ADDR1 | ADDR2 | ADDR3 | ADDR4 | |
---|---|---|---|---|---|---|
To AP | 1 | 0 | BSSID | SA | DA | Unused |
From AP | 0 | 1 | DA | BSSID | SA | Unused |
Within Wireless AP | 1 | 1 | RA | TA | DA | SA |
Ad-hoc | 0 | 0 | DA | SA | BSSID | Unused |
- FC 의 More Fragments
마지막 Packet제외하고 모두 1로 설정 하거나 다른 Frame은 0 설정
- FC의 Retry
- FC의 Power Management
AP는 Power-save bit을 설정하지 않는다.
- FC의 More Data
- FC의 Protected Frame
- FC의 Order
다른 Frame에서는 0을 설정
FC(Frame Control)
https://en.wikipedia.org/wiki/IEEE_802.11i-2004
802.11x Layer 2
https://en.wikipedia.org/wiki/IEEE_802.11#Layer_2_.E2.80.93_Datagrams
2.2 MPDU의 FC(Frame Control) 의 Type 과 Subtype
FC(Frame Control)->Type에 따라 아래와 같이 Frame의 종류가 결정되고, SubType에 따라 세부 Frame으로 나누어진다.
- Control Frame
- Management Frame
- Data Frame
https://flylib.com/books/en/2.799.1.29/1/
MLME 및 FC->SubType 메뉴
http://dlrudwo.tistory.com/entry/WLAN-MAC-FRAME
2.2.1 FC(Frame Control) 의 Control Frame
기본통신을 위해 RTS/CTS 와 ACK는 중요하며 성능향상을 위한 Block Ack Request/Block Ack도 중요하다 (9.10)
https://flylib.com/books/en/2.799.1.29/1/ |
- CSMA/CA(Carrier-Sense Multiple Access/Collision Avoidance)
반송파를 감지하고 사용중인지 감시하고 사용중이라면 이를 피하는 알고리즘
https://en.wikipedia.org/wiki/Carrier-sense_multiple_access_with_collision_avoidance
https://ko.wikipedia.org/wiki/%EB%B0%98%EC%86%A1%ED%8C%8C_%EA%B0%90%EC%A7%80_%EB%8B%A4%EC%A4%91_%EC%A0%91%EC%86%8D_%EB%B0%8F_%EC%B6%A9%EB%8F%8C_%ED%83%90%EC%A7%80
https://en.wikipedia.org/wiki/Carrier-sense_multiple_access_with_collision_avoidance
https://ko.wikipedia.org/wiki/%EB%B0%98%EC%86%A1%ED%8C%8C_%EA%B0%90%EC%A7%80_%EB%8B%A4%EC%A4%91_%EC%A0%91%EC%86%8D_%EB%B0%8F_%EC%B6%A9%EB%8F%8C_%ED%83%90%EC%A7%80
http://www.revolutionwifi.net/revolutionwifi/2011/03/understanding-wi-fi-carrier-sense.html
RTS(Request To Send)/CTS(Clear to Send)
RTS(Request To Send)/CTS(Clear to Send)
RTS/CTS 사용목적은 Serial 통신처럼 안전한 통신을 위해서 Flow Control 이라고 보면된다.
https://ko.wikipedia.org/wiki/IEEE_802.11_RTS/CTS
ACK Control Frame:
https://ko.wikipedia.org/wiki/IEEE_802.11_RTS/CTS
ACK Control Frame:
PS-Poll (Power Save Poll) Control Frame:
2.2.2 FC(Frame Control)의 Management Frame
https://flylib.com/books/en/2.799.1.29/1/ |
상위세부내역은 다 나오지 않으며, 상위 표에서 더 참조하시길
IEEE 802.11 2007 문서 7.2.3 Management frames 참조해도 됨
현재 2007년꺼 WIFI Spec 밖에 없음
- WIFI Scan 방식
Passive Scan 방식 과 Active Scan 방식이 존재하며 아래와 같이 사용되어지는 Management Frame 이 다르다.
- WIFI Passive Scan 방식
Management Frame 중 beacon 사용
WIFI AP가 경우 주기적으로 Beacon 를 보내는 방식이다.
WIFI STA의 경우 이 Beacon을 받아 WIFI AP 정보를 알아 SSID Scan 진행하는 방식으로 STA 입장에서는 Passive 방식이다.
- WIFI Active Scan 방식
Management Frame 중 Prove Request/Probe Response 사용
WIFI STA 입장에서 직접 WIFI AP의 정보를 얻어 가는 방식이라서 Active Scan이라고 한다.
WIFi STA이 Prove Request를 WIFI AP에게 보내고 이에 응답으로 Probe Response 받는 방식이다.
https://mrncciew.com/2014/10/27/cwap-802-11-probe-requestresponse/ |
WIFI Passive Scan/Active Scan 차이
Authentiction Frame 관련
인증에 관련된 부분
Action Frame
2.2.3 FC(Frame Control)의 Data Frame
Address4의 경우는 사용될 경우가 있고 , 사용되지 않을 경우가 있다.
관련사항은 아래의 MPDU->FC->ToDS/FromDS를 참고
3. WIFI(802.11) 과 Ethernet 의 De/Encapsulation
802.11의 Data Frames은 일반적으로 802.3(Ethernet 2)기반으로 통신한다.
- MPDU / MPDU+QoS Data Frame 비교
https://flylib.com/books/en/2.799.1.29/1/ |
Address4의 경우는 사용될 경우가 있고 , 사용되지 않을 경우가 있다.
관련사항은 아래의 MPDU->FC->ToDS/FromDS를 참고
3. WIFI(802.11) 과 Ethernet 의 De/Encapsulation
802.11의 Data Frames은 일반적으로 802.3(Ethernet 2)기반으로 통신한다.
802.11 Layer에 포함해서 802.3 Data 넣는 방법이 802.2 LLC/SNAP을 사용하여 전송한다.
- 802.2 LLC PDU
802.2 LLC Header | Information | ||
---|---|---|---|
DSAP address | SSAP address | Control | |
8 bits | 8 bits | 8 or 16 bits | multiple of 8 bits |
SAP(Service Acess Points)
DSAP(Destination SAP)
SSAP(Source SAP)
- 802.2 LLC에서 SNAP(SubNetwork Access Protocol) 추가확장
802.2 LLC Header | SNAP extension | Upper layer data | |||
---|---|---|---|---|---|
DSAP | SSAP | Control | OUI | Protocol ID | |
8 bits | 8 bits | 8 or 16 bits | 24 bits | 16 bits | multiple of 8 bits |
- 802.2 LLC/SNAP를 802.11 적용의 예
- DSAP/SSAP는 0xAA 설정 (SNAP 적용)
- Control은 8bit로 0x03 설정
- OUI는 모두 0으로 설정
- Protocol ID는 EtherType으로 설정
802.11 LLC/SNAP Header | ||
---|---|---|
LLC Header | SNAP-OUI | SNAP-EtherType |
AA-AA-03 | 00-00-00 | 08-00 |
LSAP: 0xAA : SNAP
상위 세부사항은 아래 사이트에서 참고하며, EtherType은 각 역할에 따라변경되므로 주의
802.3 기반의 Layer2 Ethernet Type
802.11->802.3 에서 사용되어지는 Ethernet Type이며, 인증관련부분도 간단히 소개
LAN Layer2
IEEE 802.2 LLC 와 SNAP 확장
SNAP(Subnetwork Access Protocol)
Ethernet 2의 Ethernet Type
https://en.wikipedia.org/wiki/Ethernet_frame#Ethernet_II802.2 와 802.3(Ethernet 2)의 차이
https://www.globalknowledge.com/ca-en/resources/resource-library/articles/what-is-the-difference-between-ethernet-ii-and-ieee-8023/
https://www.globalknowledge.com/ca-en/resources/resource-library/articles/what-is-the-difference-between-ethernet-ii-and-ieee-8023/
- Ethernet/802.3 LAN to 802.11 LAN Encapsulation Example
Protocol | Type/Length | LLC Header | 802.11 LLC Header | |
---|---|---|---|---|
IP | 08-00 | -- | AA-AA-03-00-00-00-08-00 | |
IP 802.3 | length | AA-AA-03-00-00-00-08-00 | AA-AA-03-00-00-00-08-00 | |
IP ARP | 08-06 | -- | AA-AA-03-00-00-00-08-06 | |
AppleTalk (1) | 80-9B | -- | AA-AA-03-00-00-00-80-9B | |
AppleTalk (2) | length | AA-AA-03-08-00-07-80-9B | AA-AA-03-08-00-07-80-9B | |
AppleTalk AARP (1) | 80-F3 | -- | AA-AA-03-00-00-F8-80-F3 | |
AppleTalk AARP (2) | length | AA-AA-03-00-00-00-80-F3 | AA-AA-03-00-00-00-80-F3 | |
IPX Ethernet II | 81-37 | -- | AA-AA-03-00-00-F8-81-37 | |
IPX SNAP | length | AA-AA-03-00-00-00-81-37 | AA-AA-03-00-00-00-81-37 | |
IPX 802.2 | length | E0-E0-03 | E0-E0-03 | |
IPX 802.3 | length | FF-FF | FF-FF |
- 802.11 LAN to Ethernet/802.3 LAN Decapsulation Example
Protocol |
802.11 LLC Header |
Type/Length |
802.3 LLC Header |
|
---|---|---|---|---|
IP |
AA-AA-03-00-00-00-08-00 |
08-00 |
-- |
|
IP 802.3 |
AA-AA-03-00-00-00-08-00 |
08-00 |
-- |
|
IP ARP |
AA-AA-03-00-00-00-08-06 |
08-06 |
-- |
|
AppleTalk (1) |
AA-AA-03-00-00-00-80-9B |
80-9B |
-- |
|
AppleTalk (2) |
AA-AA-03-08-00-07-80-9B |
length |
AA-AA-03-08-00-07-80-9B |
|
AppleTalk AARP (1) |
AA-AA-03-00-00-F8-80-F3 |
80-F3 |
-- |
|
AppleTalk AARP (2) |
AA-AA-03-00-00-00-80-F3 |
length |
AA-AA-03-00-00-00-80-F3 |
|
IPX Ethernet II |
AA-AA-03-00-00-F8-81-37 |
81-37 |
-- |
|
IPX SNAP |
AA-AA-03-00-00-00-81-37 |
length |
AA-AA-03-00-00-00-81-37 |
|
IPX 802.2 |
E0-E0-03 |
length |
E0-E0-03 |
|
IPX 802.3 |
FF-FF |
length |
FF-FF |
Ethernet/802.3 LAN to 802.11 LAN Encapsulation 관련문서
https://flylib.com/books/en/2.519.1/encapsulation_of_higher_layer_protocols_within_80211.html |
3.1 WLAN과 LAN과 호환
1.2에서 설명했듯이 LLC/SNAP을 이용하여 WLAN(802.11)과 LAN(802.3)은 서로 호환이 가능하며, WLAN은 User 입장에서는 LAN처럼 사용이 가능하다.
Ethernet Encapulation 기능을 Soft로 진행을 하면, SoftMac이라 호칭하며, WLAN Chip에서 처리를 하면 이를 FullMac이라고 한다.
802.11 의 Layer 2 Frame 단위를 MPDU(Media access control Protocol Data unit)
- Data Frames의 구성
- Ethernet De/Encapsulation
- Ethernet Encapsulation 은 AP/STA/IBSS의 TX
- Ethernet De-Encapsulation 은 AP/STA/IBSS의 RX
- 802.11 Layer의 전체 구성
- Frame Control : 상위 참조
- Duration ID
- Address1/2/3
- Sequence Control
- LLC/SNAP : 전체 8 Byte 사용, 상위 참조
- DATA : Ethernet Data
- FCS
- Address 3개의 사용
- Address 1 : RA( Receiver Address)
- Address 2 : TA( Transmitter Address)
- Address 3 : Recevier에 의해 Filer 목적으로 사용.
3.2 WIFI AP 와 STA 의 Ethernet De/Encapsulation
- Data Frame 구조
Data Frame은 송신자가 ACK Frame을 받지 못한다면 재수신 한다.
802.11 Data Frame | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
802.11 Header 24bytes | 802.2 LLC/SNAP 8bytes | 802.11-DATA | 802.11-CRC | |||||||||
Frame Control | Duration /ID | Addr1 (RA) | Addr2 (TA) | Addr3 | Sequence Control | DSAP | SSAP | Control | ORGCode (OUI) | LLC-Type (PrtocolID) | Data | FCS |
2 B | 2 B | 6 B | 6 B | 6 B | 2 B | 1 B | 1 B | 1 B | 3 B | 2 B | 0~ 2304 B | 4 B |
재전송 구조
일반적인 전송은 ACK를 사용하지만, 상위 Frame Aggregation를 이용할 경우, RTS/CTS 도 같이 이용
https://warpproject.org/trac/wiki/802.11/MAC/Lower/Retransmissions
https://witestlab.poly.edu/blog/802-11-wireless-lan-2/
https://support.mangocomm.com/docs/wlan-user-guide/mac/framework_high_eth_encap.html |
AP기능
https://warpproject.org/trac/wiki/802.11/MAC/Upper/AP
https://support.mangocomm.com/docs/wlan-user-guide/mac/framework_high_eth_encap.html |
STA의 기능
https://warpproject.org/trac/wiki/802.11/MAC/Upper/STA
상위구조를 보면, BSSID와 Wireless Mac Address가 별도로 존재하며, 이는 AP에서는 두 주소가 구분이 될 필요가 없지만, STA에서는 구분이 되어 사용이 되어진다.
- AP->STA 통신
- Addr1-RA : DA
- Addr2-TA : BSSID
- Addr3 : SA
STA RX Decapsulation (상위 그림 참조)
- Addr1-RA : DA
- Addr2-TA : BSSID
- Addr3 : SA
AP에는 Addr2-TA는 Wireless Mac Address or BSSID로 설정
- STA->AP 통신
- Addr1-RA: BSSID
- Addr2-TA: STA-Wireless MAC Address
- Addr3 : DA
AP RX Decapsulation (상위 그림 참조)
- Addr1-RA: BSSID
- Addr2-TA: SA
- Addr3: DA
DA/SA : 802.3 Mac Layer 의 주소
3.3 WIFI IBBS 의 Ethernet De/Encapsulation
IBBS(independent basic service set)로 ad hoc이라고 하며 P2P통신을 할때 한다.
Wireless Mac Address로 서로를 구분
- IBBS->IBBS 통신
- Addr1-RA : DA
- Addr2-TA : Wireless MAC Address
- Addr3 : BSSID
IBBS RX Decapsulation
- Addr1-RA : DA
- Addr2-TA : SA
- Addr3 : BSSID
DA/SA : 802.3 Mac Layer 의 주소
https://support.mangocomm.com/docs/wlan-user-guide/mac/framework_high_eth_encap.html |
IBBS의 기능
https://warpproject.org/trac/wiki/802.11/MAC/Upper/IBSS
Ethernet Encapsulation
https://warpproject.org/trac/wiki/802.11/MAC/Upper/MACHighFramework/EthEncap
https://dot11ap.wordpress.com/ieee-802-11-frame-format-vs-ieee-802-3-frame-format/
WNIC (SoftMac vs FullMac)
https://en.wikipedia.org/wiki/Wireless_network_interface_controller
4. 기타사항 링크
- WIFI Driver 종류 및 지원사항 (중요)
- Interface 부분확인 (SDIO/USB/PCI)
- WIFI Driver에서 각 지원되는 인증사항 확인
- Monitor Mode 지원사항 확인
- AP Mode 지원사항 확인
- Ad-Hoc Mode지원여부 확인
broadcom의 경우
- brcmfmac: Full MAC의 경우 Ad-hoc mode 미지원
- brcmsmac: Soft MAC의 경우 Ad-hoc mode 지원
https://en.wikipedia.org/wiki/Comparison_of_open-source_wireless_drivers
MAC Format 및 Capture
https://witestlab.poly.edu/blog/802-11-wireless-lan-2/
https://zone13.io/post/wifi-monitoring-using-raspberry-pi/
LLC/SNAP
https://en.wikipedia.org/wiki/Subnetwork_Access_Protocol
https://tools.ietf.org/id/draft-ietf-ipwave-ipv6-over-80211ocb-20.html
https://tools.ietf.org/id/draft-ietf-ipwave-ipv6-over-80211ocb-20.html#epd
https://stackoverflow.com/questions/32233879/is-there-an-ethertype-field-in-802-11-header
http://www.uniroma2.it/didattica/TPI1/deposito/tpi1-1112-03-wlan-v1.pdf
ftp://ftp.informatik.hu-berlin.de/pub/doc/o-reilly/9780735612914/cd_contents/TrainingSlides/01_LAN_Technologies.PPT
Roaming 구조
https://www.cs.auckland.ac.nz/courses/compsci314s1t/lectures/314s1-17-19-ether-4up.pdf
MAC Format 및 Capture
https://witestlab.poly.edu/blog/802-11-wireless-lan-2/
https://zone13.io/post/wifi-monitoring-using-raspberry-pi/
LLC/SNAP
https://en.wikipedia.org/wiki/Subnetwork_Access_Protocol
https://tools.ietf.org/id/draft-ietf-ipwave-ipv6-over-80211ocb-20.html
https://tools.ietf.org/id/draft-ietf-ipwave-ipv6-over-80211ocb-20.html#epd
https://stackoverflow.com/questions/32233879/is-there-an-ethertype-field-in-802-11-header
http://www.uniroma2.it/didattica/TPI1/deposito/tpi1-1112-03-wlan-v1.pdf
ftp://ftp.informatik.hu-berlin.de/pub/doc/o-reilly/9780735612914/cd_contents/TrainingSlides/01_LAN_Technologies.PPT
Roaming 구조
https://www.cs.auckland.ac.nz/courses/compsci314s1t/lectures/314s1-17-19-ether-4up.pdf