Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 ·...

411
1 www.nms4you.com AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 OSI 참조 모델과 TCP/IP 2003. 3. Chapter 1:

Transcript of Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 ·...

Page 1: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

1

www.nms4you.com

AMAN2002를 이용한

TCP/IP 프로토콜 분석 및 네트워크 프로그래밍

OSI 참조 모델과 TCP/IP

2003. 3.

Chapter 1:

Page 2: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

2제1장 OSI 참조 모델과 TCP/IP

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

수업 목표

Protocol의 정의

주요 용어 정리

OSI 참조 모델과 TCP/IP의 비교

프로토콜 캡슐화 및 역캡슐화

패킷 교환과 회선교환

TCP/IP 인터넷의 등장 배경 및 설계 이념

TCP/IP에서의 주소 표현 (물리 주소, IP 주소, Port 번호)

서브네팅과 슈퍼네팅

라우팅

Page 3: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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)

Page 4: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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계층(물리계층, 데이터 링크계층)의 표준화 담당

Page 5: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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)

Page 6: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

6제1장 OSI 참조 모델과 TCP/IP

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

프로토콜 분류의 필요성

복잡한 네트워킹 기능을 모듈화

프로토콜들 간의 관계 정립 가능

이종 프로토콜 집단 간의 비교 가능

TCP

UDPHTTP

FTPEthernet v2

IP Ethernet v2IP

TCP, UDPHTTP, FTP

Page 7: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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)

Page 8: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

8제1장 OSI 참조 모델과 TCP/IP

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

OSI 참조 모델

응용 계층

표현 계층

세션 계층

전송 계층

네트워크 계층

데이터링크 계층

물리 계층

응용 계층

표현 계층

세션 계층

전송 계층

네트워크 계층

데이터링크 계층

물리 계층

네트워크 계층

데이터링크 계층

물리 계층물리계층 프로토콜

데이터링크계층프로토콜

네트워크계층프로토콜

물리계층 프로토콜

데이터링크계층프로토콜

네트워크계층프로토콜

전송계층 프로토콜

세션계층 프로토콜

표현계층 프로토콜

응용계층 프로토콜

Upper LayersLower Layers

전송 매체 전송 매체

IMB PC MacintoshRouter

Internet

Page 9: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 10: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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)

Page 11: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 데이터

물리계층

네트워크계층

Page 12: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

12제1장 OSI 참조 모델과 TCP/IP

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

OSI 계층별 기능: 네트워크 계층

네트워크 계층의 기능여러 네트워크를 거쳐 데이터를 전송

라우팅, 스위칭 기능 제공

: SAP(Service Access Point)

L4 데이터

L3 데이터

네트워크계층

H3

L4 데이터

데이터링크계층

전송계층

L4 데이터

L3 데이터

H3

L4 데이터

네트워크계층

데이터링크계층

전송계층

Page 13: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 데이터

Page 14: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 15: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

15제1장 OSI 참조 모델과 TCP/IP

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

OSI 계층별 기능: 표현 계층

표현 계층의 기능정보의 코드화 체계를 통일

데이터의 압축/압축 해제

L6 데이터

표현계층

H6

L7 데이터

세션계층

응용계층

암호화,압축된 데이터

L6 데이터

표현계층

H6

L7 데이터

세션계층

응용계층

암호화,압축된 데이터

Page 16: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

16제1장 OSI 참조 모델과 TCP/IP

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

OSI 계층별 기능: 응용 계층

응용 계층의 기능사용자 인터페이스 제공

웹, 전자우편, 원격파일 접근, 디렉토리 서비스…

응용계층

L7 데이터

응용계층

L7 데이터

Page 17: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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…

Page 18: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

18제1장 OSI 참조 모델과 TCP/IP

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

토폴로지 (Topology)네트워크를 구성하는 노드와 노드들간의 연결 상태에 대한 기하학적 배치

버스(bus) 토폴로지

: 노드 : 링크

링(ring)토폴로지

스타(star)토폴로지

계층적 트리(tree)토폴로지

메시(mesh)토폴로지

Page 19: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 등장

교육, 상업, 개인 등 여러 목적에 사용

Page 20: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 프로토콜 집합

Page 21: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 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 프로토콜 계층

인터넷계층

네트워크인터페이스계층

트랜스포트계층

애플리케이션계층

물리계층

데이터링크계층

네트워크계층

트랜스포트계층

세션계층

프레젠테이션계층

애플리케이션계층

Page 22: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

22제1장 OSI 참조 모델과 TCP/IP

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

TCP/IP에서의 주소 표현

물리 주소네트워크 인터페이스 계층에서 사용

IP 주소인터넷 계층에서 사용

Port 번호트랜스포트 계층에서 사용

Page 23: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 코드 목록” 참조

Page 24: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 주소 부여

Page 25: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

25제1장 OSI 참조 모델과 TCP/IP

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

포트 주소 (포트 번호)

목적멀티프로세싱 시스템에서 통신하는 프로세스를

구분하기 위해 사용되는 16bit 크기의 번호

종류공인 포트(Well-known port)

등록된 포트 (Registered port)

동적 포트 (Dynamic port)

Page 26: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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)하나의 네트워크를 관리하기 쉽도록 논리적으로 나누어 만든 작은규모의 네트워크

Page 27: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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)

작은 네트워크 여러 개를 묶어서 하나의 큰 네트워크로 통합

Page 28: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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)

발신지 주소

목적지 주소

Page 29: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

29제1장 OSI 참조 모델과 TCP/IP

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

직접 전달과 간접 전달

패킷이 최종 목적지로 전송되는지 아니면 라우터로 전송되는지에 따른 분류

라우터 1 라우터 2

호스트 1 호스트 3호스트 2 호스트 4

간접 전달 직접 전달

허브

직접전달

직접전달

크로스케이블

(a)

(b)

(c)

Page 30: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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)의 주소만 가짐

Page 31: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 32: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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의 반대 개념

라우팅 테이블에 네트워크에 속한 각 호스트의 주소를 가짐

경로 점검 및 보안을 위한 경우 사용

Page 33: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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으로 된 디폴트 엔트리를 가짐

Page 34: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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.

Page 35: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

1

AMAN2002를 이용한

TCP/IP 프로토콜 분석 및 네트워크 프로그래밍

www.nms4you.com

LAN 기술 및 네트워크 장비 규격

2003. 3.

Chapter 2:

Page 36: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

2제2장 LAN 기술 및 네트워크 장비 규격

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

LAN의 전송 매체

a) Unshielded Twisted Pair b) Shielded Twisted Pair

c) Coaxial Cable d) Optical Cable

Page 37: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 38: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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같은 광원이 위치, 반대편은 광 탐지기 위치

빛을 이용한 데이터 전달

장점 : 넓은 대역폭, 전송 속도가 높고 오류가 적음

Page 39: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

5제2장 LAN 기술 및 네트워크 장비 규격

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

LAN 장비

네트워크 인터페이스 카드(NIC)PC를 LAN에 연결시키는 장비

OSI 2계층 담당 (MAC 주소 할당되어 있음)

리피터(Repeater)OSI 1계층 기능을 수행

물리적 저항과 임피던스로 신호의 감쇠가 발생할 경우신호를 재생하고 신호의 타이밍 재조정

Page 40: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 41: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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과 같이 간략하게 표현하였음

Page 42: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

8제2장 LAN 기술 및 네트워크 장비 규격

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

스위치(Switch)

2계층 기능 수행

MAC 주소를 기반으로 교환(switching) 수행.

기능면에선 브리지와 유사입력 포트로 들어오는 프레임에 대해 MAC 주소를 기반으로 어느 출력 포트로 switching 할지를 결정

연결을 집중시키고 효율적으로 데이터 전송

여러 포트를 가지는 것이 브리지와 다름스위치를 Multi-port bridge라고도 함.

Page 43: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

라우팅 테이블

Page 44: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 45: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

11제2장 LAN 기술 및 네트워크 장비 규격

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

매체 접근 제어 (MAC)공유한 전송 매체에 동시 접근을 막기 위해 접근을제한하는 방법

경쟁 (contention) 방식

IEEE 802.3 CSMA/CD대표적인 예 : 이더넷

토큰 전달 (token passing)에 의한 방식

IBM의 토큰링

대표적인 예 : FDDI (Fiber Distributed Data Interface)

Page 46: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 47: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

정상 종료

Page 48: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

14제2장 LAN 기술 및 네트워크 장비 규격

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

IEEE 802.5 Token Ring

• 토큰이 링 상을 돌고 있다. • 근원지가 토큰을 받고 프레임을 전송한다.

근원지 목적지 근원지 목적지

근원지 목적지 근원지 목적지

• 프레임을 수신한 노드들은 프레임에 있는목적지 주소가 자기 주소인지를 비교한다

• 비교하여 같으면 프레임을 복사하고복사하였음을 프레임에 표시한다

• 소스는 프레임이 목적지까지 잘도착했는지를 확인한 후 이상 없이송신되었으면 프레임을 링에서 제거하고토큰을 만들어 내보낸다

Page 49: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 제어 사용자 데이터

프레임 헤더 프레임 헤더 프레임 트레일러

Page 50: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

16제2장 LAN 기술 및 네트워크 장비 규격

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

LAN 구축 기술

이더넷의 물리적, 논리적 토폴로지

토큰링의 물리적, 논리적 토폴로지

a) Token Ring의 물리적인 토폴로지(스타)

허브

b) Token Ring의 논리적인 토폴로지(링)

a) Ethernet의 물리적인 토폴로지(스타) b) Ethernet의 논리적인 토폴로지(버스)

허브

Page 51: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 52: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 53: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

19제2장 LAN 기술 및 네트워크 장비 규격

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

이더넷의 통신 구조

물리 매체 어테치먼트(PMA)

물리 매체

케이블

커넥터

AUI

데이터링크계층

물리 계층

트위스트 페어선, 동축 케이블, 광케이블

신호의 변, 복조 기능

신호의 부호화, 복호화

송신권의 취득 제어

CSMA/CD

각종 MAC과 결합되는

데이터링크 제어

물리 신호 제어(PLS)

매체 접근 제어(MAC)

논리 링크 계층(LLC)

Page 54: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

논리 토폴로지

물리 토폴로지

최대 세그먼트 길이

최대 대역폭매체종류

Page 55: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

라우터

라우터

라우터라우터

브리지

허브

허브허브

Page 56: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

22제2장 LAN 기술 및 네트워크 장비 규격

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

라우터

(b) 라우터 포트

(a) 라우터(위에서 본 모습)

1

32 4 5 6 7

8

Page 57: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

23제2장 LAN 기술 및 네트워크 장비 규격

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

라우터를 이용한 간단한 사설망 구성

13

2

4

스위칭 허브 더미허브

라우터

더미허브라우터

스위칭 허브

더미 허브

더미 허브

종단 시스템

종단 시스템

1

2

3

4

Page 58: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

24제2장 LAN 기술 및 네트워크 장비 규격

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Windows98의 네트워크 환경 설정

제어판의 네트워크 항목을 선택네트워크 항목에서 [네트워크 구성->설치된 네트워크 구성 요소 -> TCP/IP-> 등록정보] 선택

IP 주소, 게이트웨이, DNS 정보 설정

Page 59: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

25제2장 LAN 기술 및 네트워크 장비 규격

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Windows2000의 네트워크 환경 설정

[시작->설정->네트워크 및 전화 접속 연결]을 선택

로컬 영역 연결->등록 정보->인터넷 프로토콜->등록정보 선택

IP주소, 서브넷 마스크, 게이트웨이, DNS 서버 입력

Page 60: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 61: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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콘솔포트

Page 62: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

28제2장 LAN 기술 및 네트워크 장비 규격

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

UTP 케이블 제작

UTP 케이블 제작 시 필요한 부품

RJ-45 잭과 보호용 캡 니퍼스트리퍼

UTP CAT5 케이블 UTP 툴(Tool) UTP 테스터(Tester)

Page 63: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

29제2장 LAN 기술 및 네트워크 장비 규격

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

UTP 케이블 제작

케이블 제단 및 피복제거

라인 정렬 및 RJ45 잭연결

케이블 작성 완료 및동작 테스트

Page 64: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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.

Page 65: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

1

AMAN2002를 이용한

TCP/IP 프로토콜 분석 및 네트워크 프로그래밍

www.nms4you.com

AMAN 2002 구성 및 사용법

2003. 3.

Chapter 3:

Page 66: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

2제3장 AMAN2002 구성 및 사용법

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

AMAN2002

Aide of Network Management 2002

네트워크 실습 소프트웨어

기능

네트워크 패킷 캡처

네트워크의 구성 확인

네트워크 성능 분석

네트워크 장애상태 확인

Page 67: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 68: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

4제3장 AMAN2002 구성 및 사용법

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Packet Observer

프로그램의 시작경로C:₩AMAN2002₩PObserver.exe

Page 69: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

5제3장 AMAN2002 구성 및 사용법

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

네트워크 트래픽 캡처

패킷 캡처 시작

어댑터 선택

패킷 캡처 진행

Page 70: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

6제3장 AMAN2002 구성 및 사용법

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

네트워크 트래픽 캡처

패킷 캡처 결과

선택된 패킷의계층별 헤더 분석

선택된 패킷의헥사코드, 아스키 코드데이터

캡처된 패킷 목록

Page 71: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

7제3장 AMAN2002 구성 및 사용법

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

AMAN2002 라이브러리

Ncap 라이브러리패킷 모니터링 라이브러리

Nmicmp 라이브러리네트워크 연결 검사 및 장애 발견

Nmtrt 라이브러리네트워크 구성 정보 확인

Nmtgen,Nmtrcv 라이브러리네트워크 대역폭, 상태 점검

Page 72: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

8제3장 AMAN2002 구성 및 사용법

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Ncap 라이브러리

C++ 기반의 패킷 모니터링 라이브러리

네트워크 인터페이스를 통과하는 Ethernet 패킷 모니터링

네트워크 성능 관리 기능

Microsoft Visual C++ 6.0에서 최적화

CSelectAdaptorDlg Class 사용에 필요한 파일들

SelectAdaptorDlg.h

ncapd.lib

Page 73: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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);

네트워크 어댑터를 통해 한 개의 패킷을 획득

Page 74: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 형의 숫자로 변환

Page 75: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

11제3장 AMAN2002 구성 및 사용법

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Ncap 라이브러리 사용 예제

EtherViewerC:₩AMAN2002₩example₩EtherViewer.zip

Page 76: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

12제3장 AMAN2002 구성 및 사용법

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Nmicmp 라이브러리

ICMP Echo 메시지를 주기적으로 전송하여 네트워크연결상태를 검사

ICMP Echo 메시지에 실어보낼 데이터의 크기 설정

ICMP Echo 메시지 TTL 설정

ICMP Echo 응답메시지를 기다리는 시간 설정

ICMP Echo 동작 원리

Page 77: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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을 수행

Page 78: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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);

패킷에 대한 타임아웃 설정

Page 79: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

15제3장 AMAN2002 구성 및 사용법

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Nmicmp 라이브러리 사용예제

WinPingC:₩AMAN2002₩example₩WinPing

Page 80: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

16제3장 AMAN2002 구성 및 사용법

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Nmtrt 라이브러리

ICMP Echo 요청메시지를 이용

출발 호스트에서 목적 호스트까지 인터넷을 통해거치게 되는 게이트웨이를 기록

네트워크 구성 정보 확인

문제점이 있는 네트워크 파악

Page 81: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

17제3장 AMAN2002 구성 및 사용법

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Traceroute의 동작원리

Page 82: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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를 수행

Page 83: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

19제3장 AMAN2002 구성 및 사용법

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Nmtrt 라이브러리

CTraceroute Class의 주요 APICString getHostNameByAddress(CString strIPAddr);

IP주소에 대한 호스트 이름을 반환

CString whoIsRequest(CString strIPAddr);

호스트(strIPAddr)의 Whois 정보를 반환

Page 84: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

20제3장 AMAN2002 구성 및 사용법

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Nmtrt 라이브러리 사용 예제

WinTracerouteC:₩AMAN2002₩example₩WinTrt

Page 85: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

21제3장 AMAN2002 구성 및 사용법

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Nmtgen, Nmtrcv 라이브러리

임의로 트래픽을 발생하여 네트워크 성능을 테스트함

UDP 기반의 IP 데이터그램 전송

Nmtgen, Nmtrcv의 동작구조

Page 86: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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);

데이터 수신지 시스템의 포트번호 설정

Page 87: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

23제3장 AMAN2002 구성 및 사용법

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Nmtgen, Nmtrcv 라이브러리

CNmtRcv Class의 주요 APIvoid SetRequestTransferSpeed(int iSpeed);

초당 데이터 전송량 설정

void SendStart();

데이터 전송을 시작함

void SendStop();

데이터 전송을 종료함

Page 88: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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);

데이터 수신 시스템의 포트번호를 설정

Page 89: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

25제3장 AMAN2002 구성 및 사용법

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Nmtgen, Nmtrcv 라이브러리 사용 예제

Traffic GeneratorC:₩AMAN2002₩example₩TGen

Traffic ReceiverC:₩AMAN2002₩example₩TRcv

Page 90: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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.

Page 91: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

1

AMAN2002를 이용한

TCP/IP 프로토콜 분석 및 네트워크 프로그래밍

www.nms4you.com

이더넷 (Ethernet)

2003. 3.

Chapter 4:

Page 92: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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을 참고.

Page 93: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 94: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 명령.

Page 95: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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.

Page 96: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 97: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 98: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

8제4장 이더넷 (Ethernet)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

이더넷 프레임 분석

Packet Observer를 이용한 이더넷 분석

Page 99: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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)

Page 100: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

10제4장 이더넷 (Ethernet)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

NIC 제조회사 코드표

AMAN2002 Online Help의 “OUI 코드” 참조

Page 101: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

11제4장 이더넷 (Ethernet)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

상위 계층 프로토콜 번호

AMAN2002 Online Help의 “EtherType” 참조

Page 102: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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근원지 주소목적지 주소

Page 103: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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근원지 주소목적지 주소

Page 104: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

14제4장 이더넷 (Ethernet)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Guru를 이용한 이더넷 프레임 분석 연습

Page 105: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

15제4장 이더넷 (Ethernet)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

이더넷 프레임 켑쳐 프로그램 작성

Page 106: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

16제4장 이더넷 (Ethernet)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Microsoft Visual C++ 실행

시작 프로그램 Microsoft Visual Studio 6.0

Microsoft Visual C++ 6.0

Page 107: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

17제4장 이더넷 (Ethernet)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

새 프로젝트 생성

AppWizard 시작: Visual C++의 File New 메뉴 선택

Page 108: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

18제4장 이더넷 (Ethernet)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

AppWizard – Step 1

Page 109: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

19제4장 이더넷 (Ethernet)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

AppWizard – Step 2

Page 110: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

20제4장 이더넷 (Ethernet)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

AppWizard – Step 3

Page 111: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

21제4장 이더넷 (Ethernet)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

AppWizard – Step 4

Page 112: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

22제4장 이더넷 (Ethernet)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

라이브러리 경로 설정 (1)

Include 경로: Visual C++의 Directories

Show directories for 메뉴 선택

Page 113: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

23제4장 이더넷 (Ethernet)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

라이브러리 경로 설정 (2)

Include 경로: Visual C++의 Directories

Show directories for 메뉴 선택

Page 114: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 115: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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종류#

Page 116: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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종류#

Page 117: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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;

}

…}

Page 118: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

28제4장 이더넷 (Ethernet)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

어뎁터 열기//선택된 네트워크 어뎁터를 사용할 수 있도록 초기화.if(pDlg->OpenAdaptor(m_iFilter_IP)) {

::AfxMessageBox("Adaptor open 실패");

pDlg->CloseAdaptor();delete pDlg;

return;}

Page 119: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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;

//패킷 분석…

}

Page 120: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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);

Page 121: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

31제4장 이더넷 (Ethernet)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

어뎁터 닫기

//사용한 자원 해제.pDlg->CloseAdaptor();

//Ncap lib. 삭제.delete pDlg;

Page 122: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

32제4장 이더넷 (Ethernet)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

EtherViewer 실행 모습

Page 123: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 124: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/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.

Page 125: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

1

AMAN2002를 이용한

TCP/IP 프로토콜 분석 및 네트워크 프로그래밍

www.nms4you.com

IP (Internet Protocol)

2003. 4.

Chapter 5:

Page 126: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

2제5장 IP(Internet Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

인터넷 프로토콜

기능TCP/IP 프로토콜에서 사용하는 전송 메커니즘

특징무결성 보장 않음.

순서 보장 않음.

비연결형 프로토콜 (가상회선 설정 않음)

Page 127: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 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바이트

Page 128: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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.

Page 129: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 130: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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)

Page 131: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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: 뒤에 단편이 더 있음.

Page 132: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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)

Page 133: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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)

Page 134: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 데이터

데이터

Page 135: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

11제5장 IP(Internet Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

IP 주소

IP 주소의 구성

네트워크 ID

네트워크를 구분

호스트 ID

네트워크 상에 존재하는 컴퓨터들을 구분

호스트 ID네트워크 ID

Page 136: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 137: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

13제5장 IP(Internet Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

IP 데이터그램 분석

Page 138: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/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

Page 139: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 140: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 → 마지막 단편 아님

Page 141: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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” 참조

Page 142: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 143: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

헤더길이

목적지 주소

근원지 주소

체크섬프로토콜수명

플래그 / 단편옵셋식별자

전체길이서비스유형버전입력

Page 144: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

20제5장 IP(Internet Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

연습문제

버전

헤더길이

서비스 유형

전체 길이

식별자

플래그

단편옵셋

수명

프로토콜

체크 섬

근원지 주소

목적지 주소

※ 각 필드의 의미를 분석하시오.

Page 145: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

21제5장 IP(Internet Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Guru를 이용한 데이터그램 분석 연습

Page 146: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

22제5장 IP(Internet Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

데이터그램 캡처 프로그램 작성

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

Page 147: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 148: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 149: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 150: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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종류

Page 151: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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;

}

…}

어뎁터 오픈 대화상자 표시

Page 152: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

28제5장 IP(Internet Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

어뎁터 열기//선택된 네트워크 어뎁터를 사용할 수 있도록 초기화.if(pDlg->OpenAdaptor(1)) {

::AfxMessageBox("Adaptor open 실패");

pDlg->CloseAdaptor();delete pDlg;return;

}

Page 153: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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;

//패킷 분석…

}

Page 154: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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”

Page 155: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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”

Page 156: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 에 패킷 헤더 정보 표시

Page 157: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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));. . .

Page 158: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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의 항목 클릭)

Page 159: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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의 항목 클릭)

Page 160: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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;

}

Page 161: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

37제5장 IP(Internet Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

어뎁터 닫기

//사용한 자원 해제.pDlg->CloseAdaptor();

//Ncap lib. 삭제.delete pDlg;

Page 162: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

38제5장 IP(Internet Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

IPViewer 실행 화면 (1)

Page 163: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

39제5장 IP(Internet Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

IPViewer 실행 화면 (2)

click

Page 164: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

40제5장 IP(Internet Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

IPViewer를 이용한 이더넷 프레임 분석

버전 IPv4를 사용

헤더길이 헤더길이는 20바이트 이므로 옵션을 사용하지 않음

서비스 유형 0으로 기본 서비스 유형임

전체 길이 데이터그램의 전체길이는 56 바이트임

식별자 단편의 ID는 47172임

Page 165: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 166: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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.

Page 167: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

1

AMAN2002를 이용한TCP/IP 프로토콜 분석 및 네트워크 프로그래밍

www.nms4you.com

인터넷 제어 메시지 프로토콜(ICMP)

2003. 5.

Chapter 6:

Page 168: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 메시지 캡슐화>

Page 169: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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) – 메시지의 오류 검사

나머지 헤더 – 타입과 코드 값에 따라 변경됨

Page 170: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 171: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

5제6장 ICMP(Internet Control Message Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

ICMP 메시지의 종류

에러(error) 보고용 메시지IP 패킷 처리 도중 발생한 문제를 보고할 때 사용

Destination unreachable, source quench…

질의(query)용 메시지다른 호스트로부터 특정 정보를 획득하기 위해 사용

네트워크 문제 진단 및 타임스탬프 요청과 같은 질의에사용

Page 172: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 173: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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’과 같은 불

특정한 주소를 가진 데이터그램에 대해서는 에러 메시지가 생성되지 않음

단편화 된 데이터그램에서는 첫번째 단편에만 에러 메시지 생성

Page 174: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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)을 결정

• 호스트가 라우터에게 서브넷 마스크 요청

• 다른 네트워크의 호스트에게 데이터 전송 시자신의 네트워크에 연결된 라우터 주소 요청

Page 175: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 메시지 분석

Page 176: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

10제6장 ICMP(Internet Control Message Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

ICMP 메시지 분석

• Ping 수행 시 ICMP 메시지 캡처

Page 177: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 178: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

12제6장 ICMP(Internet Control Message Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

ICMP 메시지 분석

체크 섬0xD9F3(55795)

식별자: 고유 세션 식별 번호0x2C07(11271)

순서번호: 동일 식별자를 가진 메시지들 구분0x0100(256)

※ ping을 수행하는 근원지/목적지 주소, 프로토콜 정보는 IP 데이터그램헤더에 나타남

Page 179: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/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

체크 섬코드타입

Page 180: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

14제6장 ICMP(Internet Control Message Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

연습 문제

ICMP 헤더타입/코드

체크 섬

인터넷헤더

송신지 IP . . . 에서 수신지 . . . 로 전송

상위의 프로토콜로 전달됨

데이터그램 헤더

송신지 포트 번에서 수신지 포트 번으로 전달

※ 패킷의 값은 10진수로 표현하시오.

Page 181: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

15제6장 ICMP(Internet Control Message Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Guru를 이용한 ICMP 분석 연습

Page 182: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

16제6장 ICMP(Internet Control Message Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

ICMP 캡처 프로그램 작성《IcmpViewer》

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

Page 183: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 184: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 185: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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)』 과 동일하므로 생략함

Page 186: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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비트

Page 187: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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;. . .

Page 188: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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);

Page 189: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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);

Page 190: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 191: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

25제6장 ICMP(Internet Control Message Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

IcmpViewer 실행화면

ICMP 헤더(기본 포맷) 8 바이트

ICMP 메시지(헤더+데이터)의 길이

Page 192: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

26제6장 ICMP(Internet Control Message Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

IcmpViewer 실행화면

리스트 컨트롤의 항목 클릭

ICMP 메시지의 데이터영역의 값

Page 193: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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)

Page 194: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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비트

Page 195: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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.

Page 196: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

1

AMAN2002를 이용한

TCP/IP 프로토콜 분석 및 네트워크 프로그래밍

www.nms4you.com

Traceroute 기능 분석 및프로그래밍

2003. 3.

Chapter 7:

Page 197: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

2제7장 Traceroute 기능 분석 및 프로그래밍

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Traceroute

패킷이 목적지에 도달하는 경로를 추적하는 프로그램

자신의 컴퓨터가 목적지에 도달하기까지 거치게되는 게이트웨이를 기록

사용 목적호스트 사이의 라우팅 문제를 파악

인터넷 상의 문제가 되는 네트워크를 파악

Page 198: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 시간초시간초과과 메시지메시지를 송신한 쪽으로 전달함

Page 199: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 시간초과 메시지 반송

Page 200: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

5제7장 Traceroute 기능 분석 및 프로그래밍

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Traceroute의 동작

송신측호스트

목적지호스트

ICMP 시간초과메시지

ICMP 반향요청메시지

ICMP 시간초과메시지

ICMP 반향요청메시지

송신측호스트

목적지호스트

< TTL 값이 1일 때 >

< TTL 값이 2일 때 >

Page 201: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

6제7장 Traceroute 기능 분석 및 프로그래밍

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Traceroute의 동작

ICMP 반향응답메시지

ICMP 반향요청메시지

송신측호스트

목적지호스트

< TTL 값이 3(최종 목적지)일 때 >

Page 202: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 주소

Page 203: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/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를 수행한 결과를 보여줌.

Page 204: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

9제7장 Traceroute 기능 분석 및 프로그래밍

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

AMAN2002 Traceroute 실행

Whois 정보 조회

Page 205: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 요청

Page 206: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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진수필드

Page 207: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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에 대한 첫번째 라우터의 응답

Page 208: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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진수필드

Page 209: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

14제7장 Traceroute 기능 분석 및 프로그래밍

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

연습 문제

WinTraceroute를 실행하여 목적지 호스트에 도달하기까지의 네트워크 경로를 그림으로 나타내어 보라.

전송하는 패킷의 TTL 값, ICMP 메시지와 관련시킬 것

Page 210: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

15제7장 Traceroute 기능 분석 및 프로그래밍

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

ping 프로그램 작성《WinPing》

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

Page 211: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

16제7장 Traceroute 기능 분석 및 프로그래밍

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

프로젝트 설정

Microsoft Visual C++ 6.0의 메뉴에서 Project Settings Link 탭 Object/library modules:

nmicmpd.lib 추가

Page 212: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

17제7장 Traceroute 기능 분석 및 프로그래밍

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

대화상자 디자인

1

Edit Box2

3

4

5

6

7

Button

Page 213: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

18제7장 Traceroute 기능 분석 및 프로그래밍

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

대화상자 디자인

8

9

10

11 12

Page 214: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 215: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 216: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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;

Page 217: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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;

}

Page 218: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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);

}

Page 219: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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);

}

Page 220: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

25제7장 Traceroute 기능 분석 및 프로그래밍

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Winping 실행화면

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

Page 221: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

26제7장 Traceroute 기능 분석 및 프로그래밍

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Traceroute 프로그램 작성《WinTraceroute》

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

Page 222: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

27제7장 Traceroute 기능 분석 및 프로그래밍

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

프로젝트 설정

Microsoft Visual C++ 6.0의 메뉴에서 Project Settings Link 탭 Object/library modules:

nmtrtd.lib 추가

Page 223: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

28제7장 Traceroute 기능 분석 및 프로그래밍

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

대화상자 디자인

1

Edit Box2

3

4

5

6

Button

Page 224: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

이벤트 처리

Page 225: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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";

Page 226: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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;

}

Page 227: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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);

}

Page 228: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

33제7장 Traceroute 기능 분석 및 프로그래밍

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

WinTraceroute 실행화면

WinTraceroute 실행화면

Page 229: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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.

Page 230: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

1

AMAN2002를 이용한

TCP/IP 프로토콜 분석 및 네트워크 프로그래밍

www.nms4you.com

TCP (Transmission Control Protocol)

2003. 6.

Chapter 8:

Page 231: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 232: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

3제8장 TCP(Transmission Control Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

TCP의 기능

오류 검출 및 재전송순서번호

수신호스트에서 세그먼트의 순서번호 필드를 검사

세그먼트의 상실, 중복, 순서 바뀜을 검사

확인번호

수신호스트는 자신이 받기를 기대하는 다음데이터의확인 번호 필드를 입력하여 송신

이전의 데이터 스트림이 모두 수신되었음을 의미함

재전송

송신호스트가 일정시간동안 확인 데이터를 받지 못하면 데이터를 재전송

Page 233: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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임

Page 234: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

5제8장 TCP(Transmission Control Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

TCP의 기능

폭주제어폭주

인터넷에 과부하가 걸려 요구된 트래픽 양만큼 충분한통신자원이 없는 상태

폭주 발생시 목적지 컴퓨터가 근원지 컴퓨터에게 전송속도를 줄이라는 메시지를 보냄

근원지 컴퓨터가 전송속도를 줄임으로써 폭주제어

Page 235: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

6제8장 TCP(Transmission Control Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

TCP 세그먼트 구조

TCP 내용

근원지 포트 번호 목적지 포트 번호

순서 번호

확인 번호

헤더길이

윈도우 크기

체크 섬 긴급 포인터

fsthau예약

TCP 헤더(20 byte)

20 byte

0 15 31

Page 236: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 비트가 설정되어 있을 때 유효)

Page 237: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 238: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 데이터

Page 239: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

10제8장 TCP(Transmission Control Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

TCP 세그먼트 분석

Page 240: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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)

Page 241: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

12제8장 TCP(Transmission Control Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

포트 번호 표

교재, TCP/IP 프로토콜 분석 및 네트워크 프로그래밍, 부록 5 참조

AMAN2002 Online Help의 “well-known port” 참조

Page 242: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 243: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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)

Page 244: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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진수)

예약

헤더길이

확인 번호

순서 번호

목적지 포트번호

근원지 포트번호

설명필드 명

Page 245: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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진수)

옵션

긴급 포인터

체크 섬

윈도우 크기

설명필드 명

Page 246: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

17제8장 TCP(Transmission Control Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Guru를 이용한 TCP 세그먼트 분석 연습

Page 247: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

18제8장 TCP(Transmission Control Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

TCP 세그먼트 캡처 프로그램 작성

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

Page 248: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 249: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 250: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 251: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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)』 과 동일하므로 생략함

Page 252: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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마스킹 연산을 하여 헤더길이를 구함

Page 253: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 254: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 에 패킷 헤더 정보 표시

Page 255: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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);…

Page 256: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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의 항목 클릭 시)

Page 257: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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의 항목 클릭)

Page 258: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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;

}}

Page 259: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

30제8장 TCP(Transmission Control Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

TcpViewer 실행 화면

Page 260: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

31제8장 TCP(Transmission Control Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

TcpViewer를 이용한 Tcp 세그먼트 분석

Page 261: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 이므로 사용하지 않음

Page 262: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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.

Page 263: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

1

AMAN2002를 이용한

TCP/IP 프로토콜 분석 및 네트워크 프로그래밍

www.nms4you.com

UDP (User Datagram Protocol)

2003. 6.

Chapter 9:

Page 264: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 265: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 데이터에 오류가 있는지 검사하기 위해 사용

Page 266: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

4제8장 UDP(User Datagram Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

UDP 데이터그램 분석

Page 267: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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)

Page 268: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

6제8장 UDP(User Datagram Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

포트 번호 표

교재, TCP/IP 프로토콜 분석 및 네트워크 프로그래밍, 부록 5 참조

AMAN2002 Online Help의 “well-known port” 참조

Page 269: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

7제8장 UDP(User Datagram Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

연습문제

10 00 20 00 00 80 AB CD

헤더 필드 설명

값(10진수)

체크 섬

길이

목적지 포트번호

근원지 포트번호

설명필드 명

Page 270: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

8제8장 UDP(User Datagram Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Guru를 이용한 UDP 데이터그램 분석

Page 271: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

9제8장 UDP(User Datagram Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

UDP 데이터그램 캡처 프로그램 작성

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

Page 272: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

10제8장 UDP(User Datagram Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

대화상자 디자인

Edit Box Edit Box Button

List Control1

2 3 4

5

6

Page 273: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 274: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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)』 과 동일하므로 생략함

Page 275: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 276: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 에 패킷 헤더 정보 표시

Page 277: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 에 패킷 헤더 정보 표시

Page 278: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 에 패킷 헤더 정보 표시

Page 279: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

17제8장 UDP(User Datagram Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

UdpViewer 실행 화면

Page 280: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

18제8장 UDP(User Datagram Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

UdpViewer를 이용한 Udp 데이터그램 분석

0번 패킷 분석

근원지 포트번호 송신지에서 7671번 Registered Port를 사용함

목적지 포트번호 수신지에서 38329번 Registered Port를 사용함

길이 17493바이트임

체크 섬 송신지에서 계산한 체크 섬은 16904임

Page 281: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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.

Page 282: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

1

AMAN2002를 이용한

TCP/IP 프로토콜 분석 및 네트워크 프로그래밍

www.nms4you.com

HTTP(Hypertext Transfer Protocol)

2003. 6.

Chapter 10:

Page 283: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

하이퍼

텍스트 링크

하이퍼

텍스트 링크

Page 284: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

3제10장 HTTP(Hypertext Transfer Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

HTTP 메시지 구조

요청 메시지 : 정보, 자료 요청요청 라인, 헤더, 공백 라인, 본문으로 구성

응답 메시지 : 요청에 대한 응답상태라인, 헤더, 공백라인, 본문으로 구성

요청 라인

헤더(일반헤더 | 요청헤더 | 엔터티헤더)

공백 라인

엔터티 본문(요청 메시지)

상태 라인

헤더(일반헤더 | 응답헤더 | 엔터티헤더)

공백 라인

엔터티 본문(응답 메시지)

HTTP 요청 메시지 HTTP 응답 메시지

Page 285: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 286: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

5제10장 HTTP(Hypertext Transfer Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

상태 라인 (Status Line)

HTTP 버전 : 응답 메시지에서 사용하는 HTTP 버전

상태 코드 : 요청 수락 및 수행 시도의 결과를 나타내는 3자리의 십진수 코드

상태 설명 : 사용자를 위한 상태 코드의 설명

HTTP 버전 SP 상태 코드 SP 상태 설명 SP SP

Page 287: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

의미코드의미코드의미코드

Page 288: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 289: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 290: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 291: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

10제10장 HTTP(Hypertext Transfer Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

메소드 (Method)

GETURL에 지정된 정보 획득

일반적인 웹 서핑 시 주로 이용

HEAD본문은 제외하고 헤더만을 전달 받음

기타 사항은 GET 메소드와 같음

POST클라이언트에서 서버로 정보를 전달

게시판, 카운터, 뉴스그룹, 메일링 리스트 등으로 메시지 전달 (CGI 프로그램에서 주로 사용)

Page 292: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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에서 입력

Page 293: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

12제10장 HTTP(Hypertext Transfer Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

HTTP 요청 메시지 분석(GET)

HTTP 요청 메시지(www.yahoo.co.kr)

Page 294: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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스페이스메소드

Page 295: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

14제10장 HTTP(Hypertext Transfer Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

HTTP 응답 메시지 분석

HTTP 응답 메시지(www.yahoo.co.kr)

Page 296: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 297: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

(요청 라인? 상태 라인?)

헤더(일반헤더? 요청/응답헤더? 엔터티헤더?)

본문 (유? 무?)

공백 라인?

Page 298: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 번호:

Page 299: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

18제10장 HTTP(Hypertext Transfer Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Guru를 이용한 HTTP 패킷 분석

Page 300: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

19제10장 HTTP(Hypertext Transfer Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

HTTP 패킷 캡처 프로그램 작성

Page 301: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 메뉴 이용

Page 302: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 303: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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종류#

Page 304: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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종류#

Page 305: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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))

{…

}

…}

Page 306: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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;

//패킷 분석…

}

Page 307: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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)

Page 308: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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번)…

}

Page 309: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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);

Page 310: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

29제10장 HTTP(Hypertext Transfer Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

HTTP 실행 모습

Page 311: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

30제10장 HTTP(Hypertext Transfer Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

HttpViewer를 이용한 HTTP 패킷 분석

Page 312: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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’ 문자로 종료

Page 313: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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.

Page 314: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

1

AMAN2002를 이용한

TCP/IP 프로토콜 분석 및 네트워크 프로그래밍

www.nms4you.com

FTP(File Transfer Protocol)

2003. 3.

Chapter 11:

Page 315: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

2제11장 FTP(File Transfer Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

FTP

기능네트워크 상에서 파일을 다른 시스템으로 전달하는 프로토콜

제어 연결(포트 21번)과 데이터 연결(포트 20번)로 구성

파일 이름의 구조, 텍스트 표현 방식, 디렉토리 구조 고려

사용자인터페이스

사용자 프로토콜

인터프리터

사용자 데이터전송 기능

클라이언트

서버 프로토콜인터프리터

서버 데이터전송 기능

서버

사용자

파일시스템

파일시스템

제어 연결

데이터 연결

(FTP 명령/응답)

Page 316: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

3제11장 FTP(File Transfer Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

제어 연결과 데이터 연결

제어 연결전송시의 제어 명령을 전달

포트 21번 이용

데이터 연결관련 제어 정보 : 데이터 전송 포트, 전송모드, 데이터 표현 타입 등

파일 관련 명령 : 파일 저장, 첨부, 삭제 등

데이터 연결포트 20번 이용

데이터(파일) 전송을 위한 연결

Page 317: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

4제11장 FTP(File Transfer Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

제어 연결 설정

클라이언트 서버

제어프로세스

데이터 전송

프로세스

제어

프로세스

데이터 전송프로세스

21

제어프로세스

데이터 전송

프로세스

제어프로세스

데이터 전송

프로세스

216000

a. 서버의 수동 오픈

b. 클라이언트의 능동 오픈

자식 제어프로세스

생성

7000

제어프로세스

데이터 전송

프로세스

제어프로세스

데이터 전송

프로세스

216000

c. 서버의 원 제어 프로세스와 자식 제어 프로세스 상태

자식 제어프로세스

7000

Page 318: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 319: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

6제11장 FTP(File Transfer Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

데이터 연결 설정을 통한 통신

데이터 타입다양한 데이터 타입 설정

ASCII, EBCDIC, IMAGE, LOCAL 타입

TYPE 명령을 통해 변경

데이터 구조파일 구조, 레코드 구조, 페이지 구조

STRU 명령을 통해 변경

전송 모드전송 방식, MODE 명령을 통해 변경

스트림 모드, 블록 모드, 압축 모드

Page 320: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 321: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

의미십진수

Page 322: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

9제11장 FTP(File Transfer Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

FTP 패킷 분석

FTP 제어 연결을 통한 전송

Page 323: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

명령

Page 324: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

11제11장 FTP(File Transfer Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

FTP 패킷 분석

FTP 데이터 연결을 통한 전송

데이터 연결을 통한파일 확인 (test.txt)

Page 325: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 )

Page 326: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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)

Page 327: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

14제11장 FTP(File Transfer Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Guru를 이용한 FTP 패킷 분석

Page 328: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

15제11장 FTP(File Transfer Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

FTP 패킷 캡처 프로그램 작성(FtpViewer)

Page 329: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 메뉴 이용

Page 330: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 331: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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종류#

Page 332: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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종류#

Page 333: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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;}

Page 334: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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)…

}

Page 335: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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)…

Page 336: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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)…

}

Page 337: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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);

Page 338: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

25제11장 FTP(File Transfer Protocol)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

FtpViewer 실행 모습

Page 339: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

명령

Page 340: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

응답 코드

Page 341: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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.

Page 342: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

1

AMAN2002를 이용한

TCP/IP 프로토콜 분석 및 네트워크 프로그래밍

www.nms4you.com

트래픽 발생기

2003. 3.

Chapter 12:

Page 343: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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)프로토콜

Page 344: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

3제12장 트래픽 발생기 (Traffic Generator)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Ping 테스트를 통한 MTU 확인

예제를 통해 211.180.125.1 의 MTU는 1400 ~1500 바이트 사이임을 확인

-f 옵션 : 단편화 하지않고 패킷을 전달

-l 옵션 : 전송할 데이터의 버퍼 사이즈 지정

단편화 하지 않고, 1400 바이트의 데이터 전송 가능

1500바이트 전송 시단편화 필요

Page 345: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

4제12장 트래픽 발생기 (Traffic Generator)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

단편화 (Fragmentation)

IP 헤더의 단편화 관련 필드식별자(Identification) : 16비트

단편화 된 데이터그램은 동일한 식별자를 가짐

플래그(Flag) : 3비트

첫번째 비트 : 사용 안 함

두번째 비트 : 1(단편화 할 수 없음), 0(단편화 가능)

세번째 비트 : 1(단편이 있음), 0(마지막 혹은 단일 단편)

단편 옵셋(Fragmentation offset) : 13비트

단편 조합 시 조각의 위치를 나타냄

데이터그램 8바이트 단위로 측정

Page 346: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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바이트)

Page 347: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

6제12장 트래픽 발생기 (Traffic Generator)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

서버/클라이언트 구조의 이해

클라이언트 : 명시한 기능을 요청

데이터 전송 혹은 다양한 기능 수행을 요청

서버 : 클라이언트에 의해 명시된 기능을 수행하고 응답

데이터 전송 혹은 다양한 기능에 대한 응답

웹서버

웹서버

웹클라이언트 - 요청(인터넷 브라우저)

2. 요청

3. 응답

1. 요청

4. 응답

S : 서버(Server)C : 클라이언트(Client)

C

S

S

C

Page 348: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 클라이언트 서버

Page 349: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 350: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

9제12장 트래픽 발생기 (Traffic Generator)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

트래픽 발생기

트래픽 생성 및 원하는 양의 데이터 전송

트래픽 발생기의 필요성QoS(Quality of Service) 측정

복잡하고 다양한 네트워크를 연구 시 실험용

트래픽 발생기의 용도통신망 관리 시스템 제작 시

현재 망의 분석 시

망의 대역폭 확인 시

다양한 속도의 데이터 전송 시

Page 351: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 수의 합

Page 352: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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바이트)

Page 353: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

12제12장 트래픽 발생기 (Traffic Generator)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

트래픽 발생기 프로그램 작성

Page 354: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

13제12장 트래픽 발생기 (Traffic Generator)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

트래픽 발생기 작성

다이얼로그 기반의 프로젝트 생성

헤더파일 경로 : C:\AMAN2002\include라이브러리 파일 경로 : C:\AMAN2002\libNmtgen 라이브러리 모듈 추가 : nmtgend.lib

Page 355: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 356: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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종류#

Page 357: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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종류#

Page 358: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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()

Page 359: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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();}

Page 360: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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;}

Page 361: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

20제12장 트래픽 발생기 (Traffic Generator)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

전송 종료 및 프로그램 종료

데이터 전송 종료void CTGenDlg::OnBUTTONSendStop(){

m_pNmtGen->SendStop();}

프로그램 종료void CTGenDlg::OnOK() {

delete m_pNmtGen;CDialog::OnOK();

}

Page 362: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

21제12장 트래픽 발생기 (Traffic Generator)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

트래픽 수신기 프로그램 작성

다이얼로그 기반의 프로젝트 생성

헤더파일 경로 : C:\AMAN2002\include라이브러리 파일 경로 : C:\AMAN2002\libNmtrcv 라이브러리 모듈 추가 : nmtrcvd.lib

Page 363: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

22제12장 트래픽 발생기 (Traffic Generator)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

대화상자 디자인

TRcv 메인 대화상자 디자인

1 List Control

2

3

4

5

Edit Box

Button

Page 364: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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종류#

Page 365: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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종류#

Page 366: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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()

Page 367: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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);

}

Page 368: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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;}

Page 369: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

28제12장 트래픽 발생기 (Traffic Generator)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

TGen과 TRcv 실행 모습

목적지 211.180.125.117 시스템의 포트 6001번으로 데이터 전송

초당 1000Kbps의 데이터 전송

Page 370: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 미만임을 확인

Page 371: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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.

Page 372: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

1

AMAN2002를 이용한

TCP/IP 프로토콜 분석 및 네트워크 프로그래밍

www.nms4you.com

AMAN2002 추가 기능 실습

2003. 3.

Chapter 13:

Page 373: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 374: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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)

Page 375: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

4제13장 AMAN2002 추가 기능 실습

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Guru의 실행 (1)

네트워크로부터 패킷 캡처

Page 376: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

5제13장 AMAN2002 추가 기능 실습

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Guru의 실행 (2)

디스크에 저장된 패킷 캡처

Page 377: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

6제13장 AMAN2002 추가 기능 실습

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Guru를 이용한 계층별 프로토콜 헤더 분석

선택된 패킷의 계층별 프로토콜 헤더입력 시트를 선택가능

Page 378: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

7제13장 AMAN2002 추가 기능 실습

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

IP 데이터그램 헤더 분석

①3계층 (IPv4) 탭 선택

이더넷 14바이트

②IP 데이터그램 시작 위치 확인

③필드의 십진수 값 입력십진수 변환은 EzTrans 이용

④입력 값 확인

Page 379: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

8제13장 AMAN2002 추가 기능 실습

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

AMAN2002 EzTrans

10진수와 16진수 데이터의 상호 변환

Guru의 테스트 시트 작성시 사용하면 편리함

EzTrans 실행 과정16진수 → 10진수

① 시작상태 : 16진수 라디오 버튼을 선택

② 입 력 : 에디트 박스에 16진수 값 입력(붙여넣기)

③ 변 환 : 10진수 라디오 버튼 누름

④ 역 변환 : 16진수 라디오 버튼을 누르면 입력한 값으로 역 변환

⑤ 새 입력 : 에디트 박스 클리어, 16진수 라디오 버튼 선택됨

Page 380: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

9제13장 AMAN2002 추가 기능 실습

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

EzTrans 실행 방법

10진수 → 16진수

① 시작 상태10진수 라디오 버튼 클릭

② 입력에디트 박스에 변환할 10진수 값입력 혹은 붙여넣기

③ 변 환16진수로 변환하기 위해 16진수라디오 버튼을 클릭

④ 새 입력초기화 상태가 됨, 에디트 박스가클리어되고, 16진수 라디오버튼 선택

CLICK!

Page 381: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

10제13장 AMAN2002 추가 기능 실습

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

AMAN2002 WinPing

네트워크의 연결 검사 및 진단출발지 시스템에서 목적지 시스템까지 ICMP Echo 응답메시지를 받는데 걸린 시간을 측정

설정 가능한 옵션Ping Buffer Size : ping 메시지에 실어 보낼 버퍼의 사이즈 조정

Ping Timeout : ping 패킷에 대한 송신, 수신 타임아웃을 조정

Max Hops : ping에 대한 최대 홉 수 조정

Page 382: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

11제13장 AMAN2002 추가 기능 실습

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

WinPing의 실행

목적지 호스트로부터ICMP Echo 응답메시지를받는데 걸린 시간

실행 방법① 목적지 호스트 주소를 입력

② 속성 설정 창에서 ping 옵션을 설정

③ 시작 버튼을 누름

Page 383: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

12제13장 AMAN2002 추가 기능 실습

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

AMAN2002 WinTraceroute

목적 호스트까지 네트워크가 연결된 구성정보 확인

출발 호스트에서 목적호스트까지 인터넷을 통해 특정패킷이 목적지 호스트에 도달하는 경로 추적

인터넷 상의 문제점이 있는 네트워크 확인

Page 384: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

13제13장 AMAN2002 추가 기능 실습

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

WinTraceroute의 실행

목적지 호스트 주소를 입력하고 시작버튼을 누름Host Name을 확인하기 위해 ‘Name 표시’를 체크

• Delay게이트웨이로부터 패킷을받았다는 ICMP 메시지가되돌아오기까지의 시간

• IP Address게이트웨이의 IP 주소

Page 385: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

14제13장 AMAN2002 추가 기능 실습

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

WinTraceroute의 Whois 정보 확인

선택

• WhoIs 정보 - 도메인 이름으로부터 이용자나 통신망에 대한 정보를 포함함

Page 386: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

15제13장 AMAN2002 추가 기능 실습

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

AMAN2002 Traffic Tester

Traffic Generator현재 망의 분석을 위해 임의의 트래픽을 발생시켜 전송함

전송 데이터

UDP를 기반으로 한 IP 데이터그램

일정한 시간 간격으로 전송

동일한 데이터를 전송

Traffic ReceiverTraffic Generator에서 전송한 데이터를 수신하여 Traffic Generator가 데이터를 정확히 전송하고 있는지 확인

UDP 프로토콜을 사용하여 송신 시 송신측에서 데이터가 정확히 전송되었는지 확인 불가능하므로 수신측에서 확인

Page 387: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

16제13장 AMAN2002 추가 기능 실습

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Traffic Generator

다양한 실험을 위해 데이터 전송 시 설정하는 항목

목적지 주소전송 데이터를 수신할 Traffic Receiver가 동작하는 시스템의 IP 주소

전송 포트 번호Traffic Generator가 데이터를 전송할 때 사용하는 포트

전송 속도데이터의 전송속도로 64Kbps가 기본값

Best-effort(0Kbps) 전송 가능

Page 388: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

17제13장 AMAN2002 추가 기능 실습

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Traffic Generator 실행

전송 결과 확인전송률

초당 전송하는 데이터량을 출력

경과시간

전송 시작 지점부터 누적된

시간 정보를 초단위로 출력

패킷 사이즈

한번에 전송하는 패킷의

크기정보 출력

Page 389: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

18제13장 AMAN2002 추가 기능 실습

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Traffic Receiver 실행

설정 가능한 항목

수신 포트 번호, 기본값 6001번

전송 결과 확인

그래프데이터 수신량을 그래프로 확인

수치 데이터전송률

초당 수신하는 데이터량을 출력

경과시간

Traffic Receiver의 수신 누적 시간

패킷 사이즈

한번에 수신하는 패킷의 크기 정보

Page 390: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

19제13장 AMAN2002 추가 기능 실습

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

AMAN2002 CSMA/CD Simulator

이더넷에서 사용되는 CSMA/CD 방식의 이해를 돕기위한 시뮬레이터

CSMA/CD 방식에서 프레임의 이동 및 상태변화를 시각적으로 확인

사용방법노드 생성

노드의 오프셋 위치 입력 후 노드추가 버튼 누름

노드의 프레임 생성프레임을 발생시킬 노드를 클릭함

프레임의 상태 변화 관찰

초기화현재 상태를 종료하고 처음의 상태로 되돌림

Page 391: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

20제13장 AMAN2002 추가 기능 실습

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

CSMA/CD Simulator 실행

2000m

오프셋 입력 후‘노드추가’버튼 클릭

노드 생성 및 추가

Page 392: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

21제13장 AMAN2002 추가 기능 실습

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

CSMA/CD Simulator 실행

프레임 생성 및 시뮬레이션

프레임을 생성할 노드를 클릭!

Page 393: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 394: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

23제13장 AMAN2002 추가 기능 실습

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Error/Flow Control Simulator 사용법

오류 제어 방식, 오류 발생 방식 선택

Window의 크기 설정Window의 크기?

수신지의 확인(ACK) 응답이 없더라도 전송할 수 있는최대 패킷의 크기

시뮬레이션 속도 설정Delay 설정 슬라이드 바 사용

시뮬레이션의 중단초기화 버튼을 누름

느림빠름

<시뮬레이션 속도 설정>

Page 395: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

24제13장 AMAN2002 추가 기능 실습

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

Error/Flow Control Simulator 실행

오류제어 방식 : Go-back-N

오류발생 방식 : With Lost ACK

Window 크기 : 4

Page 396: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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.

Page 397: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 참고)

Page 398: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 399: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

헤더길이

목적지 주소

근원지 주소

체크 섬프로토콜수명

플래그 / 단편옵셋식별자

전체길이서비스유형버전입력

Page 400: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

※ 각 필드의 의미를 분석하시오.

Page 401: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

체크 섬코드타입

Page 402: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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진수로 표현하시오.

Page 403: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 시간초과메시지전송

요청한

호스트

Page 404: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 이다.근원지 포트번호

설명필드 명

Page 405: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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 바이트이다.

윈도우 크기

설명필드 명

Page 406: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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를사용한다.

근원지 포트번호

설명필드 명

Page 407: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

(요청 라인/ 상태 라인)

헤더(일반헤더? 요청/응답헤더? 엔터티헤더?)

본문 (유? 무?)

공백 라인?

Page 408: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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)이 나오므로 본문 내용이 없음

Page 409: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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

Page 410: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

1제12장 트래픽 발생기 (Traffic Generator)

AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www.nms4you.com

연습 문제 풀이

사용하는 시스템이 속한 네트워크의 MTU 확인

시스템이 속한 네트워크의 MTU는 1400 이상 1500 이하임

네트워크로 1400 바이트 전송단편화 되지 않음

네트워크로 1500 바이트 전송단편화 됨

Page 411: Chapter 1: OSI 참조모델과TCP/IPchojs/books/networking/OSI_TCPIP.pdf · 2005-09-09 · AMAN2002를이용한TCP/IP 프로토콜분석및네트워크프로그래밍 TCP/IP 프로토콜집합

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개의 단편으로 구분됨