IP와 라우팅

이정빈·2024년 4월 30일

네트워크

목록 보기
10/10
post-thumbnail

IP주소

IP 주소는 인터넷 프로토콜 (Internet Protocol)에서 사용되는 주소 체계로, 네트워크 상의 장치들을 식별하는 데 사용된다. 컴퓨터, 스마트폰, 서버, 라우터 등 네트워크에 연결된 모든 장치에 IP 주소가 할당된다.

IP 주소는 컴퓨터별로 달라야하므로 계층적으로 할당되고, 규칙이 있다. 이를 위해 ICANN(Internet Corporation for Assigned Names and Numbers)에서 모든 IP주소를 관리한다.

ICANN은 지역 인터넷 레지스트리(RIR, Regional Internet Registry)에게 IP 주소의 일정 범위를 할당하고 지역 인터넷 레지스트리는 국가별 인터넷 레지스트리에 일정 범위를 할당하고, 국가별 인터넷 레지스트리는 로컬 인터넷 레지스트리의 ISP들에게 일정 범위를 할당한다.

마지막으로 로컬 인터넷 레지스트리는 사용자에게 특정 IP주소를 할당한다.

요약하면 ICANN -> 지역 인터넷 레지스트리(RIR) -> 국가별 인터넷 레지스트리(NIR) -> 로컬 인터넷 레지스트리(LIR) -> 사용자 순으로 할당된다.

  • MAC 주소와 IP 주소가 모두 필요한 이유
    MAC 주소는 NIC에 할당된 물리적인 주소이다. '다음에 어떤 기기에 프레임을 전송하는지'를 지정하는 주소로 사용된다.
    반면 IP주소는 OS에 할당되는 논리적인 주소이다. '최종적으로 어디에 패킷을 전달할지'를 지정하는 주소이다.
    (이 두 주소를 연결하는 것이 ARP이다.)
    이더넷 네트워크에서 통신을 하기 위해 MAC 주소가 필요하다. 그리고 IP 네트워크에서 통신을 하기 위해서는 IP주소가 필요하다. 현대의 네트워크에서 많은 네트워크는 네트워크 계층에서 IP를 사용하고 데이터링크 계층에서 이더넷을 사용하기 때문에 IP주소와 MAC 주소가 둘 다 필요하다.

IPv4와 IPv6

IP에는 2가지 버젼이 있다. IPv4 (Internet Protocol version 4)와 IPv6 (Internet Protocol version 6)이다.

IPv4

32비트 주소 체계를 사용하며 보통 192.168.0.1과 같이 "xxx.xxx.xxx.xxx" 형식으로 표현된다. IPv4로 최대 할당 가능한 IP 주소의 개수는 2의 32승으로 약 40억개이다. 초기 인터넷이 발전할 당시에는 충분했지만, 인터넷 사용량이 급증함에 따라 부족해졌다. 따라서 IPV6가 발명 되었다. 하지만 아직도 IPv4는 현재까지도 가장 널리 사용되는 프로토콜이며, 많은 기존 시스템과 장치들이 IPv4를 사용하고 있다.

IP주소는 네트워크부와 호스트부로 나뉜다. 네트워크부는 어떤 네트워크를 측정하는 정보이다. 호스트부는 그 네트워크 안에 있는 디바이스를 특정한다. 이 두가지를 통합하여 1개의 IP주소가 되는 것이다.

IPv6

128비트 주소 체계를 사용하며 16진수로 표현된다. 보통 2001:0db8:85a3:0000:0000:8a2e:0370:7334와 같이 "xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx" 형식으로 표현된다. IPv6로 최대 할당 가능한 IP 주소의 개수는 2의 128승인데 이는 340조의 1조배의 1조배 정도의 천문학적인 숫자이다. IPv4의 주소 고갈 문제와 더 많은 기능과 보안을 제공하는 IPv6의 특징으로 인해, IPv6의 채택이 점차적으로 늘어나고 있다.

일반적으로 IPv4와 IPv6는 호환된다. 따라서 IPv6 네트워크에서 IPv4 장치와 통신할 수 있으며, 그 반대도 가능하다. 하지만 이러한 호환성은 일부 환경에서는 문제가 될 수도 있다. 예를 들어 IPv4를 기반으로 작성된 애플리케이션은 IPv6 환경에서 문제를 일으킬 수 있다.


Public IP(공인 IP)와 Private IP(사설 IP)

Public IP

인터넷 사용자의 로컬 네트워크를 식별하기 위해 ISP(인터넷 서비스 공급자)가 제공하는 IP 주소이다. 공용 IP 주소라고도 불리며 외부에 공개되어 있는 IP 주소이다.

  • Public IP는 전세계에서 유일한 IP 주소를 갖는다.
  • Public IP 주소가 외부에 공개되어 있기에 인터넷에 연결된 다른 PC로부터의 접근이 가능하다. 따라서 공인 IP 주소를 사용하는 경우에는 방화벽 등의 보안 프로그램을 설치할 필요가 있다.

Private IP

일반 가정이나 회사 내 등에 할당된 네트워크의 IP 주소이며, 로컬 IP, 가상 IP라고도 불린다. IPv4의 주소부족으로 인해 서브넷팅된 IP이기 때문에 라우터에 의해 로컬 네트워크상의 PC나 장치에 할당된다.

  • Private IP는 전 세계적으로 고유하지 않으며, 특정 Private 네트워크 내에서만 유효하다.
  • Private IP 주소는 특정 IP 주소 범위 내에서 선택하여 사용할 수 있다.
    - 가장 널리 사용되는 Private IP 주소 범위는 IPv4에서는 아래와 같다.
    10.0.0.0 ~ 10.255.255.255
    172.16.0.0 ~ 172.31.255.255
    192.168.0.0 ~192.168.255.255
  • Private IP 주소는 NAT(Network Address Translation)과 함께 사용되어 Public IP 주소와 Private 네트워크 간의 통신을 가능하게 한다. Private 네트워크 내의 장치들은 NAT를 통해 Public IP 주소를 가진 라우터나 게이트웨이를 통해 인터넷에 연결된다.

Public IP와 Private IP 차이

  • 할당 주체
    - Public IP는 ISP가 할당해줌
    - Private IP는 라우터(공유기)가 할당해줌
  • 고유성
    - Public IP는 인터넷 상에서 고유함
    - Private IP는 인터넷 상에서는 중복될 수 있으며 Private 네트워크 안에서 유일함
  • 공개여부
    - Public IP는 내부/외부 접근 가능
    - Private IP는 외부 접근 불가능

Private IP 주소만으로는 인터넷에 직접 연결할 수 없다. 따라서 라우터를 통해 1개의 Public IP만 할당하고, 라우터에 연결된 개인 PC는 Private IP 주소를 각각 할당 받아 인터넷에 접속할 수 있게 된다.

  • Private IP를 할당받은 디바이스가 데이터 패킷을 인터넷으로 전송하면, 라우터(공유기)가 해당 Private IP를 Public IP로 바꿔서 전송한다.

  • 인터넷에서 오는 데이터 패킷의 목적지도 해당하는 Private IP로 변경한 후 디바이스에 전송한다.


NAT과 NAPT

위에서 Public IP와 Private IP를 살펴보았다. 그런데 인터넷에 접속한 디바이스는 모두 고유의 IP 주소를 사용해야한다. 그렇다면 Private IP를 통해 접속한 디바이스는 어떻게 인터넷 통신을 할까? 주소를 변환함으로써 가능하다. 여기에는 2가지 방법이 있다.

NAT(Network Address Translation)

NAT는 몇개의 Public IP 주소를 라우터에 할당하고 LAN 내의 디바이스가 인터넷에 접속할 때 이 중 하나를 이용하여 통신하는 방법이다. LAN 내에서 인터넷에 패킷을 전송할 때 Private IP 주소를 Public IP 주소로 교체한다. 따라서 인터넷에 동시에 접속할 수 있는 디바이스의 개수는 라우터가 갖고 있는 Public IP 주소의 개수로 제한된다.

NAPT(Network Address Port Translation)

NAPT는 IP주소의 변환과 함께 포트번호도 변환하는 것으로 한개의 Public IP 주소를 여러대의 컴퓨터가 공용으로 사용하는 방법이다. 라우터의 Public IP 주소 하나에 여러 Private IP 주소를 매칭하는 것이다. 이 과정에서 Private IP들을 구분해야하므로 포트번호를 통해 구분한다.

  • 그런데 일반적으로 포트번호는 프로세스를 구분하기 위함인데 그럼 프로세스 구분은 어떻게 할까?
    디바이스가 특정 포트번호를 통해 요청을 보내도 라우터가 해당 Private IP주소와 포트번호를 Public IP주소와 새로운 포트번호로 바꿔준다.

ICMP

ICMP(Internet Control Message Protocol)는 네트워크 장비 간에 제어 메시지를 전송하기 위한 프로토콜이다.
간단히 말해 ICMP는 네트워크 장비 간에 서로 통신할 수 있도록 도와주는 프로토콜이다. 네트워크에서 발생하는 다양한 이벤트를 감지하고 통지하는 데 사용되며, 예를 들어 네트워크 장비의 동작 상태를 확인하거나, 라우팅 오류나 호스트의 접속 불가능 여부를 알려주는 등 다양한 기능을 수행한다.

ICMP를 사용하는 대표적인 예시로 핑(ping)이 있다. 핑을 실행하면 송신 호스트는 해당 목적지 호스트에게 ICMP 에코 요청 메시지를 보내고, 목적지 호스트는 에코 응답 메시지를 다시 송신 호스트로 보낸다. 이 과정에서 송신 호스트는 에코 요청을 보낸 시간부터 에코 응답을 받은 시간까지의 경과 시간을 측정하여 이를 통해 네트워크 지연 시간을 알 수 있다.


서브넷(Subnet)과 서브넷 마스크(Subnet Mask)

서브넷은 이름에서 알 수 있듯 네트워크의 부분망이다. 그림에서 3개의 하늘색 부분이 서브넷이다. 조직에서는 하나의 큰 네트워크 대신 네트워크들을 서브넷으로 나누어서 관리하는 경우가 있다. 이를 서브넷화(Subnetting)라고 한다. 서브넷화를 하는 이유는 아래와 같다.

  • 브로드캐스트가 닿는 범위가 한정된다.
    - 브로드캐스트란 네트워크 내의 전체 컴퓨터로의 일괄 전송을 의미한다. 따라서 그 범위가 너무 넓으면 무관한 컴퓨터에도 쓸데 없는 처리를 하게되므로 네트워크의 통신 능력을 낭비한다.

  • 장애가 미치는 범위를 최소화할 수 있다.

서브넷화를 하는 경우 IP 주소 중 네트워크부를 더 연장하고 그만큼 호스트부를 줄인다. 즉, 호스트의 일부까지 네트워크부로 사용한다.

예를 들어 위의 사진처럼 네트워크부를 2비트 연장하고 호스트부를 2비트 줄일 수 있다. 이 경우 각 서브넷에서 2^6 -2개의 호스트 IP가 존재할 수 있다.

2의 6 제곱에서 2를 빼는 이유:
브로드 캐스트 주소와 네트워크 주소를 제외해야하기 때문이다.

  • 호스트 주소 111111 는 브로드 캐스트 주소로 사용된다. (브로드 캐스트 주소는 255.255.255.255 이다. 호스트가 브로드캐스트 주소로 패킷을 보내면, 같은 서브넷에 존재하는 모든 호스트들에게 패킷이 전송된다.)
  • 호스트 주소 000000 는 네트워크 주소로 사용된다.

서브넷 마스크

서브넷 마스크는 IP주소를 네트워크부와 호스트부로 나누는데 사용되는 숫자 조합이다. 서브넷 마스크는 IP 주소와 같은 길이의 비트로 구성되며, 이진수(Binary)로 표현했을 때 네트워크부는 1로, 호스트부는 0으로 설정된다.

예를 들어 210.100.100.1의 서브넷 마스크가 255.255.255.0이라면,
255.255.255.0은 1111 1111. 1111 1111. 1111 1111. 0000 0000과 같다.
여기서 1인 부분은 네트워크를, 0인 부분은 해당 네트워크 내에 속해있는 호스트를 나타내므로 IP주소와 서브넷 마스크를 논리적 AND 연산 결과 값이 바로 서브넷이 된다. 하나의 주소를 서브넷 마스크를 씌워서 작은 네트워크로 만드는 것을 서브넷화라고 한다.


라우팅

라우팅이란 라우터로 패킷을 전송하는 것을 의미한다. 라우팅은 무엇을 어디로 전송하면 될지 결정하는 전송 규칙에 따라 수행되며 그 전송 규칙을 결정하는 데 있어 라우팅 테이블(routing table)이 중요한 요소이다.

라우팅 테이블이란 라우터에서 사용하는 테이블로, 네트워크에서 패킷이 전송될 때 해당 패킷을 어떻게 라우팅할지를 결정하는 데 사용되는 테이블이다. 라우터의 라우팅 테이블에는 목적지 IP 주소와 이 목적지로의 다음 홉(Next Hop) 정보, 목적지 네트워크의 서브넷 마스크 등이 포함되어 있다.

그런데 새로운 네트워크가 추가되는 되거나 네크워크의 상태가 변할 때 라우터 테이블은 어떻게 관리될까?
여기에는 정적 라우팅과 동적 라우팅 방법이 있다.

정적 라우팅(Static Routing)

정적 라우팅은 네트워크의 라우팅 테이블을 수동으로 관리하여 목적지 네트워크로의 패킷 전송 경로를 설정하는 방식이다. 정적 라우팅은 수동적이며, 관리가 용이하고 간단하지만, 대규모 네트워크에서는 유지보수가 어렵고 복잡성이 증가할 수 있다.

동적 라우팅(Dynamic Routing)

동적 라우팅은 네트워크에서 라우팅 정보를 자동으로 교환하여 최적의 경로를 찾아주는 라우팅 방식이다. 이를 위해 라우터는 동적 라우팅 프로토콜을 사용하여 서로 정보를 교환하고 네트워크의 상태를 모니터링한다. 동적 라우팅은 아래와 같은 장점이 있다.

자동 라우팅 테이블 업데이트

  • 라우터는 동적 라우팅 프로토콜을 사용하여 다른 라우터들과 자동으로 라우팅 정보를 교환하고 라우팅 테이블을 업데이트한다.

네트워크 상태 고려

  • 동적 라우팅은 네트워크의 현재 상태를 고려하여 최적의 경로를 선택한다. 이는 네트워크 트래픽이나 라우터 상태의 변화에 따라 경로를 동적으로 조정할 수 있음을 의미한다.

경로 선택 알고리즘

  • 동적 라우팅 프로토콜은 다양한 경로 선택 알고리즘을 사용하여 최적의 경로를 찾는다. 따라서 네트워크의 비용을 고려한 경로 선택이 가능하다.

스케일러블

  • 동적 라우팅은 대규모 네트워크에서도 효율적으로 동작하며, 네트워크의 크기가 변화해도 쉽게 적용할 수 있다.

라우팅 프로토콜

라우팅 프로토콜이란 라우팅 테이블을 동적으로 갱신하는 동적 라우팅에서 사용하는 프로토콜이다. 라우팅 프로토콜의 동작은 (1) 라우터끼리 경로 정보를 교환, (2) 수집한 경로에서 최적 경로를 결정 이 있다.

라우팅 프로토콜은 하나의 ISP나 조직이 관리하는 대규모 네트워크(AS, Autonomous System) 내의 라우팅 기법과 대규모 네트워크 간의 라우팅 기법으로 나뉜다.

AS 내의 라우팅 기법(IGP, Interior Gateway Protocol)

RIP(Routing Information Protocol)

  • 라우터가 다른 라우터까지의 거리(경로의 라우터 수)만 계산하여 최적의 경로를 선택
  • 주기적으로 라우터 간에 라우팅 테이블 정보를 교환하여 라우팅 테이블 정보를 갱신
  • 느린 알고리즘이라서 대규모 네트워크에 사용하기에는 성능 문제 발생

OSPF(Open Shortest Path First)

  • 라우터가 다른 라우터까지 거리 자체를 계산하는 것보다는 각 링크의 상태(대역폭, 지연 시간 등)를 고려하여 네트워크의 토폴로지를 구성하고, 이를 기반으로 최단 경로를 계산
  • 네트워크 내의 링크의 활성화나 비활성화가 발생할 때 라우팅 테이블 정보를 갱신
  • 라우팅 테이블을 구성하는 데 있어 더욱 유연하고 정확한 정보를 제공하여 중규모 네트워크에 사용 가능

AS 간의 라우팅 기법(EGP, Exterior Gateway Protocol)

BGP(Border Gateway Protocol)

  • AS로 이동하는 경로 정보, AS 경로의 길이, 소유자 정책 등 다양한 사항을 고려하여 경로 선택
  • 라우팅 정보에 변경이 있을 때만 라우팅 테이블을 갱신

IP주소 할당 방법

정적할당

  • 네트워크 관리자가 각 장치에 대해 고정된 IP 주소를 수동으로 할당
  • 각 장치는 네트워크 설정에서 IP 주소, 서브넷 마스크 등의 정보를 직접 입력하여 할당
  • 정적 할당은 장치가 항상 동일한 IP 주소를 사용하도록 보장하며, 관리가 용이
  • 대규모 네트워크에서는 관리가 어려움

동적할당

  • DHCP(Dynamic Host Configuration Protocol)를 사용하여 IP 주소를 자동으로 할당
    - DHCP 서버는 네트워크에 연결된 장치에 대해 동적으로 IP 주소를 할당하고 필요한 네트워크 설정 정보를 제공
    - 클라이언트 장치가 네트워크에 연결될 때 DHCP 서버에 IP 주소를 요청하고, DHCP 서버는 유효한 IP 주소를 할당하여 응답
    - 주로 사설 IP를 할당하는데에 DHCP가 사용됨
  • 네트워크 관리가 용이
  • IP 주소가 낭비되지 않음
  • 장치가 이동할 때마다 새로운 IP 주소를 자동으로 할당받음

DHCP(Dynamic Host Configuration Protocol)

네트워크에 연결된 장치가 IP 주소 및 기타 네트워크 구성 정보를 자동으로 얻을 수 있도록 하는 프로토콜이다. DHCP는 클라이언트-서버 모델을 기반으로 하며, 네트워크 관리자가 DHCP 서버를 구성하여 네트워크에 연결된 클라이언트에게 IP 주소를 동적으로 할당한다. 다음의 기능들을 갖고 있다.

IP 주소 할당

  • DHCP 서버는 네트워크에 연결된 클라이언트에게 동적으로 IP 주소를 할당한다. 클라이언트가 네트워크에 연결되면 DHCP 클라이언트는 DHCP 서버에 IP 주소를 요청하고, DHCP 서버는 유효한 IP 주소를 할당하여 응답한다.

서브넷 마스크 및 기본 게이트웨이 할당

  • DHCP 서버는 클라이언트에게 IP 주소 외에도 서브넷 마스크, 기본 게이트웨이, DNS 서버 및 기타 네트워크 설정 정보를 제공한다.
  • 기본 게이트웨이
    네트워크에서 다른 네트워크로 패킷을 전송하는데 사용되는 장치이다. 목적지 네트워크로의 경로를 제공하고, 패킷이 목적지 네트워크로 전달되도록 도와준다. 일반적으로 라우터나 라우팅 장비로 구성된다.

IP 주소 충돌 방지

  • DHCP는 IP 주소 충돌을 방지하기 위해 할당된 IP 주소의 중복을 방지한다.

네트워크 관리 용이성

  • DHCP를 사용하면 네트워크 관리가 용이하다. 네트워크 관리자는 DHCP 서버를 통해 클라이언트에게 필요한 네트워크 설정 정보를 중앙에서 관리하고 업데이트할 수 있다.

DHCP를 통한 간략한 IP주소 할당 과정

1. DHCP Discover(검색)

  • 네트워크에 연결되고 싶은 클라이언트는 브로드캐스트 메시지인 DHCP Discover 패킷을 네트워크에 브로드캐스트하여 DHCP 서버를 찾는다.

2. DHCP Offer(제안)

  • DHCP 서버는 DHCP Discover 메시지를 받으면 사용 가능한 IP 주소 중 하나를 할당할 것을 제안하는 DHCP Offer 메시지를 클라이언트의 MAC주소로 전송한다.

3. DHCP Request(요청)

  • 클라이언트는 DHCP Offer를 받으면 해당 IP 주소를 요청하기 위해 DHCP 서버에게 DHCP Request 메시지를 전송한다.

4. DHCP Acknowledge(승인)

  • DHCP 서버는 클라이언트의 요청을 수락하고, 클라이언트에게 해당 IP 주소를 할당하는 DHCP Acknowledge 메시지를 전송한다.

참고:

  • 그림으로 공부하는 TCP/IP 구조 (미야타 히로시, 제이펍)
  • 그림으로 배우는 네트워크 구조(후쿠나가 유우지, BJ퍼블릭)
    h- ttps://velog.io/@hidaehyunlee/%EA%B3%B5%EC%9D%B8Public-%EC%82%AC%EC%84%A4Private-IP%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90
  • https://ittrue.tistory.com/183
  • https://enter.tistory.com/165
profile
사용자의 입장에서 생각하며 문제를 해결하는 백엔드 개발자입니다✍

0개의 댓글