TCP/IP CHAPTER 8

ARP / RARP

주소결정 프로토콜

물리적 네트워크에서 IP 데이터 그램을 실제로 전송하려면 IP 데이터그램을 데이터 링크 계층 프레임으로 캡술화 해야 한다. 이더넷이나 토큰링 과 같은 데이터 링크계층 프레임의 일부로 하드웨어 주소를 요구한다. 이장은 하드웨어 주소와 IP 주소를 연계시키기 위해 TCP/IP 네트워크에 사용되는 기법을 설명하낟. 하드웨어 주소와 IP 주소를 연계시키는 데 필요한 프로토콜을 주소결정 프로토콜(ARP)이라한다.

주속결정을 필요성

이더넷이나 토큰링에서와 같이 동보 전송 기능을 가진 네트워크에서 호스트에 메시지를 송신하려면, 송신자의 목적지 호스트의 하드웨어 주소를 알아야 한다. 매체접근제어(MAC)주소라고도 불리는 하드웨어 주소는 메시지를 보내는 데 사용되는 패킷의 MAC 헤더에 필요하다. 호스트 소프트웨어는운나테이블 찾아보기 (LOOKUP)를 사용하여 목적지의 IP주소를 알아낸다. 목적지 호스트의 하드웨어 주소를 경정할 때의 문제점을 해결하기 위해서는 호스트 파일 테이블과 비슷한 IP 주소와 MAC 주소의 연계표를 사용하는 것이다.

주소결정 프로토콜

호스트 A에서 ARP 요청 프레임이라는 MAC 동보 전송 프레임을 보낸다. ARP 요청 프레임은 송신자 호스트 A의 IP 주소와 MAC 주소 및 목적지 B의 IP주소를 포함하고 있다. ARP 요청 프레임은 목적지 B의 하드웨어 주소에 대한 자리 표시 필드를 가지고 있다. 물리적 네트워크의 모든 노드는 동보 전송 ARP 요청 프레임을 수신한다. 동보 전송 프레임을 수신하는 모든 다른 노드는 그 IP 주소를 ARP 요청의 IP 주소와 비교한다.  이때 요청 프레임에 요청한 것과 같은 IP 주소를 가진 호스트만이 응답한다.

호스트 B는 ARP 응답 프레임으로 기호화한 하드웨어 주소로 응답한다.

호스트 A는 응답에 호함된 대답으로 ARP 캐시 테이블(RAMDP 보관됨)을 초기화한다.

APR 캐시시간종요는 15분 이다. ARP 캐시항목이 특정 호스트에 대해 시간종료하고 나면, 호스트의 하드웨어 주소를 발견하기 위해 ARP 요처 프레임을 다시 보낸다. 호스트는 ARP 요청을 보내기 전에 ARP 캐시를 참조한다. 발견되면 호스트는 ARP 요청을 생성하지 않는다.

ARP 용청은 대상 하드웨어 주소를 모르기 때문에 동보전송 주소와 함께 보내진다. 대상노드가 보내는 ARP 응답은 동보전송 프레임이 아니다. 그것은 APR 요청하는 프레임에 송신자 하드웨어 주소를 같이 보내기 때문이다.

ARP 형식

하드웨어 종류	프로토콜종류(16)	HLen 하드웨어 길이 주소	PLen(8) 프로토콜 주소길이	작둉(16)	송신자HA (48)	송신자IP주소(32)	대상HA (48)	대상 IP주소 (32)

ARP 패킷형식

이더넷 프레임에 캡술화된 ARP 패킷

하드웨어종류2	프로토콜종류2	HLen 1	PLen 1	작동 2	송신자HA 6	송신자IP 4	대상HA 6	대사IP 4

목적지주소 6	출발지주소 6	EtherType806(16진) 2	ARP	CRC 4

하드웨어 종류 필드는 ARP 패킷으 첫 번째 필드이다.

하드웨어 종류 필드의 값은 HLen 필드의 설정을 제어한다.

하드웨어 종류필드 값이 1이면 이더넷 네트워크를 의미한다.

하드웨어 종류값	네크워크 설명	하드웨어 종류값	네크워크 설명
1	이더넷(10M)	11	LocalTalk
2	실험적 이더넷(3M)	12	LocalNet
3	아마추어 무선 AX.25	13	Ultra 링크
4	Proteon ProNet 토큰링	14	SMDS
5	Chaos Net	15	프레임 릴레이
6	IEEE 802 네트워크	16	비동기 전송모드 (ATM)
7	ARCNET	17	HDLC
8	Hyperchannel	18	광성유 채널
9	Lanstar	19	비동기전송모드(ATM)
10	Autonet 단축주소	20	직력회선

다음은 ARP 하드웨어 종류의 값으로 할당된 코드를 나타낸다.

프로토콜 죵류는 해당 하드웨어 주소로 바람직하게 제공되는 상위 계층 프로토콜 주소이다. 이필드의 길이는2옥텟

HLen 필드는 송신자 HA 와 목적지 HA 필드의 크기를 경정한다. 이더넷인 경우 이들 필드는 8옥텟

PLen 의 값은 프로토콜 종류 필드의 값으로 제어된다. 16진수로 800이면, 그것은IP주소가 4옥텟인 IP프로토콜이다

작동필드는 길이다 2옥텟이며 arp 요청을 가지고 있는지 또는 arp 응답을 가지고 있는지를 나타낸다.

작동필드값	작동유형
1	ARP 요청
2	ARP 응답
3	RARP 요청
4	RARP 응답
5	DRARP 요청
6	DRARP 응답
7	DRARP 오류
8	InARP 요청
9	InARP 응답
10	ARP-NAK

ARP 패킷의 작동값

송신자 HA 필드는 요청을 보낸 하드웨어 주소를 포함하고 있다.하드웨어 기판에서 주소를 읽는다.

송신자 IP 주소는 ARP 요청을 보내는 노드의 IP주소를 포함하고 있다. 송신자는 IP 주소를 네트워크 구성 정보가 들어있는 구성 파일 또는 메모리 캐시에서 일고 알아낸다.

대상 HA 주소는 대상 하드웨어 주소이다.이필드는 ARP 요청 송신자는 모르고 있다. 대개 모두 0이거나 1이다.(동보전송)

#ARP 요청 패킷

@데이터 링크 출발지 HA, ARP 요청 송신자의 네트워크 기판에서 읽는다.

@데이터 링크 목적지 HA. 동보 전송 대게 1이다.

#ARP 응답 패킷

@데이터 링크 출발지 HA. ARP 응답을 생성하는 대상 노드의 네트워크 기판에서 읽는값

@데이터 링크 목적지 HA. ARP 요청의 송신자 HA 필드에서 읽은값.

ARP 작동

송신자 호스트는 목적지가 지역 네트워크에 있는 것으로 판단되면 목적지의 하드웨어 주소를 알아야 한다.

목적지가 원격 네트워크에 있다면, 송신자는 IP 데이터 그램을 발송할 라우터 포트의 하드 웨어 주소를 알아야 한다.

동보전송 네트워크에서느 ARP를 사용하여 대상노드의 하드웨어 주소를 알아낸다. 여기서 말하는 대상노드는 지역 네트워크의 노드 또는 지역네트워크라우터 포트이다.

ARP 모듈은 ARP  요청을 보내기 전에 그 지역 캐시에서 대상주소를 알아내려고 한다. ARP 캐시 테이블은 IP 주소와 해당 하드웨어 주소의 항목 쌍들을 간직하고 있다.

ARP 캐시테이블에서 대상 IP 주소가 발견되면, 해당 하드웨어 주소를 조사하고 그것을 ARP 묘듈에 되돌려 준다. ARP 모듈은 요청을 한 네트워크드라이버에 하드웨어 주소를 되돌려 주어서 대상노드의 하드웨어 주소를 알아낸다.

이때 네트워크 드라이버는  대상 노드의 하드웨어 주소와 IP 데이터 그램이 들어있는 데이터 링크 계층 프레임을 송신한다. 방금 말한 시나리오에서는 대상 노드의 하드웨어 주소가 지역 캐시에서 발견되므로 ARP 요청은 결코 생성되지 않는다.

ARP 캐시 테이블 형태

ARP 캐시에 대상노드의 하드웨어 주소가 없으면 어떻게 될까? 그러한 경우에는 ARP 모듈이 ARP 요청이 들어있는 데이터 링크 계층 프레임을 생성하여 대상 노드의 하드웨어 주소를 알아낸다. ARP 요청은 데이터링크 계층에서 지역 네트워크 세그먼트의 모든 노드에 동보 전송된다. 앞에 서도 말했듯이 ARP 요청 응답은 지역 네트워크 세그먼트로 제한되어 있으며 라우터 경계를 넘어서지 않는다.

ARP 용청이 수신되면, 대상노드의 데이터 링크 계층은 그 패킷을 주소결정 모듈에 제공한다. ARP 요청은 데이터 계층에서 동보 전송되므로 지역 네트워크의 모든 노드가 그것을 받는다. 그러나 그 IP 주소가 대상 IP 주소에 해당하는 노드만이 ARP 응답에 반응한다.

프로포콜 종류	프로토콜 주소	하드웨어 주소	인터페이스 번호	타임 스템프

ARP 요청에서 ARP 캐시 테이블이 수정되는 방법은 송신 IP 주소의 항목이 있는 노드의 ARP 캐시 테이블만이 수정된다는 데 유의한다.

대상 노드의 ARP 캐시 테이블에 이미 쌍의 항목이 있으면 이전 주소가 새하드웨어 주소로 바뀐다는 데에도 유의한다. 이것은 다음과 같은 상황에서만 일어난다.

1.ARP 요청 송신자쪽에서 새 네트워크 하드웨어가 추가되어 기존의 것을 바꾼 경우.

2.IP 주소를 다시 할당한 경우

3.중복된 주소가 있는경우

ARP 패킷 수신의 흐름도

중복주소와 ARP

네트워크의 IP 주소는 고유의 것이어야 한다. 이 고유성을 보장하는 방법은 적절한 자료와 IP 주소 지정을 통해서 가능하다.

IP 주소를 지정하는 데이ㅔ는 사람이 과계되므로실수로 네트워크에 같은 IP 주소를 가진 노드를 지정할 수 있다. 이런 일이 발생하면 혼란과 혼동이 밠행한다.

네트워크용 응용프로그램들은 간할적으로 또는 가끔씩 작업을 멈추게한다.

#TCP/IP 클라이너트에서의 중복 IP 주소

TCP/IP 서버:IP=144.19.74.102  HA:080020021545

TCP/IP 클~트1=IP:144.19.74.1  HA:0000C008512

TCP/IP 클~트2=IP:144.19.74.1  HA:0000C0075106

위와 같이 클라이언트 1과 클라이언트2은 같은 IP 주소르 가지고 있고 , 서버와 FTP 세션을 시작한다고 하자. FTP 세션이 지작되었으므로 클라이언트 1은 TCP/IP 서버의 하드웨어 주소를 알아내기위해 ARP 동보전송을 요청을 낸다. TCP/IP 서버는 그 ARP 요청을 받을 때 자체의 ARP 캐시 테이블에 ARP 요청 송신자의 항목을 추가하고 송신자에게 ARP 응답을 보낸다. 클라이언트 1의ARP 응답을 받을 때 자체의 지역 ARP 캐시 테이블에 TCP/IP 서버의 항목을 추가한다. 캐시 테이블은 다음과 같다.

서버의 ARP 캐시 테이블		클라이언트 1의 캐시 테이블
IP 주소	HA 주소	IP 주소	HA 주소
144.19.74.1	0000C0085121	144.19.74.102	080020021545

이때 클라이언트 2가 같은 TCP/IP 서버에게 FTP 세션을 설정하려 한다. 클라이언트 2는 연결을 하기 전에 TCP/IP 서버의 하드웨어 주소를 알아내야 한다. 그래서 ARP 요청을 송신하여 바로 그일 하려고 한다.  TCP./IP 서버는 ARP 요청을 수신할 때 자체의 ARP 캐시 테이블에 ARP 용청 송신자의 항목을 추가하고 송신자에게 ARP 응답을 보내려고 한다. TCP/IP 서버는 자체의 ARP 캐시 테이블에 144.19.74.1 의 항목이 이미 있음을 발견한다. 주소결정 프로토콜에 관한 RFC 826 에따라. TCP/IP 서버는 기존 항목을 새것으로 바꾸어야 한다.

다음과 같이 케시테이블이 갱신된다.

서버의 ARP 캐시 테이블		클라이언트 2의 캐시 테이블
IP 주소	HA 주소	IP 주소	HA 주소
144.19.74.1	0000C0075106	144.19.74.102	080020021545

이때 서버가 클라이언트 1에게 데이터을 보내려고 할 때 자체의 캐시테이블에서 클라이언트 1의 IP 주소를 검색하여

해당 HA 주소를 알아낸다. 그런데 불행이도 이 HA주소는 클라이언트 2의 주소이므로 엉뚱한 곳으로 데이터가 전송하게 된다. 이때 클라이언트 1은 예상한 데이터가 오지않으므로 계속 서버에 데이터 용청을 하지만 서버는 계속에서 클라이언트 2에게 데이터를 전송하게 되고 클라이언트1은 응답을 기다리다가 정지하게 된다.

#TCP/IP 서버에서의 IP 중복

만약 서버1과 서버2에 같은 IP주소 :144.19.74.102 의 주소를 가지고 있고 섭의하드 웨어 주소는 각각 080020021545

, AA0004126750 이라고 하자.

IP 주소가 203.252.232.220 인 클리이언트는 144.19.74.102 의 TCP/IP 서버를 액서스 하려고 한다. 크라이언트의 하드웨주소는 0000C0085125이다.

서버 2에 연결하려고 하기 위하여 클라이언트 는 동보전송용청을 내서 TCP/IP 서버의 하드웨어 주소를 알아내려고 한다. 그런데 같은 대상 IP 주소인 144.19.74.102 에 두 TCP/IP 서버가 있다. 서버 1과 서버2 모두 ARP 요청을 받으면 자체의 지역 ARP 캐시 테이블에 ARP 요청 송신자의 항목을 추가하고 송신자에게 ARP 응답을보낸다. 이때 네트워크에 보내진 응답은 2개가 있다. 워크스테이션은 처번째 ARP 응답을 받아들이고  두 번 째 응답은 무시한다. 서버1의 ARP 응답이 클라이언트에 도착하면 먼저 도착 한 서버1과 계속해서 대화 한다. 만약 TELNET 접속을 한 경우

서버2에 로그인을 해야하는 경우인데 위와 같이 서버1에 먼저 접속한다면 성공적인 TENNET 접속을 할수 없을 것이다.

ARP 프로토콜 자취

프로토콜 분석기느 sspxmdnjzm 통신량을 알아내느 sep 사용할 수 있는 장치이다. 이렇게 알아내는 데 사용할 수 있는 장치이다. 이렇게 알아낸 통신량을 프로토콜 자취라 한다.

ARP 패킷 교환 요약

번호	출발지	목적지	계층	크기	요약
1	0000C024282D	FFFFFFFFFFFF	ARP	0064	144.19.74.44가 144.19.74요청
2	0000C024282D	FFFFFFFFFFFF	ARP	0064	144.19.74.44가 144.19.74를 요청
3	0000C0A2OF8E	0000CO24282D	ARP	0064	144.19.74.201 =0000C0A20F8E로 응답

패킷 1 은 144.19.74.44가인 스테이션이 부트할때보낸 초기 ARP 동보 정송 요청이다.

패킷 2 은 지정된 대상 IP 주소의 ARP 요청이다.

패킷 3 은 해당 ARP 응답이다.

역주소 결정(RARP)

앞에서 본 ARP 사용 예에서느 SSHEM가 자체의 주소를 알고 있는 것으로 가정했다. 노드는 어떻게 새서 자체의 IP 주소를 알 수 있을 까?  노드는 자체의 지역 저장소에서 RM IP 주소르 FDKFDKQHF 수 있다. 여기서 말하는 자체 저장소는 그이름과  위치가 TCP/IP 구현이나 운영 체제에 따라 달라지는 파일이다. 그러나 지역 저장소르 F가지고 있지 않은 컴퓨터가 있다. 그러한 커퓨투는 모든 시스템 정보를 원격 서버에 보관한다. 이러한 컴퓨터를 디스크 없느 스테이션이라 한다.

RARP 작동

RARP 작동에서, 자체의 IP 주소를 알고 자 하는 노드(RARP 클리이언트)는 RARP 요청이라는 요청을 동보 전송한다. RARP 클라이언트는 원격 서버의 주소를 모르므로 RARP 요청은 데이터 링크 계층에서 동보 전송된다. RARP 요청을 처리하는 원격 서버를 RARP 서버라 한다. 네트워크 세그먼트의 모든 노드는 RARP 요청 동보 전송을 받지만 RARP 서버 역할을 하는 노드만이 응답한다.

RARP 서버는 네트워크 세그먼ㄷ트의 노드에 대한 IP 주소의 테이블을 유지한다. 이 테이블은 각 기계전용의 고유 식별자로 색인화 되어있다. 이 고유 식별자는 쉽게 읽을 수 있느 SAUCAUC 하드웨어 전용 매개변수이어야 한다.

RARP 서버느 SRARP 요청을 받을 때 IP 주소와 하드웨어 주소 바인디에 관한 자체의 테이블을 참조한다.  일치하는 항목이 테이블에 있으면 요청 클라이언트에 해당 IP 주소를 보내준다.

#RARP 요청

@데이터 링크 목적지 하드웨어 주소

@데이터 링크 출발지 하드웨어 주소

@데이터 링크 Ethertype=8025 16진

@작동=3(RARP요청)

@송신자 HA=RARP 클라이언트 HA

@송신자 IP=정의 되어있지 않음 대개 0.0.0.0을 사용함.

@대상 HA=RARP 클라이언트 HA

@대상 IP=정의 되어 있지 않음

#RARP 응답

@데이터 링크 목적지 하드웨어 주소=RARP 클라이언트 HA

@데이터 링크 출발지 하드웨어 주소=RARP 서버 HA

@데이터 링크 Ethertype=8025 16진

@작동=4(RARP 응답)

@송신자 HA=RARP 서버 HA

@송신자 IP =RARP 서버 IP주소

@대상 HA=RARP 클라이언트 HA주소

@대상 IP =RARP 클라이언트 IP 주소(이것이 대답이다)