6.4.1 Link-Layer Addressing and ARP
저희가 다른 네트워크에 있는 A한테 데이터를 보냈으면 3계층은 A의 IP 주소를 바탕으로 라우팅하여 A가 속한 네트워크에 전송하게 된다. 패킷이 해당 네트워크에 도착하면, 즉 해당 네트워크에 연결된 라우터에 도착하면, 그 라우터에서 목직지까지 패킷을 프레임으로 바꾸고 2계층이 MAC 주소를 이용해 프레임을 목적지까지 전송한다. 이때, IP주소로 데이터를 보냈는데, 2계층은 어떻게 목적지의 MAC 주소로 보내지? 이건 바로 IP 주소를 MAC 주소로 바꿔주는 ARP 프로토콜이 있기 때문이다. 이 프로토콜을 활용하여 2계층이 MAC 주소로 보낼 수 있는 것이다. 그럼 MAC 주소와 ARP 프로토콜이 각각 무엇인지 더 자세히 알아보자.
MAC 주소
- 링크 계층에 쓰이는 이 주소는 LAN 주소 또는 물리적 주소로도 불린다.
- 그 이유는 이 주소는 로컬 네트워크 내 소통을 위해 사용되며 network adapter 하드웨어에 부여된 고유한 주소이기 때문이다.
- 표현 방법
- MAC 주소는 6byte로 2^48 개의 사용가능한 주소들이 있다.
- 주소는 hexadecimal notation으로 표현되며 한 byte가 두 개의 hexadecimal 값으로 표현된다.
- 만약 LAN에 있는 모든 어댑터한테 프레임을 보내고 싶은 경우, 즉 broadcast하고 싶은 겨우 특별한 MAC 주소인 broadcast address를 사용하면 된다. 이 주소는 FF-FF-FF-FF-FF-FF이다.
- 특징
- MAC 주소는 어댑터를 구별하는 고유한 값
- 즉 두 개의 어댑터가 동일한 MAC 주소를 가질 수 없다는 것이다.
- 계에서 다양한 나라 및 기업들에서 어댑터를 만들어도 각 어댑터의 MAC 주소가 고유할 수 있는 이유는 IEEE 덕분이다.
- IEEE는 어댑터를 만들고자하는 기업에게 특정 범위의 MAC 주소를 할당하는 식으로 MAC 주소가 중복되지 않도록 관리한다.
- flat structure
- <-> IP 주소는 hierarchial structure(network part & host part)
- 위치가 바뀌더라도 MAC 주소값은 변하지 않는다
- <-> IP 주소는 위치가 변하면 호스트의 IP 주소를 바꿔줘야 한다.
- 예시
- MAC 주소는 사람의 주민등록번호, IP 주소는 사람의 집 주소로 비유할 수 있다!
Address Resolution Protocol (ARP)
네트워크에는 네트워크 계층 주소(ex. IP)와 링크 계층 주소(=MAC) 둘 다 쓰이기 때문에 둘을 서로로 번역할 수 있는 방식이 필요하다. 인터넷에선 그 방식이 바로 ARP이다. 호스트에는 ARP 모듈이 있는데, 이 모듈은 IP 주소를 입력받으면 그 주소와 매핑되는 MAC 주소를 반환한다. 반환된 MAC 주소를 받은 호스트는 그 주소를 프레임에 넣고 LAN에 전송한다. 이때, ARP 모듈이 다른 네트워크에 있는 IP 주소를 입력받으면 에러가 발생한다. ARP는 로컬 네트워크 내 IP들만 다루기 때문이다.
ARP 작동 방식
- 각 호스트/라우터는 메모리에 ARP table을 가지고 있다.
- 이 테이블에는 IP주소와 MAC 주소를 매핑하고 있다.
- ARP table ex)

- ARP 모듈이 IP주소를 입력받으면 해당 IP 주소가 ARP table에 있는지 확인한다.
- 만약 존재하면 매핑되는 MAC 주소를 반환한다.
- 만약 존재하지 않으면, 매핑되는 MAC 주소를 찾아 반환한다.
- 찾는 방식은 sender가 ARP packet이라는 특별한 패킷을 만들어 broadcast하는 것이다
- ARP packet은 여러 필드를 가지고 있는데, sender와 receiver의 IP & MAC 주소 모두 저장되어 있다.
- 어댑터는 ARP query packet을 2계층의 프레임으로 변환하고, 로켈 네트워크에 있는 다른 호스트/라우터에게 보낸다.
- 프레임을 받은 어댑터들은 ARP packet을 담고 있는 프레임을 ARP module에게 전달한다.
- ARP module은 ARP packet에 있는 목적지 IP 주소가 자신의 IP 주소와 일치하는지 확인한다.
- 만약 일치하지 않으면 무시하고, 일치하면 ARP module이 response ARP packet을 보낸다.
- sender는 response를 받고 비로소 ARP table을 업데이트한다.
- 이후 ARP module은 찾은 MAC 주소를 반환한다.
Sending a datagram off the subnet

Subnet 1의 호스트가 Subnet 2의 호스트로, 호스트 111.111.111.111이 호스트 222.222.222.222로 IP 데이터그램을 보낸다고 가정해보자. 먼저 Sender는 데이터그램을 자신의 네트워크 어댑터에 전달한다. 그러나 이어서 송신 호스트는 어댑터에게 목적지 MAC 주소를 지정해야 한다. 이때 어댑터는 어떤 MAC 주소를 사용해야 할까?
222.222.222.222의 어댑터 주소인 49-BD-D2-C7-56-2A를 사용해야 한다고 생각할 수 있다. 그러나 이 생각은 틀렸다! Sender 어댑터가 해당 MAC 주소를 사용하면 Subnet 1의 어댑터들은 IP 데이터그램을 네트워크 계층으로 전달하지 않는다. 왜냐하면 프레임의 목적지 주소가 Subnet 1의 어댑터 MAC 주소와 일치하지 않기 때문이다. 결과적으로 데이터그램은 소멸하게 된다.
위 그림을 자세히 보면 111.111.111.111에서 Subnet 2의 호스트로 데이터그램을 보내려면 데이터그램을 먼저 경로의 첫 번째 hop인 라우터 인터페이스 111.111.111.110으로 보내야 한다. 따라서 프레임에 적절한 MAC 주소는 라우터 인터페이스 111.111.111.110의 어댑터 주소인 E6-E9-00-17-BB-4B이다. Sender 호스트가 111.111.111.110의 MAC 주소를 얻기 위해 ARP를 사용하는 것이다. 이 주소를 획득하면 송신 어댑터는 222.222.222.222를 주소로 하는 데이터그램을 포함한 프레임을 생성하고 Subnet 1로 전송한다. Subnet 1의 라우터 어댑터는 프레임의 목적지 주소가 자신인 것을 알기 때문에 프레임을 라우터의 네트워크 계층으로 전달힌다. 이렇게 IP 데이터그램이 성공적으로 소스 호스트에서 라우터로 전달된 것이다.
하지만 아직 끝나지 않았다. 이제 라우터는 데이터그램을 목적지로 전달해야 한다. 이를 위해 라우터는 전송 테이블을 참고하여 데이터그램을 전달할 올바른 인터페이스를 결정해야 한다. 이 테이블에 따라 데이터그램이 222.222.222.220을 통해 전달되어야 함을 알게 됩니다. 이 인터페이스는 데이터그램을 자신의 어댑터로 전달하여 새로운 프레임으로 캡슐화하고 Subnet 2로 보냅니다. 이번에는 프레임의 목적지 MAC 주소가 최종 목적지의 MAC 주소입니다.
6.4.2 Ethernet
이더넷(Ethernet)은 컴퓨터 네트워크를 위한 표준 기술로, 유선 LAN(Local Area Network)에서 데이터를 전송하기 위한 대표적인 방식이다. 이더넷은 데이터 링크 계층(Data Link Layer)에서 동작하며, 네트워크를 통해 데이터를 안전하게 전송하는데 사용된다. LAN 방식은 여럿 있지만, 현재 이더넷이 가장 많이 쓰이고 가장 많이 쓰일 프로토콜이다.
Ethernet Frame Structure

- Data field (46 to 1,500 bytes)
- 이 필드에는 IP datagram이 저장되어 있다.
- 이 필드 크기는 46 ~ 1500 바이트로, 만약 1500 byte가 넘는 IP datagram일 경우 호스트는 그 데이터를 쪼개야 한다.
- 반면, 46바이트가 안되면 stuffing이 사용된다. 네트워크 계층은 IP datagram에 저장된 데이터 길이 필드를 이용해 stuffing을 제거할 수 있다.
- Destination address (6 bytes)
- 목적지의 MAC 주소
- 만약 모두에게 보내고자 하면 이 주소는 broadcast 주소인 FF-FF-FF-FF-FF-FF일 것이다
- Source address (6 bytes)
- Type field (2 bytes)
- 이 필드는 이더넷이 다양한 네트워크 계층 프로토콜과 호환될 수 있도록 한다.
- 네트워크 계층 프로토콜은 IP 말고 여러 종류가 있다 (ex. Novell IPX or AppleTalk)
- 해당 프레임이 어댑터에 도착하면, 어댑터는 알맞는 프로토콜로 해당 데이터를 보내야한다.
- 어떤 프로토콜로 보내야하는지를 지정하는 것이 이 필드다
- 프로토콜마다 다른 type number를 가지고 있어 어댑터는 이 필드를 읽고 알맞는 프로토콜로 데이터를 전달한다.
- Cyclic redundancy check (CRC) (4 bytes)
- 해당 프레임을 받는 어댑터가 프레임의 bit error를 탐지할 수 있도록 하는 장치이다.
- 만약 에러를 탐지했으면 해당 프레임은 버려진다.
- Preamble (8 bytes)
- 이더넷 프레임은 8-byte preamble 필드로 시작한다.
- 첫 7 바이트는 10101010 값을 가지고, 마지막 바이트는 10101011.
- 첫 7 바이트는 수신 어댑터들을 깨우고, 그들의 시계를 sender 시계와 synchronize하는 역할을 한다.
- 마지막 바이트의 마지막 2 bit는 곧 중요한 데이터가 올 것임을 알리는 역할을 한다.
Ethernet: unreliable service to the network layer
이더넷은 CRC를 이용해 에러를 감지하지만, 감지하더라도 별다른 대응을 하지 않는다. 에러가 발견되면 프레임을 버리기만 할 뿐이다. 그렇기에 해당 프레임을 보낸 어댑터는 프레임이 잘 도착했는지, CRC를 통과했는지 알지 못한다. 이렇게 이더넷은 unreliable한데, 신뢰성이 낮아도 되는 이유는 이 부분을 전송계층이 보완해주기 때문이다. 만약 UDP이면 데이터 몇 부분이 빠진 상태로 그대로 전달되지만, TCP인 경우 데이터 손실을 발견하고 재전송을 요청한다. 이 덕분에 이덧넷은 unreliable해도 되며, 간단하고 비용이 쌀 수 있다.
Ethernet 종류
이더넷에는 다양한 종류가 있는데, 이더넷들의 명칭은 10BASE-T, 10BASE-2, 100BASE-T, 1000BASE-LX, 10GBASE-T, 40GBASE-T 등처럼 정해져있다. 이 명칭은 처음 보면 당황스러울 수 있지만 생각보다 명칭의 구성을 살펴보면 이는 그저 이더넷의 대표적인 특징을 표시한 것임을 알 수 있다.
- 첫 숫자
- 는 데이터 전송 속도를 의미한다.
- 10 megabit, 100 megabit, 10 Gigabit, 40Gigabit인 것이다.
- 숫자 다음에 나오는 단어 "BASE"
- 는 물리적 매체는 이더넷 트래픽만을 전송함을 의미한다.
- 마지막 부분
- 은 물리적 매체 종류를 의미한다.
- 종류로는 coaxial cable, copper wire, 그리고 fiber가 있다.
- "T"는 twisted-pair copper wire를 의미한다.
6.4.3 Link-Layer Switches
스위치의 역할은 수신된 링크 계층 프레임을 받아서 발신 링크로 전달하는 것입니다. 이때, 스위치는 서브넷의 호스트 및 라우터에게 투명하다. 즉, 호스트/라우터는 프레임을 스위치에게 주소 지정하는 것이 아니라 다른 호스트/라우터에게 주소 지정하고 프레임을 LAN으로 보낸다. 이들은 스위치가 프레임을 수신하고 전달할 것을 인식하지 못한 채로 기쁨을 느끼며 프레임을 보내게 된다. 스위치의 인터페이스 중에서 프레임이 도착하는 속도가 일시적으로 해당 인터페이스의 링크 용량을 초과할 수 있다. 이 문제를 해결하기 위해 스위치 출력 인터페이스에는 라우터처럼 버퍼가 있다.
Forwarding and Filtering
Filtering
- 이 스위치 기능은 프레임이 버려져야할지 받아들여져야할를 결정한다.
Forwarding
- 이 스위치 기능은 프레임이 어떤 인터페이스로 보내져야할지를 결정하고, 해당 인터페이스로 프레임을 전달하는 역할을 한다.
Plug-and-play
스위치는 plug-and-play 기기이다. 이는 시스템 관리자가 따로 설정할 필요가 없이 스위치들을 LAN에 연결하기만 하면 된다는 의미이다. 스위치를 LAN에 연결하면 ARP table이 자동적으로 생성되며 이후 테이블은 알아서 관리된다. host가 subnet으로부터 연결이 끊어지면 ARP table들에서 해당 entry가 자동적으로 삭제되는 등의 여러 작업을 알아서 한다.
특징
- Elimination of collisions
- 스위치를 사용하면 충돌로 인해 낭비되는 bandwidth가 없다.
- 스위치는 프레임을 버퍼에 저장하며 한번에 한 개 이상의 프레임을 보내지 않는다.
- Heterogeneous links
- 스위치는 각 링크를 분리하기 때문에, 각 링크는 다른 전송 매체와 다른 전송 속도를 가질 수 있다.
- Management
- 스위치는 네트워크 관리를 돕는다
- 가령, 만약 어댑터가 제대로 작동하지 않아 계속 이더넷 프레임을 보낸다면 (jabbering adapter), 스위치는 문제를 감지하고 해당 어댑터와의 연결을 끊는다.
Router VS Switch
라우터
- 3계층(network layer)에서 작동
- 서로 다른 네트워크 간의 트래픽(packet)을 전달하고 최적의 경로를 선택하는 역할
- IP 주소 기반으로 작동
- 장점:
- 네트워크 구조가 특정 구조로 제한되어 있지 않음 -> 경로가 다양
- 단점:
스위치
- 2계층(link layer)에서 작동
- 로컬 네트워크 내 장치 간의 트래픽(frame)을 전달
- MAC 주소를 기반으로 작동
- 장점:
- plug and play
- 2계층까지만 데이터를 올리면 되기 때문에 데이터 filtering/forwarding 속도가 빠름
- 단점:
- 네트워크 구조는 spanning tree로 제한되어 있음 (작은 ARP table)
- 스위치는 broadcast storm에 취약함