• network
  • tcp-ip

IP 주소: IPv4와 IPv6, NAT, 체크섬

공인·사설 IP와 NAT, IPv4 주소 고갈과 IPv6 전환 기술, IP와 TCP 체크섬의 차이, MAC 주소와의 차이를 정리한다.

시리즈 · 네트워크2 / 12
  1. OSI 7 Layer와 계층별 역할, ARP
  2. IP 주소: IPv4와 IPv6, NAT, 체크섬
  3. 라우터: 경로 지정, 브로드캐스트 컨트롤, 라우팅과 스위칭
  4. DHCP 동작 방식과 UDP를 사용하는 이유
  5. IP의 한계와 TCP·UDP, 3-Way Handshake
  6. TCP 4-Way Handshake와 TIME_WAIT
  7. DNS 정리: 구조, 질의 방식, 레코드, 이중화와 위임
  8. 로드 밸런서: 구성 방식, 헬스 체크, L4와 L7
  9. HTTP 메서드와 상태 코드: 멱등성, POST와 PUT의 차이
  10. HTTP의 Stateless·Connectionless와 쿠키, 세션
  11. HTTP/1.1, HTTP/2, HTTP/3 비교
  12. 소켓과 포트, 그리고 웹소켓

IP 주소

IP 주소는 네트워크에서 장치들이 서로를 인식하고 통신하기 위해 사용하는 번호다.

  • 네트워크 주소와 호스트 주소로 나뉜다. 네트워크 주소는 같은 네트워크의 호스트가 공유하는 부분이고, 호스트 주소가 그 안에서 중복 없는 식별자 역할을 한다.
  • IPv4 주소는 32비트이므로 최대 2^32개(약 43억 개)를 표현할 수 있다.

공인(글로벌) IP 주소

인터넷에 직접 연결되는 주소다.

  • 동적 IP 주소: 접속할 때마다 바뀔 수 있는 주소다. 가정에서 인터넷 서비스 제공자(ISP)에 연결할 때처럼 DHCP로 할당받는 경우가 해당한다.
  • 정적(고정) IP 주소: 접속할 때마다 바뀌지 않는 주소다. 홈페이지를 공개하는 웹 서버나 메일 서버처럼 도메인으로 접근되는 서버는, DNS가 도메인과 IP 주소를 연결해 주기 때문에 대상 IP 주소가 바뀌지 않아야 한다. 다만 모든 웹 서버나 메일 서버가 고정 IP를 직접 소유하는 것은 아니고, 다른 기술로 이 문제를 우회하기도 한다.

사설(프라이빗) IP 주소

인터넷에 직접 연결되지 않는 독립된 네트워크에서 쓰는 주소다. 공유기를 기준으로 바깥쪽이 인터넷, 안쪽이 가정 내 네트워크라고 하면, 안쪽 기기에 부여되는 주소가 사설 IP 주소다.

사설 IP 주소로는 공인 IP 주소와 직접 데이터를 주고받을 수 없다. 그래서 공유기의 NAT가 사설 IP 주소를 공인 IP 주소로 바꿔 준다.

IPv4와 IPv6

구분 IPv4 IPv6
주소 길이 32비트 128비트
표시 방법 8비트씩 4부분, 10진수 (예: 203.252.53.55) 16비트씩 8부분, 16진수 (예: 2002:0221:ABCD:DCBA:0000:0000:FFFF:4002)
주소 개수 약 43억 개 2^128개 (약 3.4 × 10^38개)
주소 할당 A, B, C, D 등 클래스 단위의 비순차 할당 네트워크 규모와 단말기 수에 따른 순차 할당
브로드캐스트 주소 있음 없음 (멀티캐스트 주소로 대체)
헤더 크기 가변 고정
보안 IPSec을 별도로 설치 IPSec 자체 지원
서비스 품질 Type of Service로 일부 지원 트래픽 클래스, 플로우 레이블로 확장 지원
Plug & Play 불가 (DHCP 이용 시 가능) 가능

IPv4 헤더와 IPv6 헤더의 필드 구성 비교

IPv4 주소 고갈 문제의 해결 방안

NAT (Network Address Translation)

  • IP 패킷의 출발지·목적지 IP 주소와 TCP/UDP 포트 번호를 다시 기록하면서 라우터를 통해 트래픽을 주고받는 기술이다.
  • 사설 네트워크에 속한 여러 호스트가 하나의 공인 IP 주소로 인터넷에 접속할 수 있게 한다.
  • 내부망에서는 사설 IP 주소로 통신하고, 외부망과 통신할 때는 NAT를 거치며 공인 IP 주소로 자동 변환된다.

CIDR (Classless Inter-Domain Routing)

  • 원래는 IP 주소를 클래스 A, B, C 등으로 구분해 할당했지만, 이 방식은 주소 공간이 낭비되어 한계가 있었다.
  • CIDR은 클래스 대신 prefix length로 주소를 관리한다. prefix length는 주소의 맨 왼쪽부터 몇 비트가 네트워크 주소인지를 나타낸다.
  • 예를 들어 192.0.2.0/24는 앞 24비트가 네트워크 주소이고 남은 8비트가 호스트 주소다.

IPv4와 IPv6 네트워크 간 통신

IPv4와 IPv6는 호환되지 않으므로, 두 네트워크가 공존하는 동안에는 전환 기술이 필요하다.

IPv4와 IPv6 전환 기술인 듀얼 스택, 터널링, 주소 변환의 개념도

듀얼 스택 (Dual Stack)

  • 하나의 장비가 IPv4와 IPv6를 모두 지원해 동시에 처리하는 기술이다.
  • 통신 상대가 어떤 프로토콜을 쓰는지에 따라 IPv4와 IPv6 중 하나를 선택해 통신한다.
  • 운영체제 커널에 소프트웨어 형태로 구현된다.

네트워크 계층에 IPv4와 IPv6 스택이 함께 있는 듀얼 스택 구조

터널링 (Tunneling)

  • 두 IPv6 호스트 사이에 IPv4 망이 있을 때, IPv6 패킷을 IPv4 패킷 속에 캡슐화해 IPv4 네트워크를 통과시키는 기술이다.
  • 종류로는 6to4, ISATAP, 6rd, GRE 등이 있다.
    • 6rd: ISP가 제공하는 6rd 게이트웨이를 통해 캡슐화해 전송한다.
    • GRE: 범용 캡슐화 프로토콜인 GRE(Generic Routing Encapsulation)로 캡슐화해 전송한다.

헤더 변환 (Translation)

  • IPv6와 IPv4 사이에 주소 변환 장비를 두고, 주소 테이블을 만들어 양쪽이 통신할 수 있게 하는 기술이다.
  • IPv4 패킷과 IPv6 패킷은 헤더를 제외한 상위 계층 구조가 같기 때문에, 헤더 부분만 변환해 데이터를 전송할 수 있다.

IP는 송신자에서 수신자로의 전달을 보장하는가

IP 패킷 헤더에는 송수신자의 주소 정보가 저장된다.

  • Source IP Address: 송신자의 IP 주소
  • Destination IP Address: 수신자의 IP 주소

패킷은 이 주소를 보고 라우터를 거쳐 목적지로 전달된다. 다만 역할은 계층별로 나뉜다.

  • Network Layer (3계층): IP가 동작하는 계층으로, 한 엔드포인트에서 다른 엔드포인트까지의 경로와 목적지를 찾아 준다.
  • Transport Layer (4계층): 송신자와 수신자의 논리적 연결을 담당하며, 신뢰성 있는 연결을 유지하도록 돕는다.

즉 IP는 목적지를 찾아가는 역할까지만 하고, 전달의 신뢰성은 4계층의 몫이다. 이 내용은 IP의 한계와 TCP·UDP에서 이어진다.

IPv4 체크섬과 TCP 체크섬

체크섬은 데이터의 무결성을 확인하기 위한 연산이다.

IPv4 헤더 체크섬

IPv4 헤더에서 Header Checksum 필드의 위치

IPv4의 체크섬은 헤더만 대상으로 한다. 다음 헤더를 예로 계산해 본다.

4500 0028 c280 4000 7806 1209 0d6b 2a0e 79a8 7d25
  1. 헤더를 16비트 워드 단위로 자른다. (4500, 0028, c280, …)
  2. 체크섬 필드(1209)를 제외한 워드를 모두 더한다. 결과는 0x2EDF4이다.
  3. 16비트를 넘어간 올림수(2)를 떼어 하위 16비트에 다시 더한다. 0xEDF4 + 0x2 = 0xEDF6
  4. 결과에 1의 보수를 취한다. 0xEDF6 → 0x1209
  5. 헤더에 들어 있던 체크섬 값 1209와 같으므로 헤더가 변조되지 않았다고 판단한다.

TCP 체크섬

TCP의 체크섬은 헤더뿐 아니라 데이터도 함께 계산한다.

  1. TCP 세그먼트의 헤더와 데이터를 16비트 단위로 나눈다.
  2. 나눈 값을 모두 더한다.
  3. 합에 1의 보수를 취한 값이 최종 TCP 체크섬이 된다.

계산 방식은 같고, IPv4는 헤더만, TCP는 헤더와 데이터를 모두 검증한다는 점이 다르다.

IP 주소와 MAC 주소

  • IP 주소는 다른 주체가 임시로 할당하는 주소이고, MAC 주소는 통신 기기의 하드웨어 자체에 부여된 고유한 식별 번호다.
  • MAC 주소는 네트워크 인터페이스 카드가 사용하는 주소로, 로컬 네트워크에서 패킷을 전송하는 데 쓰인다.
  • MAC 주소는 48비트로 표현한다.

IP 주소로 MAC 주소를 알아내는 과정은 OSI 7 Layer 글의 ARP에 정리했다.