TCP/IP 5계층에서 일어나는 일 (2)에서 이어지는 글입니다.

이전 글에서 소개한 1계층 - 물리 계층은 케이블 등의 매체를 이용해 물리적으로 데이터를 전송하는 역할을 맡았고, 2계층 - 데이터링크 계층은 이더넷을 기반으로 같은 네트워크에 있는 컴퓨터로 데이터를 전송했다. 이번 글에서는 3계층인 네트워크 계층을 설명한다.

네트워크 계층의 역할

3계층인 네트워크 계층은 다른 네트워크에 있는 목적지에 데이터를 전송한다. 즉, 네트워크 계층의 역할은 네트워크 간의 통신을 가능하게 하는 것이다. 이를 위해 라우터(router)라는 장비와 IP(Internet Protocol)라는 프로토콜이 사용된다.

라우터

네트워크 장치인 라우터를 사용하면 거리에 상관없이 다른 네트워크에 데이터를 보낼 수 있다. 라우터는 데이터의 목적지까지 어떤 경로로 가는게 좋은지 알려주는 기능을 한다. 이 때 라우터가 데이터를 어떤 경로로 보낼지 결정하는 것을 라우팅(routing)이라고 한다. 라우터 내부엔 경로 정보를 등록하고 관리하는 라우팅 테이블(routing table)이 존재한다.

  • 라우팅 : 라우팅은 라우팅 테이블을 활용해 다른 네트워크로 데이터를 전송할 최적의 경로를 찾는 행위를 의미한다.
  • 라우팅 프로토콜 : 라우터 간 라우팅 정보를 교환하기 위한 프로토콜을 의미한다. RIP, OSPF, BGP 등의 라우팅 프로토콜을 설정해 라우터 간에 서로 경로 정보를 교환하고, 라우팅 테이블에 정보를 등록해 나간다.

IP(Internet Protocol)

네트워크 계층에는 IP라는 프로토콜이 존재한다. 네트워크 계층에서 캡슐화를 할 때 IP 헤더를 붙인다. IP 헤더에는 데이터를 다른 네트워크에 있는 목적지까지 보내기 위해 필요한 정보를 담고 있다.

 

아래 이미지는 IPv4에서의 헤더 구성요소다. 대표적으로 출발지, 목적지를 식별하기 위한 32비트의 IP 주소가 들어있는 것을 알 수 있다.

그 외에 포함되어 있는 정보 중 일부를 설명하자면,

  • 버전 : IP 프로토콜의 버전인 IPv4, IPv6를 구분하기 위한 버전 번호가 들어간다.
  • 헤더 길이 : IP 헤더 길이를 나타낸다. IPv4에서는 가변 크기의 값을 가진다.
  • 서비스 유형 : 패킷의 등급을 구분한다.
  • ID : 패킷을 구분하기 위한 식별자
  • 헤더 체크섬 : 헤더가 정상적인지 오류 검출을 위해 쓰이는 값이다.
  • TTL(Time To Live) : IP 패킷의 수명을 나타낸다. 라우터에 방문할 때마다 1씩 감소하고, 0이 된 순간 버려진다.

다음은 IPv6에서의 헤더 구성이다. 40비트로 고정 크기의 헤더를 사용하기 때문에 헤더 길이 정보가 빠지는 등, IPv4보다 헤더 구성이 단순해졌다. 그림엔 표현이 안되어있지만 확장헤더를 통해 네트워크 기능에 대한 확장 및 옵션기능의 확장이 용이한 구조를 가지고 있기도 하다.

  • 버전 : 마찬가지로 IP 프로토콜의 버전을 구분하기 위해 사용한다.
  • Traffic class : IPv4의 서비스 유형과 유사한 역할을 한다.
  • Flow label : 패킷의 흐름을 구분하기 위한 식별용 라벨로, IPv6를 연결 지향형 프로토콜로 사용할 수 있게한다.

IP 주소

라우터가 목적지를 식별하기 위해 사용하는 주소로, 어떤 네트워크의 어떤 컴퓨터인지를 구별할 수 있게 해준다. IP 주소는 인터넷 서비스 제공자인 ISP(Internet Service Provider)에게 받을 수 있다. 국내에선 대표적으로 KT, SKT, LG유플러스 등이 있다.

IP 프로토콜 버전

  • IPv4 주소 : 32비트로 구성되어 있어 약 43억개의 주소를 만들 수 있다.
  • IPv6 주소 : 128비트로 되어있다, 인터넷이 널리 보급되면서 IPv4만으로는 할당할 수 있는 주소가 부족해지는 문제가 생겼기 때문에 대안으로 등장했다.

공인 IP 주소와 사설 IP 주소

  • 공인 IP : ISP에서 제공하는 주소 (세상에 딱 하나뿐인 고유한 주소)
  • 사설 IP : 하나의 네트워크 내부에서 사용하는 주소 (내부망 전용 주소)

이 세상에 존재하는 모든 컴퓨터에게 서로 다른 공인 IP를 할당하면 IPv4로 사용할 수 있는 주소가 빠르게 고갈될 것이다. 때문에 라우터에만 공인 IP 주소를 할당하고, 동일한 LAN 에 연결된 장치들엔 사설 IP 주소를 할당한다. 사설 IP 주소는 네트워크 관리자가 자유롭게 할당하거나 라우터의 DHCP(IP 주소를 자동 할당하는 프로토콜) 기능을 사용해 주소를 자동으로 할당한다.

윈도우에서 이런식으로 고정 IP 설정을 할 수 있다

IP 주소의 구성

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

  • 네트워크 ID : 어떤 네트워크인지 나타내는 식별자
  • 호스트 ID : 해당 네트워크의 어떤 컴퓨터인지를 나타낸다.

클래스(Class)

IP 주소에서 네트워크 ID와 호스트 ID 중 어느 쪽의 길이를 더 길게 하는지 결정하느냐에 따라 네트워크 크기를 조정할 수 있다. 이를 클래스라는 개념으로 구분한다. A~E까지 존재하지만 일반적인 네트워크에서는 A~C까지 사용된다.

  • A 클래스 : 대규모 네트워크 주소
  • B 클래스 : 중형 네트워크 주소
  • C 클래스 : 소규모 네트워크 주소
  • D 클래스 : 멀티캐스트 주소 (멀티캐스트는 한 컴퓨터에서 패킷을 특정한 여러 컴퓨터로 동시에 전송하는 것)
  • E 클래스 : 연구 및 특수 용도의 주소

A Class

처음 8비트가 네트워크 ID, 나머지 24비트가 호스트 ID가 된다.

  네트워크 ID 호스트 ID 호스트 ID 호스트 ID
최소 00000001 00000000 00000000 00000000
최대 01111111 11111111 11111111 11111111
  • A 클래스의 주소 범위를 10진수로 변형하면 1.0.0.0 ~ 127.255.255.255가 된다.
  • 처음 8비트의 범위는 10진수로 1~127까지 표현 가능하다.

B Class

처음 16비트가 네트워크 ID, 나머지 16비트가 호스트 ID가 된다.

  네트워크 ID 네트워크 ID 호스트 ID 호스트 ID
최소 10000000 00000000 00000000 00000000
최대 10111111 11111111 11111111 11111111
  • B 클래스의 주소 범위를 10진수로 변형하면 128.0.0.0 ~ 191.255.255.255가 된다.
  • 처음 8비트의 범위는 10진수로 128 ~ 191이 된다.

C Class

처음 24비트가 네트워크 ID, 나머지 8비트가 호스트 ID가 된다.

  네트워크 ID 네트워크 ID 네트워크 ID 호스트 ID
최소 11000000 00000000 00000000 00000000
최대 11011111 11111111 11111111 11111111
  • C 클래스의 주소 범위를 10진수로 변형하면 128.0.0.0 ~ 191.255.255.255가 된다.
  • 처음 8비트의 범위는 10진수로 192 ~ 223이 된다.

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

사설 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

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

이 두 주소는 특별한 의미를 가지는 IP 주소로, 컴퓨터나 라우터가 자신의 IP로 사용할 수 없는 주소다.

  • 네트워크 주소 : 호스트 ID가 10진수로 0(2진수로는 00000000)인 주소 -> 192.168.1.0
    • 전체 네트워크에서 작은 네트워크를 식별할 때 사용한다. 즉, 전체 네트워크를 대표하는 주소다.
  • 브로드캐스트 주소 : 호스트 ID가 10진수로 255(2진수로는 11111111)인 주소 -> 192.168.1.255
    • 브로드캐스트는 네트워크에 있는 모든 컴퓨터에 한번에 데이터를 전송하는 방식이다. 브로드캐스트 주소는 브로드캐스트를 위한 전용 주소다.

서브넷 (Subnet)

A 클래스에서는 호스트를 식별하기 위해 최대 2^24개의 호스트 ID를 사용할 수 있다. 네트워크 안에 있는 수많은 컴퓨터가 브로드캐스트 패킷을 전송하면 네트워크가 혼잡해질 것이다. 따라서 A 클래스의 대규모 네트워크를 작은 네트워크로 분할해 브로드캐스트로 전송되는 패킷 범위를 좁힐 수 있다. 이렇게하면 IP 주소를 더 효과적으로 활용할 수 있다. 이렇게 네트워크를 분할하는 것을 서브넷팅(subneting)이라 하고, 분할된 네트워크 하나하나를 서브넷(subnet)이라고 한다.


A 클래스 네트워크에 서브넷팅을 적용하면 기존에 네트워크 ID, 호스트 ID로만 구성되어 있던 IP에 서브넷을 식별하기 위한 정보가 추가로 필요하다. 따라서 IP 주소는 네트워크 ID, 서브넷 ID, 호스트 ID로 나뉘게 된다.

 

서브넷팅 전

  네트워크 ID 네트워크 ID 호스트 ID 호스트 ID
최소 10000000 00000000 00000000 00000000
최대 10111111 11111111 11111111 11111111

서브넷팅 후

호스트 ID의 24비트중 일부를 떼어서 서브넷 ID로 사용한다.

  네트워크 ID 서브넷 ID(10 bit) 호스트 ID 호스트 ID
최소 10000000 00000000 00 000000 00000000
최대 10111111 11111111 11111111 11111111
  • 서브넷 마스크(subnet mask) : IP 주소에서 어디까지가 네트워크 ID고, 어디까지가 호스트 ID인지 판단하기 어려울 때가 있다. 네트워크 ID와 호스트 ID를 식별하기 위해 서브넷 마스크라는 값을 사용한다. 호스트 ID를 0으로, 네트워크 ID를 1로 표시한다. 예를들어 C 클래스는 앞의 24비트가 네트워크 ID이므로 서브넷 마스크는 255.255.255.0가 된다.
  • 프리픽스(prefix) 표기법 : 서브넷 마스크를 /1 비트 갯수 형식으로 나타내는 표기법이다. C 클래스의 서브넷 마스크인 인 255.255.255.0를 프리픽스 표기법으로 나타내면 /24가 된다. (앞의 24비트가 네트워크 ID라는 의미)
    • 만약 C 클래스에서 네트워크 ID를 28비트로 변경하면, 4비트를 호스트 ID에서 떼와야 한다. 그러면 네트워크 ID가 24비트, 서브넷 ID 4비트, 호스트 ID가 4비트가 된다. 마지막 8비트는 00000000 -> 1111 0000이 되므로 서브넷 마스크는 255.255.255.240, 프리픽스 표기법으로는 /28이 된다.

게이트웨이

라우터는 위에서도 설명했지만, 서로 다른 네트워크와 통신하기 위해 필요한 물리적인 장치다. 라우터는 서브넷 단위로 네트워크를 분리할 수 있다. (스위치나 허브는 네트워크 분리 못함)

컴퓨터가 다른 네트워크의 컴퓨터로 데이터를 전송하고자 할때, 다른 네트워크를 목적지로 데이터를 전송하기 위해 일단은 라우터로 데이터를 전송한다. 이를 위해 라우터의 IP 주소를 설정하는 것을 기본 게이트웨이(default gateway)라고 한다. 즉, 게이트웨이는 서로 다른 네트워크로 이동하기 위한 출입문 정도로 생각하면 된다.

이제 ipconfig 쳤을 때 나오는 용어들이 무슨 의미인지 알겠쥬?

References