본문 바로가기

Information Network

Network Layer: Address Mapping(주소 맵핑)




Address Mapping(주소 맵핑)


인터넷은 라우터들과 같은 Internetworking device들에 의해 연결된 물리적인 Network들의 조합에 의해서 구성되어 있다. 하나의 발신지 Host로부터 시작된 packet은 여러 다른 물리적인 Network를 거쳐 결국 목적지 Host에 도착하게 된다. 이때 Host와 Router들은 그들의 IP(논리적) 주소를 통해 Network layer 수준에서 인지하게 된다.

그러나 packet들은 그들의 host와 router에 도달하기 위해 물리적 네트워크를 통과한다. Physical layer 수준에서, host와 router는 그들의 MAC(물리적) 주소를 통해 인지하게 된다.

MAC주소와 IP주소는 두 개의 각기 다른 식별자이다. 때문에 MAC주소와 IP주소를 연결시킬 필요가 있으며 이와 반대의 경우도 필요하다. 이를 위해서 Static Mapping(정적 맵핑), Dynamic Mapping(동적 맵핑)을 사용한다.

Static Mapping 

IP주소와 MAC주소를 연관시키는 테이블을 관리자가 따로 작성해주어야 한다. 특히 MAC주소는 변경될 소지가 있기 때문에 주기적으로 업데이트를 해야만 하며 이 overhead가 네트워크 성능에 영향을 미친다.


Dynamic Mapping

장치는 두 가지 주소중 하나를 언제나 알고 있으며, protocol을 이용하여 다른 하나의 주소를 찾는 방식이다.






IP주소를 MAC주소로 맵핑하기 : ARP


항상 Host나 Router는 다른 Host나 Router에 전달할 IP diagram을 가지고 있다. IP datagram은 Physical
layer를 통과할 수 있도록 frame으로 capsulation되어 있어, 송신자가 수신자의 MAC주소를 알 필요가 있음을 의미한다. 송신자는 수신자의 MAC주소를 알지 못하기 때문에 broadcasting을 통하여 request를 보낸다.


그러면 네트워크에 있는 모든 host나 router는 ARP request packet을 받고 처리한다. 그러나 오직 의도된 수신자만이 packet의 IP를 인식하고, ARP response packet을 전송한다. 이때 Reply packet에는 수신자의 IP와 MAC주소가 들어있다. packet은 request packet을 송신한 MAC주소를 사용하는 질의자에게 직접 unicast한다.



캐쉬 메모리
usually ARP reply를 수신한 시스템은 캐쉬 메모리에 그 mapping을 저장하고 캐쉬가 있는 영역을 모두 사용할 때까지 20~30분 동안 mapping을 유지하게 된다.

패킷 형식




Capsulation
ARP packet은 data link frame에 직접 capsulation된다. 예를 들어 ARP packet은 ethernet frame으로 capsulation되는데, type field는 frame에 의해 전송되는 data가 ARP packet임을 나타낸다.




동 작
ARP의 동작 절차는 다음과 같다.

1. 송신자는 목적지의 IP주소를 알고 있다고 가정해보자.

2. IP는 송신자의 MAC주소와 IP주소 그리고 수신자의 IP주소가 채워진 ARP request message를 만들도록 ARP에 요구한다. 이때 수신자의 MAC주소 field는 0으로 채워진다.

3. ARP request message은 전송 data link layer로 전달되어 frame으로 capsulation된다. 발신지 주소로는 송신자의 MAC주소가 사용되며, 수신자의 주소로는 물리적인 broadcast 줏가 사용된다.

4. 모든 host, router가 ARP request packet이 포함된 frame을 수신한다. 해당 frame에는 broadcast 목적지 주소가 포함되었기 때문에 모든 지국은 message를 꺼내서 ARP로 전달한다. 이때 목적지로 정해진 장치를 제외한 모든 장치들은 수신한 packet을 drop하게 된다.

5. 목적지 장치는 자신의 MAC주소가 포함된 ARP response message로 응답한다. 단 그 message는 ARP request message를 보낸 장치에만 전달된다.(unicast)

6. 송신자는 reply message를 받게 되며, 해당 목적지 장치의 MAC주소를 알게 된다.

7. 목적지로 전송할 data를 가진 IP datagram은 frame으로 capsulation되어 목적지로 unicast된다.



ARP는 다음과 같은 경우에 사용된다.
 




Proxy ARP(프록시 ARP)
proxy ARP scheme은 subnetting 효과를 만드는 데 사용된다. proxy ARP는 일련의 호스트들을 대신해서 동작하는데, 라우터가 proxy ARP로 동작할 때마다 그들 host들의 하나의 IP주소를 찾는 ARP request를 수신하고, 라우터는 그 자신의 MAC주소를 알리면서 ARP reply를 송신한다.

예를 들면, 오른편 host에 설치되어 있는 ARP는 오직 141.23.56.23의 목적 IP주소를 가진 ARP request에만 응답할 것이다. 그러나 adminstrator는 subnet주소로 인식된 전체 시스템을 변경하지 않고 subnet을 만들 필요가 있을 수 있다. 이때 proxy ARP를 운용하는 라우터를 추가하여 라우터가 subnet이 설치된 전체 host를 대신해서 동작하게 하는 것이다.

목적지 IP주소가 subnet하위 주소중 하나의 주소와 동등한 ARP request를 받을 때마다 라우터는 ARP reply를 보내고 목적지 MAC주소로써 그들의 MAC주소를 알리면, 라우터가 IP packet을 받을 때마다 적절한 host에게 packet을 전송한다.






MAC주소를 IP주소로 맵핑하기 : RARP, BOOTP, DHCP


RARP
RARP(역주소변환프로토콜)는 MAC주소를 알고 있는 장치에 대해서만 IP주소를 찾는다.

각 host나 router는 장치의 MAC주소와 독립적이고 유일한 하나 or 더 많은 IP주소에 할당되어 있다. IP datagram을 만들기 위해서는 host나 router는 자신의 IP주소들을 알 필요가 있는데, 장치의 IP주소는 보통 디스크 파일 상에 저장된 구성 파일로부터 읽는다.

그러나 디스크가 없는 장치(ex : Terminal)는 그들의 NIC를 읽음으로써 MAC주소를 얻을 수 있다. 그 후 RARP protocol을 사용하여 MAC주소로부터 IP주소를 얻을 수 있다.

이때 RARP의 심각한 문제는 broadcasting이 data link layer에서 끝난다는 것이다. 이더넷의 경우, 모두 1인 MAC broadcasting주소는 Network layer를 넘을 수 없다. 이것은 만약 관라지가 여러 network나 subnet을 가지고 있다면 각각에 RARP 서버를 할당해야 한다는 것을 의미하므로 최근에는 거의 사용되지 않는다.


BOOTP
BOOTP(Bootstrap protocol)은 MAC주소와 IP주소의 mapping을 제공하는 client/server protocol로 설계되었다. BOOTP는 Application layer protocol로써, 관리자는 동일한 network 또는 서로 다른 network에 client와 server를 설치할 수 있다. BOOTP message는 UDP packet에 capsulation되고, UDP packet자체는 IP packet에 capsulation된다.


client는 쉽게 발신지 주소로 모두 0을 상ㅇ하고, 목적지 주소로 모두 1을 사용한다.

RARP 대신 BOOTP을 사용함으로써 얻는 이점 중의 하나는 client와 server가 application layer처리라는 점이다. 다른 application layer처럼, client가 하나의 network에, server는 여러 다른 network와 분리되어 또 다른 network에 있을 수 있다.

그러나 한가지 문제점이 있는데 BOOTP request는 client가 server의 IP주소를 모르기 때문에 broadcasting을 이용한다. 하지만 broadcasting IP datagram은 어떤 라우터도 통과할 수 없는 문제가 있다. 이를 해결하기 위하여 중계가 필요한데, 하나의 host가 중계기로 사용될 수 있다. 이러한 host를 relay agent라고 한다. relay agent는 BOOTP server의 unicast 주소를 알고 있어 broadcasting packet을 수신할 때 중계기는 message를 unicast datagram에 casulation하고 BOOTP server에게 request을 송신한다.



DHCP
BOOTP는 동적 구성 프로토콜이 아니다. 그러나 DHCP는 수동이나 자동으로 가능한 고정 주소 할당과 동적 주소 할당을 제공한다.

정적 주소할당

DHCP는 BOOTP가 동작하는 것처럼 동작할 수 있는 능력이 있다. BOOTP와 하위 호환성을 가지는데 이것은 BOOTP client가 운용중인 host는 정적 주소를 DHCP server로 부터 요구할 수 있음을 의미한다. DHCP server는 MAC주소와 IP주소의 고정적인 연결에 대한 DataBase를 가지고 있다.



동적 주소할당

DHCP는 사용가능한 IP주소의 pool을 가진 두 번째 DataBase를 가지고 있는데, 이 두번째 DataBase가 DHCP를 동적으로 동작하게 한다. DHCP client가 임시 IP주소를 요구할 때, DHCP server는 사용가능한 IP주소의 pool에서 협상 가능한 시간동안 IP주소를 할당한다.

DHCP client가 DHCP server에 request를 보낼 때, server는 먼저 고정 DataBase를 검사하여 만약 요구된 물리적 주소의 목록이 고정 DataBase에 존재하면, client의 고정 IP주소를 되돌려 보낸다. 반면에, 고정 DataBase 목록에 존재하지 않는다면, server는 사용가능한 pool에서 IP주소를 선택하고, client에게 주소를 할당하며, 동적 DataBase의 목록에 추가한다.

이러한 동적 주소할당은 host가 network에서 nerwork으로 이동할 때, 또는 network에 연결되고 연결되지 않을 때 필요하다. 이때 DHCP는 임시 IP주소를 제한된 시간동안 제공한다.


다음은 DHCP transition diagram이다.