하위 계층의 역할 요약
네트워크에서 데이터를 전달하는 과정은 여러 계층으로 나뉘는데, 그중 가장 하위에 속하는 물리 계층과 데이터 링크 계층은 실제 데이터의 전송이 이루어지는 핵심 역할을 담당한다. 이 두 계층은 서로 맞물려 동작하지만, 담당하는 역할은 명확히 구분된다.
- 물리 계층(Physical Layer)
데이터가 실제로 전송되는 전기적, 광학적, 무선적 매체를 담당한다. 즉, 0과 1의 비트를 어떻게 전기 신호 또는 광 신호 등으로 바꿔서 보낼지를 결정한다. 케이블의 종류, 핀 배열, 전압 수준 등이 이 계층에서 정의된다. - 데이터 링크 계층(Data Link Layer)
물리 계층을 통해 전송된 신호를 해석하여 프레임 단위로 데이터를 송수신하며, 오류 검출, 흐름 제어, MAC 주소 기반 통신 등의 기능을 제공한다. 또한 동일 네트워크(브로드캐스트 도메인) 내에서 정확한 목적지 노드를 찾는 역할도 수행한다.
물리 계층에서 사용되는 다양한 신호 방식
신호 종류 | 전기 신호 | 광 신호 | 무선 신호 |
매체 | 구리선 (UTP 등) | 광섬유 케이블 | 공기 중 전파 |
장점 | 비용 저렴 | 매우 빠른 속도 | 설치 간편, 이동성 |
단점 | 감쇠 발생 | 고비용, 설치 어려움 | 간섭 발생 가능 |
사용 예시 | 이더넷, 전화선 | 백본 네트워크 | Wi-Fi, 블루투스 |
이처럼 물리 계층은 데이터를 물리적인 형태로 실어 나르는 수단을 정의하고, 데이터 링크 계층은 그 데이터를 어떻게 나눠서 정확히 전달할지를 책임지는 계층이다.
데이터 링크 계층
데이터 링크 계층은 네트워크 계층과 물리 계층 사이에서 동작하며, 프레임(Frame) 단위로 데이터를 송수신한다. 이 계층은 오류 검출, 흐름 제어, MAC 주소 기반 통신 등을 수행하여, 신뢰성 있는 데이터 전송을 보장한다.
프레임 구조
프레임은 데이터 링크 계층에서 사용하는 전송 단위로, 일반적으로 다음과 같은 구조를 가진다:
| 헤더 | 데이터(payload) | 트레일러 |
- 헤더: 목적지 MAC 주소, 출발지 MAC 주소, 제어 정보 등을 포함
- 데이터: 상위 계층(주로 네트워크 계층)의 데이터
- 트레일러: 오류 검출 코드(FCS 등)를 포함
프레임은 물리 계층에서 전기/광/무선 신호로 변환되어 실제로 전송된다.
MAC 주소란?
MAC 주소(Media Access Control Address)는 네트워크 인터페이스 카드(NIC)에 고유하게 부여되는 하드웨어 주소이다. 일반적으로 6바이트(48비트)로 구성되며, 네트워크에서 유일성을 보장한다.
- 예시: 00-14-22-01-23-45 또는 00:14:22:01:23:45
- 16진수 2자리씩 총 6개로 구성
MAC 주소는 이더넷, Wi-Fi 등 데이터 링크 계층 기반의 네트워크 통신에서 로컬 주소 지정에 사용된다.
MAC 주소 포맷과 OUI 확인 방법
MAC 주소는 다음과 같은 형식으로 구성된다:
| OUI (상위 3바이트) | NIC 고유 ID (하위 3바이트) |
- OUI(Organizationally Unique Identifier): 제조사 식별자
- NIC 고유 ID: 해당 제조사가 부여한 고유 번호
예를 들어, MAC 주소가 00:1A:2B:XX:XX:XX 라면, 00:1A:2B는 제조사를 나타내는 OUI이다.
OUI 확인 방법:
- https://macvendors.com 페이지에서 확인 가능
- 명령어를 통해 직접 확인도 가능 (예: curl 이용)
Linux / MacOS 환경에서 MAC 주소 확인 방법
- Linux
또는ip link show
ifconfig
- MacOS
또는 시스템 환경설정 > 네트워크 메뉴에서도 확인 가능ifconfig en0
ARP
**ARP(Address Resolution Protocol)**는 네트워크에서 IP 주소를 MAC 주소로 변환하는 프로토콜이다. ARP는 같은 네트워크(브로드캐스트 도메인) 내에서만 동작하며, 데이터 링크 계층과 네트워크 계층 사이의 연결 고리 역할을 한다.
ARP 동작 흐름
ARP는 다음과 같은 절차로 동작한다:
- 송신자는 목적지 IP 주소는 알고 있지만, MAC 주소는 모른다.
- 네트워크 전체에 **ARP 요청(ARP Request)**을 브로드캐스트한다.
- 해당 IP 주소를 가진 장비가 자신의 MAC 주소를 담은 **ARP 응답(ARP Reply)**을 송신자에게 유니캐스트로 보낸다.
- 송신자는 응답받은 MAC 주소를 ARP 캐시에 저장하고, 이후 동일한 IP에 대해서는 다시 요청하지 않는다.
ARP 요청-응답 흐름 예시:
송신자 → 브로드캐스트: 192.168.0.10의 MAC 주소 누구?
수신자 → 유니캐스트 응답: MAC은 AA:BB:CC:DD:EE:FF
스위치와 MAC 주소
**스위치(Switch)**는 데이터 링크 계층에서 동작하며, MAC 주소 기반으로 프레임을 전달한다. 스위치는 내부적으로 **MAC 주소 테이블(MAC Address Table)**을 유지하면서 각 MAC 주소가 어느 포트에 연결되어 있는지를 학습하고 저장한다.
스위치의 MAC 테이블 학습 원리
스위치는 프레임을 수신할 때마다 출발지 MAC 주소와 수신한 포트 번호를 함께 기록한다. 이후 동일 네트워크 내 다른 장비가 해당 MAC 주소로 프레임을 보내면, 스위치는 브로드캐스트 대신 정확한 포트로만 유니캐스트 전달한다.
학습 과정 예시:
- 호스트 A가 B에게 프레임을 전송 (출발지: A의 MAC 주소)
- 스위치는 A의 MAC 주소를 수신 포트에 매핑하여 MAC 테이블에 등록
- B의 MAC 주소를 아직 모르면 프레임을 모든 포트에 브로드캐스트
- B가 응답하며 자신의 MAC 주소를 포함하면, 스위치는 B의 정보도 테이블에 저장
이처럼 스위치는 브로드캐스트를 줄이고 효율적으로 프레임을 전달하기 위해 지속적으로 MAC 주소를 학습한다.
오류 검출 방식 : 패리티 비트, CRC, FCS
데이터 링크 계층은 프레임 단위로 데이터를 전송하는 과정에서 데이터의 손상 여부를 검출하기 위한 오류 검출 기법을 적용한다. 대표적인 방식으로는 패리티 비트(Parity Bit), 순환 중복 검사(CRC), **프레임 검사 시퀀스(FCS)**가 있다.
이들은 데이터 자체를 수정하지는 않지만, 수신 측이 오류 여부를 판단할 수 있도록 전송 프레임에 추가적인 정보를 부여하는 방식이다.
주요 오류 검출 방식 비교
항목 | 패리티 비트 | CRC | FCS |
방식 | 비트 수의 홀짝 검사 | 다항식 기반 나눗셈 연산 | 보통 CRC 방식으로 구현됨 |
복잡도 | 매우 간단 | 비교적 복잡 | CRC와 유사 |
검출 오류 | 단일 비트 오류 | 다중, 연속 오류 가능 | 다중, 연속 오류 가능 |
사용 위치 | 오래된 직렬 통신 등 | 이더넷, HDLC, 디지털 방송 등 | 이더넷 프레임 트레일러 등 |
패리티 비트 (Parity Bit)
패리티 비트는 데이터의 각 비트 수를 기준으로 **홀수(odd) 또는 짝수(even)**로 만들기 위한 1비트의 오류 검출 코드다.
예를 들어, 7비트 데이터 1010001에 대해 짝수 패리티 방식일 경우, 1의 개수가 3(홀수)이므로 패리티 비트를 1로 추가해 1의 개수를 4(짝수)로 맞춘다. 이 방식은 단일 비트 오류에는 강하지만, 다중 비트 오류에는 취약하다.
CRC (Cyclic Redundancy Check)
CRC는 다항식 기반의 나눗셈 알고리즘을 사용해 오류를 검출한다. 송신 측은 전송할 데이터에 생성 다항식(G)을 나누고, 나머지를 CRC 코드로 프레임 끝에 추가한다. 수신 측도 동일한 다항식으로 나누었을 때 나머지가 0이면 데이터가 정상이라고 판단한다.
CRC는 하드웨어에서도 빠르게 처리할 수 있어, 이더넷과 같은 고속 통신에서 널리 사용된다. 연속적인 오류, 특정 패턴 오류 등 다양한 오류를 검출할 수 있어 신뢰성이 높다.
FCS (Frame Check Sequence)
FCS는 프레임의 끝에 추가되는 오류 검출용 트레일러 필드다. 실제 구현은 대부분 CRC 기반으로 동작하며, **이더넷 프레임에서 4바이트(32비트)**의 CRC가 FCS로 사용된다.
즉, FCS는 구현 방식이라기보다 위치나 용도에 따른 명칭이며, CRC는 FCS를 생성하는 알고리즘이라고 볼 수 있다.
흐름 제어
데이터 링크 계층은 단순히 데이터를 보내는 것뿐 아니라, 송신 측과 수신 측의 속도 차이를 조절하는 흐름 제어 기능도 제공한다.
수신 측이 데이터를 처리하지 못했는데 송신 측이 계속 보내면 버퍼 오버플로우로 데이터 손실이 발생할 수 있다. 이런 상황을 방지하기 위해 다양한 흐름 제어 기법이 사용된다.
대표적인 흐름 제어 기법
기법 | 설명 |
Stop-and-Wait | 한 번에 한 프레임만 전송하고, 수신 확인(ACK)을 받은 후 다음 프레임 전송 |
Sliding Window | 여러 프레임을 한꺼번에 보내고, 일정 범위(window) 내에서 수신 확인 처리 |
흐름 제어 없는 전송 | UDP처럼 확인 없이 일방적으로 데이터를 보내는 방식 (흐름 제어 없음) |
- Stop-and-Wait은 가장 간단하지만 비효율적이다. 매번 ACK을 기다려야 하기 때문에 대역폭을 충분히 활용하지 못한다.
- Sliding Window는 여러 개의 프레임을 연속적으로 보내면서 ACK을 비동기적으로 받는다. TCP에서 이 방식을 사용하며 효율적이다.
- 흐름 제어 없는 방식은 영상 스트리밍 등 실시간성이 중요한 서비스에 사용되며, 데이터 손실을 감수하고 속도를 우선시한다.
'CS > 네트워크' 카테고리의 다른 글
OSI 7계층과 TCP/IP 4계층 (0) | 2025.06.23 |
---|---|
네트워크 기초 개념 (0) | 2025.06.23 |