네트워크

[OSI] 3계층 - 네트워크 계층 (Network Layer)

Castle Bird 2025. 12. 23. 10:26

1. 3계층 (네트워크 계층, IP)

1-1. 역할과 특징

  • 다른 네트워크 대역, 즉 멀리 떨어진 네트워크(WAN 포함)까지 데이터를 어떻게 전달할지 제어한다.
  • 발신지에서 착신지까지의 패킷 경로(라우팅) 를 결정하고 중간 라우터들을 통해 전달한다.
  • 대표 장비: 라우터(Router)
  • 사용 주소: IP 주소 (예: 192.168.0.1 — 사설 IP의 한 예)

2. IP 주소 체계 (IPv4 / IPv6)

2-1. IPv4 기본 개념

  • IPv4 주소는 32비트이며, 8비트씩 4부분으로 나누어 10진수로 표기한다.
    • 예: 192.168.0.1
    • 각 숫자(옥텟)는 0~255 범위를 가진다.
  • IPv4 전체 개수는 약 43억 개 수준이라, 전 세계적으로 주소가 부족해지는 문제가 있다.
  • 이 부족함을 완화하기 위해 사설 IP + NAT 구조가 널리 사용된다.

IPv4예시

2-2. IPv6 개념

  • IPv6는 IPv4 주소 부족 문제를 해결하기 위해 설계된 128비트 주소 체계이다.
  • IPv6 주소 개수는
    340,282,366,920,938,463,463,374,607,431,768,211,456개로, 사실상 무한에 가깝다고 표현된다.
  • 우리말로는 약 340 간(澗) 정도의 단위로 표현하기도 한다.

3. 서브넷, 게이트웨이, 공인/사설 IP

3-1. 서브넷 마스크와 네트워크 대역

  • 서브넷 마스크는 IP 주소에서 어느 부분까지를 네트워크로, 어느 부분을 호스트로 볼지 결정하는 값이다.
    • 예: 255.255.255.0/24 → 앞 24비트는 네트워크, 뒤 8비트는 호스트
  • 서브넷 마스크를 이용해 큰 네트워크를 작은 네트워크로 나누는 것을 서브네팅(Subnetting) 이라고 한다.
  • 비트 표기에서는 네트워크 비트는 1, 호스트 비트는 0으로 표시한다.
    • 예: 11111111.11111111.11111111.00000000255.255.255.0/24: 앞 24비트를 네트워크대역, 뒤 8비트를 호스트에 사용
    • 예: 11111111.11111111.11111110.00000000255.255.254.0/23: 앞 23비트를 네트워크대역, 뒤 9비트를 호스트에 사용

호스트 수 예시

  • 255.255.255.192/26 → 뒤 6비트를 호스트로 사용 → 2^6 - 2 = 62대 사용 가능
  • 255.255.255.0/24 → 뒤 8비트를 호스트로 사용 → 2^8 - 2 = 254대 사용 가능
  • 255.255.254.0/23 → 뒤 9비트를 호스트로 사용 → 2^9 - 2 = 510대 사용 가능
  • 2를 빼는 이유는 네트워크 주소와 브로드캐스트 주소 제외하기 위함

3-2. 기본 게이트웨이

  • 기본 게이트웨이(Default Gateway)는 외부 네트워크로 나갈 때 사용하는 출입구 역할의 라우터 IP이다.
    • 예: 192.168.0.1 (공유기 주소로 많이 사용)

3-3. 공인 IP와 사설 IP, NAT

  • 공인 IP(Public IP)
    • 실제 인터넷 상에서 사용되는 전 세계적으로 고유한 IP 주소.
    • 이 주소를 통해서만 인터넷과 직접 통신할 수 있다.
  • 사설 IP(Private IP)
    • 내부 네트워크(LAN) 내에서만 사용하는 IP 주소.
    • 직접 인터넷에 나갈 수 없으며, 공인 IP로 변환이 필요하다.
  • 사설 IP 대역 (공인 IP로는 사용 불가)
    1. 10.0.0.0 ~ 10.255.255.255
    2. 172.16.0.0 ~ 172.31.255.255
    3. 192.168.0.0 ~ 192.168.255.255
  • NAT(Network Address Translation)
    • 사설 IP를 공인 IP로, 혹은 공인 IP를 사설 IP로 바꿔주는 기술이다.
    • 여러 대의 사설 IP 장비가 하나의 공인 IP로 인터넷을 사용하게 해준다.

공인 IP가 필요한 이유: 외부 접속의 한계

공인IP만 알고 있을때의 문제점

  • 식별 불가능: 사용자가 naver.com에 접속하려 할 때, 서버가 사설 IP만 가지고 있다면 인터넷 망에서 해당 서버를 식별하거나 길을 찾을 수 없습니다.
  • 라우팅 불가: 사설 IP는 내부 네트워크 전용이므로, 전 세계적인 Internet환경에서는 라우팅(경로 배정)이 되지 않는 주소입니다.
  • Inbound(Inbound = 외부에서 내부로 들어오는 통신) 차단: 공유기의 NAT Table(NAT Table = 주소 변환 관리 표)에 미리 정의된 매핑 정보가 없다면, 외부에서 들어온 패킷은 목적지를 찾지 못하고 공유기 단계에서 폐기됩니다.
  • 결론: 따라서 네이버와 같이 누구나 외부에서 접속해야 하는 대규모 서버는 전 세계에서 유일하고 접근 가능한 공인 IP를 반드시 사용해야 합니다.

4. Classful IP와 Classless (CIDR)

4-1. Classful IP (초기 방식)

  • 초기에 IP 주소는 클래스 A/B/C로 나누어 사용했다.
    • A 클래스: 0.0.0.0 ~ 127.255.255.255
    • B 클래스: 128.0.0.0 ~ 191.255.255.255
    • C 클래스: 192.0.0.0 ~ 223.255.255.255
  • 대략적인 비트 개념
    • A: 네트워크 8비트 / 호스트 24비트
    • B: 네트워크 16비트 / 호스트 16비트
    • C: 네트워크 24비트 / 호스트 8비트
  • 호스트 개수가 너무 많이 배정되는 등 주소 낭비가 심해 현재는 거의 사용하지 않는 개념이다.
  • 현재는 “역사적 개념” 정도로 알고 있으면 되고, 실제 네트워크 설계는 Classless 방식(CIDR)을 사용한다.

4-2. Classless 방식과 서브넷 마스크

  • Classless 방식에서는 IP를 A/B/C로 나누지 않고, 서브넷 마스크(/24, /25 같은 프리픽스 길이)로 네트워크 범위를 정의한다.
  • 예:
    • 192.168.0.0/24
    • 10.0.0.0/16
  • 이 방식 덕분에 네트워크 크기를 훨씬 유연하게 조정할 수 있고, IP 낭비를 크게 줄일 수 있다.

5. 특수 IP 주소

  1. 0.0.0.0
    • “나머지 모든 IP” 또는 “아직 특정되지 않은 주소” 의미로 사용.
    • 일반 PC의 실제 호스트 주소로는 사용하지 않는다.
  2. 127.0.0.1
    • 자기 자신을 가리키는 루프백(Loopback) 주소, 로컬호스트 테스트에 사용.
  3. 게이트웨이 예시: 192.168.0.1
    • 보통 공유기의 IP로 사용되며, 같은 네트워크 대역에서 가장 작은 주소나 가장 큰 주소를 게이트웨이로 잡는 경우가 많다.

6. ARP 프로토콜

6-1. ARP의 역할

  • ARP(Address Resolution Protocol)는 같은 네트워크 대역에서 통신을 할 때,
    IP 주소를 이용해 상대방의 MAC 주소를 알아내는 프로토콜이다.
  • 실제 데이터 전송 시에는 3계층의 IP뿐 아니라 2계층의 MAC 주소도 필요하다.
  • IP는 알고 MAC을 모르는 상황에서 ARP를 사용하여 MAC 주소를 알아낸다.

6-2. ARP 동작 과정

  1. 송신자는 목적지의 MAC 주소를 모르므로, 목적지 IP만 넣고 브로드캐스트로 ARP 요청을 보낸다.
  2. 같은 네트워크의 모든 장비가 이 요청을 수신하고, 자신의 IP와 비교한다.
  3. 요청에 있는 IP가 자신의 IP와 같으면, 자신의 MAC 주소를 적어 유니캐스트 응답으로 보낸다.
  4. 송신자는 응답으로 받은 MAC 주소를 확인하고, 이후에는 해당 MAC으로 직접 통신한다.
  5. 한 번 통신한 IP–MAC 매핑 정보는 ARP 테이블에 일정 시간 저장되며, 이 테이블은 휘발성이다.

7. IP 프로토콜 (IPv4 헤더 개념)

7-1. IP 프로토콜의 성격

  • IP는 네트워크 상에서 데이터를 주고받기 위한 비연결형, 비신뢰성 프로토콜이다.
  • 데이터가 정확히 전달되는지, 순서가 보장되는지, 중복 전송되었는지는 IP가 보장하지 않는다.
  • 데이터의 정확한 전달과 순서 보장은 상위 계층의 TCP가 담당한다.

7-2. 주요 필드 (핵심 위주)

  • 버전(Version): 4비트, IPv4인지 IPv6인지를 나타냄.
  • 출발지 IP: 32비트(4바이트).
  • 목적지 IP: 32비트(4바이트).

단편화 관련 필드

IP 패킷이 전송될 때, 네트워크의 MTU(Maximum Transmission Unit)보다 크면 패킷을 여러 조각으로 나누어 전송한다. 이 과정을 단편화(Fragmentation)라고 한다.

  • Identification
    • 원래 하나의 패킷이었던 조각들을 다시 재조립하기 위해 묶어주는 ID 값.
  • Flags (IP Flags)
    • DF(Don’t Fragment): 단편화를 허용할지 여부.
    • MF(More Fragments): 뒤에 더 조각이 있는지 나타내는 비트. 1이면 뒤에 더 있음, 0이면 마지막 조각.
  • Fragment Offset
    • 이 조각이 원래 데이터에서 어느 위치에 해당하는지 나타내는 값.
    • 첫 번째 조각은 0, 이후 조각들은 이전까지의 데이터 길이만큼 offset을 가진다.

이 세 필드를 세트로 사용해서, 수신 측에서 여러 조각을 원래 하나의 IP 패킷으로 재조립할 수 있다.

TTL (Time To Live)

  • TTL은 패킷이 네트워크 상에서 얼마나 오래 살아남을 수 있는지를 제한하는 값이다.
  • 라우터를 한 홉(hop) 지날 때마다 TTL 값이 1씩 감소한다.
  • TTL이 0이 되면 패킷은 더 이상 전달되지 않고 폐기되며, 이로 인해 라우팅 루프 등으로 패킷이 무한히 떠다니는 것을 방지한다.

8. ICMP

  • ICMP(Internet Control Message Protocol)는 IP와 함께 동작하며, 네트워크 상태를 알리기 위한 제어/오류 메시지 전송에 사용된다.
  • 예: ping 명령은 ICMP Echo Request/Reply를 사용하는 대표적인 예시이다.
  • 계층: 3계층(IP와 같은 네트워크 계층에서 동작)
  • 역할:
    • 오류 보고 (패킷 전달 실패, TTL 초과 등)
    • 네트워크 진단 (연결 상태, 경로 확인)
  • 키워드:
    • ping = Echo Request / Reply
    • traceroute = TTL + Time Exceeded
    • IP는 “데이터 운반”, ICMP는 “상태·오류 알림”