IP(Internet Protocol)는 송신 호스트와 수신 호스트가 패킷 교환 네트워크에서 정보를 주고받는 데 사용하는 정보 위주의 규약이다. OSI 네트워크 계층에서 호스트의 주소지정과 패킷 분할 및 조립 기능을 담당한다.
- 특징
- 비신뢰성(unreliability): 흐름에 관여하지 않기 때문에 보낸 정보가 제대로 갔는지 보장하지 않는다. 즉, 전송 과정에서의 패킷의 손상/유실/중복 등의 문제에 관여하지 않는 것이다. 만약 패킷의 전송과 정확한 순서를 보장하기 위해서는 TCP 프로토콜과 같은 상위 프로토콜을 이용해야 한다.
- 비연결성(connectionlessness): 데이터 전송 전에 사전 연결 설정을 하지 않고, 각 패킷을 독립적으로 전송한다.
🤔개념
IP 주소
컴퓨터가 연결된 네트워크 끝단의 주소로서, 기기가 인터넷에 접속한 곳의 네트워크상 위치이다.
- 역할: IP 패킷의 헤더 안에 기록되어 있는 도착지 IP 주소와 출발지 IP 주소에 따라 패킷을 출발지 호스트로부터 도착지 호스트까지 전달한다.
- IP 엔티티: 라우터와 호스트 컴퓨터에서 동작
- 공인/사설 IP: 실제 인터넷 상에서는 공인 IP로만 통신하며, 외부 네트워크 대역에서는 사설 IP 대역은 보이지 않는다.
[출처: 유튜브 얄팍한 코딩사전]
- 구성
- 네트워크 주소: 네트워크 고유 식별자를 가리키는 일련의 숫자
- 호스트 주소: 네트워크 상의 호스트 또는 개별 디바이스 식별자를 나타내는 일련의 숫자
사설 IP
공인 IP 주소가 공개형이라면, 사설 IP 주소는 폐쇄형이다. 즉, 사설 IP주소는 외부에 공개되지 않아 외부에서 검색 및 접근이 불가능하다.
사설 IP 주소는 인터넷 유무선 공유기를 사용할 때 흔히 접하게 되는데, 인터넷 유무선 공유기의 IP주소를 공유하여 여러 대의 컴퓨터가 인터넷에 접속되게 하려면 사설 IP 주소가 필요하기 때문이다. 이후 사설 네트워크에 속한 여러 개의 호스트는 하나의 공인 IP 주소를 사용해서 인터넷에 접속하게 된다.
- 주소 대역
- 192.168.xxx.xxx
- 172.10.xxx.xxx
- 10.xxx.xxx.xxx
IPv4
패킷 교환 네트워크 상에서 데이터를 교환하기 위한 프로토콜로서, 32비트의 주소길이를 가진다. 8비트씩 끊어서 표시되어 3개의 마침표로 구분된다. 인터넷 프로토콜의 4번째 버전이며 전 세계적으로 사용된 첫 번째 인터넷 프로토콜로 과거에 인터넷에서 사용되는 유일한 프로토콜이였으나, IP 고갈 문제로 오늘날에는 IPv6와 같이 사용되고 있다.
- 특징
- 데이터가 정확하게 전달될 것을 보장하지 않는다. 즉, 중복된 패킷을 전달하거나 패킷의 순서를 잘못 전달할 가능성도 있다.
클래스 기반 주소
| 클래스 | 범위 (이진) | 범위 (십진) | 기본 서브넷 마스크 | 예 | 비고 |
|---|
| A | 0xxxxxxx … | 1.0.0.1~126.255.255.254 | 255.0.0.0 | 61.211.123.22 | 0~127 중 0은 로컬, 1은 예약 |
| B | 10xxxxxx … | 128.0.0.1~191.255.255.254 | 255.255.0.0 | 181.123.211.33 | |
| C | 110xxxxx … | 192.0.0.1~223.255.255.254 | 255.255.255.0 | 221.23.222.222 | |
| D | 1110xxxx … | 224.0.0.0~239.255.255.255 | | | Multicast 주소 |
| E | | 240.0.0.0~254.255.255.254 | | | 예약 주소 |
⇒ 낭비가 심하다.
- A클래스(네트워크 접두사 비트가 8개, 0 고정): 최고위의 클래스로서, 첫 번째 단위는 1~126(접두사 비트가 8비트)의 범위의 IP주소(네트워크 주소)를 가지며 나머지 단위의 세 숫자(호스트 주소)는 A 클래스가 자유롭게 네트워크 사용자에게 부여가 가능한 IP이다.
- B클래스(네트워크 접두사 비트가 16개, 10 고정): 두 번째로 높은 단위의 클래스로서, IP구성에서 첫 번째 단위의 세 숫자는 128~191 가운데 하나를 가지며, 두 번째 단위의 세 숫자는 B 클래스가 접속할 수 있는 네트워크를 지시한다.
- C클래스(네트워크 접두사 비트가 24개, 110 고정): 최하위의 클래스로서, IP구성에서 첫 번째 단위의 세 숫자는 192~223 가운데 하나를 가지며, 두 번째와 세 번째 단위의 세 숫자는 C클래스가 접속할 수 있는 네트워크를 지시한다. C클래스가 자유로이 부여할 수 있는 IP는 마지막 네 번째 단위의 254개이다.
헤더
- 첫째줄
- 버전: IP 버전 번호
- IHL(Internet Header Length): IP 헤더 길이 표시
- TOS(Type of Service): DSCP + ECN ⇒ IP 프로토콜 장치에 대한 입력
- 전체 길이: 프로토콜 헤더를 포함한 패킷 길이
- 둘째줄: 단편화와 관련된 정보
- 식별 정보: 송신 호스트에 의해 생성되는 유일한 식별자로 단편들의 연결조각을 식별하는데 사용
- 플래그/프래그먼트 오프셋
- 셋째줄
- TTL(Time to Live): 데이터그램이 인터넷 시스템에 남아있도록 허락된 최대시간으로 라우터를 거칠 때마다 TTL 값이 1씩 감소한다. ⇒ 8비트이므로 카운트는 255
- 프로토콜: 데이터 내 포함된 상위 계층 프로토콜
- 헤더 체크섬: 헤더에 대한 오류 검출
통신 방식
- 멀티캐스트 프로토콜: 인터넷에서 같은 내용의 데이터를 여러 명의 특정한 그룹의 수신자들에게 동시에 전송할 수 있는 프로토콜로, 멀티캐스트 라우팅 프로토콜과 IGMP(그룹관리 프로토콜)이 합쳐진 형태이다.
- 멀티캐스트 라우팅 프로토콜: IP 주소로 구분되는 네트워크 상의 특정 그룹의 모든 사용자에게 동일한 메시지를 전송하기 위한 라우팅 프로토콜
- IGMP(Internet Group Management Protocol): 멀티캐스트를 지원하는 라우터가 멀티캐스트 그룹에 가입한 네트워크 내의 호스트를 관리하기 위해 사용하는 프로토콜 ex) IPTV
- 유니캐스트 프로토콜: 고유 주소로 식별된 하나의 네트워크 목적지에 1:1로 트래픽 또는 메시지를 전송하는 프로토콜
- 브로드캐스트 프로토콜: 하나의 송신자가 동일한 서브 네트워크 상의 모든 수신자에게 데이터를 전송하는 프로토콜로, 특정 송신자의 브로드캐스트 중에는 다른 모든 수신자는 신호를 보낼 수 없다. 호스트 id 부분이 255(이진수로 모두 1)인 경우에 해당한다.
- 애니캐스트 프로토콜: 하나의 호스트에서 그룹 내 가장 가까운 곳에 있는 수신자에게 데이터를 전달하는 프로토콜
서브넷(Subnetwork, 부분망)
서브넷(Subnet)은 네트워크 내에 존재하는 소규모 네트워크로, 네트워크 영역을 부분적으로 나눈 부분 네트워크이다. 인터넷 연결유무에 따라 Public Subnet과 Private Subnet으로 구분될 수 있다.
서브넷 마스크
서브넷 마스크는 서브넷을 만들 때 사용되는 것으로, 호스트 주소를 0으로 변환하여 IP 주소의 네트워크 주소를 반환하는 식별자 집합이다. 이를 이용하여 IP주소에서 네트워크 주소의 길이를 알 수 있다. 즉, IP 주소 체계의 네트워크 ID와 호스트 ID를 분리하는 역할을 한다. IP 주소에 서브넷 마스크를 AND 연산하면 네트워크 ID가 된다.
- 호스트 IP의 개수는
2^(호스트주소를 나타내는 비트 개수 - 2 이다. 이때 2를 빼는 이유는 호스트주소 111...1 은 브로드 캐스트 주소로, 000...0 은 네트워크 주소로 사용되기 때문이다.
- 예약 주소: 각 서브넷의 CIDR 블록에서 4개의 IP 주소와 마지막 IP 주소는 예약 주소로 사용자가 사용할 수 없다. 만일 서브넷 주소가 172.16.1.0/24일 경우,
- 172.16.1.0 : 네트워크 주소(Network ID)
- 172.16.1.255 : 네트워크 브로드캐스트 주소
- 서브넷팅: 서브넷팅을 수행하면 효율적인 네트워크 운용이 가능해진다. 즉, IP 주소 낭비를 방지할 수 있다. 서브넷 마스크의 bit 수를 1씩 증가시키면 네트워크 수는 2배수로 증가하고, 호스트 수는 2배수로 감소한다.
CIDR(Classless Inter-Domain Routing)
클래스를 없애고 비트 단위로 네트워크를 표현하는 주소 체계로, /24, /20 같은 프리픽스 길이를 사용한다. 인터넷상의 데이터 라우팅 효율성을 향상시킨다. 네트워크 라우터에서 표시된 서브넷에 따라 해당하는 디바이스로 데이터 패킷을 라우팅할 수 있다.
IPv6
초창기 인터넷은 IPv4 프로토콜로 구축되다가 32비트라는 제한된 주소 공간 및 국가별 할당 주소가 거의 소진되고 있다는 한계점으로 인해 지속적인 인터넷 발전에 문제가 예상되었다. 이에 대한 대안으로써 IPv6 프로토콜이 탄생하였다(휴대폰 및 컴퓨터에 할당되어 적용되고 있다).
IPv6(Internet Protocol version 6)는 인터넷 프로토콜 스택 중 네트워크 계층의 프로토콜로서 버전 6 인터넷 프로토콜로 제정된 차세대 인터넷 프로토콜을 말한다.
- 주소 유형
| 주소 | 구분 | 함축표현 |
|---|
| 1080:0:0:0:8:800:200C:417A | Unicast | 1080::8:800:200C:417A |
| FF01:0:0:0:0:0:0:101 | Multicast | FF01::101 |
| 0:0:0:0:0:0:0:1 | Loopback | ::1 |
| 0:0:0:0:0:0:0:0 | Unsepcified | :: |
헤더
- IPv4와 비교시 없어진 것
- IHL: IPv6에서 헤더의 길이가 항상 40바이트로 고정이기 때문에 헤더 필드 길이가 포함되지 않아도 된다.
- Identification, Flags, Fragment Offset: IPv6 Datagram Extension Headers에 별도로 정의된다.
- Header Checksum: IPv6 패킷의 비트레벨 오류 감지는 링크 계층에서 수행된다.
| 구분 | IPv4 | IPv6 |
|---|
| 주소 길이 | 32bit | 128bit |
| 표시 방법 | 8비트씩 4부분으로 나뉜 10진수 | 16비트씩 8부분으로 나뉜 16진수 |
| 주소 개수 | 약 43억 개 | 3.4 x 10^38 |
| 주소 할당 | 클래스 단위 비순차적 할당 | 네트워크 규모 및 단말기 수에 따른 순차적 할당 |
| 헤더 크기 | 20바이트의 기본 헤더 부분과 가변적인 길이를 가지고 있는 옵션 부분으로 구성 | 40바이트의 고정길이 |
| QoS | Best Effort 방식 | 등급별, 서비스별 패킷 구분 보장 |
| 보안 기능 | IPSec 프로토콜 별도 설치 | 보안과 인증 확장 헤더 사용 |
| Plug & Play | x | o |
| 모바일 IP | 어려움 | 용이 |
| 웹 캐스팅 | 어려움 | 용이 |
| 전송 방식 | 유니캐스트, 멀티캐스트, 브로드캐스트 | 유니캐스트, 멀티캐스트, 애니캐스트 |
DHCP
DHCP(Dynamic Host Configuration Protocol)는 동적 호스트 구성 프로토콜로 IP 구성 관리를 단순화하는 IP 표준이다. DHCP 표준은 DHCP 서버를 사용하여 IP 주소 및 관련된 기타 구성 세부 정보를 네트워크의 DHCP 사용 클라이언트에게 동적으로 할당하는 방법을 제공한다.
- 역할
- 네트워크 관리자들이 조직 내 네트워크 상에서 IP 주소를 중앙에서 관리하고 할당해줄 수 있도록 한다.
- DHCP를 사용하지 않는 경우: 각 컴퓨터마다 IP 주소가 수작업으로 입력되어야만 하며, 만약 컴퓨터가 네트워크 상 다른 장소로 이동되면 새로운 IP 주소가 입력되어야 한다.
- DHCP를 사용하는 경우: 네트워크 관리자가 DHCP 서버를 통해 중앙에서 IP 주소를 관리 및 담당할 수 있게 되고, 컴퓨터가 네트워크 상 다른 장소에 접속되면 자동으로 새로운 IP 주소를 보내줄 수 있게 한다.
임대
DHCP는 주어진 IP 주소가 일정한 시간동안만 해당 컴퓨터에 유효하도록 하는 ‘임대’ 개념을 사용하며, 임대 기간은 사용자가 특정한 장소에 얼마나 오랫동안 인터넷 접속이 필요할 것인지에 따라 달라진다.예를 들어, 사용자들이 자주 바뀌는 학교와 같은 환경에서 유용하게 활용될 수 있다.
사용 가능한 IP 주소의 개수보다 더 많은 컴퓨터가 있는 경우에도 IP 주소의 임대시간을 짧게 함으로써 네트워크를 동적으로 재구성할 수 있다(단, 영구적인 IP 주소를 필요로 하는 웹서버에 대해서는 정적인 주소를 제공).
NAT
NAT(Network Address Translation)은 IP 패킷의 TCP/UDP 포트 숫자, 출발지 및 목적지 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술을 말한다. 대개 사설 네트워크 내 여러 개의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위해 사용된다.
- 특징
- 패킷의 변화로 인해 IP나 TCP/UDP의 체크섬을 다시 계산해야 한다.
- 일반적으로 사설 IP는 외부에서 안보이기 때문에, 먼저 내부에서 외부로 나갔던 패킷만 다시 들어올 수 있다. 다만, 포트포워딩을 통해 외부에서 내부로 먼저 들어오게 허용할 수 있다.
- SNAT(Source NAT): 출발지 주소를 변경하는 NAT
- DNAT(Destination NAT): 도착지 주소를 변경하는 NAT
도메인 접속 과정
이전 DNS 포스팅에서 DNS 관점에서 특정 도메인 주소에 접속하는 과정을 언급한 바 있다. 이번에는 TCP/IP 통신 관점에서 살펴보고자 한다.
- 순서
- 주소창에 URL 입력 후 Enter를 입력한다.
- 웹 브라우저가 URL을 해석한 후, 문법에 맞으면 URL에 인코딩을 적용한다.
- HSTS(HTTP Strict Transport Security) 목록을 로드한다. 이때, HSTS는 HTTP 대신 HTTPS만을 사용하여 통신해야 한다고 웹 사이트가 웹 브라우저에 알리는 보안 기능으로, 사이트가 해당 목록에 있는 경우에는 HTTPS로 요청하게 된다.
- DNS를 조회하여 IP 주소를 얻는다.
- ARP(Address Resolution Protocol)로 IP 주소에 해당하는 MAC 주소를 얻는다.
- 3-way handshake로 TCP 연결을 수립하고, 4-way handshake로 종료한다.
- HTTPS인 경우 SSL/TLS handshake 과정이 추가된다.
- HTTP로 요청한 후 웹 브라우저는 응답을 바탕으로 화면을 렌더링한다.
😎실습
리눅스 터미널에서의 ip a 명령어 결과를 살펴보자.

참고자료
IP주소를 알아봅시다! (Feat. 공인/사설/고정/유동IP, 포트포워딩, DMZ, DDNS)
IP주소의 종류와 특징
IPv4주소 체계에 대한 암기사항
IP헤더 형식과 의미 요약
[네트워크] 서브넷, 서브넷마스크, 서브넷팅이란? | 서브넷팅 예제
Unicast, Broadcast, Multicast