네트워크/OSI Layers

OSI 3 계층 네트워크 계층 (Network Layer) 알아보기

Jake Seo 2022. 9. 5. 21:52

1계층과 2계층 복습하기

3계층인 네트워크 계층을 알아보기 전에 1계층과 2계층에서 무슨 일을 했었는지 확실히 복습해보자.

1계층 (물리 계층)

1계층물리 계층이었고, 핵심적인 역할은 디지털 신호를 아날로그 신호(전기 신호)로 변환하거나 아날로그 신호(전기 신호)를 디지털 신호로 변환해주었다. 기본적으로는 1:1 통신을 지원하지만, 더미 허브를 통해 정확히 신호를 어디로 전달할지 몰라도, 브로드 캐스팅 방식으로 연결된 모든 컴퓨터에 신호를 전달할 수 있었다.

2계층 (데이터 링크 계층)

2계층데이터 링크 계층이었고, 핵심적인 역할은 MAC 주소 테이블을 가지고 있으며, MAC 주소를 통해 특정 노드를 목적지로 갖는 통신이 가능했다. MAC 주소를 통해 통신을 하면, 주소를 모르고 무작정 보내는 것보다 훨씬 통신 효율이 좋다. 만일 연결지 컴퓨터의 MAC 주소가 테이블에 등록되어 있지 않다면, 연결된 모든 컴퓨터에 신호를 보내는 플러딩(flooding) 이라는 행위를 통해 연결된 컴퓨터들의 MAC 주소를 MAC 주소 테이블에 등록했다.

3계층인 네트워크 계층에서는?

서로 다른 네트워크에 있는 목적지로 데이터를 전송할 수 있도록 도와준다.

그렇다면 서로 다른 네트워크 란 무엇을 말하는 것일까? 네트워크란 말 자체가 워낙 포괄적인 의미가 있지만, 여기서는 2계층을 공부할 때 배웠던 스위치로 연결된 컴퓨터들의 집합을 1개의 네트워크 라고 하자.

2계층인 데이터링크 계층은 MAC 주소를 이용하여 스위치에 등록된 컴퓨터에게 데이터를 보낼 수 있었다. 그런데 다른 스위치에 등록된 컴퓨터에겐 어떻게 데이터를 보내야 할까?

다른 스위치의 주소를 알고 싶다!

라우터의 등장

다른 스위치(네트워크)에 있는 컴퓨터에 데이터를 보내기 위해서는 라우터라는 네트워크 장비가 필요하다. 또한 다른 네트워크에 존재하는 컴퓨터에 데이터를 보내려면 IP 주소 라는 것을 알고 있어야 한다.

IP주소는 네트워크 상에서 컴퓨터를 구분하는 컴퓨터의 고유(unique)한 주소이다.

라우터가 하는 일은?

라우터는 네트워크간 통신이 일어날 때, 해당 목적지까지 가는 경로에 대해 안내해준다. 이를 라우팅이라 한다. 또 스위치에게 MAC주소 테이블이 있었다면, 라우터에게는 라우팅 테이블이 있어서, 여기에 경로 정보를 등록하고 관리한다.

L3 스위치도 라우터의 역할을 할 수 있다.

3계층에서 처음 등장한 개념 IP

IP란, 네트워크 상에서 컴퓨터가 가지는 고유한 주소이다. 네트워크 계층에서는 캡슐화 시에 IP 헤더를 붙인다.

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

IP 헤더

IP 헤더가 데이터에 추가되면, 위와 같은 데이터 구조를 갖게 되고, 그 형태를 IP 패킷 이라고 부른다.

IPv4 vs IPv6

IP에도 버전이 있다. v4는 32비트로 된 아이피이며, v6는 128비트로 된 아이피이다.

처음에는 IPv4로도 충분히 모든 컴퓨터에 IP를 할당할 수 있다고 믿었지만, 현대에 들어서서 IP 개수가 모자라는 현상이 발생하여, IPv6가 나왔다.

공인 IP와 사설 IP

공인 IP는 인터넷 서비스 제공자(ISP)가 제공하는 IP주소이며, 사설 IP는 같은 네트워크 내부에서 사용하는 내부 IP이다.

네트워크 내부에서는 라우터가 제공하는 DHCP(Dynamic Host Configuration Protocol) 기능을 사용하여 주소를 자동으로 할당하고 있다.

IP 주소 체계

우리가 일반적으로 IP 주소를 볼때는 53.111.32.15 와 같은 형식으로 10진수인것처럼 이해하기 쉽지만, 컴퓨터 내부적으로는 2진수로 본다. 8비트(10진수로 0~255) 4개가 모여서 총 32개의 비트가 모인것이다.

IPv6는 총 128비트이다. IPv6는 16비트의 집합이 8개 모인 것이다. IPv4에서 IPv6로 바뀌며 위에 기재된 복잡한 헤더에서 불필요한 필드들을 제거했으며, 보안, 주소 설정 등에서도 개선이 있었다.

IPv6의 주소체계에 대한 정보는 해당 링크에서 볼 수 있으며, 주소체계 외에도 구조, 등장, 통신방식 등에 대한 정보도 볼 수 있다.

네트워크 ID와 호스트 ID

IP주소는 겉보기엔 그냥 8비트가 4개 모여 32비트의 2진수 숫자가 모인 것이지만, 내부적으로는 네트워크 ID와 호스트 ID라는 것이 존재한다. 이 네트워크 ID와 호스트 ID는 IP 주소 클래스에 따라 다르다. IP 주소 클래스는 아래에서 설명한다.

IP 주소의 클래스

IP 주소는 A~E 클래스까지 클래스가 존재한다.

  • A클래스는 대규모 네트워크 주소이다.
    • 앞의 8비트는 네트워크 ID로 사용된다.
    • 뒤의 24비트는 호스트 ID로 사용된다.
  • B클래스는 중형 네트워크 주소이다.
    • 앞의 16비트는 네트워크 ID로 사용된다.
    • 뒤의 24비트는 호스트 ID로 사용된다.
  • C클래스는 소규모 네트워크 주소이다.
    • 앞의 24비트는 네트워크 ID로 사용된다.
    • 뒤의 8비트는 호스트 ID로 사용된다.
  • D클래스는 멀티캐스트 주소이다.
  • E클래스는 연구 및 특수용도 주소이다.

위와 같이 네트워크 주소와 호스트 주소가 나뉘기 때문에 호스트 수에 제한이 있는데, A클래스가 1677만 7214대, B클래스가 6만 5534대, C클래스가 254대이다.

  • A, B, C 클래스는 IP 가장 앞의 8비트에서 결정된다.
    • A 클래스는 맨 앞자리가 0이다.
      • 0000 0000(0) ~ 0111 1111(127) 까지
    • B 클래스는 맨 앞자리가 10이다.
      • 1000 0000(128) ~ 1011 1111(191) 까지
    • C 클래스는 맨 앞자리가 110이다.
      • 1100 0000(192) ~ 1101 1111(223) 까지
    • D 클래스는 맨 앞자리가 1110이다.
      • 1110 0000(224) ~ 1110 1111(239) 까지
    • E 클래스는 맨 앞자리가 1111이다.
      • 1111 0000(240) ~ 1111 1111(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.255
      • 192.169.0.0 ~ 223.255.255.255
  • 사설 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

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

네트워크 주소와 브로드캐스트 주소는 특수한 역할이 있어 개인 컴퓨터에게 할당할 수 없는 주소이다.

클래스로 예약된 비트 외에 모든 비트가 0인 경우 네트워크 주소이다.
ex) A 클래스에서 0000 0000 는 A 클래스의 네트워크 주소이다.
클래스로 예약된 비트 외에 모든 비트가 1인 경우 브로드캐스트 주소이다.
ex) A 클래스에서 0111 1111 은 A 클래스의 브로드캐스트 주소이다.

네트워크 주소

네트워크 주소는 작은 그룹의 네트워크 단위를 식별하기 위해 사용되는 IP주소이다. 이를테면 192.168.0.0 ~ 192.168.0.255 까지의 호스트 범위에서, 이 전체를 대표하기 위한 네트워크 주소는 192.168.0.0이다.

브로드캐스트 주소

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

이를테면 C클래스의 경우 24비트가 네트워크 ID이며 8비트가 호스트 ID이다. 11111111255이므로, 192.168.0.0 ~ 192.168.0.255의 호스트 범위에서 192.168.0.255가 브로드캐스트 주소가 된다.

서브넷이란?

IP 주소 클래스 단위보다 더 작은 단위로 분할된 네트워크를 말한다.

AWS 와 같은 클라우드 서비스에서는 VPC (Virtual Private Cloud) 를 통해 사용할 사설 IP 대역을 나누고, VPC 내부의 IP 대역을 다시 한번 서브넷이라는 개념으로 나눈다.

서브넷팅

네트워크를 분할하는 행위 자체를 서브넷팅(subneting) 이라 하며, 분할된 네트워크를 서브넷(subnet) 이라 한다.

서브넷팅의 필요성

대규모 네트워크에서는 브로드캐스트 패킷 등의 전송 시에 네트워크가 복잡해지며 커다란 혼란을 가져올 수 있다. 목적에 맞는 더 작은 단위로 만들어 편리하게 이용하기 위해 서브넷팅을 한다.

이를테면, 인터넷망과 통신하는 서브넷, 인터넷망과 통신하지 않는 서브넷, 외부 접근용 서브넷 등을 나눌 수 있다.

A클래스의 서브넷팅 예제

서브넷팅 전

네트워크 ID: 0000 0001
호스트 ID: 0000 0000 0000 0000 0000 0000

서브넷팅 후

네트워크 ID: 0000 0001
서브넷 ID: 0000 0000 00 (/18)
호스트 ID: 00 0000 0000 0000

기존과 비트 수는 변하지 않았지만, 18 개의 비트를 서브넷 ID를 위해 떼어놓았다. 서브넷 ID는 기존에 호스트 ID의 비트였던 것을 빌려서 만든다.

서브넷 마스크

서브넷 마스크는 위에서 언급된 네트워크 ID, 서브넷 ID, 호스트 ID를 구분하기 위한 방법이다. 네트워크 ID + 서브넷 ID의 범위를 서브넷 마스크로 지정한다.

서브넷 마스크는 해당 범위를 1로 채우면 된다.

아까 위의 서브넷팅을 한 경우를 예로 들면, 18 개의 비트를 1로 채우면 서브넷 마스크가 된다.

서브넷팅을 적용하지 않은 경우의 서브넷 마스크

이를테면 C클래스에서 서브넷팅을 적용하지 않은 경우에는 서브넷 마스크는 자연스레 255.255.255.0이 된다. 왜냐하면 호스트 ID가 온전히 호스트 ID로서만 쓰이기 때문이다.

같은 원리로 A 클래스네트워크 주소를 8비트만 사용하므로 255.0.0.0 이 되고, B 클래스는 네트워크 주소를 16비트만 사용하므로, 255.255.0.0 이 되는 것이다.

서브넷팅을 적용한 경우의 서브넷 마스크

그래서 네트워크 ID + 서브넷 ID의 범위를 해도 결과는 네트워크 ID만 나오기 때문에, C클래스 앞의 24비트를 그대로 1로 채우면 11111111 11111111 11111111 00000000 = 255.255.255.0이 되기 때문이다.

그런데 만일 C클래스에서 호스트 ID4비트서브넷 ID로 지정하면, 서브넷 마스크는 11111111 11111111 11111111 11110000 = 255.255.255.240이 된다.

서브넷 마스크의 프리픽스 표기법 (CIDR)

서브넷 마스크(네트워크 ID + 서브넷 ID)를 단순히 1의 숫자로 표기하는 방법이다. 위에서 C클래스의 호스트 ID4비트서브넷 ID로 지정한 케이스를 프리픽스 표기법으로 나타내면 /28로 나타낼 수 있다.

이는 CIDR 이라는 개념으로 VPC 에서 서브넷을 구축할 때 많이 쓰인다.

라우터의 필요성

라우터는 위에 설명했듯, 스위치로 연결된 서로 다른 네트워크들이 통신하는데 필요한 장비이다. 스위치는 아무리 붙여도 동일한 네트워크에 존재하게 되는 반면, 라우터에 스위치를 연결하게 되면 비로소 서로 다른 네트워크에 존재하게 되는 것이다.

스위치에 다른 스위치를 연결한 경우

L2의 역할만 하기 때문에 같은 네트워크에 존재하게 된다.

오직 MAC 주소만으로 분간이 될 것이다.

스위치에 라우터를 연결한 경우

네트워크를 구분하는 네트워크 ID가 다른 것을 볼 수 있다. 왼쪽 스위치의 네트워크 ID192.168.0 이며 오른쪽 스위치의 네트워크 ID192.168.1 이다.

VPC 를 구축할 때 이를 서브넷팅이라고도 한다.

라우터에서 게이트웨이의 주소

게이트웨이란 해당 네트워크를 출입할 수 있는 출입구와 같은 역할을 한다. 일반적으로 해당 대역의 1호스트 ID라우터의 IP 주소가 게이트웨이 주소가 된다.

위와 같은 원리로 공유기에서 보통 192.168.0.1이 공유기 서버에 접속하는 주소이다. 일반적인 라우터에서 포트 수를 줄이고 NAT(Network Address Translation)이라 불리는 주소 변경 기능을 추가한 것이 공유기이다.

라우팅이란?

경로 정보를 기반으로 최적의 경로를 통해 데이터를 전송하는 것을 말한다. 이 과정에서 경로 정보가 등록된 테이블을 이용하는데 이를 라우팅 테이블이라 한다.

라우팅 테이블에는 각종 네트워크 ID들이 등록되어 있다. 192.168.1.0/24, 192.168.2.0/24, 192.168.3.0/24과 같은 정보가 등록되어 있을 것이다.

라우팅 테이블은 수동으로도 등록 가능하고, 자동으로도 등록 가능하다.

라우터는 라우팅 프로토콜이라는 통신 규약을 이용하여 라우팅 정보를 교환한다. 라우팅 프로토콜은 RIP, OSPF, BGP 등이 있다.

네트워크 계층 정리

네트워크 계층을 이해하기 위해 복잡한 많은 것들을 배웠지만 결국은 그냥 목적지 IP 주소에 데이터를 넘겨주기 위해 경로 검색(라우팅)을 통해 찾은 다음 라우터에게 내 데이터를 넘겨주는(forwarding) 것을 반복하여 해당 네트워크에 방문하고, 목적지 IP에 내 데이터를 넘겨주는 역할을 하는 계층이다.

여태까지 학습하며, 최초로 IP 라는 개념이 사용된 계층이기도 하다.

네트워크 계층이 구현된 곳

운영체제의 커널에 소프트웨어적으로 구현되어 있다.

레퍼런스

[10분 테코톡] 히히의 OSI 7 Layer > 모두의 네트워크

반응형