Subnetting: 네트워크를 더 작은 서브네트워크로 분할하는 프로세스
Subnet: 서브네팅을 통해 생성된 더 작은 네트워크
- 하나의 IP 네트워크를 더 작은 네트워크로 분할하는 것으로, 호스트 ID 부분을 활용하여 내부적으로 네트워크를 더 세밀하게 나눌 수 있다.
- 장점
- IP 주소의 효율성: 클래스 개념만을 사용하면 호스트 주소가 낭비될 수 있지만, 서브넷을 사용하여 필요한 규모에 맞게 사용함으로써 IP 주소의 낭비를 줄이고 IP 주소를 더 효율적으로 관리할 수 있다.
- 라우팅 테이블 크기 감소: 서브넷을 사용하면 네트워크 내의 호스트 그룹을 서로 다른 서브넷으로 나눌 수 있으므로 라우팅 테이블의 크기 감소
- 네트워크 관리 용이성: 각 서브넷은 자체적인 IP 주소 범위와 설정을 가지고 있어 서로 독립적으로 관리 될 수 있으며, 네트워크 라우터 수를 늘리더라도 호스트 수를 줄여 성능 저하를 방지할 수 있다.
Subnet Mask: IP 주소를 네트워크 및 호스트 주소와 분리하는 역할을 가지며, IP 주소의 어디까지가 네트워크 주소인지를 명시적으로 지정
- 표현방법 1: 슬래시(/)와 숫자로 표시
→ /24: 서브넷 마스크는 상위 24비트가 네트워크 주소를 나타내고, 나머지 비트가 호스트 주소- 표현방법 2: 네트워크 부분은 "1"로, 호스트 부분은 "0"으로 표시
→ /24: 11111111.11111111.11111111.00000000 (상위 24비트는 "1"로, 하위 8비트는 "0"으로 표시)
→ 255.255.255.128 → 11111111 11111111 11111111 10000000 → 25자리를 네트워크 주소로 7자리를 호스트 주소로 사용
hard-coded: 호스트가 자신의 IP 주소를 할당받아 사용하는 방식
→ 호스트가 네트워크를 사용하지 않을 때에도 해당 IP 주소를 가지고 있어 낭비 될 수 있기 때문에 비효율적
DHCP: 네트워크에서 호스트에게 IP 주소 및 기타 네트워크 설정을 동적으로 할당하는 프로토콜
- IP주소를 동적으로 할당받을 때 다음과 같은 정보를 포함할 수 있다.
- IP 주소: 호스트 컴퓨터에게 유효한 IP 주소를 동적으로 할당
- Network Mask: 호스트의 IP 주소가 속한 네트워크 정보를 제공
- DNS Server: DNS 서버의 주소를 호스트에게 제공
- Address of First-Hop Router: 호스트가 다른 네트워크로 통신할 때 사용되는 첫 번째 라우터의 주소
DHCP를 사용하면 호스트가 네트워크를 떠나거나 일시적으로 IP 주소를 사용하지 않을 때 해당 IP 주소를 자동으로 반환하고, 이를 다른 장치에 할당할 수 있다.
→ 재사용성을 활용하여 IP 주소 부족 문제를 완화하고 네트워크에서 효율적으로 자원을 활용
DHCP 동작과정
- 호스트가 네트워크에 접속하면 DHCP 서버를 찾기 위해 "DHCP Discover" 메시지를 브로드캐스트로 전송
- 호스트가 네트워크에 접속하면 DHCP 서버를 찾기 위해 "DHCP Discover" 메시지를 브로드캐스트 방식으로 전송하며, 이 메시지는 네트워크 내의 모든 장치에 도달하기 위해 방송 주소 255.255.255.255를 사용
- UDP 포트 67을 사용하여 전송되며, DHCP 서버는 해당 메시지를 수신하여 응답하기 위해 UDP 포트 68을 사용
- DHCP 서버 중 하나가 "DHCP Offer" 메시지를 생성하여 호스트에게 제안
- 아직 클라이언트는 IP address (source address)가 없기 때문에 DHCP 서버 역시 브로드캐스트 방식으로 메세지를 전송
- DHCP 서버 자신의 IP 주소 (source IP address)는 포함
- 호스트가 DHCP 서버로에게 IP 주소를 요청하는 "DHCP Request" 메시지를 전송
- 하나의 DHCP 서버를 선택하고, 선택한 DHCP 서버에게 IP 주소를 요청
- 여러 개의 DHCP 서버가 존재할 수 있고, 그 서버들에게 모두 사용 할 IP 주소 정보를 알려야 하기 때문에 브로드캐스트 방식으로 전송
- 선택된 DHCP 서버는 "DHCP Acknowledgment (DHCP ACK)" 메시지를 호스트에게 전송하여 IP 주소 할당 및 관련 네트워크 설정 정보를 제공
- Address of first-hop router, DNS serve, netmask네트워크 정보 등을 포함
- ISP가 가지고 있는 IP address 중 일부분을 취하게 된다.
→ ISP는 ICANN(국제인터넷주소관리기구)을 통해 ISP block을 할당받는다.
- 어떤 ISP의 네트워크인지를 나타내는 ISP block 부분(0001 까지) 뒤에 각 organization마다 다른 subnet 네트워크 주소를 추가로 할당받는다.
- 000 ~ 111: 3비트를 subnet으로 사용
- 서브넷 마스크 부분이 /20이 아닌, /23으로 설정된다.
로컬 네트워크에 연결된 모든 디바이스가 외부 인터넷과 통신할 때, 하나의 공용 IPv4 주소를 공유하도록 하는 기술
- 로컬 네트워크 내에서 호스트 간 통신은 로컬 주소를 사용하고, 외부로 나가는 트래픽은 NAT를 통해 하나의 공용 IP 주소로 변환되며 다른 포트 번호를 가진다.
- Public IP: 인터넷 사용자의 네트워크를 식별하고 인터넷과 통신할 때 사용
- 사설 IP: 가정 및 회사 내의 로컬 네트워크에서 사용하며, 동일한 네트워크 내에서 호스트 간 통신에 사용
→ IPv4의 주소부족 문제를 해결하고자 서브네팅 된 IP이며, NAT를 통해 할당된다.
- 내부에서 외부로 패킷을 보낼 때, NAT 장치를 거쳐 Private IP → Public IP로 변경
- 외부에서 내부로 패킷을 보낼 때, NAT 장치를 거쳐 Public IP → Private IP로 변경
장점
- 하나의 공용 IP 주소로 다수의 디바이스 공유: IP 주소 부족 문제를 완화
- 내부 주소 변경을 외부로 노출하지 않음: 로컬 네트워크에서 디바이스의 IP 주소를 변경하거나 재구성해도, 외부 네트워크에서는 이러한 변경 사항을 알 필요 없다.
- 보안 강화: NAT를 통해 로컬 네트워크 상의 디바이스들은 외부 네트워크에서 직접적으로 접근하거나 보지 못하도록 보호된다.
동작 구조
- 외부로 나가는 데이터그램을 전송할 때, NAT는 데이터그램의 IP주소와 포트 번호를 NAT IP 주소와 포트 번호로 변환
- NAT는 로컬 네트워크 내에서 어떤 IP 주소를 사용하는 호스트가 어떤 포트 번호를 할당받았는지를 기억하고 관리하기 위해 NAT translation table을 사용
- 외부 네트워크에서 로컬 네트워크로 들어오는 데이터그램을 받으면, NAT는 기록한 IP 주소 및 포트 번호 테이블을 확인하여 올바른 로컬 호스트로 전달하기 위해 목적지 IP 주소와 포트 번호를 변환 후 올바른 목적지에 전달
동작 과정
- 로컬 네트워크의 호스트 (예: 10.0.0.1, 포트 3345)가 128.119.40.186으로 데이터그램을 전송
- NAT 라우터는 이 데이터그램의 출발지 IP 주소를 NAT IP 주소 (예: 138.76.29.7)로 변경하고, 출발지 포트 번호도 새로운 포트 번호 (예: 5001)로 변경
→ NAT translation table에 이 변환 정보를 기록- 외부에서 138.76.29.7 IP 주소 및 5001 포트 번호로 들어오는 데이터그램이 수신되면, NAT는 이 정보를 NAT translation table에서 검색하여 올바른 로컬 네트워크의 IP 주소와 포트 번호 (예: 10.0.0.1, 포트 3345)로 변환
- 변환된 데이터그램은 목적지 정보가 10.0.0.1 IP 주소와 3345 포트로 변경되어, 올바른 호스트에게 전달
공유기와 NAT: 공유기를 통해 여러 대의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속한다.
→ 공유기는 NAT을 사용하여 로컬 네트워크의 호스트들이 인터넷과 통신할 때 IP 주소 변환을 수행
→ 노트북, 아이패드 등 여러개의 장치들이 연결되고 공인IP (공유기)를 통해 외부 네트워크와 통신