Network Layer에서는 IP 주소로 라우터 통신이 가능하게 했다.
Link Layer에서는 IP 주소와 비슷하게 통신에 사용되는 인터페이스만의 주소가 필요한데, 이를 MAC 주소라고 한다.
MAC 주소는 48비트로 표현한다. 16진수(4비트)를 12개 이어붙인 형태로 사용하며 두 개씩 끊어서 하이픈으로 구분한다.
Network layer에서 받은 datagram으로 만든 frame으로는 상대방의 destination IP 밖에 알 수 없다. 즉 이 destination IP로 보내기 위해 어느 맥 주소로 보내야 하는지는 알 수 없다. 여기서 ARP가 사용된다.

ARP는 Address Resoultion Protocol의 약자이다.
네트워크 상에서 IP 주소를 MAC 주소로 맞추기 위해 사용되는 프로토콜이다.
라우팅 테이블과 비슷하게 IP 노드는 ARP table을 가지고 있다.
ARP table에는 정보가 <IP address, MAC address, TTL> 형식으로 저장된다.
TTL은 언제까지 이 주소 매핑을 저장할 지 유효 시간을 나타낸다. TTL 만큼의 시간이 지나면 매핑 정보는 사라지게 되고 보편적으로 20분으로 설정한다.
노드 A가 B에게 datagram을 보내려고 한다고 가정한다.
A는 B의 IP 주소를 알고 있고 맥 주소는 모른다. 즉 A가 가지고 있는 ARP table에 B의 정보가 없다.



A에서 B로 datagram을 보낸다고 가정한다.
IP datagram header에는 A의 IP, B의 IP의 순서로 source IP, destination IP가 들어가 있다.
이 datagram을 링크 계층에서 받아서 frame header를 추가한다.
이 때 dest MAC address는 B의 MAC 주소가 아닌, 라우터 R의 주소이다.
MAC 주소에 E6-E9-00-17-BB-4B 를 붙여서 R에게 보낸다.
R에 도착한 frame은 frame header 부분이 제거되어 IP로 전달된다.

R 내부의 라우팅 테이블을 보고 outgoint link 를 결정한다. link 계층으로 내려보내고, source MAC address와 destination MAC address를 R의 outgoing link와 B의 MAC address로 채워서 보낸다.

frame이 B에 전달되면 datagram을 추출 해서 IP에게 전달하게 된다.
이더넷은 컴퓨터 네트워크 기술 중 하나로, 같은 네트워크 안의 컴퓨티끼리 데이터를 주고 받을 때 사용된다.
이더넷 프레임은 IP datagram을 포함한 3계층 프로토콜 패킷을 캡슐화한다.

스위치는 link layer의 장치이며, ethernet frame을 저장 및 포워딩하는 역할을 한다.
자세하게 말하면, incoming frame의 MAC 주소를 확인하고 outgoing link를 찾아 CSMA/CD를 이용해 내보낸다.
스위치의 각각의 incoming link에는 ethernet protocol이 사용되어 충돌이 발생하지 않고 전이중 통신을 구현할 수 있다.
예컨대 A에서 A'로의 통신과 B에서 B'로의 통신은 동시에 충돌 없이 이루어질 수 있다. (같은 destination 불가능)

스위치는 어느 인터페이스를 통해 어느 호스트로 도달할 수 있는지 '학습'한다.
어떤 sender가 보낸 frame이 스위치에 도달하면 스위치는 그 sender의 위치를 알 수 있다. 이 정보를 switch table에 기록한다. 그러면 다음 번에 그 sender로 향하는 frame이 들어온다면 어느 interface로 내보내야 하는지 알 수 있게 되는 것이다.
만약 어떤 frame이 들어왔는데 거기에 맞는 인터페이스 정보가 아직 테이블에 없다면 sender를 제외한 모든 interface로 해당 정보를 뿌린다.
스위치와 라우터는 자신에게 패킷을 일고, 적절한 output으로 내보내는 store-and-forward 작업을 수행함에 있어 공통점이 있다.
둘의 차이점은 크게 두 가지가 있다.
ARP나 DHCP 프로토콜은 브로드캐스트 메시지가 빈번히 발생한다. 브로드캐스트 메시지란 LAN 환경 안에 있는 모든 노드에게 flood하는 것을 의미한다. 만약 LAN 환경이 커져서 수많은 컴퓨터가 있으면 필요 이상으로 많은 컴퓨터들에게 메시지를 전달하는 것 또한 오버헤드가 크게 발생하고, 받는 입장에서도 성능 측면에서 비효율적이다.
따라서 LAN 환경을 분할해서 여러 개의 브로드캐스트 도메인을 만들고자 하는 필요성이 생겼다.

하나의 스위치에는 여러 개의 포트가 있다.
VLAN은 이 포트들을 가상 LAN에 소속시켜 서로 같은 네트워크 상에서 논리적으로 다른 LAN 상에 있을 수 있게 한다.
하나의 물리적 스위치를 통해 여러 개의 논리적 스위치를 만드는 것이다.
이런 방식으로 스위치를 나누면 트래픽을 분할하는 효과가 있어 브로드캐스트 등에 유리한다.
만약 16개의 포트를 8개의 포트를 갖는 두 개의 VLAN으로 나눈다면 각 VLAN 상에서 보내는 브로드캐스트 메시지는 반대편 VLAN에 도달하지 않게 된다.
이와 비슷한 맥락으로 VLAN 간에 동적인 포트 할당(dynamic membership)이 가능해진다는 장점이 있다.
그리고 각각의 VLAN 상에는 trunk port 라는 특별한 포트가 있는데, 이 포트는 다른 VLAN 간에 오가는 frame을 carry 한다.