네트워크 주소와 호스트 주소
- 주소 지정은 IP 주소로 이루어짐
- IP 주소의 구조: 네트워크 주소 + 호스트 주소
- 네트워크 주소
- 네트워크 ID, 네트워크 식별자(network identifier)
- 네트워크를 표현하는 부분
- 호스트가 속한 특정 네트워크를 식별
- 호스트 주소
- 호스트 ID, 호스트 식별자(host identifier)
- 호스트를 표현하는 부분
- 특정 호스트를 식별
IP 주소에서 네트워크 주소와 호스트 주소 크기는 각각 어느 정도가 적당할까?
- 네트워크 주소가 하나의 옥텟으로 이루어질 경우
- 한 네트워크 당 호스트 주소 할당에 24비트를 사용할 수 있음
- 네트워크 주소가 세 개의 옥텟으로 이루어질 경우
- 한 네트워크 당 호스트 주소 할당에 8비트를 사용할 수 있음
- 무조건 호스트 주소 공간을 크게 할당하면?
- 호스트가 할당되지 않은 다수의 IP 주소가 낭비
- 무조건 호스트 주소 공간을 작게 할당하면?
- 이런 고민을 해결하기 위해 생겨난 개념 = IP 주소의 클래스
클래스풀 주소 체계
- 클래스(class)
- 네트워크 크기에 따라 IP 주소를 분류하는 기준
- 클래스풀 주소 체계(classful addressing) - 클래스를 기반으로 IP 주소를 관리하는 주소 체계
- 필요한 호스트 IP 개수에 따라 클래스를 달리 선택 - 네트워크 크기 조정 가능
- A, B, C 클래스를 주로 사용/ D, E 클래스는 다른 특별한 용도

- A 클래스
- B와 C 클래스에 비해 할당 가능한 호스트 주소의 수가 많음
- 네트워크 주소는 비트 0으로 시작하는 1옥텟, 호스트 주소는 3옥텟으로 구성
- 이론상 2^7(128)개의 A 클래스 네트워크 존재 가능
- 각 네트워크에 2^24(16,777,216)개의 호스트 주소 할당 가능
- 0.0.0.0~127.255.255.255 / 가장 처음 옥텟의 주소 0~127
- B 클래스
- 네트워크 주소는 비트 10으로 시작하는 2옥텟, 호스트 주소는 2옥텟으로 구성
- 이론상 2^14(16,384)개의 B 클래스 네트워크 존재 가능
- 각 네트워크에 2^16(65,534)개의 호스트 주소 할당 가능
- 128.0.0.0~191.255.255.255 / 가장 처음 옥텟의 주소 128~191
- C 클래스
- 네트워크 주소는 비트 10으로 시작하는 3옥텟, 호스트 주소는 1옥텟으로 구성
- 이론상 2^21(2,097,152)개의 C 클래스 네트워크 존재 가능
- 각 네트워크에 2^8(256)개의 호스트 주소 할당 가능
- 192.0.0.0~223.255.255.255 / 가장 처음 옥텟의 주소 192~223
- 호스트 주소 공간을 모두 사용할 수 있는 건 아님
- 호스트 주소가 전부 0인 IP주소
- 해당 네트워크 자체를 의미하는 네트워크 주소로 사용
- 호스트 주소가 전부 1인 IP주소
클래스리스 주소 체계(classless addressing)
💬 클래스풀 주소 체계의 한계
- 클래스별 네트워크 크기가 고정되어 있어 여전히 낭비되는 IP 주소가 많을 수 있다!
- 사전에 정해진 크기 이외에 다른 크기 네트워크 구성 불가능
- 클래스 개념 없이 클래스에 구애받지 않고 네트워크의 영역을 나누고 호스트에게 IP 주소 공간을 할당하는 방식
- 클래스풀 주소 체계보다 유동적이고 정교한 네트워크 구획 가능
- 오늘날 주로 사용되는 방식
서브넷 마스크(subnet mask)
- 클래스 없이 IP 주소의 네트워크 주소, 호스트 주소를 구분하는 수단
- IP 주소상에서 네트워크 주소는 1, 호스트 주소는 0으로 표기한 비트열
- 네트워크 내의 부분적인 네트워크를 구분 짓는 비트열
- A,B,C 클래스의 기본 서브넷 마스크
- A 클래스: 255.0.0.0
- B 클래스: 255.255.0.0
- C 클래스: 255.255.255.0
- CIDR(Classless Inter-Domain Routing notation) 표기법
- IP 주소/서브넷 마스크상의 1의 개수 형식으로 표기
- C 클래스의 기본 서브넷 마스크는 255.255.255.0 → 2진수 11111111.11111111.11111111.00000000

서브네팅(subnetting)
- 서브넷 마스크를 이용해 클래스를 원하는 크기로 더 잘게 쪼개어 사용하는 것
- 서브넷 마스크로 네트워크 주소와 호스트 주소를 구분 짓는 방법
공인 IP 주소와 사설 IP 주소
- 공인 IP 주소
- 전세계에서 고유한 IP 주소
- 네트워크 간의 통신, 인터넷을 이용할 때 사용하는 IP 주소
- 공인 IP 주소는 ISP나 공인 IP 주소 할당 기관을 통해 할당
- 사설 IP 주소
- 사설 네트워크에서 사용하기 위한 IP 주소
- 사설 IP 주소로 사용하도록 특별히 예약된 IP 주소 공간
- 10.0.0.0/8(10.0.0.0 - 10.255.255.255)
- 172.16.0.0/12(172.16.0.0 - 172.31.255.255)
- 192.168.0.0/16(192.168.0.0 - 192.168.255.255)
- 사설 IP 주소의 할당 주체는 일반적으로 라우터(공유기)
- 사설 IP 주소는 호스트가 속한 사설 네트워크에서만 유효한 주소
- 얼마든지 다른 네트워크 상의 사설 IP 주소와 중복 가능
- 일반적으로 네트워크 간의 통신은 사설 IP 주소가 아닌 공인 IP 주소를 통해 이루어짐
❓ 그렇다면 사설 IP 주소를 사용하는 호스트는 외부 네트워크와 어떻게 통신할까?
NAT(Network Address Translation)
- IP 주소 변환 기술: 주로 사설 IP 주소(네트워크 내부)와 공인 IP 주소(네트워크 외부)를 변환
- 대부분의 라우터와 (가정용)공유기는 NAT 기능 내장
- 사설 네트워크의 패킷 속 사설 IP 주소는 공유기를 거쳐 공인 IP 주소로 변경
- 외부 네트워크의 패킷 속 공인 IP 주소는 공유기를 거쳐 사설 IP 주소로 변경
- NAT를 통해 사설 IP 주소를 사용하는 여러 호스트는 적은 수의 공인 IP 주소를 공유 가능
정적 IP 주소와 동적 IP 주소
정적 할당
- 호스트에 직접 (수작업으로) IP 주소를 부여하는 방식
- 이렇게 할당된 IP 주소 = 정적 IP 주소(static IP address)
- 정적 IP 주소 부여 방법
- 윈도우나 맥 OS 등의 네트워크 설정에서 IP 주소를 수동으로 설정
- 일반적으로 부여하고자 하는 IP주소, 서브넷 마스크, 게이트웨이(라우터)주소, DNS 주소를 입력
기본 게이트웨이
- 게이트웨이의 일반적인 의미 - 서로 다른 네트워크를 연결하는 하드웨어적/소프트웨어적 수단
- 기본 게이트웨이(default gateway)
- 호스트가 속한 네트워크 외부로 나가기 위한 기본적인 첫 경로(첫 번째 홉)
- 네트워크 외부와 연결된 라우터(공유기)의 주소를 의마하는 경우가 많음
- IP 할당의 맥락에서 사용된 ‘게이트웨이’라는 용어는 기본 게이트웨이(라우터(공유기)의 주소)를 의미
❓모든 IP 주소를 정적으로 할당할 수 있을까?
- 호스트의 수가 많아질 경우 관리 곤란
- 의도치 않게 잘못된 IP 주소를 입력할 수도 있고, 중복된 IP 주소를 입력할 수도 있음
동적 할당
- 호스트에 IP 주소를 프로토콜을 활용해 자동으로 할당하는 방식
- IP 동적 할당에 사용되는 대표적인 프로토콜 DHCP(Dynamic Host Configuration Protocol)
- 이렇게 할당된 IP 주소 = 동적 IP 주소(dynamic IP address)
DHCP를 통한 IP 주소 할당
- 클라이언트와 DHCP 서버 간 메시지 송수신을 통해 할당이 이루어짐
- 클라이언트: IP 주소를 할당받고자 하는 호스트
- DHCP 서버: 호스트에게 IP 주소를 제공하는 호스트
- DHCP 서버의 역할은 일반적으로 라우터(공유기)가 수행
- 특정 호스트에 DHCP 서버 기능을 추가할 수도 있음
- DHCP 서버는 클라이언트에게 할당 가능한 IP 주소 목록을 관리하다, 클라이언트 요청시 IP 주소를 할당
- DHCP로 할당받은 동적 IP 주소는 사용할 기간(임대 기간)이 정해짐
- 일반적으로 수 시간에서 수 일
- DHCP로 IP 주소를 할당 받는 것 = IP 주소를 임대한다
- 임대 기간이 끝난 IP 주소는 다시 DHCP 서버로 반납
IP 주소 할당 과정에서 주고받는 메시지
- DHCP Discover(클라이언트 → DHCP 서버)
- DHCP 서버 찾는 메시지
- 브로드캐스트로 전송
- 클라이언트는 아직 IP 주소를 할당받지 못함: 송신지 IP 주소는 0.0.0.0으로 설정
- DHCP Offer(DHCP 서버 → 클라이언트)
- 클라이언트에게 할당 가능한 IP 주소 정보를 제안하는 메시지
- 할당 가능한 IP 주소, 서브넷 마스크, 임대 기간 등의 정보 포함
- DHCP Request(클라이언트 → DHCP 서버)
- DHCP Offer 메시지에 대한 응답
- 브로드캐스트로 전송
- DHCP ACK(DHCP 서버 → 클라이언트)
- 최종 승인과 같은 메시지
- DHCP ACK 메시지를 클라이언트는 이제 할당받은 IP 주소를 자신의 IP 주소로 설정 후 임대 기간 동안 IP 주소 사용
- 사용기간이 모두 끝나면?
- IP 주소 DHCP 서버에 반납
- 원칙적으로는 다시 위 순서를 거쳐 IP 주소 재할당
- 임대 갱신(lease renewal)
- IP 주소 임대 기간이 끝나기 전에 임대 기간을 연장하는 것
- 임대 기간이 끝나기 전에 기본적으로 두 차례 자동 수행
- 자동 임대 갱신이 모두 실패하면 그때 IP 주소 반납