본문 바로가기
보안과정/네트워크

IP주소

by Luuii 2017. 10. 18.

IP Header

> 4계층에서 내려운 데이터에 이 IP Header가 붙어서 2계층으로 내려가면 Ethernet ll Frame으로 캡슐화 되고 타입 필드에 0x0800이 들어감.

> 헤더의 길이는 20~60

옵션은 40byte까지 붙을 수 있다.

 

Version(4 bit)

> IPv4 인지 IPv6인지 나타냄

> IPv4의 값은 0100.

 

IP Header Length(4 bit)

> 4byte 단위로 나타냄. 헤더의 길이는 20~60byte

 

Type of Service(TOS)(8 bit)

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

> 요구되는 서비스 품질을 나타냄,

 

Total Length(16 bit)

> IP 헤더와 IP 데이터를 포함한 패킷의 전체 길이

> 최대 값은 65535(2^16 - 1)

 

Identifier(16 bit)

> Datagram의 분할과 재조립을 위해서 사용.

> 보내는 쪽에서는 단편화, 받는 쪽에서는 재조합이 발생하기 때문에 분할 전 원본 데이터그램을 식별하기 위해 사용되는 ID.

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

 

Flag(3 bit)

> 분열의 특성을 나타내는 플래그. 분할 여부를 식별할 때 사용.

첫번째 bit : 미사용(항상 0)

두번째 bit : D F bit (Don't Fragment)

>> 분열(조각) 0 : 0으로 셋팅 되면 라우터에서도 분열(조각, 단편)이 가능함을 뜻함

>> 미분열 1 : 목적지 컴퓨터가 조각들을 다시 모을 능력이 없기 때문에 중간에 라우터로 하여금 데이터그램을 단편화하지 마라는 뜻.

세번째 bit : M F bit ( More Fragment)

>> 현재의 조각이 마지막이면 0

>> 더 많은 조각이 뒤에 계속 있으면 1

 

Fregmentation Offset(3 bit)

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

> 8byte 단위로 최초 분열 조각으로부터 어떤 곳에 붙여야 하는 위치를 나타냄.

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

> IP의 특성상 원본 데이터그램의 분할 패킷들이 순서대로 전송되는 것이 아니므로 이를 순서대로 조합하기 위한 값.

 

Time To Live(TTL)(8 bit)

패킷이 경유 할 수 있는 최대 홉수를 나타냄

> 패킷이 라우터를 통과할대마다 TTL은 1씩 감소하게 되고 0이 되면 패킷은 폐기. 이때 송신측으로 ICMP메시지가 전달됨.

> 일반적인 TTL값은 운영체제에 따라 달라짐. (윈도우 : 128, 리눅스 : 64, 기타 OS : 255)

> 목적지가 아무리 멀어도 보통 값이 30이면 도달. (패킷의 무한루프 방지)

 

Protoctol(8 bit)

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

00 : Reserved,

01 : ICMP

02 : IGMP

04 : IPv4(IP-in-IP Encapsulation)

06 : TCP

08 : EGP

17 : UDP

50 : ESP(Encapsulating Security Payload) Extension Header

88 : EIGRP

89 : OSPFIGP

179 : BGP

 

Checksum(16 bit)

> 헤더에 대한 오류 검출(데이터 제외)

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

 

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

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

 

IP 헤더 옵션(선택옵션)

> 가변길이 bit

 

패딩

> 가변길이 bit

> 필요할 경우에만 사용

 

[참고] MTU(Maximum Transfer Unit, 최대전송단위)

> 네트워크 인터페이스에서 세그먼트 없이 보낼 수 있는 최대 데이터그랩 크기 값.

> 데이터가 MTU값 이사잉라면 여러개의 패킷으로 분할 됨.

IEEE 802.3 Ethernet 1492

DIX Ethernet 1500

Loopback 16436(운영체제에 따라 조금씩 상이)

 

IP주소

> IPv4는 32bit 주소, 10진수 형태의 4개의 옥텟(Octet)을 사용하는 주소체계

> IPv6는 128bit 주소, 16진수 형태의 8개의 옥텟을 사용하는 주소체계

> 하나의 IP주소에는 Network ID와 HostID가 존재

Network ID

>> 인터넷 상에서 모든 Host들을 전부 관리하기 힘들기에 한 Network의 범위를 지정하여 관리하기 쉽게 만들어 낸것.

Host ID

>> 호스트들을 개별적으로 관리하기 위해 사용하게 된 것.

So, 인터넷을 사용 할 때 Rounting으로 목적지를 알아내고 찾아가는 역할 을 할 때 NetworkID와 HostID가 합쳐진 IP주소를 보게 됨.

> Subnet mask 를 활용하여 NetworkID를 올리거나 낮출 수 있음.

> 반대로 HostID는 줄어들거나 늘어남.

 

[참고]http://korean-daeddo.blogspot.kr/2015/12/ip.html

 

IPv4 주소 체계

> IPv4는 Network 번호화 호스트 번호로 구분.

> 통신하는 종류에 따라서 유니캐스트 주소, 브로드캐스트 주소, 멀티 캐스트 주소로 구분.

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

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

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

 

유니캐스트(Unicast)

> 1:1통신 방법. 데이터를 보내고자 하는 주소(MAC)를 프레임에 포함시켜 보내는 방식.
> A / B / C class로 구분.

A class

>> 네트워크 번호가 8bit, 호스트 번호가 24.

>> 네트워크 번호의 첫번째 비트가 0으로 시작.

>> A class 주소 한개에 물릴 수 있는 호스트 개수는 16,777,214개(2^24-2)

>> A class 대역의 사설 IP 대역은 10.X.X.X

A Class Private Address : 10.0.0.0 ~ 10.255.255.255

Loopback interface : 127.0.0.1(127.X.X.X)

0 X X X X X X X

B class

>> 네트워크 번호가 16bit, 호스트 번호가 16bit.

>> 네트워크 번호의 처음 2개의 비트가 10으로 시작.

>> B class 주소 한개에 물릴 수 있는 호수트의 개수는 65534개

>> B class 대역의 사설 IP 대역은 172.16.X.X ~ 172.31.255.255

B Class Private Addr : 172.16.0.0 ~ 172.31.255.255

1 0 X X X X X X

 

C class

>> 네트워크 번호가 24bit, 호스트 번호가 8bit.

>> 네트워크 번호의 처음 3개의 비트가 110으로 시작.

>> C class 주소 한개에 물릴 수 있는 호수트의 개수는 254개

>> C class 대역의 사설 IP 대역은 192.168.X.X

C Class Private Addr : 192.168.0.0 ~ 192.168.255.255    ex) 192.9.227.13

1 0 0 X X X X X

 

Broadcast Addresses

>> 네트워크 번호호스트 번호를 모두 '0'으로 처리.

>> 넷마스크네트워크 모두를 모두 '1'로 처리, 호스트 번호를 모두 '0'으로 처리

>> 브로드캐스트 주소는 호스트 번호를 모두 '1'로 처리.

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

 

172.16.6.1/255.255.0.0

Network Number means?

> B class : 172.16.6.0        => Network Number

> B class : 255.255.255.0   => Netmask

> B class : 172.16.6.255     => Broadcast Addr

 

이하 내용 전부 암기.

 

클래스별 IP 대역

A class : 0 ~ 127            ex) 10.10.10.21

B class : 128 ~ 191         ex) 191.32.80.120

C class :  192 ~ 223        ex) 203.211.5.3

D class : 224 ~ 239         ex) 224.0.1.9

E class :  240 ~ 255

 

[참고] 8bits (0 ~ 255)

128    64    32    16    8    4    2    1

1        0      0     0     0    0    0    0    :    128(256 - 128 = 128) 

1        1      0     0     0    0    0    0    :    192(256 - 192 = 92)

1        1      1     0     0    0    0    0    :    224(256 - 224 = 32)

1        1      1     1     0    0    0    0    :    240(256 - 240 = 16)

1        1      1     1     1    0    0    0    :    248(256 - 248 = 8)

1        1      1     1     1    1    0    0    :    252(256 - 252 = 4)

 

사설 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


 

Network Number / Broadcast Addr / Netmast

- Network Number        = 지정된 네트워크의 첫번째 IP(ex: 172.16.0.0) 호스트 부분이 0처리

- Broadcast Address       = 지정된 네트워크의 마지막 IP(ex: 172.16.255.255) 호스트 부분이 1처리

- Netmask                   = 네트워크를 구분하는 인자 값(ex: 255.255.0.0) 중요한 비트 1처리

 

Address 

Description 

Reference

Date Registered 

Last Reviewed 

 224.0.0.0

 Base Address (reserved)

 [RFC1112][Jon_Postel]

 

 

 224.0.0.1

 All system on this Subnet

 [RFC1112][Jon_Postel]

 암기

 

 224.0.0.2

 All routers on this Subnet

 [Jon_Postel]

 암기

 

 224.0.1.1

 NTP Network time Protocol

 [RFC1119][RFC5905][David_Mills]

 암기

 

 

 

 

서브넷팅과 VLSM(Introducing Subnetting and VLSM)

[참고] http://bignet.tistory.com/50

 

Netmask -> Subnetmast -> VLSM(개념이 중요)

 

VLSM

서브네팅 - 동일한 크기로 네트워크를 나누는 방식

VLSM - 동일하지 않은 크기로 나누는 방식

 

기본 넷마스크

> 네트워크 단에서는 중요한 의미, 서버 단에서는 설정만 잘하면 된다.

 

A class : 255.0.0.0

B class : 255.255.0.0

C class : 255.255.255.0

 

172.    16.    9.    200

255.  255.    0.       0            AND

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

172.    16.    0.       0

 

A    B    |    S

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

0    0    |     0

0    1    |     0

1    0    |     0

1    1    |     1

 

서브넷팅(Subnetting)

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

Supernet            <-    Network    ->    Subnetwork

Supuernetting     <-                          Subnetting

   Netmask          Subnetmask

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

CIDR                                                        VLSM(★★★)

 

서브네팅을 하는 이유

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

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

 

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

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

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

서울 본사 <-> 대전 지사, 부산 지사

영업부서 대역 <-> 개발 부서 대역

VLAN

 

서브넷 마스크

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 - 240 = 16 )

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

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

 

C class 9203.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

 

 

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

변하지 않는 것들은 1처리, 변하는 것들은 0처리

203.247.50(네트워크).01(서브네트워크)XXXXXX(호스트)

 

3. 255.255.255.192

 

 

172.16.10.200/255.255.255.0    -> B클래스구나/255.255.255.0(B클래스를 C클래스같이 서브네팅 헸구나)

172.16.0.0

172.16.1.0

172.16.2.0

......

172.16.254.0

 

번호만 보고도 어떤 식으로 설정 되었는가 유추할 수 있어야한다.

 

203.240. 50. 66

255.255.255.192    비트연산                    XXXXXXXX

========================>       01000010

203.249.50.64                                       11000000

01000000

 

 

203.240. 50. 130

255.255.255.192    비트연산                    XXXXXXXX

========================>       10000001

203.249.50.128                                      11000000

10000000

 

반드시

1. 클래스를 보고

2. 넷마스크를 보고

3. 몇 번인지 확인을 해야한다. ★★★★★★★★★★★★★★

 

 

라우팅 테이블이 읽혀지는 순서

1순위 > 목적지 IP

목적지 호스트(IP) 주소와 일치하는 경로를 찾는다.

2순위 > 목적지 Network

목적지 호스트(IP) 주소와 일치하는 경로가 없다면 목적지 네트워크 주소와 일치하는 경로를 찾는다.

3순위 > default gateway

일치하는 경로(IP, network)가 없으면 default gateway(0.0.0.0)로 보낸다.

 

- 목적지가 자신인 경우

- 목적지가 자신의 네트워크 대역인 경우

- 목적지가 자신의 네트워크 대역과 틀린경우 ( IP -> NET -> GW )

 

IP 우회에 대한실습

- tor network & proxychains

- IP Spoofing

>> telnet session hijacking(차후 조사가 필요)

 

 

IPv6 관련 참고 블로그

http://egloos.zum.com/nix102guri/v/739872

 

반응형

'보안과정 > 네트워크' 카테고리의 다른 글

Dos(Denial of Service) Attack Type  (0) 2017.10.22
전송계층(Transport Layer)  (0) 2017.10.19
ARP, ARP Spoofing  (0) 2017.10.17
네트워크 인터페이스 계층(Network Interface Layer)  (0) 2017.10.17
TCP/IP 4계층  (0) 2017.10.16