Corgi 혼자 공부하는 네트워크 3-2 공부기록
본문 바로가기
개발자 일상/혼자 공부하는 네트워크

혼자 공부하는 네트워크 3-2 공부기록

by 짱아아빠 2024. 9. 8.
반응형

IP 주소는 네트워크에서 매우 중요한 개념으로, 크게 네트워크 주소호스트 주소로 이루어져 있습니다. 네트워크 주소는 네트워크를 식별하는 부분이고, 호스트 주소는 네트워크 내에서 각 기기를 식별하는 부분입니다. IP 주소를 적절하게 할당하지 않으면 주소가 부족하거나 낭비되는 문제가 발생할 수 있는데, 이를 해결하기 위해 IP 주소 클래스라는 개념이 도입되었습니다.

클래스풀 주소 체계

클래스풀 주소 체계는 네트워크 크기에 따라 IP 주소를 여러 개의 클래스로 나누는 방식입니다. 이를 통해 네트워크 크기에 맞는 IP 주소 범위를 유동적으로 조정할 수 있습니다.

  • 클래스 A: 대규모 네트워크용으로, 1.0.0.0 ~ 126.255.255.255 범위의 IP 주소를 사용합니다. 주로 대형 기관에서 사용됩니다.
  • 클래스 B: 중간 규모 네트워크용으로, 128.0.0.0 ~ 191.255.255.255 범위의 IP 주소를 사용합니다.
  • 클래스 C: 소규모 네트워크용으로, 192.0.0.0 ~ 223.255.255.255 범위의 IP 주소를 사용합니다.

하지만 이러한 클래스풀 주소 체계에서는 유연성이 부족하여, 더 작은 네트워크에 세분화된 주소를 할당할 수 없는 한계가 있었습니다.

클래스리스 주소 체계

클래스리스 주소 체계는 클래스풀 주소 체계의 한계를 극복하기 위해 등장했습니다. IP 주소를 고정된 클래스에 구애받지 않고 더 유연하게 나눌 수 있는 방식입니다. 이를 위해 사용하는 중요한 개념이 바로 서브넷 마스크입니다.

서브넷 마스크란?

서브넷 마스크는 네트워크 주소와 호스트 주소를 구분하는 도구입니다. 서브넷 마스크는 32비트의 숫자로, 네트워크 부분은 1로, 호스트 부분은 0으로 표시됩니다.

서브넷 마스크를 사용하면 네트워크를 더욱 세분화할 수 있는데, 이를 서브네팅이라고 합니다. 서브네팅을 통해 하나의 네트워크를 더 작은 네트워크로 나누어 주소를 보다 효율적으로 관리할 수 있습니다.

서브넷 마스크 예시

IP 주소: 192.168.1.10
서브넷 마스크: 255.255.255.0 (CIDR 표기법으로는 /24)

이 서브넷 마스크를 이진수로 변환하면:

11111111.11111111.11111111.00000000

여기서:

  • 1로 된 부분이 네트워크 주소 부분을 나타냅니다. 즉, 192.168.1이 네트워크 주소입니다.
  • 0으로 된 부분이 호스트 주소 부분입니다. 즉, 마지막 자리 10이 네트워크 안에서 특정 장치를 나타냅니다.

이처럼 서브넷 마스크는 네트워크와 호스트를 구분하는 중요한 역할을 합니다.

비트 AND 연산

IP 주소와 서브넷 마스크를 사용해 네트워크 주소를 구하는 방법AND 연산을 사용합니다. AND 연산은 두 비트가 모두 1일 때만 1이 됩니다.

예시

IP 주소 (192.168.1.10):

11000000.10101000.00000001.00001010

서브넷 마스크 (255.255.255.0):

11111111.11111111.11111111.00000000

이 두 값을 AND 연산하면 네트워크 주소는 192.168.1.0이 됩니다. 이렇게 서브넷 마스크와 AND 연산을 통해 네트워크와 호스트 부분을 구분할 수 있습니다.

공인 IP 주소와 사설 IP 주소

공인 IP 주소

공인 IP 주소는 전 세계에서 고유한 주소로, 인터넷과 같은 네트워크 간 통신에 사용됩니다. 이 주소는 ISP(인터넷 서비스 제공자)나 공인 IP 주소 할당 기관을 통해 할당받습니다.

사설 IP 주소와 NAT

사설 IP 주소는 내부 네트워크에서 사용되며, 일반적으로 라우터가 관리합니다. 사설 IP 주소는 외부 네트워크에서 고유하지 않으며, 여러 네트워크에서 동일한 사설 IP를 사용할 수 있습니다. 외부 네트워크와 통신하기 위해서는 NAT(네트워크 주소 변환) 기술을 사용하여 공인 IP 주소로 변환합니다.

 

 

공인 IP 주소는 인터넷 통신 목적으로 사용되고, 사설 IP 주소는 로컬 네트워크 통신 목적으로 사용된다는 점에서 차이가 있기에 어느 IP 주소가 더 좋다고 이야기하기는 힘듭니다. 다만 공인 IP 주소는 인터넷에서 식별이 가능하기에 공인 IP 주소가 노출되어 개인 데이터가 유출되지 않도록 주의할 필요는 있습니다.

 

NAT (Network Address Translation)는 다음 두 가지 주요 이유로 사용됩니다:

1. 공인 IP 주소 절약

  • IP 주소의 제한: IPv4 주소는 32비트 주소 체계를 사용하여 약 43억 개의 주소를 제공하지만, 인터넷의 성장과 사용자의 수가 급증함에 따라 공인 IP 주소는 부족해지고 있습니다.
  • 주소 재사용: NAT를 사용하면 하나의 공인 IP 주소를 여러 내부 장치와 공유할 수 있습니다. 내부 네트워크의 장치들은 사설 IP 주소를 사용하며, 이 주소들은 인터넷에서 직접적으로 유효하지 않습니다. NAT는 이러한 사설 IP 주소를 공인 IP 주소로 변환하여 인터넷과의 통신을 가능하게 합니다.

2. 보안

  • 내부 네트워크 보호: NAT는 외부 네트워크에서 내부 네트워크의 장치들에 직접 접근하는 것을 어렵게 만듭니다. 외부에서 내부 장치의 사설 IP 주소를 직접 알 수 없기 때문에, 보안 위협으로부터 내부 네트워크를 어느 정도 보호할 수 있습니다.
  • 포트 포워딩: NAT를 통해 특정 포트를 외부에서 내부 네트워크의 특정 장치로 포워딩할 수 있습니다. 이를 통해 외부에서 내부 네트워크의 서버나 서비스에 접근할 수 있게 하면서도, 내부 장치의 IP 주소를 보호할 수 있습니다.

NAT의 동작 방식

  1. 출발지 NAT (Source NAT): 내부 네트워크의 장치가 인터넷으로 데이터를 전송할 때, 출발지 IP 주소를 내부 장치의 사설 IP 주소에서 공인 IP 주소로 변환합니다. 이를 통해 인터넷 상의 서버는 공인 IP 주소로 응답하며, NAT 장치는 이 응답을 올바른 내부 장치로 전달합니다.
  2. 도착지 NAT (Destination NAT): 인터넷에서 들어오는 패킷의 목적지 주소를 공인 IP 주소에서 내부 네트워크의 사설 IP 주소로 변환합니다. 이를 통해 외부 서버는 공인 IP 주소로 패킷을 보내고, NAT 장치는 이 패킷을 적절한 내부 장치로 전달합니다.

DHCP와 동적 IP 주소 할당

DHCP는 IP 주소를 자동으로 동적으로 할당해주는 프로토콜입니다. 동적 할당은 사용하지 않는 IP 주소를 재사용할 수 있게 하여 주소 낭비를 줄입니다. IP 주소는 DHCP 서버가 관리하며, IP 주소를 클라이언트에 임대해주는 방식으로 동작합니다.

DHCP 통신 과정은 다음과 같습니다:

  1. DHCP Discover: 클라이언트가 서버를 찾기 위해 브로드캐스트 메시지를 보냅니다.
  2. DHCP Offer: DHCP 서버가 IP 주소와 임대 기간 등의 정보를 클라이언트에 제안합니다.
  3. DHCP Request: 클라이언트가 제안된 IP 주소를 요청합니다.
  4. DHCP ACK: DHCP 서버가 IP 주소 할당을 승인합니다.

이 과정을 통해 IP 주소가 자동으로 클라이언트에 할당됩니다.


DHCP 임대 연장 시점

  1. T1 (Renewal Time): IP 주소의 임대 기간의 50%가 지나면 클라이언트는 DHCP 서버에 IP 주소 연장을 요청합니다. 이 시점에 클라이언트는 DHCP Request 메시지를 서버에 보내어 현재 IP 주소를 계속 사용할 수 있도록 요청합니다.
  2. T2 (Rebinding Time): 만약 T1에서 클라이언트가 응답을 받지 못하면, IP 주소의 임대 기간의 87.5%가 지나면 DHCP Request 메시지를 브로드캐스트하여 네트워크의 모든 DHCP 서버에 IP 주소 연장을 요청합니다. 이 시점을 T2라고 부릅니다. 만약 이 시점에서도 응답이 없다면, 클라이언트는 IP 주소를 갱신하지 못하고 네트워크를 떠나야 할 수 있습니다.

DHCP 클라이언트가 여러 DHCP 서버로부터 Offer를 받을 경우, 클라이언트는 여러 Offer 중에서 하나를 선택하여 Request를 보내고, 해당 서버의 응답을 기다립니다. 이 과정에서 클라이언트는 일반적으로 다음과 같은 방식으로 처리합니다:

  1. 여러 DHCP Offer 수신: 클라이언트가 네트워크에 연결되면 여러 DHCP 서버로부터 Offer 메시지를 받을 수 있습니다. 각 서버는 자신의 IP 주소와 구성 정보를 포함한 Offer를 보냅니다.
  2. Offer 선택: 클라이언트는 여러 Offer 중에서 하나를 선택합니다. 이 선택 과정은 클라이언트의 구현에 따라 달라질 수 있지만, 일반적으로 클라이언트는 첫 번째로 받은 Offer를 선택하는 경우가 많습니다. 또는 클라이언트가 제공하는 추가 정보를 기반으로 선택할 수도 있습니다.
  3. DHCP Request 전송: 클라이언트는 선택한 DHCP 서버에게만 DHCP Request 메시지를 보내어 해당 IP 주소를 요청합니다. 이 메시지에는 선택한 서버의 Offer 정보가 포함됩니다.
  4. DHCP ACK 수신: 선택한 DHCP 서버는 클라이언트의 Request 메시지를 받고, IP 주소의 임대를 승인하는 DHCP ACK 메시지를 전송합니다. 클라이언트는 이 메시지를 수신하고 IP 주소를 최종적으로 할당받습니다.
  5. 다른 Offer 무시: 클라이언트가 이미 IP 주소를 할당받은 후에는 다른 DHCP 서버로부터의 Offer를 무시합니다.

이 과정에서 클라이언트는 기본적으로 가장 먼저 돌아온 Offer를 선택하거나, 가장 적합한 Offer를 선택하는 방식으로 동작합니다. 중요한 점은, 클라이언트가 Request 메시지를 보내는 순간에만 IP 주소를 확보할 수 있으며, 서버들이 동시에 IP 주소를 제공하려 해도, 클라이언트는 단 하나의 서버의 Offer만을 선택하여 사용하게 됩니다.

특수 목적 IP 주소

  • 루프백 주소: 127.0.0.1은 자신의 컴퓨터를 가리키는 주소로, 네트워크 테스트에 주로 사용됩니다.
  • 디폴트 라우트: 패킷을 어떤 경로로 보낼지 알 수 없을 때 기본적으로 지정된 경로로 보내는 방법입니다.
반응형

 

반응형

댓글