💡ICMP와 IGMP?
요즘 네트워크 공부를 하면서 많은 프로토콜들에 대해 공부하고 있는데, 읽어도 읽어도 외워지지 않고 계속해서 헷갈리는 것이 바로 ICMP와 IGMP이다. 이름이 비슷해서 머리에 잘 들어오질 않아 깔끔하게 정리를 해두기로 했다!
추가적으로, ICMP 프로토콜을 사용하는 네트워크 명령어 ping, tracert(traceroute)도 정리해보자.
💡ICMP(Internet Control Message Protocol)
네트워크 장치에서 네트워크 통신 문제를 진단하는 데 사용하는 네트워크 계층 프로토콜이다. 데이터가 의도한 대상에 적시에 도달하는지 여부를 확인하는 데 사용한다. (즉, 오류 보고를 위한 프로토콜이다.)
인터넷 환경에서 오류에 관한 처리를 지원하는 용도로, IP 패킷의 데이터 부분에 캡슐화되어 송신 호스트에게 전달된다.
TCP/IP 기반의 통신망에서 전송 과정에 문제가 발생하면 라우터에 의해 ICMP 메시지가 자동으로 발생하여 패킷 송신 호스트에게 전달된다.
특징
- IP 버전에 따라 ICMPv4와 ICMPv6로 구분된다.
- IP와 달리 TCP 또는 UDP와 같은 전송 계층 프로토콜과 연결되어 사용되지 않는다.(즉, 대상 컴퓨터의 특정 포트를 대상으로 하지 않는다.)
- ICMP Flooding, Ping of Death 등의 공격에 악용될 수 있다.
ICMP 메시지
- Echo Request, Echo Reply: ping 에서 네트워크의 신뢰성을 검증하기 위하여 사용
- Destination Unreachable: 수신 호스트가 존재하지 않거나, 존재하더라도 필요한 프로토콜이나 포트 번호 등이 없어 수신 호스트에 접근 불가능한 경우에 발생
- Source Quench: 네트워크에 필요한 자원이 부족하여 패킷이 버려지는 경우에 발생, 이 메시지를 이용해 송신 호스트에게 혼잡 가능성을 경고함으로써 패킷 송신 호스트가 데이터를 천천히 전송하도록 알릴 수 있다.
- Time Exceeded: 패킷의 TTL 필드 값이 0이 되어 패킷이 버려진 경우에 발생한다.
- Timestamp Request, Timestamp Reply: 두 호스트 간의 네트워크 지연을 계산하는 용도로 사용한다.
💡ping(Packet INternet Groper) 명령어
ping 명령어는 네트워크 상태를 점검할 수 있는 명령어로, 대부분의 운영체제에 기본으로 포함되어 있다.
ping을 통해 특정 컴퓨터가 정상 작동하고 있는지 혹은 도달하는 네트워크 환경에 문제는 없는지 확인할 수 있는데, 이는 ICMP 프로토콜을 사용하여 이루어진다.
작동 원리
네트워크 상태를 확인하려는 대상 컴퓨터에게 일정 크기의 패킷을 보낸 후 대상 컴퓨터가 이에 대해 응답하는 메시지를 보내면 이를 수신하고 분석하여 대상 컴퓨터가 작동하는지, 대상 컴퓨터에 도달하는 과정의 네트워크 상태가 어떠한지 확인할 수 있다.
- ICMP echo request를 대상 컴퓨터에 전송한다.
- 대상 컴퓨터로부터 ICMP echo reply를 수신한 후 분석한다.
사용 방법
ping [IP주소 or 도메인이름]
윈도우 운영체제
- 윈도우 계열 운영체제는 기본적으로 패킷을 4번 전송한다.
- 지속적인 전송을 원할 경우 -t 옵션을 추가하고, 종료 시 Ctrl + C 한다.
- 각 패킷의 크기와, 응답을 받는데까지 걸린 시간이 출력된다.
- 맨 위 사진에서는 4개의 패킷을 전송한 후 4번 모두 정상적으로 응답을 받았음을 알 수 있다.
- TTL은 Time To Live의 약자로, 대상 컴퓨터에 보낸 요청 패킷이 살아서 제 역할을 할 수 있는 시간을 의미한다.
- TTL은 네트워크 라우터(홉)를 통과할 때마다 감소한다.
유닉스 계열 운영체제
- 기본적으로 control + C 를 이용해 멈추지 않으면 계속해서 패킷이 전송된다.(윈도우에서 -t 옵션을 준 것과 동일)
- 패킷을 지속적으로 전송하지 않고 횟수를 제한하고 싶은 경우 -c 옵션을 추가한다.
- 패킷 크기 지정을 위해 -s 옵션을 추가한다.(8바이트의 ICMP 헤더가 자동 추가)
💡tracert / traceroute
tracert와 traceroute는 같은 기능을 수행하는 명령어이다.
tracert는 윈도우, traceroute는 유닉스 기반 운영체제에서 사용한다.
traceroute는 ping과 마찬가지로 대상 컴퓨터에 ICMP 패킷을 보내는 방식으로 작동한다.
하지만, 단순히 목적지에 패킷을 전송하고 손실되는 패킷이 없는지 확인하는 ping과는 달리 traceroute는 패킷이 전달되는 네트워크 경로를 모두 확인 가능하다. (즉, 중간 경로 어디에서 문제가 발생한 것인지 파악 가능하다.)
패킷이 출발지에서 목적지로 이동할 때 여러 개의 라우터 즉, 홉(hop)을 거쳐 이동하게 된다.
패킷의 TTL 정보를 통해 패킷이 최대 몇 개의 홉을 거쳐 이동할 수 있는지를 알 수 있는데, traceroute는 이를 이용한다.
사용 방법
# 윈도우
tracert [IP주소 or 도메인이름]
# 유닉스 기반
traceroute [IP주소 or 도메인이름]
mac OS 실행화면
- 패킷이 이동한 홉(Hop) 수를 하나씩 증가시키며 세 개의 ICMP 패킷을 전송한다.
- 홉 수 하나 당 세 개의 ICMP 패킷의 응답시간이 출력되고, 거쳐가는 라우터들의 IP 주소가 출력된다.
💡IGMP(Internet Group Management Protocol)
특정 그룹에 속하는 모든 호스트에 메시지를 전송하는 방식을 멀티캐스팅이라고 한다. 그리고 이러한 멀티캐스팅을 수행할 때 필요한 라우팅 알고리즘을 멀티캐스트 라우팅이라고 한다.
라우터는 멀티캐스트 그룹 주소와 해당 그룹에 속하는 호스트들의 네트워크 주소를 기록해두고, 목적지 주소가 멀티캐스트 주소인 패킷을 전송할 때마다 그것을 참고하여 그룹 내의 모든 호스트에게 패킷을 전송할 수 있다.
하지만 그룹에 속한 호스트의 정보는 지속적으로 변경될 수 있으므로 이를 보완, 갱신하는 작업이 반드시 필요하다.
호스트가 자신의 그룹 정보를 라우터에게 알리거나, 라우터가 호스트에게 그룹 정보에 변경사항이 없는지 먼저 문의하는 방식도 있다.
이처럼 멀티캐스트 환경에서 여러 명의 호스트를 관리하기 위한 그룹 관리 기능을 제공하는 프로토콜이 IGMP이다.
그룹 가입
- 호스트가 자신이 해당 멀티캐스트 주소의 멤버임을 다른 호스트와 라우터에 알린다.
- IGMP 헤더의 Group Address 필드에 가입하고자 하는 멀티캐스트 주소를 기록하여 IGMP 보고 메시지를 전송한다.
주기적 확인
- 멀티캐스트 라우터가 그룹에 속한 호스트 정보에 변경사항이 없는지 관리하기 위해 주기적으로 확인한다.
- 멀티캐스트 라우터가 그룹에 속한 호스트에게 IGMP 질의 메시지를 전달한다.
- 호스트가 해당 그룹에 가입된 신분을 유지하고 싶다면 IGMP 보고 메시지를 통해 질의에 응답해야 한다.
- IGMP 질의 메시지에 응답하지 않은 호스트는 그룹에서 제외된다. (그룹 탈퇴)
비대칭 프로토콜
- 대칭 프로토콜은 소통하는 두 단말이 동등한 계층인 경우
- IGMP는 대표적인 비대칭 프로토콜
참고 자료
https://terms.naver.com/entry.naver?docId=2271906&cid=51207&categoryId=51207
ICMP
ICMP(Internet Control Message Protocol)는 인터넷 환경에서 오류에 관한 처리를 지원하는 용도로 사용되며, IP 패킷의 데이터 부분에 캡슐화되어 송신 호스트에게 전달된다. TCP/IP 기반의 통신망에서 전송
terms.naver.com
https://terms.naver.com/entry.naver?docId=2271907&cid=51207&categoryId=51207&expCategoryId=51207
IGMP
특정 그룹에 속하는 모든 호스트에 메시지를 전송하는 방식을 멀티캐스팅(Multicasting)이라고 한다. 그리고 이때 필요한 라우팅 알고리즘을 멀티캐스트 라우팅(Multicast Routing)이라고 한다. [그룹 관
terms.naver.com
인터넷 제어 메시지 프로토콜 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. ICMP(Internet Control Message Protocol, 인터넷 제어 메시지 프로토콜)는 인터넷 프로토콜 스위트에 기록된 주요 프로토콜 가운데 하나이다. 네트워크 컴퓨터 위에서 돌
ko.wikipedia.org
인터넷 그룹 관리 프로토콜 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 인터넷 그룹 관리 프로토콜(Internet Group Management Protocol, IGMP)은 호스트 컴퓨터와 인접 라우터가 멀티캐스트 그룹 멤버십을 구성하는 데 사용하는 통신 프로토콜
ko.wikipedia.org
https://terms.naver.com/entry.naver?docId=3572297&cid=59088&categoryId=59096
ping 명령어
사람의 심장 박동 정도를 측정하는 심장박동 측정기처럼 컴퓨터 네트워크 상태를 점검, 진단하는 명령어가 ping(핑)이다. 이는 ‘Packet INternet Groper’의 약자이며, 최초 개발자인 마이클 무스(Michae
terms.naver.com
https://change-words.tistory.com/entry/tracert-traceroute
tracert, traceroute란? (사용 방법과 목적)
tracert 또는 traceroute는 네트워크 연결 상태를 구체적으로 파악하는 데 사용되는 진단 도구입니다. ping이 단순히 목적지 IP 주소의 통신 가능 여부를 확인하는 수준이라면, traceroute는 패킷이 출발
change-words.tistory.com
'Network' 카테고리의 다른 글
[네트워크 기초]CIDR 이란?(개념, ipcalc 사용하기) (0) | 2024.04.24 |
---|---|
[네트워크 계층]IP 주소의 개념(공인/사설/고정/유동 + 내 IP 주소 확인하는 방법) (2) | 2024.02.21 |