ARP (Address Resolution Protocol) 의 정의
인터넷은 라우터와 같은 인터네트워킹 장치에 의해 연결된 물리적 네트워크의 조합으로 구성되어 출발지 호스트에서 시작하는 패킷은 최종적으로 목적지 호스트에 도달하기 전에 여러 다른 물리적 네트워크를 통과한다. 패킷을 전달하려면 논리적 주소 IP 뿐만 아니라 물리적 주소 MAC도 필요하므로 논리적 주소를 통해 물리적 주소를 알아내거나 그 반대 과정이 필요하다. 그 과정을 수행하는 프로토콜이 ARP 프로토콜이다.
Addressing Mapping 주소 매핑
1. Static Mapping 정적 매핑
IP 주소와 MAC 주소를 대응시키는 테이블을 생성한다.
- 장비의 NIC 를 변경하여 새로운 물리적 주소를 생성한다.
- Local Talk와 같은 일부 LAN 환경에서는 컴퓨터를 부팅할 때마다 물리적 주소가 변경된다.
- 모바일 기기는 이동이 가능하므로 다른 네트워크로 이동하여 물리적 주소가 변경된다.
위와 같은 상황에서, MAC 주소가 변경될 수 있으므로 테이블을 주기적으로 업데이트해주어야 변경 사항이 반영된다.
2. Dynamic Mapping 동적 매핑
다른 장비의 IP 주소를 안다면 프로토콜을 사용하여 MAC 주소를 찾을 수 있다. ARP (Address Resolution Protocol) 프로토콜은 IP 주소를 가지고 대응하는 MAC 주소를 찾아내고, RARP (Reverse Address Resolution Protocol) 프로토콜은 MAC 주소를 가지고 대응하는 IP 주소를 찾아낸다. 오늘날 RARP는 다른 프로토콜로 대체되어 더 이상 사용되지 않는다.
ARP 동작 과정
호스트 및 라우터가 IP 데이터그램을 전송할 때, 물리적 네트워크를 통과할 수 있도록 프레임으로 캡슐화되어야 한다. 따라서, 목적지 MAC 주소를 찾기 위해 ARP request를 보낸다. ARP request 패킷에는 출발지의 IP, MAC과 목적지의 IP가 포함되며 송신자는 수신자의 물리적 주소를 모르기 때문에 목적지 MAC을 담을 필드에 0을 채워서 보내며 쿼리는 네트워크의 모든 호스트를 대상으로 브로드캐스트된다.
네트워크의 모든 호스트 및 라우터는 ARP request 패킷을 수신하고 처리하지만 쿼리 요청에 대응하는 호스트만 IP 주소를 인식하여 ARP response 패킷을 전달한다. ARP response 패킷에는 목적지의 IP까지 포함되며 ARP request 패킷에 포함된 출발지의 물리적 주소를 사용하여 출발지 호스트로 직접 유니캐스트된다.
ARP 패킷의 구조
ARP 패킷은 데이터 링크의 프레임 Data 필드로 직접 캡슐화된다. 프레임의 Type 필드 0x0806 값은 프레임이 전달하는 데이터의 유형이 ARP 패킷임을 나타낸다.
1. Hardware type
ARP가 동작하는 네트워크의 유형을 정의하는 16bits 필드이다. ARP는 모든 물리적 네트워크에서 동작할 수 있고, 각각의 LAN마다 정수 값의 필드 값이 할당되어있다. 예를 들어, Ethernet은 1 값을 가진다.
2. Protocol type
프로토콜을 정의하는 16bits 필드이다. ARP는 모든 상위 수준 프로토콜과 함께 사용할 수 있으며, IPv4 프로토콜에 대한 해당 필드 값은 16진수 0800 값이다.
3. Hardware length
물리적 주소의 길이를 바이트 단위로 정의하는 8bits 필드이다. 예를 들어, Ethernet의 경우에는 6의 값을 가진다.
4. Protocol length
논리적 주소의 길이를 바이트 단위로 정의하는 필드이다. 예를 들어, IPv4의 경우에는 4의 값을 가진다.
5. Operation
패킷의 유형을 정의하는 필드이다. 1 값은 ARP request, 2 값은 ARP response를 나타낸다.
6. Sender hardware address
출발지의 물리적 주소를 정의하는 가변 길이의 필드이다. Ethernet의 경우, 해당 필드의 값은 6이다.
7. Sender protocol address
출발지의 논리적 주소를 정의하는 가변 길이의 필드이다. IPv4 프로토콜의 경우, 해당 필드의 값은 4이다.
8. Target hardware address
목적지의 물리적 주소를 정의하는 가변 길이의 필드이다. ARP request 패킷의 경우에는 목적지의 MAC 주소를 모르는 상태이기 때문에 해당 필드의 모든 비트를 0으로 set하여 전송한다.
9. Target protocol address
목적지의 논리적 주소를 정의하는 가변 길이의 필드이다.
ARP Cache Table
데이터그램을 보낼 때마다, ARP 프로토콜을 사용하는 것을 매우 비효율적이므로 캐시 테이블을 운용하여 단점을 극복할 수 있다. 호스트 및 라우터가 IP 데이터그램에 해당하는 물리적 주소를 수신하면 해당 주소를 테이블에 저장한다. 하지만, 캐시 테이블의 공간은 제한적이므로 테이블의 각 항목은 영원히 유지되지 않는다.
1. State
각 항목의 상태를 나타내는 필드이다. Free, Pending, Resolved의 값을 가질 수 있다. Free는 새 항목에 사용될 수 있는 상태 값으로 이 항목에 있었던 데이터의 수명이 다했음을 의미한다. Pending은 이 항목에 대한 ARP request를 보냈지만 아직 응답을 기다리고 있음을 의미한다. Resolved는 ARP response가 도착하여 MAC 주소가 테이블에 저장되고 항목에 대한 처리가 완료되었음을 의미한다.
2. Hardware type, Protocol type, Hardware length, Protocol length
해당 필드는 ARP 패킷의 필드와 동일하다.
3. Interface number
라우터는 서로 다른 인터페이스를 사용하여 서로 다른 하드웨어 및 프로토콜 유형을 가진 다른 네트워크에 연결할 수 있다.
4. Queue number
번호가 매겨진 Queue를 사용하여 주소 확인을 기다리는 패킷을 대기열에 추가한다. 동일한 대상에 대한 패킷은 일반적으로 동일한 대기열에 추가된다. Queue number는 OS가 랜덤으로 지정해준다.
5. Attempt
Pending state의 항목이 ARP request를 통해 주소를 요청한 횟수가 표시되는 필드이다. 정해진 시도횟수를 초과한다면, 해당 항목은 폐기된다.
6. Time-out
각 항목의 수명을 초단위로 표시하는 데이터 유효시간을 나타내는 필드이다. Cache table을 업데이트할 때마다 감소한다.
7. Hardware address, Protocol address
MAC 주소와 IP 주소가 표시되는 필드이다. Hardware address 필드는 ARP response 메시지가 도착하여 처리될 때까지 비어있다.
Proxy ARP
프록시 ARP는 일련의 호스트를 대신하여 작동하는 ARP이다. 프록시 ARP를 실행하는 라우터가 ARP request를 수신할 때마다 라우터는 자신의 MAC 주소를 알리는 ARP response를 보냅니다. 그리고 라우터는 실제 IP 패킷을 수신한 후, 적절한 호스트나 라우터로 패킷을 전달한다.
위의 그림을 예로 들어보자. 오른쪽 호스트에 설치된 ARP는 목적지의 IP 주소가 141.23.56.23인 ARP request에만 응답한다. 하지만, 관리자는 같은 서브넷을 가진 다른 호스트도 추가해야했다. 이 경우, 프록시 ARP를 실행하는 라우터를 추가하여 라우터가 서브넷의 모든 호스트를 대신하여 작동하도록 구성할 수 있다. 서브넷에 포함되는 주소와 일치하는 ARP request를 수신하면 프록시 ARP 라우터는 본인의 MAC 주소를 ARP response 패킷에 실어 응답하고, 수신한 IP 패킷을 해당하는 호스트에게 전달한다.
ATM ARP
IP 패킷이 ATM WAN을 통해 이동할 때, LAN 환경의 ARP 프로토콜처럼 물리적 주소를 찾는 매커니즘을 가진 프로토콜이 필요하다. 하지만, LAN 환경의 ARP 프로토콜과는 다르게 동작한다. LAN은 브로드캐스트 네트워크 (데이터링크 계층) 이고 ATM 네트워크는 브로드캐스트 네트워크가 아니기 때문이다.
ATM ARP 패킷의 구조
1. Hardware type
물리적 네트워크의 유형을 정의하는 16bits 필드이다. ATM 네트워크의 경우, 값은 16진수 0013을 가진다.
2. Protocol type
프로토콜을 정의하는 16bits 필드이다. IPv4 프로토콜에 대한 해당 필드 값은 16진수 0800 값이다.
3. Sender Hardware length
송신자의 물리적 주소의 길이를 바이트 단위로 정의하는 8bits 필드이다. ATM 네트워크는 20의 값을 가진다. 주소 바인딩이 ATM 네트워크에서 수행되고 두 가지 수준의 하드웨어 주소 지정이 필요한 경우에 Reserved 필드가 두 번째 주소의 길이를 정의하는데 사용된다.
4. Operation
패킷의 유형을 정의하는 필드이다. 아래 표와 같이 5가지의 유형이 존재한다.
5. Sender protocol length
송신자의 논리적 주소의 길이를 바이트 단위로 정의하는 필드이다. 예를 들어, IPv4의 경우에는 4의 값을 가진다.
6. Target hardware length
목적지의 물리적 주소의 길이를 바이트 단위로 정의하는 필드이다. ATM 네트워크는 20의 값을 가진다. 주소 바인딩이 ATM 네트워크에서 수행되고 두 가지 수준의 하드웨어 주소 지정이 필요한 경우에 Reserved 필드가 두 번째 주소의 길이를 정의하는데 사용된다.
7. Target protocol length
목적지의 논리적 주소의 길이를 바이트 단위로 정의하는 필드이다. 예를 들어, IPv4의 경우에는 4의 값을 가진다.
8. Sender hardware address
송신자의 물리적 주소를 정의하는 가변 길이의 필드이다. ATM 네트워크의 경우에는 20 바이트의 길이를 가진다.
9. Sender protocol address
송신자의 논리적 주소를 정의하는 가변 길이의 필드이다. IPv4의 경우에는 4 바이트의 길이를 가진다.
10. Target hardware address
수신자의 물리적 주소를 정의하는 가변 길이의 필드이다. ATM 네트워크의 경우에는 20 바이트의 길이를 가진다. 이 필드는 request 메시지인 경우에는 비어있고 response 및 NACK 메시지인 경우 채워진다.
11. Target protocol address
수신자의 논리적 주소를 정의하는 가변 길이의 필드이다. IPv4의 경우에는 4 바이트의 길이를 가진다.
ATM ARP 동작 과정
ATM 망은 Connection-Oriented로 Connection Setup 연결 설정 - Data Transfer 데이터 송수신 - Tear down 연결해제의 3 단계를 거친다. ATM 네트워크에서 두 개의 라우터를 연결하는 방법으로는 PVC (Permanent Virtual Circuit), SVC (Switching Virtual Circuit) 의 2가지 방법이 있다. 그리고 ATM ARP는 ATM 네트워크의 연결 방법에 따라 달라진다.
1. PVC (Permanent Virtual Circuit)
영구 가상 회선 연결은 네트워크 공급자에 의해 두 끝 지점 사이에 설정된다. 양 끝단의 연결이 사전에 설정되어 전용 회선 효과를 가진다. PVC 연결은 별도의 ATM ARP 서버를 필요로 하지 않고 Inverse request, Inverse reply 패킷을 사용한다.
라우터에 대해 PVC 연결이 설정되면 라우터는 Inverse Request 메시지를 전송한다. 연결의 다른 끝에 위치한 라우터는 Inverse Request 메시지를 수신한 후, Inverse Reply 메시지를 응답으로 전송한다. 메시지 교환 후에 두 라우터는 물리적 주소를 PVC에 테이블 항목을 추가하여, 라우터가 IP 데이터그램을 수신하면 테이블이 제공하는 정보를 통해 데이터그램을 캡슐화할 수 있다.
2. SVC (Switching Virtual Circuit)
PVC와 달리 라우터가 다른 라우터와 연결을 원할 때마다 새로운 가상 회선을 설정해야 한다. 그러나 ATM 네트워크는 IP 주소를 인식할 수 없으므로 시작 라우터가 종료 라우터의 물리적 주소를 알고 있어야만 생성할 수 있다. 물리적 주소를 찾기 위해 각 라우터는 클라이언트 ATM ARP를 실행하고 단 1대의 ATM ARP 서버 컴퓨터가 서버 ATM ARP를 실행한다.
SVC 연결을 설정하는 과정으로는 서버 연결, 물리적 주소 수신, 연결 설정의 총 3 가지의 단계를 거쳐야 한다
1) Connecting to the Server
일반적으로 각 라우터와 서버 사이에는 PVC가 설정되어있지만, 없는 경우에는 ATM ARP request 및 reply 메시지 교환을 위한 SVC 연결을 생성하기 위해 라우터의 물리적 주소를 알아야 한다.
2) Receiving the Physical Address
시작 라우터와 서버 사이에 연결이 있다면 라우터는 서버에 ATM ARP request를 보낸다. 서버는 물리적 주소를 찾는다면 ATM ARP reply를 보내고 없다면 ATM ARP NACK을 보낸다. 시작 라우터가 NACK을 수신하면 해당 데이터그램은 삭제된다.
3) Establishing Virtual Circuits
시작 라우터는 종료 지점 라우터의 물리적 주소를 수신한 후 자신과 끝 라우터 간의 SVC 연결을 설정할 수 있다. ATM 네트워크는 시작 라우터가 연결 해제를 요청할 때까지 지속되는 가상 회선을 설정하기 위해 두 개의 물리적 주소를 사용한다. 해당 단계에서 네트워크 내부의 각 스위치는 테이블에 항목을 추가하여 IP 데이터그램을 전달하는 셀을 라우팅할 수 있도록 한다.
ATM ARP 테이블 생성
라우터가 처음으로 ATM 네트워크에 연결되고 라우터와 서버 간 PVC가 설정되면 서버는 Inverse request를 라우터에 전송한다. Inverse request를 수신한 라우터는 IP 주소와 물리적 주소를 포함하는 Inverse reply를 서버로 보낸다. 2가지의 주소를 사용하여 서버는 라우팅 테이블에 항목을 추가한다.
LIS (Logical IP Subnet)
대규모 LAN이 여러 서브넷으로 분할될 수 있는 것처럼 ATM 네트워크는 논리적인 하위 네트워크 분할될 수 있다. 이는 ATM ARP 및 기타 프로토콜의 작동을 용이하게 한다.
ATM 네트워크에 연결된 라우터는 하나이상의 논리적 서브넷에 속할 수 있다. 각각의 LIS는 독립적인 네트워크로 각 LIS마다 ATM ARP Server가 동작한다. 같은 LIS 내부의 단말기 간의 패킷 교환이 가능하고, 한 LIS에서 다른 LIS로 패킷을 교환하려는 경우 두 LIS에 모두 중복되는 단말기를 통해 전달할 수 있다.
공부하면서 정리한 내용을 글로 작성하였습니다.
혹시나 잘못된 내용이 있다면 댓글로 알려주시면 감사하겠습니다 :)
'Network > Network Theory' 카테고리의 다른 글
[Network / 네트워크] Ethernet 프로토콜 (0) | 2023.01.05 |
---|---|
[Network / 네트워크] 브로드캐스트 도메인, 충돌 도메인 (0) | 2023.01.04 |
[Network / 네트워크] IP (Internet Protocol) 프로토콜 (1) | 2022.12.30 |
[Network / 네트워크] Interface 운영 모드 (0) | 2022.12.30 |
[Network / 네트워크] Well-Known Port란? (0) | 2022.12.30 |