네트워크 학습 노트 목차

링크 계층 — 바로 옆 장비로 넘기기

앞 편에서 데이터가 계층을 내려가며 옷을 입는 걸 봤다. 이제 가장 아래쪽, 실제 케이블과 전파 바로 위에서 일하는 링크 계층을 본다. 이 층의 임무는 의외로 소박하다 — 전 세계 어딘가가 아니라, 같은 지역 네트워크(LAN) 안에서 바로 옆 장비로 프레임 하나를 건네는 것이다. "서울에서 뉴욕까지"는 위층(IP)의 일이고, 링크 계층은 *"이 스위치에서 저 포트의 장비까지"*만 책임진다. 그 한 걸음을 어떻게 떼는지를 보면, IP가 왜 그 위에 얹힐 수 있는지가 보인다.

누가 누구에게 — MAC 주소와 이더넷 프레임

같은 LAN 안의 장비를 구분하려면 주소가 필요한데, 이 층의 주소가 MAC 주소다. 랜카드에 공장에서 새겨진 48비트 하드웨어 주소(a4:5e:60:...)로, IP 주소와는 별개다 — IP는 "논리적으로 어디에 있나"(바뀔 수 있다)이고, MAC은 "이 장비가 누구인가"(보통 고정)다. 링크 계층이 보내는 데이터 단위는 이더넷 프레임인데, 앞에 목적지 MAC·출발지 MAC을 적고, 뒤에 오류 검출용 FCS를 붙인다.

다이어그램 로딩 중…

여기서 핵심은 — 프레임 안의 페이로드는 보통 IP 패킷이라는 점이다(앞 편의 캡슐화). 링크 계층은 그 IP 패킷의 내용을 들여다보지 않고 그냥 짐짝으로 옆 장비에 건넨다.

스위치는 어떻게 길을 외우나 — MAC 학습

LAN의 중심에는 보통 스위치가 있다. 스위치가 영리한 건 — 아무도 설정해 주지 않았는데 어느 포트에 어떤 장비가 붙었는지 스스로 배운다는 점이다. 비결은 단순하다. 프레임이 들어올 때마다 출발지 MAC과 그게 들어온 포트를 표(MAC 테이블)에 기록한다. 그래서 "A는 3번 포트에 있다"를 알게 된다. 이제 누군가 A에게 보내면, 표를 보고 3번 포트로만 정확히 흘려보낸다.

다이어그램 로딩 중…

그런데 처음 보는 목적지라 표에 없으면? 스위치는 들어온 포트만 빼고 모든 포트로 뿌린다(flooding) — 누군가는 받겠지 하는 것이다. 그 응답이 돌아오면 그때 그 장비의 위치도 학습한다. 표의 항목은 한동안(보통 300초) 안 쓰이면 지워진다(에이징) — 장비가 옮겨가도 따라가기 위해서다. (출처: Cisco — MAC Address Table.)

IP는 아는데 MAC을 모를 때 — ARP

여기서 위층과의 연결이 생긴다. 내 컴퓨터가 같은 LAN의 192.168.0.5에게 IP 패킷을 보내려 한다. 그런데 프레임을 만들려면 목적지 MAC이 필요한데, 나는 IP만 알고 MAC은 모른다. 이 간극을 메우는 게 **ARP(Address Resolution Protocol)**다.

ARP는 단순하고 약간 무식하다 — *"192.168.0.5를 쓰는 분, MAC 주소가 뭔가요?"*라고 LAN 전체에 브로드캐스트로 묻는다. 모두가 그 질문을 받지만, 자기 IP가 맞는 한 장비만 "저예요, 제 MAC은 이겁니다"라고 유니캐스트로 답한다. 한 번 알아낸 IP→MAC 매핑은 ARP 캐시에 잠시 저장해, 매번 묻지 않는다. (출처: Wikipedia — ARP.) 만약 목적지가 *다른 LAN(다른 서브넷)*이면? 그땐 목적지 IP의 MAC이 아니라 — 기본 게이트웨이(라우터)의 MAC을 ARP로 찾아, 일단 라우터에게 프레임을 건넨다(그다음은 IP 계층의 일, 다음 편).

충돌과 격리 — 왜 허브가 스위치로 바뀌었나

링크 계층의 역사에는 *충돌(collision)*과의 싸움이 있다. 옛날 허브는 들어온 신호를 모든 포트로 그대로 복사해, 여러 장비가 동시에 말하면 신호가 겹쳐 깨졌다. 그래서 CSMA/CD(말하기 전에 선이 조용한지 듣고, 충돌하면 잠시 무작위로 기다렸다(백오프) 재전송)라는 규칙으로 버텼다 — 이 백오프 발상이 바로 회복탄력성 편의 재시도 백오프+지터와 같은 뿌리다. 스위치는 이 문제를 근본적으로 없앴다. 포트마다 별도의 충돌 도메인이라, 각 장비가 자기 포트에서 독립적으로 말할 수 있다(전이중). 다만 브로드캐스트(ARP 같은)는 여전히 LAN 전체에 퍼지는데, 이 브로드캐스트 도메인이 너무 커지면 비효율적이라 — VLAN으로 하나의 물리 스위치를 논리적으로 쪼개 브로드캐스트 도메인을 나눈다(VLAN 10과 20은 서로 안 보인다). (출처: Collision vs Broadcast Domain.)

실무에서는 — ARP의 신뢰가 약점이 된다. ARP에는 인증이 없어서, 공격자가 "192.168.0.1(게이트웨이)이 제 MAC이에요"라고 거짓 응답을 뿌리면 — 피해자의 트래픽이 공격자를 거쳐 흐르게 된다(ARP 스푸핑, 중간자 공격). 그래서 보안이 중요한 망은 동적 ARP 검사(DAI)·포트 보안으로 막는다. 또 "갑자기 통신이 안 돼요"의 원인이 MAC 테이블·ARP 캐시의 낡은 항목일 때가 있어, 캐시를 비우면(arp -d) 풀리기도 한다.

정리하면, 링크 계층은 같은 LAN 안에서 바로 옆 장비로 프레임을 건네는 일을 한다. 장비는 MAC 주소로 구분되고, 스위치는 들어오는 프레임의 출발지 MAC을 학습해 길을 외우며(모르면 flooding), ARPIP를 MAC으로 번역해 위층(IP)과 이어 준다. 옛 충돌 문제는 *스위치(포트별 충돌 도메인)*와 *VLAN(브로드캐스트 도메인 분리)*으로 정리됐다 — 그리고 이 모든 건 같은 LAN 안의 이야기다. LAN을 넘어 전 세계로 가는 건, 바로 이 위에 얹히는 IP의 일이다.

왜 계층으로 나누나 — OSI·TCP/IP·캡슐화IP 계층 — 라우팅·서브넷·NAT·best-effort