본문 바로가기

컴퓨터 네트워크/Computer Networking 정리

패킷 전송(Packet Delivery)_ARP

그동안 패킷전송의 여러 이론적 측면을 살펴보았다.

그렇다면 패킷전송은 실제로 어떻게 이루어질까?

 

전송 데이터는 각 Layer를 거치며 여러 헤더가 붙는다.

Layer 7부터 내려와 여러 헤더가 붙은 DataLink Layer에서의 데이터는 다음과 같다.

이때 데이터를 frame이라고 한다.

Layer 2의 헤더내용에서 DA와 SA가 있는데 이는 각각 Destination Address, Source Address이다.

 

IP Address는 부족한 IP주소체계를 해결하기 위해 서브넷 마스킹이나 여러 작업들을 거치기 때문에 전세계적으로 unique하다고 볼 수 없다.

 

그렇다면 이 지구에서 나만의 핸드폰을 나타내기 위해선 어떤 주소가 필요할까?

이럴때 사용하는 것이 MAC Address이다.

 

IP 주소는 globally unique하지 않지만 MAC Address는 globally unique하다.

때문에 bit수도 굉장히 많은데 무려 48bit이다.

아직까지도 MAC Address가 부족하다고 들었던 적이 없기 때문에 진짜진짜 큰 수라는것을 알 수 있다.

 

위 그림처럼 각 LAN은 자신만의 고유한 address를 가지고 있다.

 

이 MAC Address는 통신에서 굉장히 중요하다. (IP Address만으로는 전세계적으로 통신이 불가능)

통신을 하기 위해선 IP Address(logical)과 MAC Address(physical)가 모두 필요하다.

그렇다면 목적지의 MAC Address의 정보는 어떻게 가져올까?

 

이때 사용하는 프로토콜이 ARP이다.

 

ARP


ARP request는 기본적으로 브로드캐스트를 통해 이루어진다.

A가 B의 주소를 가져오고 싶다면 자신과 연결된 모든 호스트들에게 브로드캐스트 메시지를 뿌린다. (MAC 주소를 얻고싶은 호스트의 IP주소를 뿌리는 것)

메시지를 받은 X,B,Y는 해당 IP주소가 자신의 IP주소와 같다면 A에게 자신의 MAC주소를 보낸다. 위 그림에서는 B가 보낸다.

 

여기서 똑똑한 사람들이라면 캐시를 생각해낼 것이다. 필요할때마다 브로드캐스트를 해서 보내는 것이 아니라 캐시 테이블을 가진채로 처리를 빠르게할 수 있을 것이다.

실제로 cmd창에서 arp -a 명령어를 입력하면 현재 나의 ARP 캐시 테이블이 출력된다.

IP주소와 MAC주소가 나타나는 것을 볼 수 있다.

 

다시 ARP request&resonse 과정으로 돌아와서 전체적인 흐름을 살펴보자면 다음과 같다.

 

그러나 위 방식에서는 한가지 간과된게 있다.

IP주소는 globally unique하지 않기 때문에 해당 목적지가 자신의 subnet안에 있을 때와 없을 때를 명확히 구분해야 한다.

 

상대방의 IP Address를 통해 자신의 서브넷 안에 있는지 없는지 판별하려면 서브넷 마스크를 이용하면 된다.

source의 IP Address에 서브넷 마스크를 and연산 하고,

destination의 IP Address에 서브넷 마스크를 and연산 해서

서로 같으면 같은 서브넷 안에 있는 것이고 다르면 아닌 것이다.

서브넷 마스크에 대한 내용은 여기(링크)에 자세히 나와있으니 읽고 오자.

 

그렇다면 두가지 경우로 나눌 수 있다.

1. 목적지가 자신의 서브넷 안에 있는 경우

이 경우는 같단하다. 그냥 위에서 설명한대로 src가 서브넷 안에 있는 자신과 연결된 모든 호스트들에게 브로드캐스트를 뿌리면 된다.

 

그러나 문제는 다음 경우이다.

 

2. 목적지가 자신의 서브넷 밖에 있는 경우

이경우가 약간 골치아프다.

IP주소는 globally unique하지 않기 때문에 자신의 gateway 라우터를 거쳐갈 때 처리를 해줘야 한다.

예시를 보자.

 

 

A가 B에게 ARP를 통해 B의 MAC 주소를 가져오고 싶다.

그러나 B는 A와 다른 서브넷에 속해있기 때문에 1번에서의 방법대로 진행하기엔 오바메양이다.

과정은 다음과 같다.

 

1. A가 B의 IP주소를 보았더니 자신과 다른 서브넷에 있다고 판단

2. A는 gateway router에게 frame을 보낸다. 이때 이 frame에는 R의 MAC주소(R로 프레임을 보내야 하니까), A,B의 IP주소가 적혀있다.

3. R은 B의 IP주소를 알고있기 때문에 자신의 서브넷 안에 있는지 없는지 판별한다.

4. 위 그림에서는 R이 속한 서브넷에 B가 존재하기 때문에 B의 MAC주소를 받아 데이터를 전송할 수 있다.

     4-1) 그러나 만약 R과 B가 다른 서브넷에 존재한다면 1~3의 과정을 계속 반복한다.

 

Devices


각 레이어에 필요한 물리적인 장치는 위와 같다.