✒️ 0. 들어가기 전
해당 포스팅 내용이 이어집니다.
✒️ 1. IPv4와 IPv6
이전 포스팅에서 IP에 대한 이야기를 간단하게 나누었다.
IP 주소는 네트워크 상에서 장치들이 서로를 인식하고 통신하기 위해 사용하는 논리적 주소라고 하였다.
💡 IPv4
IPv4는 32비트로 표현되는 주소체계이며 2^32개의 주소(약 41억 9천만 개)를 표현할 수 있다.
8비트 단위로 점을 찍어 4개로 구분해서 표현하며 보통 8비트를 10진수로 표현해서 말한다.
예를 들어, 192.168.0.1과 같은 형식이다.
하지만 IP 주소가 부족해지면서 NAT와 서브네팅 등의 기술이 도입되었다.
[참고] 8비트 = 옥텟 = 8바이트 모두 같은 말이다.
💡 IPv6
IPv6는 128비트로 표현되는 주소체계이며 2^128개의 주소를 표현한다.
많은 주소 처리가 가능하며 굳이 NAT, 서브네팅이 필요하지 않다.
16비트씩 8개로 구분하고 16비트는 16진수로 변환되어 콜론(:)으로 구분하여 표시하며 앞의 연속되는 0은 생략될 수 있다.
예를 들어, 2001:0db8:85a3:0000:0000:8a2e:0370:7334과 같은 형식이다.
IPv6는 IPSec이 내장되어 있어 보안이 강화되었다.
또한, 헤더 포맷이 단순해져서 빠른 처리 속도를 제공한다.
IPv4에는 체크섬(CheckSum) 필드가 있지만, IPv6는 체크섬 필드가 없다.
이는 상위 프로토콜(TCP, UDP)에서 체크섬 필드를 사용하기 때문에 IPv6에서는 굳이 불필요하기 때문이다.
IPv4가 설계되었던 당시에는 네트워크 환경이 불안정하고 에러가 빈번하게 발생했다.
따라서 IP 헤더 자체에서 에러 검출 기능을 구현할 필요가 있었다.
또한, IPv4에서는 TTL(Time To Live) 필드와 같이 라우팅 과정에서 IP 헤더의 일부가 변경된다.
이 경우 체크섬 검사를 통해 헤더의 무결성을 확인할 수 있다.
TTL은 패킷이 네트워크에서 무한 순환하지 않도록 하는 변수이다.
IPv4에서 TTL 필드는 패킷이 네트워크에서 무한순환하지 않도록 하는 변수
패킷이 네트워크에서 라우터를 거칠 때마다TTL 값이 1씩 감소한다. 값이 0이 되면 패킷이 폐기된다.
앞의 64비트는 네트워크 주소를 말하고 뒤 64비트는 인터페이스 주소로 이루어져 있다.
IPSec이 내장됨: IPSec은 데이터 패킷을 암호화하는 보안 네트워크 프로토콜 제품군이다.
단순해진 헤더 포맷: IPv6는 IPv4 헤더의 불필요한 필드를 제거하여 보다 빠른 처리 가능
IPv4는 체크섬이 있지만 IPv6는 체크섬이 없다. (체크섬은 상위 프로토콜인 TCP, UDP에 포함됨)
IPv6에서 TTL은 HOP limit로 대체되었다. IPv6에서는 이를 HOP limit라는 이름으로 대체하였다.
💡 Q. IPv4와 IPv6 중 어떤 것이 더 좋을까?
IPv6는 IPv4보다 많은 주소를 표현할 수 있다는 이유로 획기적으로 치고 올라왔다.
또한 IPv4보다 불필요한 헤더가 삭제되어서 빠르고 기본적으로 IPSec이라는 네트워크 보안 제품군이 포함되었기 때문에 보안적인 측면에서도 좋다.
허나, IPv6는 IPv4와의 하위 호환성을 제공하지 않으며, 일부 사용 사례에서는 속도가 느린 경우도 있다.
또한 IPv4가 부족한 주소를 여러 가지 기술로 보완해 나가면서 IPv6가 그대로 사장되는가 했다.
하지만, 2010년 후반부터 선형적인 성장기에 접어들어 여전히 성장 중이다.
✒️ 2. 클래스풀(Classful IP Addressing)
IP 주소는 네트워크 주소와 호스트 주소로 구분된다.
(기본적으로 IP 라 함은 IPv4를 기준이라고 생각하자.)
네트워크 주소는 호스트들이 모인 네트워크를 지칭하고, 호스트 주소는 개별 호스트를 구분하기 위한 주소이다.
클래스풀은 IP주소에서 네트워크 영역과 호스트 영역을 나누는 방법이다.
💡 A 클래스
먼저 A클래스는 하나의 네트워크가 가질 수 있는 호스트 수가 제일 많은 클래스이다.
IP주소를 32자리 2진수로 표현했을때, 맨 앞자리 수가 항상 0 인 경우가 바로 A클래스이다.
즉 0xxx xxxx. xxxx xxxx. xxxx xxxx. xxxx xxxx 와 같이 되어있다.
(127.x는 루프백 주소 / 0.0.0.0 특수주소)
127.0.0.1 : LocalHost (자기 본인 주소)
💡 B 클래스
B클래스는 반드시 10으로 시작한다. 2진수로 표현하면 10xx xxxx. xxxx xxxx. xxxx xxxx. xxxx xxxx 이다.
💡 C 클래스
C클래스는 반드시 110으로 시작한다. 2진수로 표현하면 110x xxxx. xxxx xxxx. xxxx xxxx. xxxx xxxx 이다.
클래스풀 주소 체계는 IP 주소의 첫 번째 옥텟에 따라 A, B, C 클래스로 나누어 고정된 서브넷 마스크를 적용한다.
이에 따라 각 클래스는 다양한 수의 호스트를 수용할 수 있게 된다.
클래스 A는 2^24 - 2개, 클래스 B는 2^16 - 2개, 클래스 C는 2^8 - 2개의 호스트를 수용할 수 있다.
🤔 Q. 왜 항상 주소 중 2개를 뺄까?
A. 맨 앞자리는 네트워크 주소로 남겨두며 마지막 주소는 브로드캐스팅 주소로 남겨놓는다.
그러나 클래스풀 방식의 단점은 네트워크 규모에 맞지 않는 주소 할당이 이루어져 IP 주소 낭비가 발생한다는 것이다.
네트워크에도 큰 규모의 클래스가 할당되므로, IP 주소가 많이 낭비된다는 것이다...
이를 해결하기 위해 등장한 것이 클래스리스 주소 체계와 서브네팅이다.
✒️ 4. 클래스리스와 서브넷마스크, 서브네팅
옛날 방식의 클래스풀의 단점을 해결하기 위해 "클래스리스"라는 개념이 나왔다.
말그대로 클래스로 나누어 할당하는 것이 아니라는 뜻이다.
클래스리스 주소 체계는 고정된 서브넷 마스크를 사용하는 클래스풀 방식의 제한을 없앴다.
가변 길이 서브넷 마스크(VLSM)를 사용하여 네트워크와 호스트 부분을 동적으로 분할할 수 있게 된 것이다.
서브넷마스크를 중심으로 어디까지가 네트워크 주소고 어디까지가 호스트주소인지를 나눈다.
- 서브네팅 : 네트워크를 나눈다는 의미
- 서브넷 : 서브네트워크, 쪼개진 네트워크
- 서브넷마스크 : 서브네트워크를 위한 비트마스크
💡 클래스풀 네트워킹(Classful Networking)
IP 주소를 A, B, C, D, E 클래스 기반으로 구분한다.
각 클래스는 고정된 서브넷 마스크(FSM)를 가지고 있다.
이 고정된 서브넷 마스크를 사용하여 네트워크와 호스트 부분을 나눈다.
IP 주소의 첫 번째 옥텟에 따라 클래스가 결정된다.
💡 클래스리스 네트워킹(Classless Inter-Domain Routing, CIDR)
고정된 서브넷 마스크 대신 가변 길이 서브넷 마스크(VLSM)를 사용한다.
네트워크와 호스트 부분을 동적으로 나눌 수 있다.
CIDR 표기법을 사용하여 네트워크를 나타낸다(예: 192.168.0.0/22).
이를 통해 더 유연하게 네트워크를 할당하고 주소 낭비를 줄일 수 있다.
-> 좀 더 세분화가 가능하다는 이야기 이다.
10개의 사무실이 있으며 사무실당 12개의 장치를 연결해야 한다면?
: 서브넷 당 12개 필요하다.
한 서브네트워크(서브넷)당 123.12.12.12/28로, 16 - 2 = 14개 장치를 확보할 수 있다.
(좀 더 세분화가 가능하여, 2개의 장치만 손해보았다.)
💡 CIDR 표기법
- IP 주소: 네트워크 주소를 나타내는 IP 주소.
- 슬래시(/): IP 주소와 서브넷 마스크 길이를 구분하는 표기.
- 서브넷 마스크 길이: 네트워크 부분을 나타내는 비트 수.
예시 ) 192.168.1.0/24
✒️ 5. 공인 IP(public IP)와 사설 IP(private IP)와 NAT
IP 주소의 부족 문제를 해결하기 위해 공인 IP와 사설 IP를 구분하고, NAT(Network Address Translation) 기술을 적용한다.
💡 NAT(Network Address Translation)
NAT은 내부 네트워크의 사설 IP 주소를 공인 IP 주소로 변환하여 인터넷에 접속할 수 있게 해준다.
이를 통해 내부 네트워크 IP가 외부로 노출되지 않는 장점이 있다.
실생활에서 공유기는 NAT 기능을 제공하여 여러 대의 호스트가 하나의 공인 IP 주소를 공유하여 인터넷에 접속할 수 있게 해준다.
(이 또한 NAT TABLE에 따라 들어오고 나가는 네트워크를 적절히 변환해준다.)
📝 면접 예상 질문
IP 주소는 무엇인가?
IPv4와 IPv6의 차이점은 무엇인가?
클래스풀(Classful) 네트워킹과 클래스리스(Classless) 네트워킹의 차이점은 무엇인가?
클래스풀 주소 체계의 문제점은 무엇인가?
서브넷 마스크란 무엇인가?
서브네팅이 필요한 이유는 무엇인가?
CIDR 표기법의 구성 요소는 무엇인가?
NAT 기술의 주요 역할과 장점은 무엇인가?