WIFI가 데이터 충돌 감지가 어려운 이유
: hidden terminal
(다양한 기기들이 동일한 무선 주파수 대역 사용함)
A, B, C 세 기기가 각각 80미터 거리
하지만 각 기기의 데이터 전송 가능 거리가 100미터라 가정
A와 B, 그리고 B와 C 사이에는 데이터 전송이 가능한 거리
하지만 A와 C 사이에는 데이터 전송이 불가능한 거리
CSMA/CA
는 채널이 사용 중인 경우 기기는 무작위한 시간 동안 대기하고, 채널이 비어있을 때 데이터를 전송RTS/CTS
는 CSMA/CA를 개선한 것으로, 데이터 전송 전에 송신 요청과 수락 단계를 거쳐 충돌을 더욱 효과적으로 피하는 프로토콜wifi frame 중 frame Control 헤더의 상세 필드
- Frame Control:
프레임의 유형(제어, 관리, 데이터)과 조각화 여부, 개인정보 포함 여부- Duration ID (Connection ID):
컨트롤 프레임 전송을 위해 채널에서 할당된 시간(마이크로 초)- Addresses:
통신하는 장치의 MAC 주소
주소 수는 프레임의 유형과 상황에 따라 달라짐
일반적으로 3개의 주소가 사용
- 프레임을 받는 디바이스의 MAC address
- 프레임을 보내는 디바이스의 MAC address
- 이 AP가 연결된 라우터의 MAC address- Sequence Control:
조각화와 재조립에 대한 정보를 포함하는 필드- Payload:
전송할 실제 데이터를 담고 있는 부분- FCS (Frame Check Sequence):
데이터의 무결성을 확인하기 위해 CRC나 체크섬 방식을 사용, 손상 여부를 확인
데이터를 보낼때 address2는 자기 자신이라 쉽게 알수 있음
address1 : AP가 주기적으로 전송하는 비콘 메시지로 알수 있음
address3: DCHP를 통해 얻은 라우터의 IP 주소로 ARP 프로토콜을 사용해 구함
AP는 무선(Wi-Fi)과 유선(이더넷) 네트워크 사이의 데이터를 연결하는 장치
데이터를 받을 때/ 전송할 때 프레임 헤더가 바뀜
=> AP는 host의 프레임을 받아서 자기 자신 AP 주소(address1)를 빼고 dest 주소를 라우터의 주소(address3)으로, source 주소를 host의 주소(address2)로 설정 후 프레임을 전달
라우터는 IP 주소를 기반으로 패킷을 전달하고 라우팅(네트워크 계층)
AP는 링크 계층에서 무선 호스트와의 통신
네트워크 계층의 IP 패킷을 직접 확인하거나 해석할 수 없음
호스트에서 데이터를 보낼 때 목적지 라우터의 MAC 주소를 함께 포함시켜야 함
Host는 Wifi(802.11) frame 전달, AP는 Ethernet frame으로 전환하여 전달
가정에서 쓰는 공유기)
애플리케이션 계층까지 있기 때문에 NAT(Network Address Translation), DHCP 제공
NAT
: 사설 네트워크 내부에서 사용되는 사설 IP 주소를 공인 IP 주소로 변환하거나, 외부 네트워크로부터 들어오는 패킷을 내부 사설 IP 주소로 변환하는 역할 - 여러 장치가 하나의 공인 IP 주소를 공유
DHCP
는 네트워크에 연결된 디바이스들에게 자동으로 IP 주소, 서브넷 마스크, 게이트웨이 주소 등 네트워크 설정 정보를 제공하는 프로토콜
무선 공유기(AP)는 DHCP 서버 역할을 수행하여 새로 연결된 디바이스에게 자동으로 IP 주소와 관련 정보를 할당
이동을 하면 내가 연결된 AP는 바뀐다.
연결된 AP가 바뀐다는 것은 연결이 끊어진다는 것을 의미하는 것일까?
연결은 TCP 커넥션
TCP 커넥션은 출발지 IP + PORT / 도착지 IP + PORT
로 유일하게 결정
이중에 하나의 값이라도 바뀌는 경우 TCP 커넥션이 끊어지는 것
AP가 변경되더라도 호스트의 IP 주소와 포트는 변하지 않음
AP만 바꼈을 뿐 같은 서브넷 안에 있기 때문에
AP가 바뀔 때,
호스트는 게이트웨이 라우터에게 더미 프레임 전송.
: 출발지는 호스트의 MAC 주소, 도착지는 새로운 AP(AP2)의 MAC 주소 + 게이트웨이 라우터 MAC 주소
AP2는 이걸 이더넷 프레임으로 바꿔서 스위치를 통해서 올려주는데,
스위치는 이 때 셀프러닝을 하면서 호스트가 AP1 → AP2로 자리 이동을 한 것을 인지한다.
게이트웨이 라우터는 호스트의 이동을 파악하고 연결된 스위치들의 스위치 테이블 정보를 업데이트.
H1(IP, PORT), GOOGLE(IP, PORT)
H1이 BBS2로 이동하더라도 IP 주소는 변하지 않음 - TCP 연결이 끊기지 않음.
같은 네트워크에 속한 AP사이의 이동은 TCP에 영향을 미치지 않고 스위치 테이블만 바꿔주면 됨.
하지만 다른 네트워크에 속해있는 새로운 BBS3로 이동하게 된다면 TCP 연결이 끊어지게 됨.
LTE와 같은 이동통신망을 사용하게 되면
host의 IP가 유지되기 때문에 이동하더라도 TCP 연결이 끊기지 않음.
그 이유는 LTE를 제공하는 SKT의 네트워크 범위는 전국이기 때문. 단, LTE와 host와의 연결은 wifi가 아니라 LTE라는 다른 무선 통신을 이용한다는 차이
이더넷 같은 경우 유선을 이용하기 때문에 전송 속도가 일정
반면에 와이파이는 무선이기 때문에 전송 속도가 일정하지 않을 수 있음.
거리가 가까우면 더 잘갈 것
SNR(signal-to-noise ratio)
: 신호세기(신호 대 잡음 비율)
BER(bit error ratio)
: 데이터 에러가 발생할 확률
속도면에서 초당 8mbp를 보낼 수 있는 초록색 점선을 사용하는 것이 가장 좋아보이지만 현재 무선 채널의 상황이랑 에러가 발생할 확률을 판단해서 적당한 속도를 선택하는 것이 중요
초당 많은 데이터를 보낼수록(mbps 클수록) 오류가 발생할 가능성이 높아짐.
AP와의 거리가 멀어지거나 무선 채널의 상태가 나빠지면 신호의 강도가 약해져 속도가 떨어질 수 있음
AP와 가까워지면 높은 전송 속도를 유지하고, 멀어지면 전송 속도를 낮춰서 속도를 조절 (에러에 대처하기 위해)
결국 wifi를 사용하게 되면 전송 속도가 유동적으로 변하게 됨