본문 바로가기
네트워크

[브라우저에 URL 입력 후 일어나는 일들] 3_ARP 프로세스

by 이농이능 2019. 1. 12.

지난번 DNS 서버에서 도메인으로 IP 주소를 받아오는 것을 설명했습니다. 

오늘은 이 받아온 IP 주소를 가지고 

서버 PC에 이동하는 과정에 대해서 얘기해보도록 하겠습니다.




IP와 MAC의 차이에 대해서 먼저 알아보겠습니다.


* IP 

네트워크 통신에 있어서 통신기기 할당된 식별번호입니다.

이 아이피 주소는 통신기기마다 고유하게 할당되어 있는 것이 아니라 통신사에 일정 금액 지불하고 받아오는 것이기 때문에 경우에 따라 바뀔 수 있습니다.

상대방 컴퓨터가 내 PC를 찾기 위해 필요한 주소입니다.


* MAC 

아이피 주소와 마찬가지로 네트워크 통신에서 통신기기의 식별번호 나타냅니다.

MAC 주소는 통신기기 하드웨어 자체에 부여된 고유한 식별번호를 나타냅니다.

세상에 단 하나밖에 없는 유니크한 값을 가지며 변경될 수 없습니다.

컴퓨터가 서로 통신을 하기 위해 필요합니다. 



즉, IP 주소를 통해서 해당 IP 서버가 있는 곳이 로컬 네트워크가 아닌 경우에 그 지역 라우터까지 패킷이 전달됩니다.

라우터에서는 IP 주소에 해당하는 컴퓨터가 누군지 알아내기 위해 MAC 주소가 필요합니다. 


이때 오늘의 핵심 내용인 ARP Request를 통해서 MAC 주소를 받아온 후 

라우터는 이더넷 패킷을 만들어 전송합니다.



ARP 란?

(Address Resolution Protocol , 주소 결정 프로토콜)

OSI 7 계층에서 네트워크 계층 주소와 링크 계층 주소 사이의 변환을 담당하는 'IP 프로토콜' 입니다. 

3 계층인 네트워크 계층에서는 IP 프로토콜을 사용하여 현재 나의 IP에서 상대방 IP로의 경로로 라우터를 거쳐 전송됩니다. 

하지만 실제적으로 우리 컴퓨터는 '랜카드'를 사용하여 네트워크에 연결되어 있기 때문에 3계층에서 2계층으로의 정보 전달을 위해서 MAC 주소가 필요하고 이를 위해 ARP 프로토콜이 필요합니다.



가장 먼저, ARP 캐시가 목적지 IP의 ARP 항목을 가지고 있는지 점검합니다. 만약 캐시에 있다면 라이브러리 함수는 다음의 형태로 결과를 리턴합니다: 목적지 IP = MAC.


** ARP 캐시 확인하는 방법

arp -a


항목이 ARP 캐시에 없다면:

  • 라우트 테이블을 검색해서 목적지 IP 주소가 로컬 라우트 테이블의 서브넷에 존재하는지 봅니다. 존재한다면, 라이브러리가 그 서브넷에 속하는 인터페이스를 활용합니다. 없다면, 라이브러리는 우리 기본 게이트웨이의 서브넷에 속하는 인터페이스를 활용합니다.
  • 선택된 네트워크 인터페이스의 MAC 주소가 검색이 됩니다.
  • 네트워크 라이브러리는 레이어 2 (`OSI 모델`_에서 데이터 링크 레이어) 를 통해 ARP 요청을 보냅니다.

** 스위칭과 라우팅에 대한 자세한 설명은 아래 링크를 확인하세요.



ARP 패킷 구조

- 목적지 MAC Address :
ARP 요청인 경우 FFFFFFFF, ARP 응답인 경우 요청한 노드의 MAC 주소.

- Ethernet Protocol type :
ARP => 0x0806 , RARP => 0x0835

- Hardware type :
사용중인 하드웨어 주소 타입 나타내는 필드. 네트워크 유형 나타냄.

- Protocol type
어떠한 유형의 프로토콜(IPv4, IPv6, 등) 사용하는지 정의 

- Hardware Address Size, Hardware length :
물리 주소의 바이트 단위 길이. 이더넷의 경우 6

- Protocol Length/Size :
논리 주소인 망계층 주소의 크기. IPv4 는 4

- Operation Code
현재 ARP 패킷이 어떤 종류인지 가르킴.
ARP Request (요청) = 1, ARP Reply (응답) =2 ,
RARP Request  = 3, RARP Reply = 4

- Sender Hardware Address (Sender Ethernet Address) :
송신자 물리 주소

- Sender Protocol Address (Sender IP Address) :
송신자 논리 주소

- Target Hardware Address (Target Ethernet Address ) :
타깃 물리 주소.

ARP 요청의 경우, 
송신자의 MAC 주소 및 IP 주소, 목적지의 IP 주소는 채워놓지만 목적지의 MAC 주소는 0으로 채워짐.

- Target Protocol Address(Target IP Address) :
타겟 논리 주소.


ARP 동작


1. 
송신자는 목적지 물리주소가 필요하므로 물리 주소 요청을 위한 ARP 요청 패킷을 브로드캐스트로 전송합니다.
브로드캐스트를 하는 이유는 목적지 물리주소를 모르기 때문에 모두에게 요청합니다. 요청 패킷에는 송신자 주소가 포함되어 있어서 응답할 수 있습니다.

2.
모든 호스트와 라우터는 송신자가 보낸 ARP 요청 패킷을 수신합니다.

3. 
해당되는 수신자만 자신의 논리주소와 물리주소를 넣어 응답 패킷을 유니캐스트로 전송합니다.



네트워크는 통신을 하는 방식에 따라 브로드캐스트, 유니캐스트, 멀티캐스트로 나뉩니다. 

* 유니캐스트 : 일대일 통신 방법.
데이터를 보내고자 하는 주소(MAC Address)를 프레임에 포함시켜 보내는 방식. 
* 브로드캐스트 : 하나의 네트워크 전체의 통신 방법.
같은 네트워크에 포함된 장비들에게 거부권은 없고 일단 무조건 수신하고 봐야하는 통신법.


이제 목적지 서버의 IP 주소와 MAC 주소를 알게 됐기 때문에 패킷을 전송할 준비를 마치게 됩니다.

다음번에는 클라이언트와 서버가 통신하게 되는 과정에 대해서 설명하겠습니다.



참고 :

https://github.com/SantonyChoi/what-happens-when-KR

https://xyom.github.io/2018/01/08/ARP%E1%84%85%E1%85%A1%E1%86%AB/

http://elearning.kocw.net/document/lec/2012/AnDong/ChungJoongSoo/3-1.pdf

https://www.netmanias.com/ko/post/blog/5501/arp-bridging-ip-routing-network-protocol/switching-and-routing-part-1-ethernet-switching

http://www.ktword.co.kr/abbr_view.php?m_temp1=2188

https://musclebear.tistory.com/12