인터넷 제어 메시지 프로토콜( icmp)

29
1 AMAN2002 를 를를를 TCP/IP 를를를를 를를 를 를를를를 를를를를를 www.nms4you.com 인인인 인인 인인인 인인인인 (ICMP) 2003. 5. Chapter 6:

Upload: vivian

Post on 19-Mar-2016

216 views

Category:

Documents


8 download

DESCRIPTION

Chapter 6:. 인터넷 제어 메시지 프로토콜( ICMP). 2003. 5. ICMP 메시지. IP 헤더. IP 데이터. Ethernet 헤더. Ethernet 데이터. 트레일러. 인터넷 제어 메시지 프로토콜. IP 네트워크에서 네트워크 문제에 관한 정보를 전달하기 위해 사용하는 프로토콜 (지속적 문제의 회피 가능) 예) 라우터에서 발생한 에러를 송신측으로 전달 IP 데이터그램에 캡슐화 되어 전송. . 0. 16. 31. 타입( Type). - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 인터넷 제어 메시지 프로토콜( ICMP)

1

AMAN2002 를 이용한

TCP/IP 프로토콜 분석 및 네트워크 프로그래밍

www.nms4you.com

인터넷 제어 메시지 프로토콜 (ICMP)

2003. 5.

Chapter 6:

Page 2: 인터넷 제어 메시지 프로토콜( ICMP)

2제 6 장 ICMP(Internet Control Message Protocol)

AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

인터넷 제어 메시지 프로토콜 IP 네트워크에서 네트워크 문제에 관한 정보를

전달하기 위해 사용하는 프로토콜 ( 지속적 문제의 회피 가능 ) 예 ) 라우터에서 발생한 에러를 송신측으로 전달

IP 데이터그램에 캡슐화 되어 전송ICMP 메시지

IP 헤더

Ethernet 헤더 Ethernet 데이터

IP 데이터

트레일러

<ICMP 메시지 캡슐화 >

Page 3: 인터넷 제어 메시지 프로토콜( 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) – 메시지의 오류 검사 나머지 헤더 – 타입과 코드 값에 따라 변경됨

Page 4: 인터넷 제어 메시지 프로토콜( ICMP)

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

이하 생략

Page 5: 인터넷 제어 메시지 프로토콜( ICMP)

5제 6 장 ICMP(Internet Control Message Protocol)

AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

ICMP 메시지의 종류 에러 (error) 보고용 메시지

IP 패킷 처리 도중 발생한 문제를 보고할 때 사용 Destination unreachable, source quench…

질의 (query) 용 메시지 다른 호스트로부터 특정 정보를 획득하기 위해 사용 네트워크 문제 진단 및 타임스탬프 요청과 같은 질의에

사용

Page 6: 인터넷 제어 메시지 프로토콜( ICMP)

6제 6 장 ICMP(Internet Control Message Protocol)

AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

에러 보고용 메시지 에러 보고용 메시지의 종류

DestinationUnreachable

SourceQuench

Redirection

TimeExceeded

ParameterProblems

• 라우터가 데이터그램을 라우팅 할 수 없을 때• 호스트가 데이터그램을 전달할 수 없을 때

• 혼잡으로 인해 데이터그램의 폐기를 알림

• IP 헤더의 TTL 필드 값 만료를 나타냄

• 데이터그램의 헤더 에러 문제 발생시 사용

• 라우터가 최적 경로를 사용하지 않는 호스트 발견 시 최적 경로를 알리기 위해 사용

Error Reporting

Page 7: 인터넷 제어 메시지 프로토콜( ICMP)

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’ 과 같은 불특정한 주소를 가진 데이터그램에 대해서는 에러 메시지가 생성되지 않음

단편화 된 데이터그램에서는 첫번째 단편에만 에러 메시지 생성

Page 8: 인터넷 제어 메시지 프로토콜( ICMP)

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) 을 결정

• 호스트가 라우터에게 서브넷 마스크 요청

• 다른 네트워크의 호스트에게 데이터 전송 시 자신의 네트워크에 연결된 라우터 주소 요청

Page 9: 인터넷 제어 메시지 프로토콜( ICMP)

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 메시지 분석

Page 10: 인터넷 제어 메시지 프로토콜( ICMP)

10

제 6 장 ICMP(Internet Control Message Protocol)

AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

ICMP 메시지 분석• Ping 수행 시 ICMP 메시지 캡처

Page 11: 인터넷 제어 메시지 프로토콜( 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

Page 12: 인터넷 제어 메시지 프로토콜( ICMP)

12

제 6 장 ICMP(Internet Control Message Protocol)

AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

ICMP 메시지 분석 체크 섬

0xD9F3(55795) 식별자 : 고유 세션 식별 번호

0x2C07(11271) 순서번호 : 동일 식별자를 가진 메시지들 구분

0x0100(256)

※ ping 을 수행하는 근원지 / 목적지 주소 , 프로토콜 정보는 IP 데이터그램헤더에 나타남

Page 13: 인터넷 제어 메시지 프로토콜( ICMP)

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

Page 14: 인터넷 제어 메시지 프로토콜( ICMP)

14

제 6 장 ICMP(Internet Control Message Protocol)

AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

연습 문제 ICMP 헤더

타입 / 코드 체크 섬

인터넷헤더 송신지 IP . . . 에서 수신지 . . . 로 전송 상위의 프로토콜로 전달됨

데이터그램 헤더 송신지 포트 번에서 수신지 포트 번으로 전달

※ 패킷의 값은 10 진수로 표현하시오 .

Page 15: 인터넷 제어 메시지 프로토콜( ICMP)

15

제 6 장 ICMP(Internet Control Message Protocol)

AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Guru 를 이용한 ICMP 분석 연습

Page 16: 인터넷 제어 메시지 프로토콜( ICMP)

16

제 6 장 ICMP(Internet Control Message Protocol)

AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

ICMP 캡처 프로그램 작성《 IcmpViewer 》

※ 프로젝트 생성 및 라이브러리 경로 설정은 『 ch04. 이더넷 (Ethernet) 』의 “이더넷 캡처 프로그램 작성”과 동일

Page 17: 인터넷 제어 메시지 프로토콜( ICMP)

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

Page 18: 인터넷 제어 메시지 프로토콜( ICMP)

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

Page 19: 인터넷 제어 메시지 프로토콜( ICMP)

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) 』 과 동일하므로 생략함

Page 20: 인터넷 제어 메시지 프로토콜( ICMP)

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 비트

Page 21: 인터넷 제어 메시지 프로토콜( ICMP)

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; . . .

Page 22: 인터넷 제어 메시지 프로토콜( ICMP)

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);

Page 23: 인터넷 제어 메시지 프로토콜( ICMP)

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);

Page 24: 인터넷 제어 메시지 프로토콜( ICMP)

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

Page 25: 인터넷 제어 메시지 프로토콜( ICMP)

25

제 6 장 ICMP(Internet Control Message Protocol)

AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

IcmpViewer 실행화면

ICMP 헤더 ( 기본 포맷 ) 8 바이트ICMP 메시지 ( 헤더 + 데이터 ) 의 길이

Page 26: 인터넷 제어 메시지 프로토콜( ICMP)

26

제 6 장 ICMP(Internet Control Message Protocol)

AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

IcmpViewer 실행화면 리스트 컨트롤의 항목 클릭

ICMP 메시지의 데이터영역의 값

Page 27: 인터넷 제어 메시지 프로토콜( 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)

Page 28: 인터넷 제어 메시지 프로토콜( ICMP)

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 비트

Page 29: 인터넷 제어 메시지 프로토콜( ICMP)

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.