Ch 2. IPv4(3) - IP주소 관련 프로토콜
IP주소 관련 프로토콜
- 논리적인 차원의 데이터 전송은 IP주소를 통해 이루어지지만 실제 물리 계층에서의 전송은 물리 계층 주소를 통해서 이루어진다.
- 논리 주소(IP address)와 물리 주소(MAC address) 사이의 변환 프로토콜이 필요.
ARP(Address Resolution Protocol)
- 동일 네트워크에 존재하는 호스트에 대해 목적지의 IP주소에 해당하는 물리 주소를 찾는 프로토콜.
- ARP 메시지
- ARP 요청 메시지 (ARP Request) - 특정 IP 주소에 대한 물리 주소를 요구, 호스트는 ARP 요청 메시지를 보낼 때 수신측 물리 주소를 모르기 때문에 물리 계층 브로드캐스트로 전송
- ARP 응답 메시지 (ARP Response) - 물리 주소 정보를 알림, ARP 요청 메시지를 수신한 호스트/라우터는 자신의 물리 주소를 요구하는 경우 ARP 응답 메시지 전송.
- 특정 주소에게서 물리 주소를 받기 위해 호스트는 브로드캐스트로 ARP 요청 메시지를 전송하며, 이를 수신한 호스트는 자신의 IP주소와 같을 때, 자신의 물리 주소가 담긴 ARP 응답 메시지를 전송한다.
- 다른 서브넷에 위치하는 호스트의 MAC주소를 요청하는 경우, 라우터가 자신의 MAC 주소를 응답하여 라우터에서 데이터를 대신하여 받고 호스트에게 데이터를 전송한다(Proxy ARP).
ARP 패킷

- 하드웨어 타입 - 하드웨어 인터페이스 종류를 정의하는 부분, 이더넷에 대한 값은 1이다.
- 프로토콜 타입 - 상위 계층 프로토콜을 정의, IPv4의 경우 0x0800
- 하드웨어 길이 - 물리 주소의 길이, 이더넷은 6(bytes)
- 프로토콜 길이 - 논리 주소의 길이, IPv4는 4(bytes)
- 동작 모드(Operation) - ARP 요청은 1, ARP 응답은 2
- 송신측 하드웨어 주소 - 송신측 MAC주소
- 송신측 프로토콜 주소 - 송신측 IP주소
- 수신측 하드웨어 주소 - 수신측 MAC주소, ARP 요청 메시지는 0으로 설정된다.
- 수신측 프로토콜 주소 - 수신측 IP주소
ARP 캐시 (Cache)
- 동일한 호스트에 대해 패킷을 보낼 때 마다 물리 주소를 찾는 것은 비효율적이므로 캐시를 생성하여 IP 주소와 물리 주소 간의 바인딩을 유지한다.
- 일정 시간동안 사용되지 않은 엔트리는 자동으로 삭제됨.
그래튜퍼스(gratuitous) ARP
- 새로운 LAN카드 설치나 새로운 IP 주소 획득시 로컬 네트워크 상의 다른 호스트나 라우터에게 자신의 IP와 MAC 바인딩을 갱신해달라고 요청.
프록시(Proxy) ARP
- 라우터가 외부 네트워크에 존재하는 호스트의 ARP 요청에 대해서 자신의 하드웨어 주소로 응답.
ICMP(Internet Control Message Protocol)
- IP 패킷 전송의 오류에 관한 보고 기능과 네트워크 상태 진단 기능을 통해 IP를 보조하는 프로토콜
- ICMP 메시지
- 오류 보고 메시지: 라우터나 호스트에서 IP 패킷을 전달할 때 문제가 발생하였을 경우 사용
- 네트워크 진단 기능: 라우터나 네트워크 상태에 대한 정보를 얻고자 할 때 사용
- ICMP 패킷 포맷
- IP헤더의 프로토콜 필드 값을 1로 설정하여 캡슐화
- 메시지 타입 - ICMP 메시지 종류를 기술
- 코드 - 메시지 타입에 따라서 세분화할 필요가 있는 경우 사용
- 체크섬 - ICMP 메시지에 대해 체크섬을 계산하여 패킷의 오류를 검사
- 메시지 의존 - 메시지 타입에 따른 추가적인 헤더 정보가 포함
- 메시지 정보 - 메시지 타입에 따라 전달될 정보를 저장

목적지 도달 불가 메시지(Destination Unreachable Message)
- 패킷이 중도에 폐기될 때 사용되는 메시지
- 메시지 타입 필드 값은 3, 코드 필드에는 전송 실패 정보가 기록.
- 정보 필드에는 폐기되는 패킷의 헤더와 데이터의 상위 8바이트가 저장된다.
시간 초과 메시지 (Time Exceeded Message)
- 패킷이 목적지에 전달되기 전에 시간 초과로 폐기되는 경우 사용.
- 메시지 타입 필드 값은 11, 코드 필드에는 TTL 초과인 경우 0, 재결합 시간 초과인 경우에는 1이 설정된다.
- Traceroute명령에서 주로 사용됨.
파라미터 문제 메시지(Parameter Problem Message)
- 패킷 헤더 부분에 문제가 발생한 경우에 사용되는 메시지
- 메시지 타입 값은 12, 코드 필드에는 헤더 오류인 경우 0, 원하는 필드가 없는 경우 1을 사용.
- 메시지 의존 필드의 상위 8비트는 포인터로써 사용, 패킷 헤더의 어떤 부분에 문제가 발생하였는지 가르킨다.
송신 억제 메시지(Source Quench)
- 패킷 흐름을 위해 사용되는 메시지 (IP 프로토콜은 흐름제어 기능이 존재하지 않음)
- 과도한 패킷의 유입으로 라우터에서 패킷을 버려야 할 때 송신 호스트로 패킷의 폐기를 알리기 위해 사용.
- 메시지 타입 필드 값 4, 코드 필드 값 0 사용.
재지정 메시지(Redirection Message)
- 라우터가 호스트로부터 수신한 패킷의 송수신 주소를 확인하여 다른 라우터가 라우팅하는 것이 더 효율적이라고 판단되면 라우팅 경로를 변경하도록 재지정 메시지를 호스트로 전송한다.
- 라우터는 수신한 패킷을 폐기하지 않고 재지정된 라우터로 직접 전달.
- 메시지 타입 필드 값 5 사용, 코드 필드에는 재지정될 라우터 주소가 삽입된다.
- 메시지 의존 필드에는 새로운 라우터 주소가 지정되며, 메시지 정보 필드에는 패킷 헤더와 데이터의 상위 8바이트가 포함됨.
ICMP 메시지를 발생시키지 않는 패킷
- ICMP 메시지를 라우팅하거나 전달하는 경우 - ICMP를 포함한 IP datagram에 대해서는 ICMP를 발생시키지 않음.
- 브로드캐스트 혹은 멀티캐스트 패킷인 경우
- 분할된 패킷 중 첫 패킷이 아닌 경우
- 송신 주소가 특수한 IP주소(루프백 주소, 임의의 호스트)인 경우
ICMP 쿼리(Query) 메시지
- 네트워크 상황을 파악하기 위해 사용
- 기본적으로 ICMP 오류 메시지와 동일한 포맷을 사용하지만, 메시지 의존 필드를 식별자와 순서 번호 필드로 나누어 사용.
- 식별자와 순서 번호는 여러 개의 메시지를 보내는 경우 각각을 구분하기 위해 사용.
에코 요청/응답 메시지(Echo Request and Reply)
- 두 호스트 사이에 통신이 가능한지 검사할 때 사용되는 메시지
- 타입 필드 값은 요청인 경우 8, 응답인 경우 0, 코드 값은 0
- 응답 메시지 데이터 필드에는 요청 메시지의 데이터 필드 값이 그대로 복사됨.
- Ping 명령어를 통해 에코 메시지를 사용할 수 있다.
타임스탬프 요청/응답 메시지(Timestamp Request and Reply)
- 패킷 전송 시간 측정 메시지
- 메시지 타입 필드는 요청인 경우 13, 응답인 경우 14, 코드 필드 값은 모두 0이다.
- 데이터 필드
- 출발 시간(Original timestamp): 송신할 때의 시간
- 도착 시간(Receive timestamp): 수신할 떄의 시간
- 전송 시간(Transmit timestamp): 수신 호스트에서 응답 메시지를 전송할 때의 시간
- 측정 시간들은 세계 표준시(Universal time)를 숫자값으로 표현한다.(동기화되지 않은 경우, 시간 값을 절대적으로 신뢰할 수 없음)
주소 마스크 요청/응답 메시지(Address Mask Request and Reply)
- 호스트가 서브넷 마스크 값을 얻을 때 사용하는 메시지
- 라우터에서 응답 메시지를 전송한다.
- 타입 필드 값은 요청인 경우 17, 응답인 경우 18을 사용, 코드 필드 값은 모두 0.
- 응답 메시지의 데이터 필드에는 서브넷 마스크 값이 포함됨.
라우터 요청, 광고 메시지(Router Solicitation and Advertisement)
- 호스트가 네트워크 정보를 알고 싶을 때 사용하는 메시지
- 라우터는 라우팅 정보를 포함한 라우터 광고 메시지를 방송
- 라우터는 동일 네트워크에 존재하는 모든 라우터에 대한 정보도 함께 전송.
- 라우터마다 우선값을 주어 호스트가 디폴트 라우터를 자동으로 설정할 수 있게 한다.
출처: 정진욱, 김현철 공저. “TCP/IP와 인터넷”, pp 50-57. 2004. (주)생능출판사