🔵 IP 주소

IP 주소는 네트워크 상에서 장치를 식별하기 위한 논리적 주소입니다.
인터넷에 연결된 모든 장치는 IP 주소를 통해 서로를 구분하고 통신합니다.
IP 주소의 핵심 역할은 두 가지입니다.
첫째는 식별로, 이 패킷이 어떤 장치에서 왔는지를 나타내고,
둘째는 위치로, 이 패킷을 어느 네트워크로 전달해야 하는지를 판단하는 기준이 됩니다.
MAC 주소가 하드웨어에 고정된 물리 주소라면
IP 주소는 네트워크 환경에 따라 변경될 수 있는 논리 주소입니다.
이 특성 덕분에 네트워크 간 이동이나 주소 재할당이 가능하고
라우터를 통한 인터넷 규모의 라우팅이 가능합니다.
IP 주소는 일반적으로 네트워크 부분과 호스트 부분으로 구성됩니다.
네트워크 부분은 장치가 어느 네트워크에 속해 있는지를 나타내고,
호스트 부분은 해당 네트워크 안에서 어떤 장치인지를 구분합니다.
이 구조 덕분에 라우터는 개별 장치가 아니라
“어느 네트워크로 가야 하는지”만 판단해 패킷을 전달할 수 있습니다.
🔵 IPV4와 IPV6 차이점

가장 큰 차이는 주소 공간의 크기이고, 그로 인해 네트워크 구조 자체가 달라졌습니다.
IPv4는 32비트 주소 체계를 사용해 약 43억 개의 주소만 제공할 수 있었으며,
인터넷이 급격히 성장하면서 주소 고갈 문제가 발생했습니다.
이를 보완하기 위해 NAT가 도입되어 여러 장치가 하나의 공인 IP를 공유할 수 있게 되었으나,
그 결과 네트워크 구조가 복잡해지고 외부에서 내부 장치로의 직접 통신이 어려워지는 한계가 발생했습니다.
IPv6는 이러한 문제를 근본적으로 해결하기 위해
128비트 주소 체계를 도입하여 사실상 무한에 가까운 주소를 제공하며,
각 장치가 공인 IP를 직접 가질 수 있도록 설계되었습니다.
이로 인해 NAT에 대한 의존이 줄어들고
네트워크 구조와 통신 방식이 단순해졌습니다.
또한 IPv6는 헤더 구조를 단순화하여
라우터가 패킷 전달에만 집중하도록 설계되었으며,
브로드캐스트를 제거하고 멀티캐스트와 애니캐스트 방식을 사용해
불필요한 트래픽을 줄였습니다.
주소 설정 방식에서도 차이가 있으며,
IPv6는 자동 주소 설정을 기본으로 지원합니다.
다만 기존 IPv4 인프라가 매우 크기 때문에
현재 인터넷은 IPv4와 IPv6를 함께 사용하는
Dual Stack 환경으로 운영되고 있습니다.
🔵 서브넷과 서브넷 마스크

서브넷은 하나의 IP 네트워크를 더 작은 네트워크 단위로 나눈 것입니다.
네트워크를 나누는 이유는
IP 주소를 효율적으로 사용하고
불필요한 통신을 줄여 네트워크를 관리하기 쉽게 하기 위해서입니다.
서브넷 마스크는
IP 주소에서 어디까지가 네트워크이고, 어디부터가 장치인지 구분하는 기준입니다.
IP 주소가 192.168.123.132이고
서브넷 마스크가 255.255.255.0이라면,
- 네트워크: 192.168.123.0
- 장치 하나: 192.168.123.132
이라는 의미입니다.
이 구조 덕분에
- 같은 서브넷이면 → 직접 통신
- 다른 서브넷이면 → 라우터를 통해 통신할 수 있습니다.
🔵 라우팅
라우팅은 패킷을 목적지 네트워크까지 전달하기 위해
어떤 경로로 보낼지 결정하는 과정입니다.
라우터는 패킷의 목적지 IP 주소를 기준으로
어느 네트워크로 보내야 할지를 판단하며
이때 참고하는 정보가 라우팅 테이블입니다.
라우팅 테이블에는 목적지 네트워크와 그 네트워크로 가기 위한 다음 경로가 저장돼 있고,
라우터는 그중에서 가장 구체적인 네트워크 경로(Longest Prefix Match)를 선택해 패킷을 전달합니다.
이런 라우팅 과정이 필요한 이유는 네트워크가 여러 서브넷으로 나뉘어 있기 때문입니다.
같은 서브넷이 아닌 경우에는 패킷이 반드시 라우터를 거쳐야 하며
이를 통해 서로 다른 네트워크 간 통신이 가능해집니다.
즉, 라우팅은 서로 다른 네트워크를 연결하기 위한 핵심 메커니즘입니다.
🔵 Public IP와 Private IP 차이

Public IP와 Private IP의 가장 큰 차이는
인터넷에서 직접 접근이 가능한지 여부입니다.
Public IP는 인터넷에서 유일하게 식별되는 주소로
외부 네트워크에서 직접 접근이 가능합니다.
주로 서버나 게이트웨이 장비에 할당됩니다.
반면 Private IP는 내부 네트워크에서만 사용하는 주소입니다.
인터넷에서는 직접 접근할 수 없고,
집이나 회사 같은 내부 네트워크 안에서만 사용됩니다.
🔵 라우팅 프로토콜
라우팅 프로토콜은 라우터들이 서로 라우팅 정보를 교환해
패킷을 목적지까지 전달하기 위한 경로를 자동으로 학습하고 갱신하는 규칙입니다.
네트워크 규모가 커질수록 모든 경로를 수동으로 설정하는 데 한계가 있기 때문에
라우팅 프로토콜을 통해 라우팅 테이블을 자동으로 유지합니다.
라우터들은 라우팅 프로토콜을 통해 목적지 네트워크 정보와 함께 거리나 비용 같은 메트릭을 교환하고
이를 기준으로 가장 효율적인 경로를 선택합니다.
이 과정 덕분에 네트워크 장애나 토폴로지 변경이 발생하더라도 경로를 자동으로 재계산할 수 있습니다.
🔵 IP 할당 방법
IP 주소는 정적 할당과 동적 할당 두 가지 방식으로 할당됩니다.
정적 할당은 관리자가 IP 주소를 직접 지정하는 방식입니다.
주소가 변경되면 안 되는 서버나 네트워크 장비에 주로 사용되며,
항상 같은 IP를 사용해야 하기 때문에
접근 경로나 설정이 고정돼야 하는 환경에 적합합니다.
동적 할당은 DHCP를 통해 IP 주소를 자동으로 할당하는 방식입니다.
DHCP는 장치가 네트워크에 연결되면
IP 주소와 기본 설정을 자동으로 받아오게 해주는 프로토콜입니다
클라이언트가 네트워크에 연결되면
DHCP 서버는 사용 가능한 IP 주소를 일정 시간 동안 임대해 주며,
임대 기간이 끝나면 이를 갱신하거나 회수합니다.
이 방식은 IP 주소를 효율적으로 관리할 수 있어
일반 사용자 환경에서 널리 사용됩니다.
🔵 NAT
NAT는 사설 IP 주소를 공인 IP 주소로 변환해주는 기술입니다.
IPv4 환경에서 주소가 부족해지면서
하나의 공인 IP를 여러 장치가 함께 사용할 수 있도록 하기 위해 도입되었습니다.
내부 네트워크의 장치들은 Private IP를 사용하고,
외부 인터넷과 통신할 때는 NAT 장비가 이 주소를 Public IP로 변환해 패킷을 전달합니다.
이때 NAT는 포트 번호를 기준으로 어떤 내부 장치의 요청인지 구분하고
응답이 돌아오면 다시 원래의 장치로 전달합니다.
이 구조 덕분에 내부 IP 주소를 외부에 노출하지 않으면서도
여러 장치가 동시에 인터넷을 사용할 수 있게 되었지만,
그만큼 네트워크 구조가 복잡해지고 외부에서 내부 장치로 직접 접근하기 어려워졌습니다.
특히 P2P나 실시간 통신처럼 엔드 투 엔드 연결이 중요한 서비스에서는 제약이 발생합니다.
즉, NAT는 IPv4 주소 부족을 해결하기 위한 현실적인 대안이었지만
엔드 투 엔드 통신을 깨뜨리는 트레이드오프를 가진 기술입니다.
🔵 ICMP

ICMP는 네트워크 통신 중 발생하는 오류나 상태 정보를 전달하기 위한 프로토콜입니다.
IP 패킷 자체를 전달하는 역할은 하지 않고,
IP 통신이 정상적으로 이루어지고 있는지를 보조적으로 알려주는 역할을 합니다.
라우터나 호스트는 패킷을 전달할 수 없거나 문제가 발생했을 때
그 사실을 ICMP 메시지로 송신자에게 알려줍니다.
예를 들어 목적지에 도달할 수 없을 경우에는 Destination Unreachable 메시지를 보내고
패킷의 TTL이 만료되면 Time Exceeded 메시지를 전달합니다.
우리가 흔히 사용하는 ping이나 traceroute 같은 네트워크 진단 도구도 ICMP를 기반으로 동작합니다.
ping은 ICMP Echo Request와 Echo Reply를 이용해 대상 호스트의 도달 가능 여부와 지연 시간을 확인하고,
traceroute는 ICMP 메시지를 활용해 패킷이 거치는 경로를 추적합니다.

🔵 브라우저 주소창에 www.google.com을 입력하였을 때 웹 브라우저 요청 흐름을 패킷 관점에서 설명
애플리케이션 계층
- 웹 브라우저에 ‘www.google.com’을 입력하면
3-way handshake를 통해 TCP 연결을 한 뒤
송신 층 애플리케이션 계층에서 ‘어느 웹 페이지를 보고 싶다’라는 HTTP 요청을 지시하며 HTTP 데이터가 생성됩니다.
트랜스포트 계층
- 애플리케이션 계층에서 생성된 HTTP 데이터는 트랜스포트 계층에 도착하면,
TCP 세그먼트 단위로 잘게 나누고 송 수신 측 포트 번호 및 순서 번호(시퀀스 넘버)를 붙입니다.
- 순서 번호는 여러 개의 패킷이 동시에 보내지기 때문에 어떤 패킷이 먼저 왔는지 구별하는 용도로 사용합니다.
네트워크 계층
- 네트워크 계층에서는 트랜스포트 계층에서 생성된 TCP 세그먼트를 IP 패킷에 담습니다.
이때, 추가된 IP 헤더에는 송 수신 측 IP 주소가 담겨 있습니다.
- 송신 입장에서는 자신의 IP 주소는 알지만, 아직 수신 측의 IP 주소는 모릅니다.
하지만, ‘www.google.com’이라는 도메인 정보로 IP 주소를 알아낼 수 있습니다.
링크 계층
- 링크 계층에서는 물리 주소인 자신(송신 측)의 MAC 주소를 추가합니다.
- 이때 수신 측 IP 주소를 MAC 주소로 바꿔주는 ARP 프로토콜을 사용하여 MAC 주소를 알아냅니다.
이때는 패킷이라는 표현은 쓰지 않고, 프레임이라는 표현을 씁니다.
- 링크 계층까지 도달하여 수신 측으로 HTTP 요청 데이터를 보내고,
수신 측도 송신 측에게 HTTP 응답 데이터를 보내고 나면 4 way handshake를 통해 TCP 연결을 해제합니다.
- 참고로 물리 계층에서는 뭔가 헤더를 더 붙이지는 않고,
프레임을 0과 1의 비트 스트림으로 바꿔서 매체에 실어 보냅니다.
'Programming > 컴퓨터 네트워크' 카테고리의 다른 글
| 🔵 UDP & TCP (1) | 2025.12.11 |
|---|---|
| 🔵 애플리케이션 레이어 (0) | 2025.12.02 |
| 🔵 HTTP/1.1 vs HTTP/2 vs HTTP3 차이 (0) | 2025.11.25 |
| 🔵 HTTP 🟢 HTTPS 🔴 DNS (0) | 2025.11.25 |
| 🔵 TCP/IP & OSI 7 Layer (0) | 2025.11.20 |