[네트워크] 네트워크 계층

박성재·2021년 1월 31일
1

네트워크

목록 보기
5/10
post-thumbnail

참고: 모두의 네트워크 - 키즈구치 카츠야 저
위 책을 읽으며 공부한 내용을 정리한 포스트입니다.

배너: godori님이 만드신 배너 메이커 활용


네트워크 계층의 역할

네트워크 간의 연결 구조

데이터 링크 계층에서는 이더넷 규칙을 기반으로 같은 네트워크에 있는 컴퓨터로는 데이터를 전송할 수 있지만, 인터넷이나 다른 네트워크로는 데이터를 전송할 수 없다.

다른 네트워크에 있는 목적지로 데이터를 전달하려면 OSI 모델 중 네트워크 계층의 기술이 필요하다.

네트워크 계층(network layer):
네트워크 계층은 다른 네트워크와 통신하기 위한 경로 설정을 위해 라우터를 통한 라우팅을 하며, 패킷 전송을 담당한다.

이 계층을 통해 다른 네트워크로 데이터를 전송하려면 라우터(router)라는 네트워크 장비가 필요하다.

라우터:

서로 다른 네트워크를 연결해 주는 장치로 현재의 네트워크에서 다른 네트워크로 패킷을 전송할 수 있도록 한다.

라우터는 데이터의 목적지가 정해지면 해당 목적지까지 어떤 경로로 가는 것이 좋은지를 알려주는 기능을 한다.

하지만 데이터를 보내련느 상대가 어디에 있는지 모르면 라우터도 목적지까지의 경로를 알려 주지 못한다.

랜에서는 MAC 주소만으로도 통신할 수 있지만 다른 네트워크에는 데이터를 보낼 수 없다. 그래서 MAC 주소가 아닌 네트워크를 식별할 수 있는 다른 주소가 필요하다. 그 주소를 IP 주소라고 한다.

IP 주소(IP address):
컴퓨터 네트워크에서 장치들이 서로를 인식하고 통신하기 위해 사용하는 주소다.

IP 주소는 어떤 네트워크의 어떤 컴퓨터인지를 구분할 수 있도록 하는 주소다. 이 주소가 있으면 다른 네트워크에 있는 목적지를 지정할 수 있다.

데이터를 보내려면 목적지를 지정하는 것뿐만 아니라 데이터를 어떤 경로로 보낼지도 결정해야 한다.
이처럼 목적지 IP 주소까지 어떤 경로로 데이터를 보낼지 결정하는 것을 라우팅(routing)이라고 한다.

라우팅(routing):
네트워크에서 패킷을 목적지로 보낼 때 목적지까지 갈 수 있는 여러 가지 경로 중 한 가지 경로를 설정해 주는 과정이다.

라우팅은 라우터를 통해서 한다. (cf. 레이어 3 스위치라는 장비라 라우팅을 할 수 있다.)

라우터는 거리에 관계없이 다른 네트워크로 데이터를 보낼 수 있다.
라우터에는 라우팅 테이블(routing table)이 있어서 경로 정보를 등록하고 관리한다.

라우팅 테이블(routing table):
컴퓨터 네트워크에서 목적지 주소를 목적지에 도달하기 위한 네트워크 노선으로 변환시킬 목적으로 사용된다. 다른 네트워크로 가기 위한 가장 좋은 라우터의 정보를 가지고 있다.

IP란?

네트워크 계층에는 IP(Internet Protocol)이라는 프로토콜이 있다. 데이터를 다른 네트워크에 있는 목적지까지 보내는 건 이 IP가 있어서 가능한 것이다.

IP(Internet Protocol, 인터넷 프로토콜):
인터넷에 있는 한 컴퓨터에서 다른 컴퓨터로 데이터를 보내는 데 사용되는 네트워크 계층 프로토콜이다.

네트워크 계층에서는 캡슐화할 때 다음과 같은 순서로 IP 헤더를 붙인다.

1) 버전(version) 2) 헤더 길이(header length) 3) 서비스 유형(service type), 4) 전체 패킷 길이(total length) 5) ID(identification, 일련번호) 6) 조각 상태(flags) 7) 조각의 위치(fragment offset) 8) TTL 9) 프로토콜(protocol) 10) 헤더 체크섬(header checksum) 11) 출발지 IP 주소(source IP address) 12) 목적지 IP 주소(destination IP address)

여기서 '출발지 IP 주소''목적지 IP 주소' 정도만 기억해두면 된다.

이처럼 IP 프로토콜을 사용하여 캡슐화할 때는 데이터에 IP 헤더가 추가되는데, 이렇게 만들어진 것을 IP 패킷이라고 한다.

cf) 데이터 링크 계층에서는 프레임 이었음.


IP 주소의 구조

IP 주소란?

IP 주소는 인터넷 서비스 제공자(ISP)에게 받을 수 있다.

IP 버전에는 IPv4IPv6가 있다.

현재 주로 사용하고 있는 IPv4 주소는 32비트로 되어 있어서 IP 주소를 약 43억 개 만들 수 있는데, 처음 IP 주소를 만들 때는 43억 개면 충분하다고 생각했다.
하지만 인터넷이 널리 보급되면서 IP 주소가 부족해졌고 그러면서 IPv6 주소를 사용하게 된 것이다.

IPv6 주소는 128비트로 되어 있어서 IPv4 주소보다 많은 IP 주소를 만들 수 있다. (340 간 개 = 340조의 1조 배의 1조 배로 사실상 무한대)

앞으로 IPv6 주소를 주로 사용하겠지만 당분간은 IPv4와 IPv6가 공존해서 사용될 것이다.
앞으로 나오는 내용은 IPv4 주소 기준이다.

IP 주소에는 공인 IP 주소사설 IP 주소가 있다. 공인 IP 주소는 인터넷 서비스 제공자(ISP)가 제공한다.

IPv4 주소는 사용할 수 있는 주소의 수가 고갈되고 있다.
그래서 인터넷에 직접 연결되는 컴퓨터나 라우터에는 공인 IP 주소를 할당하고, 회사나 가정의 랜에 있는 컴퓨터는 사설 IP 주소를 할당하는 정책을 사용하고 있다.

만약 랜 안에 컴퓨터가 여러 대 있다면 공인 IP 주소는 사용할 수 있는 수가 제한되므로 컴퓨터 한 대당 공인 IP 주소를 하나씩 할당하기가 어렵다.
그래서 우선 인터넷 서비스 공급자가 제공하는 공인 IP 주소는 라우터에만 할당하고 랜 안에 있는 컴퓨터에는 랜의 네트워크 관리자가 자유롭게 사설 IP 주소를 할당하거나 라우터의 DHCP 기능을 사용하여 주소를 자동으로 할당하고 있다

DHCP(Dynamic Host Configuration Protocol):
IP 주소를 자동으로 할당하는 프로토콜

공인 IP 주소와 사설 IP 주소는 모두 2진수의 32비트를 동일하게 사용하고 있다.

IP 주소와 MAC 주소는 비트 수가 다르다.
MAC 주소는 48비트로 구분하기 쉽도록 16진수로 표시하고,
IP 주소는 32비트로 구분하기 쉽도록 10진수로 표시한다.

IP 주소 예시:
11000000101010000000000100001010

컴퓨터가 이해할 수 있으려면 2진수가 필요하지만 사람도 읽기 쉬워야 하므로 8비트 단위로 나눠서 표시한다.
비트를 옥탯(octet)이라고 부르기도 한다.

IP 주소 옥텟 예시
1옥탯: 11000000 2옥탯: 10101000 3옥탯: 00000001 4옥탯: 00001010

조금 더 읽기 쉽도록 각각의 8비트가 10진수로 변환된다.

IP 주소 10진수 예시
192.168.1.10

이처럼 10진수로 표시하지만 실제로 IP 주소는 2진수로 되어 있는 것이다.

각 옥탯에서 8비트와 10진수의 범위는 00000000(0) ~ 1111111(255)이다.

또 이 IP 주소는 네트워크 ID호스트 ID로 나눠져 있다.

네트워크 ID는 '어떤 네트워크'인지를 나타내고, 호스트 ID는 '해당 네트워크의 어느 컴퓨터'인지를 나타낸다. 이 두 가지 정보가 합쳐져서 IP 주소가 되는 것이다.


IP 주소의 클래스 구조

IP 주소 클래스란?

IPv4의 IP 주소는 32비트다. 비트로 구분하지만 네트워크 ID를 크게 만들거나 호스트 ID를 작게 만들어 네트워크 크기를 조정할 수도 있다.
네트워크 크기는 클래스라는 개념으로 구분하고 있다.

IP 주소 클래스(class):
IPv4에서 사용하는 주소 그룹에는 다섯 개가 있다. A, B, C 클래스는 네트워크 ID와 호스트 ID로 구성되며, D 클래스는 멀티캐스트 주소로 사용된다. E 클래스는 필요에 따라 사용하기 위해 확보해 놓은 것이다.

클래스의 종류

클래스 이름내용클래스 이름내용
A 클래스대규모 네트워크 주소D 클래스멀티캐스트(multicast) 주소
B 클래스중형 네트워크 주소E 클래스연구 및 특수용도 주소
C 클래스소규모 네트워크 주소

멀티캐스트(multicast):
한 컴퓨터(호스트)에서 패킷을 여러 컴퓨터로 동시에 전송하는 것을 말한다.

일반 네트워크에서는 A~C 클래스까지 사용할 수 있다.

A 클래스는 처음 8비트가 네트워크 ID고 다음 24비트가 호스트 ID다.

  • A 클래스의 1옥텟(8비트)의 범위늰 2진수로 0000000(1) ~ 01111111(127)이다.
  • 2~4 옥탯의 범위는 각각 2진수로 00000000(0) ~ 11111111(255)이다.
  • 최대 호스트 수는 1677만 7214대다.
  • A 클래스의 IP 주소 범위: 1.0.0.0 ~ 127.255.255.255

B 클래스는 처음 16비트가 네트워크 ID고 다음 16비트가 호스트 ID다.

  • B 클래스의 1옥텟의 범위는 2진수로 10000000(128) ~ 10111111(191)이다.
  • 최대 호스트 수는 6만 5534대다.
  • B 클래스의 IP 주소 범위: 128.0.0.0 ~ 191.255.255.255

C 클래스는 처음 24비트가 네트워크 ID고 다음 8비트가 호스트 ID다

  • C 클래스의 1옥텟의 범위는 2진수로 11000000(192) ~ 11011111(223)이다.
  • 최대 호스트 수는 254개다.
  • C 클래스의 IP 주소 범위: 192.0.0.0 ~ 223.255.255.255

공인 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.256
192.169.0.0 ~ 223.255.255.255

사설 IP 주소의 범위는 아래와 같다. 사설 IP 주소는 절대로 공인 IP 주소로 사용할 수 없으니 주의하자.

클래스와 사설 IP 주소의 범위

종류사설 IP 주소의 범위
A 클래스10.0.0.0 ~ 10.255.255.255
B 클래스172.16.0.0 ~ 172.31.255.255
C 클래스192.168.0.0 ~ 192.168.255.255

가정의 랜에서는 주로 C 클래스의 사설 IP 주소인 192.168.#.#이 사용된다.


네트워크 주소와 브로드캐스트 주소의 구조

네트워크 주소와 브로드캐스트 주소란?

IP 주소에는 네트워크 주소브로드캐스트 주소가 있다.
이 두 주소는 특별한 주소로, 컴퓨터나 라우터가 자신의 IP로 사용하면 안 되는 주소다.

네트워크 주소는 호스트 ID가 2진수로 00000000(0)인 주소다.
또한 브로드캐스트 주소는 호스트 아이디가 2진수로 11111111(255)인 주소다.

호스트 ID가 10진수고 첫 번째 숫자가 0이면 네트워크 주소고,

  • ex) 192.168.1.0 (C 클래스)

호스트 ID가 10진수고 마지막 숫자가 255면 브로드캐스트 주소가 되는 것이다.

  • ex) 192.168.1.255 (C 클래스)

네트워크 주소는 전체 네트워크에서 작은 네트워크를 식별하는 데 사용되고, 호스트 ID가 10진수로 0이면 그 네트워크 전체를 대표하는 주소가 되는 것이다.
쉽게 말해 전체 네트워크의 대표 주소라고 생각하면 된다.

  • ex) 192.168.1.1 ~ 192.168.1.6은 192.168.1.0의 네트워크에 있다.

브로드캐스트 주소는 네트워크에 있는 컴퓨터나 장비 모두에게 한 번에 데이터를 전송하는 데 사용되는 전용 IP 주소다.

브로드캐스트(broad cast):
IP 네트워크에 있는 모든 컴퓨터(호스트)로 데이터를 전송하는 방식.

  • ex) 192.168.1.255의 브로드캐스트 주소로 데이터를 전송하면 192.168.1.0 네트워크 안에 있는 모든 컴퓨터가 데이터를 받게 된다.

그래서 '네트워크 주소와 브로드캐스트 주소는 자신의 IP 주소로 설정하면 안 되는 것이다.'


서브넷의 구조

A 클래스 네트워크는 네트워크 ID가 8비트에 호스트 ID가 24비트여서 IP 주소를 1677만 7214개 사용할 수 있다고 했다.
만약 그 많은 수의 컴퓨터가 브로드캐스트 패킷을 전송하면 모든 컴퓨터에 패킷이 전송되고 네트워크가 혼잡해질 것이다.

A 클래스의 대규모 네트워크를 작은 네트워크로 분할하여 브로드캐스트로 전송되는 패킷의 범위를 좁힐 수 있다.
이렇게 하면 더 많은 네트워크를 만들 수 있어서 IP 주소를 더 효과적으로 활용할 수 있다.

이처럼 네트워크를 분할하는 것을 서브넷팅(subneting)이라고 하고, 분할된 네트워크를 서브넷(subnet)이라고 한다.

서브넷팅(subneting):
네트워크를 분할하기 위해 IP 주소의 구성을 변경하는 작업

서브넷(subnet):
큰 네트워크를 분할해서 만든 작은 네트워크

서브넷팅을하면 기존에 네트워크 ID와 호스트 ID로 구성되어 있던 것이 네트워크 ID, 서브넷 ID, 호스트 ID로 나누어지게 된다.

  • A 클래스 서브넷팅 전: 네트워크 ID = 8비트, 호스트 ID = 24비트
  • A 클래스 서브넷팅 후: 네트워크 ID = 8비트, 서브넷 ID = 10비트, 호스트 ID = 14비트

원래 호스트 ID로 사용되던 비트를 빌려 서브넷 ID로 바꾸는 것이다.

서브넷 ID:
IP 주소의 네트워크 부분을 늘리기 위해 서브넷 마스크로 사용되는 비트로 서브넷 비트(subnet bits)라고도 한다.

서브넷 마스크란?

IP 주소를 서브넷팅하면 어디까지가 네트워크 ID고 어디부터가 호스트 ID인지 판단하기 어려울 때가 있다. 그럴 때는 서브넷 마스크라는 값을 사용한다.

서브넷 마스크(subnet mask):

네트워크 ID와 호스트 ID를 식별하기 위한 값.

IP 주소의 네트워크 부분만 나타나게 하여 같은 네트워크인지를 판별하게 하는 마스크다.

  • A 클래스의 서브넷 마스크: 255.0.0.0

  • B 클래스의 서브넷 마스크: 255.255.0.0

  • C 클래스의 서브넷 마스크: 255.255.255.0

서브넷 마스크는 프리픽스(prefix) 표기법으로도 사용할 수 있다.
프리픽스 표기법은 서브넷 마스크를 슬래시(/비트 수)로 나타낸 것을 말한다.

  • 예를 들어 255.255.255.0은 /24가 된다.

서브넷팅 예시

C 클래스는 일반적으로 네트워크 ID가 24비트이지만, 네트워크 ID를 28비트로 변경하면 4비트를 호스트 ID에서 빌리게 된다.
즉 네트워크 ID가 24비트, 서브넷 ID가 4비트, 호스트 ID가 4비트가 된다.

이 네트워크의 서브넷 마스크는 255.255.255.240이 된다. (111100002_2 = 240)
이것을 프리픽스 표기법으로 바꾸면 네트워크 ID와 서브넷 ID가 28비트가 되어 /28이다.


라우터의 구조

라우터란?

서로 다른 네트워크와 통신하려면 라우터가 필요하다.
라우터는 네트워크를 분리할 수 있다.

그림 출처: Yohan's Developer Diary

한편 스위치(레이어 2 스위치)만 있는 네트워크에서는 모든 컴퓨터와 스위치가 동일한 네트워크에 속하게 된다.
허브도 스위치와 마찬가지로 네트워크를 분리할 수 없다.

네트워크를 분할할 뒤 컴퓨터 1이 다른 네트워크에 있는 컴퓨터 6에 데이터를 전송하려면 라우터의 IP 주소를 설정해야 한다.
이것은 네트워크의 출입구를 설정하는 것으로 기본 게이트웨이(default gateway)라고 한다.

컴퓨터 1은 다른 네트워크로 데이터를 보낼 때 어디로 전송해야 한느지 알지 못한다.
그래서 네트워크의 출입구를 지정하고 일단은 라우터로 데이터를 전송한다. 여기에서 컴퓨터 1은 192.168.1.0/24 네트워크에 속해 있기 때문에 라우터의 Ip 주소인 192.168.1.1로 설정한 것이다.

컴퓨터 네트워클르 설정하는 화면에서 기본적으로 '자동으로 IP 주소 받기'에 체크되어 있으면 네트워크 외부에 접속할 때 사용되는 기본 게이트웨이가 자동으로 설정된다.

이제 컴퓨터 6으로 데이터를 보내려면 추가로 라우터의 라우팅(routing) 기능이 필요하다.

라우팅이란?

라우팅은 경로 정보를 기반으로 현재의 네트워크에서 다른 네트워크로 최적의 경로를 통해 데이터를 전송한다.
이 경로 정보가 등록되어 있는 테이블이 라우팅 테이블이다.

라우팅 테이블은 네트워크 관리자가 수동으로 등록하는 방법과 자동으로 등록하는 방법이 있다.

수동으로 등록하는 방법은 소규모 네트워크에 적합하고, 자동으로 등록하는 방법은 대규모 네트워크에 적합하다. 대규모 네트워크에서는 정보를 하나하나 라우터에 등록하기가 힘들기 때문이다. 또, 등록된 내용이 수정되면 수동으로 변경해야 하므로 작업량도 많아진다.

한편 자동으로 등록하는 방법은 라우터 간에 경로 정보를 서로 교환하여 라우팅 테이블 정보를 자동으로 수정해 준다.

이처럼 라우터 간에 라우팅 정보를 교환하기 위한 프로토콜을 라우터 프로토콜이라고 한다.
이 라우팅 프로토콜을 설정하여 라우터 간에 경로 정보를 서로 교환하고 그것을 라우팅 테이블에 등록해 나가는 것이다.

대표적인 라우팅 프로토콜에는 RIP, OSPF, BGP 등이 있고 각각의 특징이 있다.

0개의 댓글