호스트가 가지는 주소는 두가지 종류가 있다. IP주소와 MAC주소이다. IP주소는 네트워크 계층이 가지는 주소이고 MAC주소는 데이터링크 계층이 가지는 주소다.

MAC 주소

MAC 주소는 네트워크 인터페이스 카드에 부여되는 고유한 번호이다. 총 48비트로 구성되어 있고 앞의 24비트는 네트워크 인터페이스 카드를 제조하는 회사에게 하나씩 부여되고, 뒤의 24비트는 제조사에서 고유하게 부여하기 때문에 모든 호스트는 고유한 MAC주소를 가질 수 있다.

ARP란?

ARP(Address Resolution Protocol)란 IP주소로 MAC주소를 알아내는 프로토콜이다. MAC 주소는 하드웨어에 종속적이어서 평면적이기 때문에 이것을 통해 네트워크에서 경로를 찾을 수 없다. 그래서 IP주소를 통해 MAC주소를 알아내야 한다.

의문점

여기서 궁금한 점이 생겼다. IP주소로 경로를 다 찾을 수 있는데 왜 굳이 ARP로 MAC주소를 찾은 다음에 통신을 해야 하는지 궁금했다. 옛날에 썼던 전공책을 찾아보니 약간은 답을 알 수 있었다.

MAC주소가 필요한 이유

그것은 네트워크가 계층적이기 때문이라고 생각한다. 데이터를 수신하려면 TCP/IP 5 Layer를 통해 밑에서부터 단계적으로 올라와야 한다. 만약 2계층인 데이터 링크 계층에서 수신한 프레임을 뜯어보고 목적 MAC주소에 자신의 MAC주소가 써있지 않으면 위로 올려보내지 않고 버려질 것이다. 따라서 MAC 주소를 알아야 한다.

MAC주소가 먼저인가 IP주소가 먼저인가?

IP주소는 DNS로 알아낸다고 가정하면 라우팅을 통해 상대 호스트가 있는 곳까지는 도달 할 수 있다. 하지만 MAC 주소를 모르기 때문에 데이터 링크 계층에서 무시된다.

MAC주소를 물어보려고 IP주소로 목적지에 도착했더니 MAC 주소를 몰라서 쫓겨나는 것이다. 이를 해결 하기 위해 ARP프로토콜이 사용된다.

A가 B의 MAC주소를 알아내는 시나리오

  1. A가 B에게 ARP 보내기
    A가 IP주소와 MAC주소를 담고, B의 IP주소를 담은 뒤 목적지의 MAC주소에 브로드 캐스트를 의미하는 FF:FF:FF:FF:FF:FF를 담아준다. 그럼 B의 데이터 링크 계층은 이 프레임이 브로드 캐스트기 때문에 버리지 않고 받아들인다.

  2. B가 A에게 ARP 보내기
    자세히는 모르겠지만 책에서 나온 대로는 받은 프레임을 ARP 모듈에 보낸다. 자신의 IP주소와 MAC주소를 넣고, A에게 받은 ARP 프레임에서 IP주소와 MAC주소를 베껴와 목적 주소로 담는다. ARP 모듈은 어디에 속해 있는 애인지 모르겠다. MAC주소랑 IP주소를 알아서 적어 넣는다고 하니 좀 이상하다. ARP가 2계층과 3계층 사이에 있는 프로토콜이라고 하는데 그 이유를 알 것 같다.

  3. A가 ARP 수신 B가 보낸 ARP는 목적 IP주소와 MAC주소가 있기 때문에 A에게 온전히 도달할 것이다. 이것을 받은 A는 자신의 ARP table에 IP주소와 MAC주소를 매핑해서 저장하고 거기에 더해 유효기간(기본 20분)을 저장해 놓는다.
    다음부터는 ARP table에 MAC주소가 있기 때문에 그걸 사용해서 통신하면 된다.

태그:

카테고리:

업데이트:

댓글남기기