[CS] 네트워크 계층 - IP

눈치없어·2025년 3월 19일

네트워크 계층의 가장 핵심적인 프로토콜이라고 할 수 있는 IP 중심 네트워크 간의 통신이 이루어지는 방법


IP의 목적과 특징

📌 IP의 목적

주소지정: 네트워크 간의 통신 과정에서 호스트를 특정하는 것을 의미
단편화: 데이터를 여러 IP 패킷으로 올바르게 쪼개어 보내는 것을 의미

📌 IP의 특징

신뢰할 수 없는 통신 / 비연결형 통신: 아래에서 설명

주소 지정과 단편화

주소 지정은 IP 주소를 통해 이루어지며, 이는 IP 패킷 헤더를 통해 알 수 있음

IP 패킷 헤더와 페이로드(일부)를 나타낸 이미지

  • 송신지 IP 주소와 수신지 IP 주소 필드: 두 필드에는 송수신지를 식별할 수 있는 IP 주소가 명시됨

📌 IP 주소와 구성

하나의 IP 주소는 총 4바이트(32비트)의 크기로 구성되고, 숫자당 8비트로 표현되므로 0~255 범위의 10진수 4개로 표기
각각의 10진수는 점(.)으로 구분하는데, 여기서 점으로 구분된 하나의 10진수를 옥텟이라고 함
예: 192.168.0.1 > 192 168 0 1 각각이 8비트로 표현 가능한 옥텟

IPv6 주소는 128비트로 구성되어 있으며, 16진수로 표현됩니다. IPv6는 더 많은 주소를 제공하며, 주소는 콜론(:)으로 구분된 8개의 16비트 그룹으로 표기됩니다. 예: 2001:0230:abcd:ffff:0000:0000:ffff:1111.

📌 라우터 / 라우팅

라우터: 서로 다른 네트워크에 속한 두 호스트가 네트워크 간 통신을 수행할 때, IP 주소를 바탕으로 목적지까지 IP 패킷을 전달하는 네트워크 장비
라우터: 라우터가 IP 패킷을 전달할 최적의 경로를 결정하고 해당 경로로 패킷을 내보내는 과정

라우터는 IP 주소를 기반으로 패킷의 최적 경로를 결정하여 목적지까지 전달(라우팅)하는 네트워크 장비
공유기도 라우팅을 수행할 수 있으므로 라우터의 일종이라고 볼 수 있음

📌 IPv6

IPv4: 32비트 주소로 약 43억 개 주소 제공, 고갈 우려

> 192.168.1.1

IPv6: 128비트 주소로 사실상 무한에 가까운 주소를 제공하며, 16진수로 표현되고 콜론(:)으로 구분

> 2001:0230:abcd:ffff:0000:0000:ffff:1111

📌 IP 단편화

IP 패킷이 MTU보다 클 경우, 데이터를 여러 개의 작은 패킷으로 나누어 전송하며, 이를 단편화라고 함

MTU (Maximum Transmission Unit): 최대 전송 단위(전송할 수 있는 패킷의 최대 크기)
전송하고자 하는 IP 패킷(IP 헤더와 페이로드)의 크기가 MTU라는 단위보다 클 경우에는 패킷을 MTU 이하의 여러 패킷으로 쪼개서 전송하고, 이렇게 쪼개서 전송된 패킷들은 수신지에서 재조합됨

일반적인 MTU 크기는 1500바이트
프레임에 실릴 수 있는 최대 데이터의 크기도 일반적으로 1500바이트인데, 따라서 MTU는 프레임을 통해 주고받을 수 있는 최대 페이로드의 크기라도 봐도 무방함

📌 IP 패킷 단편화 관련 필드

1️⃣ 식별자

  • 특정 패킷이 어떤 데이터에서 쪼개진 패킷인지를 식별하기 위해 사용되는 필드
  • 같은 정보에서 쪼개진 패킷들은 같은 식별자를 공유하기 때문에 식별자를 통해 단편화되어 전송되는 패킷을 구분할 수 있음

2️⃣ 플래그

  • 3비트로 구성된 필드로, 첫 번째 비트를 제외한 나머지 2개의 비트는 각각 DF와 MF라는 이름이 붙어 있음
  • 첫 번째 비트는 항상 0으로 설정되어 현대에 사용되지 않음
  • DF는 IP 단편화를 수행하지 말라(Don't Fragment)는 표시를 남기기 위한 비트
  • MF는 단편화된 패킷이 더 있다(More Fragments)는 표시를 남기기 위한 비트

3️⃣ 단편화 오프셋

  • 특정 패킷이 초기 데이터에서 얼마나 떨어져 있는지가 명시된 필드
  • 단편화되어 전송되는 패킷을 목적지에서 재조합하기 위해 패킷의 올바른 순서를 나타내는 데 사용

한 줄 요약
IP의 목적: 주소지정과 단편화
IP의 특징: 신뢰할 수 없고 비연결형 통신
IP 주소: IPv4는 32비트 주소, IPv6는 128비트 주소
라우터: IP 주소를 기반으로 최적의 경로로 패킷을 전달
IP 단편화: MTU를 초과하는 데이터를 여러 개의 작은 패킷으로 나누어 전송


신뢰할 수 없는 통신과 비연결형 통신

IP는 신뢰할 수 없는 프로토콜이자, 비연결형 프로토콜이라고 이야기함
이러한 IP의 특징은 전송 계층의 주요 프로토콜인 TCP와 UDP의 존재 목적과도 직결됨

📌 신뢰할 수 없는 프로토콜

: 패킷이 수신지까지 제대로 전송되었다고 보장하지 않는 프로토콜을 의미

  • 패킷이 유실되거나 목적지에 순서대로 전송되지 않더라도 이에 대한 조치를 취하지 않는 것
  • 신뢰할 수 없는 통신 또는 최선형 전달이라고 함

📌 비연결형 통신

  • IP는 비연결형 프로토콜이기도 함. 이는 패킷을 주고받기 전에 사전 연결 과정을 거치지 않는다는 것을 의미
  • 즉, 상대 호스트의 수신 가능 여부를 확인하지 않고, 그저 목적지로 패킷을 전송
  • TCP와 같은 프로토콜은 패킷을 주고받기 전에 송수신지 간의 연결을 설정하여, 송수신 준비가 되었는지 확인할 수 있음

📌 실제 IP 패킷 예시

  • Src, Dst 필드를 통해 송신지 IP 주소는 10.0.0.1이고, 수신지 IP 주소는 10.0.0.2임을 확인
  • 식별자: 0x2c2e
  • 단편화 오프셋: 0
  • 플래그: MoreFragments 비트가 활성화되어 있어, 이 패킷 뒤에 또 다른 단편화된 패킷이 존재함을 알 수 있음

  • 식별자: 0x2c2e
  • 단편화 오프셋: 1480 (이 패킷은 앞서 살펴본 패킷과 같은 데이터를 단편화하여 보낸 것으로, 1480만큼 떨어진 데이터)

📌 IP 단편화 피하기 - 경로 MTU 발견

  • IP 단편화 문제
    - IP 단편화는 네트워크 성능에 악영향을 미침. 단편화된 패킷은 불필요한 트래픽 증가와 성능 저하를 초래함
  • 경로 MTU (Path MTU)
    - 경로 MTU는 단편화 없이 전송할 수 있는 최대 크기를 의미. 경로에 있는 모든 호스트의 처리 가능한 MTU 크기를 고려해야 함
  • 경로 MTU 발견
    - 경로 MTU 발견 기술은 경로 MTU를 구하고 그 크기만큼 패킷을 전송하여 IP 단편화를 피함. 현대 네트워크는 대부분 이를 지원하여 IP 단편화가 자주 발생하지 않음



IP 주소의 구조

📌 IP 주소 개념

  • IP 주소는 네트워크 주소와 호스트 주소로 구성. IP 주소는 32비트로 구성되며, 0~255 범위의 10진수 4개로 표현.
  • 네트워크 계층에서 LAN 간의 통신을 가능하게 하며, IP 주소를 기반으로 호스트를 특정함

📌 네트워크 주소와 호스트 주소

  • 네트워크 주소는 네트워크 ID 또는 네트워크 식별자라고도 불리며, 해당 네트워크를 식별하는 데 사용
  • 호스트 주소는 호스트 ID 또는 호스트 식별자라고 불리며, 네트워크 내 호스트를 특정하는 데 사용

📌 네트워크와 호스트 주소의 크기

  • 하나의 IP 주소에서 네트워크 주소와 호스트 주소의 크기는 유동적일 수 있음
  • 네트워크 주소의 공간을 작게, 호스트 주소의 공간을 크게 할 수도 있고, 반대로 네트워크 주소의 공간을 크게, 호스트 주소의 공간을 작게 할 수도 있음

(a)의 경우, 호스트 주소에 24비트를 사용하여 많은 호스트에 IP 주소를 할당할 수 있음
(c)의 경우, 호스트 주소에 8비트만 사용하여 상대적으로 적은 수의 호스트에 IP 주소를 할당할 수 있음


클래스풀 주소 체계

📌 네트워크와 호스트 주소 크기

  • IP 주소에서 네트워크 주소와 호스트 주소의 크기는 상황에 따라 달라짐
  • 호스트 주소의 공간을 너무 크면 IP 주소가 낭비되고, 너무 작으면 호스트에 필요한 IP 주소가 부족해질 수 있음. 이를 해결하기 위해 생겨난 개념이 IP 주소의 클래스
  • 클래스: 네트워크의 크기에 따라 유형별로 IP 주소를 분류하는 기준
    - 어떤 클래스에 속한 IP 주소인지를 알면 IP 주소에서 네트워크 부분과 호스트 부분이 어느 정도의 크기인지 알 수 있음

📌 클래스풀 주소 체계

  • 네트워크 크기에 맞춰 IP 주소를 A, B, C, D, E 5개 클래스로 분류하는 방식
  • 클래스 A, B, C 는 실제 네트워크 크기에 따라 사용되며, 클래스 DE는 멀티캐스트와 특수 목적을 위한 예약된 클래스

  • A클래스: 비트 0 시작 / 1옥텟 구성 / 호스트 주소 3옥텟
  • B클래스: 비트 10 시작 / 2옥텟 구성 / 호스트 주소 2옥텟
  • C클래스: 비트 110 시작 / 3옥텟 구성 / 호스트 주소 1옥텟

클래스별 IP 주소 표현 가능 범위

  • 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

클래스별 IP 주소 표현의 가능 범위를 보면 알 수 있듯, 첫 옥텟 주소만 보고 어떤 클래스에 속한 IP 주소인지를 알 수 있음

📌 네트워크/브로드캐스트 주소 / 예약 주소

호스트 주소

  • 0.0.0.0은 네트워크 주소, 255.255.255.255는 브로드캐스트 주소로 사용되어 호스트 주소로 사용되지 않음

예약 IP 주소

  • 특정 용도로 예약된 IP 주소 범위:
    - 0.0.0.0 ~ 255.255.255.255: '이 네트워크의 이 호스트' 지칭에 사용
    - 127.0.0.0 ~ 127.255.255.255: 루프백 주소 (localhost)
    - 10.0.0.0 ~ 10.255.255.255, 172.16.0.0 ~ 172.31.255.255, 192.168.0.0 ~ 192.168.255.255: 사설 네트워크 주소

루프백 주소: 자기 자신을 가리키는 특별한 주소. 가장 일반적으로 사용되는 '127.0.0.1'인 로컬호스트가 있음

브로드캐스트와 네트워크 주소는 특별한 용도로 예약된 주소이며, 예약 IP 주소는 네트워크 테스트나 사설 네트워크 주소로 사용


클래스리스 주소 체계(CIDR) / 서브넷 마스크

📌 클래스풀 주소 체계의 한계

  • 클래스풀 주소 체계에서는 A, B, C 클래스의 네트워크 크기가 고정되어 있음
  • A, B, C 클래스 → 8비트, 16비트, 24비트
  • 이렇게 고정된 크기의 네트워크만 구성할 수 있어 IP 주소 낭비가 발생할 수 있음
  • 예를 들어, A 클래스에서는 너무 많은 IP 주소가 할당되고, C 클래스에서는 IP 주소가 부족할 수 있음

📌 클래스리스 주소 체계

  • 클래스풀 주소 체계의 문제를 해결하기 위해 클래스리스 주소 체계가 등장
  • 클래스를 사용하지 않고 네트워크와 호스트를 구분

📌 서브넷 마스크

  • IP 주소상에서 네트워크 주소를 1로, 호스트 주소를 0으로 표기한 비트열
  • 서브네트워크: IP 주소에서 네트워크 주소로 구분할 수 있는 네트워크의 부분집합. 서브넷이라고도함
  • 서브네팅: 서브넷 마스크를 이용해 원하는 크기로 클래스를 더 잘게 쪼개어 사용하는 것

A, B, C 클래스의 기본 서브넷 마스크 표기

  • A 클래스: 255.0.0.0(11111111.00000000.00000000.00000000)
  • B 클래스: 255.255.0.0(11111111.11111111.00000000.00000000)
  • C 클래스: 255.255.255.0(11111111.11111111.11111111.00000000)

비트 AND 연산

예시로
IP 주소 192.168.200.102
서브넷 마스크 255.255.255.0
비트 AND 연산 수행 시 결과는 192.168.200.0이 되고, 네트워크 주소를 나타냄

📌 CIDR 표기법 - 서브넷 마스크 표기법

CIDR 표기법은 IP 주소/서브넷 마스크의 1의 개수로 서브넷 마스크를 간단히 표현하는 방식

  • CIDR 표기법은 IP 주소와 서브넷 마스크를 간단하게 슬래시("/") 뒤에 1의 개수로 표시하는 방법
  • 예를 들어, 192.168.20.3/30 은 서브넷 마스크에서 1이 30개 있음을 의미하고 255.255.255.252와 동일
  • 이 표기법은 서브넷 마스크를 간단히 표현할 수 있어 많이 사용됨


공인 IP 주소와 사설 IP 주소

호스트의 IP 주소는 네트워크 설정이나 명령어를 통해 확인할 수 있고, 온라인 검색을 통해 확인할 수 있음
윈도우: ipconfig/all / 맥os, 리눅스: ifconfig

📌 공인 IP 주소

  • 전 세계에서 고유한 주소로, 인터넷을 포함한 네트워크 간 통신에 사용
  • 검색 사이트(구글, 네이버 등)에서 확인한 IP 주소가 공인 IP
  • 공인 IP 주소는 ISP나 공인 IP 주소 할당 기관을 통해 할당받을 수 있음

📌 사설 IP 주소

  • 사설 네트워크에서 사용하기 위한 IP 주소로, 외부 네트워크에 공개되지 않은 네트워크를 의미
  • 대부분의 LAN 네트워크는 라우터(공유기)를 통해 사설 IP 주소를 할당
  • 여러 네트워크에서 중복될 수 있음
  • IP 주소 공간 중에서 사설 IP 주소로 사용하도록 특별히 예약된 IP 주소 공간이 있음
    - 10.0.0.0/8: 10.0.0.0 ~ 10.255.255.255
    • 172.16.0.0/12: 172.16.0.0 ~ 172.31.255.255
    • 192.168.0.0/16: 192.168.0.0 ~ 192.168.255.255


IP 주소의 할당

호스트 IP 주소를 할당하는 방법으로 크게 두 가지 방법으로 할당할 수 있음

정적 할당

수작업으로 IP 주소를 부여하는 방식

  • 정적 할당을 통해 할당된 IP 주소를 정적 IP 주소라고 함
  • 운영체제를 막론하고 IP 주소, 서브넷 마스크, 게이트웨이(라우터) 주소, DNS 주소 등이 필요
  • 게이트웨이: 일반적으로 서로 다른 네트워크를 연결하는 하드웨어적/소프트웨어적 수단을 의미
  • 기본 게이트웨이: 호스트가 속한 네트워크의 외부로 나가기 위한 첫 기본 경로를 의미
    - 네트워크 외부와 연결된 라우터(공유기)의 주소를 의미하는 경우가 많음
    - 게이트웨이(라우터) 주소에는 기본 게이트웨이 역할을 하는 라우터(공유기)의 주소를 입력하면됨

  • DNS 주소: 호스트가 도메인 네임을 토대로 IP 주소를 알아내기 위해 질의하는 서버의 주소를 의미
  • IP 주소는 호스트끼리 패킷을 주고받을 때 사용되지만, 모든 호스트의 IP 주소를 기억하는 것은 어려운 일이기 때문에, 도메인 이름을 사용하여 호스트를 식별
    - 예시: google.com, hanbit.co.kr, minchul.net
  • DNS 서버: 도메인 이름과 IP 주소를 쌍으로 저장하고, 호스트가 도메인 이름을 통해 IP 주소를 알 수 있도록 해주는 서버

DNS 주소에 어떤 값을 입력할지 결정하기가 어렵다면 누구나 사용할 수 있도록 공개된 대표적인 네임 서버 주소인 8.8.8.8. 1.1.1.1 등을 입력하면됨


동적 할당: DHCP

프로토콜을 통해 자동으로 IP 주소를 부여하는 방식으로 동적 할당을 통해 할당된 IP 주소를 동적 IP 주소라고 함

  • 동적 할당을 과정에서 가장 흔히 사용되는 프로토콜이 DHCP
  • DHCP 서버는 호스트에 할당 가능한 IP 주소 목록을 관리하고, IP 주소 할당 요청을 받으면 주소를 할당
  • 일반적으로 라우터(공유기)가 DHCP 서버 역할을 수행

동적 IP 주소의 특징

  • 동적 IP 주소에는 사용 가능한 기간(임대 기간)이 정해져 있다.
  • 동적 IP 주소는 할당받을 때마다 다른 주소를 받을 수 있다.
  • 임대 기간이 끝난 IP 주소는 DHCP 서버로 반환되고, 새롭게 다른 주소를 할당받을 수 있음
  • 임대 갱신: 기본적으로 임대 갱신은 자동으로 두 번 수행되며, 두 번 모두 실패하면 IP 주소가 반납됨


IP 전송 특징의 보완: ICMP

📌 신뢰할 수 없는 전송과 비연결형 전송

  • IP는 신뢰할 수 없는 비연결형 프로토콜. 패킷 유실이나 순서 변경을 점검하지 않으며, 이는 성능상 장점이지만, 신뢰성과 연결 관리가 필요한 경우 보완이 필요함

📌 보완 방법

  • 신뢰할 수 있는 연결형 통신을 지원하는 상위 계층의 프로토콜인 TCP를 사용하여 신뢰성 있는 연결형 통신을 보장
  • 네트워크 계층의 ICMP를 사용하여 IP 전송의 상태를 확인하고 피드백을 제공

📌 ICMP 역할

  • ICMP는 IP 패킷 전송 과정에 대한 피드백 메시지를 제공하는 프로토콜로, 전송 중 발생한 오류나 네트워크 정보를 전달

  • 패킷이 네트워크에 도달할 수 없을 때 "네트워크 도달 불가" ICMP 메시지를 되돌려보냄
  • 처리하기에 너무 큰 패킷을 전달받았는데, DF 플래그가 설정되어 있어 단편화가 불가능할 경우[단편화가 필요하지만 DF가 1로 설정되어 단편화할 수 없음]을 나타내는 ICMP 메시지를 되돌려보냄
  • TTL 값이 0이 되면 패킷은 폐기되고, 송신 호스트에게 "시간 초과" ICMP 메시지가 전송됨
    	> TTL(Time To Live): 패킷의 수명을 의미
    	> 패킷이 호스트 또는 라우터에 한 번 전달되는 것은 "홉"이라고 함

📌 ICMP를 사용하는 명령어

  • ping: 네트워크 연결 상태를 점검하는 명령어로, ICMP를 기반으로 동작
  • traceroute(Windows): 네트워크 경로를 확인하는 명령어로, ICMP를 사용하여 패킷 경로를 추적

요약
ICMP는 IP 전송의 신뢰성을 보완하는 프로토콜로, 전송 중 오류를 보고하거나 네트워크 상태를 제공



IP 주소와 MAC 주소의 대응: ARP

📌 ARP (Address Resolution Protocol)

IP 주소와 MAC 주소를 함께 활용하는 통신 과정에서 동일 네트워크 내에 있는 송수신 대상의 IP 주소를 통해 MAC 주소를 알아내는 프로토콜

  • IP와 MAC 주소는 함께 사용되지만, IP 주소가 우선적으로 활용됨
  • 이 때 상대 호스트의 IP 주소는 알지만 MAC 주소를 모를 수 있음. ARP는 이런 상황에서 사용

📌 ARP 동작 과정

IP 주소를 통해 모르는 MAC 주소를 알아내는 과정은 ARP 요청 메시지와 ARP 응답 메시지를 통해 이루어짐

ARP 요청 메시지: 브로드캐스트 메시지로, 네트워크 내 모든 호스트에게 "이 IP 주소에 대응하는 MAC 주소는 무엇인가요?"라고 묻는것과 같음
ARP 응답 메시지: 해당 IP 주소를 가진 호스트는 자신의 MAC 주소를 응답으로 보냄

📌 ARP 테이블

<IP 주소, MAC 주소>의 항목들로 구성된 표 형태의 정보

  • ARP 테이블 항목은 일정 시간이 지나면 삭제되며, 임의로 삭제할 수도 있음
  • arp -a 명령어를 통해 확인할 수 있음

ARP는 IP 주소를 MAC 주소로 변환하는 프로토콜로, ARP 요청과 ARP 응답을 통해 IP 주소와 MAC 주소의 매핑을 얻고 이를 ARP 테이블에 저장함




참고: 북스터디 - 이것이 취업을 위한 컴퓨터 과학이다 (Chapter 5-3)

profile
dock 사이즈 다르잖아

0개의 댓글