Network

Network - OSI 7 Layer: 네트워크 계층(3 Layer)

Dlise 2024. 3. 25. 14:20

OSI 7계층 중 3계층(네트워크 계층)을 알아보자.

 

네트워크 계층(Network Layer)

2계층의 스위치만으로는 멀리 있는 컴퓨터와 통신할 수 없다. 이때 필요한 장비가 라우터(Router)이다.

라우터는 데이터가 어떤 경로로 전달되어야 하는지를 알려주며 MAC 주소가 아닌 IP 주소를 필요로 한다.

 

네트워크 계층은 이러한 IP주소와 라우터를 비롯한 내용을 포함한다. 이에 대해 알아보자.

 

IP  주소

IP(Internet Protocol) 주소는 인터넷상에 있는 컴퓨터의 고유한 주소이다. 따라서 인터넷에 접속하려면 IP 주소가 필요하다. 이를 이용해 다른 컴퓨터와 데이터를 주고받을 수 있다. 

그렇다면 IP 주소는 어떻게 얻을까? 

 

ISP(Internet Service Provider)

IP 주소는 ISP(인터넷 서비스 제공자)를 통해 할당받는다.

ISP는 SKT, KT, LG U+와 같은 회사이며 인터넷 연결을 신청해 ISP와 내 컴퓨터를 연결한다. 이후 공인 IP 하나가 부여된다.

* 공인 IP(Public IP): ISP에 의해 전 세계적으로 고유하게 할당되는 IP 주소로 이를 통해 인터넷상의 컴퓨터와 통신할 수 있다. 공인 IP는 주기적으로 변경된다.

* 사설 IP(Private IP): 기업 등의 내부에서만 사용되는 IP 주소로 외부의 컴퓨터와는 통신되지 않는다. 보안 측면에서 보다 안정적이다.
- 10.0.0.0 ~ 10.255.255.255
- 172.16.0.0 ~ 172.31.255.255
- 192.168.0.0 ~ 192.169.255.255

IP 주소의 형태 

IP는 32bit(4byte)를 활용하며 1byte씩 구분해 표현한다. 그 모습은 192.168.0.1과 같다.

(192.168.0.1 == 11000000 10101000 00000000 00000001)

 

표현할 수 있는 범위는 0.0.0.0 ~ 255.255.255.255이다.

마지막 1byte의 가장 작은 수인 0, 가장 큰 수인 255는 용도가 정해져 있어 컴퓨터의 IP주소로 사용하지 않는다.

- 0: 네트워크 주소. 일반적으로 하나의 네트워크를 통칭하기 위해 사용되는 주소

 

- 255: 브로드캐스트 주소. 네트워크에 연결된 컴퓨터에 Data를 일괄적으로 전송할 때 사용하는 주소

 

IP 주소의 구조

IP 주소는 네트워크 ID호스트 ID로 구분된다. 예를 들면 아래와 같다.

네트워크 ID는 네트워크의 범위를 지정해 노드 관리를 쉽게 하기 위한 것이고

호스트 ID는 라우터에 연결된 개별 컴퓨터들을 관리하기 위한 것이다.

 

만약 한 네트워크 내에 있는 컴퓨터들의 IP 주소가 아래와 같다면

- A: 192.168.2.12

- B: 192.168.2.13

- C: 192.168.2.14

네트워크 ID는 앞의 3byte(192.168.2), 호스트 ID는 뒤의 1 byte이다.

 

 

IP 주소의 클래스

공인 IP 주소는 5개의 클래스(A class ~ E class)로 나눠지며 각 클래스는 네트워크 ID와 호스트 ID에 따라 구분된다.

D, E class는 일반인을 위한 것이 아니기에 A ~ C class만 유효하다.

 

A class

A class는 한 네트워크가 가질 수 있는 호스트 ID가 가장 많은 클래스이다.

앞의 8bit가 네트워크 ID, 뒤의 24bit가 호스트 ID이고 가장 앞자리가 0(2)이다.

0.0.0.0~127.255.255.255

B class

B class는 앞의 16bit가 네트워크 ID, 뒤의 16bit가 호스트 ID이며 가장 앞 두 자리가 10(2)이다.

128.0.0.0~191.255.255.255

C class

C class는 앞의 24bit가 네트워크 ID, 뒤의 8bit가 호스트 ID이며 가장 앞 세 자리가 110(2)이다.

192.0.0.0~223.255.255.255

 

D class는 앞자리가 1110(2)이며 IAB에서 멀티캐스트 주소용으로 사용되며

E class는 연구(실험)용이다.

 

전 세계의 IP 주소는 IANA(Internet Assigned Numbers Authority)에서 관리하며

대한민국은 KISA(Korea Internet & Security Agency)가 IANA로부터 IP 대역을 할당받는다.

이후 KISA에서 ISP에게 할당하고 ISP에서 개인 혹은 기업에게 할당한다.

 

 

OSI 7계층에서의 IP 주소

네트워크 계층에선 송, 수신자의 IP 정보가 헤더에 포함된다.

따라서 데이터 링크 계층에서 수신자의 MAC 주소를 알고 있어야 하는 것처럼 네트워크 계층에선 수신자의 IP 주소를 알고 있어야 한다. 그리고 이는 라우터를 통해 얻을 수 있다.

 

브로드캐스트, 유니캐스트, 멀티캐스트

브로드캐스트(Broadcast): 같은 네트워크에 속한 모든 컴퓨터에게 데이터를 전달한다. 해당 데이터가 필요 없는 수신자에게도 전달하므로 수신자는 불필요한 작업이 생기는 것이다.

 

유니캐스트(Unicast): 1대 1 통신으로 같은 네트워크에 여러 대의 컴퓨터가 있을 때 특정한 컴퓨터에게만 데이터를 보낼 수 있다. 수신자의 MAC주소를 알고 있어야 한다.

 

멀티캐스트(Multicast): 브로드캐스트 + 유니캐스트로 같은 네트워크에서 특정 그룹을 지정해 그 그룹에 속한 컴퓨터에게만 데이터를 보낸다.

 

서브넷

우리가 실제로 사용하는 A ~ C class는 한 네트워크에서 매우 많은 호스트 ID를 가지고 있다.

A class는 2,147,483,648개, B class는 1,073,741,824개, C class는 536,870,912개이다.

만약 한 컴퓨터가 브로드캐스트를 하는 경우, 동일한 네트워크에 속한 수 억 개의 컴퓨터에게 전달되는 것으로 이는 매우 비효율적이다.

 

따라서 우리는 서브넷(Subnet)을 활용한다.

서브넷(Subnet)은 하나의 네트워크가 분할된 작은 네트워크로 네트워크 ID와 호스트 ID를 이용한다.

작은 네트워크로 나누는 작업은 서브넷팅(Subneting)이라고 한다.

 

더 상세히 보자면 서브넷은 호스트 ID를 서브넷 ID와 호스트 ID로 나눠 여러 개의 네트워크를 만든다.

서브넷팅

다만 이처럼 서브넷을 활용하면 네트워크 ID와 호스트 ID의 경계를 알기 어려워지므로 이를 해결하기 위해 서브넷 마스크(Subnet Mask)를 활용한다. 서브넷 마스크는 IP 주소에서 네트워크 ID와 호스트 ID를 구분하기 위한 구분자이다.

 

서브넷 마스크에 대한 표현은 192.168.1.1/24 혹은 255.255.255.0과 같이 한다.

/24는 앞에서부터 24개의 bit가 네트워크 ID라는 의미이며

255.255.255.0은 네트워크 ID는 모두 1, 호스트 ID는 모두 0으로 표현하기 때문이다.

 

B클래스의 경우는 서브넷 마스크가 255.255.0.0이다.

 

만약 위의 상황에서 2개의 네트워크로 만들고 싶다면 아래와 같이 바꾸면 된다.

 

더 확실한 이해를 위해 서브넷팅 계산을 직접 해보자.

 

192.168.16.0/24을 4개의 네트워크로 나누는 경우

/24이므로 현재 서브넷 마스크는 아래와 같다.

우리는 4개의 네트워크로 나눠야 하므로 22= 4, 즉 2개의 bit를 네트워크 ID로 바꿔야 한다.

결과적으로 생긴 4개의 네트워크는 아래와 같다.

  • 192.168.16.0/26 ~ 192.168.16.63/26
  • 192.168.16.64/26  ~ 192.168.16.127/26
  • 192.168.16.128/26  ~ 192.168.16.191/26
  • 192.168.16.192/26  ~ 192.168.16.255/26

 

라우터

라우터(Router)는 데이터의 전송을 위해 가장 빠른 길을 찾아 네트워크 간의 경로를 설정하는 장비이다.

스위치는 동일한 네트워크의 컴퓨터끼리만 통신을 지원한다는 한계를 가지고 있는데 라우터를 통해 이를 해결할 수 있다.

 

네트워크 간의 경로를 설정하는 것을 라우팅(Routing)이라고 하며 두 네트워크 사이에 1개 이상의 라우터가 있을 수 있다.

그렇다면 경로는 어떻게 설정하는 것일까?

바로 라우팅 테이블(Routing Table)을 활용한다.

라우팅 테이블은 데이터를 목적지까지 보내기 위한 거리와 방법을 명시한 테이블로 데이터를 목적지로 보내기 위해 어떤 방향으로 가야 하는지에 대한 정보를 가지고 있다. 라우터는 라우팅 테이블을 확인해 길을 찾는다.

 

만약 컴퓨터 A가 컴퓨터 B에게 데이터를 보내려고 한다면

1. 라우터는 A는 컴퓨터 B의 네트워크 주소를 확인하고 라우팅 테이블에서 정보를 찾는다.

2. 라우팅 테이블을 통해 방향을 구하고 라우터 A는 라우터 B에게 컴퓨터 B의 IP 주소를 묻는다.

 

다만, 실제로는 라우팅 프로토콜에 따라 테이블이 달라진다.

 

라우팅 테이블은 명령 프롬프트 창에서 route print를 통해 확인할 수 있다.

라우팅 테이블은 네트워크의 상황이 항상 같지 않기에 지속적인 업데이트가 필요하며 업데이트는 자동, 수동이 모두 가능하다.