2/23/2014

WLAN 의 WIFI 기본 개념 설명

1. WLAN(Wireless Local Area Network) 기본설명 

일단 WLAN(Wireless Local Area Network)는 WI-FI 라는 브랜드명 아래 IEEE 802.11 기술기준으로 무선랜(WLAN)을 이용하여 통신하는 장치를 말한다.
그리고 IEEE802.11의 기술은 현재 지속적으로 버전업이 되므로, 이에 관련된 부분은 이 관련문서를 참고하는 것이 좋을 것 같다.

  https://en.wikipedia.org/wiki/Wi-Fi
  https://en.wikipedia.org/wiki/List_of_WLAN_channels

1.1 IEEE 802.11의 기본정보 

IEEE 802.11x의 변화된 세부내용을 보고 싶다면 아래사이트를 참고하자.

  • IEEE 802.11x 표준의 변화 및 역사 세부사항 
  http://en.wikipedia.org/wiki/IEEE_802.11 
  http://ko.wikipedia.org/wiki/IEEE_802.11 
  http://doc.opensuse.org/products/draft/SLES/SLES-admin_sd_draft/cha.wireless.wlan.html


  • WIFI Spec 관련자료 얻기 (IEEE 802.11)
참고해서 봐야할 문서가 아래의 문서인데, 무료가 아니라고 해서 지인을 통해서 얻었지만, 내용이 방대하다. 

  Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) 
  http://standards.ieee.org/about/get/802/802.11.html

  • The Wi-Fi CERTIFIED™ Product Finder (Wifi Alliance)
  관련회사들을 한번 보자.
  http://www.wi-fi.org/certified-products-results?capabilities%5B50%5D=50

  • WPA_SUPPLICANT 개발자료 
  http://w1.fi/wpa_supplicant/wpa_supplicant-devel.pdf



1.2 WLAN에서 사용되는 용어 및 관련자료


  • STA(Station)
무선통신을 하는 최종 단말기라고 생각하면되겠다.

  • AP(Access Point) or Router 
무선통신을 하는 단말기가 아니, 허브의 역할로 AP를 통하여 인증하고, 다른 STA들과 통신하도록 한다.

  • BSS(basic service set)
모든 STA들이 PHY layer에서 통신할 경우 가지고 있어야 정보라고 생각하면 되겠다.
BSS는 ID를 가지고 있는데, 이를 BSSID라고 하며 이 BSSID는 AP와 접속할 경우 MAC Address로 사용되어진다.

그리고, BSS의 경우 두 가지 종류의 BSS가 존재하는데, IBSS(Infrastructure BSS)와 IBSS(Independent BSS)로 나누어진다고 한다.

  • IBSS(Independent BSS)
ad hoc (peer-to-peer) mode에서 설정이 되는 STA의 정보

  • ESS(Extended Service Set)
연결된 BSS들의 한 종류이며,  ESS안에 AP는 DS(distribution system)로 연결된다.
그리고, 각 ESS는 ID를 가지고 있는데, 이를 SSID라고 하며, 최대 32byte의 문자로 Network의 이름을 나타낸다.

  • DS(distribution system)
distribution system은 ESS 안에 AP와 연결이 되며, 이 DS 개념은 Network의 영역을 넓히는 것으로 볼수 있다.

  • SSID 와 BSSID
AP에서 SSID는 네트워크의 이름을 설명하며, BSSID는 MAC 주소라고 보면될 것 같다.
상위에도 간단히 설명했지만,
전부 Service Set이기 때문에 내부에 다양한 기능이 제공할거라고 생각이 든다.
만약 이외 좀 더 알아야 한다면 추후 수정하겠다.

  • WNIC(Wireless Network Interface Controller)
WIFI에서 OSI 2 계층에 해당하는 부분을 말함 

  • MLME(MAC Sublayer Management Entity)
MLME의 경우 NIC의 hardware or firmware 구현되거나 host-base software로 구현되어진다.

  • FullMAC/HardMAC WNIC
WNIC는 MLME(MAC Sublayer Management Entity) Function들로 구현하는데, hardware or Firmware로 구현되어지면, 이를 FullMAC이라고 한다.
주로 모바일 Device에서 많이 사용되어진다. 

  • SoftMAC WNIC
WNIC이 host software에서 구현되어지면, 이를 SoftMAC이라고 한다. 
Linux Kernel의 mac80211 framework에 SoftMAC 지원하며, mesh network 등 다양하게 지원

  • BSS/ESS 관련자료 
  https://en.wikipedia.org/wiki/Service_set_%28802.11_network%29

  • WLAN 관련자료 
  https://en.wikipedia.org/wiki/Wireless_network
  https://en.wikipedia.org/wiki/Wireless_LAN


  • IEEE 802.11 전반적인 자료 
  https://en.wikipedia.org/wiki/IEEE_802.11


  • IEEE 802.11 Layer 2 구조 
  https://en.wikipedia.org/wiki/IEEE_802.11#Layer_2_.E2.80.93_Datagrams


2. WLAN의 인증(Authentication)

STA이 AP에접속을 한다고 하면 가장 먼저 접하는 것이 인증일 것이며, 그에 관련된 자료를 인증자료를 간단하게 정리해본다.
관련세부사항은 아래의 사이트를 보고 알아가보자.

  • WEP(Wired Equivalent Privacy)
초기에 802.11에서 사용되어지는 기본인증이며, 보안에 취약하다고 하며, 사실 요즘은 거의 사용되지 않지만, 그래도 기본적으로 제공되어진다.
여기서 더 발전되어 나온 것이 아래의 WPA/WPA2 인증방식이다. 
  https://en.wikipedia.org/wiki/Wired_Equivalent_Privacy

  • WPA(Wi-Fi Protected Access)/WPA2 인증
802.11의 표준 인증방식으로 WPA/WPA2 (Wi-Fi Protected Access 1st version/ 2nd Version)을 말한다.
Wi-Fi Alliance에 의해 개발되어진 인증 시스템이며 현재 사용되어지고 있는 인증시스템이다.
내부를 좀 자세히 보면, WPA/WPA2는 분류를 하면 두가지로 분류되며 각각은 아래설명 
  1. WPA-Personal 
  2. WPA-Enterprise
  https://en.wikipedia.org/wiki/Wi-Fi_Protected_Access
  https://ko.wikipedia.org/wiki/%EC%99%80%EC%9D%B4%ED%8C%8C%EC%9D%B4_%EB%B3%B4%ED%98%B8_%EC%A0%91%EC%86%8D

  • WPS(Wi-Fi Protected Setup, originally, Wi-Fi Simple Config)
상위 이름에서 알수 있듯이 AP와 STA사이에서 간단하게 설정하는 모드이며, 보통 버튼 형태로 되어있다. 
Network의 보안기능이지만, 다른것과 다르게 AP와 STA에 WPS 버튼이 있어 서로 눌렀을 경우 쉽게 인증되고 설정되는 구조이다.
WPS도 상위 WPA/WPA2를 사용하고 있으며, 이부분을 쉽게 연결해주는 형태라고 생각하면 될꺼 같다. 
  https://en.wikipedia.org/wiki/Wi-Fi_Protected_Setup


2.1 WPA/WPA2-Personal
WPA/WPA2-Personal은 WPA-PSK(pre-shared key) 이라고 하며, 집이나 작은 office에서 사용 용도로 만들어졌다고 한다.
세부적인 동작을 알려며, KEY 알고리즘과 관련된 부분을 알아야 할 것 같아, 좀 Link만 연결한다.

WPA-PSK의 이해
  http://www.juniper.net/techpubs/en_US/junos-space-apps12.3/network-director/topics/concept/wireless-wpa-psk-authentication.html


2.2 WPA/WPA2 Enterprise 

WPA/WPA2 Enterprise는 기업용으로 좀 더 복잡한 인증요구를 하며, AP이외의 RADIUS Server를 통하여 인증까지 지원한다.
그래서 WPA/WPA2 Enterprise는 아래와 같은 추가적인 인증 프로토콜을 지원(TLS) 
  1. EAP(Extensible Authentication Protocol)
  2. PEAP(Protected_Extensible_Authentication_Protocol)
WPA/WPA2 Enterprise 기반하에 사용되는 인증하는 Protocol 통신이라고 생각하면 되겠다.
구조를 보면, SSL과 TLS를 이해한다면 대충은 이해가 가능하다. 
EAP를 보면 각각 역할이 있으며, TLS처럼 키교환, 인증, 암호화 각각 나뉘어져 있으므로, 세부적으로 알고자 하면, EAP Method를 자세히 알아야 한다. 

  • 관련용어 세부사항 
EAP/PEAP/TLS 및 관련하여 Wiki를 참고해서 보자.
  https://en.wikipedia.org/wiki/Extensible_Authentication_Protocol
  https://ko.wikipedia.org/wiki/%ED%99%95%EC%9E%A5_%EA%B0%80%EB%8A%A5_%EC%9D%B8%EC%A6%9D_%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C
  https://en.wikipedia.org/wiki/Protected_Extensible_Authentication_Protocol
  https://en.wikipedia.org/wiki/Transport_Layer_Security


우선 아래의 인증을 이해하기위해서는 기본적인 TLS에 대해서 이해를 해야한다. 

  • 다양한 EAP-x 관련 내용 
다양한 EAP 관련기능들을 소개하고 있으므로, 한번 보자.
  1. EAP-TLS
  2. EAP-PEAP/MSCHAPv2 (both PEAPv0 and PEAPv1)
  3. EAP-PEAP/TLS (both PEAPv0 and PEAPv1)
  4. EAP-PEAP/GTC (both PEAPv0 and PEAPv1)
  5. EAP-PEAP/OTP (both PEAPv0 and PEAPv1)
  6. EAP-PEAP/MD5-Challenge (both PEAPv0 and PEAPv1)
  7. EAP-TTLS/EAP-MD5-Challenge
  8. EAP-TTLS/EAP-GTC
  9. EAP-TTLS/EAP-OTP
  10. EAP-TTLS/EAP-MSCHAPv2  
  11. 기타 등등 
  http://w1.fi/wpa_supplicant/


2.3 WLAN의 인증 및 세부사항 

아래의 내용을 참고하면될 것 같다.

  http://etutorials.org/Networking/802.11+security.+wi-fi+protected+access+and+802.11i/Part+II+The+Design+of+Wi-Fi+Security/
  http://etutorials.org/Networking/Wireless+lan+security/Chapter+8.+WLAN+Encryption+and+Data+Integrity+Protocols/Encryption+Protocols/
  http://etutorials.org/Networking/Wireless+lan+security/Chapter+8.+WLAN+Encryption+and+Data+Integrity+Protocols/Key+Management/
  http://etutorials.org/Networking/Wireless+lan+security/Chapter+7.+EAP+Authentication+Protocols+for+WLANs/


3. WLAN의 AP와 STA의 기본동작구조  

  • AP와 STA의 기본구조 
  1. ctrl i/f: GUI or wpa_cli/hostapd_cli 로 부터 control event를 받아제어   
  2. l2_packet: socket으로 L2와 연결하여, Network 상태를 읽거나 , Ether type를 변경한다. 
  3. Driver API:  APP에서 kernel driver를 연결하는 통로이며 wext 나 nl80211 혹은 개별 vendor driver로 연결하여 실제 chip 제어 (ndiswrapper : window)


  • STA(Station,wpa_supplicant)
STA의 경우, EAP기반의 TLS와 암호화 기능을 제공하고 있다. 





  • AP(hostapd)
AP의 경우, 상위에서 언급했듯이 WPA/WPA2 Enterprise를 제공하기 위해서 RADIUS Client를 제공을 한다. 





관련출처
  http://w1.fi/wpa_supplicant/devel/


3. WLAN의 동작 Mode 

WLAN은 동작모드는 두가지이며, infrastructure mode 와 ad hoc mode 존재한다.

  • infrastructure mode 
현재 사용하는 AP(Access Point)와 STA(Station)을 두고 통신하는 구조로 STA끼리 통신하고자 한다면,
반드시 AP를 걸쳐 통신하도록 구현이 되어있는 구조이다.

  • ad hoc mode
상위모드와 달리 P2P(peer to peer)방식으로 STA(Station)끼리 직접 통신을 할때 사용되는 mode이다.
이와 유사한것이 Wifi Direct 이지만, Wifi Direct는 infrastructure mode에서 동작한다.


3.1 infrastructure mode


   • STA (Station) infrastructure mode

STA은 Client 즉 단말이고, default 모드이라고 한다 , 상위에서도 설명했지만, 2개의 STA들이 통신을 할수 없고, AP를 걸쳐야하는 구조이기때문에,
먼저 STA이 AP에 접속을 해야한다. 이때 필요한 것이 AP와STA간의 인증이 존재하는데, 다양하게 존재한다.

이 모드를 WEXT tools (iwconfig) 안에서는 Managed Mode라고도 부른다.


    • AP(Access Point, Hotspot) infrastructure mode

managed 된 network에서 AP로 Master Mode로 동작하며,이는 network를 관리하고 유지를 해준다.
주목적은 STA를 관리 및 제어 등 여러가지 설정을 하게된다.
Linux에서 이를 사용하기 위해서, hostapd가 사용되어진다.

STA와 AP를 사용을 동시에 동작 가능하도록도 하는 것도 가능한데, 핸드폰의 Hotspot 역시 AP 기능으로서 사용하는 것이다.

  https://en.wikipedia.org/wiki/Wireless_access_point


  • WiFi Direct 
AP없이 P2P로  연결되는 것이 기본개념은 ad hoc mode와 동일하지만, 구조가 다르다고 한다.
처음 P2P로 연결할때, 누가 AP/STA 동작할 것인지에 대해 결정하고 동작한다고 한다.
WiFi Direct는 Single hop Network 이며, ad hoc는 multi-hop 이라고 한다.
WiFi Direct와 ad hoc의 중요한 차이점은 WiFi Direct는 WPA2에 의해 보호되고 있으며, 전형적인 WiFi speed와 range를 가지고 있다고 한다.

아직 직접 사용해본적이 없어 관련자료만 수집한다.


WPA Supplicant 의 P2P(WIFI Direct)
  http://w1.fi/wpa_supplicant/devel/p2p.html

Raspberry Pi WIFI Direct 설정 
  https://tomaketech.tistory.com/21
3.2 ad-hoc mode

    • Ad-hoc (IBSS) Mode     

Ad-hoc모드는 IBBS(Independent Basic Service Set) 모드로 알려져있으며, Peer to Peer 방식으로 AP의 도움 없이 통신이 가능하다.
IBBS에 있는 개별 STA이 서로 조절을 하며 P2P(Peer to Peer)로  그 이상이  가능하도록  되어 있다고 한다.
장점은 일 대 일 , 그 이상이 되고, 인증을 거치지 않고 AP 없이 직접 통신하고 전송속도 및 전송범위 또한 개선된다.

  https://en.wikipedia.org/wiki/Wireless_ad_hoc_network
  https://en.wikipedia.org/wiki/Ad_hoc_network
  https://en.wikipedia.org/wiki/Mobile_ad_hoc_network


3.3 WIFI 그 외 다른 모드

아래 부분 Mode들은 각각의 소스들이 존재하지만, 각각의 정확한 역할과 사용용도를 모르기에, 관련된 부분을 언급한다.

  1. Wireless Distribution System (WDS) mode
  2. Monitor (MON) mode
  3. Mesh Mode 
  http://linuxwireless.sipsolutions.net/en/users/Documentation/modes/


  • WDS(Wireless Distribution System) mode
AP가 다양한 AP들 사용하여 네트워크를 확장하는 개념인 것 같다. 기본적으로 네트워크를 분배하는 시스템

  https://en.wikipedia.org/wiki/Wireless_distribution_system
  http://linuxwireless.sipsolutions.net/en/users/Documentation/iw/#Setting_up_a_WDS_peer
  http://linuxwireless.sipsolutions.net/en/users/Documentation/iw/#Using_4-address_for_AP_and_client_mode


  • MON(Monitor) Mode
passive-only mode, 즉, 어떤 frame도 전송을 할 수 없으며, Monitor 하는 기능으로 모든 들어온 Packet 을 Host Computer에게 전달해주는 역할
한마디로 Packet Sniffer 역할로, 보통 현재 동작 중인 WIFI Packet를 쉽게 잡아 분석할 수 있다.
이는 각 WIFI Driver 혹은 Chip 제조사에서 지원을 해줘야 가능하며, 이 기능이 제공되면 Packet Sniffering 가능하다.    

  • Mesh Mode 
그물망(Mesh) 일반적인 LAN에서도 Router를 통해 구성될 수 있는 Network 망이다. 
WIFI에서는 상위 Infra의 AP/STA가 단일 버스 구조가 아닌 Mesh로  구성하여, 사용하려는 것 같은데, 아직 WIFI에서 직접 구성을 본 적 없다.
다만, Mesh로 구성할 경우, 항상 Routing 알고리즘도 필요할 것으로 생각되어진다. 
  https://en.wikipedia.org/wiki/Mesh_networking
  https://en.wikipedia.org/wiki/Wireless_mesh_network


4. 출처 및 관련사항 

WLAN 관련내용
  https://en.wikipedia.org/wiki/Wireless_LAN
  http://wireless.kernel.org/en/users/Documentation/modes
  http://www.haifux.org/lectures/206/wirelessLec.pdf