Chapter 6: 인터넷 제어 메시지 프로토콜(ICMP) 2003. 5..

Slides:



Advertisements
Similar presentations
AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www. nms4you.com 1 AMAN2002 추가 기능 실습 Chapter 13:
Advertisements

HTTP (Hypertext Transfer Protocol)
Part TCP / IP(계속) 3. IP 주소 4. IP 라우팅 5. 응용 프로토콜.
16장 X.25 패킷 교환망 16.1 X.25 계층 구조 16.2 패킷 계층 프로토콜 16.3 요약.
Chapter 4: 이더넷 (Ethernet)
Next Generation: IPv6 and ICMPv6
차세대 IPv6와 ICMPv 데이터그램 25.2 단편화 25.3 옵션 25.4 검사합 25.5 IP 설계
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 11장 프로세스간 통신 인공지능실험실 석사 2학기 이희재
Network Lab. Young-Chul Hwang
Chapter 2. IP Address IP Address의 구성에 대한 자세한 설명과 함께 IP Address를 효율적으로 관리하기 위한 방법인 서브넷팅, 수퍼넷팅, VLSM 등에 대해서 단계별로 접근할 수 있다. 몇가지 예제를 통해서 서브넷팅에 대한 개념을 정리하고.
20 장 네트워크층 프로토콜 : ARP, IPv4, ICMP, IPv6, ICMPv6
제 9 장 ICMP 목원대학교 정보통신공학과 이 명 선.
Internet Control Message Protocol (ICMP)
제 7장 정적 라우팅 프로토콜.
24 장 TCP/IP 24.1 개요 24.2 네트워크층 24.3 주소 지정 24.4 서브넷팅틍
DPR-1630&1615 IP공유기 셋팅 방법 고객지원팀 작성자 : 정청석.
FTP (File Transfer Protocol)
VoIP (Voice Over Internet Protocol)
9장 데이터 링크층 개요 (Introduction To Data-Link Layer)
제 14장 Multicast & Broadcast
Traceroute 기능 분석 및 프로그래밍
Chapter 3: AMAN 2002 구성 및 사용법
Internet Control Message Protocol Version 4 (ICMPv4)
제 15 장 점 대 점 프로토콜 15.1 천이상태 15.2 PPP 계층 15.3 링크 제어 프로토콜 15.4 인증
UDP (User Datagram Protocol)
15장 X.25 패킷 교환망 15.1 X.25 계층 15.2 X.25와 관련된 기타 프로토콜 15.3 요약.
IP.
Chapter 21 Network Layer: ARP, ICMP (IGMP).
제 6 장 인터넷 제어 메시지 프로토콜.
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
ARP Project 조 충 호 교수님 김 세 진 조교님 조 진 형 변 익 수
Socket Address Structure and Byte Ordering Functions
Socket Address Structure and Byte Ordering Functions
17장 X.25 패킷 교환망 17.1 X.25 계층 17.2 X.25와 관련된 기타 프로토콜 17.3 요약.
Chapter 5 UDP Socket 소켓 프로그래밍.
WOL(Wake-On Lan) 컴퓨터공학과 4학년 박기웅.
제 7 장 인터넷 프로토콜 : IP 7.1 데이터그램 7.2 단편화 7.3 옵션 7.4 검사합 7.5 IP 설계 7.6 요약.
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
22 장 전송층(Transport Layer)
제 15 장 BOOTP와 DHCP BOOTP 15.2 동적 호스트 설정 프로토콜.
ACL(Access Control List)
21 장 전송층(Transport Layer)
TCP/IP 네트워크 구조 TCP/IP 개요 TCP/IP 프로토콜 한빛미디어(주).
9 TCP의 이해 학습 목표 전송 계층 프로토콜이 제공하는 기능을 이해한다.
TCP/IP TCP/IP의 이해 TCP UDP IP 한빛미디어(주).
TCP/IP 인터네트워킹 INTERNETWORKING with TCP/IP <vol
Network 네트워크 이론 및 실습 TCP / IP 4장.
8 네트워크 계층 프로토콜 학습 목표 IPv6의 필요성과 헤더 구조를 이해한다. 이동 IP 프로토콜의 터널링 원리를 이해한다.
Chapter 26 IP over ATM.
01. 개요 네트워크에 있는 컴퓨터와 그룹에 대한 NetBIOS 이름에 대응되는 IP 주소를 찾아주는 서비스
Ping Test.
TCP/IP 인터네트워킹 INTERNETWORKING with TCP/IP <vol
Chapter 27 Mobile IP.
연습 문제 풀이 HTTP 메시지의 종류 요청/ 응답 구별  메소드로 시작되므로 요청 메시지임
라우터의 이해 (보충자료) TCP/IP구성 Ping명령어를 이용한 연결검사 비트와 바이트 10진수/2진수/16진수
통신프로토콜 전산정보학부 모바일인터넷과 권 춘 우
통신프로토콜 전산정보학부 모바일인터넷과 권 춘 우
Part TCP / IP 1. TCP / IP 프로토콜 2. 기본 프로토콜.
7 IP 프로토콜의 이해 학습 목표 네트워크 계층의 필요성과 역할을 이해한다.
제 13 장 인터넷 그룹 관리 프로토콜 정보통신연구실.
제 9 장 ICMP 9.1 메시지 유형 9.2 메시지 형식 9.3 오류 보고 9.4 질의 9.5 검사합 9.6 ICMP 설계
제 6 장 IP 패킷 전달과 라우팅 6.1 연결형 서비스와 비연결형 서비스 6.2 직접 전달과 간접 전달 6.3 라우팅 방법
5.2.3 교환방식의 비교 학습내용 교환방식의 비교.
인공지능실험실 박사 1학기 장성만 TCP/IP Socket Programming… 제 8장 도메인 이름과 인터네 주소 인공지능실험실 박사 1학기 장성만
4. IP 데이터그램과 라우팅 (6장. 인터넷과 IP) IP 데이터그램 : 특정 물리망에 종속되지 않은 가상의 패킷 형식.
Network Lab. Young-Chul Hwang
통신프로토콜 전산정보학부 모바일인터넷과 권 춘 우
6. 오류 보고 체계 (ICMP) (6장. 인터넷과 IP)
ARP.
Presentation transcript:

Chapter 6: 인터넷 제어 메시지 프로토콜(ICMP) 2003. 5.

인터넷 제어 메시지 프로토콜 IP네트워크에서 네트워크 문제에 관한 정보를 전달하기 위해 사용하는 프로토콜 (지속적 문제의 회피 가능) 예) 라우터에서 발생한 에러를 송신측으로 전달 IP 데이터그램에 캡슐화 되어 전송 ICMP 메시지 IP 헤더 Ethernet 헤더 Ethernet 데이터 IP 데이터 트레일러 <ICMP 메시지 캡슐화>

나머지 헤더 (Rest of the header) ICMP 메시지 포맷 타입(Type) – 메시지의 종류를 15개로 구분 (대 분류) 코드(Code) – 메시지의 종류를 보다 세분화 (소 분류) 체크 섬(Checksum) – 메시지의 오류 검사 나머지 헤더 – 타입과 코드 값에 따라 변경됨 16 31 정보(Data) 코드(Code) 체크 섬 (Checksum) 나머지 헤더 (Rest of the header) 타입(Type) 8 바이트

ICMP 메시지의 종류 ICMP 메시지의 분류 기준 타입(Type): 대 분류 코드(Code): 소 분류 설 명 질의 에러 echo reply(ping reply) : 에코응답  3 destination unreachable : 목적지 도달 불능 network unreachable 1 host unreachable 2 protocol unreachable port unreachable 이하 생략

ICMP 메시지의 종류 에러(error) 보고용 메시지 질의(query)용 메시지 IP 패킷 처리 도중 발생한 문제를 보고할 때 사용 Destination unreachable, source quench… 질의(query)용 메시지 다른 호스트로부터 특정 정보를 획득하기 위해 사용 네트워크 문제 진단 및 타임스탬프 요청과 같은 질의에 사용

에러 보고용 메시지 에러 보고용 메시지의 종류 라우터가 데이터그램을 라우팅 할 수 없을 때 Destination Unreachable 라우터가 데이터그램을 라우팅 할 수 없을 때 호스트가 데이터그램을 전달할 수 없을 때 Source Quench 혼잡으로 인해 데이터그램의 폐기를 알림 Error Reporting Redirection 라우터가 최적 경로를 사용하지 않는 호스트 발견 시 최적 경로를 알리기 위해 사용 Time Exceeded IP 헤더의 TTL 필드 값 만료를 나타냄 Parameter Problems 데이터그램의 헤더 에러 문제 발생시 사용

에러 보고용 메시지 특징: Traffic 최소화 노력 ICMP 에러 메시지를 전달하는 데이터그램에 대해서는 ICMP 에러 메시지를 생성하지 않음 목적지 IP주소에 브로드 캐스트나 멀티 캐스트 주소를 가진 데이터그램에 대해서는 에러 메시지가 생성되지 않음 출발지 IP주소에 ‘127.0.0.1’ 이나 ‘0.0.0.0’과 같은 불특정한 주소를 가진 데이터그램에 대해서는 에러 메시지가 생성되지 않음 단편화 된 데이터그램에서는 첫번째 단편에만 에러 메시지 생성

질의용 메시지 질의용 메시지의 종류 IP 호스트의 진단에 사용 두 시스템간에 IP 데이터그램이 오고 가는데 Echo request and reply IP 호스트의 진단에 사용 Timestamp request and reply 두 시스템간에 IP 데이터그램이 오고 가는데 필요한 왕복시간(Round Trip Time)을 결정 Query Address mask request and reply 호스트가 라우터에게 서브넷 마스크 요청 Router solicitation and advertisement 다른 네트워크의 호스트에게 데이터 전송 시 자신의 네트워크에 연결된 라우터 주소 요청

ping 프로그램 실행 ping? AMAN2002 WinPing 실행 특정 호스트(IP)가 정상 작동 중인지 확인 ICMP Echo request/reply 메시지를 이용 AMAN2002 WinPing 실행 Packet Observer로 캡처 ICMP 메시지 분석

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

순서 번호(Sequence number) ICMP 메시지 분석 Type / Code Type - 8, Code - 0  Echo Request(Ping Request) 메시지(교재, 표 6.1 참고) ICMP Echo Request/Reply 메시지 포맷 16 31 순서 번호(Sequence number) 식별자(Identifier) 정보(Data) 코드 (0) 체크 섬(Checksum) 타입 (8 or 0) 8 바이트 타입 8 – Request 0 – Reply

ICMP 메시지 분석 체크 섬 식별자: 고유 세션 식별 번호 순서번호: 동일 식별자를 가진 메시지들 구분 0xD9F3(55795) 식별자: 고유 세션 식별 번호 0x2C07(11271) 순서번호: 동일 식별자를 가진 메시지들 구분 0x0100(256) ※ ping을 수행하는 근원지/목적지 주소, 프로토콜 정보는 IP 데이터그램헤더에 나타남

64bits or Original Datagram Header 연습 문제 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

연습 문제 ICMP 헤더 인터넷헤더 데이터그램 헤더 타입/코드  체크 섬  ※ 패킷의 값은 10진수로 표현하시오. ICMP 헤더 타입/코드  체크 섬  인터넷헤더 송신지 IP . . . 에서 수신지 . . . 로 전송 상위의 프로토콜로 전달됨 데이터그램 헤더 송신지 포트 번에서 수신지 포트 번으로 전달

Guru를 이용한 ICMP 분석 연습

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

대화상자 디자인 1 List Control 2 3 4 5 6 7 Button Edit Box

Control 속성 # 종류 ID 속성 변수이름 1 List Control IDC_LIST View: Report m_ListIcmpPacketInfo 2 Edit Box IDC_EDIT_DataSection Read-only m_EDIT_strDataSection 3 IDC_EDIT_Monitoring m_EDIT_iCountInput 4 IDC_EDIT_Monitored m_EDIT_iCountOutput 5 Button IDC_BUTTON_Start 6 IDCANCEL Default Button 7 IDC_BUTTON_Info

이벤트 처리 ※ 어댑터 오픈 대화상자 표시, 어댑터 열기, 패킷 캡처, 어댑터 닫기 # 종류 ID 메시지 함수 명 1 List Control IDC_LIST NM_CLICK OnClickList() 20 Button IDC_BUTTON_Start BN_CLICKED OnBUTTONStart() 21 IDCANCEL OnCancel() 22 IDC_BUTTON_Info OnBUTTONInfo() ※ 어댑터 오픈 대화상자 표시, 어댑터 열기, 패킷 캡처, 어댑터 닫기 함수의 설명은 『ch04. 이더넷(Ethernet)』 과 동일하므로 생략함

(IP 데이터그램의 전체크기 – IpHLen) 바이트 패킷 분석 ICMP 헤더의 시작지점 arrTemp[0] arrTemp[14] arrTemp[14 + IpHLen] 14바이트 (IP 데이터그램의 전체크기 – IpHLen) 바이트 arrTemp 이더넷 헤더 IP 헤더 ICMP 메시지(헤더+데이터) arrTemp[14+9] 프로토콜 필드 1 → ICMP arrTemp[14]의 하위 4비트 헤더길이 : IpHLen arrpTemp[16], arrTemp[17] IP 데이터그램의 전체크기 필드 ICMP 메시지크기 = IP데이터그램의 전체길이 – IpHLen

패킷 분석 . . . // 하나의 패킷을 획득하여 arrTemp에 입력. 에러 시 음수 리턴 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;

패킷 분석 CString strIcmpType = _T(""); 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);

패킷 분석 // ICMP의 나머지 헤더 부분 출력 CString strIcmpRestOfHeader; 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);

패킷 분석 // ICMP 메시지의 데이터 구간 정보 출력 ICMP 헤더 ICMP 데이터 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

IcmpViewer 실행화면 ICMP 메시지(헤더+데이터)의 길이 ICMP 헤더(기본 포맷)  8 바이트

IcmpViewer 실행화면 리스트 컨트롤의 항목 클릭 ICMP 메시지의 데이터영역의 값

IcmpViewer를 이용한 ICMP 메시지 분석 4번 항목 분석 Type  3 (목적지 도달 불능,Destination Unreachable) Code  3 (Port Unreachable) ※Type과 Code값에 따른 ICMP 메시지 유형 교재 혹은 AMAN2002 온라인 도움말(RFC  ICMP  RFC 792)

IcmpViewer를 이용한 ICMP 메시지 분석 Checksum  0x1CC0 나머지 헤더  사용하지 않으므로 0임 데이터(IP헤더 + 데이터그램 첫 64비트) 라우터나 호스트가 목적지 도달 불능 메시지를 송신한 쪽으로 전달할 때 수신측에서 받은 IP 데이터그램을 동봉하여 송신측으로 전송함 UDP 목적지 포트번호 0x0089번을 사용하여 목적지 호스트에 접속할 수 없음을 의미함 IP 헤더 데이터그램(UDP) 의 첫 64비트

참고 문헌 서승호 외, 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.