[네트워크] 인터넷에서 기기가 통신하는 방법 – 패킷, 프로토콜, NAT

2025. 7. 18. 19:47·CS

1. 패킷(packet)

  • 인터넷 프로토콜은 모든 데이터의 구조를 해체한 후 여러개의 패킷으로 분리해 전송한다.
  • 각 패킷에는 발신 및 수신 주소가 포함된 주소 태그가 지정되고, 이 태그는 패킷의 크기와 유형 등의 정보를 담은 패킷 헤더(packet header)에 기록된다.
  • 라우터는 패킷의 헤더를 읽고, IP 주소의 앞부분(=네트워크 주소)을 기준으로 같은 네트워크에 있는 목적지로 직접 보내거나, 그렇지 않으면 해당 목적지로 하는 방향에 있는 다음 라우터(다음 홉)로 전달하여 인터넷 상에서 최종 목적지까지 도달하도록 한다.

 

2. 프로토콜

  • 프로토콜은 기기가 어떻게 통신해야 하는지, 오류가 발생했을 때 어떻게 대처해야 하는지를 정의한 규칙
  • 예)
    • 패킷에 패킷 헤더가 없으면 어떻게 할까?
    • 수신자 주소를 찾을 수 없으면 어떻게 해야할까?
    • 패킷을 수정할 수 있을까?
  • 주요 프로토콜 유형
    • TCP: 패킷을 정확하고 안전하게 전송하지만 속도가 느린 편
    • UDP: 정확성보다는 속도를 우선시
    • QUIC: 여러 개의 빠른 UDP 연결을 활용하면서도 TCP처럼 신뢰 가능

 

3. 인터넷 프로토콜(IP)

  • IP는 IP 주소와 IP 패킷의 형식을 표준화하는 프로토콜
  • IP 주소는 인터넷 프로토콜 표준을 따른 네트워크 주소이며, 다음과 같은 유형이 있다.
    • 공용 IP 주소: 인터넷에 직접 접속할 수 있는 주소 (예: ISP가 할당한 라우터 주소)
    • 사설 IP 주소: 중개자(NAT 등)를 통해 인터넷에 접속하는 주소. 근거리 통신망(LAN)이나 가상 사설망(VPN) 같은 사설망 안에서만 통신 가능

 

4. 네트워크 주소 변환(NAT: Network Address Translation)

  • 인터넷에 사설망이 연결되어 라우터를 거쳐 패킷을 보낼 때, NAT는 출발지/목적지 주소를 공용 IP ↔ 사설 IP로 변환해준다. 즉, 망 안에서만 통용되는 사설 IP를 외부 인터넷에서 사용 가능한 공용 IP로 변환하는 것
  • 예시: 내 컴퓨터(사설 IP)가 구글에 접속할 때
    1. 내 컴퓨터의 IP: `192.168.0.15` (사설 IP)
    2. 라우터의 공용 IP: `203.0.113.10`
    3. NAT 작동: 라우터는 패킷을 보내기 전에 출발지 주소를 `192.168.0.15` → `203.0.113.10`으로 변환해 외부로 전송
    4. 구글 서버가 응답을 보내면, 라우터는 다시 `203.0.113.10` → `192.168.0.15`로 바꿔 내부 장치에 전달
📍포트 포워딩(Port Forwarding)
NAT 환경에서 외부에서 사설 IP를 사용하는 디바이스에 접속하려면 포트 포워딩이 필요하다.
공유기(NAT 장비)에 외부 포트를 지정하여 내부 IP로 트래픽을 전달하는 방식이다.
예: 외부 `203.0.113.5:8080` → 내부 `192.168.0.15:80`

 

5. IPv4 주소

  • IPv4는 32비트 주소 체계로 구성되어 약 43억 개의 고유 주소를 제공한다.
이진수 표기: `11000110.00110011.01100100.00000111`
십진수 표기: `198.51.100.7` (각 블록은 0~255, 8비트 × 4개)
  • 사설 IP 주소 대역(RFC1918)
    1. 192.168.xxx.xxx
    2. 10.xxx.xxx.xxx
    3. 172.16.xxx.xxx~172.31.xxx.xxx
  • 이 외 대부분은 공용 IP 주소이며, `0.0.0.0 ~ 0.0.0.3`, `127.xxx.xxx.xxx` 등은 예약되어 사용 불가

 

6. IPv6 주소

  • IPv6는 126비트 주소 체계로, 16비트씩 8개 블록으로 구성되며 쌍점(:)으로 구분한다.
  • 표현은 16진수로 나타내며, 연속된 0은 `::`으로 축약 가능하다.
이진수 표기: `0010000000000001:...:0000000111111111`
16진수 표기: `2001:0DB8:0000:0001:0000:0000:0010:01FF`
16진수 표기 축약형: `2001:0DB8:0000:0001::0010:01FF`

 

7. IPv6는 왜 NAT가 필요 없을까?

  • IPv6는 주소 공간이 매우 넓어, 모든 디바이스가 전 세계에서 유효한 공용 주소(Global Unicast Address)를 직접 가질 수 있다. 즉, NAT 없이도 디바이스가 직접 인터넷에서 서비스 제공이 가능하다.
  • 반면 IPv4에서는 공용 IP 부족 때문에 한 라우터에 여러 디바이스가 연결되고, 각 디바이스는 NAT 뒤에 있는 사설 IP 하나만 할당 받는다. 이로 인해 외부에서 직접 접근이 불가능한 구조였다.
  • 단, IPv6에도 사설 IP에 해당하는 ULA(Unique Local Address)가 존재한다. IPv4처럼 사설망 안에서만 패킷을 라우팅한다.

 

 

 

 

 

✍️ 『읽자마자 IT 전문가가 되는 네트워크 교과서』의 내용을 참고해 정리한 글입니다.

 

'CS' 카테고리의 다른 글

[네트워크] 웹사이트 접속 과정 – DNS, HTTP, HTTPS, TLS  (2) 2025.08.17
[네트워크] 데이터를 전송하는 방법 - UDP, TCP, QUIC  (1) 2025.08.03
[네트워크] 인터넷에서 정보가 이동하는 구조 - BGP, IXP  (3) 2025.07.27
[네트워크] 기기가 네트워크에 연결되는 과정  (0) 2025.07.07
'CS' 카테고리의 다른 글
  • [네트워크] 웹사이트 접속 과정 – DNS, HTTP, HTTPS, TLS
  • [네트워크] 데이터를 전송하는 방법 - UDP, TCP, QUIC
  • [네트워크] 인터넷에서 정보가 이동하는 구조 - BGP, IXP
  • [네트워크] 기기가 네트워크에 연결되는 과정
oniwon
oniwon
  • oniwon
    눙눙의 개발일지
    oniwon
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Java
      • Spring
      • CS
      • Infra
      • Projects
      • F-Lab
      • Airflow
  • 인기 글

  • 블로그 메뉴

    • 홈
    • 개인정보처리방침 (Privacy Policy)
    • 블로그 소개 (About)
  • 최근 글

  • 태그

    F-Lab
    네트워크
    redis
    JVM
    커넥터스2385
    에프랩멘토링
    자바 다형성
    Flab커넥터스
    Java
    자바면접
    Flab 멘토링
    자바 내부 동작
    DAG
    Flab추천인코드
    Flab 추천인코드
    inconcert
    병렬 처리
    FLAB
    Flab 3주차 후기
    에프랩
    dns
    SSE
    동시성
    tls
    비동기 처리
    자바백엔드
    Airflow
    Flab멘토링
    https
    Flab후기
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.1
oniwon
[네트워크] 인터넷에서 기기가 통신하는 방법 – 패킷, 프로토콜, NAT
상단으로

티스토리툴바