네트워크 계층의 역할
네트워크 간의 연결 구조
서로 다른 네트워크에 있는 목적지로 데이터를 전달하려면 OSI 7계층에서 3 계층인 네트워크 계층의 기술이 필요하다. 즉, 네트워크 계층의 역할은 네트워크 간의 통신을 가능하게 하는 것이다. 이 계층을 통해 다른 네트워크로 데이터를 전송하려면 라우터(router)라는 네트워크 장비가 필요하다.
라우터는 데이터의 목적지가 정해지면 해당 목적지까지 어떤 경로로 가는 것이 좋은지를 알려 주는 기능을 한다. 하지만 데이터를 보내려는 상대가 어디에 있는지 모르면 라우터도 목적지까지의 경로를 알려주지 못한다. 그렇기 때문에 네트워크에서 데이터를 보내려면 목적지 주소가 반드시 있어야 한다. 이럴 때 사용하는 주소를 IP(Internet Protocol) 주소라고 한다. IP 주소는 어떤 네트워크의 어떤 컴퓨터인지를 구분할 수 있도록 하는 주소이다. 이 IP 주소가 있으면 다른 네트워크에 있는 목적지를 지정할 수 있다.
데이터를 보내기 위해서는 IP 주소로 목적지를 지정하는 것뿐만 아니라 데이터를 어떤 경로로 보낼지도 결정해야 한다. 이처럼 목적지 IP 주소까지 어떤 경로로 데이터를 보낼지 결정하는 것을 라우팅(routing)이라고 한다. 라우팅은 라우터라는 장비가 하는데 라우터를 사용하여 거리에 관계없이 다른 네트워크로 데이터를 보낼 수 있다. 또 라우터에는 라우팅 테이블(routing table)이 있어서 경로 정보를 등록하고 관리한다.
IP란
네트워크 계층에는 IP(Internet Protocol)라는 프로토콜이 있다. IP가 있기 때문에 라우터를 이용해서 데이터를 다른 네트워크에 있는 목적지까지 보내는 것이 가능하다.
네트워크 계층에서는 캡슐화할 때 아래 그림과 같은 IP 헤더를 붙인다.
이처럼 IP 프로토콜을 사용하여 캡슐화할 때는 데이터에 IP 헤더가 추가되는데, 이렇게 만들어진 것을 IP 패킷이라고 한다.
- 서로 다른 네트워크 간에 통신을 하려면 라우터가 필요하다.
- 랜 안에서는 MAC 주소만으로도 통신할 수 있지만 네트워크 간에 통신을 하려면 IP 주소가 필요하다.
- 경로를 선택하고 목적지 IP 주소까지 어떻게 데이터를 전달할지 결정하는 것을 라우팅이라고 한다.
- 라우터의 라우팅 테이블에는 경로 정보가 등록되어 있다.
- 네트워크 계층의 대표적인 프로토콜에는 IP가 있다.
- 네트워크 계층에서는 캡슐화할 때 IP 헤더를 추가한다.
IP 주소의 구조
IP 주소란
IP 주소는 인터넷 서비스 제공자(ISP)에게 받을 수 있다. IP 버전에는 IPv4와 IPv6가 있다. IPv4 주소는 32비트로 되어 있어서 IP 주소를 약 43억 개 만들 수 있는데 인터넷이 널리 보급되면서 IP 주소가 부족해졌고 그로 인해 IPv6 주소를 사용하게 됐다. IPv6는 128비트로 되어 있어서 IPv4 주소보다 더 많은 IP 주소를 만들 수 있다.
(해당 포스팅에서는 IPv4 주소를 기준으로 기술)
IP 주소에는 공인 IP 주소와 사설 IP 주소가 있다. IP 주소를 이와 같이 두 종류가 필요한 이유는 IPv4 주소의 수가 고갈되고 있기 때문이다. 그래서 인터넷에 직접 연결되는 컴퓨터나 라우터에는 공인 IP 주소를 할당하고, 회사나 가정의 랜에 있는 컴퓨터는 사설 IP 주소를 할당하는 정책을 사용하고 있다.
공인 IP 주소는 라우터에만 할당하고 랜 안에 있는 컴퓨터에는 랜의 네트워크 관리자가 자유롭게 사설 IP 주소를 할당하거나 라우터의 DHCP 기능을 사용하여 주소를 자동으로 할당한다.
* DHCP : Dynamic Host Configuration Protocol의 약어로 IP 주소를 자동으로 할당하는 프로토콜
공인 IP 주소와 사설 IP 주소는 모두 2진수의 32비트를 동일하게 사용하고 있다. MAC 주소의 경우 48비트로 구분하기 쉽도록 16진수로 표시하고, IP 주소는 32비트로 구분하기 쉽도록 10진수로 표시한다. 사람이 읽기 쉽도록 8비트(옥텟) 단위로 나누어 표시하고 이를 조금 더 읽기 쉽도록 8비트 10진수로 변환한다.
IP 주소는 네트워크 ID와 호스트 ID로 나뉘어져 있다. 네트워크 ID는 '어떤 네트워크'인지를 나타내고, 호스트 ID는 '해당 네트워크의 어느 컴퓨터'인지를 나타낸다. 이 두 가지 정보가 합쳐져서 IP 주소가 되는 것이다.
- 데이터를 다른 네트워크로 전달하려면 IP 주소가 필요하다.
- IP 주소는 인터넷 서비스 공급자에게 할당받을 수 있다.
- IPv4의 IP 주소는 32비트, IPv6의 IP 주소는 128비트로 구성되어 있다.
- IP 주소의 종류에는 공인 IP 주소와 사설 IP 주소가 있다.
- IP 주소는 네트워크 ID와 호스트 ID로 나누어진다.
IP 주소의 클래스 구조
IP 주소는 네트워크의 규모에 따라 A ~ E 클래스로 나누어져 있다. 네트워크 클래스의 구조에 대해 알아보자.
IP 주소 클래스란
IPv4의 IP 주소는 32비트이다. 비트로 구분하지만 네트워크 ID를 크게 만들거나 호스트 ID를 작게 만들어 네트워크 크기를 조정할 수도 있다. 네트워크 크기는 클래스라는 개념으로 구분하고 있다.
클래스 이름 | 내용 |
A 클래스 | 대규모 네트워크 주소 |
B 클래스 | 중형 네트워크 주소 |
C 클래스 | 소규모 네트워크 주소 |
D 클래스 | 멀티캐스트(multicast) 주소 |
E 클래스 | 연구 및 특수용도 주소 |
일반 네트워크에서는 A~C 클래스까지 사용할 수 있다. A 클래스는 처음 8비트가 네트워크 ID고 다음 24비트가 호스트 ID이다.
- 최대 호스트 수 : 1677만 7214대
- 전체 범위 : 1.0.0.0 ~ 127.255.255.255
B 클래스는 처음 16비트가 네트워크 ID고 다음 16비트가 호스트 ID이다.
- 최대 호스트 수 : 6만 5534대
- 전체 범위 : 128.0.0.0 ~ 191.255.255.255
C 클래스는 처음 24비트가 네트워크 ID고 다음 8비트가 호스트 ID이다.
- 최대 호스트 수 : 254개
- 전체 범위 : 192.0.0.0 ~ 223.255.255.255
- IP 주소는 A~E 클래스로 나누어지며 일반적으로는 A~C 클래스를 사용한다.
네트워크 주소와 브로드캐스트 주소의 구조
컴퓨터에 할당할 수 없는 IP 주소인 네트워크 주소와 브로드캐스트 주소에 대해 알아보자.
네트워크 주소와 브로드캐스트 주소란
네트워크 주소와 브로드캐스트 주소는 특별한 주소로 컴퓨터나 라우터가 자신의 IP로 사용하면 안 되는 주소다. C 클래스의 주소에서 호스트 ID(마지막 8비트)가 10진수로 0이면 네트워크 주소이고, 호스트 ID가 10진수로 255이면 브로드캐스트 주소가 된다.
네트워크 주소는 전체 네트워크에서 작은 네트워크를 식별하는 데 사용되고, 호스트 ID가 10진수로 0이면 그 네트워크 전체를 대표하는 주소가 된다. 쉽게 말해 전체 네트워크의 대표 주소라고 생각하면 된다.
예를 들어 192.168.1.1 ~ 192.168.1.6의 IP 주소를 가진 컴퓨터는 192.168.1.0(네트워크 주소)의 네트워크에 있다고 할 수 있다.
브로드캐스트 주소는 네트워크에 있는 컴퓨터나 장비 모두에게 한 번에 데이터를 전송하는 데 사용되는 전용 IP 주소이다. 192.168.1.255의 브로드캐스트 주소로 데이터를 전송하면 네트워크 안에 있는 모든 컴퓨터가 데이터를 받게 된다.
그렇기 때문에 네트워크 주소와 브로드캐스트 주소는 자신의 IP 주소로 설정하면 안 된다.
- 네트워크 주소와 브로드캐스트 주소는 컴퓨터에 설정할 수 없다.
서브넷의 구조
네트워크를 분할하는 것을 서브넷팅이라고 한다. 이번에는 서브넷의 구조에 대해 알아보자.
서브넷이란
많은 수의 컴퓨터가 브로드캐스트 패킷을 전송하면 모든 컴퓨터에 패킷이 전송되고 네트워크가 혼잡해 질 것이다. A 클래스 네트워크에는 최대 1677만 7214대의 컴퓨터가 있을 수 있다. 이러한 대규모 네트워크를 작은 네트워크로 분할하여 브로드캐스트로 전송되는 패킷의 범위를 좁힐 수 있다. 이렇게 하면 더 많은 네트워크를 만들 수 있어서 IP 주소를 더 효과적으로 활용할 수 있다.
이처럼 네트워크를 분할하는 것을 서브넷팅(subneting)이라고 하고, 분할된 네트워크를 서브넷(subnet)이라고 한다. A 클래스는 네트워크 ID가 8비트고 호스트 ID가 24비트다. 이 상태를 서브넷팅하여 작은 네트워크로 분할하는 것이다. 그러면 기존에 네트워크 ID와 호스트 ID로 구성되어 있던 것이 네트워크 ID, 서브넷 ID, 호스트 ID로 나누어지게 된다.
원래 호스트 ID로 사용되던 비트를 서브넷 ID로 바꾸는 것이다.
서브넷 마스크란
IP 주소를 서브넷팅하면 어디까지가 네트워크 ID고 어디부터가 호스트 ID인지 판단하기 어려울 때가 있다. 그럴 때 서브넷 마스크라는 값을 사용한다.
서브넷 마스크는 네트워크 ID와 호스트 ID를 식별하기 위한 값이다. 32비트의 값으로 A 클래스는 255.0.0.0, B 클래스는 255.255.0.0, C 클래스는 255.255.255.0이 된다.
프리픽스(prefix) 표기법으로도 사용할 수 있다. 서브넷 마스크를 슬래시(/비트 수)로 나타낸 것을 말한다. 예를 들어 255.255.255.0은 /24가 된다. C 클래스의 IP 주소를 서브넷팅해보자.
C 클래스이므로 일반적으로 네트워크 ID가 24비트지만 다음과 같이 네트워크 ID를 28비트로 변경하면 4비트를 호스트 ID에서 빌리게 되는 것이다. 즉, 네트워크 ID가 24비트, 서브넷 ID가 4비트, 호스트 ID가 4비트가 된다.
이처럼 서브넷팅하여 여러 네트워크를 만들 수 있다. 이 네트워크의 서브넷 마스크는 255.255.255.240인데 이것을 프리픽스 표기법으로 바꾸면 네트워크 ID와 서브넷 ID가 28비트가 되어 /28이 된다.
- 네트워크를 분할하는 것을 서브넷팅이라고 하고 분할된 네트워크를 서브넷이라고 한다.
- 서브넷팅으로 구성이 '네트워크 ID + 호스트 ID'에서 '네트워크 ID + 서브넷 ID + 호스트 ID'로 변경된다.
- 서브넷 마스크는 네트워크 주소와 호스트 주소를 식별하는 값이다.
- 클래스별로 서브넷 마스크는 A 클래스가 255.0.0.0, B 클래스가 255.255.0.0, C 클래스가 255.255.255.0이다.
라우터의 구조
서로 다른 네트워크와 통신하려면 라우터가 필요하다. 라우터에 대해 알아보자.
라우터란
서로 다른 네트워크와 통신하려면 라우터가 필요하다. 라우터는 네트워크를 분리할 수 있다. 스위치만 있는 네트워크에서는 모든 컴퓨터와 스위치가 동일한 네트워크에 속하게 된다.
라우터로 네트워크를 분할한 다음에 컴퓨터 한 대가 다른 네트워크로 접속하려면 어떻게 해야 할까? 컴퓨터 1이 다른 네트워크에 데이터를 전송하려면 라우터의 IP 주소를 설정해야 한다. 이는 네트워크의 출입구를 설정하는 것으로 기본 게이트웨이(default gateway)라고 한다.
컴퓨터 1은 다른 네트워크로 데이터를 보낼 때 어디로 전송해야 하는지 알지 못한다. 그래서 네트워크의 출입구를 지정하고 일단은 라우터로 데이터를 전송한다. 아직 이것만으로는 다른 네트워크에 속한 컴퓨터 2에 데이터를 보낼 수 없다. 추가로 라우터의 라우팅(routing) 기능이 필요하다.
라우팅이란
라우팅은 경로 정보를 기반으로 현재의 네트워크에서 다른 네트워크로 최적의 경로를 통해 데이터를 전송한다. 이 경로 정보가 등록되어 있는 테이블이 라우팅 테이블이다. 각 라우터의 라우팅 테이블에 경로 정보가 등록되어 있어서 라우팅이 가능하다.
라우팅 테이블은 네트워크 관리자가 수동으로 등록하는 방법과 자동으로 등록하는 방법이 있다. 수동으로 등록하는 방법은 소규모 네트워크에 적합하고, 자동으로 등록하는 방법은 대규모 네트워크에 적합하다. 자동으로 등록하는 방법은 라우터 간에 경로 정보를 서로 교환하여 라우팅 테이블 정보를 자동으로 수정해 준다. 수동으로 등록하는 방법처럼 직접 네트워크 관리자가 변경하지 않아도 된다.
이처럼 라우터 간에 라우팅 정보를 교환하기 위한 프로토콜을 라우팅 프로토콜이라고 한다. 이 라우팅 프로토콜을 설정하여 라우터 간에 경로 정보를 서로 교환하고 그것을 라우팅 테이블에 등록해 나가는 것이다.
대표적인 라우팅 프로토콜에는 RIP, OSPF, BGP 등이 있다.
- 서로 다른 네트워크와 통신하려면 라우터가 필요하다.
- 라우터는 네트워크를 분할할 수 있지만 스위치(레이어 2)와 허브는 분할할 수 없다.
- 컴퓨터에서 다른 네트워크로 데이터를 전송하려면 기본 게이트웨이를 설정해야 한다.
- 라우팅은 경로 정보를 기반으로 현재의 네트워크에서 다른 네트워크로 최적의 경로를 통해 데이터를 전송하는 방식이다.
- 경로 정보가 등록되어 있는 테이블을 라우팅 테이블이라고 한다.
- 라우터 간에 라우팅 정보를 서로 교환하기 위한 프로토콜을 라우팅 프로토콜이라고 한다.
참고
- 「모두의 네트워크」
'CS > Network' 카테고리의 다른 글
[Network] 07. 응용 계층 : 애플리케이션에 데이터 전송하기 (0) | 2021.12.06 |
---|---|
[Network] 06. 전송 계층 : 신뢰할 수 있는 데이터 전송하기 (0) | 2021.12.04 |
[Network] 04. 데이터 링크 계층 : 랜에서 데이터 전송하기 (0) | 2021.11.30 |
[Network] 03. 물리 계층 : 데이터를 전기 신호로 변환하기 (0) | 2021.11.30 |
[Network] 프로토콜 (0) | 2021.11.25 |
댓글