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