이번 절에서는 인터넷과 IP에서 네트워크 계층의 핵심적인 측면에 초점을 맞춤.
현재 사용 중인 IP는 두 가지 버전이 있는데, IPv4와 IPv6이 있음.
인터넷 네트워크 계층 패킷 → 데이터그램
TOS
)단편화를 허용하지 않음.
오류가 검출된 데이터그램을 폐기함.
TCP/IP
는 트랜스포트 계층과 네트워크 계층에서 오류 검사를 수행하는가?IP 데이터그램은 총 20바이트의 헤더(옵션은 없다고 가정)를 갖음.
IP 주소체계를 살펴보기 전, 호스트와 라우터가 인터넷에 연결되는 방식에 관한 단어를 정의.
호스트는 일반적으로 네트워크와 연결되는 하나의 링크를 갖는데, 호스트 IP가 데이터그램을 보낼 때 이 링크를 통해 데이터링크를 보냄. 호스트와 물리적 링크 사이의 경계를 인터페이스
라고 부름.
라우터와 인터페이스를 고려해보면, 라우터의 작업은 한 링크로부터 데이터그램을 수신하여 다른 링크로 전달하는 것이므로 라우터는 2개 이상의 연결된 링크가 필요함. 라우터와 이런 링크 사이의 경계 또한 인터페이스
라 하는데, 각 링크마다 하나의 인터페이스를 갖고 하나의 라우터는 여러 개의 인터페이스를 갖음.
모든 호스트와 라우터는 IP 데이터그램 송수신이 가능하므로 IP는 각 호스트와 라우터 인터페이스가 IP 주소를 갖도록 요구함. ⇒ 기술면에서 IP 주소는 인터페이스를 포함하는 호스트 라우터보다는 인터페이스와 관련이 있음.
각 IP 주소는 32비트 길이. 주소의 각 바이트를 십진수로 표현하고 주소의 다른 바이트와 점으로 구분하는 십진 표기법
을 사용함.
모든 호스트와 라우터의 각 인터페이스는 고유한 IP주소를 갖음. 이러한 주소는 마음대로 선택할 수 없으며, 인터페이스의 IP 주소 일부는 연결된 서브넷
이 결정할 것.
아래의 그림은 IP 주소체계와 인터페이스를 보여주는 예인데, 3개의 인터페이스를 갖는 하나의 라우터는 7개의 호스트를 연결함. 호스트와 라우터 인터페이스에 할당된 IP 주소를 잘 살펴보면, 왼쪽 3개의 호스트와 연결된 라우터 인터페이스는 모두 [223.1.1.xxx](http://223.1.1.xxx)
형식의 IP 주소를 갖고있음. 즉, 동일한 왼쪽 24비트를 사용함.
또한 4개의 인터페이스가 중계하는 라우터 없이 하나의 네트워크에 서로 연결되어 있음.
이 네트워크는 이더넷 LAN으로 상호연결되고 이 경우 인터페이스는 이더넷 허브나 이더넷 스위치 또는 무선 AP로 상호연결됨.
IP 용어로 세 호스트들의 인터페이스들과 하나의 라우터 인터페이스로 연결된 네트워크는 서브넷
을 구성한다고 말함. IP 주소체계는 이 서브넷에 223.1.1.0/24라는 주소를 할당하는데, 여기서 /24는 서브넷 마스크
라 부르는데, 32비트의 주소의 왼쪽 24비트가 서브넷 주소라는 것을 가리킴.
서브넷 223.1.1.0/24는 세 호스트 인터페이스(223.1.1.1, 223.1.1.2, 223.1.1.3)와 하나의 라우터 인터페이스 (223.1.1.4)를 구성함.
위의 그림에 2개의 서브넷(223.1.2.0/24, 223.1.3.0/24 네트워크)이 있음.
위의 그림은 그림 4.18에 나타낸 세 IP 서브넷을 보여줌.
3개의 라우터가 점대점 링크로 연결된 아래의 그림을 보자.
각 라우터는 각 점대점 링크를 위해 2개, 두 호스트를 직접 연결하는 브로드캐스트 링크를 위해 1개, 모두 3개의 인터페이스를 갖음. 여기에는 3개의 서브넷 (223.1.1.0/24, 223.1.2.0/24, 223.1.3.0/24)은 그림 4.18의 서브넷과 유사하지만 세 서브넷 라우터 R1, R2를 연결하는 인터페이스용으로 223.1.9.0/24 서브넷, 그리고 R2와 R3를 연결하는 인터페이스용 223.1.8.0/24 서브넷, 그리고 R1과 R3를 연결하는 인터페이스용 223.1.7.0/24 서브넷이 추가되었음.
서브넷을 결정하려면 먼저 호스트나 라우터에서 각 인터페이스를 분리하고 고립된 네트워크를 만든다. 이 고립된 네트워크의 종단점은 인터페이스의 끝이 된다. 이렇게 고립된 네트워크 각각을 서브넷이라고 부른다.
그림 4.20의 연결된 시스템은 6개의 고립된 서브넷을 얻게됨.
다수의 이더넷 세그먼트와 종단 간의 링크를 갖는 기관은 한 서브넷에서 모든 장비가 같은 서브넷 주소를 갖는 그런 서브넷을 여러 개 가질 수 있음.
인터넷 주소 할당 방식에 CIDR
라는 것이 있는데, 이는 서브넷 주소체계 표기를 일반화하고 있음. 서브넷 주소체계로서, 32비트 IP 주소는 두 부분으로 나누고, 이것은 다시 점으로 된 십진수 형태의 a.b.c.d/x를 가지며, 여기서 x는 주소 첫 부분의 비트 수임.
최상위 비트를 의미하는 x는 IP 주소의 네트워크 부분을 구성함. 이를 해당 주소의 프리픽스 또는 네트워크 프리픽스
라고 부름. 한 기관은 통상 연속적인 주소의 블록을 할당받게됨. 이 경우에 기관 장비들의 IP 주소는 공통 프리픽스를 공유함.
외부 기관의 라우터는 목적지 주소가 내부 기관인 데이터그램을 전달할 때, 단지 앞의 x비트들만 고려함
a.b.c.d/x 형태의 한 엔트리만으로 기관 목적지로 패킷을 전달하는 데 충분하므로, 이런 라우터들에서 포워딩 테이블의 크기를 상당히 줄여줌.
주소의 나머지 32-x 비트들은 기관 내부에 같은 네트워크 프리픽스를 갖는 모든 장비를 구별한다고 보면 됨. 이 비트들은 기관 내부와 라우터에서 패킷을 전달할 때 사용되는 것임.
이 하위 비트들은 추가 서브넷 구조를 가질 수도 있음.
예를 들어, CIDR식 주소 a.b.c.d/21의 첫 21비트들은 기관의 네트워크 프리픽스를 나타내고 이 기관의 모든 장비의 IP 주소에 공통이라고 가정. 나머지 11비트들은 기관 내부의 특정 호스트들을 식별함. 기관의 내부 구조가 이 최하위 11비트들 중 일부를 기관 내부의 서브넷을 위해 사용할 수도 있음. (ex. a.b.c.d/24는 기관 내부의 특정 서브넷을 나타낼 수도 있음.)
CIDR가 채택되기 전에는 IP 주소의 네트워크 부분을 8, 16, 24비트로 제한했었는데 이러한 주소체계는 클래스 주소체계
로 알려졌음.
but, IP 주소의 서브넷 부분이 정확히 1, 2, 3 바이트여야 한다는 요구사항은 중소형 크기의 네트워크로 급속히 증가하는 기관의 수를 지원하기엔 문제가 있었음.
IP 주소의 또 다른 형태인 브로드캐스트 주소 255.255.255.255가 있음. 호스트가 목적지 주소가 255.255.255.255인 데이터그램을 보내면, 이 메시지는 같은 서브넷에 있는 모든 호스트들에게 전달됨. 라우터는 선택적으로 이웃 서브넷에 메시지를 전달함. (일반적으로 잘 사용되지는 않음.)
호스트와 서브넷이 처음에 어떻게 자신의 주소를 인식하는지 알 필요가 있다!
기관의 서브넷에서 사용하기 위한 IP 주소 블록을 얻기 위해, 네트워크 관리자는 먼저 이미 할당받은 주소의 큰 블록에서 주소를 제공하는 ISP와 접촉해야 함.
ex. ISP는 주소 블록 200.23.16.0/20을 할당받았다고 하자. ISP는 이 주소 블록을 아래의 그림처럼 같은 크기의 작은 주소 블록 8개로 나누고, 이것으로 8개의 조직을 지원할 수 있음.
ISP로부터 주소를 획득하는 것은 주소 블록을 얻는 한 방법이지만 다른 방법도 있음. ISP도 주소 블록을 얻기 위한 방법이 있어야 함.
IP주소 공간을 관리하고 ISP와 다른 조직에 주소 블록을 할당하는 최상위 국제기관이 존재함. 이러한 IP 주소는 ICANN을 기반으로 관리함. ICANN은 IP주소 할당과 DNS 루트 서버 관리임.
한 기관은 ISP로부터 주소 블록을 획득하여, 개별 IP 주소를 기관 내부의 호스트와 라우터 인터페이스에 할당함. 라우터 인터페이스 주소에 대해, 시스템 관리자는 라우터 안에 IP 주소를 할당함.
호스트에 IP주소를 할당하는 것은 일반적으로 동적 호스트 구성 프로토콜(DHCP)
를 더 많이 사용함.
DHCP는 호스트가 IP주소를 자동으로 얻을 수 있게 함. 네트워크 관리자는 해당 호스트가 네트워크에 접속하고자 할 때마다 동일한 IP 주소를 받도록 하거나, 다른 임시 IP 주소를 할당하도록
, DHCP를 설정함.
DHCP는 호스트 IP 주소의 할당뿐만 아니라, 서브넷 마스크, 첫 번째 홉 라우터 주소나 로컬 DNS 서버 주소 같은 추가 정보를 얻게 해줌.
자동으로 호스트와 연결해주는 DHCP의 능력 때문에 플러그 앤 플레이 프로토콜 또는 제로 구성 프로토콜
이라고도 함.
많은 사용자가 이동하고, 주소들이 제한된 시간 동안에만 필요할 경우 DHCP는 적합함.
DHCP는 클라이언트-서버 프로토콜
임. 클라이언트는 일반적으로 IP 주소를 포함하며 네트워크 설정을 위한 정보를 얻고자 새롭게 도착한 호스트. 가장 간단한 경우, 각 서브넷은 DHCP 서버를 가질 것임. 만약 서버가 현재 서브넷에 없다면, 해당 네트워크에 대한 DHCP 서버 주소를 알려줄 DHCP 연결 에이전트(일반적으로 라우터)가 필요함.
위의 그림은 223.1.2/24에 연결된 DHCP 서버와 서브넷 223.1.1/24와 223.1.3/24에 접속될 클라이언트가 도착할 경우 연결 에이전트로 서비스할 라우터.
이후 논의에서는 DHCP 서버가 서브넷에서 이용 가능하다고 가정함.
위의 그림은 새로운 호스트가 도착할 경우, 그림 4.23에서 설정된 네트워크상에서 수행될 DHCP 프로토콜 4단계의 과정을 보여주는 것임. yiaddr
은 새롭게 도착한 클라이언트에 할당될 주소를 나타냄.
클라이언트가 DHCP ACK 메시지를 받으면, 상호작용은 종료되고 클라이언트는 DHCP 할당 IP 주소를 임대 기간동안 사용 가능함. 기간 만료 후에도 사용할 경우에 대비하여 IP 주소 임대를 갱신할 수 있는 메커니즘을 제공함.
이동성 측면에서 볼 때, DHCP는 큰 결점 하나가 있는데, 노드가 새로운 서브넷에 연결하고자 할 때마다 새로운 IP 주소를 DHCP로부터 얻기 때문에, 이동 노드가 서브넷 사이를 이동할 때 원격 애플리케이션에 대한 TCP 연결은 유지될 수 없음.