1. IP 주소란?
IP 주소란 Internet Protocol address의 약자로, 컴퓨터 네트워크에서 장치들이 서로를 인식하고 통신을 하기 위해서 사용하는 32bit 짜리 식별자이다.
인터페이스는 한 host가 host-라우터간 피지컬 링크간 연결
라우터는 일반적으로 여러 인터페이스를 가진다.
host는 일반적으로 1, 2 인터페이스를 가진다.
IP주소는 8bit짜리 숫자 4개로 구성된다.
인터페이스가 어떻게 연결되어있는지? -> 뒷부분에서
2. 서브넷
IP주소의 high order bit는 서브넷내에서 서브넷 식별자가되고
low order bits는 호스트 식별하는데 사용된다. 서브넷이 된다.
1) 서브넷이란?
서브넷이란 라우터의 개입없이 서로 통신할 수 있는 device interface이다.
device interface 는 IP주소의 동일한 서브넷 파트를 가진다.
호스트와 라우터로부터 인터페이스를 분류해보면 고립된 interface island를 확인할 수 있다.
서브넷을 표시하기 위해 IP주소 뒤에 /subnet part bit 수 로 표시하기도 한다. (ex. 223.1.1.0/24)
서브넷은 하나의 네트워크를 더 작은 논리적 네트워크로 나누어 IP 주소를 효율적으로 관리하고 트래픽을 분리하기 위한 단위이다.
동일한 서브넷에 속하는 컴퓨터는 해당 IP 주소의 가장 중요한 비트로 구성된 동일한 그룹으로 주소가 지정된다. 이로 인해 IP 주소가 두 개의 필드, 즉 네트워크 번호 또는 라우팅 접두사와 나머지 필드 또는 호스트 식별자로 논리적으로 구분된다. 나머지 필드는 특정 호스트 또는 네트워크 인터페이스에 대한 식별자이다.
아래의 그림에는 4개의 서브넷이 존재한다.
2) IP 주소 체계 : CIDR (Classless Inter-Domain Routing)
CIDR 이란 IP를 할당하고 패킷을 라우팅하는 방식 중 하나이다.
IP주소 체계는 클래스로 나누어져 서브넷 파트의 길이가 고정되어있다.
클래스에따라 IP가 낭비되기도했고, 호스트 수가 많아지면서 CIDR이 등장했다.
IP주소를 a.b.c.d/x 처럼 표기하는데 x가 서브넷 파트의 비트 수이다.
예를들어 IP 200.23.16.0/23에서 23은 subnet 파트 비트 수이다.
200.23.16.0을 2진수로 표현하면 11001000 00010111 00010000 00000000 이다.
이중 앞 23비트는 서브넷 파트이다.
그러므로 파란색은 서브넷 파트이고 뒤에 노란색이 호스트 파트이다.
11001000 00010111 00010000 00000000
3. IP 주소를 얻는 방법
1) 호스트가 IP 주소를 얻는 방법 : DHCP
(1) DHCP란?
IP주소는 시스템 설정에서 하드코딩하여 설정할 수 있다.
그러나 직접 IP를 설정하는 경우 동일한 IP를 사용하면 충돌이 날 수도있다.
그래서 이 문제를 해결하기 위해 DHCP가 등장했다.
DHCP는 Dynamic Host Configuration Protocol의 약자로, 동적 호스트 설정 프로토콜이다.
IP를 필요로하는 호스트에게 자동으로 IP를 할당해주고, 사용하지 않으면 반환받아 다른 호스트에게 할당할 수 있도록 하는 방법을 제공한다.
보통 라우터 장비에 기능이 탑재되지만, 별도의 서버에 DHCP 서비스를 설정하여 사용할 수도 있다. (라우터는 단지 게이트웨이 역할만 하고, DHCP 서버는 별도로 두는 구성도 많이 사용된다.)
DHCP 서버는 IP 관리 및 할당 이외에도 DHCP 서버는 아래 정보를 제공한다.
인터넷으로 데이터를 내보내기 위한 first-hop 라우터의 주소
Local DNS 서버의 이름과 주소
네트워크 마스크
(2) DHCP 동작 방법
DHCP client-server 시나리오
이 discover packet에는 호스트의 MAC 주소가 담겨있어 DHCP 서버가 응답할 떄 패킷을 수신할 수 있게 된다.
DHCP 서버가 이 패킷을 받으면 다음 단계로 넘어가고, 나머지 호스트들은 패킷을 폐기한다.
(3) 동작 예시
DHCP |
UDP |
IP |
Ethernet |
Physical |
새로 호스트가 네트워크에 연결하려면 DHCP 서버에게 IP주소, first-hop 라우터 주소, DNS서버 주소를 요청한다.
DHCP 요청은 UDP 세그먼트로, IP 데이터그램으로, Ethernet 프레임으로 캡슐화되고, subnet에 브로드캐스트 된다.
DHCP 서버가 해당 패킷을 받고, 디멀티플렉싱이 일어난다.
DHCP 서버가 필요한 정보를 담아 패킷을 보내면 새로운 호스트에서 디먹플렉싱이 일어난다.
2) 서브넷이 IP를 할당받는 방법
그렇다면 서브넷은 어떻게 IP를 얻을까?
서브넷은 IP를 ISP에서 제공받는데 ISP가 가진 주소 블럭에서 각 기관을 식별하기 위해 3비트를 사용해 할당한다.
예를 들어
ISP A가 200.23.16.0/20 (11001000 00010111 00010000 00000000) 을 가지고있다면,
Org 1에게는 200.23.16.0/23 (11001000 00010111 00010000 00000000) 을,
Org 2에게는 200.23.18.0/23 (11001000 00010111 00010010 00000000) 을, ... 할당한다.
ISP는 라우팅 정보를네트워크에 알려야(advertising)하는데,
모든 정보를 알리는 대신 200.23.16.0/20을 모두 자신에게 보내라고한다.
만약 한 서브넷(기관. Org)가 ISP를 변경한다면 IP를 바꾸는 대신 바뀐 ISP가 해당 서브넷이 가진 IP 대역을 자신에게 보내라고 알린다.
Org2가 199.31.0.0/16 IP를 가진 ISP B로 변경한다면, ISP B는 네트워크에 기존에 199.31.0.0/16과 200.23.18.0/23를 자신에게 보내라고 알린다. 인터넷에서는 가능한 경우 가장 길게 일치하는 (longest address prefix) 곳으로 보내므로 Org2의 주소로 오는 데이터는 ISP B가 받게된다.
Longest Address Prefix
예를 들어, 아래의 경우 Dest 주소가 Link interface 1과 2 모두 해당되지만,
더 많은 adreess prefix가 일치하는 주소 범위를 가진 Link interface 1로 보낸다.
Destination : 11001000 00010111 00011000 10101010
Link interface 1 : 11001000 00010111 00011000 ********
Link interface 2 : 11001000 00010111 00011*** ********
3) ISP가 주소 블럭을 받는 방법
그렇다면 ISP는 주소 블럭을 어떻게 받을까?
ICANN (Internet Corporation for Assigned Names and Numbers) 에서 IP 할당, DNS 관리 등을 하는데,
ICANN에서 지역 인터넷 등록기관(RIR Regional Internet Registry)으로, 그 다음 국가의 운영기관 혹은 ISP 로 할당하고,
각 국가의 운영기관이 ISP로 할당한다.
우리나라 탑 도메인(.kr)의 TLD 서버은 한국인터넷진흥원(KISA) 산하 한국인터넷정보센터(KRNIC)에서 관리한다.
즉, ICANN → APNIC(아태지역 네트워크 정보센터) → KISA(KRNIC) → ISP → 개별 사용자 이렇게 할당받는다.
4. NAT : Network Address Translation
CIDR, DHCP, NAT는 IP주소를 효율적으로 사용하는 것이 목적이다.
1) NAT란?
NAT란 IP패킷의 IP 주소와 포트를 재기록(변환)하는 기술을 말한다.
NAT를 쓰는 이유는 여러 대의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위한 경우가 대부분이다.
로컬 네트워크 모든 호스트는 외부 세계와 관련하여 단 하나의 IP 주소만 사용하는 것이다.
예를 들어 인터넷 회선을 하나 개통하고 인터넷 공유기를 달아서 여러 PC 를 연결하여 사용 하는데, 이것이 가능한 이유가 인터넷 공유기에 NAT 기능이 탑재되어 있기 때문이다.
IP주소를 호스트별로 할당하는 것이 아니라, 서브넷에 단일 IP 주소를 할당하므로 IP 주소를 절약할 수 있다.
외부에 알리지 않고 로컬 네트워크에서 장치의 주소를 변경할 수 있다. (Load balancing)
로컬 네트워크의 장치 주소를 변경하지 않고도 ISP를 변경할 수 있다.
로컬 네트워크 내부의 장치는 명시적으로 주소 지정이 불가능하며 외부에서 볼 수 없다.(보안)
그러나 변환하는데 지연이 발생하고,
양방향 세션인 peer-to-peer 어플리케이션에서 충돌이 발생할 수 있다는 단점이 있다.
2) NAT 라우터 기능
모든 발신 데이터그램의 Source IP, port를 NAT IP, 새 포트로 교체한다.
원격 클라이언트/서버는 NAT IP, 새 포트로 응답한다.
NAT라우터는 교체하면서 기록해뒀던 NAT translation table에 매핑 정보를 찾아 원래 Source IP, port로 변경하여 Local 호스트에게 전달한다. (Source host입장에서는 NAT가 사용되는지 아닌지 모르게된다.)
네트워크 주소 변환
16 bit 포트 번호 필드를 사용한다. 동시에 6만여개의 connection을 지원할 수 있다.
NAT는 논란의 여지가있다.
라우터는 네트워크 계층까지의 기능을 탑재했는데 transport 세그먼트를 수정한다는 점과,
end-to-end 원칙을 위반한다,
어플리케이션 디자인에서 제약이 발생한다는 점에서 논란의 여지가 있다.
그래서 IP 주소 부족 문제는 IPv6로 해결해야한다.
NAT가 문제가 되는 경우는 서버가 내부 네트워크에 있는 경우이다.
서버의 주소는 사용자들에게 알려져야하는데, 서버는 내부 IP만을 가지고있다.
NAT translation table은 데이터가 나갈 때 생성되므로, 클라이언트는 서버의 주소를 알 수 없어 연결할 수 없다.
이에 대한 해결책이 2가지 있다.
우선, 정적으로 NAT 설정하는 방법이다.
서버 프로세스가 생성되면, 관리자가 직접 NAT translation table 정보를 설정한다.
두번째는 UPnP(Universal Plug and Play) 프로토콜을 사용하는 방법이다.
UPnP IDG(Internet Gateway Device) 프로토콜을 사용해 NAT 라우터의 public IP 주소를 알아내고,
NAT 라우터에게 새로운 포트 번호를 대여해달라는 요청을 보냄으로써 NAT translation table에 매핑 정보를 추가하는 방식이다.
peer-to-peer 어플리케이션은 더욱 복잡하다.
'CS > 네트워크' 카테고리의 다른 글
[네트워크] 전송 계층 4-4. IP : IPv6 (0) | 2025.01.17 |
---|---|
[네트워크] 전송 계층 4-3. IP : ICMP (0) | 2025.01.17 |
[네트워크] 전송 계층 4-1. IP : 데이터그램 포맷 (0) | 2025.01.17 |
[네트워크] 네트워크 계층 3. 라우터 (0) | 2025.01.17 |
[네트워크] 네트워크 계층 2. 가상 회로 및 데이터그램 네트워크 (2) | 2025.01.16 |