독서/(하루 3분)네트워크 교실

(하루 3분)네트워크 교실 3장 - IP 어드레싱

studylida 2022. 12. 5. 21:00

네트워크

세그먼트를 좀 더 정확히 정의하자면, 라우터와 라우터 간의 범위라고 생각할 수 있다. 세그먼트 너머와 통신하기 위해서는 패킷 교환기인 라우터를 지나서 다른 세그먼트로 데이터를 보내는 작업이 필요하다. 3계층은 세그먼트 간 데이터 송수신에 대한 계층이다. 하여 3계층에서 네트워크는 '라우터와 라우터로 분배된 컴퓨터 그룹'이라는 의미를 가진다.

인터넷 작업

다시 말하자면 3계층에서 네트워크란 컴퓨터의 그룹이고, 이는 2계층에서 언급했던 세그먼트와 같은 범위를 의미한다. 즉, 네트워크 내의 컴퓨터끼리는 2계층에 의해 멀티액세스 네트워크 혹은 포인트 투 포인트 네트워크의 형태로 컴퓨터가 연결되어있다. 때문에 1계층에서 신호를 전달하고 2계층에서 그것을 제어함으로써 데이터를 송수신할 수 있는 상태가 된다. 이는 네트워크 내에서라면 1, 2계층만으로도 데이터 송수신이 가능하다는 것이다.

 

하지만 2계층까지의 기능만으로는 큰 네트워크를 구성할 수 없다. 스위치를 사용한다고 해도 제어하지 않는 경우에는 플러딩이 이뤄지고, 그만큼 컴퓨터의 처리가 증가하기 때문에 비효율적인 상황이 된다. 때문에 라우터를 넘어서는 브로드캐스트는 송신하지 않도록 하고, 1개의 큰 네트워크를 복수의 네트워크로 분할함으로써 브로드캐스트가 도달하는 범위를 제한하고는 한다.

 

3계층에서는 네트워크 간 데이터 송수신을 다룬다. 이를 인터넷 작업(Internetwork)이라고 한다. 간단히 인터넷(Internet)이라고도 한다. 인터넷 작업에 의해 떨어진 위치에 있는 컴퓨터끼리 데이터 통신이 가능하게 된다.

어드레싱과 라우팅

3계층에서 인터넷 작업을 수행하기 위해서는 어드레싱(Addressing)과 라우팅(routing)이 필요하다.

 

어드레싱이란 주소를 어떻게 할당할지 정하는 작업이다. 3계층에서는 네트워크를 가로질러서 다른 네트워크에 데이터를 전송해야 하기 때문에 목적지가 어디에 있는지 알 수 없다면 곤란하다. 때문에 3계층을 위한 주소, 논리주소를 사용하게 된다. 논리주소는 그 자체로 의미를 가진다. 논리주소에는 위치정보가 포함되어 있다. 위치정보는 어디의 네트워크에 있는 어느 컴퓨터라는 정보의 조합으로 실현된다. 2계층에서 사용되는 MAC 주소는 물리주소라고 불린다. 물리주소에는 위치 정보가 포함되어 있지 않다.

 

라우팅이란 수신처까지 어떤 경로로 갈 지를 결정하는 것을 의미한다. 즉, 경유할 네트워크를 선택하는 작업이다.

인터넷 프로토콜

그리고 이 두 가지, '어드레싱'과 '라우팅'에 의해 인터넷 작업을 수행하기 위한 프로토콜로서 TCP/IP 프로토콜군에서 사용되는 것이 IP(Internet Protocol)이다. IP는 TCP/IP에서 반드시 사용되며, 인터넷 작업을 수행(어드레싱, 라우팅)하기 위한 기능을 가지고 있다.

 

IP에는 IP version4와 IP version6 두 가지 버전이 존재한다. 현재 일반적으로 사용되는 것은 IPv4인데 이 두 버전 사이에는 호환성이 없다. 호환성이 없다는 것은 IPv4만 사용하는 컴퓨터는 IPv6를 사용하는 컴퓨터와 데이터 송수신을 할 수 없다는 것을 의미한다.

데이터그램

데이터에 IP 헤더가 붙어서 만들어지는 3계층 PDU를 IP 데이터그램(Datagram)이라고 부르는데, IP가 데이터에 어떤 헤더를 붙이는지를 보고 IP가 하는 일을 알 수 있다. 송신처와 수신처의 IP 주소의 경우, 이를 사용해서 수신처와 송신처를 결정하기 때문에 중요하다.

IP 데이터 그램  
IP 헤더         페이로드(상위 4계층 PDU 등이 들어간다.)
20바이트 + a(옵션) 0~8키로바이트

 

IP 헤더              
1 버전 4 IP의 버전
2 헤더 길이 4 IP 헤더의 길이
3 서비스 타입 8 패킷의 우선도/중요도
4 데이터 길이         16 IP 헤더와 페이로드를 합친 길이
5 ID 16 데이터그램의 식별번호        
6 플래그         3 데이터그램을 분할했는지 아닌지 판별        
7 플래그먼트 오프셋 13 분할한 경우 본래대로 되돌릴 때 사용
8 TTL 8 패킷의 생존시간
9 프로토콜         8 상위 프로토콜 지정
10 헤더 체크섬 16 IP 헤더의 에러 체크용 코드        
11 송신처 IP 주소         32 송신처의 논리 주소
12 수신처 IP 주소         32 수신처의 논리 주소
(13) 옵션 n 특별한 설정을 할 때 사용함.
없어도 된다.

IP 주소의 특징

IP 주소 같은 논리 주소는 계층형이라는 특징이 있다. 계층형이라는 것은 '어디에 있는' '어느 컴퓨터'라는 정보를 'A에 있다.', 'A의 안에 있는 B에 있다.', 'C라는 컴퓨터'와 같이 더욱 세분화할 수 있다는 것이다. 이런 주소를 계층형 주소라고 부른다. MAC 주소와 같이 계층형이 아닌 주소는 평면형이라고 부른다.
 

IP 주소는 네트워크 관리자가 컴퓨터에 IP 주소를 할당한다는 특징도 가지고 있다. MAC 주소의 경우 IEEE가 붙인 벤더코드와 벤더가 붙인 할당코드로 이루어져 있어 사용하는 쪽에서는 변경이 불가능하다. 하지만 논리 주소는 그 네트워크의 관리자가 필요에 따라 자유롭게 주소를 붙일 수 있다.

 

그리고 논리 주소는 MAC 주소와 같은 물리 주소와는 다르게 네트워크에 접속할 때마다 새로 붙인다. 예를 들어 물리 주소와 달리 어떤 인터페이스가 고장나서 다른 인터페이스로 교환하여도 논리 주소는 바뀌지 않는다. 즉, 인터페이스가 어느 것이든 상관없이 접속할 때마다 논리 주소가 붙여진다. 즉, MAC 주소처럼 고정된 주소가 아니다. 이는 논리 주소가 '어디에 있는', '어느 컴퓨터'라는 의미를 가지기 때문에 소속된 네트워크가 바뀌면 어디에 있는지도 바뀌기 때문이다.

 

논리 주소도 유니캐스트 · 멀티캐스트 · 브로드캐스트, 3종류의 주소가 있다. 이 중에서 유니캐스트 주소의 논리 주소 중 네트워크를 표시하는 번호는 접속되어 있는 모든 네트워크에서 유일할 필요가 있다. 이는 접속되어 있지 않으면 유일하지 않아도 됨을 의미한다. 컴퓨터 번호는 소속된 네트워크에서 유일할 필요가 있다. 이는 다른 네트워크에 있는 컴퓨터와는 번호가 같아도 됨을 의미한다.

IP 주소

IP주소는 IPv4에서는 32비트, IPv6에서는 128비트이다. 이 책에서는 IPv4에 대해서만 다룬다.

 

IP 주소는 8비트마다 10진수로 표기하고, 8비트 사이에 점을 찍는다. 이 8비트의 단락을 옥텟(Octet)이라고 한다. 일반적으로 8비트는 바이트(Byte)를 사용하지만 네트워크에서는 옥텟을 사용한다.

 

IP주소의 어디가 네트워크 번호이고 어디가 컴퓨터 번호인지는 클래스에 의해 정해진다.

IP 주소의 클래스

네트워크 번호는 접속되어 있는 모든 네트워크에서 유일하다. 이는 인터넷에 접속되어 있을 때도 마찬가지이다. 때문에 네트워크 번호가 제멋대로 정해지면 중복과 같은 문제가 발생하여 곤란하다. 그래서 인터넷에서는 ICANN(The Internet Corporation for Assigned Names and Number)이라는 조직에서 실제로 번호를 사용하는 조직에 네트워크 번호를 할당한다.

 

ICANN은 번호를 할당할 때 할당된 조직의 규모에 따라 할당할 IP 주소의 범위를 변경하는데, 그게 클래스이다. 클래스는 A~E의 5개로 나뉘어있다. 클래스 A는 최초의 옥텟이 네트워크 번호, 나머지가 컴퓨터 번호, 클래스 B는 16비트와 16비트, 클래스 C는 24비트와 8비트, 클래스 D와 E는 특별한 주소라 보통은 할당하지 않는다(멀티캐스트용, 연구용). 클래스는 최초 옥텟의 맨 앞 몇 비트로 판별할 수 있다(A클래스 0, B클래스 10, C클래스 110).

 

이처럼 클래스로 나누어 IP 주소를 할당하는 방식을 클래스풀 어드레싱(Classfull Addressing)이라고 한다.

 

네트워크 번호가 몇 비트인지는 할당된 클래스에 따라서 정해지는데, ICANN이 할당하는 것은 이 네트워크 번호까지다. 호스트 번호(컴퓨터 번호)는 해당 네트워크의 관리자가 마음대로 정하는 것이다.

 

단, 호스트 번호 중 호스트 번호의 비트가 모두 0이 되는 주소와 모두 1이 되는 주소처럼 특별한 의미를 가지는 주소는 실제 컴퓨터에 할당해서는 안 된다. 모두 0이 되는 주소는 네트워크 주소, 네트워크 자체를 표시할 때 사용하고, 모두 1이 되는 주소는 브로드캐스트 주소, 전체가 수신하는 주소를 의미한다.

IP  주소 풀

IP 주소 풀이란 사전에 관리자가 할당한 주소의 범위를 의미한다. 즉, 어떤 범위 내의 주소를 호스트에게 할당해도 좋은지 관리자가 결정해줄 필요가 있다. 이때 서버는 설정된 IP 주소  중에서 요청한 클라이언트에게 각각 유일한 것이 되도록 주소를 할당한다.

 

또한 네트워크 관리자는 사전에 IP 주소의 대여 기간을 결정해놓을 필요가 있다. 대여 기간을 설정하지 않을 시, IP 주소를 사용하던 호스트가 이동하거나 고장난 경우 서버는 IP 주소를 할당했기 때문에 이미  IP 주소를 사용하고 있다 생각해 해당 컴퓨터에 할당한 IP 주소를  이상 사용할  없게 된다.

서브넷마스크

호스트 번호의 경우 네트워크 관리자가 할당하는 것이다. 하지만 이를 순서대로 1번부터 16772214번과 같이 할당한다면 관리가 어려워진다. 때문에 IP 주소가 계층형이라는 특징을 이용해 커다란 네트워크 안에 작은 네트워크를 만들어 관리한다. 이렇게 분할된 작은 네트워크를 서브네트워크(Subnetwork) 또는 서브넷(Subnet)이라고 하고, 서브넷화 하는 것을 서브네팅(Subnetting)이라고 한다.

 

서브넷으로 분할할 때는 서브네트워크를 나타내는 서브넷 번호가 필요하다. 하지만 IP 주소는 32비트로 고정되어 있어서 새롭게 서브넷 번호를 추가하는 것은 불가능하기 때문에 호스트 번호의 비트를 서브넷 번호와 호스트 번호로 분할한다. 즉, 호스트 번호의 일부를 줄여서 서브넷 번호를 만든다.

 

서브넷은 그 네트워크의 내부에서만 유효하다. 네트워크 외부에서는 네트워크 A의 서브넷 1이나 서브넷 2나 같은 네트워크 A에 있기 때문이다. 만약 서브넷의 숫자를 크게 한다면(서브넷 번호에 비트를 많이 할당하면) 각 서브넷의 호스트 수는 감소한다(호스트 번호에 할당할 비트가 줄어든다).

 

서브네팅과 관련한 문제는 컴퓨터가 어느 네트워크에 소속되어 있는가에 대한 문제이다. 이는 경로 선택을 할 때 매우 중요한데, IP 주소의 어디까지가 네트워크 주소인지 알 수 없다면 그것이 자신과 동일한 네트워크인지 아닌지 알 수 없기 때문이다. 이를 해결하기 위해서 서브넷을 사용할 경우에는 서브넷마스크(Subnetmask)라고 불리는 비트열을 IP 주소와 동시에 표기해야 한다.

 

서브넷마스크는 IP 주소 중에 어디까지가 서브넷 번호인지를 나타내는 비트열로, IP 주소와 같은 32비트이다. 네트워크 번호 · 서브넷 번호의 비트를 모두 1로 하고, 호스트 번호를 0으로 하여 IP 주소의 어디까지가 네트워크 주소인지 구분할 수 있도록 한다. IP 주소와 서브넷마스크는 반드시 같이 기술한다.

클래스풀과 클래스리스

인터넷 보급에 따라 IP 주소를 필요로 하는 조직이 많아져서 IP 주소가 부족해지는 문제가 발생할 여지가 있다. 이러한 상황에서는 클래스풀 어드레싱만을 사용하는 건 좋지 못하다. 왜냐하면 클래스풀 어드레싱은 3개의 클래스, A · B · C라는 대략적인 구분 밖에 없는데, 구분에 딱 맞지 않으면 사용되지 않는 IP 주소가 증가하기 때문이다. 이를 해결하고자 등장한 것이 클래스리스 어드레싱(Classless Addressing)이다.

클래스리스 어드레싱

클래스리스 어드레싱이란 클래스라는 구분을 없앤 어드레싱이다. 클래스리스 어드레싱에서는 필요에 따른 비트 수를 이용해 네트워크 번호에 사용할 비트 수를 정한다. 필요에 따라 비트 수를 정한다는 것은 필요한 IP 주소로부터 정하는 것이다. 즉, 필요한 IP 주소의 개수로부터 네트워크 번호를 결정하는 방식이다.

 

클래스리스 어드레싱을 사용하기 이전에는 클래스에 의한 할당 클래스풀 어드레싱을 해왔기 때문에 클래스를 통합해서 1개로 하는 것이 가능하고, 이것을 슈퍼넷(Super Network)이라고 부르기도 한다. 다만 클래스리스 어드레싱의 경우 클래스가 없기 때문에 어디까지가 네트워크 번호의 비트인지를 알 수 없다는 문제가 있다. 이를 해결하기 위해 어디까지가 네트워크 번호인지를 나타내는 값(프리픽스 길이, Prefix-Length)을 부여할 필요가 있다. 프리픽스 길이는 네트워크 번호의 길이를 나타내는 값이다.

송신처의 IP 주소와 MAC 주소

이더넷을 사용해서 IP 데이터그램을 송수신하기 위해서는 4개의 주소, '수신처 MAC 주소', '송신처 MAC 주소', '수신처 IP 주소', '송신처 IP 주소'가 필요하다.

  • 송신처 MAC : 송신할 인터페이스의 MAC 주소 사용
  • 송신처의 IP 주소 :
    • 정적 : 수동으로 IP 주소를 설정하는 방법. 네트워크 관리자가 정한 IP 주소를 자신의 컴퓨터에 입력
    • 동적 : IP 주소가 자동으로 컴퓨터에 설정되는 방법. DHCP(Dynamic Host configuration Protocol) 프로토콜 이용

DHCP는 할당할 IP 주소를 관리하고, 실제로 할당 작업을 수행하는 서버(Server)하고 할당받는 클라이언트(Client)로 이루어진다. DHCP의 서버를 DHCP 서버라고 부르고, DHCP 서버는 DHCP 서버 소프트웨어라는 전용 소프트웨어를 실행한다. DHCP의 클라이언트를 DHCP 클라이언트라고 부르고, DHCP 클라이언트는 DHCP 클라이언트 소프트웨어를 실행한다.

DHCP 메시지

DHCP에서 주고받는 내용을 DHCP 메시지라고 한다. DHCP 메시지는 주소와 옵션 설정 등의 정보를 갖는다.

 

이더넷 헤더 ᅟIP 헤더 UDP 헤더 DHCP 메시지

 

DHCP 메시지

 

옥텟 이름 설명
1 오퍼레이션 코드         클라이언트->서버···1
서버->클라이언트···2
4 클라이언트 IP 주소 현재의 클라이언트 주소
(재 대여 시에만)
4 할당 IP 주소         서버가 할당한 주소
4 서버 IP 주소 서버 주소
16 클라이언트 하드웨어 주소 클라이언트의 MAC 주소
가변 옵션 메시지타입*과 클라이언트 설정
(서브넷마스크 · 디폴트게이트웨이
 · DNS 서버주소 · 대여기간 등)

*메시지 타입은 DISCOVER, OFFER, REQUEST, ACK 4와 같은 메시지 종류를 의미함.

 

DHCP는 IP 주소만이 아니라 다른 네트워크의 설정 정보도 보낼 수 있다. 때문에 동적 호스트 설정 프로토콜이라고 불린다.

 

DHCP의 동작

  1. 클라이언트는 DHCP DISCOVER 메시지를 브로드캐스트 한다.
  2. DISCOVER를 받은 서버는 할당할 IP 주소를 풀에서 선택해서 그것을 클라이언트에게 브로드캐스트 해서 통지한다.
  3. 클라이언트는 OFFER에서 받은 IP 주소로 문제가 없으면 DHCP REQUEST를 서버에 브로드캐스트 한다.
  4. REQUEST를 받은 서버는 문제가 없으면 DHCP ACK를 보낸다. 그때 서브넷마스크 등 옵션 설정도 ACK에 넣어서 보낸다.

컴퓨터가 기동한 시점에서는 클라이언트가 누구에게 메시지를 보내면 좋을지 모르기 때문에 브로드캐스트를 사용한다.

ARP

수신처 MAC 주소는 수신처의 IP 주소가 결정된 이후 정해진다. MAC 주소를 결정하기 위해 ARP(Address Resolution Protocol)을 사용한다. ARP는 IP 주소의 호스트에게 MAC주소를 질문하여 알아낸다.

ARP 테이블과 ARP

ARP 테이블이란 IP 주소와 MAC 주소의 대응표를 의미한다. ARP 테이블에 IP 주소와 대응되는 MAC 주소가 있으면 질문하여 알아낼 필요가 없다. 하지만 모르는 경우 질문하여 알아내고 ARP 테이블에 기재한다. MAC 주소를 질문하는 동작을 ARP 요청이라고 부른다. ARP 요청은 브로드캐스트로 네트워크 내의 모든 컴퓨터에 송신된다.

Warning, ARP 테이블에 기재되어 있는 IP 주소와 MAC 주소의 대응은 일정 기간이 지나면 파기된다. 왜냐하면 MAC 주소는 인터페이스에 고정된 주소이기 때문에 인터페이스를 교환하면 MAC 주소도 바뀌기 때문이다.

 

ARP의 동작

  1. 송신을 원하는 컴퓨터는 먼저 자신의 ARP 테이블을 참조한다.
  2. ARP 테이블에 수신처 IP 주소가 없을 경우 ARP 요청을 브로드캐스트 한다.
  3. ARP 요청의 수신처를 확인하고 자신인 경우에는 응답한다. 그렇지 않은 경우는 파기한다.
  4. ARP 응답을 받으면 ARP 테이블에 응답 결과를 추가로 기술한다.

Domain Name

수신처 IP 주소를 알아내는 가장 간단한 방법은 데이터 전송을 원하는 애플리케이션이나 사용자가 수신처의 IP 주소를 알고 있는 경우이다(사용자가 수동으로 IP 주소를 입력하거나 사용하는 애플리케이션에 등록되어있는 경우). 하지만 사람은 숫자를 외우기 힘들어하기 때문에 IP 주소 대신 도메인 명(Domain Name)을 사용한다.

 

간단히 말하면, 도메인 명은 송신할 상대의 컴퓨터 이름을 의미한다. 도메인 명은 다른 도메인 명과 구분되어야 하기 때문에 유일할 필요가 있다. 유일해야 하기 때문에 IP와 마찬가지로 ICANN이 관리하고 있다

DNS

물론 도메인 명이 있다 하더라도 데이터 통신에는 IP 주소가 필요하다. DNS(Domain Name System)는 도메인 명과 IP 주소를 대응시키는 시스템이다. 도메인 명과 IP 주소의 대응 데이터베이스를 갖고 있는 DNS 서버에 문의해서 수신처의 IP 주소를 입수할 수 있다.

 

DNS의 동작

  1. 사용자 애플리케이션은 도메인 명으로 수신처를 지정
  2. 그 도메인 명에 대응하는 IP 주소를 문의
  3. DNS 서버는 문의한 도메인 명에 대응한 IP 주소를 데이터베이스에서 찾는다.
  4. 도메인 명에 대응한 IP 주소를 응답한다.

DNS 서버는 각 조직에 1개씩 있고, 각 DNS 서버는 해당 조직의 도메인 명만 관리한다. 다른 조직의 호스트 명과 도메인 명은, 그 조직의 DNS 서버에 묻는다.

=> DNS란 전 세계의 도메인 명 · 호스트 명을 관리하는 일종의 분산형 데이터베이스라고 할 수 있다.

 

다른 조직의 도메인 명에 대응하는 IP 주소는 그 조직의 DNS 서버에 문의해서 입수한다.

  1. 사용자 애플리케이션은 도메인 명으로 수신처를 지정(www.3min.net와 데이터를 송수신하고 싶어 함)
  2. 그 도메인 명에 대응하는 IP 주소를 문의(www.3min.net의 주소를 알려주기를 요청)
  3. 다른 조직의 도메인 명은 그 조직의 서버에 문의(문의한 DNS 서버에서 www.3min.net는 관리 밖이기 때문에 www.3min.net의 DNS 서버에게 물어봄)
  4. 도메인 명에 대응하는 IP 주소 입수
  5. 입수한 IP 주소를 알려줌

4개의 주소 · 완결편

  1. 송신처 MAC 주소는 NIC를 장치하면 자동적으로 알 수 있다.
  2. 송신처 IP 주소는 수동 또는 DHCP로 할당받아서 알 수 있다.
  3. 사용자 애플리케이션이 수신처의 도메인 명을 결정하면 DNS로 IP 주소를 취득한다.
  4. IP 주소가 결정된 후, ARP에 의해 MAC 주소를 취득한다.
  5. 이것으로 송신처, 수신처의 MAC 주소, IP 주소를 알았기 때문에 데이터 전송이 가능해진다.

 

관련된 글

 

 

참고문헌

  • 아미노 에이지. 2016. (하루 3분)네트워크 교실:인터넷 박사가 조교 넷군에게 알려주는 왕초보를 위한 네트워크 교실. 김현주 역. 서울:영진닷컴.