IP (Internet Protocol)
ip deepdive
IP (Internet Protocol) 개요
IP(Internet Protocol)는 네트워크 상에서 장치들이 데이터를 주고받기 위해 사용하는 규약이다. IP는 데이터를 패킷 단위로 분할하고, 송신자와 수신자 간의 데이터를 올바르게 전달하기 위한 주소 체계를 사용한다. 네트워크 내 모든 장치는 고유의 IP 주소를 할당받아야 통신할 수 있으며, IP 주소는 송수신자 간 데이터를 식별하고 라우팅하는 데 필수적이다. IP는 특히 인터넷 통신의 기반 프로토콜로 사용되며, TCP/IP 프로토콜 스택 내 네트워크 계층에서 작동한다.
IP 주소의 형식과 구조
IP 주소는 특정 형식으로 구성된 숫자들로 이루어진 주소 체계로, 네트워크 상에서 장치를 식별하는 고유 식별자이다. IP 주소는 IPv4와 IPv6의 두 가지 버전이 있으며, 네트워크와 호스트를 식별하는 데 차이가 있다.
- IPv4 (Internet Protocol version 4)
- 주소 길이: 32비트(4바이트)
- 주소 체계: 각 바이트는 0~255 범위의 십진수로, 점(
.
)으로 구분된 4개의 구간(옥텟)으로 표현된다. - 예시:
192.168.0.1
- 구성:
- 앞쪽 구간들은 네트워크 주소로, 마지막 구간은 호스트 주소로 사용된다. 이는 네트워크와 호스트를 구분하여 각 장치가 속한 네트워크와 개별 장치를 식별하도록 한다.
- IPv6 (Internet Protocol version 6)
- 주소 길이: 128비트(16바이트)
- 주소 체계: 16비트씩 8개의 부분으로 구성되고, 콜론(
:
)으로 구분된다. - 예시:
2001:0db8:85a3:0000:0000:8a2e:0370:7334
- 구성:
- IPv4보다 주소 공간이 훨씬 넓고, 네트워크와 호스트 부분을 보다 세분화하여 대규모 네트워크를 지원할 수 있다. 이를 통해 장치의 고유 식별 및 다양한 통신 방식을 지원한다.
IP 주소의 클래스와 서브넷
IPv4 주소는 네트워크 규모에 맞게 클래스 방식으로 구분된다. IP 클래스는 IP 주소의 범위와 서브넷 마스크에 따라 A, B, C, D, E 클래스로 구분된다. 클래스에 따라 네트워크와 호스트의 구간 비율이 다르며, 보통 A, B, C 클래스는 일반적으로 네트워크에 할당된다.
- 클래스 A:
- 주소 범위:
0.0.0.0
~127.255.255.255
- 구성: 첫 번째 옥텟은 네트워크 부분, 나머지 3개 옥텟은 호스트 부분이다.
- 서브넷 마스크:
255.0.0.0
(/8) - 용도: 대규모 네트워크에 사용.
- 주소 범위:
- 클래스 B:
- 주소 범위:
128.0.0.0
~191.255.255.255
- 구성: 앞 두 옥텟은 네트워크 부분, 나머지 2개 옥텟은 호스트 부분이다.
- 서브넷 마스크:
255.255.0.0
(/16) - 용도: 중규모 네트워크에 사용.
- 주소 범위:
- 클래스 C:
- 주소 범위:
192.0.0.0
~223.255.255.255
- 구성: 앞 세 옥텟은 네트워크 부분, 마지막 1개 옥텟은 호스트 부분이다.
- 서브넷 마스크:
255.255.255.0
(/24) - 용도: 소규모 네트워크에 사용.
- 주소 범위:
- 클래스 D:
- 주소 범위:
224.0.0.0
~239.255.255.255
- 용도: 멀티캐스트 그룹에 사용.
- 주소 범위:
- 클래스 E:
- 주소 범위:
240.0.0.0
~255.255.255.255
- 용도: 실험적 목적.
- 주소 범위:
IP 서브넷팅과 CIDR 표기법
서브넷팅(Subnetting)은 IP 주소를 더 작은 네트워크 단위로 나누어 네트워크를 효율적으로 사용하는 기법이다. 서브넷을 사용하면 하나의 IP 네트워크를 여러 개의 작은 네트워크로 나누어 각각에 고유 IP 대역을 할당할 수 있다. 이는 네트워크의 확장성을 높이고, IP 주소 자원의 효율적인 관리에 기여한다.
- CIDR (Classless Inter-Domain Routing) 표기법
- CIDR은 IP 주소 뒤에
/
와 비트 수를 붙여 네트워크 부분의 길이를 표현한다. - 예를 들어,
192.168.1.0/24
는 앞 24비트가 네트워크 부분이며, 남은 8비트가 호스트 주소이다. - 이를 통해 클래스에 의존하지 않고 유연한 서브넷팅이 가능하다.
- CIDR은 IP 주소 뒤에
- 서브넷 마스크
- 서브넷 마스크는 네트워크와 호스트 주소 부분을 구분하는 데 사용된다. 예를 들어,
255.255.255.0
이라는 서브넷 마스크는 IP 주소에서 앞 24비트를 네트워크로 구분하는 데 사용한다.
- 서브넷 마스크는 네트워크와 호스트 주소 부분을 구분하는 데 사용된다. 예를 들어,
공인 IP와 사설 IP
- 공인 IP (Public IP)
- 정의: 인터넷 서비스 공급자(ISP)가 할당하는 외부 네트워크에 공개된 IP 주소이다.
- 특징: 고유하며, 전 세계 어디서든 유일하게 존재하는 주소로, 인터넷 상에서 장치를 식별할 수 있다.
- 사용: 서버나 웹사이트, 원격 접근이 필요한 장치에 사용되어 외부에서 접속할 수 있도록 한다.
- 사설 IP (Private IP)
- 정의: 가정이나 회사 네트워크 같은 로컬 네트워크에 할당된 IP 주소로, 외부 네트워크에는 공개되지 않는다.
- 특징: 동일한 사설 IP 주소가 여러 네트워크에서 중복 사용될 수 있다. 인터넷 접속 시, NAT(Network Address Translation)를 통해 공인 IP로 변환하여 통신한다.
- 사용: 내부 네트워크 장치 간 통신(예: PC, 프린터 등)에 사용된다.
IP 주소의 할당 방식과 NAT
공인 IP와 사설 IP로 IP 주소를 구분하여 네트워크에 할당할 수 있다. 공인 IP는 인터넷 상에서 고유한 IP로, ISP(인터넷 서비스 제공자)가 관리하며 외부 네트워크에서 식별 가능하다. 사설 IP는 내부 네트워크에서만 사용되며, 여러 네트워크에서 중복 사용이 가능하다. NAT(Network Address Translation)는 사설 IP 주소를 공인 IP 주소로 변환하여 여러 장치가 인터넷에 동시에 접속할 수 있게 한다.
- NAT:
- 사설 IP 주소를 공인 IP로 변환하여 인터넷 통신을 가능하게 한다.
- 라우터는 매핑 테이블을 사용해 사설 IP와 공인 IP 간의 변환을 관리한다.
- 패킷이 라우터를 통과할 때 출발지 IP를 공인 IP로 변환하여 외부 네트워크와의 통신을 가능하게 한다.
- 사설 IP 주소 범위 (IPv4):
- 클래스 A:
10.0.0.0
~10.255.255.255
- 클래스 B:
172.16.0.0
~172.31.255.255
- 클래스 C:
192.168.0.0
~192.168.255.255
- 클래스 A:
라우터와 와이파이의 매핑 테이블
- 매핑 테이블 (Mapping Table)
- NAT 매핑 테이블: 라우터는 NAT(Network Address Translation) 기능을 통해 사설 IP를 공인 IP로 변환한다. 매핑 테이블은 내부 네트워크의 사설 IP와 공인 IP 사이의 관계를 기록하여, 데이터 패킷이 라우터를 통과할 때 원래 출발지와 목적지를 추적한다.
- 역할: 패킷 전송 시 내부 IP 주소와 포트를 외부에서 유효한 공인 IP 주소와 포트로 변환한다. 이렇게 하면 여러 장치가 같은 공인 IP로 인터넷에 접근할 수 있다.
- 작동 방식: 예를 들어, 사설 IP
192.168.1.10
에서 외부 서버에 접속하려고 하면, 라우터는192.168.1.10:포트번호
를 특정 공인 IP203.0.113.1:포트번호
와 매핑하여 요청을 전송한다. 응답이 돌아올 때 라우터는 매핑 테이블을 참조해192.168.1.10
에 응답을 전달한다.
IPv6
IPv4의 주소는 32비트로 제한되어 있으며, 이로 인해 주소 자원이 고갈되었다. IPv6는 128비트 주소 체계를 사용해 이를 해결하며, 3.4 x 10³⁸개의 주소를 제공한다. IPv6는 자동 구성, 보안성 강화, 멀티캐스트 지원 등의 기능을 통해 현대 네트워크 환경에 적합한 구조를 제공한다.
- IPv6 특징
- 주소 공간 증가: 128비트 체계로 약 3.4×10³⁸개의 주소를 지원한다. 이는 IPv4에 비해 거의 무한에 가까운 주소 공간을 제공하여, 네트워크 확장에 제약이 없다.
- 향상된 기능:
- 자동 구성(Stateless Address Autoconfiguration, SLAAC): 라우터가 자동으로 장치에 IP를 할당하여 네트워크 구성을 단순화한다.
- 헤더 단순화: IPv6는 IPv4보다 패킷 헤더를 단순화하여 라우팅 속도를 향상시킨다.
- 보안성 강화: IPv6는 IPsec(보안 프로토콜) 사용을 기본적으로 요구하여 보안성을 높인다.
- IPv6 주소 구조:
- 형식: 16비트씩 8개 부분으로 나누어 콜론(
:
)으로 구분된다. (예:2001:0db8:85a3:0000:0000:8a2e:0370:7334
) - 축약법: 0이 연속되는 부분을
::
로 축약할 수 있다. (예:2001:db8::8a2e:370:7334
)
- 형식: 16비트씩 8개 부분으로 나누어 콜론(
- IPv6 도입 방법:
- Dual Stack: IPv4와 IPv6를 동시에 사용하여 IPv6로의 전환을 용이하게 한다.
- 터널링: IPv4 네트워크에서 IPv6 패킷을 전송하여 호환성을 유지한다.
- 번역(Translation): IPv4와 IPv6 간의 상호 변환을 통해 호환성을 유지하고 통신을 지원한다.
MAC 주소와 ARP
네트워크 계층에서 IP 주소가 사용되지만, 데이터 링크 계층에서는 MAC 주소를 통해 장치를 식별한다. MAC 주소는 각 네트워크 인터페이스에 고유하게 할당된 식별 번호로, 네트워크 장비 간 통신을 위한 물리적 주소이다.
- MAC 주소의 구조와 고유성:
- MAC 주소는 48비트(6바이트)로 구성되며, 16진수로 표현된다. 예를 들어,
00:1A:2B:3C:4D:5E
와 같은 형식을 사용한다. - MAC 주소는 제조사에서 할당하며, 앞쪽 3바이트는 제조사를 식별하고, 나머지 3바이트는 장치별 고유 번호로 사용된다. 이를 통해 전 세계에서 고유한 MAC 주소를 제공한다.
- MAC 주소는 48비트(6바이트)로 구성되며, 16진수로 표현된다. 예를 들어,
- ARP (Address Resolution Protocol):
- 네트워크 상에서 IP 주소를 MAC 주소로 변환해주는 프로토콜이다.
- 데이터 전송 시 ARP를 통해 IP 주소에 해당하는 MAC 주소를 조회하여 데이터를 올바르게 전송할 수 있도록 한다.