본문 바로가기

Learning/└◆Security Section

[네트워크 이론] 인터넷 계층(Internet Layer)

 

 

 

9

인터넷 계층(Internet Layer)

 

 

인터넷 계층의 중요한 기능은 네트워크 통신을 위해 데이터그램을 잘 전송할수 있도록 하기 위해 라우팅 정보를 담는것이다.

또한 MTU 단위로 데이터 그램을 쪼개거나 쪼개진 패킷을 재조합하는 기능을 가진다.

인터넷 계층의 프로토콜은 ARP, RARP, IP(IPv4,IPv6), ICMP, IGMP가 존재한다.

하지만 이 단원에서는 IP, ICMP에 관해서만 다룬다.

 

 

(1). IP 프로토콜(Internet Protocol)

인터넷상에서 라우팅을 효율적으로 하기 위하여 물리적인 네트웍 주소와 일치하는 개념으로 부여된 32 비트의 주소가 IP 주소이다.

IP 주소를 이용하면 네트웍상의 유일한 호스트를 식별하는 것뿐만 아니라, 호스트가 있는 네트웍를 식별할 수 있다.

IP 주소는 클래스로 나뉘어 있으며 하나의 네트웍에서 모든 호스트는 동일한 prefix를 공유한다.

다음은 ifconfig 명령어를 사용하여 IP를 확인하는 예이다. IP와 관련한 값인 넷마스크(Netmask)와 브로드캐스트(Broadcast)주소도 확인 할 수 있다.

 

# ifconfig eth0

eth0    Link encap:Ethernet HWaddr 00:0C:29:05:B8:34

inet addr:192.168.20.200 Bcast:192.168.20.255 Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:65025 errors:0 dropped:0 overruns:0 frame:0

TX packets:6822 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:77595227 (74.0 MiB) TX bytes:473577 (462.4 KiB)

Interrupt:67 Base address:0x2024

 

 

 

(2). ICMP(Internet Control Messages Protocol)

ICMP는 호스트 서버와 인터넷 게이트웨이 사이에서 메시지를 제어하고 에러를 알려주는 프로토콜로서 RFC 792에 정의되어있다.

ICMPIP 데이터그램을 사용하지만, 메시지는 TCP/IP 소프트웨어에 의해 처리되며, 응용프로그램 사용자에게 직접 분명하게 보이지는 않는다.

일례로서, ping 명령어는 인터넷 접속을 테스트하기 위해 ICMP를 사용한다.

 

- IP 프로토콜은 신뢰성이 없고 비연결형 프로토콜 이며 에러 발생원이나 진단 기능 및 상황정보를 지원하지 않는다

- ICMP 프로콜 Support(IP프로토콜의 단점을 보완 한다)

 

ICMP 프로토콜을 사용하는 대표적인 명령어

ping CMD(Packet INternet Groper)

traceroute CMD

 

ICMP Message Type

오류보고 메시지(Error Reporting Messages)

Type 3 : 목적지 도달 불가

Type 4 : 발신지 억제

Type 5 : 경로 재지정

Type 11: 시간 초과

Type 12: 매개변수 문제

 

질의 메시지(Query Messages)

Type 8 : Echo Request

Type 0 : Echo Reply

Type 9 : Router 광고

Type 10: Router 요청

Type 13: Timestamp Request

Type 14: Timestamp Reply

Type 15: IP 정보 요구(구형)

Type 16: IP 정보 응답(구형)

Type 17: 주소마스크 요구

Type 18: 주소마스크 응답

 

http://www.iana.org/assignments/icmp-parameters/icmp-parameters.xml

Type 자세한 정보

 

(3) ICMP 헤더 분석

ICMP -> IP -> eth Header (인캡슐레이션 과정)

 

 

 

 

 

  코드는 종류가 없기 때문에 0

 

 

   

 

[실습] ICMP 패킷을 캡쳐하고 분석

 

ICMP 패킷을 캡쳐하고 분석하기.hwp

 

 

 

 

[실습] visualroute(www.visualroute.com)사용하기

 

visualroute사용하기.hwp

 

 

[참고] ICMP(RFC 792)

- http://www.ietf.org/rfc/rfc0792.txt

 

 

 

 

[실습] IP 헤더 분석을 캡쳐하고 분석

-> ICMP Echo Request 패킷을 가지고 작업한다.

 

[참고] IP Header 해석

Version(4 bits)

IPv4 -> 4, IPv6 -> 6

IANA 버전 관리 - Version Numbers

 

IP Header Length(4 bits)

IP 헤더의 길이는 20 bytes ~ 60bytes 이다.

 

Type Of Service(8 bits)

IP Datagram이 라우터에서 어떻게 처리되어야 하는지를 정의

요구되는 서비스 품질을 나타냄, 현재 대부분의 시스템에서는 이 필드를 무시.

OSPF는 이 값을 바탕으로 경로 선택이 가능하게 함.

() TOS(Type Of Service)

-------------------------------------------------

IP:       ...0 .... = normal delay

IP:       .... 0... = normal throughput

IP:       .... .0.. = normal reliability

IP:       .... ..0. = not ECN capable transport

-------------------------------------------------

 

------------------------------------------------

Priability - Current, Not used

Delay      - 1 : Minimum delay (최소 지연)

Throughput - 1 : Maximum throughput (최대 처리율)

Reliablity - 1 : Maximum reliablity (최대 신뢰성)

Transport  - 1 : Mimimum cost (최소 비용)

congestion experienced - Current, Not used

------------------------------------------------

 

() TOS(Type Of Service) 필드 권장

--------------------------------------------------------------------------------

Application         Min Delay      Max Throughput     Max Reliablity    Max Cost

--------------------------------------------------------------------------------

telnet/rlogin            1                 0                 0              0

--------------------------------------------------------------------------------

FTP Control              1                 0                 0              0

    Data                 0                                 0              0

    Big Data             0                 1                 0              0

--------------------------------------------------------------------------------

TFTP                     1                 0                 0              0

--------------------------------------------------------------------------------

SMTP Command Phase       1                 0                 0              0

     Data Phase          0                 1                 0              0

--------------------------------------------------------------------------------

DNS UDP lookup           1                 0                 0              0

    TCP lookup           0                 0                 0              0

    Zone Transmission    0                 1                 0              0

--------------------------------------------------------------------------------

ICMP Error               0                 0                 0              0

     Searching           0                 0                 0              0

--------------------------------------------------------------------------------

SNMP                     0                 0                 1              0

BOOTP                    0                 0                 0              0

NNTP                     0                 0                 0              1

--------------------------------------------------------------------------------

 

전체길이(Total Length, 16 bits)

IP 헤더와 IP 데이터를 포함한 패킷의 전체 길이(: 84bytes)

최대값은 65,535(2^16 -1)

 

분할 식별자(Fragement Identification, 16 bits)

데이터그램의 분할과 재조립을 위해서 사용된다.

각 조각이 동일한 데이터그램에 속하며 같은 일련번호를 공유한다.

 

분할 플래그(Fragmentation Flag, 3 bits)

분할 여부를 식별할 때 사용한다.

3비트 필드 - 첫 비트는 사용하지 않고, 따라서 항상 0- 두번째 비트1이면 분할 불가능, 0이면 분할 가능을 나타낸다. 1로 세팅되면 목적지 컴퓨터가 조각들을 다시 모을 능력이 없기 때문에 라우터로 하여금 데이터그램을 단편화하지 말라는 뜻이고 0으로 세팅되면 라우터에서 분열(조각,단편)이 가능함을 뜻한다.- 세번째 비트1이면 마지막 조각이 아니고 0이면 마지막 조각임을 나타냄. 현재 조각이 마지막이면 0이고, 더 많은 조각이 뒤에 계속 있으면 1이다.

 

분할 옵션(Fregmentation Offset, 3 bits)

조각나기 전 원래의 데이터그램의 8 바이트 단위의 위치이다.

최초 분열 조각으로부터 어떤 곳에 붙여야 하는 위치를 나타낸다.

분할 데이터그램 중 데이터그램의 시작 번호를 명시한다.

 

() 4000Bytes 데이터를 MSS 값이 1480Bytes인 데이터그램의 분할.

               ----------------------------------------

               Identification = 24058

               IP:     Flags = 0x4

               IP:           .1.. .... = do not fragment

               IP:           ..0. .... = last fragment

               IP:     Fragment offset = 0 bytes

               ----------------------------------------

 

 

 

TTL(Time to Live, 8 bits)

IP Datagram이 네트워크상에서 살아 있을 수 있는 시간을 정의하는 필드이다.

라인상에 체류할 수 있는 시간을 홉카운트(Hop Count)로 나타내는 필드이다.

라우터를 지날 때마다 1씩 감소하고 0이면 페기한다.

A--R-R--B = Hopcount 2 (거리를 나타내는 단위)

         

프로토콜(Protocol Identifier, 8 bits)

IP 상위 계층의 프로토콜 식별자

IANA 프로토콜 번호 관리(프로토콜 번호: 프로토콜 종류)

          00: Reserved, 01: ICMP, 02: IGMP, 04: IPv4(IP-in-IP Encapsulation),

          06: TCP, 08: EGP, 17: UDP,

          50: ESP(Encapsulatiing Security Payload) Extension Header

          88: EIGRP, 89: OSPFIGP, 179: BGP

 

검사합(Checksum, 16 bits)

헤더에 대한 오류 검출

에러확인을 위한 16비트 필드

 

출발지 IP 주소(Source IP Address, 32 bits)

 

목적지 IP 주소(Destination IP Address, 32 bits)

 

IP 헤더 옵션(선택 옵션)

가변 길이 bits(최대 40bits)

IANA IP OPTIONS NUMBERS

 

패딩(Padding)

가변 길이 bits

필요한 경우에만 사용

옵션을 사용하다 보면 헤더가 32비트의 정수배로 되지 않는 경우가 있다.

이런 경우 자리 우기(Padding)을 통해 정수 배로 설정한다.

 

Loopback 밴더마다 동일하지 않다. (8배수)

MTU 1500 - eth 방식

 

 

 

 

 

 

(4). IP 주소(Introducing IP Address Types)

 

 

IPv432bits 주소, 10진수 형태의 4개의 옥텟(Octet)을 사용하는 주소 체계이고, IPv6128bits 주소, 16진수 형태의 8개의 옥텟을 사용하는 주소 체계이다.

 

IPv4: 32bits (EX) 172.16.9.200 -> 10진수, 4 Octet

IPv6: 128bits (EX) FE80::0A00:20FF:FE80:4137 -> 16진수, 8 Octet

 

 

(3-1). IPv4 주소 체계(IPv4 structure)

IPv4Network 번호와 호스트 번호로 구분하고, 통신하는 종류에 따라서 유니캐스트 주소, 브로드캐스트 주소, 멀티 캐스트 주소로 구분한다.

 

 

 

 

통신 방법에 따른 주소 종류(Communication Type)

유니캐스트 주소(Unicast Addr.) : A/B/C Class

브로드캐스트 주소(Broadcast Addr.)

멀티캐스트 주소(Multicast Addr.) : D Class

 

 

 

(3-2). 유니캐스트 주소(Unicast Addresses)

유니캐스트 주소는 네트워크 번호의 처음에 오는 비트(bit)에 따라서 A Class, B Class, C Class로 구분한다.

A 클래스(A Class)

B 클래스(B Class)

C 클래스(C Class)

 

 

(A). A 클래스 주소(A Class Addresses)

 

A Class 주소는 네트워크 번호가 8bits 이고, 호스트 번호가 24이다. 그리고 네트워크 번호의 첫번째 비트가 0으로 시작한다. A Class 주소에 한개에 물릴수 있는 호스트의 개수는 16,777,214(2^24-2)이고, A Class 대역의 사설 IP 대역은 10.X.X.X 이다.

 

 

 

Host Addresses : 16,777,214(2^24 - 2)

A Class Private Address : 10.0.0.0 - 10.255.255.255 (Private Address?)

loopback inerface : 127.0.0.1(127.X.X.X)

EX) 10.102.2.113

 

[참고] 8bits (0-255)

128 64 32 16 8 4 2 1

0 X X X X X X X

 

 

 

 

 

(C). C 클래스 주소(C Class Addresses)

 

C Class 주소는 네트워크 번호가 24bits 이고, 호스트 번호가 8bits이다. 네트워크 번호의 시작하는 3개의 비트가 110으로 시작한다. Class 주소 한개에 물릴수 있는 호스트 개수는 254개이다. Class 주소 대역의 사설 IP 대역은 192.168.X.X 이다.

 

 

 

 

(3-3) Broadcast Addresses

네트워크 번호는 호스트 번호를 모두 '0'으로 처리하면 된다.

넷마스크는 네트워크 번호를 모두 '1'로 처리하고 호스트 번호를 모두 '0'으로 처리하면 된다.

브로드캐스트 주소호스트 번호를 모두 '1' 로 처리하면 된다.

(EX) 128.50.255.255

----------------------------------------------

IP Broadcast

----------------------------------------------

A Class : 8.254.3.103            8.255.255.255

B Class : 129.3.201.79         129.3.255.255

C Class : 203.247.50.192       203.247.50.255

----------------------------------------------

 

 

[참고] Broadcast & Network Number & Netmask

Broadcast Addr. NetworkID + HostID(all ones) EX) 203.247.50.255

Network Number NetworkID + HostID(all zero) EX) 203.247.50.0

Netmask NetworkID(all ones) + HostID(all zero) EX) 255.255.255.0

EX) B Class

Network Number means?

B Class : 172.16.0.0 => Network Number

B Class : 255.255.0.0 => Netmask

B Class : 172.16.255.255 => Broadcast Addr.

 

 

(3-4) 멀티캐스트 주소(Multicast Addresses)

멀티캐스트 주소는 네트워크 번호와 호스트 번호의 구분이 존재하지 않고, 주소에 시작하는 4개의 비트가 1110으로 시작한다.

 

 

 

[참고] Multicast Address를 사용하는 솔루션

멀티캐스트 주소는 화상회의 프로그램, 대학교 가상 대학 강의용 프로그램, 서버(NTP, DHCP)

라우터(라우터,게이트웨이)등에서 사용되고 있다.

 

화상회의

대학교용 교육용 프로그램(가상 대학 강의용 프로그램)

NTP Server <-> NTP Client (NTP : Network Time Protocol)

기타

 

 

멀티캐스트 주소를 지원하기 위해서는 네트워크 인터페이스의 플래그 설정에 MULTIcast 포함되어 있어야 한다.

 

 

 

 

[참고] 예약된 주소

A Class 중 첫번째 Octet0으로 시작하는 네트워크(0.0.0.0 ~ 0.255.255.255)

A Class Loopback 주소(127.0.0.0 ~ 127.255.255.255)

D Class 중 멀티캐스트 예약

E Class 중 연구용 예약

네트워크 대표 주소, 네트워크 ID(EX: 203.247.50.0)

네트워크를 대표하는 서브넷 브로드 캐스트 주소(EX: 203.247.50.255/24)

네트워크 전체 브로드 캐스트 주소(EX: 255.255.255.255)

 

 

(정리) IPv4

IPv4 : XXX.XXX.XXX.XXX (32bits 주소, 10진수, 4 octet)

       172.16 .9  .200

 

 

 

 

 

사설 IP(Private Address)

A Class : 10.X.X.X

B Class : 172.16.X.X ~ 172.31.X.X

C Class : 192.168.X.X

-> 반드시 "192.168.X.X"만 사용해야 하는가?

   () 회사에 사설 아이피를 사용해서 10대의 컴퓨터를 가지고 사설 네트워크를 구축

-> 회사 네트워크 구축시 물리는 클라이언트의 수는 어떻게 되는가?

 

 

Network Number / Broadcast Addr. / Netmask

- Network Number 지정된 네트워크에 첫번째     IP(EX: 172.16.0.0)

- Broadcast Address 지정된 네트워크에 마지막 IP(EX: 172.16.255.255)

- Netmask 네트워크를 구분하는 인자값 (EX: 255.255.0.0)

 

 

참고 URL

(중요) IANA: http://www.iana.org/numbers/

-> IP Address Allocations 관련한 많은 문서 확인

 

# ping 224.0.0.2

224.0.0.1 All Systems on this Subnet

호스트

224.0.0.2 All Routers on this Subnet

라우터

 

 

 

(4). 서브넷팅과 VLSM(Introducing Sunbnetting and VLSM)

- VLSM(Variable Length Subnet Mask, 가변 길이 서브넷 마스크)

 

Netmask -> Subnetmask -> VLSM

 

넷마스크의 의미(Netmask Means)?

    기본 넷마스크(Default Netmask)

    ▪ A Class: 255.0.0.0

    ▪ B Class: 255.255.0.0

    ▪ C Class: 255.255.255.0

 

 

Bits AND연산 값이 1일경우 흘려보내고 0일경우 값을 0으로한다.

 

 

 

 

 

(4-1). 서브넷팅(Subnetting)

 

(용어 정리)

---------------------------------------------

Supernet     <-     Network     ->     Subnetwork

Supernetting                            Subnetting

Netmask                                 Subnetmask

---------------------------------------------

(EX: CIDR)                             (EX: VLSM)

 

 

 

 

Subnetting 하는 이유

- 관리(성능, 부서별, 지역적 위치, 프로토콜별 등)

- 보안상(서버대역-사용자대역 분리, 접근 제어 등)

 

 

You can divide a network into subnetworks to:

Isolate network traffic within local subnets, therefore reducing

contention for network bandwidth

(: 100Mbps 대역폭의 네트워크 -> Collision Rate : 10% 이상)

Secure or limit access to a subnet

 (: 회사 중역 대역 <-> 사원 대역, 서버 대역 <-> 사용자 대역)

Enable localization of specific network protocols to a subnet

 (: TCP/IP 대역 <-> DNS 대역, Ethernet <-> FDDI 대역)

Allow the association of subnet with a specific geography or a department

 (: 서울본사 <-> 대전지사,부산지사, 영업부서대역 <-> 개발부서대역)

Allow administrative work to be broken into logical units

 (: VLAN)

 

   

 

서브넷마스크(Subnetmask)

if C class,

- Subnet 2 : 255.255.255.128 (256 - 128 = 128)

- Subnet 4 : 255.255.255.192 (256 - 192 = 64 )

- Subnet 8 : 255.255.255.224 (256 - 224 = 32 )

- Subnet 16: 255.255.255.240 (256 - 224 = 16 )

- Subnet 32: 255.255.255.248 (256 - 248 = 8 )

- Subnet 64: 255.255.255.252 (256 - 252 = 4 )

 

 

) 203.247.50.0/255.255.255.0 네트워크 대역 할당 받음.

 

203.247.50.         XXXXXXXX  

===================================================

Network Number       |          Host Number        |

===================================================

 

===================================================

Network Number       | Subnet Number | Host Number |

===================================================

 

EX) C Class (203.247.50.0/255.255.255.0) => 2 Subnet

 

1. 203.274.50.XXXXXXXX

 

2. 203.247.50.0XXXXXXX

   203.247.50.1XXXXXXX

 

Subnetmask : Network ID(-> 1 처리), Host ID(-> 0 처리)

 

3. 255.255.255.128 ====> 203.247.50.0/255.255.255.128, 203.247.50.128/255.255.255.128

 

 

 

EX) C Class (203.247.50.0/255.255.255.0) => 4 Subnet

 

1.  203.247.50.XXXXXXXX

 

2.  203.247.50.00XXXXXX

203.247.50.01XXXXXX

203.247.50.10XXXXXX

203.247.50.11XXXXXX

 

3.  255.255.255.192

 

 

 

 

 

 

[실습] Netmask를 설정/변경하기

- linux200, win2008 서버에서 실습

Netmask 변경하기.hwp

 

 

 

[참고] IPv6에 대해서

- firewall, win2008 서버에서 실습

 

IPv6에 대해서.hwp