Computer Science 기본 지식/컴퓨터 네트워크

[네트워크] 링크 계층 (2) MAC 주소 / ARP 주소 결정 프로토콜 / Ethernet 프로토콜

로파이 2021. 1. 10. 17:26

MAC(Media Access Control) 주소

  • 링크 계층에서 사용되는 48 bits 길이의 물리적인 주소
  • cf) IP 주소: 네트워크 계층에서 사용되는 32 bits(128 bits) 길이의 논리적인 주소
4A 28 8E 3C AD FE
랜 카드 제조사 일련번호 장치 고유 일련번호
  • 전 세계에서 유일한 장치 고유 번호
  • 지역에 상관없이 같은 의미로 통용된다.

- MAC 주소, 왜 필요한가?

1. LAN과 같은 한 네트워크 상에서 물리적으로 연결된 링크 인터페이스끼리 데이터 그램을 전송하기 위해 필요하다.

  • 적용된 링크 인터페이스 기술(ex. Ethernet, FDDI 등)이 다를 수 있기 때문에 통용가능한 주소가 필요하다.

2. 다른 IP 주소 네트워크에 있는 목적지 호스트를 특정하기 위해서 사용된다.

 

ARP (Address Resolution Protocol) 주소 결정 프로토콜 

 

같은 네트워크에 있는 호스트에 전송을 하는 상황에서

- 목적지 호스트의 IP 주소만 알고 있을 때 어떻게 전송할 수 있나? -> "ARP table"을 이용하여 목적지 호스트의 MAC 주소를 알아낸다.

  • 각 노드는 같은 네트워크에 있는 모든 호스트에 대한 IP주소-MAC주소 맵핑 정보, ARP table을 가지고 있다.
  • ex) <IP address, MAC address, TTL>
  • 목적지 IP 주소를 확인하여 해당 엔트리에서 MAC 주소를 알 수있다.
  • TTL: ARP table에서 보관되는 기간, 유효시간

- 만약 목적지 호스트가 LAN에 최근에 추가되어 ARP table에 맵핑 정보가 없을 때는?

   -> "ARP 주소 결정 프로토콜"을 사용하여 목적지 호스트에 대한 MAC 주소 정보를 알아낸다.

 

ARP 시나리오 1: 같은 LAN에 있는 목적지 호스트

시나리오 1

상황) A는 B에게 데이터를 전송하고 싶지만, B는 최근 LAN에 추가되어 A의 ARP table에 B에 대한 정보가 없다.

1. A는 B의 IP 주소가 포함된 ARP 쿼리 패킷을 생성하여 LAN 상에 속한 모든 노드로 브로드 캐스트 한다.

  - 목적지 MAC 주소: FF-FF-FF-FF-FF-FF (bcast)

  - 같은 LAN에 있는 모든 노드는 ARP 쿼리를 받게 된다.

2. B는 ARP 패킷을 수신하고 자신의 IP 주소를 목적지로 하는 것을 확인하고 A에게 자신의 MAC 주소 담은 응답 패킷을 보낸다.

  - 응답 패킷은 A의 MAC 주소를 목적지로 한다. (unicast)

3. A는 IP, MAC 주소 맵핑을 ARP table에 저장한다.

 

ARP 시나리오 2: 다른 네트워크에 있는 목적지 호스트

시나리오 2

상황) A와 B는 서로 다른 네트워크에 있고 라우터를 통해 전송을 해야 한다. 라우터는 A side 주소와 B side 주소가 있다(NAT).

1. A는 A side 라우터 MAC 주소만 알고 있으므로 다음과 같은 주소를 가지는 패킷을 라우터로 전송한다.

  IP 주소 MAC 주소
출발지 ip_host_a mac_host_a
목적지 ip_host_b mac_router_a

2. 라우터는 헤더를 분리하여 위의 주소 내용을 확인 후 자신이 아닌 노드로 전송한다는 사실을 알고 다음 주소 내용의 헤더를 생성하여 패킷을 전송한다.

  IP 주소 MAC 주소
출발지 ip_host_a mac_router_b
목적지 ip_host_b mac_host_b

3. 호스트 B는 해당 패킷을 수신하고 라우터를 경유하여 호스트 A로부터 왔다는 것을 알게 된다.

시나리오 1과 비교했을 때 다른 네트워크 상에 있는 노드로의 전송은 목적지 호스트 MAC 주소를 특정할 필요가 없다. 

 

Ethernet 프로토콜

링크 계층 전송 기술

네트워크 계층의 데이터 그램에서 Ehthernet 프레임을 위한 헤더와 트레일러(CRC)를 덧붙여 캡슐화가 일어난다.

물리 계층에서 수신 받은 프레임을 역캡슐화하여 헤더의 MAC 주소를 조사하거나 프레임 비트 오류를 검사한다.

 

- Ethernet 프레임 구조

프레임

  • preemable: 수신자와 송신자 간 동기화를 위한 비트
  • src/dst MAC address: 출발지 도착지 MAC 주소 
  • type/length: 상위 계층 프로토콜과 데이터 길이
  • Cyclic Redundancy Check(CRC): 프레임 비트 오류 검사

  - 오류가 있을 시 프레임을 버린다.

  - ACK 기능이 없으므로 신뢰성 있는 전송을 지원하지는 않는다.

 

Switch

링크 계층 기능을 지원하는 장치

호스들이 하나의 버스로 연결된 BUS 구조에서 호스트마다 독립적인 링크를 가진 스위치로 연결된 STAR 구조로 등장

 

- 기능

  • 링크마다 패킷 버퍼 제공
  • 수신 중인 프레임의 목적지 MAC 주소를 조사
  • 목적지 MAC 주소에 해당하는 링크 출구로 프레임을 내보냄

- Switch forwarding Table

목적지 MAC 주소에 해당하는 링크 출구를 찾기 위해 스위치가 관리하는 자료

MAC 주소 interface TTL
A 1 60
B 4 60
C 2 60

스위치에 수신된 프레임의 목적지 MAC 주소가 포워딩 테이블 엔트리에 없다면?

-> "flooding"을 통한 self-learning

 

- Self-learning through flooding

  • 목적지 MAC 주소 D에 대한 기록이 없다면, 스위치에 속한 모든 링크를 통해 flooding
  • D로부터 응답이 오고 이를 forwarding table에 기록
  • 3 계층 기능에서 브로드 캐스트와 유사한 방식
  • flooding은 MAC 주소만 포함되어 있는 2 계층 기능

- Switch vs Router

스위치와 라우터

두 장치 모두 포워딩 테이블을 가지고 있다.

- 스위치

  • flooding을 통한 MAC 주소를 학습하여 포워딩 테이블을 구성

- 라우터

  • 라우팅 알고리즘(RIP, OSPF, BGP)을 통한 IP 주소를 학습하여 포워딩 테이블을 구성