junyeokk
Blog
Network·2025. 06. 14

Ethernet의 프레임 구조와 동작 원리

Ethernet이 표준이 된 이유

LAN 환경에서 Ethernet은 사실상 표준이다. 회사, 학교, 가정, 데이터센터 거의 대부분이 Ethernet을 사용한다. 왜 이렇게 널리 퍼졌을까?

첫째, 역사적으로 가장 먼저 널리 퍼진 LAN 기술이다. 초기 진입자 이점을 누렸고, 이후로도 계속 발전하면서 살아남았다.

둘째, 구조가 단순하다. 단순한 만큼 구현 비용이 낮고, 하드웨어 대량 생산이 쉽다. 복잡한 프로토콜은 비싸고 오류가 많다.

셋째, 하위 호환성이 뛰어나다. 속도가 10Mbps에서 100Gbps로 1만 배 증가했지만 프레임 포맷은 동일하다. 기존 장비와 신규 장비가 함께 작동할 수 있다.

넷째, auto-negotiation(자동 협상)을 지원한다. 장치들이 연결되면 서로 지원하는 속도를 자동으로 파악하고 최적의 속도로 통신한다.

버스 vs 스위치: Ethernet의 진화

과거의 Ethernet과 현재의 Ethernet은 구조가 다르다.

버스 기반 (과거)

초기 Ethernet은 버스 구조를 사용했다. 여러 장치가 하나의 동축 케이블에 직렬로 연결된다. 한 장치가 데이터를 전송하면 케이블에 연결된 모든 장치가 그 신호를 듣는다.

문제는 충돌이다. 두 장치가 동시에 전송하면 신호가 섞여버린다. 이를 해결하기 위해 CSMA/CD(Carrier Sense Multiple Access with Collision Detection) 방식을 사용했다. 전송 전에 케이블이 조용한지 확인하고, 그래도 충돌이 발생하면 잠시 기다렸다가 재시도한다.

버스 구조에서는 전체 네트워크가 하나의 충돌 도메인이다. 장치가 많아질수록 충돌이 빈번해지고 성능이 급감한다.

스위치 기반 (현재)

현재는 대부분 스위치 기반 Ethernet을 사용한다. 각 장치가 스위치의 전용 포트에 연결된다. 스위치는 링크 계층(L2) 장비로, 포트마다 충돌 도메인이 분리되어 있다.

스위치는 프레임의 목적지 MAC 주소를 보고 해당 포트로만 전달한다. 다른 포트에는 영향을 주지 않는다. 덕분에 full-duplex 통신이 가능하고, 충돌이 사실상 발생하지 않는다.

Ethernet 프레임 구조

Ethernet은 상위 계층에서 받은 데이터를 프레임이라는 형식으로 감싸서 전송한다.

text
| Preamble | Dest MAC | Src MAC | Type | Data | CRC |
   8byte     6byte     6byte    2byte  ~1500   4byte

Preamble (8바이트)

프레임의 맨 앞에 위치한다. 목적은 송신기와 수신기의 클럭 동기화다.

처음 7바이트는 10101010 패턴이 반복된다. 마지막 1바이트는 10101011이다. 수신기는 이 패턴을 보고 "프레임이 시작된다"는 것을 인식하고 타이밍을 맞춘다.

Destination/Source MAC Address (각 6바이트)

목적지와 출발지의 MAC 주소다. 수신 측 NIC(네트워크 인터페이스 카드)는 목적지 MAC이 자신의 주소와 일치하면 프레임을 상위 계층으로 전달하고, 일치하지 않으면 버린다.

Type (2바이트)

상위 계층 프로토콜을 나타낸다. 수신 측은 이 값을 보고 프레임의 데이터 부분을 어떻게 해석할지 결정한다.

  • 0x0800: IPv4
  • 0x0806: ARP
  • 0x86DD: IPv6

Data (46~1500바이트)

실제 전송할 데이터다. IP 패킷이 여기에 들어간다. 최소 46바이트여야 하고, 그보다 작으면 패딩을 추가한다. 최대 1500바이트(MTU)를 넘으면 상위 계층에서 분할해야 한다.

CRC (4바이트)

Cyclic Redundancy Check. 프레임 전송 중 발생한 오류를 검출한다.

송신 측이 프레임 내용을 기반으로 CRC 값을 계산해서 붙인다. 수신 측은 같은 방식으로 계산한 값과 비교해서 일치하지 않으면 프레임을 버린다.

Ethernet의 특성

Connectionless (비연결 지향)

Ethernet은 송신 전에 handshaking 과정이 없다. 그냥 프레임을 보낸다. 수신 측과 미리 세션을 설정하지 않는다.

Unreliable (비신뢰성)

수신 측 NIC는 프레임을 받아도 ACK(확인 응답)를 보내지 않는다. 송신 측은 프레임이 제대로 도착했는지 알 수 없다.

프레임이 오류로 유실되면 링크 계층에서는 복구하지 않는다. 상위 계층(TCP 등)이 책임진다. 상위 계층이 UDP처럼 신뢰성을 보장하지 않으면 데이터는 그냥 사라진다.

왜 이렇게 설계했을까? 단순함과 속도를 위해서다. 모든 프레임에 ACK를 기다리면 속도가 느려진다. LAN 환경은 오류율이 낮으므로, 드물게 발생하는 오류는 상위 계층에서 처리하는 게 효율적이다.

802.3 Ethernet 표준

Ethernet은 IEEE 802.3 표준으로 정의된다. 다양한 속도와 케이블 유형을 지원하지만, 핵심 프로토콜은 동일하다.

표준속도매체
10BASE-T10 MbpsUTP 케이블
100BASE-TX100 MbpsUTP 케이블
1000BASE-T1 GbpsUTP 케이블
10GBASE-SR10 Gbps광섬유
40GBASE-SR440 Gbps광섬유

모든 표준에서 MAC 프로토콜과 프레임 포맷은 동일하다. 변하는 것은 물리 계층(속도, 케이블 종류)뿐이다. 이 설계 덕분에 Ethernet은 수십 년간 진화하면서도 호환성을 유지할 수 있었다.

참고 자료