네트워크 기초: 케이블에서 브라우저까지 · 2편

링크 계층 - 같은 네트워크 안에서의 배달

같은 네트워크 안의 두 장비는 서로를 어떻게 찾는가? MAC 주소와 스위치, 그리고 IP 주소를 MAC 주소로 바꿔주는 ARP.

지난 편 복습

1편의 핵심은 두 가지였다. 인터넷은 데이터를 패킷으로 쪼개 보내는 패킷 교환망이고, 통신 문제는 계층으로 나뉘어 각 계층이 자기 책임만 진다.

이번 편의 질문은 가장 아래 계층에서 시작한다. 같은 네트워크 안에서, 프레임은 어떻게 정확한 상대에게 도착하는가?

MAC 주소: 장비의 고유 식별자

링크 계층의 주소는 MAC 주소(Media Access Control address) 다. a4:5e:60:e2:1b:8f 같은 48비트 값으로, 네트워크 인터페이스(NIC)마다 제조 시점에 부여된다. 앞 24비트는 제조사 식별자(OUI)이고 뒤 24비트는 제조사가 할당한 일련번호라서, 원칙적으로 전 세계에서 고유하다.

중요한 특징은 MAC 주소가 평면(flat) 주소라는 점이다. 주소만 보고는 이 장비가 서울에 있는지 뉴욕에 있는지 알 수 없다. 주민등록번호와 비슷하다. 사람을 고유하게 식별하지만, 그 번호로 집을 찾아갈 수는 없다.

Ethernet 프레임

유선 LAN의 사실상 표준인 Ethernet은 데이터를 프레임(frame) 단위로 전송한다.

[ 목적지 MAC | 출발지 MAC | 타입 | 페이로드 (IP 패킷) | FCS ]

목적지와 출발지 MAC 주소, 페이로드가 어떤 프로토콜인지 알려주는 타입 필드, 그리고 전송 중 손상을 감지하는 체크섬(FCS)으로 구성된다. 1편에서 본 캡슐화의 가장 바깥 껍질이다.

허브에서 스위치로

초기 LAN 장비인 허브(hub) 는 단순했다. 한 포트로 들어온 신호를 나머지 모든 포트로 복사한다. 모든 장비가 모든 프레임을 받게 되므로, 장비가 늘어날수록 충돌과 낭비가 폭증한다.

스위치(switch) 는 이를 해결한다. 프레임의 출발지 MAC을 관찰해 “이 MAC은 이 포트에 있다”는 MAC 주소 테이블을 학습하고, 이후에는 목적지 MAC에 해당하는 포트로만 프레임을 전달한다. 모르는 목적지나 브로드캐스트 주소(ff:ff:ff:ff:ff:ff)일 때만 전체 포트로 내보낸다.

ARP: IP 주소를 MAC 주소로

상위 계층에서 내려온 패킷에는 목적지 IP 주소가 적혀 있다. 그런데 프레임을 만들려면 목적지 MAC 주소가 필요하다. 이 간극을 메우는 것이 ARP(Address Resolution Protocol) 다.

동작은 단순한 질문과 응답이다.

A → 전체 (broadcast):  "192.168.0.5 쓰는 사람 누구야? - 192.168.0.2가"
B → A (unicast):       "나야. 내 MAC은 a4:5e:60:e2:1b:8f"

응답으로 알아낸 매핑은 ARP 캐시에 일정 시간 저장되어, 매 프레임마다 브로드캐스트를 반복하지 않는다. arp -a 명령으로 현재 호스트의 ARP 캐시를 직접 확인할 수 있다.

링크 계층의 한계

스위치와 MAC 주소만으로 전 세계 네트워크를 만들 수는 없을까? 안 된다. MAC 주소는 평면 주소라서 위치 정보가 없으므로, 모든 스위치가 전 세계 수십억 개 장비의 MAC을 학습해야 한다. 또한 ARP 브로드캐스트가 전 세계로 퍼져야 한다. 둘 다 불가능하다.

그래서 링크 계층의 책임은 한 홉(hop), 즉 같은 네트워크 안의 전달까지로 제한된다. 네트워크의 경계를 넘으려면 위치 정보를 담은 계층적 주소와, 그 주소로 경로를 결정하는 별도의 계층이 필요하다.

요약

  링크 계층
전달 단위 프레임 (frame)
주소 MAC 주소 (48비트, 평면)
핵심 장비 스위치 (MAC 학습 테이블)
주소 해석 ARP (IP → MAC)
책임 범위 같은 네트워크 안, 한 홉

핵심은 이것이다.

링크 계층은 한 홉의 배달만 책임진다. 네트워크 경계를 넘는 것은 다음 계층의 일이다.

다음 편 예고

다음 편에서는 인터넷 계층을 본다. 위치 정보를 담은 계층적 주소인 IP 주소, 그리고 수많은 네트워크를 건너 목적지 호스트까지 경로를 결정하는 라우팅이다.