OSI모델의 3계층인 네트워크 계층에 대해 다룹니다.
OVERVIEW
네트워크 링크 계층에서는 이더넷 규칙을 기반으로 하여 데이터 전송을 하는데, 같은 네트워크에 있는 컴퓨터로는 전송이 가능하지만 다른 네트워크나 인터넷으로는 데이터 전송이 불가능하다.
네트워크 계층에서 바로 네트워크 간의 통신을 가능하게 한다.
네트워크 간 데이터 전송을 하기 위해서는 라우터(router)라는 장비가 필요하다. 라우터는 데이터의 목적지까지 어떤 경로로 가는 것이 좋은 지 알려주는 기능을 한다.
목적지가 어디인지 알아야지만 라우터도 목적지까지의 경로를 알려준다. 이때 필요한 것이 IP주소이다. 랜에서는 MAC주소만으로 통신할 수 있지만, 다른 네트워크와는 통신할 수 없다. 따라서 네트워크를 식별할 수 있는 IP가 필요하다. IP는 어떤 네트워크의 어떤 컴퓨터인지 구분할 수 있도록 하는 주소이다.
IP주소로 목적지를 지정했다면, 라우팅(routing)을 통해 어떤 경로로 보낼지 결정해야 한다. 라우터라는 장비가 라우팅을 하며, 라우터에는 라우팅 테이블(routing table)이라는 경로 정보를 등록하고 관리하는 기능이 있다.
IP
네트워크 계층의 대표적인 프로토콜에는 IP(Internet Protocol)가 있다. 네트워크 계층에서 캡슐화할 때 IP헤더를 붙인다. IP헤더에는 버전, 헤더길이, 서비스 유형, 전체 패킷 길이, 일련번호 ID, 조각 상태, 조각의 위치, TTL, 프로토콜, 헤더 체크섬, 출발지 IP주소, 목적지 IP주소 순서로 구성되어 있다.
IP헤더가 추가된 데이터를 IP패킷이라 한다. (※ 데이터 링크 계층에서는 이더넷 헤더가 추가된 데이터를 프레임이라 하였다.)
IP주소
네트워크 간의 통신을 위해서는 IP주소가 필요하다. IP주소는 인터넷 서비스 제공자(ISP)에게 받을 수 있다.
- IP주소 버전
- IPv4 : 이 주소는 32비트로 되어있으며, 약 43억개를 만들 수 있다.
- IPv6 : IPv4로는 부족해져서 128비트로 된 IPv6을 사용하게 되었다. 약 340간(340조*1조*1조)개를 만들 수 있다.
- IP주소 종류
- 공인 IP주소 : 인터넷에 연결되는 컴퓨터나 라우터에 할당한다. 랜 안에 여러대의 컴퓨터가 연결되어 있는 경우, 라우터에 할당하여 IP주소를 절약한다.(IPv4 부족하기 때문)
- 사설 IP주소 : 회사나 가정의 랜에 있는 컴퓨터에 할당한다.
- 공인과 사설 IP주소 모두 2진수의 32비트로 되어 있다.
- 32비트를 8비트씩 나누어 1옥텟(8비트) 단위로 나누어 표시한다.
- 읽기 쉽도록 10진수로 표시한다. (표시는 10진수로 하며, 실제 IP주소는 2진수이다.)
- 8비트의 범위는 00000000~11111111이고, 이를 10진수로 변환한 범위는 0~255이다.
- IP주소 구성
- 네트워크 ID : 어떤 네트워크인지 나타내는 비트
- 호스트 ID : 어떤 컴퓨터인지 나타내는 비트
- 네트워크와 호스트 ID가 합쳐져서 IP주소가 된다.
IP주소의 클래스 구조
IP주소는 네트워크 규모에 따라 A~E클래스로 나뉘어져있다. IPv4의 IP주소는 32비트이며, 네트워크 ID를 크게하거나 호스트 ID를 작게하여 네트워크 크기를 조정할 수 있다. 네트워크 크기는 클래스로 구분한다.
클래스 이름 | 내용 | 클래스 이름 | 내용 |
A 클래스 | 대규모 네트워크 주소 | D 클래스 | 멀티캐스트 주소 |
B 클래스 | 중형 네트워크 주소 | E 클래스 | 연구 및 특수용도 주소 |
C 클래스 | 소규모 네트워크 주소 |
- A 클래스 : 8비트 네트워크 ID + 24비트 호스트 ID
- B 클래스 : 16비트 네트워크 ID + 16비트 호스트 ID
- C 클래스 : 24비트 네트워크 ID + 8비트 호스트 ID
각 클래스의 2진수 및 10진수 IP주소는 아래와 같다.
- A 클래스
- 1옥텟 범위는 2진수로 000000001~01111111이고 10진수로 1~127이다.
- 2~4옥텟의 범위는 2진수로 00000000~11111111이고 10진수로 0~255이다.
- 32비트의 전체 범위는 2진수로 00000001~01111111, 00000000~11111111, 00000000~11111111, 00000000~11111111이고 10진수로 1.0.0.0~127.255.255.255이다.
- 최대 호스트 ID수(컴퓨터 수)는 1677만 7214개이다.
- B 클래스
- 1옥텟 범위는 2진수로 100000000~10111111이고 10진수로 128~191이다.
- 2~4옥텟의 범위는 2진수로 00000000~11111111이고 10진수로 0~255이다.
- 32비트의 전체 범위는 2진수로 10000000~10111111, 00000000~11111111, 00000000~11111111, 00000000~11111111이고 10진수로 128.0.0.0~191.255.255.255이다.
- 최대 호스트 ID수(컴퓨터 수)는 6만 5534개이다.
- C 클래스
- 1옥텟 범위는 2진수로 110000000~11011111이고 10진수로 192~223이다.
- 2~4옥텟의 범위는 2진수로 00000000~11111111이고 10진수로 0~255이다.
- 32비트의 전체 범위는 2진수로 11000000~11011111, 00000000~11111111, 00000000~11111111, 00000000~11111111이고 10진수로 192.0.0.0~223.255.255.255이다.
- 최대 호스트 ID수(컴퓨터 수)는 254개이다.
각 클래스의 공인 IP주소와 사설 IP주소의 범위는 아래와 같다.
- 공인 IP주소 범위
종류 | 공인 IP 주소 범위 |
A 클래스 | 1.0.0.0~9.255.255.255 11.0.0.0~126.255.255.255 |
B 클래스 | 128.0.0.0~172.15.255.255 172.32.0.0~191.255.255.255 |
C 클래스 | 192.0.0.0~192.167.255.255 192.169.0.0~223.255.255.255 |
(Q. 책에는 A 클래스의 호스트 ID 첫자리가 126으로 되어있으나 127까지가 아닌지? 다른 이유가 있는 것인가?)
- 사설 IP주소 범위
종류 | 공인 IP 주소 범위 |
A 클래스 | 10.0.0.0~10.255.255.255 |
B 클래스 | 172.16.0.0~172.31.255.255 |
C 클래스 | 192.168.0~192.168.255.255 |
※ 가정에서는 주로 C 클래스의 사설 IP주소가 사용된다.
※ cmd창에 ipconfig명령어로 자신의 IP주소를 확인할 수 있다.
네트워크 주소와 브로드캐스트 주소의 구조
네트워크 주소와 브로드캐스트 주소는 컴퓨터나 라우터에 자신의 IP주소로 할당할 수 없는 특별한 주소이다.
- 네트워크 주소
- 호스트 ID 첫번째 숫자가 10진수로 0이면 네트워크 주소이다.
- 전체 네트워크에서 작은 네트워크를 식별하는 역할을 한다. 즉, 네트워크 주소는 그 네트워크 전체를 대표하는 주소인 것이다.
- 예를 들어, 192.168.1.1~192.168.1.6의 네트워크는 192.168.1.0의 네트워크에 있는 것이다.
- 브로드캐스트 주소
- 호스트 ID 마지막 숫자가 10진수로 255이면 브로드캐스트 주소이다.
- 네트워크에 있는 모든 컴퓨터나 장비에 한 번에 데이터를 전송할 때 사용되는 IP주소이다.
- 예를 들어, 192.168.1.255의 브로드캐스트 주소로 데이터를 전송하면 네트워크 안에 있는 모든 컴퓨터가 데이터를 받게 되는 것이다.
서브넷 (subnet)
IP주소는 네트워크 규모에 따라 여러 클래스로 나뉜다. 예를 들어, A 클래스의 경우 1677만 7214개의 IP주소를 사용할 수 있다.
수많은 컴퓨터가 하나의 네트워크에서 사용되는데, 만약 브로드캐스트 패킷을 전송한다면 모든 컴퓨터에 패킷이 전송되어 네트워크가 혼잡해질 것이다.
대규모 네트워크를 작은 네트워크로 분할하면 더 많은 네트워크로 IP주소를 효과적으로 사용할 수 있을 것이다.
이처럼 네트워크를 분할하는 것을 서브네팅(subneting)이라 하며, 분할된 네트워크를 서브넷(subnet)이라 한다.
서브네팅을 하면 [네트워크 ID + 호스트 ID] 로 구성된 것이 [네트워크 ID + 서브넷 ID + 호스트 ID] 로 나뉘게 된다.
이때, 서브넷 ID는 호스트 ID에서 비트를 나누어 가진다.
서브넷 마스크
서브넷 마스크는 네트워크 ID와 호스트 ID가 어디서부터 어디까지인지 식별하기 위해 사용하는 값이다.
- A 클래스의 서브넷 마스크 : 255.0.0.0
11111111 | 00000000 | 00000000 | 00000000 |
255 | 0 | 0 | 0 |
- B 클래스의 서브넷 마스크 : 255.255.0.0
11111111 | 11111111 | 00000000 | 00000000 |
255 | 255 | 0 | 0 |
- C 클래스의 서브넷 마스크 : 255.255.255.0
11111111 | 11111111 | 11111111 | 00000000 |
255 | 255 | 255 | 0 |
프리픽스 표기법으로는 /(슬래쉬) + 네트워크 ID의 비트수로 표기할 수 있다. 예를 들어, C 클래스의 서브넷 마스크는 /24가 된다.
라우터 구조
서로 다른 네트워크와 통신하려면 라우터가 필요하다. 스위치나 허브로 연결하면 네트워크를 분리할 수 없지만 라우터는 네트워크를 분리할 수 있다.
다른 네트워크의 컴퓨터에 데이터를 전송하려면 라우터의 IP주소를 설정해야 한다. 라우터 IP주소 설정하는 것을 네트워크의 출입구를 설정한다고 하여 기본 게이트웨이(default gateway)라고도 한다.
좌측 192.168.1.0 네트워크의 라우터 IP주소는 192.168.1.1로 설정할 수 있고, 우측 192.168.2.0 네트워크의 라우터 IP주소는 192.168.2.1로 설정할 수 있다.
라우터 IP주소를 설정하고 나면 라우팅(routing) 기능이 필요하다. 라우팅은 경로 정보를 기반으로 출발지 네트워크에서 목적지 네트워크까지 최적의 경로를 통해 데이터를 전송하는 방식이다. 경로 정보는 라우팅 테이블에 등록되어 있다.
라우터 간 라우팅 정보를 교환하기 위한 프로토콜을 라우팅 프로토콜이라고 하는데, 이 라우팅 프로토콜을 설정하여 라우터 간 경로 정보를 교환한 후 라우팅 테이블에 등록한다.
이어서 다음 포스팅에서 전송 계층에 대한 내용을 다룰 것이다.
[reference]
'CS > 네트워크' 카테고리의 다른 글
[Network] OSI 모델의 응용 계층 (0) | 2022.03.15 |
---|---|
[Network] OSI 모델의 전송 계층 (0) | 2022.03.14 |
[Network] OSI 모델의 데이터 링크 계층 (0) | 2022.03.09 |
[Network] OSI 모델의 물리 계층 (0) | 2022.03.08 |
[Network] 프로토콜 , OSI 모델 , TCP/IP 모델 , 캡슐화와 역캡슐화 (0) | 2022.03.07 |
댓글