본문 바로가기

Programming Theory/Network

IP addressing

1. IP 주소

1) 기본 

    4 Bytes로 이뤄진 32bit(2진수)로 구성

2) 범위 

    0.0.0.0 ~255.255.255.255 (2의 32제곱, 약 43억개의 IP 주소가 가능)

    * 1 byte = 8 bit, 255 = 2 의 8 제곱근 - 1

3) 구성 

   network ID / host ID

   목적지 IP를 찾아올 때 먼저, network ID 로 network를 찾은 다음 host ID 로 network 내 host를 찾는 방식이다.

 

 첫번째 byte의 첫번째 값

 범위

 8bit(1byte)

8bit 

8bit 

8bit 

 class A 0  0~127

 network ID

Host ID

 class B

10

 128~191

network ID

 Host ID

 class C 110  192~223

network ID 

 Host ID 

 class D 1110

 224~239

 Multicast address

 class E1111  240~255

 Reserved for future use

  사무실에서 많이 사용하는 IP 인 192.168.*.* 은 classC 로 3번째 byte까지 networkID로 3번째 byte까지 같아야 같은 network이다.

4) packet 전달

  목적지와 발신지가 같은 network 라면, packet을 직접 전달하는 것이 가능하나, 다른 network라면, 불가능하다.

5) public IP / private IP

 

 public IP

 private IP

 사용 환경

internet 

internet이 연결되지 않는 사설 network

 고유성 여부

고유 

사설 network 내에서만 고유 - IP 주소의 낭비 막기

 범위

class 내 public IP 범위가 있음 

class 내 private IP 범위가 있음 

class A : 10.0.0.0~10.255.255.255

class B : 172.16.0.0~172.31.255.255

class C : 192.160.0.0~192.168.255.255

 비고

 

internet 연결을 해야 한다면, NAT(Network Access Translation) 을 통해 private IP 를 public IP 로 변환하는 것이 가능하다. 


2. subnet mask

1) 구성

 - 32 bit 로 구성

 - network ID 의 범위 : bit 가 모두 1

 - host ID 의 범위 : bit 가 모두 0

ex) IP주소가 192.168.3.5 라면, 해당 IP 는 class C 로 3 byte까지 network ID가 된다. 따라서 subnet mask 는 255.255.255.0 이 된다.

2) 목적 

- 특정 IP 주소의 network ID 와 host ID 의 구별을 쉽게 하기 위함


3. subnetting

1) 목적

 - broadcasting domain 의 크기를 줄여, traffic을 감소시키고, 관리를 편리하게 하기 위함

2) 방식

 -  2단계 계층 구조(network ID / host ID) 

    -> 3단계 계층 구조(network ID / subnet ID / host ID)

 이때 network ID를 변경할 경우, 외부에서 해당 network를 찾아오지 못한다.

 subnet ID 는 host ID 의 일부 bit를 network ID 처럼 사용하는 것이다. network ID를 변경하면, 발신지에서 목적지 IP를 찾아올 때, 해당 network를 찾지 못하게 된다.

 이때 subnet ID 가 모두 0 이거나, 모두 1인 경우는 사용하지 못한다. 0 인 경우는 network address 와 subnet address가 중복될 수 있기 때문이며, 1인 경우는 broadcasting address 와 subnet address가 중복될 수 있기 때문이다. 따라서 subnet 이 생성될 수 있는 경우의 수에서 항상 2를 빼야 한다. 그리고  subnet ID 가 모두 0 이거나, 모두 1인 경우는 해당 IP 주소를 사용할 수 없기 때문에, 2/전체 경우의 수 만큼의 IP 주소는 사용할 수 없다.

 예를 들어 subnet ID 가 2자리라면, 가능한 subnet은 2의 2제곱근 - 2 = 2 개 (IP 주소 중 2/4개는 사용할 수 없다.)

 subnet ID 가 3자리라면, 가능한 subnet은 2의 3제곱근 - 2 = 6개 (IP 주소 중 2/8 개는 사용할 수 없다.)

3) 예시 문제

 한 host의 IP 주소가 206.120.6.0 인 network가 있다. 여기서 30개의 host와 4개의 subnet을 만들려고 한다. subnet mask의 값은 어떻게 되어야 하는가?

a. 206.120.6.0 은 206 >=192 이므로, class C 이며, network ID는 3byte 까지이다.

b. 4개의 subnet을 만들려면, 4 번째 byte의 세번째 자리까지가 subnet ID가 되어야 한다.

그렬 경우 2의 3제곱근(8) - 2 = 6 개의 subnet을 만들 수 있다.

c. 30개의 host를 만들려면, host ID 가 최소한 5 bit는 되어야 한다.

30 = 2의 5제곱근(32)-2(모두 0인 경우는 network address, 모두 1인 경우는 broadcasting address로 사용자가 지정할 수 없다.)

따라서 앞 3byte까지는 network ID, 4번째 byte의 3번째 bit까지는 subnet ID, 4~8번째 bit는 host ID가 되어야 한다. 

이때 network ID 와 subnet ID 는 같은 속성을 가지므로, subnet mask 는 255.255.255.224.0 이 되어야 한다. (224 = 2의 7 제곱근 + 2의 6제곱근 + 2의 5제곱근)

'Programming Theory > Network' 카테고리의 다른 글

L4 스위치의 Load Balancing 정책  (0) 2015.10.26
전문 항목 유형  (0) 2015.03.02
network 명령  (0) 2014.12.28
IP/ARP/RARP/ICMP protocol  (0) 2014.12.28
UDP protocol  (0) 2014.12.27