본문 바로가기

Web Sever 개발과 CS 기초/네트워크 지식

라우팅과 IP주소 체계 이해

 

관련 내용

개요 목적

이번 시간에는 네트워크를 연결하는 라우팅 기술과

라우팅 기술이 목적지를 결정하는데 사용하는 IP 주소에 대해서 알아본다.

라우팅

라우팅은 네트워크에서 데이터를 보낼 때 최적의 경로를 선택하는 과정이다.

데이터는 출발지에서 목적지로 가는 동안 굉장히 많은 라우터를 거치게 된다. (초당 수백만번의 라우팅이 일어난다.)

라우터가 이 기능을 수행하는 장치이다. 라우팅 테이블을 기반으로 데이터를 다음 목적지로 전달한다.

라우팅 테이블이란

라우팅 테이블은 IP 주소를 기반으로 라우터의 위치를 저장한 테이블 또는 데이터베이스 이다.

다양한 네트워크에 대한 정보와 해당 네트워크에 연결하는 방법이 포함되어 있습니다.

그림을 보면서 라우팅 테이블 구성 요소와 어떻게 다음 목적지를 찾는 지 알아보자.

아래 그림은 PC1에서 라우터A를 거쳐서 PC3에 보내는 과정이다.

<구성 요소>

  • 네트워크 대상(Network Destination) : 목적지 네트워크의 IP 주소
  • 서브넷 마스크(Netmask) : 대상 주소를 설명할 때 쓰이는 값.( 잠시 후 IP 챕터에서 설명한다)
  • 게이트웨이(Gateway): 이 장치(PC1)와 연결되어있는 홉, 패킷이 전달되는 다음 IP 주소이다. 만약 목적지(PC3)가 로컬 네트워크라면(같은 네트워크라면) “연결됨(connected)”라고 표기 되며 다른 네트워크라면 해당 네트워크의 게이트웨이를 가리킨다.
    • 게이트웨이란 한 네트워크에서 다른 네트워크로 이동하기 위해 거쳐야 하는 지점이다.
  • 인터페이스(interface): 게이트웨이로 가기 위해 거치는 장치이다. 10.0.0.2는 eth3장치를 통해 접근이 가능하다.
  • 메트릭(Metric): 우선 순위라고도 불리며 패킷 전송을 위해 최적의 경로가 선택되도록 참고되는 값이다. 동일한 라우팅 테이블 요소가 2개 있을 때 이 값이 낮은 요소가 선택된다 메트릭은 일반적으로 홉 수(hop count)가 들어가며 지연시간, 처리량 등이 들어갈 수 있습니다.
    • 홉 수는(hop count) 데이터가 출발지와 목적지 사이에서 통과해야 하는 홉의 개수를 의미한다. 그래서 적을수록 좋은 낮은 메트릭을 가진다.

IP 주소와 MAC 주소 기본 이해

IP 주소(Internet Protocol address)는 논리적 주소이며 네트워크에서 장치들이 서로를 통신하기 위해서 사용하는 번호이다. 즉 변할 수 있다. IP를 기반으로 통신을 하지만, 결국 사실 변하지 않는 물리적 주소인 MAC 주소를 통해서 통신을 한다.

 

MAC 주소(Media Access Control Address)는 네트워크 인터페이스에 할당된 고유 식별자이며 보통 장치의 NIC에 할당된다.

48비트로 구성 되며 24비트의 OUI와 UAA로 이루어진다.

  • OUI : IEEE에서 할당한 제조사 코드
  • UAA : 제조사에서 구별되는 코드

보통을 기기마다 유일한 값을 갔지만, 실수나 의도적으로 같은 값을 가질 수 있다.

같더라도 동일 네트워크에서 사용만 아니면 문제가 되지 않는다.

IP주소 MAC 주소 변환

네트워크 통신을 할 때는 IP 주소를 사용하여 서로를 지정하지만, 실질적 데이터를 받게 되는 실질적 주소는 MAC 주소이다.

이런 통신을 할 수 있는 것은 ARP와 RARP를 통해 IP주소와 MAC 주소 간 변화을 하기 때문이다.

  • ARP를 통해 논리적 주소인 IP 주소를 물리적 주소인 MAC 주소로 변환한다.
  • RARP를 통해 물리적 주소인 MAC 주소를 논리적 주소인 IP 주소로 변환한다.

IPv4와 IPv6

IP주소는 IPv4와 최신 버전 IPv6로 나눠진다.

IPv4 주소는 32비트, 2^32개의 주소(41억 9천만 주소) 표현이 가능하다.

또는 8비트 단위로 점을 찍어 4개로 구분(8비트의 단위를 옥텟이라고도함) 8비트를 10진수로 표현한다.

41억 개 주소로 모든 장치를 표현하기 부족하다. 그래서 NAT, 서브네팅 부수적인 기술로 제한된 IP주소를 확장한다.

 

IPv6 주소는 128비트, 2^128개의 주소 표현으로 많은 주소를 가져 NAT, 서브네팅 기술이 필요하지 않다.

16비트씩 8개로 구분, 16비트는 16진수로 변환되어 콜론(:)으로 구분하여 표시하며 앞의 연속되는 0은 생략될 수 있다.

앞 64비트는 네트워크 주소이고 뒤 64비트 인터페이스 주소를 나타낸다.

IPSec이라는 데이터 패킷을 암호화하는 보안 네트워크 프로콜을 포함한다.

IPv4와 IPv6의 차이

1 헤더에 불필요한 필드를 제거 하여 빠른 처리가 가능해졌다.

  • IPv4는 체크섬이 있지만 IPv6는 체크섬이 없다. 체크섬이란, 데이터를 전송하기 전에 주어진 데이터의 값에 따라 CRC 값을 계산하여 데이터에 붙여 전송하고, 데이터 전송이 끝난 후 받은 데이터의 값으로 다시 CRC 값을 계산 후 두 값을 비교하여 데이터 전송 과정에 오류가 있는 지 확인하는 과정이다.
  • IPv4는 헤더가 가변 길이이지만 IPv6는 고정 길이(40바이트)라서 “인터넷 헤더 길이’에 대한 정보가 삭제되었다.

2 TTL은 HOP limit로 대체되었다.

TTL이란 IPv4에서 TTL 필드는 패킷이 네트워크에서 무한순환하지 않도록 하는 변수이다.

패킷이 네트워크에서 라우터를 거칠 때마다TTL 값이 1씩 감소하여 0이 되면 패킷이 폐기된다.

한정된 IP 주소 해결 1. 클래스 리스 서브넷 마스크

네트워크 주소와 호스트 주소를 자유롭게 나누어 부족한 IP 주소를 문제를 해결하는 클래스 리스 서브넷 마스크에 대해서 알아보자.

먼저 네트워크 주소와 호스트 주소의 분리에 대해서 알아보자.

네트워크 간 데이터 패킷을 전달하는 라우터는 정보 패킷이 대상으로 하는 호스트의 정확한 위치를 알지 못한다.

라우터는 호스트가 구성원인 네트워크만 알고 라우팅 테이블에 저장된 정보를 사용하여 패킷을 대상 호스트의 네트워크로 가져오는 방법을 결정한다.

패킷이 목적지의 네트워크로 전달된 후 패킷은 적절한 호스트로 전달된다.

즉 네트워크는 네트워크 주소와 호스트 주소 두 부분을 나뉜다.

네트워크 주소는 호스트 주소들이 모여 있는 네트워크를 말한다. 즉 하나의 네트워크에 여러 개의 호스트 주소를 가진다.

여러 장치가 하나의 네트워크 안에 있다면 (예들 들어 스타벅스 카페) 하나의 네트워크 주소로 인터넷 통신을 하고, 네트워크 주소로 들어온 정보는 각 장치마다 부여된 호스트 주소로 정확하게 데이터를 전달하게 된다.

초기 버전인 클래스풀(Classful IP Addressing) 서브넷 마스크

클래스 리스 방식이 나오기 전 네트워크 주소를 매기고 그에 따라 네트워크의 크기를 다르게 구분하여 클래스를 할당하는 주소체계 클래스풀로 네트워크 주소와 호스트 주소를 나누었다.

Class A는

  • 0.0.0.0~ 127.255.255.255 IP 주소를 가진다.
  • 2^8 1옥텟을 네트워크 주소 할당한다. 네트워크 주소 범위 : 1 ~ 126 로 시작한다. 원래는127.255.255.255까지 포함하지만 127.X는 루프백 주소이기 때문에 포함하지 않는다. 0.0.0.0 도 특수 주소로 포함하지 않는다.
  • 2^24 – 2 = 한 네트워크 당 16,777,214 호스트 ID를 가질 수 있다.(약 1600만개)

Class B는

  • 128.0.0.0~191.255.255.255 IP 주소를 가진다.
  • 네트워크 주소 범위 : 128 ~ 191 로 시작한다.
  • 2^16 – 2 = 한 네트워크당 65534개 호스트 ID(6만 5천개)가진다. Class A보다 네트워크 주소는 늘었지만 사용할 수 있는 호스트 주소가 줄어들었다.

Class C는

  • 224.0.0.0~255.255.255 IP 주소를 가진다.
  • 네트워크 주소 범위 : 192 ~ 223 로 시작한다.
  • 2^8 – 2 = 한 네트워크당 254개 호스트 ID를 가진다.

클래스리스 서브넷마스크 방식

클래스풀의 단점을 해결하기 위해 클래스리스가 나왔다.

클래스로 나누는 것이 아닌 서브넷마스크를 중심으로 어디까지가 네트워크 주소고 어디까지가 호스트주소인지를 나눈다.

그래서 보다 유동적으로 네트워크 주소와 호스트 주소 개수를 정할 수 있다.

현재 IP 주소 체계는 클래스 리스 방식을 사용한다.

  • 서브네팅 : 네트워크를 나눈다는 의미
  • 서브넷 : 서브네트워크, 쪼개진 네트워크
  • 서브넷마스크 : 서브네트워크를 위한 비트마스크

그림 예시를 통해 클래스 리스 설정 방법에 대해서 알아보자.

해당 네트워크가 앞 24비트는 네트워크ID이고 뒤 8비트는 호스트 ID를 사용한다.

해당 네트워크를 서브넷 마스크로 설정하려면 네트워크 주소는 모두 1로 표현하고 호스트 주소는 0으로 표현하면 된다.

즉 IP 표현 값은 192.168.123.132이 되고

서브넷마스크는 255.255.255.0으로 설정하면 네트워크 주소가 24비트까지 사용하는 구나라고 알 수 있다.

한정된 IP 주소 해결 2. NAT

공인IP(public IP)와 사설IP(private IP)와 NAT IP주소의 부족을 공인IP(public IP)와 사설IP(private IP)로 나누고 중간에 NAT 기술로 해결한다.

NAT (Network Address Translation)는 패킷이 트래픽 라우팅 장치를 통해 전송되는 동안 패킷의 IP주소를 변경, IP 주소를 다른 IP 주소로 매핑하는 방법이다.

자세한 NAT에 대한 설명은 아래 블로그 글에서 확인할 수 있다.

NAT DHCP 목적, 구조와 동작 방법