Developer Document

Embedded Software 개발을 하면서 습득한 내용을 적은 시니어 개발자들의 글

코 독 코 독 CoderDocument

Embedded SW 기초

WiFi

stdQ 2024. 6. 17. 09:32

Wifi란?

Wi-Fi는 전자기기들이 무선랜(WLAN, 무선 근거리 통신망)에 연결할 수 있게 하는 기술. 즉, 두 대 이상의 전자기기들을 무선 신호 전달 방식으로 연결할 수 있게 하는 기술이며, IEEE802.11 표준 규격을 사용한다. 

 

ieee802.11이란 WLAN에 사용되는 표준 규격으로, 유선 LAN인 이더넷의 단점을 보완하기 위해 고안된 기술이다. 802.11 프로토콜에 따라 다르지만 주가 되는 동작 주파수는 2.4GHz, 5GHz 이다.  

 


 

자주 접하는 용어 

와이파이에 대해 보다보면 Frequency, Channel, BandWidth, Bonding이라는 용어를 많이 접하게 될 것이다. 

이 용어들은 아래와 같은 의미를 가지고 있다. 

  • Frequency : 말 그대로 주파수를 의미한다. 
  • BandWidth : 주파수 대역폭. 기본 20MHz이며, Bonding 설정에 따라 대역폭이 달라질 수 있다. 
  • Channel : BandWidth 크기로 나눈 주파수에 번호를 매긴 것. 주파수 a부터 a+20 Hz까지 b채널, a+20부터 a+40 Hz까지 c채널 과 같은 식으로 주파수 범위별로 채널이 나눠져있다. 
  • Bonding : BandWidth를 넓히는 것. n개 채널의 주파수 범위를 사용하여 하나의 넓은 채널로 이용할 수 있게 한다. 기본 20MHz 단위로 주파수를 나눠 채널이 지정되어 있지만 예를 들어 40MHz Bonding을 하면 대역폭이 40MHz인 채널이 지정된다. 802.11 프로토콜마다 다르지만 최대 320MHz Bonding까지 가능하다. 

 


 

무선랜 정보 확인 방법 

장치가 Wi-Fi 기능을 이용하려면 무선랜 카드가 장착되어 있어야 한다. 

Wi-Fi가 되는 PC에서 ifconfig 또는 ipconfig 를 cmd창에 입력하면 장치의 네트워크 정보에 대해볼 수 있다. 이때, wlan이나 w로 시작하는 무선 네트워크 인터페이스가 보인다면 Wi-Fi 기능이 활성화 되어있음을 의미한다. 

다만 wlan, w 보인다고 무선 네트워크에 연결되었다는 의미는 아니다. Ip가 할당 되어있어야 연결된 것이라고 볼 수 있다. 

ifconfig 결과 화면 - 아래쪽 빨간박스 안 inet/inet6 주소가 할당되어있음을 볼 수 있다.

 


 

[참고] 무선랜 인터페이스명 변경

https://coderdocument.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4-%EB%AA%85-%EB%B3%80%EA%B2%BD-%EB%B0%A9%EB%B2%95

 * 예시 이미지에서 wlp7s0 처럼 보이는 네트워크 인터페이스 명을 wlan0 와 같이 변경할 수 있다.


 

Wifi 장치 유형 

Wi-Fi 장치의 역할은 AP(Access Point)와 STA(Station)으로 나뉜다.  

  • AP : 유/무선 통신을 연결하는 역할로, 전달받은 데이터를 다른 쪽으로 중계하는 역할을 한다. 공유기와 비슷하다고 생각하면 이해가 쉽다. 
  • STA : Wireless NIC(Network Interface Card)를 장착하여 IEEE802.11 표준을 수행할 수 있는 장비이다. 와이파이에 연결가능한 모든 기기는 STA으로 동작하고 있다고 볼 수 있다. 

 


 

무선 네트워크 서비스 패키지 

우리는 무선 네트워크 서비스 패키지를 이용해 장치 유형을 설정할 수 있다. 

AP로 설정하기 위해 사용 가능한 서비스 패키지는 hostapd와 wpa_supplicant 두 개가 있고,  

STA로 설정하기 위해 사용 가능한 서비스 패키지는 wpa_supplicant 가 있다. 

 

wpa_supplicant로도 AP로 설정할 수 있는 기능이 있지만, hostapd가 좀 더 AP로 설정하는데에 특화되어있다. 

 

서비스 패키지를 이용하여 장치 유형을 설정하기 위해 “/etc/hostapd/hostapd.conf”, “/etc/wpa_supplicant/wpa_supplicant.conf” 에서 장치 유형 설정과 관련된 속성들을 써줘야한다. 

 

hostapd.conf에 쓸 수 있는 속성들 중 가장 기본적인 것들은 다음과 같다. 5G대역에서 동작하는 AP를 만든다고 가정하면 다음과 같이 속성을 설정할 수 있다. 

 

ctrl_interface=/var/run/hostapd 

interface=wlan0 

driver=nl80211 

ssid=ap_test 

channel=36 

hw_mode=a 

auth_algs=1 

ieee80211d=1 

ieee80211h=1 

wpa=2 

wpa_key_mgmt=PSK 

wpa_pairwise=CCMP 

wpa_passphrase=123456789 

ieee80211w=2 

wmm_enabled=1 

ieee80211n=1 

ieee80211ac=1

 

ssid는 AP가 STA에서 검색되었을 때 어떤 이름으로 보이게 할 것인지, 네트워크 이름을 의미한다. 

또 channel을 통해 AP가 어떤 채널에서 동작하게 할 것인지 설정한다. 

wpa 설정을 통해 암호화 할 수 있으며, 5G 대역 암호화 설정은 PSK로 할 수 있다. 

연결 시 암호를 필요로 하는 PSK로 암호화 설정 시, STA에서 연결할 때 wpa_passphrase를 통해 설정한 패스워드를 입력해야 연결할 수 있다. 

또한 802.11 프로토콜(ieee80211 a/b/g/n/ac/ac)을 1로 설정하여 해당 프로토콜을 이용한다고 정의할 수 있다. 

5GHz에서 동작할 수 있도록 하는 프로토콜은 n, ac 등이 있는데 80211n은 대역폭을 40MHz까지 설정할 수 있고(=40MHz bonding 까지 가능), 80211ac는 160MHz까지 설정할 수 있다. 그렇기때문에 160MHz 본딩 기능을 가진 AP를 만들기 위해서는 80211ac=1 로 설정해줘야한다. 

 

Wpa_supplicant 또한 마찬가지로 AP로 만드는 것처럼 STA으로 만들기 위해 .conf 파일을 작성하는데, hostapd.conf보다 훨씬 간략하다.

 

위의 5G AP에 접속한다고 가정하면 아래와 같이 config파일을 작성할 수 있다. 

 

network = { 

ssid=“ap_test" 

psk="암호화 된 psk" 

#psk=”123456789” 

}

 

위의 wpa_supplicant.conf 파일은 wpa_passphrase 커멘드를 이용하여 작성한 것이다.

 

터미널에서 아래와 같이 커멘드 뒤에 연결할 ap의 SSID와 PSK만 입력하면 wpa_supplicant에서 사용되는 형식으로 wpa_supplicant.conf 파일이 작성된다.

~$ wpa_passphrase "[ssid]" "[psk]"

 

이때 #으로 주석처리된 줄을 볼 수 있는데, wpa_passphrase 커멘드와 함께 입력된 psk이다. psk는 자동으로 암호화 되어 작성된다.

 


 

Hostapd & Wpa_supplicant 실행 Command

Hostapd와 Wpa_supplicant는 다음과 같이 실행할 수 있다.

  • 포어그라운드
    • hostapd /etc/hostapd/hostapd.conf
    • wpa_supplicant -c /etc/wpa_supplicant.conf -i [무선랜 인터페이스 e.g. wlan0]
  • 백그라운드
    • hostapd /etc/hostapd/hostapd.conf &
    • wpa_supplicant -c -B /etc/wpa_supplicant.conf -i [무선랜 인터페이스 e.g. wlan0]

 


 

wpa_cli command 정리

(cli 접속 후 help 커멘드 입력 시 더 많은 정보 확인 가능.)

  • list_networks
    • 현재 이용가능한(연결된) 네트워크 리스트.
  • add_networks
    • 새로운 네트워크 연결 생성.
  • ap_scan [value]
    • 인터페이스 설정. value로 0/1/2 가 들어갈 수 있다. (nl80211 에선 1로만 설정 가능)
  • set_network [network_id] [set_item] ““
    • network_id 네트워크에 대한 set_item(ssid, psk, key_mgmt 등) 값 설정.
  • enable_network [network_id]
    • network_id 네트워크에 연결 시도

 


 

 

wifi 채널 

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

https://ko.wikipedia.org/wiki/IEEE_802.11 

 

참고 사이트 :

https://ko.wikipedia.org/wiki/%EC%99%80%EC%9D%B4%ED%8C%8C%EC%9D%B4

 

와이파이 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. Wi-Fi는 여기로 연결됩니다. 윤종신과 지코의 노래에 대해서는 Wi-Fi (노래) 문서를 참고하십시오. 한 장치가 다른 장치에 무선으로 정보를 전송하고 있는 모습을

ko.wikipedia.org

https://ko.wikipedia.org/wiki/IEEE_802.11

 

IEEE 802.11 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. IEEE 802.11은 흔히 무선랜, 와이파이(Wi-Fi)라고 부르는 무선 근거리 통신망(LAN) 또는 무선 네트워크에 사용되는 표준 규격으로, IEEE의 LAN/MAN 표준 위원회 (IEEE 802)의

ko.wikipedia.org

https://myungin.tistory.com/entry/1-Wireless-Fundamental-%EB%AC%B4%EC%84%A0%EB%9E%9C%EC%9D%98-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%9E%91%EB%8F%99-%EB%B0%A9%EC%8B%9D

 

[ 1. Wireless Fundamental ] 무선랜의 네트워크 작동 방식

무선랜은 기본적으로 Infrastructure 와 AD-HoC 방식이 존재합니다. 1. Infrastructure Network - 무선망 유선망 연결 ( 외부 연결 ) - AP와 Wire Network 를 연결하여 외부 네트워크와 통신이 가능한 구조로 만든 Wir

myungin.tistory.com

https://egstory.net/edge-study/tech-lesson/aos-8-wireless/1090/

 

[ACMA 교육#1] 무선랜(802.11) 소개 - 루바루바의 엣지있는 네트워크 이야기

지난 ArubaCX 스위치의 기초 교육에 이어서 이번에는 Aruba 무선랜(WLAN, Wireless Local Area Network)에 대한 교육을

egstory2.azurewebsites.net

 

'Embedded SW 기초' 카테고리의 다른 글

네트워크 인터페이스 명 변경 방법  (0) 2024.06.25
Makefile  (0) 2024.06.25
컴파일러 & 크로스 컴파일  (0) 2024.06.15
git 기초 명령어  (0) 2024.06.14
Peripheral과의 통신 - 3. I2C  (0) 2024.06.13