개인 공부/컴퓨터 네트워크

3.4 Link-Layer Addressing

Sanyo 2024. 6. 1. 16:18

Flow

 

후에 챕터 7에서 IP address를 배울 것이지만 Internet과 같은 internetwork에서는 IP address만 가지고는 목적지에 도달할 수 없다.

 

예를 들어, 같은 source와 destination을 가진 각 packet은 다른 경로를 이용할 수도 있는 것이다.

IP address는 이 two end(source & destination)는 정의할 수 있지만 각 packet이 어떤 링크를 타고 가야 하는지는 정의하지 못하고 있다.

 

MAC address

MAC address는

  • link-layer address
  • link address
  • physical address

로도 불린다.

 

48bit로 16진수 12자리의 숫자로 이루어져 있다. colons ':'로 구분한다. (예 A3:34:45:11:92:CC)

 

packet이 network layer에서 data-link layer로 내려올 때, frame으로 encapsulized 된 상태일 것이다.

 

위 그림처럼 frame의 헤더에는 그림의 L2 L1과 같이 2개의 address가 담겨 있다. link의 source와 destination을 나타낸 것이다. 이 address는 frame이 다른 곳을 통과할 때마다 계속 바뀐다.

 

 

Three Types of Addressing

  1. Unicast
    • one-to-one communication
    • 목적지의 MAC 주소를 포함.
  2. Multicast
    • one-to-many communication
    • MAC주소의 첫번째에 01이 들어간다.
    • 예) 01:00:5E:01:02:03
  3. Broadcast
    • one-to-all communication
    • flood broadcast MAC 주소가 F로 이루어진다.
    • 항상 - FF:FF:FF:FF:FF

Types of addressing

Address Resolution Protocol (ARP)

노드가 보낼 packet이 있을 때, 받는 쪽의 IP address를 가지고 있다.

하지만 IP address는 link를 통해 frame을 이동시키는데 도움이 되지 않는다. 다음 노드의 link-layer address가 필요하다.

이때 ARP가 도움이 된다.

 

ARP는 network layer의 보조 프로토콜이다.

IP address를 Link-layer address에 매핑하는 방식이다.

IP address를 받고, ARP가 이를 매핑한 후, data-link layer로 넘겨주게 된다.

 

그럼 ARP가 어떻게 작동되는 걸까? 아래 그림을 살펴보자.

 

먼저 A 노드가 N2의 IP address를 가진 노드의 Link layer address를 알고 싶다고 request를 보낸다.

 

 

B 노드가 그 N2가 자신의 IP address인 것을 알고 ARP reply packet을 A에게 보낸다. 이 안에는 MAC id가 들어있다.

 

다음은 ARP packet의 format인데 외울 필요까지는 없을 것 같다.

 

 

 

Request
reply

위 그림을 보면 request는 multicast frame으로, reply는 unicast frame으로 소통하는 것을 알 수가 있다.

 

 

다음으로 전체적인 구조를 보겠다. Alice가 Bob에게 datagram을 보내는 상황이다. Alice는 Bob의 Ip address는 알고 있는 상태다.

 

Situation

 

Alice

 

Alice

처음 Network-layer address를 받고 Network layer에서는 forwarding을 해준다. 그 결과 R1으로 경로가 설정되고, L1을 받게 된다.

data-link layer에서 Framing을 해준다. LA에서 L1으로 가겠다 하고 Frame 헤더를 설정. Physical layer를 거쳐 신호를 보낸다.

 

Router 1

Router 1

Router 1에서도 비슷한 과정을 반복한다. L2에서 L3로 가겠다 하고 frame 헤더를 붙이고 신호를 보내준다.

 

Router 2

Router 2

 

그냥 똑같다. ARP를 이용해서 LB를 구하고 Bob에게 최종적으로 신호를 보내준다.

 

Bob

Bob

 

Bob이 데이터를 성공적으로 수신한다.