Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 ·...
Transcript of Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 ·...
1
www.nms4you.com
AMAN2002를 이용한
TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
OSI 참조 모델과 TCP/IP
2003. 3.
Chapter 1:
2제1장 OSI 참조 모델과 TCP/IP
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
수업 목표
Protocol의 정의
주요 용어 정리
OSI 참조 모델과 TCP/IP의 비교
프로토콜 캡슐화 및 역캡슐화
패킷 교환과 회선교환
TCP/IP 인터넷의 등장 배경 및 설계 이념
TCP/IP에서의 주소 표현 (물리 주소, IP 주소, Port 번호)
서브네팅과 슈퍼네팅
라우팅
3제1장 OSI 참조 모델과 TCP/IP
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
용어 정리
SAP (Service Access Point)
PDU (Protocol Data Unit)
Frame
IP Packet
IP Datagram
TCP Segment
Message
PSTN (Public Switched Telephone Network)
ISDN (Integrated Services Digital Network)
토폴로지 (Topology)
4제1장 OSI 참조 모델과 TCP/IP
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
국제 표준화 기구
ITU-T(구 CCITT)전화 팩시밀리, 공중 데이터 통신망 기술들의 표준화담당
ISO데이터 통신 프로토콜 및 컴퓨터 통신 프로토콜의 표준화, OSI(Open systems Interconnection) 7계층을 담당
IEEE근거리 데이터통신망 LAN(Local Area Network)의 하위 2계층(물리계층, 데이터 링크계층)의 표준화 담당
5제1장 OSI 참조 모델과 TCP/IP
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
프로토콜 (Protocol)
정확한 정보전달을 위한 일련의 표준화된 절차및 규범
무전기의 예
Over: 송신 완료 통지
Roger: 수신 완료 통지
프로토콜의 계층적 분류ISO의 OSI(Open System Interconnection)
IETF의 TCP/IP Protocol Suite
IBM의 SNA(System Network Architecture)
6제1장 OSI 참조 모델과 TCP/IP
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
프로토콜 분류의 필요성
복잡한 네트워킹 기능을 모듈화
프로토콜들 간의 관계 정립 가능
이종 프로토콜 집단 간의 비교 가능
TCP
UDPHTTP
FTPEthernet v2
IP Ethernet v2IP
TCP, UDPHTTP, FTP
7제1장 OSI 참조 모델과 TCP/IP
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
OSI 참조 모델
목표이기종 컴퓨터 간에도 통신이 가능한 개방형 시스템
상호 접속 모델(OSIRM: Open System Interconnection Reference Model) 제시
개념적인 모델 (실제 구현에서 반드시 지킨다고 볼 수없음)
표준화 기관ISO(International Organization for Standardization)
ITU(International Telecommunication Union)
8제1장 OSI 참조 모델과 TCP/IP
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
OSI 참조 모델
응용 계층
표현 계층
세션 계층
전송 계층
네트워크 계층
데이터링크 계층
물리 계층
응용 계층
표현 계층
세션 계층
전송 계층
네트워크 계층
데이터링크 계층
물리 계층
네트워크 계층
데이터링크 계층
물리 계층물리계층 프로토콜
데이터링크계층프로토콜
네트워크계층프로토콜
물리계층 프로토콜
데이터링크계층프로토콜
네트워크계층프로토콜
전송계층 프로토콜
세션계층 프로토콜
표현계층 프로토콜
응용계층 프로토콜
Upper LayersLower Layers
전송 매체 전송 매체
IMB PC MacintoshRouter
Internet
9제1장 OSI 참조 모델과 TCP/IP
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
OSI 참조 모델에서의 정보 교환(켑슐화 및 역켑슐화)
L2
L3
L4
L5
L6
L7
L1
L7 데이터
L7 데이터 H6
L6 데이터 H5
L5 데이터 H4
L4 데이터 H3
L3 데이터 H2
1 0 1 0 0 0 1 … 0 0 0 1 0
T2 L2
L3
L4
L5
L6
L7
L1
근원지 목적지라우터
Internet
L2
L3
L1정보의 흐름
L7 데이터
L7 데이터 H6
L6 데이터 H5
L5 데이터 H4
L4 데이터 H3
L3 데이터 H2
1 0 1 0 0 0 1 … 0 0 0 1 0
T2
10제1장 OSI 참조 모델과 TCP/IP
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
OSI 계층별 기능: 물리 계층
물리 계층의 기능정보를 물리적인 전송 매체(구리선, 동축케이블, 광케이블 등)를 통해 전송
기계적, 전기적, 기능적, 절차적 규격
L2 데이터
1 0 1 0 1 0 0 0 1 1 0 1물리계층
데이터링크계층
L2 데이터
1 0 1 0 1 0 0 0 1 1 0 1물리계층
데이터링크계층
전송매체 : SAP(Service Access Point)
11제1장 OSI 참조 모델과 TCP/IP
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
OSI 계층별 기능: 데이터 링크 계층
데이터 링크 계층의 기능인접 통신 장치간의 신뢰성 있는 정보 전송 보장
프레임 수신 확인, 프레임화, 동기화, 순서제어, 매체접근제어, 흐름제어, 에러제어, 물리 주소 지정
L3 데이터
1 0 1 0 1 0 0 0 1 1 0
데이터링크계층
1 0 1 0 1 0 0 0 1 1 0
데이터링크계층
: SAP(Service Access Point)
T2 H2
L3 데이터
물리계층
네트워크계층
L3 데이터T2 H2
L3 데이터
물리계층
네트워크계층
12제1장 OSI 참조 모델과 TCP/IP
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
OSI 계층별 기능: 네트워크 계층
네트워크 계층의 기능여러 네트워크를 거쳐 데이터를 전송
라우팅, 스위칭 기능 제공
: SAP(Service Access Point)
L4 데이터
L3 데이터
네트워크계층
H3
L4 데이터
데이터링크계층
전송계층
L4 데이터
L3 데이터
H3
L4 데이터
네트워크계층
데이터링크계층
전송계층
13제1장 OSI 참조 모델과 TCP/IP
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
OSI 계층별 기능: 전송 계층
전송 계층의 기능근원지에서 송신한 데이터를 목적지까지 전달
종단 프로세스간 투명한 데이터 전송 보장
L4 데이터
전송계층
H4
L5 데이터
네트워크계층
세션계층
H4 H4
L4 데이터
L4 데이터
L4 데이터
전송계층
H4
L5 데이터
네트워크계층
세션계층
H4 H4
L4 데이터
L4 데이터
14제1장 OSI 참조 모델과 TCP/IP
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
OSI 계층별 기능: 세션 계층
세션 계층의 기능사용자 위주의 논리적인 연결 서비스 제공
전이중(full-duplex), 반이중(half-duplex), 단방향(simplex) 전송 모드
L5 데이터
세션계층
H5
L6 데이터
전송계층
표현계층
syn syn syn
L5 데이터
세션계층
H5
L6 데이터
전송계층
표현계층
syn syn syn
15제1장 OSI 참조 모델과 TCP/IP
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
OSI 계층별 기능: 표현 계층
표현 계층의 기능정보의 코드화 체계를 통일
데이터의 압축/압축 해제
L6 데이터
표현계층
H6
L7 데이터
세션계층
응용계층
암호화,압축된 데이터
L6 데이터
표현계층
H6
L7 데이터
세션계층
응용계층
암호화,압축된 데이터
16제1장 OSI 참조 모델과 TCP/IP
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
OSI 계층별 기능: 응용 계층
응용 계층의 기능사용자 인터페이스 제공
웹, 전자우편, 원격파일 접근, 디렉토리 서비스…
응용계층
L7 데이터
응용계층
L7 데이터
17제1장 OSI 참조 모델과 TCP/IP
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
네트워크의 분류
거리에 의한 분류근거리 통신망 (LAN: Local Area Network)
대도시 통신망 (MAN: Metropolitan Area Network)
광역 통신망 (WAN: Wide Area Network)
주요 LAN 구축 기술Ethernet, Fast Ethernet, Gigabit Ethernet…
주요 WAN 구축 기술ATM, PSTN, PSDN, Frame Relay, ISDN, Leased line…
18제1장 OSI 참조 모델과 TCP/IP
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
토폴로지 (Topology)네트워크를 구성하는 노드와 노드들간의 연결 상태에 대한 기하학적 배치
버스(bus) 토폴로지
: 노드 : 링크
링(ring)토폴로지
스타(star)토폴로지
계층적 트리(tree)토폴로지
메시(mesh)토폴로지
19제1장 OSI 참조 모델과 TCP/IP
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
인터넷과 TCP/IP
초기:전용선을 이용한 종단간 회선교환 네트워크
1968: ARPAnet미 국방성(DOD)의 ARPA (Advanced Research Projects Agency)
패킷 교환 네트워크
IPv4 개발: 견고한 네트워크, 이종 네트워크 통합.
현재: InternetARPAnet에 각종 네트워크들이 연결
ISP, IAP 등장
교육, 상업, 개인 등 여러 목적에 사용
20제1장 OSI 참조 모델과 TCP/IP
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
TCP/IP 프로토콜 집합
TCP/IP Protocol suite인터넷 표준 프로토콜
계층 구분이 OSI 참조 모델과 정확히 일치하지 않음.
TCP, IP 및 UDP, ARP, ICMP, SMTP등 다양한 프로토콜의 집합체(suite)
애플리케이션 계층(Application Layer)
트랜스포트 계층(Transport Layer)
네트워크 계층(Network Layer)
네트워크 인터페이스 계층(Network Interface Layer)
TCP/IP 프로토콜 계층
Telnet FTP SMTP DNS SNMP
TCP UDP
IP, ARP, ICMP, IGMP
Ethernet Token Ring Frame Relay ATM
TCP/IP 프로토콜 집합
21제1장 OSI 참조 모델과 TCP/IP
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
TCP/IP 프로토콜 계층
네트워크 인터페이스 계층OSI 7계층의 데이터 링크 계층과 물리 계층에 해당Ethernet, Token ring, 무선 LAN, X.25, Frame relay…
인터넷 계층OSI 7계층의 네트워크 계층에 해당IP, ARP, ICMP, IGMP…
전송 계층OSI 7계층의 전송 계층에 해당
TCP, UDP
응용 계층OSI 7계층의 세션, 표현, 응용 계층에 해당HTTP, FTP, SMTP, Telnet…
OSI 7 계층 TCP/IP 프로토콜 계층
인터넷계층
네트워크인터페이스계층
트랜스포트계층
애플리케이션계층
물리계층
데이터링크계층
네트워크계층
트랜스포트계층
세션계층
프레젠테이션계층
애플리케이션계층
22제1장 OSI 참조 모델과 TCP/IP
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
TCP/IP에서의 주소 표현
물리 주소네트워크 인터페이스 계층에서 사용
IP 주소인터넷 계층에서 사용
Port 번호트랜스포트 계층에서 사용
23제1장 OSI 참조 모델과 TCP/IP
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
물리 주소 표현
0000 0000 0100 0000 1101 0000 0001 0101 1000 0001 1100 0101
Universally/locally administered bit
MAC 주소(16진수 표현) : 00-40-D0-15-81-C5
제조회사 식별번호 카드의 일련번호
• Intel: 00-A0-C9 • 3Com: 00-50-DA • Realtek: 00-40-D0
대표적인 제조회사 식별 번호의 예
1 24 25 48
물리 주소란?데이터링크계층의 MAC 계층에 의해 사용되는 48비트의 하드웨어주소
* AMAN2002 온라인 도움말의 “OUI 코드 목록” 참조
24제1장 OSI 참조 모델과 TCP/IP
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
IP 주소 표현
1 8 9 16 17 24 25 32
네트워크 ID 호스트 ID
네트워크 ID
네트워크 ID
호스트 ID
호스트 ID
0
1 0
1 1 0
멀티케스트 주소(multicast address)1 1 01
장래 사용 예정(reserved for future use)1 1 1 1
Class A
Class B
Class C
Class D
Class E
네트워크 ID 호스트 ID클래스 종류
32 비트
IP 주소의 구조 32비트로 구성, 10진 도트표기법 사용
논리적인 네트워크 규모에 따라 클래스 별로 IP 주소 부여
25제1장 OSI 참조 모델과 TCP/IP
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
포트 주소 (포트 번호)
목적멀티프로세싱 시스템에서 통신하는 프로세스를
구분하기 위해 사용되는 16bit 크기의 번호
종류공인 포트(Well-known port)
등록된 포트 (Registered port)
동적 포트 (Dynamic port)
26제1장 OSI 참조 모델과 TCP/IP
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
서브넷팅 (Subnetting)
165.229.1.0
서브네트워크
165.229.1.20
165.229.1.27
165.229.1.100
165.229.3.0
서브네트워크
165.229.3.50165.229.3.29
165.229.3.140
165.229.46.0
서브네트워크
165.229.46.50
165.229.46.29
165.229.46.140
라우터
165.229.0.0
인터넷
네트워크
서브넷(Subnet), 서브네트워크(subnetwork)하나의 네트워크를 관리하기 쉽도록 논리적으로 나누어 만든 작은규모의 네트워크
27제1장 OSI 참조 모델과 TCP/IP
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
수퍼네팅 (Supernetting)
211.214.135.38
211.214.135.60211.214.135.18
211.214.132.47
211.214.132.100
211.214.133.64
211.214.133.14 211.214.133.84211.214.134.64
211.214.132.0수퍼네트워크
인터넷
211.214.134.64
211.214.132.12
클래스 C 네트워크 주소(211.214.135.X)
클래스 C 네트워크 주소(211.214.132.X)
클래스 C 네트워크 주소(211.214.133.X)
클래스 C 네트워크 주소(211.214.134.X)
작은 네트워크 여러 개를 묶어서 하나의 큰 네트워크로 통합
28제1장 OSI 참조 모델과 TCP/IP
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
라우팅 (Routing)
패킷을 전송하기 위해 가장 적합한 경로를 선정하는 것
S0
S1
S2
211.214.138.0 165.229.127.0
192.168.30.0
목적지 주소 출력포트
165.229.127.0 S1
211.214.138.0 S0
192.168.30.0 S2
라우팅 테이블
발신지
목적지
(211.214.138.100)
(192.168.30.200)
발신지 주소
목적지 주소
29제1장 OSI 참조 모델과 TCP/IP
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
직접 전달과 간접 전달
패킷이 최종 목적지로 전송되는지 아니면 라우터로 전송되는지에 따른 분류
라우터 1 라우터 2
호스트 1 호스트 3호스트 2 호스트 4
간접 전달 직접 전달
허브
직접전달
직접전달
크로스케이블
(a)
(b)
(c)
30제1장 OSI 참조 모델과 TCP/IP
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
라우팅 방법: Next-Hop routing
목적지 경로
호스트 B R1, R2, 호스트 B
호스트 A의 라우팅 테이블
목적지 경로
호스트 B R1, R2, 호스트 B
라우터 R1의 라우팅 테이블
목적지 경로
호스트 B R1, R2, 호스트 B
라우터 R2의 라우팅 테이블
a) 경로에 기반 한 라우팅 테이블
목적지 다음 홉
호스트 B R1
호스트 A의 라우팅 테이블
목적지 다음 홉
호스트 B R2
라우터 R1의 라우팅 테이블
목적지 다음 홉
호스트 B ---
라우터 R2의 라우팅 테이블
b) 다음 홉에 기반 한 라우팅 테이블
NetworkNetwork
NetworkNetwork
NetworkNetwork
호스트 A호스트 B
라우터 R1 라우터 R2
라우팅 테이블의 크기를 작게 만들기 위한 기술
특정 라우터는 다음 라우터(Next-Hop)의 주소만 가짐
31제1장 OSI 참조 모델과 TCP/IP
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
라우팅 방법: Network-Specific routing
같은 네트워크에 연결된 모든 호스트를 하나의 엔티티로 취급
Network 1Network 1
Network 2Network 2
AB C
D
S
목적지 다음 홉
A R1
B R1C R1D R1
목적지 다음 홉
N2 R1
a) 호스트 지정 라우팅에기반 한 호스트 S의 라우팅 테이블
b) 네트워크 지정 라우팅에기반 한 호스트 S의 라우팅 테이블
R1
32제1장 OSI 참조 모델과 TCP/IP
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
라우팅 방법: Host-Specific routing
A
Network 2Network 2
Network 3Network 3
B
목적지 다음 홉
호스트 B R3
Network 2 R1Network 3 R3… …
호스트 A의 라우팅 테이블
Network 1Network 1
R1
R2
R3
Network-Specific routing의 반대 개념
라우팅 테이블에 네트워크에 속한 각 호스트의 주소를 가짐
경로 점검 및 보안을 위한 경우 사용
33제1장 OSI 참조 모델과 TCP/IP
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
라우팅 방법: Default routing
A
Network 1Network 1
Network 2Network 2
목적지 다음 홉
Network 2 R1… …Default R2
호스트 A의 라우팅 테이블
Internet
R1
R2 디폴트 라우터
인터넷 상의 모든 네트워크를 대신하여 0.0.0.0으로 된 디폴트 엔트리를 가짐
34제1장 OSI 참조 모델과 TCP/IP
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
참고 문헌서승호 외, AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍, 정익사, 2002.
김영탁 외, 데이터통신 및 컴퓨터 망, 정익사, 1999.
Behrouz Forouzan, TCP/IP Protocol Suite, McGraw-Hill, 1999.
Behrouz Forouzan, Introduction to Data Communications and Networking McGraw-Hill, 1999.
Fred Halsall, Data Communications, Computer Networks and Open Systems, Addison Wesley Publishing Co., 1996.
http://www.iana.org/numbers.html
RFC 1700, Assigned Numbers, 1994.
Jim Lorenz, CNAP Cisco Networking Academy Program: First-Year, Cisco Systems Inc. 2002.
Jeff Doyle, CCIE Professional Development: Routing TCP/IP Vol. 1, Cisco Systems Inc. 2000.
ITU-T Rec. X.200, Information technology - Open Systems interconnection – Basic Reference Model: Conventions for the definition of OSI services, 1993.
Stevens, UNIX Network Programming, 2nd
Edition, Prentice Hall, 1998.
1
AMAN2002를 이용한
TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
LAN 기술 및 네트워크 장비 규격
2003. 3.
Chapter 2:
2제2장 LAN 기술 및 네트워크 장비 규격
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
LAN의 전송 매체
a) Unshielded Twisted Pair b) Shielded Twisted Pair
c) Coaxial Cable d) Optical Cable
3제2장 LAN 기술 및 네트워크 장비 규격
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
LAN의 전송 매체
트위스티드 페어(Twisted Pair, TP)전기적인 간섭을 줄이기 위해 쌍으로 꼬아놓은 케이블
장점 : 값이 싸고 사용하기 편리, 설치 용이
UTP 케이블의 다섯 가지 구분
10Base-T, 100Base-T와 그 외 고속 네트워크에 사용
100MbpsCategory 5
10Base-T와 Token Ring에서 사용16MbpsCategory 4
과거 10Base-T에서 널리 사용10MbpsCategory 3
전화선으로 사용4MbpsCategory 2
전화 시스템에 사용된 기본 UTP전화선 수준Category 1
사용 예전송 속도UTP Category
4제2장 LAN 기술 및 네트워크 장비 규격
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
동축 케이블과 광케이블
동축 케이블(Coaxial cable)트위스티드 케이블보다 더 높은 주파수 영역의 신호 운반
외부를 금속의 외피로 덮음 잡음 차폐 효과
RG(Radio-Government) 등급에 따른 분류
RG-8, RG-9, RG-11, RG-58, RG75
광케이블(Optical cable)광섬유의 한쪽 끝은 LED같은 광원이 위치, 반대편은 광 탐지기 위치
빛을 이용한 데이터 전달
장점 : 넓은 대역폭, 전송 속도가 높고 오류가 적음
5제2장 LAN 기술 및 네트워크 장비 규격
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
LAN 장비
네트워크 인터페이스 카드(NIC)PC를 LAN에 연결시키는 장비
OSI 2계층 담당 (MAC 주소 할당되어 있음)
리피터(Repeater)OSI 1계층 기능을 수행
물리적 저항과 임피던스로 신호의 감쇠가 발생할 경우신호를 재생하고 신호의 타이밍 재조정
6제2장 LAN 기술 및 네트워크 장비 규격
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
허브(Hub)
OSI 1계층 기능 수행
기능면에선 리피터와 유사신호 재생 및 신호의 타이밍 재조정
여러 포트를 가지는 것이 리피터와 다름허브를 Multi-port repeater라고도 함.
Active Hub vs. Passive Hub
Intelligent Hub vs. Dummy Hub
7제2장 LAN 기술 및 네트워크 장비 규격
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
브리지(Bridge)두개의 LAN 세그먼트 연결 : 트래픽을 필터링하여 해당 LAN 세그먼트에 있어야 할지, 다른 LAN 세그먼트로 전달할지 결정
2계층 기능 수행: MAC 주소로 트래픽 전달 여부를 판단
장점 : 네트워크 효율 증가
단점 : 브로드캐스트 신호에 대해서는 차단하지 못함
포트번호
A B C D
데이터
브리지
세그먼트 1 세그먼트 2
1 2100 200 300 400
1 100, 2002 300, 400
포트에 연결된MAC 주소
브리지 테이블
* MAC 주소는 100,200과 같이 간략하게 표현하였음
8제2장 LAN 기술 및 네트워크 장비 규격
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
스위치(Switch)
2계층 기능 수행
MAC 주소를 기반으로 교환(switching) 수행.
기능면에선 브리지와 유사입력 포트로 들어오는 프레임에 대해 MAC 주소를 기반으로 어느 출력 포트로 switching 할지를 결정
연결을 집중시키고 효율적으로 데이터 전송
여러 포트를 가지는 것이 브리지와 다름스위치를 Multi-port bridge라고도 함.
9제2장 LAN 기술 및 네트워크 장비 규격
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
라우터(Router)3계층의 기능 수행: IP 주소를 기반으로 routing 수행.LAN을 WAN에 접속 시킴
3계층의 정보를 기반으로 패킷의 경로를 결정
라우팅 테이블을 통해 최적의 경로 선택, 적당한 출력 포트로 스위칭(switching)
* IP주소는 1.1.1.1과 같이 간략하게 표현하였음
A B C D
데이터
라우터
세그먼트 1 세그먼트 2
1 21.1.1.1 1.1.1.2 2.1.1.1 2.1.1.2
1 1.1.1.02 2.1.1.0
인터페이스
목적지네트워크 ID
라우팅 테이블
10제2장 LAN 기술 및 네트워크 장비 규격
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
LAN의 표준화
802 위원회 : LAN 권고 표준 제정
LAN 프로토콜과 인터페이스에 대한 규격 제정
데이터링크 계층을 매체 접근 제어와 논리 링크 제어의 두개 부 계층으로 나눔
LAN의 특수성 : 다양한 기술 존재
OSI 참조 모델과 호환성 유지를 위해 구분
데이터링크 계층
물리 계층
MAC 부 계층
LLC 부 계층
IEEE 802.3
CSMA/CD
IEEE 802.4
Token Bus
IEEE 802.5
Token Ring
IEEE 802.11
Wireless
IEEE 802.2 LLC
11제2장 LAN 기술 및 네트워크 장비 규격
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
매체 접근 제어 (MAC)공유한 전송 매체에 동시 접근을 막기 위해 접근을제한하는 방법
경쟁 (contention) 방식
IEEE 802.3 CSMA/CD대표적인 예 : 이더넷
토큰 전달 (token passing)에 의한 방식
IBM의 토큰링
대표적인 예 : FDDI (Fiber Distributed Data Interface)
12제2장 LAN 기술 및 네트워크 장비 규격
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
IEEE 802.3 CSMA/CDCSMA/CD의 원리
Carrier Sense : 말하기 전에 듣기 (listen before talk)Multiple Access : 아무도 이야기 하지 않을 때는 누구나 자유롭게 말
하기
Collision Detection : 충돌이 발생한 것을 깨닫기.
1010… 1010… 1010… 1010… 1010… 1010… 1010…
잼 신호 : 1010101010…(32비트)
Collision
13제2장 LAN 기술 및 네트워크 장비 규격
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
CSMA/CD의 동작
CSMA/CD MAC 프레임 조립
임의 요소를 갖는지연 시간(Back-off time)
만큼 대기
32-비트 Jam 신호 송신
송신 개시
Carrier 존재
LLC 계층으로부터정보 전송 요구
MAC 프레임송신 완료
충돌 검출
CarrierSensing
MultipleAccess
CollisionDetection
충돌로 인한재전송 반복 시도(최대 16회까지)
YES
YES
YES
NO
NO
NO
정상 종료
14제2장 LAN 기술 및 네트워크 장비 규격
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
IEEE 802.5 Token Ring
• 토큰이 링 상을 돌고 있다. • 근원지가 토큰을 받고 프레임을 전송한다.
근원지 목적지 근원지 목적지
근원지 목적지 근원지 목적지
• 프레임을 수신한 노드들은 프레임에 있는목적지 주소가 자기 주소인지를 비교한다
• 비교하여 같으면 프레임을 복사하고복사하였음을 프레임에 표시한다
• 소스는 프레임이 목적지까지 잘도착했는지를 확인한 후 이상 없이송신되었으면 프레임을 링에서 제거하고토큰을 만들어 내보낸다
15제2장 LAN 기술 및 네트워크 장비 규격
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
논리 링크 제어 (LLC)
MAC에 의해 확보된 채널 전송권을 이용하여 프레임 전송 시 필요한 연결 관리 절차와 순서 제어, 흐름 제어 기능 담당
1 1 1 or 2
DSAP : Destination Service Access PointSSAP : Source Service Access Point
MAC 프레임
LLC 프레임 DSAP SSAP 제어 사용자 데이터
프레임 헤더 프레임 헤더 프레임 트레일러
16제2장 LAN 기술 및 네트워크 장비 규격
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
LAN 구축 기술
이더넷의 물리적, 논리적 토폴로지
토큰링의 물리적, 논리적 토폴로지
a) Token Ring의 물리적인 토폴로지(스타)
허브
b) Token Ring의 논리적인 토폴로지(링)
a) Ethernet의 물리적인 토폴로지(스타) b) Ethernet의 논리적인 토폴로지(버스)
허브
17제2장 LAN 기술 및 네트워크 장비 규격
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
이더넷, 토큰링, FDDI 비교
현재는 거의
사용 안 함
결정론적
Star
Ring
IEEE 802.5Token passing
Token Ring
서서히
사라지고 있음
First come first serve
비고
결정론적비결정론적매체 접근
Dual ringStar물리적
토폴로지
RingBus논리적
토폴로지
IEEE 802.5Token passing
IEEE 802.3 CSMA/CD
매체 접근 표준
FDDIEthernet
18제2장 LAN 기술 및 네트워크 장비 규격
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
이더넷 (Ethernet)
프리엠블(preamble) : 비트 동기화에 사용된다. (7바이트)프레임 시작(start of frame delimiter) : 프레임의 시작을 나타냄. (1바이트)목적지 주소(destination address) : 수신측 주소를 나타냄. (6바이트)근원지 주소(source address) : 송신측 주소를 나타냄. (6바이트)종류 필드(type) : 상위 계층의 네트워크 프로토콜을 식별함. (2바이트)데이터(data) : 실제 전송될 자료가 들어감. (46~1500바이트)프레임 체크 시퀀스(frame check sequence) : 에러검사에 사용됨. (4바이트)
Preamble FrameDelimiter
Destinationaddress
Sourceaddress Type data FCS
7 1 6 6 2 46 ~ 1500 7Ethernet Frame Format
Preamble FrameDelimiter
Destinationaddress
Sourceaddress Type data FCS
7 1 6 6 2 46 ~ 1500 7IEEE 802.3 Frame Format
19제2장 LAN 기술 및 네트워크 장비 규격
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
이더넷의 통신 구조
물리 매체 어테치먼트(PMA)
물리 매체
케이블
커넥터
AUI
데이터링크계층
물리 계층
트위스트 페어선, 동축 케이블, 광케이블
신호의 변, 복조 기능
신호의 부호화, 복호화
송신권의 취득 제어
CSMA/CD
각종 MAC과 결합되는
데이터링크 제어
물리 신호 제어(PLS)
매체 접근 제어(MAC)
논리 링크 계층(LLC)
20제2장 LAN 기술 및 네트워크 장비 규격
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
이더넷 물리 계층 표준
BusStar100m1GbpsCAT 5 UTP1000Base-T
BusStar2000m100MbpsMultimode Optical Fiber
100Base-FX
BusStar100m100MbpsCAT 5 UTP100Base-TX
BusStar2000m10MbpsMultimode Optical Fiber
10Base-FL
BusStar100m10MbpsCAT 5 UTP10Base-T
BusBus500m10MbpsThick Coax10Base-5
BusBus185m10MbpsThin Coax10Base-2
논리 토폴로지
물리 토폴로지
최대 세그먼트 길이
최대 대역폭매체종류
21제2장 LAN 기술 및 네트워크 장비 규격
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
LAN과 WAN의 인터네트워킹
WAN(IP, X.25, PSTN, ISDN, ATM 등)
TokenRing
FDDI
TokenRing
LAN 1
LAN 2
LAN 3
LAN 4
LAN 5
라우터
라우터
라우터라우터
브리지
허브
허브허브
22제2장 LAN 기술 및 네트워크 장비 규격
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
라우터
(b) 라우터 포트
(a) 라우터(위에서 본 모습)
1
32 4 5 6 7
8
23제2장 LAN 기술 및 네트워크 장비 규격
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
라우터를 이용한 간단한 사설망 구성
13
2
4
스위칭 허브 더미허브
라우터
더미허브라우터
스위칭 허브
더미 허브
더미 허브
종단 시스템
종단 시스템
1
2
3
4
24제2장 LAN 기술 및 네트워크 장비 규격
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Windows98의 네트워크 환경 설정
제어판의 네트워크 항목을 선택네트워크 항목에서 [네트워크 구성->설치된 네트워크 구성 요소 -> TCP/IP-> 등록정보] 선택
IP 주소, 게이트웨이, DNS 정보 설정
25제2장 LAN 기술 및 네트워크 장비 규격
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Windows2000의 네트워크 환경 설정
[시작->설정->네트워크 및 전화 접속 연결]을 선택
로컬 영역 연결->등록 정보->인터넷 프로토콜->등록정보 선택
IP주소, 서브넷 마스크, 게이트웨이, DNS 서버 입력
26제2장 LAN 기술 및 네트워크 장비 규격
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
UTP 케이블 종류
1
2
3
4
5
6
7
8
DTE DCE
T+
T-
R+
R-
T+
T-
R+
R-
(a) 직렬 케이블 (Direct or Straight-through cable)
주황줄무늬
주황
녹색줄무늬
파랑
파랑줄무늬
녹색
갈색줄무늬
갈색
주황줄무늬
주황
녹색줄무늬
파랑
파랑줄무늬
녹색
갈색줄무늬
갈색
1
2
3
4
5
6
7
8
DCEDTE
T+
T-
R+
R-
T+
T-
R+
R-
(b) 크로스오버 케이블 (Crossover cable)
녹색줄무늬
녹색
주황줄무늬
파랑
파랑줄무늬
주황
갈색줄무늬
갈색
DCEDTE
1
2
3
4
5
6
7
8
Router
(c) 롤오버 케이블 (Rollover cable)
주황줄무늬
주황
녹색줄무늬
파랑
파랑줄무늬
녹색
갈색줄무늬
갈색
녹색줄무늬
녹색
주황줄무늬
파랑
파랑줄무늬
주황
갈색줄무늬
갈색
PC
27제2장 LAN 기술 및 네트워크 장비 규격
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
롤 오버 케이블
PC에서 라우터의 콘솔포트 접속 시 사용접속 시 두 가지 종류의 어댑터
라우터의 콘솔 포트와 PC 연결
RJ-45-to-DB-9 Adapter RJ-45-to-DB-25 Adapter
라우터
Rollover 케이블
RJ45-to-DB-9 어댑터
PC콘솔포트
28제2장 LAN 기술 및 네트워크 장비 규격
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
UTP 케이블 제작
UTP 케이블 제작 시 필요한 부품
RJ-45 잭과 보호용 캡 니퍼스트리퍼
UTP CAT5 케이블 UTP 툴(Tool) UTP 테스터(Tester)
29제2장 LAN 기술 및 네트워크 장비 규격
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
UTP 케이블 제작
케이블 제단 및 피복제거
라인 정렬 및 RJ45 잭연결
케이블 작성 완료 및동작 테스트
30제2장 LAN 기술 및 네트워크 장비 규격
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
참고 문헌서승호 외, AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍, 정익사, 2002.
김영탁 외, 데이터통신 및 컴퓨터 망, 정익사, 1999.
Behrouz Forouzan, TCP/IP Protocol Suite, McGraw-Hill, 1999.
Behrouz Forouzan, Introduction to Data Communications and Networking McGraw-Hill, 1999.
Fred Halsall, Data Communications, Computer Networks and Open Systems, Addison Wesley Publishing Co., 1996.
IEEE, "Part 3: Carrier sense multiple access with collision detection(CSMA/CD) access method and physical layer specifications", 2000.
http://www.cisco.com
Jim Lorenz, CNAP Cisco Networking Academy Program: First-Year, Cisco Systems Inc. 2002.
Jeff Doyle, CCIE Professional Development: Routing TCP/IP Vol. 1, Cisco Systems Inc. 2000.
ITU-T Rec. X.200, Information technology - Open Systems interconnection – Basic Reference Model: Conventions for the definition of OSI services, 1993.
1
AMAN2002를 이용한
TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
AMAN 2002 구성 및 사용법
2003. 3.
Chapter 3:
2제3장 AMAN2002 구성 및 사용법
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
AMAN2002
Aide of Network Management 2002
네트워크 실습 소프트웨어
기능
네트워크 패킷 캡처
네트워크의 구성 확인
네트워크 성능 분석
네트워크 장애상태 확인
3제3장 AMAN2002 구성 및 사용법
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
AMAN2002 실행 프로그램
Packet Observer
Guru
WinPing
WinTraceroute
Traffic Generator
Traffic Receiver
CSMA/CD Simulator
Error/Flow Control Simulator
EzTrans
4제3장 AMAN2002 구성 및 사용법
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Packet Observer
프로그램의 시작경로C:₩AMAN2002₩PObserver.exe
5제3장 AMAN2002 구성 및 사용법
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
네트워크 트래픽 캡처
패킷 캡처 시작
어댑터 선택
패킷 캡처 진행
6제3장 AMAN2002 구성 및 사용법
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
네트워크 트래픽 캡처
패킷 캡처 결과
선택된 패킷의계층별 헤더 분석
선택된 패킷의헥사코드, 아스키 코드데이터
캡처된 패킷 목록
7제3장 AMAN2002 구성 및 사용법
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
AMAN2002 라이브러리
Ncap 라이브러리패킷 모니터링 라이브러리
Nmicmp 라이브러리네트워크 연결 검사 및 장애 발견
Nmtrt 라이브러리네트워크 구성 정보 확인
Nmtgen,Nmtrcv 라이브러리네트워크 대역폭, 상태 점검
8제3장 AMAN2002 구성 및 사용법
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Ncap 라이브러리
C++ 기반의 패킷 모니터링 라이브러리
네트워크 인터페이스를 통과하는 Ethernet 패킷 모니터링
네트워크 성능 관리 기능
Microsoft Visual C++ 6.0에서 최적화
CSelectAdaptorDlg Class 사용에 필요한 파일들
SelectAdaptorDlg.h
ncapd.lib
9제3장 AMAN2002 구성 및 사용법
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Ncap 라이브러리
CSelectAdaptorDlg Class의 주요 APIint OpenAdapter(int iFilter);
네트워크 어댑터 open 및 초기화
iFilter의 값에 따라 IP,TCP,UDP 필터 설정 가능
void CloseAdaptor();
어댑터 close 및 자원해제
int Ncap(unsigned char * pBuffer, int iLength);
네트워크 어댑터를 통해 한 개의 패킷을 획득
10제3장 AMAN2002 구성 및 사용법
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Ncap 라이브러리
CSelectAdaptorDlg Class의 주요 APIUnsigned int Twobytes_to_number(char chFirst, char chSecond);
2바이트의 바이너리 데이터를 int 형의 숫자로 변환
Unsigned long Fourbytes_to_number(char chFirst, char chSecond, char chThird, char chForth);
4바이트의 바이너리 데이터를 long 형의 숫자로 변환
11제3장 AMAN2002 구성 및 사용법
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Ncap 라이브러리 사용 예제
EtherViewerC:₩AMAN2002₩example₩EtherViewer.zip
12제3장 AMAN2002 구성 및 사용법
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Nmicmp 라이브러리
ICMP Echo 메시지를 주기적으로 전송하여 네트워크연결상태를 검사
ICMP Echo 메시지에 실어보낼 데이터의 크기 설정
ICMP Echo 메시지 TTL 설정
ICMP Echo 응답메시지를 기다리는 시간 설정
ICMP Echo 동작 원리
13제3장 AMAN2002 구성 및 사용법
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Nmicmp 라이브러리
CIcmpEcho Class 사용에 필요한 파일들
nmicmp.h
nmicmp.lib
CIcmpEcho Class의 주요 APIlong pingRequest(Cstring strHost, t_PingResult * pPingResult);
strHost에 대해 ping을 수행
14제3장 AMAN2002 구성 및 사용법
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Nmicmp 라이브러리
CIcmpEcho Class의 주요 APIvoid setPingDataLength(int iPingDataLength);
ping 메시지에 실어보낼 더미데이터의 크기 설정
void setPingMaxHops(int iPingMaxHops);
iPingMaxHops를 통해 TTL값을 설정
void setPingTimeOut(int iPingTimeOut);
패킷에 대한 타임아웃 설정
15제3장 AMAN2002 구성 및 사용법
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Nmicmp 라이브러리 사용예제
WinPingC:₩AMAN2002₩example₩WinPing
16제3장 AMAN2002 구성 및 사용법
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Nmtrt 라이브러리
ICMP Echo 요청메시지를 이용
출발 호스트에서 목적 호스트까지 인터넷을 통해거치게 되는 게이트웨이를 기록
네트워크 구성 정보 확인
문제점이 있는 네트워크 파악
17제3장 AMAN2002 구성 및 사용법
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Traceroute의 동작원리
18제3장 AMAN2002 구성 및 사용법
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Nmtrt 라이브러리
CTraceroute Class 사용에 필요한 파일들
nmtrt.h
nmtrtd.lib
CTraceroute Class의 주요 APIint tracerouteRequest(CString strHost, t_TracerouteInfo * pTrtInfo);
strHost에 대해서 traceroute를 수행
19제3장 AMAN2002 구성 및 사용법
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Nmtrt 라이브러리
CTraceroute Class의 주요 APICString getHostNameByAddress(CString strIPAddr);
IP주소에 대한 호스트 이름을 반환
CString whoIsRequest(CString strIPAddr);
호스트(strIPAddr)의 Whois 정보를 반환
20제3장 AMAN2002 구성 및 사용법
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Nmtrt 라이브러리 사용 예제
WinTracerouteC:₩AMAN2002₩example₩WinTrt
21제3장 AMAN2002 구성 및 사용법
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Nmtgen, Nmtrcv 라이브러리
임의로 트래픽을 발생하여 네트워크 성능을 테스트함
UDP 기반의 IP 데이터그램 전송
Nmtgen, Nmtrcv의 동작구조
22제3장 AMAN2002 구성 및 사용법
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Nmtgen, Nmtrcv 라이브러리
CNmtGen Class 사용에 필요한 파일들
nmtgen.h
nmtgend.lib
CNmtGen Class의 주요 APIvoid SetIpAddress(CString strIpAddress);
데이터 수신지 시스템의 IP 주소 설정
void SetPortNumber(unsigned short shPortNumber);
데이터 수신지 시스템의 포트번호 설정
23제3장 AMAN2002 구성 및 사용법
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Nmtgen, Nmtrcv 라이브러리
CNmtRcv Class의 주요 APIvoid SetRequestTransferSpeed(int iSpeed);
초당 데이터 전송량 설정
void SendStart();
데이터 전송을 시작함
void SendStop();
데이터 전송을 종료함
24제3장 AMAN2002 구성 및 사용법
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Nmtgen, Nmtrcv 라이브러리
CNmtRcv Class 사용에 필요한 파일들
nmtrcv.h
nmtrcvd.lib
CNmtRcv Class의 주요 APIvoid GetWndHandle(HWND hWnd);
윈도우 핸들을 전달
void SetPortNumber(unsigned short shPortNumber);
데이터 수신 시스템의 포트번호를 설정
25제3장 AMAN2002 구성 및 사용법
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Nmtgen, Nmtrcv 라이브러리 사용 예제
Traffic GeneratorC:₩AMAN2002₩example₩TGen
Traffic ReceiverC:₩AMAN2002₩example₩TRcv
26제3장 AMAN2002 구성 및 사용법
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
참고 문헌
서승호 외, AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크프로그래밍, 정익사, 2002.
RFC 826, David C. Plummer, An Ethernet Address Resolution Protocol or Converting Network Protocol Address to 48bit Ethernet Address for Transmission on Ethernet Hardware, November 1982.
RFC 791, Jon Postel, INTERNET PROTOCOL DARPA INTERNET PROGRAM PROTOCOL SPECIFICATION, September 1981.
IETF, RFC 792, “Internet Control Message Protocol”, 1981.
RFC 793, Jon Postel, TRANSMISSION CONTROL, PROTOCOL DARPA INTERNET PROGRAM PROTOCOL SPECIFICATION, September 1981.
RFC 768, J.Postel, User Datagram Protocol, August 1980.
RFC 1700, J.Postel, ASSIGNED NUMBERS, October 1994.
1
AMAN2002를 이용한
TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
이더넷 (Ethernet)
2003. 3.
Chapter 4:
2제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
이더넷v2 프레임
기능한 스테이션에서 다른 스테이션으로 안전하고 효과적으로 패킷을 전송하는 컨테이너(container).
이더넷 프레임의 구조
7byte 1byte 6byte 6byte 2byte 46-1500byte 4byte
PreambleSFD
DestinationAddress
SourceAddress
Type DATA FCS
Ethernet Header
SFD: Start-of-frame delimiter, FCS: Frame Check Sequence.
Type은 AMAN2002 온라인 도움말의 EtherType을 참고.
3제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
이더넷v2 프레임의 구조Preamble
동기화 기능
SFD(Start of frame delimiter)프레임의 시작을 표시
근원지 MAC 주소데이터를 내보내는 기계의 MAC 주소
목적지 MAC 주소데이터를 수신할 기계의 MAC 주소
Type상위 계층 프로토콜 종류를 표시
데이터 필드상위 프로토콜 데이터 패킷
FCS (Frame Check Sequence)프레임에 문제가 있는지 판별에 사용
1 0 1 0 1 0 0 0 1 1 0
네트워크인터페이스 계층(데이터링크 계층)
L3 데이터H2 T2
L3 데이터
물리 계층
네트워크 계층
Type
4제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
MAC 주소의 구조
제조 회사 IDIEEE에서 관리하는 NIC 제조회사의 고유번호.
AMAN2002 도움말의 OUI Code 참조.
NIC(Network Interface Card) ID3bytes의 고유한 카드 번호.
Sony Corporation NIC의 MAC주소 예
제조회사 ID(3 byte)
NIC ID(Network Card Interface ID)
(3 byte)
08-00-46 - 18-BD-C8<참고> PC의 MAC 주소를 확인하는 방법Windows98: DOS창에서 winipcfg /all 명령, NT계열: DOS창에서 ipconfig /all 명령.
5제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
IEEE 802.3 프레임 구조
Type 필드를 Length로 대체
데이터 필드에 LLC(Logical Link Control) 추가
PreambleSFD
DestinationAddress
SourceAddress
LengthLength Data FCS
7byte 1byte 6byte 6byte 2byte 43-1497byte 4byte
DSAP
802.2 LLC header
SSAP Ctrl
1 1 1
Ethernet Header Data Field
DSAP: Destination Service Access Point, SSAP: Source Service Access Point.
6제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
IEEE 802.3 with SNAP 프레임 구조
SNAP(Sub-Network Access Protocol)을 추가하여 지원 가능 프로토콜 수를 확장
PreambleSFD
DestinationAddress
SourceAddress
Length Data FCS
7byte 1byte 6byte 6byte 2byte 38-1492byte 4byte
DSAP
802.2 LLC header
SSAP Ctrl
1 1 1 3 2
Ethernet Header Data Field
Code
SNAP packet
Type
7제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Novell 802.3
Novell 네트워크에서 사용
Novell IPX 데이터만을 지원 함
PreambleSFD
DestinationAddress
SourceAddress
Only IPX Data FCS
7byte 1byte 6byte 6byte 2byte 46-1500byte 4byte
Ethernet Header Data Field
LengthLength
8제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
이더넷 프레임 분석
Packet Observer를 이용한 이더넷 분석
9제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
이더넷 프레임 분석
08 0000 E0 18 1B 52 BE00 00 0C 07 AC 00
Card ID회사 IDCard ID회사 ID
Type근원지 주소목적지 주소
00 00 0C 07 AC 00 00 E0 18 1B 52 BE 08 00
송신측 MAC 주소NIC 제조회사: 00E018 ASUSTEK COMPUTER INC.
Card ID: 1B52BE
수신측 MAC 주소NIC 제조회사: 00000C CISCO SYSTEMS, INC.
Card ID: 07AC00
상위 계층 프로토콜 종류0x0800 Internet IP (IPv4)
10제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
NIC 제조회사 코드표
AMAN2002 Online Help의 “OUI 코드” 참조
11제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
상위 계층 프로토콜 번호
AMAN2002 Online Help의 “EtherType” 참조
12제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
01 00 5E 00 00 02 00 07 4F A1 6B FC 08 00
송신측 MAC 주소NIC 제조회사:
Card ID:
수신측 MAC 주소NIC 제조회사:
Card ID:
상위 계층 프로토콜 종류
연습 문제 1
Card ID회사 IDCard ID회사 ID
Type근원지 주소목적지 주소
13제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
00 01 02 E8 DF 8D 00 08 E2 44 76 3C 08 00
송신측 MAC 주소NIC 제조회사:
Card ID:
수신측 MAC 주소NIC 제조회사:
Card ID:
상위 계층 프로토콜 종류
연습 문제 2
Card ID회사 IDCard ID회사 ID
Type근원지 주소목적지 주소
14제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Guru를 이용한 이더넷 프레임 분석 연습
15제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
이더넷 프레임 켑쳐 프로그램 작성
16제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Microsoft Visual C++ 실행
시작 프로그램 Microsoft Visual Studio 6.0
Microsoft Visual C++ 6.0
17제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
새 프로젝트 생성
AppWizard 시작: Visual C++의 File New 메뉴 선택
18제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
AppWizard – Step 1
19제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
AppWizard – Step 2
20제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
AppWizard – Step 3
21제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
AppWizard – Step 4
22제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
라이브러리 경로 설정 (1)
Include 경로: Visual C++의 Directories
Show directories for 메뉴 선택
23제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
라이브러리 경로 설정 (2)
Include 경로: Visual C++의 Directories
Show directories for 메뉴 선택
24제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
EtherViewer 메인 대화상자 디자인
대화상자 디자인
List Control
Check Box Edit Box Edit Box Button
1
2 3 4 5 6 7
8
9
10
25제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Control 속성
int m_EDIT_iCountOutput
int m_EDIT_iCountInput
CListCtrl m_LIST_PacketInfo
변수
IDC_BUTTON_HelpButton10
IDC_BUTTON_ProductInfoButton9
Default ButtonIDOKButton8
IDC_BUTTON_SelectAdaptorButton7
Read-OnlyIDC_EDIT_CountOutputEdit Box6
IDC_STATICStatic Text5
IDC_EDIT_CountInputEdit Box4
IDC_STATICStatic Text3
IDC_CHECK_Filter_IPCheck Box2
View: ReportIDC_LIST_PacketInfoList Control1
속성ID종류#
26제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
이벤트 처리
OnBUTTONHelp()
OnBUTTONProductInfo()
OnCHECKFilterIP()
OnBUTTONSelectAdaptor()
함수명
BN_CLICKIDC_BUTTON_HelpButton10
BN_CLICKIDC_BUTTON_ProductInfoButton9
BN_CLICKIDOKButton8
BN_CLICKIDC_BUTTON_SelectAdaptorButton7
메시지ID종류#
27제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
어뎁터 오픈 대화상자 표시void CEtherViewerDlg::OnBUTTONSelectAdaptor() {
//Ncap lib.(Dialog based class lib.) 객체 생성.CSelectAdaptorDlg *pDlg = new CSelectAdaptorDlg;if(pDlg->DoModal() != IDOK){
delete pDlg;return;
}
…}
28제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
어뎁터 열기//선택된 네트워크 어뎁터를 사용할 수 있도록 초기화.if(pDlg->OpenAdaptor(m_iFilter_IP)) {
::AfxMessageBox("Adaptor open 실패");
pDlg->CloseAdaptor();delete pDlg;
return;}
29제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
패킷 캡쳐#define MaxBufferLen 2048UpdateData(TRUE);
unsigned char arrTemp[MaxBufferLen];for(int i=0; i<m_EDIT_iCountInput; i++){
memset(arrTemp, 0, MaxBufferLen);
//패킷을 하나 획득함. 음수가 return되면 에러가 발생한 것.if(pDlg->Ncap(arrTemp, MaxBufferLen) < 0)
continue;
//패킷 분석…
}
30제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
패킷 분석CString strDestMac = _T("");strDestMac.Format(_T("%02X %02X %02X - %02X %02X %02X"),
arrTemp[0], arrTemp[1], arrTemp[2],arrTemp[3], arrTemp[4], arrTemp[5]);
m_LIST_PacketInfo.SetItem(i, 2, LVIF_TEXT, strDestMac, 0, 0, 0, 0);
CString strSrcMac = _T("");strSrcMac.Format(_T("%02X %02X %02X - %02X %02X %02X"),
arrTemp[6], arrTemp[7], arrTemp[8],arrTemp[9], arrTemp[10], arrTemp[11]);
m_LIST_PacketInfo.SetItem(i, 1, LVIF_TEXT, strSrcMac, 0, 0, 0, 0);
CString strType = _T("");unsigned int iTypeORlength = pDlg->Twobytes_to_number(arrTemp[12], arrTemp[13]);strType.Format(_T("%02X %02X(Hex), %d(Decimal)"),
arrTemp[12], arrTemp[13], iTypeORlength);m_LIST_PacketInfo.SetItem(i, 3, LVIF_TEXT, strType, 0, 0, 0, 0);
31제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
어뎁터 닫기
//사용한 자원 해제.pDlg->CloseAdaptor();
//Ncap lib. 삭제.delete pDlg;
32제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
EtherViewer 실행 모습
33제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
EtherViewer를 이용한 이더넷 프레임 분석
송신측 MAC 주소NIC 제조사: 0008E2 Cisco Systems, Card ID: 44763C
수신측 MAC 주소NIC 제조사: 000102 3COM CORPORATION, Card ID: E8DF8D
상위 계층 프로토콜 종류0x0806 Internet IP
34제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
참고 문헌
서승호 외, AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크프로그래밍, 정익사, 2002.
RFC 826, David C. Plummer, An Ethernet Address Resolution Protocol or Converting Network Protocol Addresses to 48 bit Ethernet Address for Transmission on Ethernet Hardware, November 1982.
RFC 1060, J. Reynolds J., ASSIGNED NUMBERS, March 1990.
RFC 1010, J. Reynolds J., ASSIGNED NUMBERS, May 1987.
RFC 1042, J. Reynolds J., A Standard for the Transmission of IP Datagrams over IEEE 802 Network, February 1988.
Behrouz Forouzan, “Introduction to Data Communication and Networking”, Mcgrwohill, 1999.
Fred Halsall, “Data Communications, Computer Networks and Open Systems”, Addison-wesley, 1995.
1
AMAN2002를 이용한
TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
IP (Internet Protocol)
2003. 4.
Chapter 5:
2제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
인터넷 프로토콜
기능TCP/IP 프로토콜에서 사용하는 전송 메커니즘
특징무결성 보장 않음.
순서 보장 않음.
비연결형 프로토콜 (가상회선 설정 않음)
3제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
IP 데이터그램
IP 데이터그램의 구조
단편옵셋
헤더길이
(4비트)
옵션
(0~40바이트)
목적지 주소
근원지 주소
체크 섬프로토콜수명
플래그
(3비트)
식별자
전체길이서비스유형버전
(4비트)
0 7 8 15 16 31
20바이트
4제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
IP 데이터그램의 구조 (1)
버전 (version)데이터그램을 생성한 IP의 버전(현재 4 혹은 6을 사용)
헤더길이 (Header length)4바이트의 배수로 표현한 IP 헤더의 길이
ex) 20 byte 헤더는 5로 표현.
서비스 유형 (Type of Service)데이터그램의 우선순위, 처리방법을 나타냄, <표 5.1> 참고
D T R C 0
Precedence (우선순위): 0 보통 ~ 7 최우선
Type of Service: 처리 방법
<RFC 1349 definition>• D: Minimize Delay• T: Maximize Throughput• R: Maximize Reliability• C: Minimize Cost• 모든 비트 0 이면 Normal.• 마지막 비트는 항상 0.
5제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Precedence
Network Control7 (111)
Internetwork Control6 (110)
Critical5 (101)
Flash Override4 (100)
Flash3 (011)
Immediate2 (010)
Priority1 (001)
Routine (Normal)0 (000)
RFC 791 definitionPrecedence
6제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
전체길이 (Total Packet Length)IP 헤더를 포함한 전체 IP 패킷의 Byte단위 길이
IP 패킷의 최소 길이는 21byte (20byte 헤더 + 1byte 데이터)
IP 패킷의 최대 길이는 65,535 byte (216
-1)
식별자 (Fragment Identifier)IP가 단편화 될 때 단편들을 식별하기 위한 번호
단편화된 IP 패킷들을 재조립할 때 사용
플래그 (Fragmentation Flags)단편화 여부, 조각이 단편의 첫번째 조각인지, 중간 혹은 마지막 조각인지를 구분, 단편 방지 등 단편화 제어.
단편 옵셋 (Fragmentation Offset)조각난 단편들의 원래 IP 데이터그램에서의 위치정보를 나타내는포인터. 재조립 시에 단편의 순서를 맞추기 위해 사용.
IP 데이터그램의 구조 (2)
7제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Flag and Offset
0 DF MF
Fragmentation Flag: 단편화 제어
Fragmentation Offset: 재조립 순서 정보
• 첫 비트는 항상 0.• DF: Do not Fragment, 0: 단편화 가능, 1: 단편화 금지• MF: More Fragment, 0: 마지막 단편(혹은 단편화되지 않았음), 1: 뒤에 단편이 더 있음.
8제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
수명 (Time-to-Live)
데이터그램이 폐기되기 전 인터넷에서 얼마나 생존할 수 있는지를지시하는 값 (최소 1, 최대 2
8-1= 255 값 지정).
라우터를 통과할 때 마다 1씩 감소, 0이되면 폐기.
프로토콜 (Protocol Identifier)
IP 데이터그램이 싣고 가는 데이터의 종류
AMAN2002 온라인 도움말의 Protocol Type 부록 참조.
예) ICMP:1, TCP:6, UDP:17
체크 섬 (Header Checksum)
전송 도중 IP 헤더의 손상여부를 확인.
라우터에서 IP 헤더의 일부분이 변경될 때 마다 다시 계산된다.
IP 데이터그램의 구조 (3)
9제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
근원지 주소 (Source IP Address)
보내는 편의 IP 주소. (데이터 그램을 생성한 시스템의 IP 주소)
목적지 주소 (Destination IP Address)
IP 데이터그램의 최종 목적지 주소
옵션 (Options)
경로설정, 타이밍, 관리, 정렬 등의 부수적인 기능처리
IP 헤더 길이가 20Byte를 초과하게되는 유일한 이유.
Padding
Option이 사용되어 헤더가 4Byte단위가 안되면 Padding을 붙여4Byte 단위로 맞춤. (참고: Header Length 필드는 4Byte단위 크기)
IP 데이터그램의 구조 (4)
10제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
이더넷 프레임에 포함된 IP 데이터그램
PreambleSFD
DestinationAddress
SourceAddress
Type DATA FCS
7byte 1byte 6byte 6byte 2byte 46-1500byte 4byte
Ethernet Header
IP 헤더
IP 데이터
데이터
11제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
IP 주소
IP 주소의 구성
네트워크 ID
네트워크를 구분
호스트 ID
네트워크 상에 존재하는 컴퓨터들을 구분
호스트 ID네트워크 ID
12제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
IP 주소 체계
A,B,C 클래스로 구분
class A 1.0.0.0 ~ 127.255.255.255
class B 128.0.0.0 ~ 191.255.255.255
class C 192.0.0.0 ~ 223.255.255.255
host ID (24)net ID (7)0
net ID (14) host ID (16)01
0 net ID (21) host ID (8)11
0 8 15 23 31
A class 1개 = 16,777,216개 IP
B class 1개 = 65,536개 IP
C class 1개 = 256개 IP
13제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
IP 데이터그램 분석
14제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
IP 데이터그램 분석 (1/5)
45 00 00 30 00 00 40 00 33 06 C7 F4 D3 E9 1C 70 D2 62 BD 17
헤더길이
5
목적지 주소
D2 62 BD 17
근원지 주소
D3 E9 1C 70
체크 섬
C7 F4
프로토콜
06
수명
33
플래그 / 단편옵셋
40 00 (0100 0000 0000 0000)
식별자
00 00
전체길이
00 30
서비스유형
00
버전
4
※ 16진수로 표기함
0 7 8 15 16 31
15제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
IP 데이터그램 분석 (2/5)
버전 0x4 IP 데이터그램 버전 4를 사용
헤더길이 0x5 5 x 4 = 20, 헤더길이는 20 바이트임
서비스 유형 0x0 최소지연, 최대 처리율, 최대 신뢰성, 최소비용
모두 요구하지 않음, 기본 서비스 유형임
00100x08
01000x04
10000x02
00010x10
00000x00
서비스 유형Minimize
monetary costMaximize reliability
Maximize throughput
Minimize delay
0 0000000
0 1 2 3 4 5 6 7
16제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
IP 데이터그램 분석 (3/5)
전체 길이 0x30 IP 데이터그램의 전체길이는 48 바이트임
식별자 0x00 IP 데이터그램이 단편화 되었을 때 단편마다
동일한 식별자 값이 부여됨
플래그/단편옵셋
플래그 단편화 되지 않은 유일한 단편임
단편옵셋 0이므로 단편화 되지 않았거나
단편화 되었을 때 첫번째 단편임
0000000000000010
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Do Not Fragment 1 → 단편화 금지, 0 → 단편화 가능
More Fragment 0 → 마지막 단편이거나 유일한 단편임1 → 마지막 단편 아님
17제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
IP 데이터그램 분석 (4/5)
수명 0x33 51개의 라우터를 거친 후 폐기됨
프로토콜 0x06 IP 데이터그램은 상위 TCP 프로토콜에 전달됨교재, TCP/IP 프로토콜 분석 및 네트워크 프로그래밍, 부록 4 Protocol Numbers 참고
AMAN2002 Online Help의 “Protocol Type” 참조
18제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
IP 데이터그램 분석 (5/5)
체크 섬 0xC7F4 전송 중 데이터그램의 오류 검사
송신 시 체크 섬 값을 계산하여 0xC7F4(51188)을 전송
목적지에서 다시 체크 섬을 계산하여 전송시의 체크 섬과 다르면 폐기함
근원지 주소 0xD3 E9 1C 70 211.233.28.112
목적지 주소 0xD2 62 BD 17 210.98.189.23
19제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
연습문제
45 00 00 4E BF 17 00 00 80 11 F8 85 A5 E5 9B 37 A5 E5 9B FF
헤더길이
목적지 주소
근원지 주소
체크섬프로토콜수명
플래그 / 단편옵셋식별자
전체길이서비스유형버전입력
20제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
연습문제
버전
헤더길이
서비스 유형
전체 길이
식별자
플래그
단편옵셋
수명
프로토콜
체크 섬
근원지 주소
목적지 주소
※ 각 필드의 의미를 분석하시오.
21제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Guru를 이용한 데이터그램 분석 연습
22제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
데이터그램 캡처 프로그램 작성
※ 프로젝트 생성 및 라이브러리 경로 설정은ch04. 이더넷(Ethernet)의 이더넷 캡처 프로그램 작성과 동일
23제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
대화상자 디자인
List Control1
Group Box2
Static Text3 ~ 14
Edit Box15~29
Group Box30
Static Text31, 33
Edit Box32, 34
Button35~37
24제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Control 속성
m_strIpTtlRead-onlyIDC_EDIT_IP_TtlEdit Box24
m_strIpFragOffRead-onlyIDC_EDIT_IP_FragOffEdit Box23
m_strIpFlagRFRead-onlyIDC_EDIT_IP_RF_flagEdit Box22
m_strIpFlagMFRead-onlyIDC_EDIT_IP_MF_flagEdit Box21
m_strIpFlagDFRead-onlyIDC_EDIT_IP_DF_flagEdit Box20
m_strIpIdenRead-onlyIDC_EDIT_IP_IdenEdit Box19
m_strIpToLenRead-onlyIDC_EDIT_IP_ToLenEdit Box18
m_strIpHLenRead-onlyIDC_EDIT_IP_HLenEdit Box16
m_strIpTosRead-onlyIDC_EDIT_IP_TosEdit Box17
m_strIpVerRead-onlyIDC_EDIT_IP_VerEdit Box15
m_ListIPPacketInfo
변수이름
List Control
종류
1
#
View: ReportIDC_LIST_PacketInfo
속성ID
25제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Control 속성
m_strIpProtoRead-onlyIDC_EDIT_IP_ProtoEdit Box25
m_strIpChecksumRead-onlyIDC_EDIT_IP_ChecksumEdit Box26
.IDC_BUTTON_INFORMButton37
.Default ButtonIDCANCELButton36
m_iCountInputIDC_EDIT_CountInputEdit Box32
m_iCountOutputRead-onlyIDC_EDIT_CountOutputEdit Box34
m_strIpOptRead-onlyIDC_EDIT_IP_OptEdit Box29
.IDC_BUTTON_StartCaptureButton35
변수이름속성ID종류#
m_strIpDestAddrRead-onlyIDC_EDIT_IP_DestAddrEdit Box28
m_strIpSrcAddrRead-onlyIDC_EDIT_IP_SrcAddrEdit Box27
26제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
이벤트 처리
OnButtonInform()BN_CLICKEDIDC_BUTTON_INFORMButton37
36
35
1
#
OnClickLIST()NM_CLICKIDC_LIST_PacketInfoList ControlOnBUTTONStartCapture()
BN_CLICKEDIDC_BUTTON_StartCaptureButton
OnCancel()BN_CLICKEDIDCANCELButton
함수명메시지ID종류
27제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
void CIPViewerDlg::OnBUTTONSelectAdaptor() {
//Ncap lib.(Dialog based class lib.) 객체 생성.CSelectAdaptorDlg *pDlg = new CSelectAdaptorDlg;if(pDlg->DoModal() != IDOK){
delete pDlg;return;
}
…}
어뎁터 오픈 대화상자 표시
28제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
어뎁터 열기//선택된 네트워크 어뎁터를 사용할 수 있도록 초기화.if(pDlg->OpenAdaptor(1)) {
::AfxMessageBox("Adaptor open 실패");
pDlg->CloseAdaptor();delete pDlg;return;
}
29제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
패킷 캡처#define MaxBufferLen 2048UpdateData(TRUE);
int i = 0;unsigned char arrTemp[MaxBufferLen];for(i < m_iCountInput){
memset(arrTemp, 0, MaxBufferLen);
//패킷을 하나 획득함. 음수가 return되면 에러가 발생한 것.int iLengthOfPacket = pDlg->Ncap(arrTemp, MaxBufferLen);if(iLengthOfPacket <0 )
continue;
//패킷 분석…
}
30제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
패킷 분석 (1/7)
// 패킷 분석시에 사용하는 이더넷 헤더// Ethernet Header (14 바이트) - IEEE Standard for Information technologystruct t_EtherHeader{
u_char eth_dst[6]; // Destination Address Field, 48bits u_char eth_src[6]; // Source Address Field, 48bitsu_short eth_type; // Type Field, 16bitschar eth_data[1]; // MAC Client Data
};
“C:\AMAN2002\include\ProtocolHeader.h”
31제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
패킷 분석 (2/7)
struct t_IPHeader // IP header (최소 20 바이트) - RFC 791 {
u_char ip_hl:4, // Internet Header Length, 4bits ip_v:4; // Version, 4bits
u_char ip_tos; // Type of Service, 8bits u_short ip_len; // Total Length, 16bits u_short ip_id; // Identification, 16bits u_short ip_off; // fragment offset#define IP_RF 0x8000#define IP_DF 0x4000#define IP_MF 0x2000#define IP_OFFMASK 0x1fffu_char ip_ttl; // Time to Live, 8bits u_char ip_proto; // Protocol, 8bits u_short ip_sum; // Header Checksum, 16bits struct in_addr ip_src; // Source Address, 32bits struct in_addr ip_dst; // Destination Address, 32bits char ip_data[1]; // IP data
};
“C:\AMAN2002\include\ProtocolHeader.h”
32제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
패킷 분석 (3/7)
// 획득한 패킷의 시작 주소를 t_EtherHeader 구조체 주소로 대입t_EtherHeader *tEtherHeader = (t_EtherHeader *)arrTemp;
// IP 패킷의 시작 지점 정보를 t_IPHeader 구조체로 전달t_IPHeader *tIPHeader = (t_IPHeader *) tEtherHeader->eth_data; m_tIPHeader[i]= *tIPHeader;
// 일련번호CString strNum = _T("");strNum.Format(_T("%d"), i);m_ListIPPacketInfo.InsertItem(LVIF_TEXT, i, strNum, 0, 0, 0, 0 );
// 근원지 IP 주소 획득CString strIpSrcAddr = _T("");strIpSrcAddr.Format("%s", inet_ntoa(m_tIPHeader[i].ip_src));m_ListIPPacketInfo.SetItem(i, 1, LVIF_TEXT, strIpSrcAddr, 0, 0, 0, 0);…
• List Control 에 패킷 헤더 정보 표시
33제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
패킷 분석 (4/7)•Edit Box에 10진수로 패킷 헤더 필드 표시 (List Control의 항목 클릭)
void CIPViewerDlg::OnClickLIST(NMHDR* pNMHDR, LRESULT* pResult) {
NM_LISTVIEW * pNmList = (NM_LISTVIEW *) pNMHDR;int nItem = pNmList->iItem;if(nItem <= -1) return;
//버전m_strIpVer.Format("%d", m_tIPHeader[nItem].ip_v);
//헤더길이m_strIpHLen.Format("%d", m_tIPHeader[nItem].ip_hl);
//서비스 유형m_strIpTos.Format("%d", m_tIPHeader[nItem].ip_tos);
//전체길이m_strIpToLen.Format("%d ", htons(m_tIPHeader[nItem].ip_len));. . .
34제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
패킷 분석 (5/7)
//식별자m_strIpIden.Format("%d ", htons(m_tIPHeader[nItem].ip_id));
//플래그 - RFiTemp = htons(m_tIPHeader[nItem].ip_off) & IP_RF;iTemp >>= 15;m_strIpFlagRF.Format("%d", iTemp);
//플래그 - DFiTemp = htons(m_tIPHeader[nItem].ip_off) & IP_DF;iTemp >>= 14;m_strIpFlagDF.Format("%d", iTemp);
//플래그 - MFiTemp = htons(m_tIPHeader[nItem].ip_off) & IP_MF;iTemp >>= 13;m_strIpFlagMF.Format("%d", iTemp);. . .
• Edit Box에 10진수로 패킷 헤더 필드 표시 (List Control의 항목 클릭)
35제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
패킷 분석 (6/7)
//단편옵셋unsigned short iFrag = htons(m_tIPHeader[nItem].ip_off) & IP_OFFMASK;m_strIpFragOff.Format("%d", iFrag);
//수명m_strIpTtl.Format("%d", m_tIPHeader[nItem].ip_ttl);
//프로토콜m_strIpProto.Format("%d", m_tIPHeader[nItem].ip_proto);
//헤더체크섬m_strIpChecksum.Format("%d ", htons(m_tIPHeader[nItem].ip_sum));
//근원지 주소m_strIpSrcAddr.Format("%s", inet_ntoa(m_tIPHeader[nItem].ip_src));
//목적지 주소m_strIpDestAddr.Format("%s",inet_ntoa(m_tIPHeader[nItem].ip_dst));. . .
• Edit Box에 10진수로 패킷 헤더 필드 표시 (List Control의 항목 클릭)
36제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
패킷 분석 (7/7)• Edit Box에 10진수로 패킷 헤더 필드 표시 (List Control의 항목 클릭)
//옵션int iOptionLength = m_tIPHeader[nItem].ip_hl * 4 - 20;
// 옵션 데이터가 있을 경우if( iOptionLength > 0 ){
pTemp = (unsigned char *) &m_tIPHeader[nItem].ip_data;for( int i = 0; i<iOptionLength; i++ ) {
strTemp.Format("%d ", pTemp[i]);m_strIpOpt += strTemp;
}}UpdateData(FALSE);*pResult = 0;
}
37제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
어뎁터 닫기
//사용한 자원 해제.pDlg->CloseAdaptor();
//Ncap lib. 삭제.delete pDlg;
38제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
IPViewer 실행 화면 (1)
39제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
IPViewer 실행 화면 (2)
click
40제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
IPViewer를 이용한 이더넷 프레임 분석
버전 IPv4를 사용
헤더길이 헤더길이는 20바이트 이므로 옵션을 사용하지 않음
서비스 유형 0으로 기본 서비스 유형임
전체 길이 데이터그램의 전체길이는 56 바이트임
식별자 단편의 ID는 47172임
41제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
IPViewer를 이용한 이더넷 프레임 분석
플래그 do not fragment비트가 0 이므로 단편화되었고,
more fragment 비트가 0이므로 마지막 단편이거나
유일한 단편임
단편옵셋 0 이므로 첫번째 단편임
수명 128개의 라우터를 거친 뒤에 폐기됨
프로토콜 데이터에서 UDP 프로토콜을 캡슐화 함
체크 섬 송신지에서 계산한 체크 섬은 0 임
근원지 주소 데이터그램의 송신지 주소는 210.98.189.23
목적지 주소 데이터그램의 수신지 주소는 211.115.205.131
42제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
참고 문헌
서승호 외, AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크프로그래밍, 정익사, 2002.
RFC 760, Jon Postel, DOD STANDARD INTERNET PROTOCOL, January 1980.
RFC 791, Jon Postel, INTERNET PROTOCOL DARPA INTERNET PROGRAM PROTOCOL SPECIFICATION, September 1981.
RFC 894, Charles Hornig, A Standard for the Transmission of IP Datagrams over Ethernet networks, April 1984.
RFC 950, J. Mogul(Stanford), Internet Standard Subnetting Procedure, August 1985.RFC 1122, R.Braden, Requirements for Internet Hosts –Communication Layers, October 1989.
RFC 1132, L. McLaughlin III, A Standard for Transmission of 802.2 Packet over IPX Networks, November 1989Eric A. Hall, Internet Core Protocols, O’Reilly, 1999.
1
AMAN2002를 이용한TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
인터넷 제어 메시지 프로토콜(ICMP)
2003. 5.
Chapter 6:
2제6장 ICMP(Internet Control Message Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
인터넷 제어 메시지 프로토콜
IP네트워크에서 네트워크 문제에 관한 정보를 전달하기 위해 사용하는 프로토콜 (지속적 문제의 회피 가능)
예) 라우터에서 발생한 에러를 송신측으로 전달
IP 데이터그램에 캡슐화 되어 전송
ICMP 메시지ICMP 메시지
IP 헤더IP 헤더
Ethernet 헤더Ethernet 헤더 Ethernet 데이터Ethernet 데이터
IP 데이터IP 데이터
트레일러트레일러
<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) – 메시지의 오류 검사
나머지 헤더 – 타입과 코드 값에 따라 변경됨
4제6장 ICMP(Internet Control Message Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
ICMP 메시지의 종류
ICMP 메시지의 분류 기준타입(Type): 대 분류
코드(Code): 소 분류
교재 229쪽, <표 6.1> ICMP 메시지 유형을 참고
이하 생략
port unreachable3
protocol unreachable2
host unreachable1
network unreachable0
destination unreachable : 목적지 도달 불능3
echo reply(ping reply) : 에코응답00
에러질의설 명CodeType
5제6장 ICMP(Internet Control Message Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
ICMP 메시지의 종류
에러(error) 보고용 메시지IP 패킷 처리 도중 발생한 문제를 보고할 때 사용
Destination unreachable, source quench…
질의(query)용 메시지다른 호스트로부터 특정 정보를 획득하기 위해 사용
네트워크 문제 진단 및 타임스탬프 요청과 같은 질의에사용
6제6장 ICMP(Internet Control Message Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
에러 보고용 메시지
에러 보고용 메시지의 종류
DestinationUnreachableDestinationUnreachable
SourceQuenchSourceQuench
RedirectionRedirection
TimeExceeded
TimeExceeded
ParameterProblems
ParameterProblems
• 라우터가 데이터그램을 라우팅 할 수 없을 때• 호스트가 데이터그램을 전달할 수 없을 때
• 혼잡으로 인해 데이터그램의 폐기를 알림
• IP 헤더의 TTL 필드 값 만료를 나타냄
• 데이터그램의 헤더 에러 문제 발생시 사용
• 라우터가 최적 경로를 사용하지 않는 호스트발견 시 최적 경로를 알리기 위해 사용
Error Reporting
Error Reporting
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’과 같은 불
특정한 주소를 가진 데이터그램에 대해서는 에러 메시지가 생성되지 않음
단편화 된 데이터그램에서는 첫번째 단편에만 에러 메시지 생성
8제6장 ICMP(Internet Control Message Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
질의용 메시지
질의용 메시지의 종류
QueryQuery
Echorequest and reply
Echorequest and reply
Timestamprequest and reply
Timestamprequest and reply
Address maskrequest and replyAddress mask
request and reply
Router solicitationand advertisementRouter solicitationand advertisement
• IP 호스트의 진단에 사용
• 두 시스템간에 IP 데이터그램이 오고 가는데필요한 왕복시간(Round Trip Time)을 결정
• 호스트가 라우터에게 서브넷 마스크 요청
• 다른 네트워크의 호스트에게 데이터 전송 시자신의 네트워크에 연결된 라우터 주소 요청
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 메시지 분석
10제6장 ICMP(Internet Control Message Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
ICMP 메시지 분석
• Ping 수행 시 ICMP 메시지 캡처
11제6장 ICMP(Internet Control Message Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
ICMP 메시지 분석
Type / CodeType - 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 – Request0 – Reply
12제6장 ICMP(Internet Control Message Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
ICMP 메시지 분석
체크 섬0xD9F3(55795)
식별자: 고유 세션 식별 번호0x2C07(11271)
순서번호: 동일 식별자를 가진 메시지들 구분0x0100(256)
※ ping을 수행하는 근원지/목적지 주소, 프로토콜 정보는 IP 데이터그램헤더에 나타남
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
64bits or Original Datagram Header
Internet Header
Unused
체크 섬코드타입
14제6장 ICMP(Internet Control Message Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
연습 문제
ICMP 헤더타입/코드
체크 섬
인터넷헤더
송신지 IP . . . 에서 수신지 . . . 로 전송
상위의 프로토콜로 전달됨
데이터그램 헤더
송신지 포트 번에서 수신지 포트 번으로 전달
※ 패킷의 값은 10진수로 표현하시오.
15제6장 ICMP(Internet Control Message Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Guru를 이용한 ICMP 분석 연습
16제6장 ICMP(Internet Control Message Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
ICMP 캡처 프로그램 작성《IcmpViewer》
※ 프로젝트 생성 및 라이브러리 경로 설정은『ch04. 이더넷(Ethernet)』의 “이더넷 캡처 프로그램 작성”과 동일
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
18제6장 ICMP(Internet Control Message Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Control 속성
IDC_BUTTON_InfoButton7
Default ButtonIDCANCELButton6
IDC_BUTTON_StartButton5
m_EDIT_iCountInputIDC_EDIT_MonitoringEdit Box3
m_EDIT_iCountOutputRead-onlyIDC_EDIT_MonitoredEdit Box4
m_EDIT_strDataSectionRead-onlyIDC_EDIT_DataSectionEdit Box2
m_ListIcmpPacketInfo
변수이름
List Control
종류
1
#
View: ReportIDC_LIST
속성ID
19제6장 ICMP(Internet Control Message Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
이벤트 처리
OnBUTTONInfo()BN_CLICKEDIDC_BUTTON_InfoButton22
21
20
1
#
OnClickList()NM_CLICKIDC_LISTList Control
OnBUTTONStart()BN_CLICKEDIDC_BUTTON_StartButton
OnCancel()BN_CLICKEDIDCANCELButton
함수 명메시지ID종류
※ 어댑터 오픈 대화상자 표시, 어댑터 열기, 패킷 캡처, 어댑터 닫기함수의 설명은 『ch04. 이더넷(Ethernet)』 과 동일하므로 생략함
20제6장 ICMP(Internet Control Message Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
패킷 분석
ICMP 헤더의 시작지점
(IP 데이터그램의 전체크기– IpHLen) 바이트14바이트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비트
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;. . .
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);
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);
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
25제6장 ICMP(Internet Control Message Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
IcmpViewer 실행화면
ICMP 헤더(기본 포맷) 8 바이트
ICMP 메시지(헤더+데이터)의 길이
26제6장 ICMP(Internet Control Message Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
IcmpViewer 실행화면
리스트 컨트롤의 항목 클릭
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)
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비트
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.
1
AMAN2002를 이용한
TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
Traceroute 기능 분석 및프로그래밍
2003. 3.
Chapter 7:
2제7장 Traceroute 기능 분석 및 프로그래밍
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Traceroute
패킷이 목적지에 도달하는 경로를 추적하는 프로그램
자신의 컴퓨터가 목적지에 도달하기까지 거치게되는 게이트웨이를 기록
사용 목적호스트 사이의 라우팅 문제를 파악
인터넷 상의 문제가 되는 네트워크를 파악
3제7장 Traceroute 기능 분석 및 프로그래밍
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 ICMP 시간초시간초과과 메시지메시지를 송신한 쪽으로 전달함
4제7장 Traceroute 기능 분석 및 프로그래밍
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Traceroute의 동작원리
TTL을 1로 설정한 ICMP echo request 패킷 전송첫번째 라우터에서 ICMP 시간초과 메시지 반송
시간초과 메시지에는 라우터의 이름과 IP 주소를 포함
TTL을 2로 설정한 ICMP echo request 패킷 전송경로상의 두번째 라우터에서 ICMP 시간초과 메시지 반송
최종 목적지에 도달할 때까지 TTL 필드 값을 1씩증가시켜가면서 echo request 전송-ICMP 시간초과 메시지 반송
5제7장 Traceroute 기능 분석 및 프로그래밍
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Traceroute의 동작
송신측호스트
목적지호스트
ICMP 시간초과메시지
ICMP 반향요청메시지
ICMP 시간초과메시지
ICMP 반향요청메시지
송신측호스트
목적지호스트
< TTL 값이 1일 때 >
< TTL 값이 2일 때 >
6제7장 Traceroute 기능 분석 및 프로그래밍
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Traceroute의 동작
ICMP 반향응답메시지
ICMP 반향요청메시지
송신측호스트
목적지호스트
< TTL 값이 3(최종 목적지)일 때 >
7제7장 Traceroute 기능 분석 및 프로그래밍
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
MS-DOS창에서 Traceroute 실행
www.yahoo.co.kr 사이트로 traceroute 실행MS-DOS에서 제공하는 Traceroute 프로그램 “ tracert ” 사용방법
교재 495쪽, 부록 1의 6번 참고
홉 수 지연 시간 라우터의 IP 주소
8제7장 Traceroute 기능 분석 및 프로그래밍
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를 수행한 결과를 보여줌.
9제7장 Traceroute 기능 분석 및 프로그래밍
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
AMAN2002 Traceroute 실행
Whois 정보 조회
10제7장 Traceroute 기능 분석 및 프로그래밍
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Traceroute에 대한 패킷 캡처
TTL: 1송신지 주소 : 210.98.189.23
수신지 주소 : 211.32.119.151
ICMP 헤더 : 08 00 92 3E C0 07 01 00
첫번째 라우터에 ICMP Echo Request 요청
11제7장 Traceroute 기능 분석 및 프로그래밍
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Traceroute에 대한 패킷 캡처
ICMP 헤더의 타입이 8이므로 ICMP Echo Request 메시지임
TTL이 1이므로 첫번째 라우터의 ICMP 메시지에 대한 응답을 기대함
목적지 주소는 www.yahoo.co.kr(211.32.119.151) 임
211.32.119.151D3 20 77 97수신지 주소
210.98.189.23D2 62 BD 17송신지 주소
000ICMP 헤더 : 코드
808ICMP 헤더 : 타입
101Protocol
101TTL
10진수16진수필드
12제7장 Traceroute 기능 분석 및 프로그래밍
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Traceroute에 대한 패킷 캡처
송신지 주소 : 211.171.203.1
수신지 주소 : 210.98.189.23
ICMP 헤더 : 0B 00 99 B9 00 00 00 00
ICMP Echo Request에 대한 첫번째 라우터의 응답
13제7장 Traceroute 기능 분석 및 프로그래밍
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Traceroute에 대한 패킷 캡처
ICMP 헤더의 타입이 0x11이므로 ICMP Time Exceed 메시지임
첫번째 라우터의 IP 주소는 송신지 주소(211.171.203.1)임
수신지 주소는 ICMP Echo Request를 호출한 210.98.189.23 임
210.98.189.23D2 62 BD 17수신지 주소
211.171.203.1D3 AB CB 01송신지 주소
000ICMP 헤더 : 코드
1711ICMP 헤더 : 타입
101Protocol
10진수16진수필드
14제7장 Traceroute 기능 분석 및 프로그래밍
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
연습 문제
WinTraceroute를 실행하여 목적지 호스트에 도달하기까지의 네트워크 경로를 그림으로 나타내어 보라.
전송하는 패킷의 TTL 값, ICMP 메시지와 관련시킬 것
15제7장 Traceroute 기능 분석 및 프로그래밍
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
ping 프로그램 작성《WinPing》
※ 프로젝트 생성 및 라이브러리 경로 설정은『ch04. 이더넷(Ethernet)』의 “이더넷 캡처 프로그램 작성”과 동일
16제7장 Traceroute 기능 분석 및 프로그래밍
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
프로젝트 설정
Microsoft Visual C++ 6.0의 메뉴에서 Project Settings Link 탭 Object/library modules:
nmicmpd.lib 추가
17제7장 Traceroute 기능 분석 및 프로그래밍
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
대화상자 디자인
1
Edit Box2
3
4
5
6
7
Button
18제7장 Traceroute 기능 분석 및 프로그래밍
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
대화상자 디자인
8
9
10
11 12
19제7장 Traceroute 기능 분석 및 프로그래밍
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Control 속성
Default ButtonIDCANCELButton12
Default ButtonIDOKButton11
m_pingTimeoutIDC_MaxHopsEdit Box10
m_MaxHopsIDC_TimeoutEdit Box9
m_BuffersizeIDC_BufferSizeEdit Box8
Default ButtonIDOKButton7
IDC_BUTTON_HelpButton6
IDC_BUTTON_InfoButton5
IDC_BUTTON_PingButton3
IDC_BUTTON_OptionButton4
m_EDIT_MessageRead-onlyIDC_EDIT_MessageEdit Box2
m_EDIT_ADDR
변수이름
Edit Box
종류
1
#
IDC_EDIT_IPAddr
속성ID
20제7장 Traceroute 기능 분석 및 프로그래밍
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
이벤트 처리
OnBUTTONHelp()BN_CLICKEDIDC_BUTTON_HelpButton6
OnBUTTONInfo()BN_CLICKEDIDC_BUTTON_InfoButton5
OnBUTTONPing()BN_CLICKEDIDC_BUTTON_PingButton3
OnBUTTONOption()BN_CLICKEDIDC_BUTTON_OptionButton4
함수 명종류# 메시지ID
21제7장 Traceroute 기능 분석 및 프로그래밍
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;
22제7장 Traceroute 기능 분석 및 프로그래밍
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;
}
23제7장 Traceroute 기능 분석 및 프로그래밍
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);
}
24제7장 Traceroute 기능 분석 및 프로그래밍
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);
}
25제7장 Traceroute 기능 분석 및 프로그래밍
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Winping 실행화면
WinPing 예제 프로그램 실행 화면 속성 설정 대화상자
26제7장 Traceroute 기능 분석 및 프로그래밍
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Traceroute 프로그램 작성《WinTraceroute》
※ 프로젝트 생성 및 라이브러리 경로 설정은『ch04. 이더넷(Ethernet)』의 “이더넷 캡처 프로그램 작성”과 동일
27제7장 Traceroute 기능 분석 및 프로그래밍
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
프로젝트 설정
Microsoft Visual C++ 6.0의 메뉴에서 Project Settings Link 탭 Object/library modules:
nmtrtd.lib 추가
28제7장 Traceroute 기능 분석 및 프로그래밍
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
대화상자 디자인
1
Edit Box2
3
4
5
6
Button
29제7장 Traceroute 기능 분석 및 프로그래밍
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Control 속성
Default ButtonIDOKButton6
IDC_BUTTON_HELPButton5
IDC_BUTTON_TracerouteButton3
IDC_BUTTON_INFOButton4
m_EDIT_MessageRead-onlyIDC_EDIT_MessageEdit Box2
m_EDIT_IPAddr
변수이름
Edit Box
종류
1
#
IDC_EDIT_IPAddr
속성ID
OnButtonHelp()BN_CLICKEDIDC_BUTTON_HELPButton5
OnBUTTONTraceroute()BN_CLICKEDIDC_BUTTON_TracerouteButton3
OnButtonInfo()BN_CLICKEDIDC_BUTTON_INFOButton4
함수 명종류# 메시지ID
이벤트 처리
30제7장 Traceroute 기능 분석 및 프로그래밍
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";
31제7장 Traceroute 기능 분석 및 프로그래밍
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;
}
32제7장 Traceroute 기능 분석 및 프로그래밍
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);
}
33제7장 Traceroute 기능 분석 및 프로그래밍
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
WinTraceroute 실행화면
WinTraceroute 실행화면
34제7장 Traceroute 기능 분석 및 프로그래밍
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.
1
AMAN2002를 이용한
TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
TCP (Transmission Control Protocol)
2003. 6.
Chapter 8:
2제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
전송 제어 프로토콜
특징연결형 서비스
가상회선을 통한 ‘신뢰성’있고 ‘순서적’인 데이터 스트림 전달
포트 대 포트(port-to-port) 전송
대표적인 응용 : HTTP, FTP, TELNET, SMTP, POP3
50015000 5002 5003
TCPIP
데이터링크
물리계층
FTP telnet SMTP POP3
21 23 25 110
TCPIP
데이터링크
물리계층
FTP telnet SMTP POP3Client Server
3제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
TCP의 기능
오류 검출 및 재전송순서번호
수신호스트에서 세그먼트의 순서번호 필드를 검사
세그먼트의 상실, 중복, 순서 바뀜을 검사
확인번호
수신호스트는 자신이 받기를 기대하는 다음데이터의확인 번호 필드를 입력하여 송신
이전의 데이터 스트림이 모두 수신되었음을 의미함
재전송
송신호스트가 일정시간동안 확인 데이터를 받지 못하면 데이터를 재전송
4제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
TCP의 기능
흐름제어송신자와 수신자간의 상대적인 속도 조절
연결설정 후 윈도우(슬라이딩 윈도우)의 크기 결정
윈도우 크기
수신 호스트의 확인 없이 전송할 수 있는 최대 데이터의 크기
BA 8 7 6
1 2
3 4 5
10 9
빈 물통이 없으므로더 이상 물을 보낼
수가 없다.
빈 물통을 보낸다는 의미는잘 받았으니 물을 계속
보내도 좋다는 의미를 포함
빈 물통을 받지 않고 보낼 수 있는 물통의 개수 : 10개→ 윈도우 크기가 10임
5제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
TCP의 기능
폭주제어폭주
인터넷에 과부하가 걸려 요구된 트래픽 양만큼 충분한통신자원이 없는 상태
폭주 발생시 목적지 컴퓨터가 근원지 컴퓨터에게 전송속도를 줄이라는 메시지를 보냄
근원지 컴퓨터가 전송속도를 줄임으로써 폭주제어
6제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
TCP 세그먼트 구조
TCP 내용
근원지 포트 번호 목적지 포트 번호
순서 번호
확인 번호
헤더길이
윈도우 크기
체크 섬 긴급 포인터
fsthau예약
TCP 헤더(20 byte)
20 byte
0 15 31
7제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
TCP 세그먼트 구조
근원지 포트 번호
근원지 컴퓨터의 인터넷 응용 프로그램이 사용하는 포트번호
목적지 포트 번호
목적지 컴퓨터의 인터넷 응용 프로그램이 사용하는 포트번호
포트 번호에 따라 상위 응용 프로토콜을 구별
예) HTTP : 80, SMTP : 25, Telnet : 23, FTP 데이터 접속 : 20
순서 번호 (Sequence number)
TCP 데이터 전송 순서를 나타냄
확인 번호 (Acknowledgement number)
다음에 받아야 하는 순서번호를 나타냄 (제어 6 비트 중 ACK 비트가 설정되어 있을 때 유효)
8제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
TCP 세그먼트 구조
헤더 길이 (4bit)
4바이트 기준으로 표기, 5(hex)일 경우 20바이트임
예약 (6bit)
사용되지 않는 필드. 모두 0 이 설정됨.
제어 6 비트
세팅되면 TCP 연결 종료FIN
세팅되면 연결요청, 연결설정, 확인응답에서 순서번호동기화에 사용
SYN
세팅되면 TCP 연결을 다시 설정함RST
세팅되면 송신시스템은 즉시 전송하고 버퍼를 비움PSH
세팅되면 확인번호 필드가 유효함ACK
세팅되면 긴급포인터 필드가 유효함URG
9제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
TCP 세그먼트 구조
윈도우 크기
슬라이딩 윈도우 크기를 정함
체크 섬
TCP 세그먼트(헤더 + 데이터)의 오류 검사
긴급 포인터
긴급 포인터의 끝과 일반데이터의 시작을 나타냄
IP 데이터그램에 포함된 TCP 세그먼트 구조
TCP 내용TCP 데이터TCP 헤더
(20 byte + 옵션))(20 byte + 옵션)
IP 헤더 IP 데이터
10제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
TCP 세그먼트 분석
11제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
TCP 세그먼트 분석
근원지 포트 / 목적지 포트
근원지 포트 0x0050은 80번 포트 즉, HTTP 임
목적지 포트 0x0926 즉, 2342번 포트를 사용
순서번호
데이터 순서번호는 0x6ADC2F1A, 십진수로 1792814874 임
69 200 5 00
목적지 포트 (16 bit)
근원지 포트 (16 bit)
AF 1CA D 26
순서 번호 (32 bit)
12제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
포트 번호 표
교재, TCP/IP 프로토콜 분석 및 네트워크 프로그래밍, 부록 5 참조
AMAN2002 Online Help의 “well-known port” 참조
13제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
TCP 세그먼트 분석
확인 번호
데이터 확인번호는 0x3355E150, 십진수로 861266256 임. 즉, 다음 번에받기를 기대하는 세그먼트의 순서번호가 861266256 임
헤더길이 / 예약 / 플래그
헤더길이는 0x5 이므로 20 바이트임
제어 플래그 중 ACK 비트가 1로 설정되었으므로 확인번호가 유효함
01 553 5 E3
확인 번호 (32 bit)
1 10 00 010 000 0 0000
플래그 (6 bit)예약 (6 bit)
00 15
헤더길이(4 bit)
2 진수
16 진수
USH ACK PSH RST SYN FIN
14제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
TCP 세그먼트 분석
윈도우 크기
TCP 데이터를 전송할 윈도우 크기는 0x1920, 십진수로 6432 임
수신지의 확인 응답 없이 계속해서 6432 바이트를 전송 가능함
체크 섬 / 긴급 포인터
체크 섬 코드는 0xAFCD 임
긴급 포인터는 URG 제어 필드가 0 이므로 긴급 포인터의 값은 0 임.
URG = 1이면 긴급포인터에 유효한 값이 포함됨
09 21
윈도우 크기 (16 bit)
00 0DF C 0 A
긴급 포인터 (16 bit)
체크 섬 (16 bit)
15제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
연습문제
00 50 09 26 6A DC 78 41 33 55 E1 50 50 10 19 20 C9 D9 00 00
헤더 필드 설명
값(10진수)
예약
헤더길이
확인 번호
순서 번호
목적지 포트번호
근원지 포트번호
설명필드 명
16제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
연습문제
00 50 09 26 6A DC 78 41 33 55 E1 50 50 10 19 20 C9 D9 00 00
헤더 필드 설명
제어 플래그
값(10진수)
옵션
긴급 포인터
체크 섬
윈도우 크기
설명필드 명
17제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Guru를 이용한 TCP 세그먼트 분석 연습
18제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
TCP 세그먼트 캡처 프로그램 작성
※ 프로젝트 생성 및 라이브러리 경로 설정은『ch04. 이더넷(Ethernet)』의 “이더넷 캡처 프로그램 작성”과 동일
19제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
대화상자 디자인
1
2 3
4
5
6 7 8 14
9
10
11
12
1315 16
17
18 19 20
21
22
List Control
Edit Box
Edit Box
Button
Button
20제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Control 속성
m_EDIT_strFinCtrlRead-onlyIDC_EDIT_FinEdit Box13
m_EDIT_strSynCtlRead-onlyIDC_EDIT_SynEdit Box12
m_EDIT_strRstCtlRead-onlyIDC_EDIT_RstEdit Box11
m_EDIT_strPshCtlRead-onlyIDC_EDIT_PshEdit Box10
m_EDIT_strAckCtlRead-onlyIDC_EDIT_AckEdit Box9
m_EDIT_strUrgCtlRead-onlyIDC_EDIT_UrgEdit Box8
m_EDIT_strRestBitsRead-onlyIDC_EDIT_RestBitsEdit Box7
m_EDIT_strHdrLenRead-onlyIDC_EDIT_HdrLenEdit Box6
m_EDIT_strAckNumRead-onlyIDC_EDIT_AckNumEdit Box5
m_EDIT_strDestPortRead-onlyIDC_EDIT_DestPortEdit Box3
m_EDIT_strSeqNumRead-onlyIDC_EDIT_SeqNumEdit Box4
m_EDIT_strSrcPortRead-onlyIDC_EDIT_SrcPortEdit Box2
m_ListTcpPacketInfo
변수이름
List Control
종류
1
#
View: ReportIDC_LIST
속성ID
21제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Control 속성
m_EDIT_strWinSizeRead-onlyIDC_EDIT_WinSizeEdit Box14
m_EDIT_strChkSumRead-onlyIDC_EDIT_ChkSumEdit Box15
.IDC_BUTTON_InfoButton22
m_EDIT_iCountOutputRead-onlyIDC_EDIT_MonitoredEdit Box19
.IDC_BUTTON_StartButton20
m_EDIT_iCountInputIDC_EDIT_MonitoringEdit Box18
.default ButtonIDCANCELButton21
변수이름속성ID종류#
m_EDIT_strBinOptionRead-onlyIDC_EDIT_OptionEdit Box17
m_EDIT_strUrgPointRead-onlyIDC_EDIT_UrgPointEdit Box16
22제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
이벤트 처리
OnBUTTONInfo()BN_CLICKEDIDC_BUTTON_InfoButton22
21
20
1
#
OnClickList()NM_CLICKIDC_LISTList Control
OnBUTTONStart()BN_CLICKEDIDC_BUTTON_StartButton
OnCancel()BN_CLICKEDIDCANCELButton
함수명메시지ID종류
※ 어댑터 오픈 대화상자 표시, 어댑터 열기, 패킷 캡처, 어댑터 닫기함수의 설명은 『ch04. 이더넷(Ethernet)』 과 동일하므로 생략함
23제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
패킷 분석 (1/7)
struct t_TCPHeader // TCP Header{
u_short tcp_sport; // Source Port, 16bits u_short tcp_dport; // Destination Port, 16bits u_int tcp_seq; // Sequence Number, 32bits u_int tcp_akn; // Acknowledgment Number, 32bits u_short tcp_off;#define TCP_HDR 0xF000;#define TCP_RES 0x0FC0;#define TCP_URG 0x0020;#define TCP_ACK 0x0010;#define TCP_PSH 0x0008;#define TCP_RST 0x0004;#define TCP_SYN 0x0002;#define TCP_FIN 0x0001;#define TH_FLAGS (TH_FIN|TH_SYN|TH_RST|TH_ACK|TH_URG|TH_ECE|TH_CWR)u_short tcp_win; // Window, 16bits u_short tcp_sum; // Checksum, 16bits u_short tcp_urp; // Urgent Pointer, 16bits char tcp_data[1]; // TCP Data
};
“C:\AMAN2002\include\ProtocolHeader.h”
tcp_off 변수에서헤더길이(4) / 예약(6) / 제어플래그(6) 비트를구하기 위해 사용하는 마스크를 정의
예) 헤더길이는 tcp_off 의 상위 4비트를 사용하므로
TCP_HDR (1111 0000 0000 0000) & tcp_off마스킹 연산을 하여 헤더길이를 구함
24제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
패킷 분석 (2/7)
TCP 헤더의 시작지점
이더넷 헤더 IP 헤더 TCP 헤더옵션
옵션
상위 프로토콜 데이터arrTemp
arrTemp[0] arrTemp[14]arrTemp[34]
t_EtherHeader
t_EtherHeader->data = t_IPHeader
t_IPHeader->data
t_IPHeader->data + iIpOptionHeader = t_TCPHeader
arrTemp[34 + iIpOptionHeader]
t_TCPHeader->data
t_TCPHeader->data + iTcpHeaderLength
이더넷 헤더 IP 헤더 TCP 헤더옵션
옵션
상위 프로토콜 데이터arrTemp
arrTemp[0] arrTemp[14]arrTemp[34]
t_EtherHeader
t_EtherHeader->data = t_IPHeader
t_IPHeader->data
t_IPHeader->data + iIpOptionHeader = t_TCPHeader
arrTemp[34 + iIpOptionHeader]
t_TCPHeader->data
t_TCPHeader->data + iTcpHeaderLength
25제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
패킷 분석 (3/7)
// 패킷을 하나 획득함. 음수가 return되면 에러가 발생한 것.int iLengthOfPacket = pDlg->Ncap(arrTemp, MaxBufferLen);if(iLengthOfPacket < 0) continue;
// 획득한 데이터의 시작 지점 주소를 t_EtherHeader 구조체 주소로 대입t_EtherHeader* tEtherHeader = (t_EtherHeader*) arrTemp;
// 이더넷 데이터 구간의 시작 지점 정보를 t_IPHeader 구조체로 전달t_IPHeader* tIPHeader = (t_IPHeader*) tEtherHeader->eth_data;
// TCP 프로토콜은 IP 헤더의 프로토콜 필드값이 6이므로// IP 헤더의 프로토콜 필드 값이 0x06인 것만 골라냄if( tIPHeader->ip_proto == 0x06){
unsigned char* chTemp = NULL;int iIpHeaderLength = tIPHeader->ip_hl << 2;int iIpOptionHeader = (iIpHeaderLength - 20);t_t_TCPHeaderTCPHeader* * tmpTcpHeader tmpTcpHeader = (t_= (t_TCPHeaderTCPHeader*) *) tIPHeadertIPHeader-->>ipip_data + _data + iIpOptionHeaderiIpOptionHeader ;;m_tTCPHeader[i] = *tmpTcpHeader;…
• List Control 에 패킷 헤더 정보 표시
26제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
패킷 분석 (4/7)•Edit Box에 10진수로 패킷 헤더 필드 표시 (List Control의 항목 클릭 시)
…
// 근원지 포트 번호shTemp = htons(m_tTCPHeader[nItem].tcp_sport);m_EDIT_strSrcPort.Format("%d ", shTemp);
// 목적지 포트 번호shTemp = htons(m_tTCPHeader[nItem].tcp_dport);m_EDIT_strDestPort.Format("%d ", shTemp);
// 순서 번호uiTemp = htonl(m_tTCPHeader[nItem].tcp_seq);m_EDIT_strSeqNum.Format("%u", uiTemp);
// 확인 번호uiTemp = htonl(m_tTCPHeader[nItem].tcp_akn);m_EDIT_strAckNum.Format("%u", uiTemp);…
27제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
패킷 분석 (5/7)
// 헤더 길이(4비트) shTemp = htons(m_tTCPHeader[nItem].tcp_off) & TCP_HDR;shTemp = shTemp >>12; iTcpHeaderLength = shTemp;m_EDIT_strHdrLen.Format("%d ", shTemp);
// 예약shTemp = htons(m_tTCPHeader[nItem].tcp_off) & TCP_RES;shTemp = shTemp >>6; m_EDIT_strRestBits.Format("%d ", shTemp);
// 제어 6비트// URGshTemp = htons(m_tTCPHeader[nItem].tcp_off) & TCP_URG;shTemp = shTemp >>5; m_EDIT_strUrgCtl.Format("%d ", shTemp);// ACKshTemp = htons(m_tTCPHeader[nItem].tcp_off) & TCP_ACK;shTemp = shTemp >>4; m_EDIT_strAckCtl.Format("%d ", shTemp);. . .
• Edit Box에 10진수로 패킷 헤더 필드 표시 (List Control의 항목 클릭 시)
28제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
패킷 분석 (6/7)
// PSHshTemp = htons(m_tTCPHeader[nItem].tcp_off) & TCP_PSH;shTemp = shTemp >>3; m_EDIT_strPshCtl.Format("%d", shTemp);
// RSTshTemp = htons(m_tTCPHeader[nItem].tcp_off) & TCP_RES;shTemp = shTemp >>2; m_EDIT_strRstCtl.Format("%d ", shTemp);
// SYNshTemp = htons(m_tTCPHeader[nItem].tcp_off) & TCP_SYN;shTemp = shTemp>>1; m_EDIT_strSynCtl.Format("%d", shTemp);
// FINshTemp = htons(m_tTCPHeader[nItem].tcp_off) & TCP_FIN;shTemp = shTemp; m_EDIT_strFinCtl.Format("%d ", shTemp);
• Edit Box에 10진수로 패킷 헤더 필드 표시 (List Control의 항목 클릭)
29제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
패킷 분석 (7/7)• Edit Box에 10진수로 패킷 헤더 필드 표시 (List Control의 항목 클릭)
// 체크 섬shTemp = htons(m_tTCPHeader[nItem].tcp_sum);m_EDIT_strChkSum.Format("%d ", shTemp);
// 긴급 포인터shTemp = htons(m_tTCPHeader[nItem].tcp_urp);m_EDIT_strUrgPoint.Format("%d ", shTemp);
// 옵션이 있을 경우if(iTcpHeaderLength > 5){
pTemp = (unsigned char *) &m_tTCPHeader[nItem].tcp_data;for(int i=0; i<iTcpHeaderLength *4-20; i++) {
strTemp.Format("%02X ", pTemp[i]);m_EDIT_strOption += strTemp;
}}
30제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
TcpViewer 실행 화면
31제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
TcpViewer를 이용한 Tcp 세그먼트 분석
32제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
TcpViewer를 이용한 Tcp 세그먼트 분석
0번 패킷 분석
근원지 포트번호 송신지에서 80번 포트, HTTP를 사용함
목적지 포트번호 수신지에서 1570번, Registered Port를 사용함
헤더길이 5(hex)이므로 20바이트 임, 옵션을 사용하지 않음
제어 비트 ACK =1, FIN =1 이므로 확인번호가 유효하고, TCP 연결을
종료함
윈도우크기 윈도우 크기는 32120 바이트임.
체크 섬 송신지에서 계산한 체크 섬은 15009 임
긴급 포인터 제어비트의 URG =0 이므로 사용하지 않음
33제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
참고 문헌
서승호 외, AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍, 정익사, 2002.
RFC 793, Jon Postel, TRANSMISSION CONTROL PROTOCOL DARPA INTERNET PROGRAM PROTOCOL SPECIFICATION, September 1981.
RFC 879, J. Postel, The TCP Maximum Segment Size and Related Topics, November 1983.
RFC 1180, T. Socolofsky, C. Kale, A TCP/IP Tutorial, January 1991
RFC 1191, J. Mogul, Path MTU Discovery, November 1990Behrouz Forouzan, “Introduction to Data Communication and Networking”, Mcgrwohill, 1999.
Fred Halsall, “Data Communications, Computer Networks and Open Systems”, Addison-wesley, 1995.
1
AMAN2002를 이용한
TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
UDP (User Datagram Protocol)
2003. 6.
Chapter 9:
2제8장 UDP(User Datagram Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
사용자 데이터그램 프로토콜
특징비연결형 IP 전달 서비스 + 최소한의 신뢰성 제공 (선택적 체크 섬)
포트 대 포트(port-to-port) 전송
대표적인 응용 : SNMP(Simple Network Management Protocol)
실시간 인터넷 방송
50015000 161 162TCPIP
데이터링크
물리계층
Echo DaytimeSNMPSNMP/Trap
7 13 161 162TCPIP
데이터링크
물리계층
Echo DaytimeSNMPSNMP/Trap
Client Server
3제8장 UDP(User Datagram Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
UDP의 구조
20byte + 옵션UDP헤드
(8byte) UDP 데이터
IP 데이터
근원지 포트 목적지 포트
길이 체크 섬
0 8 16 24 31
IP 헤더
근원지 / 목적지 포트근원지,목적지 컴퓨터의 프로그램이 사용하는 포트 번호
길이UDP 데이터그램의 크기(헤더+데이터)를 바이트 단위로 나타냄
체크 섬UDP 데이터에 오류가 있는지 검사하기 위해 사용
4제8장 UDP(User Datagram Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
UDP 데이터그램 분석
5제8장 UDP(User Datagram Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
UDP 데이터그램 분석
근원지 포트 / 목적지 포트
근원지 / 목적지 포트 0x07C1은 1985번 Registered Port 사용
※ Registered Port : 1024~49151번
길이 / 체크 섬
UDP 데이터그램의 길이는 0x001C 즉 28바이트임
체크 섬을 위한 코드는 0x242E(9262)임
17 C17 C 00
목적지 포트 (16 bit)
근원지 포트 (16 bit)
E4 2C0 1 20
체크 섬 (16 bit)길이 (16 bit)
6제8장 UDP(User Datagram Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
포트 번호 표
교재, TCP/IP 프로토콜 분석 및 네트워크 프로그래밍, 부록 5 참조
AMAN2002 Online Help의 “well-known port” 참조
7제8장 UDP(User Datagram Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
연습문제
10 00 20 00 00 80 AB CD
헤더 필드 설명
값(10진수)
체크 섬
길이
목적지 포트번호
근원지 포트번호
설명필드 명
8제8장 UDP(User Datagram Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Guru를 이용한 UDP 데이터그램 분석
9제8장 UDP(User Datagram Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
UDP 데이터그램 캡처 프로그램 작성
※ 프로젝트 생성 및 라이브러리 경로 설정은『ch04. 이더넷(Ethernet)』의 “이더넷 캡처 프로그램 작성”과 동일
10제8장 UDP(User Datagram Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
대화상자 디자인
Edit Box Edit Box Button
List Control1
2 3 4
5
6
11제8장 UDP(User Datagram Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Control 속성
Read-onlyIDC_BUTTON_InfoButton6
Default ButtonIDCANCELButton5
m_EDIT_iCountOutputRead-onlyIDC_EDIT_MonitoredEdit Box3
IDC_BUTTON_StartButton4
m_EDIT_iCountInputIDC_EDIT_MonitoringEdit Box2
m_ListUdpPacketInfo
변수이름
List Control
종류
1
#
View: ReportIDC_LIST
속성ID
12제8장 UDP(User Datagram Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
이벤트 처리
OnBUTTONInfo()BN_CLICKEDIDC_BUTTON_InfoButton22
21
20
#
OnBUTTONStart()BN_CLICKEDIDC_BUTTON_StartButton
OnCancel()BN_CLICKEDIDCANCELButton
함수명메시지ID종류
※ 어댑터 오픈 대화상자 표시, 어댑터 열기, 패킷 캡처, 어댑터 닫기함수의 설명은 『ch04. 이더넷(Ethernet)』 과 동일하므로 생략함
13제8장 UDP(User Datagram Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
패킷 분석
UDP 헤더의 시작지점
8바이트14바이트arrTemp
arrTemp[0] arrTemp[14]
이더넷 헤더 IP 헤더
헤더길이 : IpHLen
arrTemp[14]의 하위 4비트
arrTemp[14 + IpHLen]
UDP 헤더
arrTemp[14+9]프로토콜 필드0x11(17) → UDP
14제8장 UDP(User Datagram Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
패킷 분석. . .
// 획득된 패킷은 arrTemp에 저장int iLengthOfPacket = pDlg->Ncap(arrTemp, MaxBufferLen);if(iLengthOfPacket <0 )
continue;
#define EtherHeaderLength 14// UDP 프로토콜은 IP 헤더의 프로토콜 필드값이 0x11(17)이므로// - IP의 프로토콜 필드 값이 0x11인 것만 골라냄if( arrTemp[EtherHeaderLength + 9] == 0x11){
// IP 헤더 길이 정보 획득unsigned char MASK = 0x0F;arrTemp[EtherHeaderLength] = arrTemp[EtherHeaderLength] & MASK;int iIpHeaderLength = arrTemp[EtherHeaderLength]<<2;. . .
• List Control 에 패킷 헤더 정보 표시
15제8장 UDP(User Datagram Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
패킷 분석// 근원지 포트CString strUdpSrcPort = _T("");unsigned int iSourcePort = pDlg->Twobytes_to_number(
arrTemp[EtherHeaderLength + iIpHeaderLength],arrTemp[EtherHeaderLength + iIpHeaderLength+1]);
strUdpSrcPort.Format("SRC : %d", iSourcePort); m_ListUdpPacketInfo.SetItem(i, 1, LVIF_TEXT, strUdpSrcPort, 0, 0, 0, 0);
// 목적지 포트CString strUdpDesPort = _T("");unsigned int iDestinationPort = pDlg->Twobytes_to_number(
arrTemp[EtherHeaderLength + iIpHeaderLength +2],arrTemp[EtherHeaderLength + iIpHeaderLength+3]);
strUdpDesPort.Format("DEST : %d", iDestinationPort); m_ListUdpPacketInfo.SetItem(i, 2, LVIF_TEXT, strUdpDesPort, 0, 0, 0, 0);. . .
• List Control 에 패킷 헤더 정보 표시
16제8장 UDP(User Datagram Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
패킷 분석//UDP 데이터그램의 전체 길이CString strUdpTotalLength = _T("");unsigned int iTotalLength = pDlg->Twobytes_to_number(
arrTemp[EtherHeaderLength + iIpHeaderLength +4],arrTemp[EtherHeaderLength + iIpHeaderLength+5]);
strUdpTotalLength.Format("TOTAL : %d", iTotalLength);m_ListUdpPacketInfo.SetItem(i, 3, LVIF_TEXT, strUdpTotalLength, 0, 0, 0, 0);
// 체크 섬CString strUdpCheckSum = _T("");unsigned int iCheckSum = pDlg->Twobytes_to_number(
arrTemp[EtherHeaderLength + iIpHeaderLength + 6],arrTemp[EtherHeaderLength + iIpHeaderLength+7]);
strUdpCheckSum.Format("CHK : %d", iCheckSum);m_ListUdpPacketInfo.SetItem(i, 4, LVIF_TEXT, strUdpCheckSum, 0, 0, 0, 0);
. . .
• List Control 에 패킷 헤더 정보 표시
17제8장 UDP(User Datagram Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
UdpViewer 실행 화면
18제8장 UDP(User Datagram Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
UdpViewer를 이용한 Udp 데이터그램 분석
0번 패킷 분석
근원지 포트번호 송신지에서 7671번 Registered Port를 사용함
목적지 포트번호 수신지에서 38329번 Registered Port를 사용함
길이 17493바이트임
체크 섬 송신지에서 계산한 체크 섬은 16904임
19제8장 UDP(User Datagram Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
참고 문헌
서승호 외, AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍, 정익사, 2002.
RFC 768, J. Postel, User Datagram Protocol, August 1980.
RFC 1240, C. Shue, W. Haggerty, OSI Connectionless Transport Service on top of UDP Version: 1, June 1991.
RFC 1791, T. Sung, TCP And UDP Over IPX Networks With Fixed Path MTU, April 1995.
Behrouz Forouzan, “Introduction to Data Communication and Networking”, Mcgrwohill, 1999
Fred Halsall, “Data Communications, Computer Networks and Open Systems”, Addison-wesley, 1995.
1
AMAN2002를 이용한
TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
HTTP(Hypertext Transfer Protocol)
2003. 6.
Chapter 10:
2제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
HTTP
기능WWW(World Wide Web) 상의 데이터 접근 시 사용되는 프로토콜 (TCP 80번 포트 사용)
하나의 페이지에서 다른 페이지로 이동하는 하이퍼텍스트 환경에서 효과적으로 이용됨
HTML, audio,
video, …웹 서버
웹 서버
웹 서버
웹 클라이언트(browser)
하이퍼
텍스트 링크
TCP 포트 80
HTML, audio,
video, …
HTML, audio,
video, …TCP 포트 80
TCP 포트 80
하이퍼
텍스트 링크
하이퍼
텍스트 링크
3제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
HTTP 메시지 구조
요청 메시지 : 정보, 자료 요청요청 라인, 헤더, 공백 라인, 본문으로 구성
응답 메시지 : 요청에 대한 응답상태라인, 헤더, 공백라인, 본문으로 구성
요청 라인
헤더(일반헤더 | 요청헤더 | 엔터티헤더)
공백 라인
엔터티 본문(요청 메시지)
상태 라인
헤더(일반헤더 | 응답헤더 | 엔터티헤더)
공백 라인
엔터티 본문(응답 메시지)
HTTP 요청 메시지 HTTP 응답 메시지
4제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
요청 라인(Request Line)
메소드 : 서비스 수행 기능 명시
URL : 웹페이지 위치 정보
HTTP 버전 : HTTP 프로토콜 버전 정보 (현재 v1.1)<major>.<minor>
메소드 (요청 타입) SP URL SP HTTP 버전 CR LF
프로토콜 :// 호스트 주소 : 포트 번호 / 경로
3000
8080
Port
:
:
/:ftp.yahoo.com@xxxshseoftp://
/index.htm/temp:www.yahoo.com@xxxshseohttp://
FileDirectoryDomainPWIDProtocol
5제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
상태 라인 (Status Line)
HTTP 버전 : 응답 메시지에서 사용하는 HTTP 버전
상태 코드 : 요청 수락 및 수행 시도의 결과를 나타내는 3자리의 십진수 코드
상태 설명 : 사용자를 위한 상태 코드의 설명
HTTP 버전 SP 상태 코드 SP 상태 설명 SP SP
6제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
상태 코드
상태코드의 첫번째 십진수 의미1XX : 정보
2XX : 성공, 3XX :재전송 요구
4XX : 클라이언트 에러, 5XX : 서버 에러
승인된 상태코드 의미
Service Unavailable503Forbidden403Moved Permanently301
Bad GateWay502Unauthorized401No Content204
Not Implemented501Bad Request400Accepted202
Internal Server Error500Not Modified304Created201
Not Found404Found302OK200
의미코드의미코드의미코드
7제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
헤더 (Header)
HTTP 송수신 메시지에서 모두 사용
클라이언트와 서버간의 추가적인 정보 교환
헤더 종류일반 헤더 (General Header)
요청 헤더 (Request Header)
응답 헤더 (Response Header)
엔터티 헤더(Entity Header)
헤더 명 : SP 헤더 값 CR LF
8제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
헤더 (Header)
일반 헤더
메시지에 대한 일반적인 정보 전달
Cache-Control, Connection, Date, Pragma, Transfer-Encoding, Upgrade, Via
요청 헤더
요청에 대한 추가 정보 및 클라이언트에 대한 정보 전달
요청 메시지에서만 이용
Accept, Accept-Charset, Accept-Encoding, Accept-Language, Authorization, From, Host, If-Modified-Since, If-Match, If-None-Match, If-Unmodified-Since, Max-Forwards, Proxy-Authorization, Range, Referer, Use-Agent
9제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
헤더 (Header)
응답 헤더
서버의 구성과 응답에 대한 추가적인 정보 전달
응답 메시지에서만 이용
Age, Location, Proxy-Authenticate, Public, Retry-After, Server, Warning, WWW-Authenticate, Accept-Ranges
엔터티 헤더
문서의 본문에 대한 정보 전달
Allow, Content-Base, Content-Encoding, Content-Language, Content-Length, Content-Location, Content-MD5, Content-Range, Content-Type, ETag, Expires, Last-Modified
10제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
메소드 (Method)
GETURL에 지정된 정보 획득
일반적인 웹 서핑 시 주로 이용
HEAD본문은 제외하고 헤더만을 전달 받음
기타 사항은 GET 메소드와 같음
POST클라이언트에서 서버로 정보를 전달
게시판, 카운터, 뉴스그룹, 메일링 리스트 등으로 메시지 전달 (CGI 프로그램에서 주로 사용)
11제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
DOS를 이용한 HTTP 동작 실험
C:\>telnet www.aide.co.kr 80<엔터>GET /<엔터>
C:\>telnet www.aide.co.kr 80<엔터>GET / HTTP/1.0<엔터><엔터>
C:\>telnet www.aide.co.kr 80<엔터>GET / HTTP/1.1<엔터>Host: www.aide.co.kr<엔터><엔터>
HTTP v0.9
HTTP v1.0
HTTP v1.1
아래 명령을 MS-DOS에서 입력
12제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
HTTP 요청 메시지 분석(GET)
HTTP 요청 메시지(www.yahoo.co.kr)
13제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
HTTP 요청 메시지 분석(GET)
요청 라인Get 메소드 이용
HTTP 버전 1.1 사용
헤더 라인요청 헤더 : Accept, Accept-Language, Accept-Encoding, User-Agent, Host,
일반 헤더 : Connection
48 54 54 50 2F 31 2E 31
HTTP/1.1
HTTP 버전
0D 0A202F2047 45 54CR LFSP/ (현재 디렉토리)SPGET
라인의 끝스페이스URL스페이스메소드
14제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
HTTP 응답 메시지 분석
HTTP 응답 메시지(www.yahoo.co.kr)
15제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
HTTP 응답 메시지 분석
상태 라인HTTP 버전 1.1 이용
302 Found : 요청한 자원이 일시적으로 다른 URL로옮김
헤더 라인일반 헤더 : Date, Connection, Transfer-Encoding, Content-Type
응답 헤더 : Location
상태 라인 48 54 54 50 2F 31 2E 31 46 6F 75 6E 6420 0D 0A33 30 32 20
F o u n dH t t p / 1 . 1 SP SP CR LF3 0 2
16제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
연습 문제
HTTP 메시지의 종류송신/ 수신 구별
GET, HEAD, POST
헤더의 종류일반 헤더, 요청 헤더, 응답 헤더, 엔터티 헤더
본문 내용본문 유무 및 내용
47 45 54 20 2F 69 6E 64 65 78 2E 68 74 6D 6C 20 48 54 54 50 2F 31 2E 31 OD OA 41 63 63 65 70 74 3A 20 2A 2F 2A OD OA 48 6F 73 74 3A 20 77 77 77 2E 6A 6F 69 6E 73 2E 63 6F 6D OD OA OD OA
(요청 라인? 상태 라인?)
헤더(일반헤더? 요청/응답헤더? 엔터티헤더?)
본문 (유? 무?)
공백 라인?
17제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
아래 패킷을 분석하시오08 00 46 18 BD C8 00 08 E2 44 76 3C 08 00 45 00 01 32 81 F8 40 00 31 06 EC A1 D3 20 77 97 D2 62 BD 11 00 50 0B 5E 1A 36 BE 0B 4D EA FF 00 50 18 44 70 31 FE 00 00 48 54 54 50 2F 31 2E 31 20 33 30 32 20 46 6F 75 6E 64 0D 0A 44 61 74 65 3A 20 4D 6F 6E 2C 20 30 39 20 4A 75 6E 20 32 30 30 33 20 30 35 3A 35 32 3A 33 32 20 47 4D 54 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 20 68 74 74 70 3A 2F 2F 6B 72 2E 79 61 68 6F 6F 2E 63 6F 6D 2F 0D 0A 43 6F 6E 6E 65 63 74 69 6F 6E 3A 20 63 6C 6F 73 65 0D 0A 54 72 61 6E 73 66 65 72 2D 45 6E 63 6F 64 69 6E 67 3A 20 63 68 75 6E 6B 65 64 0D 0A 43 6F 6E 74 65 6E 74 2D 54 79 70 65 3A 20 74 65 78 74 2F 68 74 6D 6C 3B 20 63 68 61 72 73 65 74 3D 69 73 6F 2D 38 38 35 39 2D 31 0D 0A 0D 0A …
사용된 프로토콜 개수:
근원지 MAC 주소:
근원지 IP 주소:
근원지 Port 번호:
사용된 프로토콜 이름:
목적지 MAC 주소:
목적지 IP 주소:
목적지 Port 번호:
18제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Guru를 이용한 HTTP 패킷 분석
19제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
HTTP 패킷 캡처 프로그램 작성
20제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
새 프로젝트 생성 및 환경설정
다이얼로그 기반의 프로젝트 생성
Include 경로 및 라이브러리 경로 설정
Include files : C:\AMAN2002\includeLibrary files : C:\AMAN2002\libTools->Options 메뉴 이용
Ncap 라이브러리(Ncapd.lib)를 프로젝트에 포함
Project->Settings 메뉴 이용
21제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
대화상자 디자인
HttpViewer 메인 대화상자 디자인
List Control1
Edit Box2 Edit Box3
4 5 6
7
8
Edit Box Edit Box Button
22제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Control 속성
int m_EDIT_iCountOutput
int m_EDIT_iCountInput
CString m_EDIT_strHexaResult
CString m_EDIT_strAsciiResult
CListCtrl m_LIST_PacketInfo
변수
Default ButtonIDCANCELButton8
IDC_BUTTON_AboutButton7
IDC_BUTTON_StartCaptureButton6
Read-OnlyIDC_EDIT_MonitoredEditBox5
IDC_EDIT_MonitoringEditBox4
Read-OnlyIDC_EDIT_HexaResultEdit Box3
Read-OnlyIDC_EDIT_AsciiResultEdit Box2
View: ReportIDC_LISTList Control
1
속성ID종류#
23제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
이벤트 처리
OnCancel()
OnBUTTONAbout()
OnBUTTONStartCapture()
OnClickList()
함수명
BN_CLICKEDIDCANCELButton8
BN_CLICKEDIDC_BUTTON_AboutButton7
BN_CLICKEDIDC_BUTTON_StartCaptureButton6
NM_CLICKIDC_LISTList Control1
메시지ID종류#
24제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
어댑터 선택 및 어댑터 열기
void CEtherViewerDlg::OnBUTTONSelectAdaptor() {
//Ncap lib.(Dialog based class lib.) 객체 생성.CSelectAdaptorDlg *pDlg = new CSelectAdaptorDlg;if(pDlg->DoModal() != IDOK){
delete pDlg;return;
}
//선택된 네트워크 어뎁터를 사용할 수 있도록 초기화. TCP 기반의 패킷만 획득if(pDlg->OpenAdaptor(2))
{…
}
…}
25제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
패킷 캡처
#define MaxBufferLen 2048 // 획득한 패킷을 저장하기 위한 버퍼#define EtherHeaderLength 14 // 이더넷 헤더 길이를 14로 할당UpdateData(TRUE);…int i = 0;unsigned char arrTemp[MaxBufferLen];While(i < m_EDIT_iCountInput){
memset(arrTemp, 0, MaxBufferLen);
//패킷을 하나 획득함. 음수가 return되면 에러가 발생한 것.if(pDlg->Ncap(arrTemp, MaxBufferLen) < 0)
continue;
//패킷 분석…
}
26제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
패킷 분석
// 시작 지점 주소를 t_EtherHeader 구조체 주소로 대입
t_EtherHeader *tEtherHeader = (t_EtherHeader *)arrTemp;
// 이더넷 데이터의 시작 지점을 t_IPHeader 구조체로 전달
t_IPHeader *tIPHeader = (t_IPHeader *) tEtherHeader->eth_data;
// IP 헤더 길이 정보 획득
int iIpHeaderLength = tIPHeader->ip_hl << 2;int iIpOptionHeader = (iIpHeaderLength - 20);t_TCPHeader *tTcpHeader = (t_TCPHeader *) tIPHeader->ip_data + iIpOptionHeader;
// 근원지 포트 번호
unsigned short iSourcePort = htons(tTcpHeader->tcp_sport);
// 목적지 포트 번호
unsigned short iDestinationPort = htons(tTcpHeader->tcp_dport);
// HTTP 패킷 구별 (슬라이드 25)
27제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
HTTP 패킷 구별// TCP 헤더의 포트 필드 값이 80인 것만 골라냄.if(iSourcePort == 80 || iDestinationPort == 80){
// 일련번호
CString strNum = _T("");strNum.Format(_T("%d"), i);m_LIST_PacketInfo.InsertItem(LVIF_TEXT, i, strNum, 0, 0, 0, 0 );// 근원지 포트
CString strHttpSrcPort = _T("");strHttpSrcPort.Format("%d", iSourcePort); m_LIST_PacketInfo.SetItem(i, 1, LVIF_TEXT, strHttpSrcPort, 0, 0, 0, 0);// 목적지 포트
CString strHttpDesPort = _T("");strHttpDesPort.Format("%d", iDestinationPort); m_LIST_PacketInfo.SetItem(i, 2, LVIF_TEXT, strHttpDesPort, 0, 0, 0, 0);// TCP 헤더 길이 정보 획득
int iTcpHeaderLength = (htons(tTcpHeader->tcp_off) & 0xF000) >> 10;
// HTTP 메시지 출력 (슬라이드 26번)…
}
28제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
HTTP 메시지 출력
// TCP 헤더 길이 정보 획득
int iTcpHeaderLength = (htons(tTcpHeader->tcp_off) & 0xF000) >> 10;
// 메시지
CString strHttpMessage = _T("");CString strTemp = _T("");
// HTTP 메시지의 시작 지점
int iHttpDataStart = EtherHeaderLength + iIpHeaderLength + iTcpHeaderLength;// HTTP 메시지를 ASCII와 HEXA 형태로 변환 후 출력.for(int j=iHttpDataStart; j< iLengthOfPacket; j++){
strTemp.Format(_T("%c"), arrTemp[j]);m_strDataBuffer[i] +=strTemp;strTemp.Format(_T("%02X "), arrTemp[j]);strHttpMessage += strTemp;
}m_LIST_PacketInfo.SetItem(i, 3, LVIF_TEXT, strHttpMessage, 0, 0, 0, 0);
29제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
HTTP 실행 모습
30제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
HttpViewer를 이용한 HTTP 패킷 분석
31제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
HttpViewer를 이용한 HTTP 패킷 분석
근원지 포트 : 1041
목적지 포트 : 80
메시지 종류 : 요청 메시지Get 메소드 사용
HTTP 버전 1.1 사용
헤더 : Accept, Accept-Language, Accept-Encoding, User-Agent, Host, Connection, Cookie
Accept : */* (모든 종류의 파일 수락)
Accept-Language : ko (한국어)
Host : www.joins.com 목적지로 접근
각 라인의 끝은 ‘OD OA’ 문자로 종료
32제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
참고 문헌
서승호 외, AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크프로그래밍, 정익사, 2002.
RFC 1945, T.Berners-Lee(MIT/LSC), R. Fielding(UC Irvine), H. Frystyk(MIT/LCS), Hypertext Transfer Protocol -- HTTP/1.0, May 1996.
RFC 2068, R. Fielding(UC Irvine), J. Gettys, J. Mogul(DEC), H. Frystyk, T. Berners-Lee(MIT/LCS), Hypertext Transfer Protocol --HTTP/1.1, January 1997.
RFC 2616, R. Fielding(UC Irvine), J. Gettys, J. Mogul(DEC), H. Frystyk, T. Berners-Lee(W3C/MIT), Hypertext Transfer Protocol --HTTP/1.1, January 1999.
RFC 2660, E. Rescorla(RTFM, Inc.), A. Schiffman(Terisa Systems, Inc.), The Secure HyperText Transfer Protocol, August 1999.
1
AMAN2002를 이용한
TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
FTP(File Transfer Protocol)
2003. 3.
Chapter 11:
2제11장 FTP(File Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
FTP
기능네트워크 상에서 파일을 다른 시스템으로 전달하는 프로토콜
제어 연결(포트 21번)과 데이터 연결(포트 20번)로 구성
파일 이름의 구조, 텍스트 표현 방식, 디렉토리 구조 고려
사용자인터페이스
사용자 프로토콜
인터프리터
사용자 데이터전송 기능
클라이언트
서버 프로토콜인터프리터
서버 데이터전송 기능
서버
사용자
파일시스템
파일시스템
제어 연결
데이터 연결
(FTP 명령/응답)
3제11장 FTP(File Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
제어 연결과 데이터 연결
제어 연결전송시의 제어 명령을 전달
포트 21번 이용
데이터 연결관련 제어 정보 : 데이터 전송 포트, 전송모드, 데이터 표현 타입 등
파일 관련 명령 : 파일 저장, 첨부, 삭제 등
데이터 연결포트 20번 이용
데이터(파일) 전송을 위한 연결
4제11장 FTP(File Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
제어 연결 설정
클라이언트 서버
제어프로세스
데이터 전송
프로세스
제어
프로세스
데이터 전송프로세스
21
제어프로세스
데이터 전송
프로세스
제어프로세스
데이터 전송
프로세스
216000
a. 서버의 수동 오픈
b. 클라이언트의 능동 오픈
자식 제어프로세스
생성
7000
제어프로세스
데이터 전송
프로세스
제어프로세스
데이터 전송
프로세스
216000
c. 서버의 원 제어 프로세스와 자식 제어 프로세스 상태
자식 제어프로세스
7000
5제11장 FTP(File Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
데이터 연결 설정
클라이언트 서버
제어프로세스
데이터 전송프로세스
제어프로세스
데이터 전송프로세스
216000
수동 오픈
a. 클라이언트의 수동 오픈
6100
제어프로세스
데이터 전송프로세스
제어프로세스
데이터 전송프로세스
21
c. 서버의 데이터 전송 프로세스가 자식 데이터전송 프로세스 생성
6000
6100 20
제어프로세스
데이터 전송프로세스
제어프로세스
데이터 전송프로세스
21
b. 클라이언트의 수동 오픈 포트 번호를 서버로 전달
6000
6100
PORT 6100
수동 오픈
자식 데이터전송 프로세스7100
제어프로세스
데이터 전송프로세스
제어프로세스
데이터 전송프로세스
21
d. 자식 데이터 전송 프로세스와의 통신
6000
6100 20
자식 데이터전송 프로세스7100
6제11장 FTP(File Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
데이터 연결 설정을 통한 통신
데이터 타입다양한 데이터 타입 설정
ASCII, EBCDIC, IMAGE, LOCAL 타입
TYPE 명령을 통해 변경
데이터 구조파일 구조, 레코드 구조, 페이지 구조
STRU 명령을 통해 변경
전송 모드전송 방식, MODE 명령을 통해 변경
스트림 모드, 블록 모드, 압축 모드
7제11장 FTP(File Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
FTP 명령
접근 제어 명령
접근 권한 및 인증 절차를 위해 사용되는 명령
USER, PASS, ACCT, CWD, CDUP, SMNT, REIN, QUIT
전송 변수 명령
기본적으로 할당된 변수의 값을 변경할 때
PORT, PASV, TYPE, STRU, MODE
서비스 명령
파일 전송 관련 제어 정보를 전달
RETR, STOR, STOU, APPE, ALLO, REST, RNFR, RNTO, ABOR, DELE, RMD, MKD, PWD, LIST, NLIST, SITE, SYST, STAT, HELP
8제11장 FTP(File Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
FTP 응답 코드
FTP 응답 메시지의 첫번째 십진수 의미
FTP 응답 메시지의 두번째 십진수 의미
명령이 수락되지 않음 (영구적인 부정의 완료 응답)5yz
명령이 수락되지 않음 (일시적인 부정의 완료 응답)4yz
명령은 수락되었지만 정보가 더 필요함 (긍정의 진행 중 응답)3yz
요청한 명령이 성공적으로 완료됨 (긍정의 완성 응답)2yz
요청한 명령이 초기화 됨 (긍정의 준비 응답)1yz
의미십진수
파일 시스템 – 파일 시스템 서버의 상태x5z
지정되지 않음x4z
인증과 계정 – 로그인과 계정 확인 절차에 대한 응답x3z
연결 – 제어 연결과 데이터 연결 참조에 대한 응답x2z
정보 – 상태나 도움말 등 정보 요청에 대한 응답x1z
문법 에러x0z
의미십진수
9제11장 FTP(File Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
FTP 패킷 분석
FTP 제어 연결을 통한 전송
10제11장 FTP(File Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
FTP 패킷 분석
44 45 4C 45 20 74 65 73 74 2E 74 78 74 0D 0A
Test.txt 파일 제거
DELE 명령
서비스 명령
디렉토리 명이나 파일명을 매개변수로 전달
74 65 73 74 2E 74 78 74Test.txt
매개변수
0D 0A라인의 끝
20공백
44 45 4C 45DELE
명령
11제11장 FTP(File Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
FTP 패킷 분석
FTP 데이터 연결을 통한 전송
데이터 연결을 통한파일 확인 (test.txt)
12제11장 FTP(File Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
FTP 패킷 분석
FTP 포트 20번을 이용한 데이터 전송
전달된 파일 크기 : 44 바이트
파일 내용
파일 데이터(test.txt)
54 68 69 73 20 69 73 20 74 65 73 74 20 66 6F 72 20 46 54 50
T h i s i s t e s t f o r F T P
28 46 69 6C 65 20 54 72 61 6E 73 66 65 72 20 50 72 6F 74 6F 63 6F 6C 29
( F i l e T r a n s f e r P r o t o c o l )
13제11장 FTP(File Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
연습 문제
헥사 값의 의미
FTP 응답 코드의 의미 분석
54 59 50 45 20 41 0D 0A
32 30 30 20 54 79 70 65 20 73 65 74 20 74 6F 20 41 2E 0D 0A
(a) (b)
14제11장 FTP(File Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Guru를 이용한 FTP 패킷 분석
15제11장 FTP(File Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
FTP 패킷 캡처 프로그램 작성(FtpViewer)
16제11장 FTP(File Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
프로젝트 생성 및 환경 설정
다이얼로그 기반의 프로젝트 생성
Include 경로 및 라이브러리 경로 설정
Include files : C:\AMAN2002\includeLibrary files : C:\AMAN2002\libTools->Options 메뉴 이용
Ncap 라이브러리(Ncapd.lib)를 프로젝트에 포함
Project->Settings 메뉴 이용
17제11장 FTP(File Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
대화상자 디자인
FtpViewer 메인 대화상자 디자인
List Control1
Edit Box2 Edit Box3
4 5 6
7
8
Edit Box Edit Box Button
18제11장 FTP(File Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Control 속성
int m_EDIT_iCountOutput
int m_EDIT_iCountInput
CString m_EDIT_strHexaResult
CString m_EDIT_strAsciiResult
CListCtrl m_LIST_PacketInfo
변수
Default ButtonIDCANCELButton8
IDC_BUTTON_InfoButton7
IDC_BUTTON_StartCaptureButton6
Read-OnlyIDC_EDIT_MonitoredEditBox5
IDC_EDIT_MonitoringEditBox4
Read-OnlyIDC_EDIT_HexaResultEdit Box3
Read-OnlyIDC_EDIT_AsciiResultEdit Box2
View: ReportIDC_LISTList Control
1
속성ID종류#
19제11장 FTP(File Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
이벤트 처리
OnCancel()
OnBUTTONInfo()
OnBUTTONStartCapture()
OnClickList()
함수명
BN_CLICKEDIDCANCELButton8
BN_CLICKEDIDC_BUTTON_InfoButton7
BN_CLICKEDIDC_BUTTON_StartCaptureButton6
NM_CLICKIDC_LISTList Control1
메시지ID종류#
20제11장 FTP(File Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
어댑터 열기
// 선택된 네트워크 어뎁터를 사용할 수 있도록 초기화.// FTP는 TCP를 기반으로 데이터를 획득하므로 TCP 필터 설정
if(pDlg->OpenAdaptor(2)){
::AfxMessageBox("Adaptor open 실패");
pDlg->CloseAdaptor();delete pDlg;
return;}
21제11장 FTP(File Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
패킷 캡처
//패킷을 획득하여 List Control에 표시.#define MaxBufferLen 2048#define EtherHeaderLength 14…int i = 0;unsigned char arrTemp[MaxBufferLen];while(i < m_EDIT_iCountInput){
memset(arrTemp, 0, MaxBufferLen);
//패킷을 하나 획득함. 음수가 return되면 에러가 발생한 것.int iLengthOfPacket = pDlg->Ncap(arrTemp, MaxBufferLen);if(iLengthOfPacket <0 ) continue;
// 패킷 분석 (슬라이드 22)…
}
22제11장 FTP(File Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
패킷 분석//MASKunsigned char MASK1 = 0x0F; //IP 헤더의 헤더길이 정보를 얻기 위해 사용
unsigned char MASK2 = 0xF0; //TCP 헤더의 헤더길이 정보를 얻기 위해 사용
// IP 헤더 길이 정보 획득
arrTemp[EtherHeaderLength] = arrTemp[EtherHeaderLength] & MASK1;int iIpHeaderLength = arrTemp[EtherHeaderLength]<<2;
// TCP 헤더의 근원지 포트 번호
unsigned int iSourcePort = pDlg->Twobytes_to_number(arrTemp[EtherHeaderLength + iIpHeaderLength],arrTemp[EtherHeaderLength + iIpHeaderLength+1]);
// TCP 헤더의 목적지 포트 정보 획득
unsigned int iDestinationPort = pDlg-> Twobytes_to_number(arrTemp[EtherHeaderLength + iIpHeaderLength +2],arrTemp[EtherHeaderLength + iIpHeaderLength+1+2]);
// FTP 패킷 구별 (슬라이드 23)…
23제11장 FTP(File Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
FTP 패킷 구별if(iSourcePort == 20 || iDestinationPort == 20 || iSourcePort == 21 || iDestinationPort == 21){
…// 근원지 포트 및 목적지 포트를 리스트에 출력
// TCP 헤더 길이 정보 획득
arrTemp[EtherHeaderLength + iIpHeaderLength + 12] =arrTemp[EtherHeaderLength + iIpHeaderLength + 12] & MASK2;
arrTemp[EtherHeaderLength + iIpHeaderLength + 12] =arrTemp[EtherHeaderLength + iIpHeaderLength + 12]>>4;
int iTcpHeaderLength = arrTemp[EtherHeaderLength + iIpHeaderLength + 12] << 2;
// FTP 메시지 전체 출력 (슬라이드 24)…
}
24제11장 FTP(File Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
FTP 메시지 전체 출력
// 메시지
CString strFtpMessage = _T("");CString strTemp = _T("");
// FTP 데이터의 시작 지점
int iFtpDataStart = EtherHeaderLength + iIpHeaderLength + iTcpHeaderLength;
for(int j=iFtpDataStart; j< iLengthOfPacket; j++){
strTemp.Format(_T("%c"), arrTemp[j]); // 아스키 형태로 출력
m_strDataBuffer[i] += strTemp;strTemp.Format(_T("%02X "), arrTemp[j]); // 헥사 형태로 출력
strFtpMessage += strTemp;}m_LIST_PacketInfo.SetItem(i, 3, LVIF_TEXT, strFtpMessage, 0, 0, 0, 0);
25제11장 FTP(File Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
FtpViewer 실행 모습
26제11장 FTP(File Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
FtpViewer를 이용한 FTP 패킷 분석
포트 21번 제어 연결을 통해 제어 명령 전달 (요청)
TYPE I 명령 : 데이터 타입을 Image 형으로 변경
49
I
매개변수
20
공백
0D 0A54 59 50 45
라인의 끝TYPE
명령
27제11장 FTP(File Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
FtpViewer를 이용한 FTP 패킷 분석
포트 21번 제어 연결을 통한 FTP 응답
응답 코드 200번 : 명령을 완료함
54 79 70 65 20 73 65 74 20 74 6F 20 49 2E
Type set to I
응답코드 설명
20
공백
0D 0A32 30 30
라인의 끝200
응답 코드
28제11장 FTP(File Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
참고 문헌
서승호 외, AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍, 정익사, 2002.RFC 959, J. Postel, J.K. Reynolds. File Transfer Protocol, Oct 1985.RFC 854, J. Postel, J. Reynolds, Telnet Protocol Specification, May 1983.RFC 1635, P. Deutsch, A. Emtage(Bunyip), A. Marine(NASA NAIC), How to Use Anonymous FTP, May 1994.RFC 697, Jim Lieb, SUMEX-AIM, CWD Command of FTP, July 1975.RFC 412, G. Hicks, User FTP Documentation, Nov 1972.RFC 463, A.K. Bhushan. FTP commants and response, Feb 1973.11.7 W. Richard Stevens, “TCP/IP Illustrated, Volume I”, Addison wesley, 1996.Behrouz A. Forouzan, “TCP/IP Protocol Suite”, McGraw-Hill, 2000.김영탁, 김종근, 조유제, 한기준 공저, “데이타 통신 및 컴퓨터망”, 정익사, 1999.
1
AMAN2002를 이용한
TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
트래픽 발생기
2003. 3.
Chapter 12:
2제12장 트래픽 발생기 (Traffic Generator)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
트래픽 발생기 관련 개념 이해
MTU(Maximum Transmission Unit)
프레임에 캡슐화 될 수 있는 데이터의 최대 길이
데이터링크 계층의 MTU가 데이터그램보다 작을 경우 단편화 하여전달
물리 네트워크 별 MTU
2계층 프로토콜헤더
MTU 2계층 프로토콜트레일러
페이로드
프레임
IP 헤더IP 데이터그램
576X.25
296Point-to-Point4352FDDI
4464Token ring (4Mbps)1492IEEE 802.3/802.2
17914Token ring (16Mbps)1500Ethernet
MTU(Byte)프로토콜MTU(Byte)프로토콜
3제12장 트래픽 발생기 (Traffic Generator)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Ping 테스트를 통한 MTU 확인
예제를 통해 211.180.125.1 의 MTU는 1400 ~1500 바이트 사이임을 확인
-f 옵션 : 단편화 하지않고 패킷을 전달
-l 옵션 : 전송할 데이터의 버퍼 사이즈 지정
단편화 하지 않고, 1400 바이트의 데이터 전송 가능
1500바이트 전송 시단편화 필요
4제12장 트래픽 발생기 (Traffic Generator)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
단편화 (Fragmentation)
IP 헤더의 단편화 관련 필드식별자(Identification) : 16비트
단편화 된 데이터그램은 동일한 식별자를 가짐
플래그(Flag) : 3비트
첫번째 비트 : 사용 안 함
두번째 비트 : 1(단편화 할 수 없음), 0(단편화 가능)
세번째 비트 : 1(단편이 있음), 0(마지막 혹은 단일 단편)
단편 옵셋(Fragmentation offset) : 13비트
단편 조합 시 조각의 위치를 나타냄
데이터그램 8바이트 단위로 측정
5제12장 트래픽 발생기 (Traffic Generator)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
단편화 예제
데이터그램의 단편화 예제IP 페이로드에 2000바이트의 데이터 실림
MTU가 1500바이트인 네트워크
IP헤더
UDP헤더
UDP 데이터 (1992바이트)
IP 데이터그램
1472바이트IP
헤더UDP헤더
520바이트
IP헤더
패킷 패킷
20바이트 8바이트
IP 데이터 (2000바이트)
IP 데이터 (1480바이트)
IP 데이터 (520바이트)
6제12장 트래픽 발생기 (Traffic Generator)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
서버/클라이언트 구조의 이해
클라이언트 : 명시한 기능을 요청
데이터 전송 혹은 다양한 기능 수행을 요청
서버 : 클라이언트에 의해 명시된 기능을 수행하고 응답
데이터 전송 혹은 다양한 기능에 대한 응답
웹서버
웹서버
웹클라이언트 - 요청(인터넷 브라우저)
2. 요청
3. 응답
1. 요청
4. 응답
S : 서버(Server)C : 클라이언트(Client)
C
S
S
C
7제12장 트래픽 발생기 (Traffic Generator)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
트래픽 지연
송/수신 지연 및 일주 지연송신 지연 : 서버에서 전송한 데이터를 클라이언트에서 수신할 때까지 경과 시간
수신 지연 : 클라이언트에서 데이터를 보내고 서버에서 받을 때까지 걸리는 시간
일주 지연 (RTT, Round Trip Time) : 송신지연 + 수신지연
지연 원인전송 시간, 스위칭 시간, 라우터의 경로 설정 시간 등
송신 지연
수신 지연
T1
T2
T3
T4
서버의 데이터 송신 지점
서버의 데이터 수신 지점
클라이언트의 데이터 송신 지점
클라이언트의 데이터 수신 지점
D source = T2 – T1D destination = T4 – T3RTT = D source + D destination
Real Time 클라이언트 서버
8제12장 트래픽 발생기 (Traffic Generator)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
지터
지연의 변화량네트워크 상에서 데이터 송/수신 시 지연의 가변적인변화량을 나타냄
지터가 지정된 범위를 초과한 경우 제거Real Time
서버
클라이언트
4 3 2 1
4 3 2 1
Delay Jitter Delay Jitter Delay Jitter = discard Delay Jitter
9제12장 트래픽 발생기 (Traffic Generator)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
트래픽 발생기
트래픽 생성 및 원하는 양의 데이터 전송
트래픽 발생기의 필요성QoS(Quality of Service) 측정
복잡하고 다양한 네트워크를 연구 시 실험용
트래픽 발생기의 용도통신망 관리 시스템 제작 시
현재 망의 분석 시
망의 대역폭 확인 시
다양한 속도의 데이터 전송 시
10제12장 트래픽 발생기 (Traffic Generator)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
트래픽 전송 패킷 및 전송량
전송 패킷 포멧
UDP 기반으로 512 바이트의 데이터 전송 예
단위 시간당 전송량
초당 입력된 비트 단위의 데이터량 계산
프리엠블& SFD
프리엠블& SFD
이더넷헤더
이더넷헤더
IP헤더
IP헤더
UDP헤더
UDP헤더 데이터데이터 이더넷
트레일러
이더넷트레일러
14바이트 20바이트 8바이트 512바이트 4바이트9바이트
…
Tn (sec) + m1(msec) Tn+1 (sec) + m1(msec)Tn (sec) + m2(msec)
(double) ReceiveAmount = nReadSum * 8 / 1024;
- ReceiveAmount = 수신 데이터량(Kbps)- nReadSum = 초당 수신 Byte 수의 합
11제12장 트래픽 발생기 (Traffic Generator)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
연습 문제
사용하는 시스템이 속한 네트워크의 MTU 확인
5300 바이트의 IP 데이터그램을 MTU가 1500 바이트인 네트워크로 전달 시 단편화
단편화 조각의 개수
단편의 IP 데이터그램 식별자, 플래그 단편 옵셋 정보
식별자는 00001010에서 1씩 증가 가정
IP헤더
IP 데이터그램(5300바이트)
20바이트
…
IP 헤더 (20바이트)
식별자(16비트) 플래그(3비트) 단편화 오프셋(13비트)
IP 헤더 (20바이트)
12제12장 트래픽 발생기 (Traffic Generator)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
트래픽 발생기 프로그램 작성
13제12장 트래픽 발생기 (Traffic Generator)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
트래픽 발생기 작성
다이얼로그 기반의 프로젝트 생성
헤더파일 경로 : C:\AMAN2002\include라이브러리 파일 경로 : C:\AMAN2002\libNmtgen 라이브러리 모듈 추가 : nmtgend.lib
14제12장 트래픽 발생기 (Traffic Generator)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
대화상자 디자인
TGen 메인 대화상자 디자인IPADDRESS
1
3
2
4
5
6
78
9
10
Button
Edit Box
Check Box
List Control
15제12장 트래픽 발생기 (Traffic Generator)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Control 속성
CListCtrl m_LIST_SendResult
Int m_EDIT_iSpeed
Short m_EDIT_shPortNumber
CIPAddress m_IPAddress
변수
IDC_BUTTON_AboutButton10
IDC_BUTTON_HelpButton9
Default ButtonIDOKButton8
IDC_BUTTON_SendStopButton7
IDC_BUTTON_SendStartButton6
View: ReportIDC_LISTList Control5
IDC_CHECK_BestEffortCheck Box4
IDC_EDIT_SpeedEdit Box3
IDC_EDIT_PortEdit Box2
IDC_IPADDRESSIPADDRESS1
속성ID종류#
16제12장 트래픽 발생기 (Traffic Generator)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
이벤트 처리
OnBUTTONAbout()BN_CLICKIDC_BUTTON_AboutButton10
OnBUTTONHelp()
OnOK()
OnBUTTONSendStop()
OnBUTTONSendStart()
함수명
BN_CLICKIDC_BUTTON_HelpButton9
BN_CLICKIDOKButton8
BN_CLICKIDC_BUTTON_SendStopButton7
BN_CLICKIDC_BUTTON_SendStartButton6
메시지ID종류#
17제12장 트래픽 발생기 (Traffic Generator)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
CNmtGen 객체 생성
CNmtGen 객체 생성
BOOL CTGenDlg::OnInitDialog(){
…m_pNmtGen = new CNmtGen(this->m_hWnd);
}
데이터 전송 이벤트와 매핑 함수 연결
BEGIN_MESSAGE_MAP(CTGenDlg, CDialog)//{{AFX_MSG_MAP(CTGenDlg)…//}}AFX_MSG_MAP
// 데이터 전송 시 1초마다 메시지를 호출
ON_MESSAGE(UM_MESSAGE_SEND, OnSend)END_MESSAGE_MAP()
18제12장 트래픽 발생기 (Traffic Generator)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
데이터 전송 시작
void CTGenDlg::OnBUTTONSendStart() {
UpdateData(TRUE);GetDlgItemText(IDC_IPADDRESS, m_strIpAddr);
if(m_strIpAddr == "0.0.0.0")return;
m_pNmtGen-> SetIpAddress(m_strIpAddr);m_pNmtGen-> SetPortNumber(m_EDIT_shPortNumber);
if (m_iCheckBestEffort == 1)m_pNmtGen-> SetRequestTransferSpeed(0);
elsem_pNmtGen-> SetRequestTransferSpeed(m_EDIT_iSpeed);
m_pNmtGen-> SendStart();}
19제12장 트래픽 발생기 (Traffic Generator)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
전송한 시간 및 데이터량 정보
LRESULT CTGenDlg::OnSend(WPARAM wParam, LPARAM lParam){
// lParam에 입력된 주소 값을 t_SendData * 형으로 전달받음
t_SendData *pData = (t_SendData *)lParam;
…lvitem.pszText = (LPTSTR)(LPCSTR)(pData->strTime);m_LIST_SendResult.InsertItem(&lvitem);
CString data = _T("");data.Format("%lf", pData->dCount);…lvitem.pszText = (LPTSTR)(LPCSTR)data;lstrcpy(lvitem.pszText, data);m_LIST_SendResult.SetItem(&lvitem);
return 0L;}
20제12장 트래픽 발생기 (Traffic Generator)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
전송 종료 및 프로그램 종료
데이터 전송 종료void CTGenDlg::OnBUTTONSendStop(){
m_pNmtGen->SendStop();}
프로그램 종료void CTGenDlg::OnOK() {
delete m_pNmtGen;CDialog::OnOK();
}
21제12장 트래픽 발생기 (Traffic Generator)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
트래픽 수신기 프로그램 작성
다이얼로그 기반의 프로젝트 생성
헤더파일 경로 : C:\AMAN2002\include라이브러리 파일 경로 : C:\AMAN2002\libNmtrcv 라이브러리 모듈 추가 : nmtrcvd.lib
22제12장 트래픽 발생기 (Traffic Generator)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
대화상자 디자인
TRcv 메인 대화상자 디자인
1 List Control
2
3
4
5
Edit Box
Button
23제12장 트래픽 발생기 (Traffic Generator)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Control 속성
IDC_BUTTON_AboutBUTTON5
CEdit m_EDIT_PortNumber
CListCtrl m_LIST_ReceiveResult
변수
IDC_BUTTON_HelpBUTTON4
IDOKBUTTON3
IDC_EDIT_PortNumberEdit Box2
View: ReportIDC_LISTList Control1
속성ID종류#
24제12장 트래픽 발생기 (Traffic Generator)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
이벤트 처리
OnOK()BN_CLICKIDOKButton3
OnBUTTONHelp()BN_CLICKIDC_BUTTON_HelpButton4
OnBUTTONAbout()BN_CLICKIDC_BUTTON_AboutButton5
OnChangeEDITPortNumber()EN_CHANGEIDC_EDIT_PortNumberEdit Box2
함수명메시지ID종류#
25제12장 트래픽 발생기 (Traffic Generator)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
CNmtRcv 객체 생성 및 이벤트
CNmtRcv 객체 생성BOOL CTRcvDlg::OnInitDialog(){
…// CNmtRcv 객체 초기화
//GetWndHandle() 함수를 통해 매개 변수로 CWnd의 m_hWnd 변수 전달
m_CNmtRcv.GetWndHandle(this->m_hWnd);…
}
데이터 수신 이벤트와 함수 매핑BEGIN_MESSAGE_MAP(CTRcvDlg, CDialog)
//{{AFX_MSG_MAP(CTRcvDlg)…//}}AFX_MSG_MAP// 사용자 정의 매크로 선언
ON_MESSAGE(UM_MESSAGE_RECEIVE, OnReceive)END_MESSAGE_MAP()
26제12장 트래픽 발생기 (Traffic Generator)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
포트 번호 변경
void CTRcvDlg::OnChangeEDITPortNumber() {
CString data = _T("");
m_EDIT_PortNumber.GetWindowText(data);unsigned short port = (unsigned short) atoi(data);m_CNmtRcv.SetPortNumber(port);
}
27제12장 트래픽 발생기 (Traffic Generator)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
데이터 수신 이벤트 처리LRESULT CTRcvDlg::OnReceive(WPARAM wParam, LPARAM lParam){
CString data = _T("");t_RecvData* tRcvData = (t_RecvData *)lParam;
// 리스트 컨트롤에 시간 정보 출력하기
…lvitem.pszText = (LPTSTR)(LPCSTR)tRcvData->strTime;lstrcpy(lvitem.pszText, tRcvData->strTime);m_LIST_ReceiveResult.InsertItem(&lvitem);
// 리스트 컨트롤에 데이터량 출력하기
data.Format("%lf", tRcvData->dCount);…lvitem.pszText = (LPTSTR)(LPCSTR)data;lstrcpy(lvitem.pszText, data);m_LIST_ReceiveResult.SetItem(&lvitem);
return 0L;}
28제12장 트래픽 발생기 (Traffic Generator)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
TGen과 TRcv 실행 모습
목적지 211.180.125.117 시스템의 포트 6001번으로 데이터 전송
초당 1000Kbps의 데이터 전송
29제12장 트래픽 발생기 (Traffic Generator)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
네트워크 최대 대역폭 검증
IP : 211.180.125.117CPU : x86 Family 6 Model 8 Stepping 10
GenuineIntel ~ 1000 MhzOS : Windows 2000 ProfessionalMemory : 523,760 KB RAM
IP : 211.180.125.122CPU : x86 Family 6 Model 8 Stepping 10
GenuineIntel ~ 1000 MhzOS : Windows 98Memory : 523,760 KB RAM
Dummy Hub
• 해당 네트워크의 대역폭은 100Mbps 미만임을 확인
30제12장 트래픽 발생기 (Traffic Generator)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
참고 문헌
서승호 외, AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍, 정익사, 2002.Jones Ohlund, “Network Programming Windows”, Microsoft.Jones Ohlund, “Network programming for Microsoft Windows”, Microsoft.Schmidt, Huston, “C++ Network Programming”, IN-DEPTH.Anthony Jones and Jim Ohlund, “Network Programming Windows”, Microsoft.김영탁, 김종근, 조유제, 한기준 공저, “데이터 통신 및 컴퓨터 망”, 정익사, 1999.W. Richard Stevens, “TCP/IP Illustrated, Volume I”, Addison wesley, 1996.Fred Halsall, “Data Communications, Computer Networks and Open Systems”, Addison-wesley, 1995.Avi Silberschatz, Peter Galvin, "Operating System concepts", Addison Wesley, 1998.
1
AMAN2002를 이용한
TCP/IP 프로토콜 분석 및 네트워크 프로그래밍
www.nms4you.com
AMAN2002 추가 기능 실습
2003. 3.
Chapter 13:
2제13장 AMAN2002 추가 기능 실습
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
AMAN2002 추가기능
Packet Observer의 도구모음에서 AMAN2002의 추가기능을 사용가능
Guru
WinPing
WinTraceroute
Traffic Generator
Traffic Receiver
CSMA/CD Simulator
Error/Flow Control Simulator
EzTrans
3제13장 AMAN2002 추가 기능 실습
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
AMAN2002 Guru
네트워크 프로토콜의 이해 정도를 측정
프로토콜 헤더 포맷의 시각적으로 접할 수 있음
반복적인 학습을 통해 프로토콜 헤더의 분석력 신장
학습 가능한 프로토콜Ethernet v2
IPv4 (Internet Protocol version 4)
ICMP (Internet Control Message Protocol)
TCP (Transmission Control Protocol)
UDP (User Datagram Protocol)
HTTP (Hyper Text Transfer Protocol)
FTP (File Transfer Protocol)
4제13장 AMAN2002 추가 기능 실습
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Guru의 실행 (1)
네트워크로부터 패킷 캡처
5제13장 AMAN2002 추가 기능 실습
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Guru의 실행 (2)
디스크에 저장된 패킷 캡처
6제13장 AMAN2002 추가 기능 실습
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Guru를 이용한 계층별 프로토콜 헤더 분석
선택된 패킷의 계층별 프로토콜 헤더입력 시트를 선택가능
7제13장 AMAN2002 추가 기능 실습
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
IP 데이터그램 헤더 분석
①3계층 (IPv4) 탭 선택
이더넷 14바이트
②IP 데이터그램 시작 위치 확인
③필드의 십진수 값 입력십진수 변환은 EzTrans 이용
④입력 값 확인
8제13장 AMAN2002 추가 기능 실습
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
AMAN2002 EzTrans
10진수와 16진수 데이터의 상호 변환
Guru의 테스트 시트 작성시 사용하면 편리함
EzTrans 실행 과정16진수 → 10진수
① 시작상태 : 16진수 라디오 버튼을 선택
② 입 력 : 에디트 박스에 16진수 값 입력(붙여넣기)
③ 변 환 : 10진수 라디오 버튼 누름
④ 역 변환 : 16진수 라디오 버튼을 누르면 입력한 값으로 역 변환
⑤ 새 입력 : 에디트 박스 클리어, 16진수 라디오 버튼 선택됨
9제13장 AMAN2002 추가 기능 실습
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
EzTrans 실행 방법
10진수 → 16진수
① 시작 상태10진수 라디오 버튼 클릭
② 입력에디트 박스에 변환할 10진수 값입력 혹은 붙여넣기
③ 변 환16진수로 변환하기 위해 16진수라디오 버튼을 클릭
④ 새 입력초기화 상태가 됨, 에디트 박스가클리어되고, 16진수 라디오버튼 선택
CLICK!
10제13장 AMAN2002 추가 기능 실습
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
AMAN2002 WinPing
네트워크의 연결 검사 및 진단출발지 시스템에서 목적지 시스템까지 ICMP Echo 응답메시지를 받는데 걸린 시간을 측정
설정 가능한 옵션Ping Buffer Size : ping 메시지에 실어 보낼 버퍼의 사이즈 조정
Ping Timeout : ping 패킷에 대한 송신, 수신 타임아웃을 조정
Max Hops : ping에 대한 최대 홉 수 조정
11제13장 AMAN2002 추가 기능 실습
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
WinPing의 실행
목적지 호스트로부터ICMP Echo 응답메시지를받는데 걸린 시간
실행 방법① 목적지 호스트 주소를 입력
② 속성 설정 창에서 ping 옵션을 설정
③ 시작 버튼을 누름
12제13장 AMAN2002 추가 기능 실습
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
AMAN2002 WinTraceroute
목적 호스트까지 네트워크가 연결된 구성정보 확인
출발 호스트에서 목적호스트까지 인터넷을 통해 특정패킷이 목적지 호스트에 도달하는 경로 추적
인터넷 상의 문제점이 있는 네트워크 확인
13제13장 AMAN2002 추가 기능 실습
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
WinTraceroute의 실행
목적지 호스트 주소를 입력하고 시작버튼을 누름Host Name을 확인하기 위해 ‘Name 표시’를 체크
• Delay게이트웨이로부터 패킷을받았다는 ICMP 메시지가되돌아오기까지의 시간
• IP Address게이트웨이의 IP 주소
14제13장 AMAN2002 추가 기능 실습
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
WinTraceroute의 Whois 정보 확인
선택
• WhoIs 정보 - 도메인 이름으로부터 이용자나 통신망에 대한 정보를 포함함
15제13장 AMAN2002 추가 기능 실습
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
AMAN2002 Traffic Tester
Traffic Generator현재 망의 분석을 위해 임의의 트래픽을 발생시켜 전송함
전송 데이터
UDP를 기반으로 한 IP 데이터그램
일정한 시간 간격으로 전송
동일한 데이터를 전송
Traffic ReceiverTraffic Generator에서 전송한 데이터를 수신하여 Traffic Generator가 데이터를 정확히 전송하고 있는지 확인
UDP 프로토콜을 사용하여 송신 시 송신측에서 데이터가 정확히 전송되었는지 확인 불가능하므로 수신측에서 확인
16제13장 AMAN2002 추가 기능 실습
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Traffic Generator
다양한 실험을 위해 데이터 전송 시 설정하는 항목
목적지 주소전송 데이터를 수신할 Traffic Receiver가 동작하는 시스템의 IP 주소
전송 포트 번호Traffic Generator가 데이터를 전송할 때 사용하는 포트
전송 속도데이터의 전송속도로 64Kbps가 기본값
Best-effort(0Kbps) 전송 가능
17제13장 AMAN2002 추가 기능 실습
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Traffic Generator 실행
전송 결과 확인전송률
초당 전송하는 데이터량을 출력
경과시간
전송 시작 지점부터 누적된
시간 정보를 초단위로 출력
패킷 사이즈
한번에 전송하는 패킷의
크기정보 출력
18제13장 AMAN2002 추가 기능 실습
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Traffic Receiver 실행
설정 가능한 항목
수신 포트 번호, 기본값 6001번
전송 결과 확인
그래프데이터 수신량을 그래프로 확인
수치 데이터전송률
초당 수신하는 데이터량을 출력
경과시간
Traffic Receiver의 수신 누적 시간
패킷 사이즈
한번에 수신하는 패킷의 크기 정보
19제13장 AMAN2002 추가 기능 실습
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
AMAN2002 CSMA/CD Simulator
이더넷에서 사용되는 CSMA/CD 방식의 이해를 돕기위한 시뮬레이터
CSMA/CD 방식에서 프레임의 이동 및 상태변화를 시각적으로 확인
사용방법노드 생성
노드의 오프셋 위치 입력 후 노드추가 버튼 누름
노드의 프레임 생성프레임을 발생시킬 노드를 클릭함
프레임의 상태 변화 관찰
초기화현재 상태를 종료하고 처음의 상태로 되돌림
20제13장 AMAN2002 추가 기능 실습
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
CSMA/CD Simulator 실행
2000m
오프셋 입력 후‘노드추가’버튼 클릭
노드 생성 및 추가
21제13장 AMAN2002 추가 기능 실습
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
CSMA/CD Simulator 실행
프레임 생성 및 시뮬레이션
프레임을 생성할 노드를 클릭!
22제13장 AMAN2002 추가 기능 실습
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
AMAN2002 Error/Flow Control Simulator
TCP/IP 환경에서 에러/흐름 제어방식의 이해를 돕기 위한시뮬레이터
다양한 오류 발생상태에서 패킷의 이동 및 오류 처리를 시각적으로 확인가능
선택가능 한 오류 제어 방식Stop-and-Wait
Go-back-N
Selective-Repeat
선택가능 한 오류 발생 방식Without Error
With Lost Packet
With Lost ACK
23제13장 AMAN2002 추가 기능 실습
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Error/Flow Control Simulator 사용법
오류 제어 방식, 오류 발생 방식 선택
Window의 크기 설정Window의 크기?
수신지의 확인(ACK) 응답이 없더라도 전송할 수 있는최대 패킷의 크기
시뮬레이션 속도 설정Delay 설정 슬라이드 바 사용
시뮬레이션의 중단초기화 버튼을 누름
느림빠름
<시뮬레이션 속도 설정>
24제13장 AMAN2002 추가 기능 실습
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
Error/Flow Control Simulator 실행
오류제어 방식 : Go-back-N
오류발생 방식 : With Lost ACK
Window 크기 : 4
25제13장 AMAN2002 추가 기능 실습
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
참고 문헌
서승호 외, AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍, 정익사, 2002.
RFC 826, David C. Plummer, An Ethernet Address Resolution Protocol or Converting Network Protocol Address to 48bit Ethernet Address for Transmission on Ethernet Hardware, November 1982.
RFC 791, Jon Postel, INTERNET PROTOCOL DARPA INTERNET PROGRAM PROTOCOL SPECIFICATION, September 1981.IETF, RFC 792, “Internet Control Message Protocol”, 1981.
RFC 793, Jon Postel, TRANSMISSION CONTROL, PROTOCOL DARPA INTERNET PROGRAM PROTOCOL SPECIFICATION, September 1981.
RFC 1700, J. Postel, ASSIGNED NUMBERS, October 1994.
1제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
01 00 5E 00 00 02 00 07 4F A1 6B FC 08 00
송신측 MAC 주소NIC 제조회사: 00074F Cisco Systems, Inc.Card ID: A16BFC
수신측 MAC 주소NIC 제조회사: 01005E Unknown (OUI 코드에 없음).
Card ID: 000002
상위 계층 프로토콜 종류0800 Internet IP (IPv4)
연습 문제 풀이 1
08 0000 07 4F A1 6B FC01 00 5E 00 00 02
Card ID회사 IDCard ID회사 ID
Type근원지 주소목적지 주소
01005E는 Ethernet multicast address (RFC 1112 참고)
2제4장 이더넷 (Ethernet)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
00 01 02 E8 DF 8D 00 08 E2 44 76 3C 08 00
송신측 MAC 주소NIC 제조회사: 0008E2 Cisco Systems
Card ID: 44763C
수신측 MAC 주소NIC 제조회사: 000102 3COM CORPORATION
Card ID: E8DF8D
상위 계층 프로토콜 종류0800 Internet IP (IPv4)
08 0000 08 E2 44 76 3C00 01 02 E8 DF 8D
Card ID회사 IDCard ID회사 ID
Type근원지 주소목적지 주소
연습 문제 풀이 2
1제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
연습 문제 풀이
45 00 00 4E BF 17 00 00 80 11 F8 85 A5 E5 9B 37 A5 E5 9B FF
A5 E5 9B FF
A5 E5 9B 37
F8 851180
00 00BF 17
004E0054
헤더길이
목적지 주소
근원지 주소
체크 섬프로토콜수명
플래그 / 단편옵셋식별자
전체길이서비스유형버전입력
2제5장 IP(Internet Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
연습 문제 풀이
버전 4 IP 데이터그램 버전 4를 사용
헤더길이 5 5 x 4 = 20 이므로 헤더길이는 20바이트 임
서비스 유형 00h(0000 0000) 일반 우선순위이며 최소지연, 최대 처리율,
최대 신뢰성, 최소비용 모두 요구 하지 않음전체 길이 78 IP 데이터그램의 전체길이는 78바이트 임
식별자 48919 IP 데이터그램이 단편화될 때 모든 단편에 48919 값이 부여됨
플래그 000 단편화 가능하며, 마지막 단편이거나 유일한 단편임
단편옵셋 0 0000 0000 0000 단편화 되지 않았거나 단편화 되었더라도
첫번째 단편임. (플래그와 단편옵셋으로 볼 때 현재 분석하고
있는 IP 데이터그램은 단편화 되지 않았음)수명 128 128개의 라우터를 거친 뒤 폐기됨
프로토콜 17 IP 데이터그램은 상위 UDP 프로토콜에 전달됨
체크 섬 63621 체크 섬 값은 63621
근원지 주소 송신지 IP 주소는 165.229.155.55
목적지 주소 수신지는 IP 주소는 165.229.155.255
※ 각 필드의 의미를 분석하시오.
1제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
00 89 00 89 00 3A 00 00
64bits or Original Datagram Header
45 00 00 3A 36 62 00 00 7F 11 7D A7 D2 62 BD 17 D3 AA 24 71
Internet Header
00 00 00 00
Unused
FB C40303
체크 섬코드타입
2제6장 ICMP(Internet Control Message Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
연습 문제 풀이
ICMP 헤더타입/코드 타입 3 은 Destination Unreachable Message 이고, 코드
3 은 해당 포트로 접속이 불가능하다는 의미
체크 섬 송신지에서 계산한 체크섬은 64452이고, 수신측에서 다시
한번 계산하여 비교한 뒤 패킷의 오류를 검사
인터넷헤더송신지 IP 210.98.189.23 에서 수신지 IP 211.170.36.113 으로 전송
상위의 UDP 프로토콜로 전달됨
데이터그램 헤더송신지 포트 137번에서 수신지 포트 137번으로 전달
※ 패킷의 값은 10진수로 표현하시오.
1제7장 Traceroute 기능분석및프로그래밍
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
연습 문제 풀이
10.50.11.49
192.168.111.29
203.248.227.13
210.120.196.21
210.120.193.105
210.120.192.113
210.120.255.114
10.50.11.165
10.50.11.53
210.120.245.91
211.170.36.113
211.171.203.1
203.252.3.51
ICMP Echo Request 전송
TTL = 1, ICMP 시간초과메시지전송
TTL = 2, ICMP 시간초과메시지전송
TTL = 3, ICMP 시간초과메시지전송
TTL = 4, ICMP 시간초과메시지전송
TTL = 5, ICMP 시간초과메시지전송
TTL = 6, ICMP 시간초과메시지전송
.
.
.
TTL = 12, ICMP 시간초과메시지전송
TTL = 13, ICMP 시간초과메시지전송
요청한
호스트
1제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
연습문제 풀이
00 50 09 26 6A DC 78 41 33 55 E1 50 50 10 19 20 C9 D9 00 00
헤더 필드 설명
0
5
861266256
1792833601
2342
80
값(10진수)
현재 사용하지 않는 필드이므로 0이다.예약
5 x 4 = 20, 헤더길이는 20바이트 이다.헤더길이
다음 번에 받기를 요구하는 세그먼트의 번호는861266256 이다.
확인 번호
데이터 순서번호는 1792833601 이다.순서 번호
목적지 포트번호는 2342를 사용한다.목적지 포트번호
근원지 포트번호는 80 즉, HTTP 이다.근원지 포트번호
설명필드 명
2제8장 TCP(Transmission Control Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
연습문제 풀이
00 50 09 26 6A DC 78 41 33 55 E1 50 50 10 19 20 C9 D9 00 00
헤더 필드 설명
제어 플래그 중 ACK 비트가 1로 설정되었으므로확인번호가 유효하다.
32제어 플래그
없음
0
51673
6432
값(10진수)
헤더길이가 20바이트 이므로 옵션 필드를 사용하지 않는다.
옵션
제어비트의 URG=0가 0이고, 긴급 포인터는 0이므로 사용하지 않는다.
긴급 포인터
송신지에서 계산된 체크 섬은 51673이고, 수신측에서 다시 한번 계산하여 세그먼트의 오류를 검사한다.
체크 섬
수신측의 응답 확인 없이 계속해서 전달할 수 있는데이터 크기는 6432 바이트이다.
윈도우 크기
설명필드 명
1제8장 UDP(User Datagram Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
연습 문제 풀이
10 00 20 00 00 80 AB CD
헤더 필드 설명
43981
128
8192
4096
값(10진수)
송신지에서 계산한 체크 섬은 43981이다. 수신지에서 체크 섬을 다시 계산하여 이 값과 다를 경우 데이터그램에 오류가 있는 것이다.
체크 섬
헤더를 포함한 UDP 데이터그램의 총 길이는 128 바이트이다.
길이
목적지 포트번호는 8192번이므로 Registerd port를사용한다.
목적지 포트번호
근원지 포트번호는 4096번이므로 Registerd port를사용한다.
근원지 포트번호
설명필드 명
1제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
연습 문제 풀이
HTTP 메시지의 종류요청/ 응답 구별 메소드로 시작되므로 요청 메시지임
GET, HEAD, POST GET 임, 47(G) 45(E) 54(T)
47 45 54 20 2F 69 6E 64 65 78 2E 68 74 6D 6C 20 48 54 54 50 2F 31 2E 31 OD OA 41 63 63 65 70 74 3A 20 2A 2F 2A OD OA 48 6F 73 74 3A 20 77 77 77 2E 6A 6F 69 6E 73 2E 63 6F 6D OD OA OD OA
(요청 라인/ 상태 라인)
헤더(일반헤더? 요청/응답헤더? 엔터티헤더?)
본문 (유? 무?)
공백 라인?
2제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
연습 문제 풀이
헤더의 종류아스키 값을 살펴 보면 요청 헤더라는 것을 알 수 있음
Accept: */* 41(A) 63(c) 63(c) 65(e) 70(p) 74(t) 3A(:) 20( ) 2A(*)
2F(/)
2A(*) OD(CR) OA(LF)
Host: www.joins.com 48(H) 6F(o) 73(s) 74(t) 3A(:) 20( ) 77(w) 77(w)
77(w) 2E(.) 6A(j) 6F(o) 69(i) 6E(n) 73(s) 2E(.) 63(c) 6F(o) 6D(m) OD OA
본문 내용바로 공백 라인(CRLF)이 나오므로 본문 내용이 없음
3제10장 HTTP(Hypertext Transfer Protocol)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
아래 패킷을 분석하시오08 00 46 18 BD C8 00 08 E2 44 76 3C 08 00 45 00 01 32 81 F8 40 00 31 06 EC A1 D3 20 77 97 D2 62 BD 11 00 50 0B 5E 1A 36 BE 0B 4D EA FF 00 50 18 44 70 31 FE 00 00 48 54 54 50 2F 31 2E 31 20 33 30 32 20 46 6F 75 6E 64 0D 0A 44 61 74 65 3A 20 4D 6F 6E 2C 20 30 39 20 4A 75 6E 20 32 30 30 33 20 30 35 3A 35 32 3A 33 32 20 47 4D 54 0D 0A 4C 6F 63 61 74 69 6F 6E 3A 20 68 74 74 70 3A 2F 2F 6B 72 2E 79 61 68 6F 6F 2E 63 6F 6D 2F 0D 0A 43 6F 6E 6E 65 63 74 69 6F 6E 3A 20 63 6C 6F 73 65 0D 0A 54 72 61 6E 73 66 65 72 2D 45 6E 63 6F 64 69 6E 67 3A 20 63 68 75 6E 6B 65 64 0D 0A 43 6F 6E 74 65 6E 74 2D 54 79 70 65 3A 20 74 65 78 74 2F 68 74 6D 6C 3B 20 63 68 61 72 73 65 74 3D 69 73 6F 2D 38 38 35 39 2D 31 0D 0A 0D 0A …
사용된 프로토콜 개수: 4개
근원지 MAC 주소: 0008E2-44763C
근원지 IP 주소: 211.32.119.151
근원지 Port 번호: 80
사용된 프로토콜 이름: Ethernet v2, IP, TCP, HTTP
목적지 MAC 주소: 080046-18BDC8
목적지 IP 주소: 210.98.189.17
목적지 Port 번호: 2910
1제12장 트래픽 발생기 (Traffic Generator)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
연습 문제 풀이
사용하는 시스템이 속한 네트워크의 MTU 확인
시스템이 속한 네트워크의 MTU는 1400 이상 1500 이하임
네트워크로 1400 바이트 전송단편화 되지 않음
네트워크로 1500 바이트 전송단편화 됨
2제12장 트래픽 발생기 (Traffic Generator)
AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com
연습 문제 풀이
5300 바이트의 IP 데이터그램을 MTU가 1500 바이트인 네트워크로 전달 시 단편화
단편화 조각의 개수
단편의 IP 데이터그램 식별자, 플래그 단편 옵셋 정보
식별자는 00001010에서 1씩 증가 가정
IP헤더
IP 데이터그램(5300바이트)
식별자(16비트) 플래그(3비트) 단편화 오프셋(13비트)
0000 1010 001 0 0000 0000 0000 (0)
0000 1010 001 0 0000 1011 1001 (185)
0000 1010 001 0 0001 0111 0010 (370)
0000 1010 000 0 0010 0010 1011 (555)
4개의 단편으로 구분됨