Physical: 비트를 전기·빛·전파 신호로 전달하는 물리 계층
물리 계층(Physical Layer)은 비트열을 전기 신호, 광 신호, 전파로 변환해 전송 매체로 전달한다. 케이블과 커넥터 규격뿐 아니라 신호 부호화, 변조, 전송률, 동기화, 전이중 방식도 다룬다. 상위 계층은 프레임을 처리하지만 물리 계층은 개별 비트의 실제 전달을 담당한다.
By 송민성
1. 개념
물리 계층(Physical Layer)은 OSI 모형(Open Systems Interconnection Model)의 1계층이다. 데이터 링크 계층(Data Link Layer)이 만든 비트열을 물리 신호로 변환하고, 수신한 신호를 다시 비트열로 복원한다.
송신 측 수신 측
비트열 → 신호 부호화 → 전송 매체 → 신호 복원 → 비트열
10110 전기·빛·전파 케이블·공기 10110물리 계층이 정의하는 대상은 다음과 같다.
- 전송 매체: 구리선, 광섬유, 전파
- 커넥터와 핀 배치: RJ45 형태의 커넥터, 광 커넥터
- 신호 수준: 전압, 빛의 세기, 전파의 주파수
- 회선 부호화(Line Coding): 비트를 신호 변화로 표현하는 규칙
- 변조(Modulation): 반송파의 진폭·주파수·위상을 바꾸는 방식
- 비트율(Bit Rate): 초당 전송하는 비트 수
- 심볼율(Symbol Rate): 초당 전송하는 심볼 수
- 통신 방향: 단방향, 반이중, 전이중
- 비트 동기화(Bit Synchronization): 송수신 측이 비트 경계를 맞추는 과정
물리 계층은 프레임, MAC 주소, IP 주소를 해석하지 않는다. 해당 정보도 이 계층에서는 신호로 표현된 비트열일 뿐이다.
2. 왜 사용하는가
컴퓨터 내부의 0과 1은 추상적인 논리값이다. 케이블이나 공기를 통과하려면 측정 가능한 물리량으로 바꿔야 한다.
예를 들어 비트 하나를 다음처럼 표현할 수 있다.
전기 신호: 높은 전압과 낮은 전압
광 신호: 빛의 세기 또는 위상
무선 신호: 전파의 진폭, 주파수, 위상물리 계층 규격이 필요한 이유는 송신 장치와 수신 장치가 같은 규칙으로 신호를 해석해야 하기 때문이다. 송신 측이 높은 전압을 1로 표현해도 수신 측이 다른 전압 범위나 타이밍을 사용하면 비트를 복원할 수 없다.
물리 계층은 서로 다른 제조사의 장비가 다음 조건에 합의하도록 만든다.
- 어떤 전송 매체를 사용하는가
- 신호를 어떤 형태로 보내는가
- 비트 경계를 어떻게 구분하는가
- 어느 속도로 전송하는가
- 오류 없이 도달할 수 있는 거리는 얼마인가
3. 동작 원리
비트와 신호
송신기는 상위 계층에서 받은 비트열을 회선 부호화하거나 변조한다. 만들어진 신호는 전송 매체를 지나면서 감쇠(Attenuation), 잡음(Noise), 왜곡(Distortion)의 영향을 받는다.
수신기는 일정한 시점마다 신호를 표본화(Sampling)하고 기준값과 비교해 비트를 판정한다.
원본 비트: 1 0 1 1 0
송신 신호: ──── ─────────
──── ────
수신 과정: 표본화 → 신호 수준 판정 → 비트 복원회선 부호화
회선 부호화(Line Coding)는 비트열을 디지털 신호 변화로 표현하는 규칙이다.
비복귀 영점(Non-Return-to-Zero, NRZ)은 각 비트 구간에서 신호 수준을 유지한다. 구현은 단순하지만 같은 비트가 길게 반복되면 신호 변화가 없어 수신 측이 클록을 맞추기 어렵다.
맨체스터 부호화(Manchester Encoding)는 각 비트 구간 중간에 신호를 전환한다. 전환을 이용해 클록을 복원하기 쉽지만 비트마다 두 개의 신호 구간이 필요하다.
비트 1 0 1
비복귀 영점 높음 낮음 높음
맨체스터 저→고 고→저 저→고실제 이더넷 규격은 속도와 매체에 따라 더 복잡한 블록 부호화(Block Coding), 스크램블링(Scrambling), 다중 레벨 신호 방식을 사용한다.
변조와 심볼
변조(Modulation)는 반송파(Carrier Wave)의 물리적 특성을 바꿔 데이터를 싣는 과정이다.
- 진폭 편이 변조(Amplitude Shift Keying, ASK): 진폭 변경
- 주파수 편이 변조(Frequency Shift Keying, FSK): 주파수 변경
- 위상 편이 변조(Phase Shift Keying, PSK): 위상 변경
- 직교 진폭 변조(Quadrature Amplitude Modulation, QAM): 진폭과 위상을 함께 변경
심볼(Symbol)은 한 번의 신호 상태로 표현하는 정보 단위다. 심볼 하나가 가질 수 있는 상태가 M개라면 심볼당 정보량은 log₂(M)비트다.
2개 상태: log₂(2) = 1비트
4개 상태: log₂(4) = 2비트
16개 상태: log₂(16) = 4비트이상적인 조건에서 비트율은 다음 관계를 가진다.
비트율 = 심볼율 × 심볼당 비트 수예를 들어 초당 1,000개의 심볼을 보내고 심볼 하나가 4비트를 표현하면 비트율은 초당 4,000비트다.
통신 방향
- 단방향(Simplex): 한 방향으로만 전송
- 반이중(Half Duplex): 양방향 전송이 가능하지만 동시에 전송하지 못함
- 전이중(Full Duplex): 양방향에서 동시에 전송
스위치와 연결된 현대 유선 이더넷은 보통 전이중으로 동작한다. 전이중 링크에서는 송신과 수신 경로가 분리되므로 충돌 감지 방식이 필요하지 않다.
4. 코드 예제
다음 코드는 비트열을 비복귀 영점 방식과 맨체스터 방식의 신호 수준으로 변환하고 다시 복원한다. 실제 전압을 생성하지는 않지만 물리 계층의 부호화와 복호화 원리를 재현한다.
def validate_bits(bits: str) -> None:
if not bits or any(bit not in "01" for bit in bits):
raise ValueError("비트열은 0과 1로만 구성되어야 합니다.")
def encode_nrz(bits: str) -> list[int]:
validate_bits(bits)
return [1 if bit == "1" else -1 for bit in bits]
def decode_nrz(levels: list[int]) -> str:
if any(level not in (-1, 1) for level in levels):
raise ValueError("NRZ 신호 수준은 -1 또는 1이어야 합니다.")
return "".join("1" if level == 1 else "0" for level in levels)
def encode_manchester(bits: str) -> list[int]:
validate_bits(bits)
levels: list[int] = []
for bit in bits:
levels.extend((-1, 1) if bit == "1" else (1, -1))
return levels
def decode_manchester(levels: list[int]) -> str:
if len(levels) % 2 != 0:
raise ValueError("맨체스터 신호 길이는 짝수여야 합니다.")
decoded: list[str] = []
for index in range(0, len(levels), 2):
pair = tuple(levels[index:index + 2])
if pair == (-1, 1):
decoded.append("1")
elif pair == (1, -1):
decoded.append("0")
else:
raise ValueError(f"올바르지 않은 신호 쌍: {pair}")
return "".join(decoded)
def main() -> None:
bits = "10110010"
nrz = encode_nrz(bits)
manchester = encode_manchester(bits)
print("원본 비트열:", bits)
print("NRZ 신호:", nrz)
print("NRZ 복원:", decode_nrz(nrz))
print("맨체스터 신호:", manchester)
print("맨체스터 복원:", decode_manchester(manchester))
if __name__ == "__main__":
main()실행 결과는 다음과 같다.
원본 비트열: 10110010
NRZ 신호: [1, -1, 1, 1, -1, -1, 1, -1]
NRZ 복원: 10110010
맨체스터 신호: [-1, 1, 1, -1, -1, 1, -1, 1, 1, -1, 1, -1, -1, 1, 1, -1]
맨체스터 복원: 10110010맨체스터 신호는 비트 하나를 신호 수준 두 개로 표현한다. 같은 비트가 연속되어도 비트 구간 중간에 전환이 발생하므로 수신 측이 타이밍을 복원할 수 있다.
5. 시간 복잡도 또는 성능 특성
코드의 시간 복잡도
입력 비트 수를 n이라고 할 때 다음 복잡도를 가진다.
- NRZ 부호화: 시간 복잡도
O(n), 공간 복잡도O(n) - NRZ 복호화: 시간 복잡도
O(n), 공간 복잡도O(n) - 맨체스터 부호화: 시간 복잡도
O(n), 공간 복잡도O(n) - 맨체스터 복호화: 시간 복잡도
O(n), 공간 복잡도O(n)
맨체스터 부호화 결과는 비트당 신호 수준 두 개를 저장하므로 길이가 2n이다. 점근적 공간 복잡도는 여전히 O(n)이다.
처리량과 전파 지연
대역폭(Bandwidth)은 문맥에 따라 주파수 범위 또는 링크의 데이터 전송 용량을 뜻한다. 네트워크 인터페이스에서 1 Gbit/s처럼 표시되는 값은 보통 초당 전송 가능한 물리 계층 비트 수를 나타낸다.
전송 지연(Transmission Delay)은 데이터를 링크에 밀어 넣는 시간이다.
전송 지연 = 데이터 크기 ÷ 비트율1기가비트 이더넷 링크에서 1,500바이트를 전송 매체에 싣는 데 필요한 이론적 시간은 다음과 같다. 프리앰블과 프레임 간 간격 같은 추가 비용은 제외한다.
1,500바이트 × 8비트 ÷ 1,000,000,000비트/초
= 0.000012초
= 12마이크로초전파 지연(Propagation Delay)은 신호가 물리적 거리를 이동하는 시간이다.
전파 지연 = 거리 ÷ 매체 내부 신호 속도전송 지연은 데이터 크기와 비트율에 좌우된다. 전파 지연은 거리와 매체 내부 신호 속도에 좌우된다. 링크 속도를 높여도 물리적 거리에 따른 전파 지연은 사라지지 않는다.
실제 처리량
애플리케이션이 얻는 유효 처리량(Goodput)은 물리 계층의 표시 속도보다 작다. 프레임 헤더, 오류 검사값, 프레임 간 간격, 상위 프로토콜 헤더, 재전송이 전송 용량을 사용하기 때문이다.
다음 값을 구분해야 한다.
- 비트율(Bit Rate): 물리 계층이 초당 전송하는 비트 수
- 처리량(Throughput): 일정 시간 동안 실제 전달된 전체 데이터양
- 유효 처리량(Goodput): 애플리케이션이 받은 유효 데이터양
- 지연 시간(Latency): 데이터가 목적지까지 도달하는 데 걸린 시간
6. 실무 사용 사례
이더넷 링크 장애 진단
애플리케이션 요청이 느려도 원인이 서버 코드에만 있지는 않다. 케이블 손상, 전자기 간섭, 잘못된 속도 협상, 송수신 오류 때문에 프레임 재전송이 증가할 수 있다.
리눅스에서는 링크 속도와 전이중 상태를 확인할 수 있다.
ethtool eth0확인할 항목은 Speed, Duplex, Link detected다. 드라이버가 제공한다면 오류 통계도 함께 확인한다.
ip -s link show dev eth0수신 오류, 드롭, 송신 오류가 계속 증가하면 물리 링크와 네트워크 인터페이스 카드(Network Interface Card, NIC)를 점검한다.
데이터 센터 케이블 선택
구리선은 설치와 전력 공급이 편리하지만 거리와 전자기 간섭의 영향을 받는다. 광섬유는 장거리와 높은 대역폭에 적합하고 전자기 간섭에 강하지만 송수신 모듈과 케이블 규격을 맞춰야 한다.
선택할 때 다음 조건을 함께 확인한다.
- 필요한 링크 속도
- 케이블 길이
- 전자기 간섭 환경
- 커넥터와 송수신 모듈 호환성
- 장비가 지원하는 물리 계층 표준
무선 네트워크 품질 분석
와이파이(Wi-Fi)는 전파를 공유하므로 거리, 장애물, 간섭, 채널 사용량에 따라 변조 방식과 전송률이 바뀐다. 신호가 약해지면 장치는 오류율을 낮추기 위해 심볼당 정보량이 적은 변조 방식이나 강한 오류 정정을 선택할 수 있다. 연결 상태가 유지되어도 처리량은 크게 낮아질 수 있다.
7. 주의할 점
표시 속도와 애플리케이션 속도는 다르다
1 Gbit/s 링크가 초당 1기가비트의 파일 데이터를 전달한다는 뜻은 아니다. 물리 계층과 프로토콜의 부가 정보, 혼잡, 저장장치 속도, 서버 처리 시간이 실제 전송 속도를 낮춘다.
링크 연결과 정상 통신은 다르다
링크 표시등이 켜졌다는 사실은 물리적 연결과 일부 신호 교환이 성립했다는 뜻이다. IP 설정, 라우팅, 방화벽, DNS가 정상이라는 뜻은 아니다. 반대로 연결 자체가 끊겼다면 상위 계층 설정을 수정해도 통신할 수 없다.
비트율과 보율을 혼동하면 안 된다
보율(Baud Rate)은 초당 심볼 수다. 비트율은 초당 비트 수다. 심볼 하나가 여러 비트를 표현하면 두 값은 다르다.
비트율 = 보율 × 심볼당 비트 수단, 오류 정정 부호와 프로토콜 부가 정보가 포함되면 애플리케이션 데이터 전송률은 이 값보다 작다.
자동 협상 결과를 확인해야 한다
이더넷 장비는 자동 협상(Auto-Negotiation)으로 속도와 전이중 방식을 결정할 수 있다. 양쪽 설정이 맞지 않거나 케이블 품질이 부족하면 예상보다 낮은 속도로 연결되거나 링크가 불안정해질 수 있다.
물리 계층 오류는 상위 계층에서 지연으로 보일 수 있다
물리 신호 오류가 발생하면 데이터 링크 계층이나 전송 계층에서 프레임 또는 세그먼트를 다시 전송한다. 애플리케이션에서는 요청 지연이나 처리량 저하로 관찰된다. 네트워크 장애를 진단할 때는 물리 계층 오류 통계부터 상위 계층 순서로 확인한다.
8. 핵심 정리
- 물리 계층(Physical Layer)은 비트열을 전기·빛·전파 신호로 변환하고 다시 복원한다.
- 회선 부호화와 변조는 비트를 물리 신호 상태에 대응시키는 규칙이다.
- 비트율은 초당 비트 수이고, 보율은 초당 심볼 수다.
- 전송 지연은 데이터 크기와 비트율에 좌우되고, 전파 지연은 거리와 매체 내부 신호 속도에 좌우된다.
- 케이블, 간섭, 신호 감쇠, 속도 협상 문제는 상위 계층에서 재전송과 지연으로 나타날 수 있다.