2계층 - 데이터 링크

정의

물리 계층 바로 위에 있는 계층으로, 같은 네트워크 안에 있는 인접한 장비끼리 데이터를 안전하게 주고받게 해주는 역할을 합니다. 물리 계층이 보내주는 비트 신호를 프레임 단위로 묶고, 같은 네트워크 안에서 MAC 주소를 이용해서 정확한 상대에게 전달합니다.

다른 계층들은 데이터에 대부분 헤더만 붙이지만, 2계층은 헤더와 테일에 주소와 제어 정보를 추가한다. 이때, 테일에는 오류 제어를 할 수 있는 제어 정보 FCS가 들어간다. FCS 필드의 CRC 값으로 오류를 검출한다.

MAC

MAC 주소는 랜카드에 제조 단계에서 부여되는 물리적 주소이다. 48비트로 구성되어 있으며, 보통 16진수로 표기를 한다. 가령, 00:1A:2B:3C:4D:5E 라는 주소가 있다고 가정하자. 여기서 앞 3바이트 00:1A:2B 는 제조사를 식별하는 OUI(Organizationally Unique Identifier)이며, 뒤 3바이트 3C:4D:5E 는 제조사가 부여한 일렬번호입니다.

LLC

3계층에는 IP 이외의 여러 프로토콜이 존재할 수 있다. LLC는 프레임의 페이로드가 어떤 상위 프로토콜로 전달되어야 하는지 식별해준다. 이를 위해 SAP라는 식별자를 사용한다.

  • DSAP : 목적지 상위 프로토콜
  • SSP : 출발지 상위 프로토콜

수신 측이 처리할 수 있는 속도보다 빠르게 데이터가 오면 버퍼가 넘치는 문제가 발생합니다. LLC는 수신 측이 송신 측에게 데이터 전송을 멈추는 요청을 보낼 수 있다. 또한, 손상되거나 분실된 프레임에 대한 처리를 담당한다.

스위치

데이터 링크 계층에서 동작하는 장비로, MAC 주소를 기반으로 프레임을 목적지 포트로만 정확히 전달해준다. 허브와 스위치의 차이는 아래와 같다.

  • 허브 : 들어온 신호를 모든 포트로 브로드캐스트한다.
  • 스위치 : MAC 주소를 보고 정확한 포트로만 전달한다.

스위치는 내부에 MAC 주소 테이블 을 가지고 있으며, 해당 표에는 어느 포트에 어떤 MAC 주소를 가진 장비가 연결되어 있는지가 기록된다. 스위치의 동작은 크게 3단계로 정리된다.

  • Learning : 프레임이 들어오면 출발지 MAC 주소와 들어온 포트 번호를 테이블에 기록한다.
  • Forwarding : 목적지 MAC 주소가 테이블에 있으면 해당 포트로만 전달한다.
  • Flooding : 목적지 MAC 주소가 테이블에 없으면, 출발지 포트를 제외한 모든 포트로 전달한다. 응답이 돌아오면 그때 학습한다.

ARP

IP 주소를 MAC 주소로 변환해주는 프로토콜이다. 같은 LAN에서 프레임을 보내려면 MAC 주소가 필요한데, 보통 IP 주소만을 알고 있다. 이 과정에서 IP 주소를 MAC 주소로 변환해준다. 동작 시나리오는 아래와 같다.

  • A(192.168.0.1)가 같은 LAN의 B(192.168.0.2)에게 데이터를 보내려는 상황이다.
  • ARP Request (브로드 캐스트) : A는 LAN 전체에 192.168.0.2를 가진 기기의 MAC 주소 를 묻는 ARP 요청을 브로드캐스트로 보낸다. 이때, FF:FF:FF:FF:FF:FF 주소가 브로드캐스트 주소이다.
  • ARP Reply (유니캐스트) : B는 MAC 주소를 A에게만 응답한다.
  • ARP 캐시 저장 : A는 받은 정보를 ARP 캐시에 저장하여 사용한다.