제 4장 주소변환 프로토콜 (ARP : Address Resolution Protocol) TCP/IP 통신망 특론 제 4장 주소변환 프로토콜 (ARP : Address Resolution Protocol) 시스템소프트웨어공학 실험실 석사 2학기 백 진 주
목 차 4.1 ARP의 개요 4.2 예제 : ftp 호스트명을 입력했을 때 ARP동작 4.3 ARP 캐시 목 차 4.1 ARP의 개요 4.2 예제 : ftp 호스트명을 입력했을 때 ARP동작 4.3 ARP 캐시 4.4 ARP 패킷 형식 4.5 ARP 예 4.6 프럭시 ARP 4.7 근거 없는(Gratuitous) ARP 4.8 ARP 명령어 4.9 요약
4.1 ARP개 요 (Address Resolution Protocol) 32bit IP 주소: TCP/IP 프로토콜 그룹에서만 동작 물리적 하드웨어 주소 : 독자적 주소 체계 데이터 전송시 목적지 하드웨어 주소를 알아야 함 ARP 기능 IP주소를 대응하는 물리적 하드웨어 주소로 자동적으로 변환하는 보조적 프로토콜 IP데이터 그램을 정확한 목적지 호스트로 보냄 여러가지 형태의 물리적 하드웨어 주소를 처리 점대점 접속은 ARP를 사용 안함
4.1 ARP개 요 (cont’d) 32-비트 인터넷 주소 ARP RARP 48-비트 이더넷 주소
4.2 예제 ARP의 전제와 기본 개념 전제 이더넷 브로드캐스트 네트워크를 전제로 함 기본 개념 4.2 예제 ARP의 전제와 기본 개념 전제 이더넷 브로드캐스트 네트워크를 전제로 함 기본 개념 네트워크 인터페이스가 하드웨어 주소를 갖음
4.2 예제(cont’d) 호스트 A에서 호스트 B의 물리적 하드웨어 주소를 판단 호스트 A의 실행 ARP는 호스트 B의 IP주소를 포함한 ARP요구 패킷을 LAN에 방송 LAN상의 모든 호스트의 ARP는 ARP 요구 패킷 수신 호스트 B의 ARP 패킷에서 자신의 IP주소 인지 송신한 호스트 A에게 호스트 B의 물리적 하드웨어 주소와 ARP응답 패킷으로 응답 호스트 A에서 ARP 응답 패킷 수신 호스트 B의 IP주소와 물리적 하드웨어 주소의 매핑을 ARP 캐시에 저장 호스트 A에서 호스트 B의 물리적 하드웨어 주소를 새로운 캐쉬 엔트리에 있는 정보 이용 & IP 데이타그램을 B로 직접 전달
4.2 예(cont’d) FTP TCP IP ARP Ethernet Driver Ethernet Driver Host이름 4.2 예(cont’d) % ftp bsdi를 입력 Host이름 Resolver FTP IP 주소 IP 주소로 연결설정 TCP IP 데이터그램을 IP 주소로 보냄 IP ARP Ethernet Driver ARP Request (Ethernet Broad Cast) Ethernet Driver Ethernet Driver ARP Reply (IP주소와 하드웨어 주소) ARP ARP IP ftp 호스트 명을 입력 했을 때 ARP동작 TCP
4.3 ARP 캐시 각 호스트는 매번 ARP를 실행하지 않고 ARP 캐시에 물리적 주소 임시저장 인터넷 주소로부터 하드웨어 주소로 최신 정보 유지, 관리 정상적인 엔트리 종료 시간 : 엔트리가 만들어진 20분 후 ARP 캐시 명령어 arp(8)에서 -a 옵션을 사용함 48비트 이더넷 주소는 콜론(:)으로 구분된 6개의 16 진수로 표시
4.4 ARP 패킷 형식 이더넷 목적지 주소 이더넷 발신지 주소 프레임 유형 6 6 2 이더넷 해더 ARP 다른 네트워크와 이용과 IP주소 이외의 다른 주소도 해결 이더넷 헤더 : 14바이트 (6+6+2) 이더넷 목적지 주소 모든 비트가 1인 주소 : 브로트캐스트 이더넷 프레임 유형 LAN상의 호스트간의 데이터 전송시 목적지 인터페이스를 결정 ARP 요구/응답 : 0x0806
4.4 ARP 패킷 형식 2 2 1 1 2 6 4 6 4 Hard 유형 Prot op 송신자 이더넷 주소 IP 타겟 2 2 1 1 2 6 4 6 4 Hard 유형 Prot op 송신자 이더넷 주소 IP 타겟 Prot 길이 hard 길이 28 바이트 ARP 요구/응답 Hard와 Prot의 유형과 길이 : 다음 4개 필드의 유형과 길이 지정 OP : ARP와 RARP의 요구와 응답을 구분(14) 송신자와 타겟의 이더넷과 IP 주소 이더넷 헤더 부분과 송신자 하드웨어 주소와 중복 주의
4.5 ARP 예 일반적인 예 tcpdump 출력 1 0.0 0:0:c0:6f:2d:40 ff:ff:ff:ff:ff:ff arp 60: arp who-has svr4 tell bsdi 2 0.002174 (0.0022) 0:0:c0:c2:9b:26 0:0:c0:6f:2d:40 arp 60: arp reply svr4 is-at 0:0:c0:c2:9b:26 3 0.002831 (0.0007) 0:0:c0:6f:2d:40 0:0:c0:c2:9b:26 ip 60: dsdi.1030 > svr.discard: s 596459521:596459521 (0) win 4096 <mss 1024> [tos 0x10] 4 0.007834 (0.0050) 0:0:c0:9b:26 0:0:c0:6f:2d:40 ip 60: svr.discard > dsdi.1030: s 3562228225:3562228225 (0) ack 596459522 win 4096 <miss 1024> 5 0.009615 (0.0018) 0:0:c0:6f:2d:40 0:0:c0:c2:9b:26 ip 60: bsdi.1030 > svr4.discard: . Ack 1 win 4096 [tos 0x10] bsdi % arp -a bsdi % telnet svr4 discard Trying 140.252.13.34… Connected to svr4. Escape character is `^]` . ^] Telnet> quit Connection closed.
IEEE 802.2/802.3 캡슐화(RFC 1042)와 이더넷 캡슐화(RFC 894) 참고 (그림2.1) IEEE 802.2/802.3 캡슐화(RFC 1042)와 이더넷 캡슐화(RFC 894) 6 2 1 3 38-1492 4 dest addr leng DSAP AA SSAP cntl 03 org code 00 type CRC data src 802.3 MAC 802.2 LLC 802.2 SNAP IEEE 802.2/802.3 Encapsulation(RFC 1042) 0800 IP datagram 28 0806 ARP request/reply 10 PAD 0835 RARP request/reply 46-1500 Ethernet Encapsulation (RFC 894) 46-1500 bytes type IP datagram 0800 2 46-1500 type ARP request/reply PAD 0806 2 28 18 type RARP request/reply PAD 0835 2 28 18
4.5 ARP 예 (cont’d) 존재하지 않는 호스트로의 ARP 요구 tcpdump 출력 Bsdi % date; telnet 140.252.13.36; date Sat Jan 30 06:46:33 MST 1993 Trying 140.252.13.34 . . . Telnet : Unable to connect to remote host: Connection time out Sat Jan 30 06:47:49 MST 1993 bsdi % arp -a ? (140.252.13.36) at (incomplete) tcpdump 출력 1 0.0 arp who-has 140.252.13.36 tell bsdi 2 5.509.069 ( 5.5091) arp who-has 140.252.13.36 tell bsdi 3 29.509745 (24.0007) arp who-has 140.252.13.36 tell bsdi
4.5 ARP 예 (cont’d) ARP 캐시 타임아웃 각 호스트는 매번 ARP를 실행하지 않고 ARP 캐시에 물리적인 주소를 임시저장 완전 엔트리 : 20분후 종료 불완전 엔트리: 3분후 종료 엔트리가 참조될 때마다 타임아웃 재시작
4.6 프럭시 ARP 무차별 ARP 또는 ARP hack gemini % arp -a netb (140.252.1.183) at 0:80:ad:3:6a:80 sun (140.252.1.29) at 0:80:ad:3:6a:80 무차별 ARP 또는 ARP hack 라우터가 프럭시 ARP대행자로 동작하여 같은 네트워크 ID의 물리 네트워크 분리 새로운 TCP/IP 네트워크의 분리를 위해 과거에 구식 TCP/IP 구현 호스트 숨김 서브넷을 처리할수 없음 오래된 형식의 브로드캐스트 주소를 사용
gemini netb SLIP (dialup) slip bsdi sun svr4 ARP request for 140.252.1.29 ARP reply Ethernet,subnet 140,252,1 140.252.1.183 netb Telebit NetBlazer router configured to act as proxy ARP agent for sun modem SLIP (dialup) modem 140.252.1.29 SLIP slip bsdi sun svr4 .65 .66 .35 .33 .34 Ethernet 140.252.13
4.7 근거없는 ARP 호스트의 초기 가동 환경 설정시 네트워크 인터페이스가 설정 될때 수행됨( 자신의 IP 주소를 찾는 ARP 요구를 보냄) 1 0.0 0:0:c0:6f:2d:40 ff:ff:ff:ff:ff:ff arp 60: arp who-has 140.252.13.35 tell 140.252.13.35 다른 호스트가 자신의 주소와 똑같은 IP주소를 사용하는지를 체크할 수 있음
4.7 근거없는 ARP (cont’d) 특징 1. 호스트에서 다른 호스트가 IP주소를 이용 여부 판단 응답을 기대할 수 없음 2. 근거없는 ARP를 호스트가 자신의 하드웨어 주소 변경 응답시 나타나는 메세지 “duplicate IP address sent from 이더넷 address: a:b:c:d:e:f” 호스트의 과거의 하드웨어 주소 캐시에 엔트리를 갖는 케이블 상의 호스트에 대해서 ARP를 자동적으로 갱신
4.7 근거없는 ARP (cont’d) 백업 파일 서버가 다운된 서버의 역할을 대신하도록 할 수 있음 어떤 호스트가 캐시 안에 존재하는 IP주소로부터 ARP 요구를 받음 캐시 엔트리는 송신자 하드웨어 주소에 따라 갱신됨 백업 파일 서버가 다운된 서버의 역할을 대신하도록 할 수 있음 백업 서버가 자신의 하드웨어 주소와 다운된 서버의 IP 주소로 근거 없는 ARP 요구 다운된 서버로 보내질 패킷이 모두 백업 서버로 가도록 함
4.8 ARP 명령어 ARP - a : 모든 엔트리를 보임 ARP - d : 엔티티의 삭제 ARP - s : 엔트리 추가 temp : 캐시로부터 타임 아웃 pub : ARP 대행자 기능 Bsdi % arp -a sun (140.252.13.33) at 8:0:20:3:f6:42 svr4 (140.252.13.34) at 0:0:c0:c2:9b:26
4.9 요약 ARP (Address Resolution Protocol ) 응용이나 시스템 관리자에게 인식되지 않은 체 동작 ARP캐시 프럭시 ARP 근거없는 ARP ARP 운영의 기본 캐시를 검사하여 조작 조작하기 위해 arp 명령어 사용 캐시의 엔트리를 나타내고 수정 타임머를 가지고 있음