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

Download Report

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

www.nms4you.com
AMAN2002를 이용한
TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
Chapter 7:
Traceroute 기능 분석 및
프로그래밍
2003. 3.
1
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
Traceroute



패킷이 목적지에 도달하는 경로를 추적하는 프로
그램
자신의 컴퓨터가 목적지에 도달하기까지 거치게
되는 게이트웨이를 기록
사용 목적


호스트 사이의 라우팅 문제를 파악
인터넷 상의 문제가 되는 네트워크를 파악
제7장 Traceroute 기능 분석 및 프로그래밍
2
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
Traceroute의 동작원리

IP의 TTL(Time-to-live) 필드와 ICMP 패킷 이용

TTL ?
 패킷 전송 중에 라우팅 프로토콜의 이상으로 경로상에
무한 루프가 발생하는 현상을 방지하기 위한 필드
 IP 패킷 전송 시 64로 설정
 패킷이 라우터에 도착하면 1씩 감소시켜 다음 홉(next
hop)으로 전송
 특정 라우터에 TTL이 0이거나 1인 패킷이 도착하면
이 라우터는 타입이 11이고 코드가 0인 ICMP 시간초
과 메시지를 송신한 쪽으로 전달함
제7장 Traceroute 기능 분석 및 프로그래밍
3
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
Traceroute의 동작원리

TTL을 1로 설정한 ICMP echo request 패킷 전송


TTL을 2로 설정한 ICMP echo request 패킷 전송


첫번째 라우터에서 ICMP 시간초과 메시지 반송
 시간초과 메시지에는 라우터의 이름과 IP 주소를 포함
경로상의 두번째 라우터에서 ICMP 시간초과 메시지 반
송
최종 목적지에 도달할 때까지 TTL 필드 값을 1씩
증가시켜가면서 echo request 전송-ICMP 시간
초과 메시지 반송
제7장 Traceroute 기능 분석 및 프로그래밍
4
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
Traceroute의 동작
송신측
호스트
목적지
호스트
ICMP 반향
요청 메시지
ICMP 시간
초과 메시지
< TTL 값이 1일 때 >
송신측
호스트
ICMP 반향
요청 메시지
목적지
호스트
ICMP 시간
초과 메시지
< TTL 값이 2일 때 >
제7장 Traceroute 기능 분석 및 프로그래밍
5
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
Traceroute의 동작
송신측
호스트
ICMP 반향
요청 메시지
목적지
호스트
ICMP 반향
응답메시지
< TTL 값이 3(최종 목적지)일 때 >
제7장 Traceroute 기능 분석 및 프로그래밍
6
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
MS-DOS창에서 Traceroute 실행

www.yahoo.co.kr 사이트로 traceroute 실행

MS-DOS에서 제공하는 Traceroute 프로그램 “ tracert ” 사용방법
 교재 495쪽, 부록 1의 6번 참고
홉수
지연 시간
라우터의 IP 주소
제7장 Traceroute 기능 분석 및 프로그래밍
7
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
AMAN2002 Traceroute 실행
[1] Traceroute를 수행할 대상이 되는 호스트의 IP 주소나 호스트 이름
[2] Traceroute 실행 시작
[3] Traceroute 중지
[4] 체크박스가 설정되어 있으면 게이트웨이의 이름을 얻어옴
[5] Host Name이 표시된 항목을 선택하면 버튼이 활성화되고 버튼을 클릭하면 HostName의
Whois 정보가 나타남
[6] 도움말을 보여줌
[7] Traceroute 윈도우를 닫음
[8] Traceroute를 수행한 결과를 보여줌.
제7장 Traceroute 기능 분석 및 프로그래밍
8
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
AMAN2002 Traceroute 실행

Whois 정보 조회
제7장 Traceroute 기능 분석 및 프로그래밍
9
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
Traceroute에 대한 패킷 캡처
첫번째 라우터에 ICMP Echo Request 요청
송신지 주소 : 210.98.189.23
ICMP 헤더 : 08 00 92 3E C0 07 01 00
TTL: 1
수신지 주소 : 211.32.119.151
제7장 Traceroute 기능 분석 및 프로그래밍
10
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
Traceroute에 대한 패킷 캡처



필드
16진수
10진수
TTL
01
1
Protocol
01
1
송신지 주소
D2 62 BD 17
210.98.189.23
수신지 주소
D3 20 77 97
211.32.119.151
ICMP 헤더 : 타입
08
8
ICMP 헤더 : 코드
00
0
ICMP 헤더의 타입이 8이므로 ICMP Echo Request 메시지임
TTL이 1이므로 첫번째 라우터의 ICMP 메시지에 대한 응답을 기
대함
목적지 주소는 www.yahoo.co.kr(211.32.119.151) 임
제7장 Traceroute 기능 분석 및 프로그래밍
11
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
Traceroute에 대한 패킷 캡처
ICMP Echo Request에 대한 첫번째 라우터의 응답
수신지 주소 : 210.98.189.23
송신지 주소 : 211.171.203.1
ICMP 헤더 : 0B 00 99 B9 00 00 00 00
제7장 Traceroute 기능 분석 및 프로그래밍
12
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
Traceroute에 대한 패킷 캡처



필드
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
0
ICMP 헤더의 타입이 0x11이므로 ICMP Time Exceed 메시지임
첫번째 라우터의 IP 주소는 송신지 주소(211.171.203.1)임
수신지 주소는 ICMP Echo Request를 호출한 210.98.189.23 임
제7장 Traceroute 기능 분석 및 프로그래밍
13
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
연습 문제

WinTraceroute를 실행하여 목적지 호스트에 도달하기까
지의 네트워크 경로를 그림으로 나타내어 보라.

전송하는 패킷의 TTL 값, ICMP 메시지와 관련시킬 것
제7장 Traceroute 기능 분석 및 프로그래밍
14
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
ping 프로그램 작성
《WinPing》
※ 프로젝트 생성 및 라이브러리 경로 설정은
『ch04. 이더넷(Ethernet)』의 “이더넷 캡처 프로그램 작성”과 동일
제7장 Traceroute 기능 분석 및 프로그래밍
15
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
프로젝트 설정

Microsoft Visual C++ 6.0의 메뉴에서 Project  Settings
 Link 탭  Object/library modules:

nmicmpd.lib 추가
제7장 Traceroute 기능 분석 및 프로그래밍
16
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
대화상자 디자인
3
1
4
2
Edit Box
5
6
7
Button
제7장 Traceroute 기능 분석 및 프로그래밍
17
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
대화상자 디자인
8
9
10
11
12
제7장 Traceroute 기능 분석 및 프로그래밍
18
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
Control 속성
#
종류
ID
속성
변수이름
1
Edit Box
IDC_EDIT_IPAddr
m_EDIT_ADDR
2
Edit Box
IDC_EDIT_Message
3
Button
IDC_BUTTON_Ping
4
Button
IDC_BUTTON_Option
5
Button
IDC_BUTTON_Info
6
Button
IDC_BUTTON_Help
7
Button
IDOK
8
Edit Box
IDC_BufferSize
m_Buffersize
9
Edit Box
IDC_Timeout
m_MaxHops
10
Edit Box
IDC_MaxHops
m_pingTimeout
11
Button
IDOK
Default Button
12
Button
IDCANCEL
Default Button
Read-only
m_EDIT_Message
Default Button
제7장 Traceroute 기능 분석 및 프로그래밍
19
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
이벤트 처리
#
종류
ID
메시지
함수 명
3
Button
IDC_BUTTON_Ping
BN_CLICKED
OnBUTTONPing()
4
Button
IDC_BUTTON_Option
BN_CLICKED
OnBUTTONOption()
5
Button
IDC_BUTTON_Info
BN_CLICKED
OnBUTTONInfo()
6
Button
IDC_BUTTON_Help
BN_CLICKED
OnBUTTONHelp()
제7장 Traceroute 기능 분석 및 프로그래밍
20
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
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;
제7장 Traceroute 기능 분석 및 프로그래밍
21
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
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;
}
제7장 Traceroute 기능 분석 및 프로그래밍
22
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
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);
}
제7장 Traceroute 기능 분석 및 프로그래밍
23
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
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);
}
제7장 Traceroute 기능 분석 및 프로그래밍
24
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
Winping 실행화면
WinPing 예제 프로그램 실행 화면
속성 설정 대화상자
제7장 Traceroute 기능 분석 및 프로그래밍
25
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
Traceroute 프로그램 작성
《WinTraceroute》
※ 프로젝트 생성 및 라이브러리 경로 설정은
『ch04. 이더넷(Ethernet)』의 “이더넷 캡처 프로그램 작성”과 동일
제7장 Traceroute 기능 분석 및 프로그래밍
26
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
프로젝트 설정

Microsoft Visual C++ 6.0의 메뉴에서 Project  Settings
 Link 탭  Object/library modules:

nmtrtd.lib 추가
제7장 Traceroute 기능 분석 및 프로그래밍
27
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
대화상자 디자인
3
1
4
2
Edit Box
5
6
Button
제7장 Traceroute 기능 분석 및 프로그래밍
28
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
Control 속성
#
종류
ID
속성
1
Edit Box
IDC_EDIT_IPAddr
2
Edit Box
IDC_EDIT_Message
3
Button
IDC_BUTTON_Traceroute
4
Button
IDC_BUTTON_INFO
5
Button
IDC_BUTTON_HELP
6
Button
IDOK
변수이름
m_EDIT_IPAddr
Read-only
m_EDIT_Message
Default Button
이벤트 처리
#
종류
ID
메시지
함수 명
3
Button
IDC_BUTTON_Traceroute
BN_CLICKED
OnBUTTONTraceroute()
4
Button
IDC_BUTTON_INFO
BN_CLICKED
OnButtonInfo()
5
Button
IDC_BUTTON_HELP
BN_CLICKED
OnButtonHelp()
제7장 Traceroute 기능 분석 및 프로그래밍
29
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
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";
제7장 Traceroute 기능 분석 및 프로그래밍
30
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
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;
}
제7장 Traceroute 기능 분석 및 프로그래밍
31
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
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);
}
제7장 Traceroute 기능 분석 및 프로그래밍
32
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
WinTraceroute 실행화면
WinTraceroute 실행화면
제7장 Traceroute 기능 분석 및 프로그래밍
33
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.
제7장 Traceroute 기능 분석 및 프로그래밍
34