IP (Internet Protocol)

Slides:



Advertisements
Similar presentations
Copyright© 2005 DASAN Networks, Inc. V61XXF NOV
Advertisements

AMAN2002 를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍 www. nms4you.com 1 AMAN2002 추가 기능 실습 Chapter 13:
HTTP (Hypertext Transfer Protocol)
멀티미디어 서비스를 위한 IP 네트워크 순천향대학교 정보기술공학부 이 상 정
12장. Raw 소켓 Raw 소켓의 특징과 사용 방법을 익힌다. Ping 프로그램의 동작 원리를 이해하고 작성 방법을 익힌다.
Chapter 7 ARP and RARP.
TCP/IP 통신망 특론 3장 인터넷프로토콜( IP ).
Internet Protocol Version4
Chapter 8 Authorization
Chapter 4: 이더넷 (Ethernet)
제 13 장 인터넷 그룹 관리 프로토콜.
컴퓨터 네트워크 Chapter 5-2 컴퓨터 네트워크.
Next Generation: IPv6 and ICMPv6
TCP/IP Network Experimental Programming [IPv6에 의한 통신 실험]
암호화 기술(SSL, IPSec) 손재성 권기읍 안복선 최준혁
다이얼로그 박스와 컨트롤 컴퓨터 계측 및 실습.
IPsec 석진선.
Lab 3 Guide: 교재 4장 대화상자 예제. - 프로파일 입력 ( 쪽)
연습 문제 풀이 E BF F8 85 A5 E5 9B 37 A5 E5 9B FF 버전 헤더길이 서비스유형 전체길이
제 1장 인터네트워킹.
Network Security - Wired Sniffing 실습
Dept. of Computer Engineering, Hannam Univ. Won Goo Lee
Computer Communications LAB.,
IP addressing - 2 진수 (10진수) | (2진수)
20 장 네트워크층 프로토콜 : ARP, IPv4, ICMP, IPv6, ICMPv6
Internet Group Management Protocol (IGMP)
Internet Control Message Protocol (ICMP)
Network 네트워크 이론 및 실습 TCP / IP 4장.
PART 01 개념 컴퓨터 네트워크 Chapter 3 OSI 참조모델과 인터넷 임효택.
10. About TCP / IP SPARCS 08 우성필.
FTP (File Transfer Protocol)
Chapter 02 네트워크에 대한 이해.
Network Lab. Seoung Hyeon, Lee
Chapter 11. Raw 소켓.
(Next Generation Internet Protocol)
Traceroute 기능 분석 및 프로그래밍
Chapter 3: AMAN 2002 구성 및 사용법
S N M P (Simple Network Management System).
UDP (User Datagram Protocol)
Socket Address Structure and Byte Ordering Functions
Access Control Lists Access Control List
Socket Address Structure and Byte Ordering Functions
PART 01 개념 컴퓨터 네트워크 Chapter 3 OSI 참조모델과 인터넷 임효택.
Chapter 13 사용자 네트워크 보안.
DHCP 박윤환 윤준호.
TCP/IP 통신망 특론 2장 Link Layer 컴퓨터 네트워크 실험실 이희규.
IP(Internet Protocol)
9장 데이터링크층 소개 (Introduction To Data-Link Layer)
TCP/IP 인터네트워킹 INTERNETWORKING with TCP/IP <vol
제 24 장 그 밖의 TCP 기능과 성능 정보통신연구실.
IPv 이 동 주 HONGIK UNIVERSITY.
Inje Univ. Network Team2 Jung Chang Hwan
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
School of Electronics and Information. Kyung Hee University.
User Datagram Protocol (UDP)
TCP/IP 네트워크 구조 TCP/IP 개요 TCP/IP 프로토콜 한빛미디어(주).
Internet Protocol Objectives Chapter 8
팀 프로젝트 [데이터통신] 김진억 성보라 문제명 박상민 이혜영.
초기화면 인터넷의 이해 Ⅳ. 컴퓨터와 생활> 2. 인터넷의 활용> 기술·가정 2학년 2학기
8 네트워크 계층 프로토콜 학습 목표 IPv6의 필요성과 헤더 구조를 이해한다. 이동 IP 프로토콜의 터널링 원리를 이해한다.
Internet & WWW Protocols
제 11장 User Datagram Protocol(UDP)
Part TCP / IP 1. TCP / IP 프로토콜 2. 기본 프로토콜.
Chapter 17 BOOTP and DHCP.
Information Security - Sniffing 실습.
연습 문제 풀이 1 송신측 MAC 주소 수신측 MAC 주소 상위 계층 프로토콜 종류
Chapter 03. 소켓 주소 구조체 다루기.
소켓의 생성과 프로토콜의 설정 School of Electronics and Information.
IPv 이 동 주.
6. 오류 보고 체계 (ICMP) (6장. 인터넷과 IP)
Presentation transcript:

IP (Internet Protocol) Chapter 5: IP (Internet Protocol) 2003. 4.

인터넷 프로토콜 기능 특징 TCP/IP 프로토콜에서 사용하는 전송 메커니즘 무결성 보장 않음. 순서 보장 않음. 비연결형 프로토콜 (가상회선 설정 않음)

IP 데이터그램 IP 데이터그램의 구조 서비스유형 전체길이 식별자 단편옵셋 수명 프로토콜 체크 섬 근원지 주소 목적지 주소 0 7 8 15 16 31 버전 (4비트) 헤더길이 서비스유형 전체길이 식별자 플래그 (3비트) 단편옵셋 수명 프로토콜 체크 섬 근원지 주소 목적지 주소 옵션 (0~40바이트) 20바이트

IP 데이터그램의 구조 (1) 버전 (version) 헤더길이 (Header length) ex) 20 byte 헤더는 5로 표현. 서비스 유형 (Type of Service) 데이터그램의 우선순위, 처리방법을 나타냄, <표 5.1> 참고 Precedence (우선순위): 0 보통 ~ 7 최우선 <RFC 1349 definition> D: Minimize Delay T: Maximize Throughput R: Maximize Reliability C: Minimize Cost 모든 비트 0 이면 Normal. 마지막 비트는 항상 0. D T R C Type of Service: 처리 방법

Precedence Precedence RFC 791 definition 0 (000) Routine (Normal) 1 (001) Priority 2 (010) Immediate 3 (011) Flash 4 (100) Flash Override 5 (101) Critical 6 (110) Internetwork Control 7 (111) Network Control

IP 데이터그램의 구조 (2) 전체길이 (Total Packet Length) 식별자 (Fragment Identifier) IP 헤더를 포함한 전체 IP 패킷의 Byte단위 길이 IP 패킷의 최소 길이는 21byte (20byte 헤더 + 1byte 데이터) IP 패킷의 최대 길이는 65,535 byte (216 -1) 식별자 (Fragment Identifier) IP가 단편화 될 때 단편들을 식별하기 위한 번호 단편화된 IP 패킷들을 재조립할 때 사용 플래그 (Fragmentation Flags) 단편화 여부, 조각이 단편의 첫번째 조각인지, 중간 혹은 마지막 조각인지를 구분, 단편 방지 등 단편화 제어. 단편 옵셋 (Fragmentation Offset) 조각난 단편들의 원래 IP 데이터그램에서의 위치정보를 나타내는 포인터. 재조립 시에 단편의 순서를 맞추기 위해 사용.

Flag and Offset DF MF 첫 비트는 항상 0. DF: Do not Fragment, 0: 단편화 가능, 1: 단편화 금지 MF: More Fragment, 0: 마지막 단편(혹은 단편화되지 않았음), 1: 뒤에 단편이 더 있음. Fragmentation Flag: 단편화 제어 DF MF Fragmentation Offset: 재조립 순서 정보

IP 데이터그램의 구조 (3) 수명 (Time-to-Live) 프로토콜 (Protocol Identifier) 데이터그램이 폐기되기 전 인터넷에서 얼마나 생존할 수 있는지를 지시하는 값 (최소 1, 최대 28-1= 255 값 지정). 라우터를 통과할 때 마다 1씩 감소, 0이되면 폐기. 프로토콜 (Protocol Identifier) IP 데이터그램이 싣고 가는 데이터의 종류 AMAN2002 온라인 도움말의 Protocol Type 부록 참조. 예) ICMP:1, TCP:6, UDP:17 체크 섬 (Header Checksum) 전송 도중 IP 헤더의 손상여부를 확인. 라우터에서 IP 헤더의 일부분이 변경될 때 마다 다시 계산된다.

IP 데이터그램의 구조 (4) 근원지 주소 (Source IP Address) 보내는 편의 IP 주소. (데이터 그램을 생성한 시스템의 IP 주소) 목적지 주소 (Destination IP Address) IP 데이터그램의 최종 목적지 주소 옵션 (Options) 경로설정, 타이밍, 관리, 정렬 등의 부수적인 기능처리 IP 헤더 길이가 20Byte를 초과하게되는 유일한 이유. Padding Option이 사용되어 헤더가 4Byte단위가 안되면 Padding을 붙여 4Byte 단위로 맞춤. (참고: Header Length 필드는 4Byte단위 크기)

이더넷 프레임에 포함된 IP 데이터그램 Preamble S F D Destination Address Source Type DATA FCS 7byte 1byte 6byte 2byte 46-1500byte 4byte Ethernet Header IP 헤더 데이터

IP 주소 IP 주소의 구성 네트워크 ID 호스트 ID 네트워크를 구분 네트워크 상에 존재하는 컴퓨터들을 구분 네트워크 ID

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 0 8 15 23 31 net ID (7) host ID (24) A class 1개 = 16,777,216개 IP 1 net ID (14) host ID (16) B class 1개 = 65,536개 IP 1 net ID (21) host ID (8) C class 1개 = 256개 IP

IP 데이터그램 분석

IP 데이터그램 분석 (1/5) 45 00 00 30 00 00 40 00 33 06 C7 F4 D3 E9 1C 70 D2 62 BD 17 0 7 8 15 16 31 버전 4 헤더길이 5 서비스유형 00 전체길이 00 30 식별자 00 00 플래그 / 단편옵셋 40 00 (0100 0000 0000 0000) 수명 33 프로토콜 06 체크 섬 C7 F4 근원지 주소 D3 E9 1C 70 목적지 주소 D2 62 BD 17 ※ 16진수로 표기함

Minimize monetary cost IP 데이터그램 분석 (2/5) 버전 0x4  IP 데이터그램 버전 4를 사용 헤더길이 0x5  5 x 4 = 20, 헤더길이는 20 바이트임 서비스 유형 0x0  최소지연, 최대 처리율, 최대 신뢰성, 최소비용 모두 요구하지 않음, 기본 서비스 유형임 0 1 2 3 4 5 6 7 서비스 유형 Minimize delay Maximize throughput Maximize reliability Minimize monetary cost 0x00 0x02 1 0x04 0x08 0x10

IP 데이터그램 분석 (3/5) 전체 길이 0x30  IP 데이터그램의 전체길이는 48 바이트임 동일한 식별자 값이 부여됨 플래그/단편옵셋 플래그  단편화 되지 않은 유일한 단편임 단편옵셋  0이므로 단편화 되지 않았거나 단편화 되었을 때 첫번째 단편임 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 More Fragment 0 → 마지막 단편이거나 유일한 단편임 1 → 마지막 단편 아님 Do Not Fragment 1 → 단편화 금지, 0 → 단편화 가능

IP 데이터그램 분석 (4/5) 수명 0x33  51개의 라우터를 거친 후 폐기됨 프로토콜 0x06  IP 데이터그램은 상위 TCP 프로토콜에 전달됨 교재, TCP/IP 프로토콜 분석 및 네트워크 프로그래밍, 부록 4 Protocol Numbers 참고 AMAN2002 Online Help의 “Protocol Type” 참조

IP 데이터그램 분석 (5/5) 체크 섬 0xC7F4  전송 중 데이터그램의 오류 검사 목적지에서 다시 체크 섬을 계산하여 전송시의 체크 섬과 다르면 폐기함 근원지 주소 0xD3 E9 1C 70  211.233.28.112 목적지 주소 0xD2 62 BD 17  210.98.189.23

연습문제 45 00 00 4E BF 17 00 00 80 11 F8 85 A5 E5 9B 37 A5 E5 9B FF 버전 헤더길이 서비스유형 전체길이 식별자 플래그 / 단편옵셋 수명 프로토콜 체크섬 근원지 주소 목적지 주소 입력 

연습문제 버전  헤더길이  서비스 유형  전체 길이  식별자  플래그  단편옵셋  수명  프로토콜  ※ 각 필드의 의미를 분석하시오. 버전  헤더길이  서비스 유형  전체 길이  식별자  플래그  단편옵셋  수명  프로토콜  체크 섬  근원지 주소  목적지 주소 

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

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

대화상자 디자인 List Control 1 Group Box 2 Static Text 3 ~ 14 Edit Box 15~29 30 Static Text 31, 33 Edit Box 32, 34 Button 35~37

Control 속성 # 종류 ID 속성 변수이름 1 List Control IDC_LIST_PacketInfo View: Report m_ListIPPacketInfo 15 Edit Box IDC_EDIT_IP_Ver Read-only m_strIpVer 16 IDC_EDIT_IP_HLen m_strIpHLen 17 IDC_EDIT_IP_Tos m_strIpTos 18 IDC_EDIT_IP_ToLen m_strIpToLen 19 IDC_EDIT_IP_Iden m_strIpIden 20 IDC_EDIT_IP_DF_flag m_strIpFlagDF 21 IDC_EDIT_IP_MF_flag m_strIpFlagMF 22 IDC_EDIT_IP_RF_flag m_strIpFlagRF 23 IDC_EDIT_IP_FragOff m_strIpFragOff 24 IDC_EDIT_IP_Ttl m_strIpTtl

Control 속성 # 종류 ID 속성 변수이름 25 Edit Box IDC_EDIT_IP_Proto Read-only m_strIpProto 26 IDC_EDIT_IP_Checksum m_strIpChecksum 27 IDC_EDIT_IP_SrcAddr m_strIpSrcAddr 28 IDC_EDIT_IP_DestAddr m_strIpDestAddr 29 IDC_EDIT_IP_Opt m_strIpOpt 32 IDC_EDIT_CountInput m_iCountInput 34 IDC_EDIT_CountOutput m_iCountOutput 35 Button IDC_BUTTON_StartCapture . 36 IDCANCEL Default Button 37 IDC_BUTTON_INFORM

이벤트 처리 # 종류 ID 메시지 함수명 1 List Control IDC_LIST_PacketInfo NM_CLICK OnClickLIST() 35 Button IDC_BUTTON_StartCapture BN_CLICKED OnBUTTONStartCapture() 36 IDCANCEL OnCancel() 37 IDC_BUTTON_INFORM OnButtonInform()

어뎁터 오픈 대화상자 표시 void CIPViewerDlg::OnBUTTONSelectAdaptor() { //Ncap lib.(Dialog based class lib.) 객체 생성. CSelectAdaptorDlg *pDlg = new CSelectAdaptorDlg; if(pDlg->DoModal() != IDOK) delete pDlg; return; } …

어뎁터 열기 //선택된 네트워크 어뎁터를 사용할 수 있도록 초기화. if(pDlg->OpenAdaptor(1)) { ::AfxMessageBox("Adaptor open 실패"); pDlg->CloseAdaptor(); delete pDlg; return; }

패킷 캡처 #define MaxBufferLen 2048 UpdateData(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; //패킷 분석 … }

패킷 분석 (1/7) // 패킷 분석시에 사용하는 이더넷 헤더 “C:\AMAN2002\include\ProtocolHeader.h” // 패킷 분석시에 사용하는 이더넷 헤더 // Ethernet Header (14 바이트) - IEEE Standard for Information technology struct t_EtherHeader { u_char eth_dst[6]; // Destination Address Field, 48bits u_char eth_src[6]; // Source Address Field, 48bits u_short eth_type; // Type Field, 16bits char eth_data[1]; // MAC Client Data };

패킷 분석 (2/7) struct t_IPHeader // IP header (최소 20 바이트) - RFC 791 { “C:\AMAN2002\include\ProtocolHeader.h” 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 0x1fff u_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 };

패킷 분석 (3/7) … // 획득한 패킷의 시작 주소를 t_EtherHeader 구조체 주소로 대입 List Control 에 패킷 헤더 정보 표시 // 획득한 패킷의 시작 주소를 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); …

패킷 분석 (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)); . . .

패킷 분석 (5/7) Edit Box에 10진수로 패킷 헤더 필드 표시 (List Control의 항목 클릭) //식별자 m_strIpIden.Format("%d ", htons(m_tIPHeader[nItem].ip_id)); //플래그 - RF iTemp = htons(m_tIPHeader[nItem].ip_off) & IP_RF; iTemp >>= 15; m_strIpFlagRF.Format("%d", iTemp); //플래그 - DF iTemp = htons(m_tIPHeader[nItem].ip_off) & IP_DF; iTemp >>= 14; m_strIpFlagDF.Format("%d", iTemp); //플래그 - MF iTemp = htons(m_tIPHeader[nItem].ip_off) & IP_MF; iTemp >>= 13; m_strIpFlagMF.Format("%d", iTemp); . . .

패킷 분석 (6/7) Edit Box에 10진수로 패킷 헤더 필드 표시 (List Control의 항목 클릭) //단편옵셋 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)); . . .

패킷 분석 (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;

어뎁터 닫기 //사용한 자원 해제. pDlg->CloseAdaptor(); //Ncap lib. 삭제. delete pDlg;

IPViewer 실행 화면 (1)

IPViewer 실행 화면 (2) click

IPViewer를 이용한 이더넷 프레임 분석 헤더길이  헤더길이는 20바이트 이므로 옵션을 사용하지 않음 서비스 유형  0으로 기본 서비스 유형임 전체 길이  데이터그램의 전체길이는 56 바이트임 식별자  단편의 ID는 47172임

IPViewer를 이용한 이더넷 프레임 분석 플래그  do not fragment비트가 0 이므로 단편화되었고, more fragment 비트가 0이므로 마지막 단편이거나 유일한 단편임 단편옵셋  0 이므로 첫번째 단편임 수명  128개의 라우터를 거친 뒤에 폐기됨 프로토콜  데이터에서 UDP 프로토콜을 캡슐화 함 체크 섬  송신지에서 계산한 체크 섬은 0 임 근원지 주소  데이터그램의 송신지 주소는 210.98.189.23 목적지 주소  데이터그램의 수신지 주소는 211.115.205.131

참고 문헌 서승호 외, 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 1989 Eric A. Hall, Internet Core Protocols, O’Reilly, 1999.