IP프로토콜은 응용 계층에서 생성된 사용자 데이터를 전송하기 위해 사용된다. 인터넷 환경에서 데이터 전송 과정이 올바르게 이루어지려면 전송 프로토콜 외에도 다양한 제어 프로토콜이 필요하다.
제어 프로토콜의 대표적인 예는 데이터 전송 과정에서 오류를 제거하는 ICMP이다. 인터넷에서 사용자 데이터는 IP프로토콜에 의해 전송되지만, 제어 메시지는 ICMP에 의해 전송된다. 이외에도 IP주소와 MAC 주소 사이의 변환을 담당하는 ARP/RARP 제어 프로토콜이 있으며, 모두 인터넷 동작을 위해 꼭 필요하다.
ARP 프로토콜
네트워크 환경에서 임의의 호스트가 다른 호스트에 데이터를 전송하려면 수신 호스트의 IP주소 뿐 아니라, MAC 주소도 알아야 한다. 수신 호스트의 IP주소는 보통 응용 프로그램 사용자가 프로그램을 실행하는 과정에서 직접 입력하므로, IP주소로부터 수신 호스트의 MAC 주소를 얻는 작업이 추가로 필요하다.
MAC 주소
IP 프로토콜 헤더에서 필요한 송수신 호스트의 IP주소와 함께 MAC 계층에서도 송수신 호스트의 MAC 주소가 필요하다. 송수신 호스트의 IP주소는 자신의 파일 시스템에 보관되어 있으므로 손쉽게 구할 수 있다. 또한 수신 호스트의 IP주소는 일반 사용자가 접속하고자 하는 호스트의 IP주소를 지정해준다. 사용자는 일반적으로 도메인 이름을 입력하는데, 도메인 이름은 DNS 서비스를 통해 IP 주소로 쉽게 변환할 수 있다.
MAC 주소의 경우를 살펴보면 송신 호스트의 MAC 주소는 자신의 LAN 카드에 내장되므로 이 값을 읽으면 된다. 문제는 수신 호스트의 MAC 주소이다. 송신 호스트의 내부정부로는 얻을 수 없기에, 수신 호스트의 IP주소를 매개변수로 하여 ARP 기능을 통해 수신 호스트의 MAC 주소를 얻어야 한다.
데이터를 전송할 때마다 ARP를 사용하여 패킷을 브로드캐스팅하면 네트워크 트래픽이 증가한다. 따라서 ARP를 사용하는 호스트는 가장 최근에 얻은 IP주소와 MAC 주소 매핑 값을 보관하는 캐시 정보를 이용한다. 또한 송신 호스트가 ARP request/reply 패킷을 처리하는 과정에서 패킷을 수신한 모든 호스트는 수신 호스트의 IP주소와 MAC 주소 매핑 값을 자동으로 얻을 수 있다. 이와 같은 방식으로 ARP 트래픽에 의한 네트워크 부하를 최소화할 수 있다.
RARP 프로토콜의 필요성
ARP는 IP주소를 이용해 해당 호스트의 MAC 주소를 제공하는 역할을 한다. 이와 유사한 기능을 수행하는 프로토콜인 RARP는 반대로 MAC 주소를 이용해 IP 주소를 제공한다.
디스크가 존재하지 않는 시스템이나 윈도우 터미널 등에서는 자신의 LAN 카드 정보를 읽어 MAC 주소를 얻을 수 있지만, 파일 시스템이 없으므로 IP주소를 보관할 방법이 없다. 이런 경우 자신의 MAC 주소와 IP 주소의 매핑 값을 보관하는 서버 호스트로부터 IP주소를 얻어야 한다.
파일 시스템이 없는 호스트는 자신의 IP주소를 보관할 방법이 없다. 따라서 LAN 카드에 내장된 MAC 주소를 매개변수로 하여 RARP 기능을 수행함으로써 자신의 IP주소를 얻어야 한다.
IP주소를 얻고자 하는 호스트는 MAC 주소를 매개변수로 하여 패킷을 브로드캐스팅 한다. 보통 네트워크에는 RARP의 기능을 전담으로 수행하는 서버가 하나 이상 존재한다. 따라서 모든 호스트가 RARP 변환 요청을 받아도 해당 정보를 보관하고 있는 RARP 서버만 응답을 수행한다.
파일 시스템이 존재하지 않는 시스템에서는 이와 같은 기능을 통해 자신의 IP주소를 얻은 다음, 미리 정해진 호스트로부터 자신의 부트 이미지(시스템 운영체제)를 다운로드 한다. 따라서 이러한 시스템에는 ROM등의 비활성 메모리에 다른 호스트와 통신하여 부트 이미지를 수신할 수 있는 TFTP등의 기본 프로토콜이 존재한다.
ICMP 프로토콜
IMCP는 인터넷 환경에서 오류에 관한 처리를 지원한다. IP프로토콜은 데이터 전송 과정에서 패킷 폐기 등의 오류가 발생해도 이를 보고하는 기능이 없다. 따라서 이를 대체 지원하기 위해 네트워크 계층 프로토콜인 ICMP는 오류가 발생한 IP 패킷에 대하여 그 원인을 송신 호스트에 전달한다. TCP/IP 기반의 통신망에서 전송 과정에 문제가 발생하면 라우터에 의해 ICMP 메시지가 자동으로 발생한다.
IMCP 메시지
ICMP에 의해 발생하는 메시지의 종류는 Type 필드 값에 따라 구분되며, 크게 오류 보고 메시지와 질의 메시지로 나뉜다.
메시지 설명
DESTINATIONUNREARCHABLE | 수신 호스트가 존재하지 않거나, 존재해도 필요한 프로토콜이나 포트 번호 등이 없어 수신 호스트에 접근이 불가능한 경우에 발생한다. IP 헤더의 DF 필드가 설정된 패킷을 라우터가 분할해야 하는 경우에도 해당 패킷을 버리고 이 메시지를 회신해준다. |
SOURCE QUENCH | 네트워크에 필요한 자원이 부족하여 패킷이 버려지는 경우에 발생한다. 이 메시지를 이용해 송신 호스트에 혼잡 가능성을 경고함으로써, 패킷을 송신하는 호스트가 데이터를 천천히 전송하도록 알릴 수 있다. |
TIME EXCEEDED | 패킷의 TTL 필드 값이 0이 되어 패킷이 버려진 경우에 주로 발생한다. 기타 시간 초과 현상에 의해 패킷이 버려진 경우도 이에 해당한다. |
오류 보고 메시지는 IP패킷을 전송하는 과정에서 발생하는 문제를 보고하는 것이 목적이며, IP 패킷을 전송한 송신 호스트에 전달된다. ICMP는 단순히 오류 발생 사실을 통보하는 것이므로 오류를 해결하는 것은 상위 계층의 몫이다. 주요한 오류 보고 메시지는 위와 같다.
질의 메시지는 라우터 혹은 다른 호스트들의 정보를 획득하려는 목적으로 사용되며 아래와 같다.
메시지 설명
ECHO REQUEST.ECHO REPLY | 유닉스의 ping 프로그램에서 네트워크의 신뢰성을 검증하기 위하여 ECHO REQUEST 메시지를 전송하고, 이를 수신한 호스트는 ECHO REPLY를 전송해 응답한다. 특정 호스트가 인터넷에서 활성화되어 동작하는지 확인할 수 있다. |
TIMESTAMP REQUEST.TIMESTAMP REPLY | 두 호스트 간의 네트워크 지연을 계산하는 용도로 사용한다. |
ICMP 헤더 형식
ICMP는 오류 보고 메시지의 구조를 보여준다. 첫 줄의 4바이트는 질의 메시지와 동일한 구조를 보이지만 이어지는 메시지의 내용은 서로 다르다.
- Type(유형) : 1바이트 크기로 메시지의 종류를 구분한다. Type + Code 필드로 메시지를 구분하는데, 오류 보고 메시지에는 DESTINATION UNREACHABLE, SOURCE QUENCH, REDIRECTION, TIME EXCEEDED, PARAMETER PROBLEM 등이 있으며, 질의 메시지에는 ECHO REQUEST, ECHO REPLY, TIMESTAMP REQUEST, TIMESTAMP REPLY 등이 있다.
- Code : 메시지 내용에 대한 자세한 정보를 제공하는 매개변수 값이다.
- Checksum : ICMP 전체 메시지에 대한 체크섬 기능을 지원한다.
- ICMP의 주요 임무는 전송 오류 보고이기 때문에 오류가 발생한 패킷에 대한 정보를 제공해야 한다.
- 오류 원인을 제공한 IP 패킷의 헤더와 이어지는 8바이트의 정보가 오류 보고 메시지에 포함된다. 이 정보를 기초로 IP 패킷을 송신한 호스트는 ICMP 오류를 파악하고 정정한다.
ECHO REQUEST/REPLY와 TIMESTAMP REQUEST/REPLY는 데이터 전송 과정에서 발생하는 ICMP 메시지가 아니므로 오류 발생 IP패킷에 대한 정보가 없다. 대신에 IDentifier와 Sequence Number 필드를 사용하여 메시지를 구분하는 기능이 사용된다.
ICMP 메시지 전송
ICMP는 기능적으로 IP프로토콜과 같은 네트워크 계층의 역할을 수행한다. 그러나 ICMP 메시지는 데이터 링크 계층에 바로 전달되지 않고 IP 패킷에 캡슐화 된 후에 전달된다. 즉 ICMP 메시지는 IP프로토콜의 데이터로 처리되므로 IP 헤더에 캡슐화 되어 계층 2 프로토콜로 전달된다.
IGMP 프로토콜
특정 그룹에 속하는 모든 호스트에 메시지를 전송하는 방식을 멀티캐스팅이라 한다. 그리고 이때 필요한 라우팅 알고리즘을 멀티캐스트 라우팅이라한다.
그룹관리
- 멀티 캐스트 라우팅에서는 다수의 호스트를 논리적인 하나의 단위로 관리하기 위한 그룹 관리 기능이 필요하다. 그룹 관리의 주요 기능에는 그룹의 생성, 제거, 전송 호스트의 그룹 참가, 탈퇴 등이 있다.
- 목적지 주소가 멀티 캐스트 그룹 주소로 지정된 패킷을 그룹의 모든 호스트에 전달하려면, 라우터가 입력 패킷을 호스트의 수만큼 복사해 전달하는 기능을 수행해야 한다. 멀티 캐스팅은 다음과 같은 측면에서 유니 캐스팅보다 복잡한 기능을 제공한다.
- 다중 수신 호스트를 표시하는 멀티 캐스트 그룹 주소 표기 방법을 통일해야 한다. 네트워크 계층을 지원하는 IPv4와 IPv6 프로토콜 등이 이 주소 형식을 제공한다.
- 라우터에서 IP멀티캐스트 주소와 이 그룹에 속하는 멤버 호스트의 네트워크 주소 사이의 연관성을 처리할 수 있다. 특히 멤버가 동적으로 추가, 삭제되는 환경에 대응하는 기능이 필요하다.
- 멀티캐스트 라우팅 알고리즘은 그룹에 속한 모든 멤버에게 도달하는 가장 짧은 경로를 선택하는 기능을 선택한다.
- 개별 라우터가 특정 그룹의 호스트에 패킷을 전송하려면 어느 그룹에 어떤 호스트가 존재하는지 알아야 한다. 또한 그룹에 속한 호스트의 정보가 변경될 때 마다 관련 정보도 함께 라우터에 통보하는 방식과 반대로 라우터가 관련 호스트에 문의하는 방식이 있다.
IGMP 헤더 구조
IGMP는 임의의 호스트가 멀티 캐스트 주소로 정의된 멀티캐스트 그룹에 가입하거나 탈퇴할 때 사용하는 프로토콜이다. 또한 멀티 캐스트 그룹에 가입한 호스트와 라우터 사이에 멤버 정보를 교환하는 용도로 사용된다.
IGMP 메시지는 ICMP 메시지 처럼 IP 패킷에 실려서 전달된다. IGMP 메시지는 크게 질의 메시지와 보고 메시지로 구분된다. 질의 메시지는 멀티 캐스트 라우터가 그룹에 대한 정보를 얻기 위하여 호스트에 전달하며, 이에 대한 응답으로 호스트가 보고 메시지를 회신한다.
- Type : 크게 3가지 값을 가질 수 있다. 0x11은 멀티캐스트 라우터가 전송한 질의 메시지이며, 0x16은 호스트가 전송하는 보고 메시지이다.
0x17은 그룹 탈퇴에 관한 메시지로, 특정 그룹에 소속된 마지막 멤버의 탈퇴와 관련된다. 이전 버전과의 호환성을 위해 0x12가 보고 메시지로 사용될 수 있다. - MaxResponseTime(최대 응답 시간) : 질의 메시지에서만 사용된다. 질의에 대한 보고 메시지가 전송 되어야 하는 최대 응답 시간을 나타낸다. 라우터는 이 값을 변화시킴으로써 탈퇴 지연 시간을 조율 할 수 있다. 탈퇴 지연 시간은 특정 그룹에서 마지막 호스트가 탈퇴산 시간과 라우팅 프로토콜이 이 사건을 인지한 시간의 차이이다.
- Checksum : IP 프로토콜에서 사용하는 알고리즘과 동일한 방식을 사용하며 오류 검출용으로 이용된다.
- Group Address : 질의 메시지는 0으로 채우고, 보고 메시지에는 호스트가 가입을 원하는 그룹 주소를 표기한다. 특정 그룹 관련 질의 메시지에는 해당 그룹의 주소를 표기한다.
IGMP 동작 과정
Checksum : IP 프로토콜에서 사용하는 알고리즘과 동일한 방식을 사용하며 오류 검출용으로 이용된다.
Group Address : 질의 메시지는 0으로 채우고, 보고 메시지에는 호스트가 가입을 원하는 그룹 주소를 표기한다. 특정 그룹 관련 질의 메시지에는 해당 그룹의 주소를 표기한다.
IGMP 동작 과정
- 자신이 IGMP 메시지에 표시된 멀티 캐스트 주소의 멤버임을 다른 호스트와 라우터에 알리기 위한 용도로
IGMP를 사용한다.
그룹에 가입하려면 해당 멀티캐스트 주소를 표기한 IGMP 보고 메시지를 전송하는데, IGMP 헤더의 Group Address 필드에 가입을 원하는 멀티 캐스트 주소를 기록한다.
멀티 캐스트 라우터가 그룹에 속한 멤버 목록을 유효하게 관리하려면 IGMP 질의 메시지를 사용해 주기적으로 확인하는 과정이 필요하다.
개별 호스트가 자신의 그룹 멤버를 유지하려면 b처럼 IGMP 보고 메시지를 사용해 IGMP 질의 응답을 해야한다. c처럼 라우터의 질의 메시지에 대해 호스트의 보고 메시지 응답이 이루어지지 않으면 그룹에서 탈퇴한 것으로 간주된다.
IGMP 메시지의 전송
IGMP는 IP 프로토콜과 동등한 계층의 기능을 수행한다. 그러나 ICMP처럼 바로 데이터 링크 계층으로 전달되지 않고, IP패킷에 캡슐화 되어 보내진다.
즉, IGMP 메시지는 IP프로토콜의 데이터로 처리되기 때문에 IP 패킷의 헤더에 실려서 계층 2 프로토콜로 전달된다.
Reference
쉽게 배우는 데이터 통신과 컴퓨터 네트워크
'CS > Network' 카테고리의 다른 글
[Chapter 9] TCP 프로토콜(TCP 프로토콜) (0) | 2025.02.16 |
---|---|
[Chapter 9] TCP 프로토콜(전송 계층의 주요 기능) (0) | 2025.02.14 |
[Chapter 8] 네트워크 계층(이동 IP 프로토콜) (0) | 2025.02.14 |
[Chapter 8] 네트워크 계층(IPv6 헤더 구조) (0) | 2025.02.14 |
[Chapter 7] IP 프로토콜(IP 프로토콜) (0) | 2025.02.14 |