Traceroute 기능 분석 및 프로그래밍

Slides:



Advertisements
Similar presentations
법의 이념과 철학의 이해 법의 이념은 무엇일까 ? 정의 : 각자에게 각자의 몫을 주는 것 - 평등의 의미가 내포되어 있음 법적 안정성 : 법의 규정이 명확하고 잦은 변경 이 없어야 함 개인의 자유와 권리를 공공복지와 조화롭게 추구 – 사회질서와 안전유지 + 사회정의.
Advertisements

AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www. nms4you.com 1 AMAN2002 추가 기능 실습 Chapter 13:
프로젝트 보고서 학과 : 임학과 학번 : 성명 : 조성환 Windows 프로그래밍.
멀티미디어 서비스를 위한 IP 네트워크 순천향대학교 정보기술공학부 이 상 정
조준희 (Cho, Junhee) TCP/IP 조준희 (Cho, Junhee)
TCP/IP 통신망 특론 3장 인터넷프로토콜( IP ).
Internet Protocol Version4
Chapter 8 Authorization
TCP/IP 네트워크 제 26 장 Telnet과 Rlogin 정보통신연구실.
Chapter 4: 이더넷 (Ethernet)
제 13 장 인터넷 그룹 관리 프로토콜.
Chapter 7 Networking.
컴퓨터 네트워크 Chapter 5-2 컴퓨터 네트워크.
Next Generation: IPv6 and ICMPv6
Chapter 06. 프로토콜.
다이얼로그 박스와 컨트롤 컴퓨터 계측 및 실습.
제 12 장 브로드캐스팅과 멀티캐스팅.
Lab 3 Guide: 교재 4장 대화상자 예제. - 프로파일 입력 ( 쪽)
TCP/IP 네트워크 제 8장 Traceroute 프로그램 정보통신연구실.
Dept. of Computer Engineering, Hannam Univ. Won Goo Lee
Chapter 08. 네트워크 관리.
DHCP 배진경 손혜란 최혜자.
20 장 네트워크층 프로토콜 : ARP, IPv4, ICMP, IPv6, ICMPv6
Internet Group Management Protocol (IGMP)
제 9 장 ICMP 목원대학교 정보통신공학과 이 명 선.
Internet Control Message Protocol (ICMP)
PART 01 개념 컴퓨터 네트워크 Chapter 3 OSI 참조모델과 인터넷 임효택.
FTP (File Transfer Protocol)
Chapter 02 네트워크에 대한 이해.
FTP 중앙대학교 안 봉 현
Chapter 11. Raw 소켓.
Chapter 6: 인터넷 제어 메시지 프로토콜(ICMP)
Chapter 3: AMAN 2002 구성 및 사용법
12 장 점 대 점 접근 : PPP 12.1 점 대 점 프로토콜 12.2 PPP 스택 12.3 요약.
Window socket programming
UDP (User Datagram Protocol)
Chapter 05 목록화.
정보보호 실습 #2 네트워크 스캐닝 Choong Seon Hong Networking Lab.
세미나.. NETWORK??!! 저자 : 장경칩 도전하라 창조의 세계로(SINCE 1992) - 장경칩.
IP (Internet Protocol)
Network Management 김대환 김태훈 김숙흔 이근민.
Network Layer: ARP, ICMP (IGMP).
PART 01 개념 컴퓨터 네트워크 Chapter 3 OSI 참조모델과 인터넷 임효택.
3부 해킹 전 정보 획득 Chapter 6. 풋프린팅과 스캔
DHCP 박윤환 윤준호.
시스템 운영계획 통신 케이블 제작 엑세스 포인트, 스위치, 라우터 설치 및 환경구성
9장 데이터링크층 소개 (Introduction To Data-Link Layer)
TCP/IP 인터네트워킹 INTERNETWORKING with TCP/IP <vol
제 24 장 그 밖의 TCP 기능과 성능 정보통신연구실.
Chapter 5. 인터넷으로의 연결 라우터 이야기
User Datagram Protocol (UDP)
TCP/IP 네트워크 구조 TCP/IP 개요 TCP/IP 프로토콜 한빛미디어(주).
ODBC &DAO 안명상.
네트워크 설치 전 확인 사항 INTERNET INTERNET 인터넷 모뎀 (KT, SK , LG 등등 )
Lab 9 Guide: 인터넷 프로그래밍 예제 * 일대일 채팅 프로그램 (교재 27장, 쪽)
기술가정 2학년 2학기 4.컴퓨터와 생활 > 2) 인터넷의 활용 > 1/7 인터넷이란 무엇일까.
초기화면 인터넷의 이해 Ⅳ. 컴퓨터와 생활> 2. 인터넷의 활용> 기술·가정 2학년 2학기
시스코 네트워킹 (CCNA) 5주차.
윤성우의 열혈 TCP/IP 소켓 프로그래밍 윤성우 저 열혈강의 TCP/IP 소켓 프로그래밍 개정판
8 네트워크 계층 프로토콜 학습 목표 IPv6의 필요성과 헤더 구조를 이해한다. 이동 IP 프로토콜의 터널링 원리를 이해한다.
제 12 장 브로드캐스팅과 멀티캐스팅 정보통신연구실.
Internet 유선 랜카드 A 회사 네트워크 장비 (인터넷 공유 기능 활성화)
TCP/IP 인터네트워킹 INTERNETWORKING with TCP/IP <vol
Part TCP / IP 1. TCP / IP 프로토콜 2. 기본 프로토콜.
Chapter 17 BOOTP and DHCP.
제 9 장 ICMP 9.1 메시지 유형 9.2 메시지 형식 9.3 오류 보고 9.4 질의 9.5 검사합 9.6 ICMP 설계
Information Security - Network Scanning.
컨트롤, 프로퍼티, 이벤트.
매물장 로그인 직원을 미리 생성하시면 직원 ID로 로그인 가능.
6. 오류 보고 체계 (ICMP) (6장. 인터넷과 IP)
Presentation transcript:

Traceroute 기능 분석 및 프로그래밍 Chapter 7: Traceroute 기능 분석 및 프로그래밍 2003. 3.

Traceroute 패킷이 목적지에 도달하는 경로를 추적하는 프로그램 자신의 컴퓨터가 목적지에 도달하기까지 거치게 되는 게이트웨이를 기록 사용 목적 호스트 사이의 라우팅 문제를 파악 인터넷 상의 문제가 되는 네트워크를 파악

Traceroute의 동작원리 IP의 TTL(Time-to-live) 필드와 ICMP 패킷 이용 TTL ? 패킷 전송 중에 라우팅 프로토콜의 이상으로 경로상에 무한 루프가 발생하는 현상을 방지하기 위한 필드 IP 패킷 전송 시 64로 설정 패킷이 라우터에 도착하면 1씩 감소시켜 다음 홉(next hop)으로 전송 특정 라우터에 TTL이 0이거나 1인 패킷이 도착하면 이 라우터는 타입이 11이고 코드가 0인 ICMP 시간초과 메시지를 송신한 쪽으로 전달함

Traceroute의 동작원리 TTL을 1로 설정한 ICMP echo request 패킷 전송 시간초과 메시지에는 라우터의 이름과 IP 주소를 포함 TTL을 2로 설정한 ICMP echo request 패킷 전송 경로상의 두번째 라우터에서 ICMP 시간초과 메시지 반송 최종 목적지에 도달할 때까지 TTL 필드 값을 1씩 증가시켜가면서 echo request 전송-ICMP 시간초과 메시지 반송

Traceroute의 동작 < TTL 값이 1일 때 > < TTL 값이 2일 때 > 목적지 호스트 송신측 호스트 목적지 호스트 ICMP 시간초과 메시지 ICMP 반향 요청 메시지 < TTL 값이 1일 때 > ICMP 시간초과 메시지 ICMP 반향 요청 메시지 송신측 호스트 목적지 호스트 < TTL 값이 2일 때 >

Traceroute의 동작 < TTL 값이 3(최종 목적지)일 때 > 목적지 호스트 송신측 호스트 ICMP 반향 응답메시지 ICMP 반향 요청 메시지 송신측 호스트 목적지 호스트 < TTL 값이 3(최종 목적지)일 때 >

MS-DOS창에서 Traceroute 실행 www.yahoo.co.kr 사이트로 traceroute 실행 MS-DOS에서 제공하는 Traceroute 프로그램 “ tracert ” 사용방법  교재 495쪽, 부록 1의 6번 참고 홉 수 지연 시간 라우터의 IP 주소

AMAN2002 Traceroute 실행 [1] Traceroute를 수행할 대상이 되는 호스트의 IP 주소나 호스트 이름 [4] 체크박스가 설정되어 있으면 게이트웨이의 이름을 얻어옴 [5] Host Name이 표시된 항목을 선택하면 버튼이 활성화되고 버튼을 클릭하면 HostName의 Whois 정보가 나타남 [6] 도움말을 보여줌 [7] Traceroute 윈도우를 닫음 [8] Traceroute를 수행한 결과를 보여줌.

AMAN2002 Traceroute 실행 Whois 정보 조회

Traceroute에 대한 패킷 캡처 첫번째 라우터에 ICMP Echo Request 요청 TTL: 1 송신지 주소 : 210.98.189.23 수신지 주소 : 211.32.119.151 ICMP 헤더 : 08 00 92 3E C0 07 01 00 첫번째 라우터에 ICMP Echo Request 요청

Traceroute에 대한 패킷 캡처 ICMP 헤더의 타입이 8이므로 ICMP Echo Request 메시지임 TTL이 1이므로 첫번째 라우터의 ICMP 메시지에 대한 응답을 기대함 목적지 주소는 www.yahoo.co.kr(211.32.119.151) 임 필드 16진수 10진수 TTL 01 1 Protocol 송신지 주소 D2 62 BD 17 210.98.189.23 수신지 주소 D3 20 77 97 211.32.119.151 ICMP 헤더 : 타입 08 8 ICMP 헤더 : 코드 00

Traceroute에 대한 패킷 캡처 ICMP Echo Request에 대한 첫번째 라우터의 응답 송신지 주소 : 211.171.203.1 수신지 주소 : 210.98.189.23 ICMP 헤더 : 0B 00 99 B9 00 00 00 00 ICMP Echo Request에 대한 첫번째 라우터의 응답

Traceroute에 대한 패킷 캡처 ICMP 헤더의 타입이 0x11이므로 ICMP Time Exceed 메시지임 첫번째 라우터의 IP 주소는 송신지 주소(211.171.203.1)임 수신지 주소는 ICMP Echo Request를 호출한 210.98.189.23 임 필드 16진수 10진수 Protocol 01 1 송신지 주소 D3 AB CB 01 211.171.203.1 수신지 주소 D2 62 BD 17 210.98.189.23 ICMP 헤더 : 타입 11 17 ICMP 헤더 : 코드 00

연습 문제 WinTraceroute를 실행하여 목적지 호스트에 도달하기까지의 네트워크 경로를 그림으로 나타내어 보라. 전송하는 패킷의 TTL 값, ICMP 메시지와 관련시킬 것

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

프로젝트 설정 Microsoft Visual C++ 6.0의 메뉴에서 Project  Settings  Link 탭  Object/library modules: nmicmpd.lib 추가

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

대화상자 디자인 8 9 10 11 12

Control 속성 # 종류 ID 속성 변수이름 1 Edit Box IDC_EDIT_IPAddr m_EDIT_ADDR 2 IDC_EDIT_Message Read-only m_EDIT_Message 3 Button IDC_BUTTON_Ping 4 IDC_BUTTON_Option 5 IDC_BUTTON_Info 6 IDC_BUTTON_Help 7 IDOK Default Button 8 IDC_BufferSize m_Buffersize 9 IDC_Timeout m_MaxHops 10 IDC_MaxHops m_pingTimeout 11 12 IDCANCEL

이벤트 처리 OnBUTTONPing() # 종류 ID 메시지 함수 명 3 Button IDC_BUTTON_Ping BN_CLICKED OnBUTTONPing() 4 IDC_BUTTON_Option OnBUTTONOption() 5 IDC_BUTTON_Info OnBUTTONInfo() 6 IDC_BUTTON_Help OnBUTTONHelp()

Winping 프로그램 코드 작성 ///////////////////////////////////////////////////////////////////////////////////////////// // Nmicmpd 라이브러리를 이용하여 ping을 수행하는 함수 void CWinpingDlg::OnBUTTONPing() { // 사용자 화면에 있는 값을 변수에 저장 UpdateData(TRUE); // 결과값을 담을 구조체 정의 t_PingResult *pPingResult = new t_PingResult(); // ping 실행 long lResult = m_CIcmpEcho.pingRequest(m_EDIT_ADDR, pPingResult); // 변수에 결과값을 저장 CString strTemp;

Winping 프로그램 코드 작성 strTemp.Format("%ld msec. %d%%(Loss). %s", pPingResult->lRoundTripTime, pPingResult->iLossRate, pPingResult->strError ); // 결과값을 Edit box에 표시 m_EDIT_Message = strTemp + "\r\n" + m_EDIT_Message ; UpdateData(FALSE); // 자원해제 delete pPingResult; }

Winping 프로그램 코드 작성 ///////////////////////////////////////////////////////////////////////////// // Ping에 대한 옵션을 설정하는 함수 void CWinpingDlg::OnBUTTONOption() { // 옵션 설정창을 띄움 int iResult = m_COptionsDlg.DoModal(); if (iResult != IDOK) return; // 옵션 설정창으로부터 전달받은 값을 CIcmpEcho 클래스로 전달함 UpdateData(TRUE); m_CIcmpEcho.setPingDataLength(m_COptionsDlg.m_BufferSize); m_CIcmpEcho.setPingTimeOut(m_COptionsDlg.m_PingTimeout); m_CIcmpEcho.setPingMaxHops(m_COptionsDlg.m_MaxHops); }

Winping 프로그램 코드 작성 ///////////////////////////////////////////////////////////////////////////// // WinPing 정보 대화상자 void CWinpingDlg::OnBUTTONInfo() { CAboutDlg CMyAboutDlg; CMyAboutDlg.DoModal(); } // AMAN 2002 도움말 호출 void CWinpingDlg::OnBUTTONHelp() ::ShellExecute(NULL, "open", (LPSTR)(LPCTSTR)"AMAN2002.chm", NULL, "C:\\AMAN2002\\", SW_SHOWNORMAL);

Winping 실행화면 WinPing 예제 프로그램 실행 화면 속성 설정 대화상자

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

프로젝트 설정 Microsoft Visual C++ 6.0의 메뉴에서 Project  Settings  Link 탭  Object/library modules: nmtrtd.lib 추가

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

Control 속성 이벤트 처리 # 종류 ID 속성 변수이름 1 Edit Box IDC_EDIT_IPAddr m_EDIT_IPAddr 2 IDC_EDIT_Message Read-only m_EDIT_Message 3 Button IDC_BUTTON_Traceroute 4 IDC_BUTTON_INFO 5 IDC_BUTTON_HELP 6 IDOK Default Button 이벤트 처리 # 종류 ID 메시지 함수 명 3 Button IDC_BUTTON_Traceroute BN_CLICKED OnBUTTONTraceroute() 4 IDC_BUTTON_INFO OnButtonInfo() 5 IDC_BUTTON_HELP OnButtonHelp()

WinTraceroute 프로그램 코드 작성 /////////////////////////////////////////////////////////////////////////////////////// // Nmtrtd 라이브러리를 이용하여 ping을 수행하는 함수 void CWintrtDlg::OnBUTTONTraceroute() { // 사용자 화면에 있는 값을 변수에 저장 UpdateData(TRUE); // 결과값을 담을 구조체 정의 t_TracerouteInfo *pTrtInfo = new t_TracerouteInfo[MAX_HOPS]; int iResult = m_CTraceroute.tracerouteRequest(m_EDIT_IPAddr, pTrtInfo); if (iResult>MAX_HOPS) // nResult는 MAX_HOPS 넘지 않는다. iResult = 0; // 변수에 결과값을 저장 m_EDIT_Message = "Seq\tDelay\tIP Address \r\n";

WinTraceroute 프로그램 코드 작성 CString strSeq; CString strDelay; CString strIpAddr; // 결과값을 Edit box에 표시 for (int i=0; i<iResult; i++) { strSeq.Format("%d", (pTrtInfo+i)->iSeq ); strDelay.Format("%d", (pTrtInfo+i)->iDelay ); strIpAddr = (pTrtInfo+i)->strIpAddr; m_EDIT_Message = m_EDIT_Message + strSeq + "\t" + strDelay + "\t" + strIpAddr + "\r\n"; UpdateData(FALSE); } // 자원해제 delete [] pTrtInfo;

WinTraceroute 프로그램 코드 작성 ///////////////////////////////////////////////////////////////////////////// // WinTraceroute 정보 대화상자 void CWintrtDlg::OnButtonInfo() { CAboutDlg CMyAboutDlg; CMyAboutDlg.DoModal(); } // AMAN 2002 도움말 호출 void CWintrtDlg::OnButtonHelp() ::ShellExecute(NULL, "open", (LPSTR)(LPCTSTR)"AMAN2002.chm", NULL, "C:\\AMAN2002\\", SW_SHOWNORMAL);

WinTraceroute 실행화면 WinTraceroute 실행화면

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