인터넷 제어 메시지 프로토콜( icmp)
DESCRIPTION
Chapter 6:. 인터넷 제어 메시지 프로토콜( ICMP). 2003. 5. ICMP 메시지. IP 헤더. IP 데이터. Ethernet 헤더. Ethernet 데이터. 트레일러. 인터넷 제어 메시지 프로토콜. IP 네트워크에서 네트워크 문제에 관한 정보를 전달하기 위해 사용하는 프로토콜 (지속적 문제의 회피 가능) 예) 라우터에서 발생한 에러를 송신측으로 전달 IP 데이터그램에 캡슐화 되어 전송. . 0. 16. 31. 타입( Type). - PowerPoint PPT PresentationTRANSCRIPT
1
AMAN2002 를 이용한
TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
인터넷 제어 메시지 프로토콜 (ICMP)
2003. 5.
Chapter 6:
2제 6 장 ICMP(Internet Control Message Protocol)
AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
인터넷 제어 메시지 프로토콜 IP 네트워크에서 네트워크 문제에 관한 정보를
전달하기 위해 사용하는 프로토콜 ( 지속적 문제의 회피 가능 ) 예 ) 라우터에서 발생한 에러를 송신측으로 전달
IP 데이터그램에 캡슐화 되어 전송ICMP 메시지
IP 헤더
Ethernet 헤더 Ethernet 데이터
IP 데이터
트레일러
<ICMP 메시지 캡슐화 >
3제 6 장 ICMP(Internet Control Message Protocol)
AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
ICMP 메시지 포맷
0 16 31
정보 (Data)
코드 (Code) 체크 섬 (Checksum)
나머지 헤더 (Rest of the header)
타입 (Type)8 바이트
타입 (Type) – 메시지의 종류를 15 개로 구분 ( 대 분류 ) 코드 (Code) – 메시지의 종류를 보다 세분화 ( 소 분류 ) 체크 섬 (Checksum) – 메시지의 오류 검사 나머지 헤더 – 타입과 코드 값에 따라 변경됨
4제 6 장 ICMP(Internet Control Message Protocol)
AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
ICMP 메시지의 종류 ICMP 메시지의 분류 기준
타입 (Type): 대 분류 코드 (Code): 소 분류 교재 229 쪽 , < 표 6.1> ICMP 메시지 유형을 참고Type Code 설 명 질의 에러
0 0 echo reply(ping reply) : 에코응답
3 destination unreachable : 목적지 도달 불능
0 network unreachable
1 host unreachable
2 protocol unreachable
3 port unreachable
이하 생략
5제 6 장 ICMP(Internet Control Message Protocol)
AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
ICMP 메시지의 종류 에러 (error) 보고용 메시지
IP 패킷 처리 도중 발생한 문제를 보고할 때 사용 Destination unreachable, source quench…
질의 (query) 용 메시지 다른 호스트로부터 특정 정보를 획득하기 위해 사용 네트워크 문제 진단 및 타임스탬프 요청과 같은 질의에
사용
6제 6 장 ICMP(Internet Control Message Protocol)
AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
에러 보고용 메시지 에러 보고용 메시지의 종류
DestinationUnreachable
SourceQuench
Redirection
TimeExceeded
ParameterProblems
• 라우터가 데이터그램을 라우팅 할 수 없을 때• 호스트가 데이터그램을 전달할 수 없을 때
• 혼잡으로 인해 데이터그램의 폐기를 알림
• IP 헤더의 TTL 필드 값 만료를 나타냄
• 데이터그램의 헤더 에러 문제 발생시 사용
• 라우터가 최적 경로를 사용하지 않는 호스트 발견 시 최적 경로를 알리기 위해 사용
Error Reporting
7제 6 장 ICMP(Internet Control Message Protocol)
AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
에러 보고용 메시지 특징 : Traffic 최소화 노력
ICMP 에러 메시지를 전달하는 데이터그램에 대해서는 ICMP 에러 메시지를 생성하지 않음
목적지 IP 주소에 브로드 캐스트나 멀티 캐스트 주소를 가진 데이터그램에 대해서는 에러 메시지가 생성되지 않음
출발지 IP 주소에 ‘ 127.0.0.1’ 이나 ‘ 0.0.0.0’ 과 같은 불특정한 주소를 가진 데이터그램에 대해서는 에러 메시지가 생성되지 않음
단편화 된 데이터그램에서는 첫번째 단편에만 에러 메시지 생성
8제 6 장 ICMP(Internet Control Message Protocol)
AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
질의용 메시지 질의용 메시지의 종류
Query
Echorequest and reply
Timestamprequest and reply
Address maskrequest and reply
Router solicitationand advertisement
• IP 호스트의 진단에 사용
• 두 시스템간에 IP 데이터그램이 오고 가는데 필요한 왕복시간 (Round Trip Time) 을 결정
• 호스트가 라우터에게 서브넷 마스크 요청
• 다른 네트워크의 호스트에게 데이터 전송 시 자신의 네트워크에 연결된 라우터 주소 요청
9제 6 장 ICMP(Internet Control Message Protocol)
AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
ping 프로그램 실행 ping?
특정 호스트 (IP) 가 정상 작동 중인지 확인 ICMP Echo request/reply 메시지를 이용
AMAN2002 WinPing 실행
Packet Observer 로 캡처ICMP 메시지 분석
10
제 6 장 ICMP(Internet Control Message Protocol)
AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
ICMP 메시지 분석• Ping 수행 시 ICMP 메시지 캡처
11
제 6 장 ICMP(Internet Control Message Protocol)
AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
ICMP 메시지 분석 Type / Code
Type - 8, Code - 0 Echo Request(Ping Request) 메시지 ( 교재 , 표 6.1 참
고 )
ICMP Echo Request/Reply 메시지 포맷0 16 31
순서 번호 (Sequence number)식별자 (Identifier)
정보 (Data)
코드 (0) 체크 섬 (Checksum)타입 (8 or 0)
8 바이트
• 타입 8 – Request 0 – Reply
12
제 6 장 ICMP(Internet Control Message Protocol)
AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
ICMP 메시지 분석 체크 섬
0xD9F3(55795) 식별자 : 고유 세션 식별 번호
0x2C07(11271) 순서번호 : 동일 식별자를 가진 메시지들 구분
0x0100(256)
※ ping 을 수행하는 근원지 / 목적지 주소 , 프로토콜 정보는 IP 데이터그램헤더에 나타남
13
제 6 장 ICMP(Internet Control Message Protocol)
AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
연습 문제 ICMP Destination Unreachable Message 헤더 16 진수 값으로
완성하라 .03 03 FB C4 00 00 00 00 45 00 00 3A 36 62 00 00 7F 11 7D A7 D2 62 BD 17 D3 AA 24 71 00 89 00 89 00 3A 00 00
타입 코드 체크 섬
Unused
Internet Header
64bits or Original Datagram Header
14
제 6 장 ICMP(Internet Control Message Protocol)
AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
연습 문제 ICMP 헤더
타입 / 코드 체크 섬
인터넷헤더 송신지 IP . . . 에서 수신지 . . . 로 전송 상위의 프로토콜로 전달됨
데이터그램 헤더 송신지 포트 번에서 수신지 포트 번으로 전달
※ 패킷의 값은 10 진수로 표현하시오 .
15
제 6 장 ICMP(Internet Control Message Protocol)
AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Guru 를 이용한 ICMP 분석 연습
16
제 6 장 ICMP(Internet Control Message Protocol)
AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
ICMP 캡처 프로그램 작성《 IcmpViewer 》
※ 프로젝트 생성 및 라이브러리 경로 설정은 『 ch04. 이더넷 (Ethernet) 』의 “이더넷 캡처 프로그램 작성”과 동일
17
제 6 장 ICMP(Internet Control Message Protocol)
AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
대화상자 디자인
1 List Control
2
3 4 5
6
7
Button
Edit Box
18
제 6 장 ICMP(Internet Control Message Protocol)
AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Control 속성
# 종류 ID 속성 변수이름
1 List Control IDC_LIST View: Report m_ListIcmpPacketInfo
2 Edit Box IDC_EDIT_DataSection Read-only m_EDIT_strDataSectio
n3 Edit Box IDC_EDIT_Monitoring m_EDIT_iCountInput4 Edit Box IDC_EDIT_Monitored Read-only m_EDIT_iCountOutput5 Button IDC_BUTTON_Start
6 Button IDCANCEL Default Button
7 Button IDC_BUTTON_Info
19
제 6 장 ICMP(Internet Control Message Protocol)
AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
이벤트 처리# 종류 ID 메시지 함수 명
1 List Control IDC_LIST NM_CLICK OnClickList()
20 Button IDC_BUTTON_Start BN_CLICKED OnBUTTONStart()
21 Button IDCANCEL BN_CLICKED OnCancel()
22 Button IDC_BUTTON_Info BN_CLICKED OnBUTTONInfo()
※ 어댑터 오픈 대화상자 표시 , 어댑터 열기 , 패킷 캡처 , 어댑터 닫기 함수의 설명은 『 ch04. 이더넷 (Ethernet) 』 과 동일하므로 생략함
20
제 6 장 ICMP(Internet Control Message Protocol)
AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
패킷 분석 ICMP 헤더의 시작지점
14 바이트 (IP 데이터그램의 전체크기 – IpHLen) 바이트
arrTemp
arrTemp[0] arrTemp[14]
이더넷 헤더 IP 헤더
헤더길이 : IpHLen
arrTemp[14 + IpHLen]
ICMP 메시지 ( 헤더 + 데이터 )
arrTemp[14+9]프로토콜 필드1 → ICMP
arrpTemp[16], arrTemp[17]IP 데이터그램의 전체크기 필드ICMP 메시지크기 = IP 데이터그램의 전체길이 – IpHLen
arrTemp[14] 의 하위 4 비트
21
제 6 장 ICMP(Internet Control Message Protocol)
AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
패킷 분석• List Control 에 패킷 헤더 정보 표시
. . .
// 하나의 패킷을 획득하여 arrTemp 에 입력 . 에러 시 음수 리턴int iLengthOfPacket = pDlg->Ncap(arrTemp, MaxBufferLen);if(iLengthOfPacket < 0) continue;
#define EtherHeaderLength 14// IP 헤더의 프로토콜 필드 값이 1 인 경우 ICMP 메시지// IP 헤더의 프로토콜 필드 값이 0x01 인 것만 골라냄if( arrTemp[EtherHeaderLength + 9] == 0x01){
// IP 헤더 길이unsigned char MASK = 0x0F; arrTemp[EtherHeaderLength] = arrTemp[EtherHeaderLength] & MASK;int iIpHeaderLength = arrTemp[EtherHeaderLength]<<2; . . .
22
제 6 장 ICMP(Internet Control Message Protocol)
AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
패킷 분석• List Control 에 패킷 헤더 정보 표시
// ICMP 타입CString strIcmpType = _T("");int iIcmpType = arrTemp[EtherHeaderLength + iIpHeaderLength];strIcmpType.Format(_T("TYPE : %d"), iIcmpType); m_ListIcmpPacketInfo.SetItem(i, 1, LVIF_TEXT, strIcmpType, 0, 0, 0, 0);
// ICMP 코드CString strIcmpCode = _T("");int iIcmpCode = arrTemp[EtherHeaderLength + iIpHeaderLength+1];strIcmpCode.Format(_T("CODE : %d"), iIcmpCode); m_ListIcmpPacketInfo.SetItem(i, 2, LVIF_TEXT, strIcmpCode, 0, 0, 0, 0);
// ICMP 체크섬CString strIcmpChkSum = _T("");strIcmpChkSum.Format(_T("%02X %02X"),
arrTemp[EtherHeaderLength + iIpHeaderLength + 2],arrTemp[EtherHeaderLength + iIpHeaderLength + 3]);
m_ListIcmpPacketInfo.SetItem(i, 3, LVIF_TEXT, strIcmpChkSum, 0, 0, 0, 0);
23
제 6 장 ICMP(Internet Control Message Protocol)
AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
패킷 분석• List Control 에 패킷 헤더 정보 표시
// ICMP 의 나머지 헤더 부분 출력CString strIcmpRestOfHeader;strIcmpRestOfHeader.Format(_T("%02X %02X %02X %02X "),
arrTemp[EtherHeaderLength + iIpHeaderLength + 4],arrTemp[EtherHeaderLength + iIpHeaderLength + 5],arrTemp[EtherHeaderLength + iIpHeaderLength + 6],arrTemp[EtherHeaderLength + iIpHeaderLength + 7]);
m_ListIcmpPacketInfo.SetItem(i, 4, LVIF_TEXT, strIcmpRestOfHeader, 0, 0, 0, 0);
// IP 데이터그램 크기 출력CString strIpPLen = _T("");int iIpTotalLength = pDlg->Twobytes_to_number
(arrTemp[EtherHeaderLength + 2], arrTemp[EtherHeaderLength + 3]);// IP 데이터그램의 데이터 구간 (ICMP 메시지 ) 길이 출력strIpPLen.Format(_T("IP DLen : %d"), iIpTotalLength- iIpHeaderLength);m_ListIcmpPacketInfo.SetItem(i, 5, LVIF_TEXT, strIpPLen, 0, 0, 0, 0);
24
제 6 장 ICMP(Internet Control Message Protocol)
AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
패킷 분석• List Control 에 패킷 헤더 정보 표시
// ICMP 메시지의 데이터 구간 정보 출력CString strIcmpDataSection = _T("");CString strIcmpTmp = _T("");int iIntVal = 0;m_strDataBuffer[i] = _T("Data Section : ");for(int j = EtherHeaderLength + iIpHeaderLength + 8;
j < EtherHeaderLength + iIpTotalLength;j++){
strIcmpTmp.Format(_T("%02X "), arrTemp[j]);m_strDataBuffer[i] +=strIcmpTmp;
}
• ICMP 데이터 구간의 위치정보
ICMP 데이터ICMP 헤더(8 바이트 )
EtherHeaderLength + iIpHeaderLength
EtherHeaderLength + iIpHeaderLength + 8
EtherHeaderLength + iIpTotalLength
25
제 6 장 ICMP(Internet Control Message Protocol)
AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
IcmpViewer 실행화면
ICMP 헤더 ( 기본 포맷 ) 8 바이트ICMP 메시지 ( 헤더 + 데이터 ) 의 길이
26
제 6 장 ICMP(Internet Control Message Protocol)
AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
IcmpViewer 실행화면 리스트 컨트롤의 항목 클릭
ICMP 메시지의 데이터영역의 값
27
제 6 장 ICMP(Internet Control Message Protocol)
AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
IcmpViewer 를 이용한 ICMP 메시지 분석
4 번 항목 분석 Type 3 ( 목적지 도달 불능 ,Destination Unreachable) Code 3 (Port Unreachable) ※ Type 과 Code 값에 따른 ICMP 메시지 유형 교재 혹은 AMAN2002 온라인 도움말 (RFC ICMP RFC 792)
28
제 6 장 ICMP(Internet Control Message Protocol)
AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
IcmpViewer 를 이용한 ICMP 메시지 분석
Checksum 0x1CC0 나머지 헤더 사용하지 않으므로 0 임 데이터 (IP 헤더 + 데이터그램 첫 64 비트 )
라우터나 호스트가 목적지 도달 불능 메시지를 송신한 쪽으로 전달할 때 수신측에서 받은 IP 데이터그램을 동봉하여 송신측으로 전송함
UDP 목적지 포트번호 0x0089 번을 사용하여 목적지 호스트에 접속할 수 없음을 의미함
IP 헤더 데이터그램 (UDP)의 첫 64 비트
29
제 6 장 ICMP(Internet Control Message Protocol)
AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
참고 문헌 서승호 외 , AMAN2002 를 이용한 TCP/IP 프로토콜
분석 및 네트워크 프로그래밍 , 정익사 , 2002. IETF, RFC 792, “Internet Control Message
Protocol”, 1981. James F. Kurose, Keith W. Ross, “Computer
Networking: A top-down approach featuring the Internet”, Addison Wesley, 2001.
Douglas E. comer, David L. Stevens, “Internetworking with TCP/IP”, Prentice Hall, 1995.
W.Richard Stevens, “TCP/IP Illustrated Vol. 1:The Protocols”, Addison Wesley, 1994.