3계층 - 네트워크

정의

서로 다른 네트워크 간의 데이터 전송을 담당한다. 여기서 서로 다른 네트워크란 스위치로 연결된 컴퓨터들의 집합 를 하나의 네트워크라고 하자. 2계층에서 언급한 내용에 따르면, 하나의 네트워크는 MAC 주소를 이용하여 정보를 주고받는다. 그렇다면 하나의 네트워크에서 다른 네트워크로 데이터는 어떻게 보낼까?

라우터

다른 네트워크에 데이터를 보내기 위해서는 라우터라는 네트워크 장비가 필요하다. 라우터는 네트워크 통신에서 해당 목적지까지 가는 경로에 대해 안내 해주는 역할을 한다. 또한, 2계층에서 다룬 스위치에 MAC주소 테이블이 있었다면, 라우터에는 라우팅 테이블 이 있다. 라우팅 테이블에서는 경로 정보를 등록하고 관리한다.

IP

정의

네트워크 장비 라우터뿐만 아니라 IP 주소 를 추가적으로 알아야 다른 네트워크로 데이터를 보낼 수 있다. IP 주소는 네트워크 상에서 컴퓨터를 구분하는 컴퓨터의 고유한 주소이며, 인터넷 서비스 제공자로 부터 할당받을 수 있다.

헤더

데이터에는 다음과 같은 IP 헤더가 추가된다. 이러한 형태를 IP 패킷 이라고 한다.

image.png

버전

헤더에 보면 버전이 존재한다. IP에는 IPv4와 IPv6가 존재한다.

  • IPv4 : 32비트로 된 아이피이며, 8비트씩 4개의 옥텟으로 구성된다.
  • IPv6 : 128비트로 된 아이피이며, 다음과 같이 구성된다.
    • 16비트씩 8개의 그룹 : 2001:0db8:85a3:0000:0000:8a2e:0370:7334
    • 연속된 0은 :: 로 한 번만 축약 가능: 2001:db8:85a3::8a2e:370:7334

Public IP vs Private IP

공인 IP라고 불리는 Public IP는 위에서 언급한 것 처럼 인터넷 서비스 제공자가 제공해주는 IP 주소이다. 사설 IP라고 불리는 Private IP는 학교, 회사 등 특정 조직에서 사용하는 네트워크 내부에서 사용하는 내부 IP이다. 네트워크 내부에서는 라우터가 제공하는 DHCP 기능을 사용하여 사설 주소를 자동으로 할당하고 있다.

DHCP

Dynamic Host Configuration Protocol의 약자로 동적으로 호스트를 설정하는 규악이다. 네트워크 안에 컴퓨터에 자동으로 네임 서버 주소, IP 주소, 게이트웨이 주소를 할당해주며 해당 클라이언트에게 일정 기간 임대를 하는 동적 주소 할당 프로토콜이다. 아래 예시를 확인해보자.

  • 공유기에 컴퓨터를 LAN으로 연결하면 자동으로 컴퓨터에서 공유기로 IP 주소를 요청한다.
    • 여기서 컴퓨터를 DHCP Client, 공유기를 DHCP Server이라고 명명한다.
    • 컴퓨터에서 공유기로 IP 주소를 요청할 때는 MAC 주소를 전달한다.
  • 공유기는 현재 사용 가능한 IP를 자동으로 컴퓨터에 할당한다.
  • 단, 해당 주소가 영구적으로 사용가능한 것은 아니다.
    • 사용 가능한 시간이 지나면 기간을 연장하거나 반납을 한다.

클래스

IP 주소는 A부터 E 클래스까지 존재한다.

클래스 범위 기본 서브넷 마스크 용도
A 0.0.0.0 ~ 127.255.255.255 /8 (255.0.0.0) 대규모 네트워크
B 128.0.0.0 ~ 191.255.255.255 /16 (255.255.0.0) 중규모 네트워크
C 192.0.0.0 ~ 223.255.255.255 /24 (255.255.255.0) 소규모 네트워크
D 224.0.0.0 ~ 239.255.255.255 - 멀티캐스트
E 240.0.0.0 ~ 255.255.255.255 - 연구용 (예약)

각 클래스를 결정하는 방법은 IP 가장 앞의 8비트에서 결정된다.

  • A 클래스는 맨 앞자리가 0이다.
  • B 클래스는 맨 앞자리가 10이다.
  • C 클래스는 맨 앞자리가 110이다.
  • D 클래스는 맨 앞자리가 1110이다.
  • E 클래스는 맨 앞자리가 1111이다.

공인 IP 대역은 해당 클래스 대역에서 사설 IP 대역을 뺀 범위이다. 사설 IP 대역은 아래와 같다.

  • A 클래스 : 10.0.0.0 ~ 10.255.255.255
  • B 클래스 : 172.16.0.0 ~ 172.31.255.255
  • C 클래스 : 192.168.0.0 ~ 192.168.255.255

네트워크 주소와 브로드캐스트 주소

네트워크 주소와 브로드캐스트 주소는 특수한 역할이 있기 때문에 할당할 수 없는 주소이다.

  • 네트워크 주소
    • 네트워크 단위를 식별하기 위해 사용되는 IP 주소이다.
    • 클래스로 예약된 비트 외의 모든 비트가 0이다.
  • 브로드캐스트 주소
    • 네트워크에 있는 컴퓨터나 장비 모두에게 한번에 데이터를 전송하는 데 사용되는 IP 주소이다.
    • 클래스로 예약된 비트 외의 모든 비트가 1이다.

서브넷

IP 주소 클래스 단위보다 더 작은 단위로 분할된 네트워크를 말한다. 서브넷을 만드는 행위를 서브넷팅 이라고 한다. 대규모 네트워크에서는 브로드캐스트 패킷 등의 전송 시에 네트워크가 복잡해지게 된다. 이를 해결하기 위해 목적에 맞는 더 작은 단위로 네트워크를 만들어 편리하게 이용하기 위해 서브넷팅을 한다. 예시를 하나 다뤄보자

  • 192.168.10.0/24 네트워크 하나가 존재하고, 4개의 네트워크로 쪼갤려고 한다.
    • IP 범위 : 192.168.10.0 ~ 192.168.10.255
    • 서브넷 마스크 : 255.255.255.0
  • 4개로 쪼개기 위해서는 2개의 비트가 추가로 필요하여, 네트워크 부분을 26비트로 늘린다.
    • 서브넷 마스크는 255.255.255.192로 변경된다.
  • 쪼개진 결과는 아래와 같다. |네트워크 주소|IP 범위|브로드캐스트| |—|—|—| |192.168.10.0/26|.1 ~ .62|.63| |192.168.10.64/26|.65 ~ .126|.127| |192.168.10.128/26|.129 ~ .190|.191| |192.168.10.192/26|.193 ~ .254|.255|

서브넷 마스크

서브넷 마스크는 IP 주소에서 네트워크와 호스트 부분을 구분해주는 32비트 값이다.

  • 1인 비트 : 해당 자리는 네트워크 부분이다
  • 0인 비트 : 해당 자리는 호스트 부분이다
  • 1은 항상 왼쪽부터 연속이며, 0은 항상 오른쪽부터 연속이다.

위에서 사용한 서브넷 마스크 255.255.255.0를 생각하면 24개의 1이 네트워크 부분이고 뒤 8개의 0이 호스트 부분이다. 네트워크 주소를 알아내는 방법은 IP와 서브넷 마스크를 AND 연산을 하면 된다.

CIDR

위에서 255.255.255.0 서브넷 마스크를 가진 IP 주소 192.168.10.0의 뒤에는 /24 라는 표기가 존재했다. 이 처럼 서브넷 마스크를 간단하게 표기하는 방법은 CIDR이라고 하며, 서브넷 마스크의 1의 개수를 숫자로 표기한다.

게이트웨이 주소

게이트웨이는 해당 네트워크를 출입할 수 있는 역할을 한다. 일반적으로 네트워크 대역의 호스트 IP가 게이트웨이 주소가 된다.

디폴트 게이트웨이

다른 네트워크로 데이터를 보낼 때 사용하는 출입문이다. 가정에서 사용하는 공유기의 LAN쪽 IP가 디폴트 게이트웨이다. 내부 네트워크는 인터넷 전체 경로를 알 필요없이, 디폴트 게이트웨이 주소를 알고 해당 주소로 데이터를 보내기만 하면 다른 네트워크와 통신이 가능하다.

  • 본인 IP와 목적지 IP의 네트워크 IP를 확인한다.
  • 다를 경우 우선 공유기의 MAC 주소를 ARP를 통해 찾는다.
  • 패킷은 다음과 같이 구성된다.
    • 2계층 : 출발지(내 PC MAC) / 목적지(공유기 MAC)
    • 3계층 : 출발지(내 PC IP) / 목적지(목적지 IP)
  • 공유기는 해당 패킷을 받고 아래와 같이 처리한다.
    • 라우팅 테이블을 확인하여 ISP 라우터로 전송해야할지 내부 장치에 전송해야할지 판단한다.
    • 사설 IP로 작성된 출발지 IP를 공인 IP로 변경한다.
    • 2계층 목적지 MAC를 ISP 라우터의 MAC로 변경한다.
    • ISP 라우터로 전송한다.

라우팅

경로 정보를 기반으로 최적의 경로를 통해 데이터를 전송하는 것을 말한다. 이 과정에서 경로 정보가 등록된 테이블을 이용하는데 이를 라우팅 테이블이라고 한다. 해당 테이블에는 각종 네트워크 IP들이 등록되어 있다.

ICMP

정의

Internet Control Message Protocol의 약자로 네트워크 장치에서 네트워크 통신 문제를 진단하는 데 사용하는 네트워크 계층 프로토콜이다. 이를 통해 데이터가 목적지에 잘 도달하는지, 도달 시간이 적절한지를 확인한다.

용도

주요 용도는 오류보고이다. 인터넷으로 연결된 두 네트워크에서 ICMP를 사용하여 데이터가 의도한 대상에 도달하지 못한 경우, 수신 장치에서 전송자치로 전달할 수 있는 오류를 생성할 수 있다. 또한, 네트워크 성능을 평가하기 위한 진단 도구로도 활용된다. 대표적으로 ping과 traceroute가 있다.

간단히 메시지를 전송하기 때문에 전송 계층 프로토콜과 연결되지 않고 데이터를 관리하지 않는다.

악용 사례

  • DDos : 대상 장치가 ICMP 패킷을 모두 처리할 수 없도록 매우 많은 양의 ping을 보낸다. 패킷마다 처리 및 응답이 필요하기 때문에 장치의 리소스가 고갈되어 실제 사용자들이 장치를 사용할 수 없게된다.
  • Ping of Death : 대상 장치가 처리할 수 없는 패킷에 허용되는 최대 크기보다 큰 ping을 대상 시스템에 보내 시스템이 정지하거나 충돌하게 만드는 공격이다. 데이터 패킷은 조각화되어 향하지만, 재조립하는 과정에서 버퍼 오버플로우가 발생하여 장치가 오작동하게 된다.

ping

Packet Internet Groper의 약자로 다른 호스트에 IP 데이터그램이 도달하는지 여부를 확인한다.

image.png

traceroute

패킷이 목적지에 도달할 때까지 거치는 경로를 추적하는 데 사용한다. 각 구간에서 발생하는 지연시간을 확인할 수 있다.

image.png

5 ~ 7번에서는 응답이 없다. 일부 라우터가 ICMP 패킷에 응답하지 않도록 설정되어 있기 때문이다.