Posts 네트워크 LAN, WAN / 스위치, 라우터 / IP 주소 / 서브넷 개념 정리
Post
Cancel

네트워크 LAN, WAN / 스위치, 라우터 / IP 주소 / 서브넷 개념 정리

네트워크?

컴퓨터에서 의미하는 네트워크란 두 대 이상의 컴퓨터가 서로 연결되어 있는 것을 말한다. 네트워크를 통해 서로 필요한 데이터(정보)를 주고 받을 수 있게 된다.

네트워크를 사용하면 웹 사이트를 방문하거나, 메일을 주고 받는 등 다양한 일을 할 수 있게 된다.

1.jpg

출처: Unsplash

현실 세계에 비유하자면 네트워크는 도로와 같다. 현재 살고 있는 지역에서 다른 지역으로 이동할 수 있는 도로가 생기면 그 도로를 통해 다른 지역에 방문할 수 있게 되고, 다양한 일을 할 수 있는 것과 같다.

LAN 과 WAN

네트워크는 접속할 수 있는 범위에 따라 크게 2가지로 나뉜다.

LAN

LAN 은 Local Area Network(근거리 통신망) 의 약자로 건물 안이나 특정 지역을 범위로 하는 네트워크를 의미한다. 가정이나 사무실 같이 지리적으로 제한된 곳에서 컴퓨터와 프린터를 연결하는 네트워크이다.

WAN

WAN 은 Wide Area Network(광역 통신망)의 약자로 지리적으로 넓은 범위에 구축된 네트워크를 의미한다.

WAN 은 인터넷 서비스 제공자(ISP)가 제공하는 서비스를 사용해서 구축된 네트워크이다. 쉽게 생각하면 랜과 랜을 이은 것과 같다.

인터넷 서비스 제공자(ISP)는 KT, U+, SK 브로드밴드 등 인터넷 통신사를 의미한다.

인터넷의 시작, ARPAnet

1969년 12월 미국 국방부의 ARPA(Advanced Research Projects Agency, 첨단연구계획국)에서 군사 목적으로 컴퓨터 네 대를 연결한 것이 인터넷의 시작이다.

허브와 스위치

허브(hub)

2.jpeg

출처: 쿠팡

허브는 여러 컴퓨터와 통신하기 위해 사용하는 장비이다.

허브는 네트워크를 통해 손실되는 전기 신호를 복원하고 증폭시키는 기능을 한다.

3.png

허브는 어떤 특정 포트로부터 데이터를 받으면 해당 포트를 제외한 나머지 포트로 받은 데이터를 전송한다는 특징이 있다.

위의 그림과 같이 컴퓨터 세 대가 연결되어 있고, 컴퓨터 1 에서 데이터를 전송하면 컴퓨터 2컴퓨터 3 도 데이터를 받는다는 것이다.

이처럼 허브를 사용하면 불필요한 데이터가 전송되는 비효율이 발생하기 때문에 스위치를 사용하며, 최근에는 대부분 허브 대신 스위치를 사용하고 있다.

스위치(switch)

4.jpeg

출처: 쿠팡

스위치는 허브와 외형은 비슷하지만, 기능적으로는 다르게 작동한다.

스위치 내부에는 MAC 주소 테이블이 존재한다. 이 테이블에는 스위치의 포트 번호와 해당 포트에 연결되어 있는 컴퓨터의 MAC 주소가 등록된다.

만약, 출발지 MAC 주소가 스위치에 등록되어 있지 않으면 출발지의 MAC 주소를 포트와 함께 등록하는데, 이를 MAC 주소 학습 기능이라 한다.

MAC 주소는 랜 카드에 붙여지는 전 세계에서 고유한 번호이다. 사람으로 치면 주민등록번호와 같으며, MAC 주소를 사용해서 데이터를 전달한다.

같은 스위치에 연결된 컴퓨터 중에서 목적지 MAC 주소가 테이블에 등록되어 있지 않으면 허브처럼 연결된 모든 포트에 데이터를 전송한다. 이를 플러딩(flooding)이라 한다.

반대로 목적지 MAC 주소가 등록되어 있으면 목적지에 해당하는 컴퓨터에만 데이터가 전송된다. 이처럼 MAC 주소를 기준으로 목적지를 선택하는 것을 MAC 주소 필터링이라 한다.

라우터(router)

라우터는 네트워크 간 통신을 가능하게 해주는 장비이다.

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

5.png

LAN 에서는 목적지 컴퓨터의 MAC 주소만 알아도 데이터을 전송하는 것이 가능하다. 하지만, 다른 네트워크에 있는 컴퓨터로 데이터를 전송하려면 어떤 네트워크로 데이터가 전송되야 하는지 알아야 한다. 네트워크를 식별할 수 있는 주소를 IP 주소라고 하며, IP 주소가 있으면 다른 네트워크에 있는 목적지를 정할 수 있다.

라우팅 테이블(routing table)

라우터는 다른 네트워크로 데이터를 보내기 위한 경로 정보를 등록하고 관리한다. 이를 라우팅 테이블이라고 한다.

라우팅 테이블에는 5가지 정보가 저장되지만, 과제에서 필요한 정보만 추려내만 아래의 2가지와 같다.

  • 대상(Destination) : 데이터의 최종 목적지 IP 주소
  • 다음 hop (Next hop) : 데이터가 전달되는 IP 주소

IP 주소

IP 주소는 네트워크 간 통신에 필요하다. 우편물에 작성하는 주소와 동일한 개념이다.

IP 주소는 인터넷 서비스 제공자(ISP)에게 받을 수 있으며, IP 주소는 IPv4 와 IPv6 두 가지 버전이 있다.

IPv4 와 IPv6

IPv4 는 32비트로 되어 있는 주소이다.

예를 들면 아래와 같다.

1
2
10진수: 192.168.0.1
2진수 : 1100 0000 / 1010 1000 / 0000 0000 / 0000 0001

IP 주소를 2진수로 표현할 때는 8비트를 나누어 표시하는데, 8비트를 옥텟(octet)이라 부른다.

IPv4 는 약 43억개 주소를 만들 수 있는데, 인터넷이 널리 보급됨에 따라 IPv6 를 사용하게 되었다.

IPv6 는 128비트를 사용해서 약 340간(340조의 1조 배)개를 만들 수 있으며, 사실상 무한대로 만들 수 있다.

공인 IP 주소와 사설 IP 주소

공인 IP 주소는 인터넷 서비스 제공자(ISP)가 제공하는 주소이다.

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

6.png

공인 IP 주소 한 개만 라우터에 할당하고, 랜 안에 있는 컴퓨터는 랜의 네트워크 관리자가 자유롭게 사설 IP 주소를 할당하거나 라우터의 DHCP 기능을 사용해서 주소를 자동으로 할당한다.

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

이렇게 하면 공인 IP 주소를 절약하고, 공인 IP 주소 하나로 랜 안에 있는 컴퓨터 여러 대를 연결할 수 있게 된다.

네트워크 ID와 호스트 ID

IP 주소는 네트워크 ID와 호스트 ID로 나누어진다.

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

IP 주소의 클래스 구조

네트워크 ID를 크게 만들거나 호스트 ID를 작게 만들어서 네트워크 크기를 조정할 수 있다. 그래서 네트워크의 크기를 클래스라는 개념을 사용해서 구분하고 있다.

클래스의 종류는 다음과 같다.

  • A클래스 : 대규모 네트워크 주소
  • B클래스 : 중형 네트워크 주소
  • C클래스 : 소규모 네트워크 주소
  • D클래스 : 멀티캐스트 주소
  • E클래스 : 연구 및 특수용도 주소

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

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

1
2
[네트워크 ID]  [           호스트 ID             ]
0000 00001 / 0000 0000 / 0000 0000 / 0000 0000

B클래스는 첫 16비트가 네트워크 ID, C클래스는 첫 24비트가 네트워크 ID이다.

클래스마다 가질 수 있는 공인 IP 주소의 범위는 다음과 같다.

사설 IP 주소는 아래의 범위와 같으며, 사설 IP 는 절대 공인 IP 주소를 사용할 수 없다.

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

네트워크 주소는 호스트 ID가 모두 10진수로 0인 주소를 의미한다.

브로드캐스트 주소는 호스트 ID가 모두 10진수로 255인 주소를 의미한다.

예를 들어, IP 주소 192.168.1.0 는 C클래스에 속하며, 첫 24비트가 네트워크 ID 이고, 다음 8비트가 호스트 ID이다.

즉, [192.168.1].0 에서 192.168.1 은 네트워크 ID 이고, 192.168.1.[0] 에서 0 은 호스트 ID 가 된다. 그래서 네트워크 10진수로 0이기 때문에 네트워크 주소는 192.168.1.0 이 된다. 반대로 브로드캐스트 주소는 192.168.1.255 이다.

네트워크 주소는 전체 네트워크에서 작은 네트워크를 식별하는데 사용된다. 즉, 특정 네트워크를 대표하는 주소라고 할 수 있다.

7.png

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

서브넷(subnet)

A클래스 네트워크의 경우 규모가 약 1677만개인데, 브로드캐스트로 전송하면 불필요한 대상까지 데이터를 전송하는 비효율이 발생하고, 네트워크가 혼잡해진다.

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

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

서브넷팅을 하면 기존에 네트워크 ID 와 호스트 ID 로 구분하던 IP 주소를 네트워크 ID, 서브넷 ID, 호스트 ID 세 가지로 나눌 수 있다.

서브넷 ID 는 호스트 ID 를 빌려서 사용한다.

서브넷 마스크

IP 주소를 서브넷팅하면 네트워크 ID 가 어디까지고, 어디부터가 호스트 ID 인지 판단하기 어려울 때가 있다. 이를 구분하기 위해 사용하는 값이 서브넷 마스크이다.

각 클래스마다 기본 서브넷 마스크는 다음과 같다.

서브넷 마스크는 프리픽스(prefix) 표기법으로도 사용할 수 있는데, /비트 수 로 나타낸 것을 의미한다.

예를 들어, C클래스 기본 서브넷 마스크인 255.255.255.0 을 2진수로 표현하면 다음과 같다.

1
1111 1111 / 1111 1111 / 1111 1111 / 0000 0000

왼쪽부터 1이 연속되는 비트 수가 총 24자리이므로 /24 으로 표현할 수 있다.

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

1
2
3
   255.255.255.240
-> [1111 1111 / 1111 1111 / 1111 1111] / [1111]   [0000]
                 네트워크 ID               서브넷 ID  호스트 ID

이를 프리픽스 표기법으로 바꾸면 /28 이 된다.

네트워크 영역, 호스트 영역의 범위

C클래스 IP 주소 201.220.5.0 에 기본 서브넷 마스크가 아닌 사용자가 만든 서브넷 마스크 255.255.255.248(/29)을 적용하면 다음과 같다.

1
2
3
4
5
1100 1001 / 1101 1110 / 0000 0101 / 0000 0000 (IP 주소)
1111 1111 / 1111 1111 / 1111 1111 / [1111 1][000] (서브넷 마스크)
<------------------------------->   <----->  <->
        C클래스 기본 네트워크 영역                   사용자 지정 호스트 영역
                             사용자 지정 네트워크 영역

서브넷 네트워크는 사용자가 지정한 네트워크 영역인 [1111 1]영역에 해당하며, 가질 수 있는 범위는 [00000] 부터 [11111]까지 총 2^5(32)개를 가질 수 있다.

하나의 옥텟은 총 256개의 값을 가질 수 있다. 그래서 각 네트워크 영역이 가질 수 있는 값의 개수는 256를 32로 나누면 8이 된다.

따라서 서브넷 네트워크는 다음과 같이 나누어진다.

각각의 네트워크 영역에서 첫 번째 호스트 ID는 네트워크 주소로 사용하고, 마지막 호스트 ID는 브로드캐스트 주소로 사용한다. 그래서 각 네트워크 범위에서 실제로 사용할 수 있는 호스트 IP의 개수는 6개이다.

라우터와 함께 사용하기

라우터는 서로 다른 네트워크와 통신하기 위해 사용하는 장비이다. 그래서 라우터는 아래의 그림과 같이 네트워크를 분리할 수 있다.

8.png

컴퓨터 1이 다른 네트워크에 있는 컴퓨터 6에 접속하고자 한다고 해보자.

네트워크를 분할한 다음에 다른 네트워크로 접속하려면 라우터의 IP 주소를 설정해야 한다. 이는 네트워크의 출입구를 설정하는 것인데, 기본 게이트웨이(default gateway)라고 한다.

09.png

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

네트워크 외부로 접속할 때 사용하는 게이트웨이는 직접 설정할 수도 있지만, 자동으로 IP 주소 받아서 설정할 수 있다.

라우팅

앞서 살펴본 것처럼 라우팅은 경로 정보를 기반으로 현재의 네트워크에서 다른 네트워크로 최적의 경로를 통해 데이터를 전송하는 것이다.

경로를 지정하기 위해 사용하는 것이 라우팅 테이블이며, 라우팅 테이블은 직접 등록할 수도 있고, 자동으로 등록할 수도 있다.

10.png

수동으로 등록하는 것은 소규모 네트워크에 적합하며, 자동으로 등록하는 것은 대규모 네트워크에 적합하다. 대규모 네트워크에서는 하나씩 라우팅 테이블에 주소를 등록하는 것은 번거롭기 때문이다.

라우팅 테이블에 목적지가 등록되어 있지 않다면?

라우팅 테이블에 목적지가 등록되어 있지 않으면 작동하지 않는다.

라우터는 다른 네트워크로 패킷을 보내기 위한 장비이기 때문이다.

그래서 라우터는 기본적으로 목적지 하나 이상을 설정해두어야 네트워크 통신이 가능하다.

라우팅 테이블의 0.0.0.0/0 나 default 의미?

결론부터 말하면 두 가지 모두 같은 의미를 가지고 있다.

0.0.0.0/0 가 라우팅 테이블의 목적지로 입력되어있다면, 현재 연결된 네트워크에서 목적지의 구체적인 IP 주소를 명시하지 않아도 통신할 수 있다.

11.png

/0 가 의미하는 바는 0비트는 네트워크 주소를 명시하기 위해 사용하고, 32비트는 호스트 주소를 명시하기 위해 사용하는 것이다.

즉, IPv4 기준으로 네트워크 주소는 비교하지 않고, 모든 호스트 주소와 비교한다는 의미이다.

라우팅 테이블의 목적지가 0.0.0.0/0 이 아니라 1.1.1.1/30 이고, 실제로 패킷을 받는 목적지의 IP가 1.1.1.2/30 라고 해보자.

두 주소를 AND 연산하면 다음과 같다.

1
2
3
4
0000 0001 / 0000 0001 / 0000 0001 / 0000 0001 (1.1.1.1)
0000 0001 / 0000 0001 / 0000 0001 / 0000 0010 (1.1.1.2)
----------------------------------------------
0000 0001 / 0000 0001 / 0000 0001 / 0000 0000 (1.1.1.0)

AND 연산의 결과는 1.1.1.0 이고, 서브넷 마스크는 /30 이다.

/30 은 하나의 네트워크 주소 안에 총 4개의 호스트 ID 를 가질 수 있다. (0~4)

1.1.1.11.1.1.2 는 같은 네트워크 대역폭에 속하기 때문에 라우팅 테이블에서는 1.1.1.2/30 주소로 패킷을 전달할 수 있게 된다.

그렇다면 라우팅 테이블의 목적지가 0.0.0.0/0 이고, 패킷을 받는 IP 주소가 1.1.1.1/30 이라고 해보자.

0.0.0.0/0 과 AND 연산을 한 결과는 다음과 같다.

1
2
3
4
0000 0001 / 0000 0001 / 0000 0001 / 0000 0001 (1.1.1.1)
0000 0000 / 0000 0000 / 0000 0000 / 0000 0000 (0.0.0.0)
----------------------------------------------
0000 0000 / 0000 0000 / 0000 0000 / 0000 0000 (0.0.0.0)

라우팅 테이블에서 목적지를 0.0.0.0/0 으로 설정했다면 AND 연산의 결과가 0.0.0.0 이기 때문에 어떤 IP 주소든 다른 라우터로 내보내는 것이 가능한 것이다.

default 도 마찬가지로 라우팅 테이블의 목적지와 패킷의 목적지가 일치하지 않을 때 사용한다.

참고자료

This post is licensed under CC BY 4.0 by the author.

[42Seoul] minishell (2) 프로젝트 회고

[42Seoul] pipex (1) 프로젝트 개요