[Data Communication] Media Access Control과 Ethernet
Media는 데이터가 흘러가는 통로로, 통신할 때 사용하는 물리적인 경로를 의미한다.
여러 사람이 동시에 통신 매체를 사용하면 충돌이 발생할 수 있으니 적절한 제어가 필요하다.
시간을 나눠서 쓰는 TDMA
주파수를 나눠서 쓰는 FDMA
코드를 나눠서 쓰는 CDMA
등 여러 Multiple Access기술을 사용하는데, 이 부분은 Multiplexing과는 다르다.
Multiple Access는 여러 송신자가 같은 매체를 나눠서 사용하는 방식이고,
Multiplexing은 여러 신호를 하나로 합쳐서 전송하는 기술이다. (송신자는 한명, 송신 데이터가 여러개)

Pure ALOHA 프로토콜은 가장 초기 형태의 무선 통신 프로토콜으로, 누가 먼저 쓰는지 정하지 말고 그냥 보내는 Random Access 통신 방식이다.
데이터가 생기면 즉시 전송하고, 충돌이 발생하면 Random Backoff동안 기다렸다가 다시 보낸다.
수신자가 제대로 받았으면 송신자에게 ACK를 보내준다. 보내지 않으면 충돌로 간주.

Slotted ALOHA 프로토콜은 시간을 고정된 Slot 단위로 나누고 Slot 시작 지점에만 전송할 수 있도록 설정한다.
시간이 동기화되니까 슬롯 시작점에만 전송을 허용하고 충돌 확률이 절반으로 감소한다.

Pure ALOHA는 18.4% Slotted ALOHA는 36.8% 최대 효율을 보여준다.
Pure ALOHA에서 공식은 S=G⋅e−2G
G는 초당 전송 시도 횟수
S는 Throughput
계산해보면 초당 프레임 수가 500 일 때 최고 효율인 0.184가 나오는걸 확인할 수 있음.
일단 전송하고 충돌 나면 기다렸다 다시 전송하는 ALOHA 프로토콜 아이디어를 기반으로 Ethernet 프로토콜이 도입됐다.

Ethernet의 핵심은 CSMA/CD (Carrier Sense Multiple Access with Collision Detection) 으로, 말 그대로 듣고 충돌나면 다시 하는 방식을 사용한다.
Carrier Sense - 보내기 전에 누군가 전송 중인지 확인한다.
Multiple Access - 동시에 보내면 충돌이 발생할 수 있다.
Collision Detection - 전압 및 신호의 이상치를 탐지해 충돌을 감지한다.
Backoff - 충돌이 발생하면 무작위 시간만큼 기다렸다가 다시 전송한다.
과거의 허브 기반 Ethernet에서는 CSMA/CD 방식을 사용했는데, 현재의 Ethernet은 스위치 기반으로 CSMA/CD를 사용하지 않는다.
허브는 공유된 전송 매체로 데이터를 모든 포트에 브로드캐스트하고, 동시에 전송하면 충돌이 발생할 수 있다.
허브는 데이터를 받으면 그냥 모든 포트로 브로드캐스트하는 장치.. 여러 장치가 동시에 보내면 충돌이 발생할 수 밖에 없음..
즉, A가 B에게 데이터를 전송할 때와 C가 D에게 데이터를 전송할 때 같은 선을 통해 전파되다가 겹치게 된다.
그러니 CSMA/CD 로 충돌을 처리해야 하는데..
지금은 스위치 기반이니 패킷을 정확한 포트로만 전달한다.
스위치는 포트를 따로 관리하고 연결된 장치의 MAC 주소를 기억해 필요한 포트에만 데이터를 전송한다.
즉, 모든 장치가 서로 독립된 링크를 가진 것 처럼 동작해 충돌이 발생할 일이 없다. 그러니 CSMA/CD도 필요 없음.

초기 이더넷은 버스 형태로 하나의 동축 케이블에 여러 장치가 연결되는데, 충돌이 많고 확장성이 떨어진다.
현대 이더넷은 스타 형태로 스위치를 중심으로 장치들이 개별 연결돼 충돌이 적어 성능이 좋다.
Virtual LAN은 하나의 물리적인 네트워크를 논리적으로 여러 개의 네트워크로 분할하는 기술이다.
즉, 스위치 하나에 연결된 장치들에 대해 논리적으로 그룹을 만들고 서로 격리된 가상의 네트워크처럼 동작하게 만든다.
각 포트에 VLAN ID를 할당하고, 같은 VLAN ID를 가진 포트끼리만 통신할 수 있도록 한다.
서로 다른 VLAN 간의 통신은 라우터나 L3 스위치를 사용해야 한다.
클라우드 환경에서, 물리적으로는 하나의 서버지만 내부에 수백개의 가상 머신이 있을 수 있다.
각 VM을 서로 다른 VLAN에 연결해서 격리시킨다. (A팀은 VLAN 10 / B팀은 VLAN 20)
스위치는 브로드캐스트 패킷을 모든 포트에 전달하는데... 스위치를 노드로, 스위치간 연결을 간선으로 하는 그래프 자료구조에서 노드 간 순환 연결이 있으면 네트워크가 마비된다.
원래 허브는 항상 브로드캐스트하고 스위치는 기본적으로 유니캐스트를 하는데.. 브로드캐스트 프레임을 전달하는 경우가 있어 루프 문제가 발생하는 경우가 생긴다.
IP와 MAC 간 변환을 수행하는 ARP 요청이 대표적인 브로드캐스트 프레임이다. 송신자는 목적지 MAC을 모르니까..
Spanning Tree Protocol은 그래프를 루프가 없는 트리 구조로 유지해준다.

Root Bridge는 전체 네트워크의 기준이 되는 스위치.
각 스위치가 루트까지 가는 최단 경로를 계산하고, 루프를 유발할 수 있는 링크는 차단 상태로 유지한다.
허브를 사용하는 Ethernet에서는 CSMA/CD로 충돌을 제어했는데 무선 LAN에서는 충돌을 감지할 수 없으니 회피하는 방식을 사용한다.
CSMA/CA (Carrier Sense Multiple Access with Collision Avoidance)
무선 송신 중에는 수신이 안 되니까 충돌도 감지할 수 없고..
서로 안 들리는 두 기기가 동시에 전송하는 Hidden Node 문제도 발생할 수 있다.
무선 LAN에서는 클라이언트를 유선 네트워크에 연결해주는 중계 장치인 Acess Point를 사용한다.

Carrier Sense - 보내기 전에 채널이 비어있는지 확인
Inter Frame Space - 비어있다고 무조건 전송하는게 아니고 IFS 시간만큼 기다린다
Multiple Access - 무선 채널에도 여러 장비를 공유하니 충돌 가능함
Collision Avoid - 충돌 감지가 불가능하니 충돌을 예방하자
Backoff - 전송 전에 랜덤 백오프를 수행해서 충돌 회피
ACK - 프레임을 보내고 ACK를 받아야 성공으로 간주함
RTS/CTS - Hidden Node 문제를 방지하기 위해 사용

B가 공유 AP고 A와 C가 송신자라고 하자.
A와 B / B와 C는 서로 통신할 수 있지만 A와 C는 서로 통신할 수 없다.
A와 C 모두가 B에게 데이터 전송을 시도하면 A는 C의 존재를 모르니 채널이 비었다고 착각해 동시에 전송하고, B에서 충돌이 발생한다.
RTS/CTS 를 활용해 충돌이 일어나기 전에 예약을 걸어서 Hidden Node들이 전송하지 않도록 하자.
A가 B에게 RTS를 보내고, B는 A에게 CTS를 보낸다. C는 B의 CTS를 수신하고 잠시 대기한다.
이후 A는 B에게 데이터를 전송하고 B는 A에게 ACK로 응답한다.
Request to Send / Clear to Send
AP가 CTS를 전송하기에 A와 C 모두 CTS를 수신할 수 있다. (RTS는 도달 범위가 작고 CTS는 넓음. AP는 중앙에 있으니까..)
NAV (Network Allocation Vector) 는 무선 환경에서 충돌을 회피하기 위해 모든 장치에게 특정 시간동안 채널을 쓰겠다는 정보를 알려주는 매커니즘이다.
Wi-Fi 프로토콜에서 사용하고, 무선은 충돌 감지가 어려우니 Virtual Carrier Sensing 방식으로 NAV를 사용한다.

A가 B에게 RTS를 보내는데, 이 RTS의 duration이 500이라고 하자.
B는 CTS를 보내는데 이 CTS에는 duration인 500이 포함되어있다.
NAV 타이머 500을 설정하고 그 시간동안 아무도 해당 채널을 사용하지 않는다.
즉, A와 B가 500시간만큼 통신하니까 해당 시간 동안 절대 전송을 시도하지 않는다.
SIFS는 Short IFS로 해당 시간이 지난 후에 데이터를 전송한다.
RTS/CTS와 NAV를 사용해 충돌을 회피하는건 좋은데, 지나치면 쓸데없이 대기하는 Exposed Station Problem이 발생할 수 있다.

S1은 R1에게 전송 중이고 S2는 바로 옆에 있어서 S1의 신호를 감지한다.
하지만 S2의 전송 대상인 R2는 S1의 전송 범위 밖에 있고, S2는 전송해도 S1과 충돌이 발생하지 않는 상황임에도 기다린다.
사실은 전송 destination이 다르니까 그냥 전송하면 된다.
무선에서는 CSMA를 사용하는데, CSMA는 누가 전송 중이면 기다려야 되는 규칙이 있어서 기다리게 된다.

'Computer Science > Computer Network' 카테고리의 다른 글
| [Computer Network] Internet Protocol Layer (3) | 2025.10.14 |
|---|---|
| [Data Communication] Point to Point Protocol / 3G (0) | 2025.06.17 |
| [Data Communication] 에러 제어와 ARQ (0) | 2025.06.11 |
| [Data Communication] 공유기와 네트워크 (0) | 2025.06.02 |
| [Data Communication] 물리 계층에서의 다중화 (0) | 2025.04.16 |
댓글
이 글 공유하기
다른 글
-
[Computer Network] Internet Protocol Layer
[Computer Network] Internet Protocol Layer
2025.10.14 -
[Data Communication] Point to Point Protocol / 3G
[Data Communication] Point to Point Protocol / 3G
2025.06.17 -
[Data Communication] 에러 제어와 ARQ
[Data Communication] 에러 제어와 ARQ
2025.06.11 -
[Data Communication] 공유기와 네트워크
[Data Communication] 공유기와 네트워크
2025.06.02