본문 바로가기
CS/네트워크

홉바이홉 통신, ARP

by 우다다캣 2022. 11. 13.

 인터넷 계층에서는 IP주소를 사용해서 다른 기기에 패킷을 전송합니다. 실제로 IP주소를 사용한 통신이 어떻게 이루어지는지 살펴보도록 하겠습니다.

ARP

 ARP(Address Resolution Protocol)이란 IP 주소를 물리적 주소(MAC 주소)로 대응시키는데 사용하는 프로토콜입니다. 기기간의 통신은 IP주소를 기반으로 통신한다고 하지만, 정확히는 통신하려는 기기의 실제 물리적인 주소를 알아야 통신이 가능합니다. ARP는 물리적 주소인 MAC주소를 논리적 주소인 IP주소와 1대1 매칭을 시켜주는 프로토콜입니다.

 

 ARP는 MAC주소를 관리하기 위해 ARP 테이블이라는 곳에 기기의 IP주소와 MAC주소를 1대1 매칭시켜서 관리합니다.

 

 ARP는 MAC 주소를 알아내기 위해 다음과 같은 ARP Request, ARP Reply 과정을 거칩니다.

 

 

1. 장치 A가 장치 B의 IP 주소를 알고 있을 때, 이 IP 주소의 MAC 주소를 알아내기 위해 ARP Request를 브로드캐스트(같은 네트워크 상의 모든 장치에 보내는 것)합니다.

2. 해당 IP주소에 해당하는 장치 B가 이에 응답해 ARP Reply를 유니캐스트(하나의 장치에만 보내는 것)합니다.

3. 장치 A는 ARP Reply에 들어있는 MAC 주소를 얻어 장치 B의 MAC 주소를 알아냅니다.

라우팅 테이블

 라우팅 테이블은 라우터에서 목적지의 정보들과 목적지로 가는 방법을 관리하기 위해 사용하는 테이블입니다. 라우터는 서로 다른 네트워크(LAN)를 중계하는 기기로, 다른 네트워크에 있는 기기로 정보를 전송할 때 라우터에 저장되어 있는 정보를 이용해서 목적지를 찾고, 데이터를 전송할 수 있습니다.

 

 라우팅 테이블에 목적지로 가는 route path가 설정되어 있지 않다면, 해당 목적지로 가는 패킷은 라우터에서 폐기(Discard)됩니다. 목적지까지 패킷이 폐기되지 않고 가기 위해서는 라우팅 테이블에 매치되는 Entry가 있거나, Default route가 설정되어 있어야 합니다.

 

Default route

 Default route는 어떤 목적지에 매치되는 Entry가 없을 때 무조건 외부로 통하기 위해 설정해두는 경로입니다. 즉, 디폴트 라우트가 설정되어 있다면 라우팅 테이블에 경로가 없는 모든 네트워크들이 디폴트 라우트로 보내집니다.

 

홉바이홉 통신

 홉바이홉 통신은 라우팅할 때 목적지로 가는 경로를 전부 저장하지 않고, 목적지에 가기 위해 거쳐야 하는 다음 지점만 저장해두는 방식입니다. 가장 흔하게 사용하는 방식이며, 효율적으로 라우팅을 하고 라우팅 테이블의 column 수를 줄일 수 있습니다.

 

 이해를 돕기 위해 홉바이홉 라우팅 과정을 강남역에서 왕십리역을 가는 과정에 비유해 보겠습니다.

 

선릉에서 분당선으로 갈아타면 됩니다.

 end to end 통신에서는 강남역에서 왕십리역까지 가기 위한 경로를 하나하나 적어둬야 합니다. 예를 들면 '강남역에서 역삼 방향으로 2호선을 타고 선릉역까지 간 다음, 선릉역에서 선정릉 방향 분당선으로 갈아타서 왕십리역까지 가라' 라고 적어두는 것입니다.

 

 그러나 홉바이홉 통신에서는 왕십리까지 가는 모든 경로는 알지 못합니다. 다만, 왕십리에 가려면 선릉에서 갈아타야 한다는 정보는 알고 있습니다. 선릉역에서 어떤 호선으로 갈아타야 하는지, 어느 방면으로 가야 하는지는 모르지만, 바로 다음 지점(hop)은 알고 있는 것입니다.

 

 따라서 홉바이홉 통신에서는 '일단 강남역에서 역삼 방향으로 2호선을 타고 선릉역까지 가고, 거기서 어떻게 가는지 다시 물어봐라.' 라고 적혀있습니다. 그리고 선릉역에 가서 왕십리역에 어떻게 가는지 물어보면 분당선으로 갈아타면 왕십리로 갈 수 있다고 알려줍니다.

 

 즉, 홉바이홉 통신을 지하철에 비유하면 각 호선이 지역 네트워크(LAN)이고, 각 역들이 컴퓨터, 갈아타는 역이 라우터라고 볼 수 있습니다. 

 

 홉바이홉 통신에서는 목적지가 있는 네트워크 라우터의 IP만 가지고 있습니다. 기존 통신에서는 목적지 하나하나당 경로가 모두 다르기 때문에 라우팅 테이블에 목적지의 개수만큼의 column이 필요했다면, 홉바이홉에서는 같은 네트워크의 목적지는 모두 하나의 IP주소만 저장하면 되기 때문에 훨씬 효율적으로 경로를 저장할 수 있습니다.

 

그래서 어떻게 목적지를 찾아가?

 ARP, 라우팅 테이블, 홉바이홉 통신의 개념을 이용해서 PC0에서 PC1에 어떻게 데이터를 전송하는지 알아보겠습니다.

 

1. PC0이 PC1에 데이터를 보내기 위해 PC1의 IP주소를 알아냅니다.

2. 라우팅 테이블에서 PC1의 IP주소로 가려면 어디로 가야 하는지 다음 지점(hop)의 IP를 알아냅니다. 이 때 PC1이 다른 네트워크에 있다면 다음 hop IP는 해당 네트워크로 가기 위한 라우터의 IP가 됩니다. (여기서는 PC1이 같은 네트워크 상에 있다고 가정하겠습니다.)

3. ARP 테이블에 다음 hop IP(PC1 or 라우터)의 MAC 주소가 등록되어 있는지 확인합니다.

4. ARP 테이블에 다음 hop IP의 MAC 주소가 없다면, MAC 주소를 알아오기 위해 자신의 IP주소와 MAC 주소를 담아 ARP Request를 브로드캐스트합니다. 이 때 Request는 LAN 구간의 끝까지 도달합니다.

5. ARP Request를 수신한 PC1은 자신의 ARP 테이블에 PC0의 IP주소와 MAC 주소를 등록하고, 자신의 IP주소와 MAC 주소를 담아 ARP Reply를 PC0에 유니캐스트합니다.

6. PC0는 ARP Reply를 수신하면 ARP 테이블에 PC1의 IP주소와 MAC 주소를 등록하고, PC1으로 전송할 패킷의 Destination MAC과 IP에 PC1의 MAC 주소와 IP주소를 부착해서 패킷을 전송합니다.

7. 다시 2~3번 과정을 거쳐 PC1의 MAC 주소가 등록되어 있으므로 PC1에 바로 패킷을 전송합니다.

8. PC1은 전송받은 패킷의 Destination MAC 주소가 자신의 NIC MAC 주소와 동일하므로 패킷을 수신해서 IP Layer로 전달하고, IP Layer에서는 Destination IP가 자신의 IP주소와 동일하므로 IP 패킷을 수신합니다.

 

참고자료

https://ko.wikipedia.org/wiki/%EC%A3%BC%EC%86%8C_%EA%B2%B0%EC%A0%95_%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C

https://aws-hyoh.tistory.com/entry/ARP-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0

https://kwongyo.tistory.com/m/22

https://m.blog.naver.com/goduck2/220111709554

'CS > 네트워크' 카테고리의 다른 글

HTTP의 발전 (HTTP/1.0에서 HTTP/3.0까지)  (1) 2022.11.21
네트워크 기기  (4) 2022.11.06
네트워크 기초  (1) 2022.10.31
[HTTP] URI와 URL  (0) 2022.08.19
[HTTP] IP / TCP / DNS  (0) 2022.07.08