OSI 7계층 시리즈 #3 네트워크 계층

Jake Seo·2021년 6월 15일
1

네트워크

목록 보기
13/16

네트워크 계층에서는?

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

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

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

라우터의 등장

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

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

라우터가 하는 일은?

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

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

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진수인것처럼 이해하기 쉽지만, 컴퓨터 내부적으로는 8비트 4개가 모여서 총 32개의 비트가 모인것이다. IPv4(2의 4승)라는 이름을 생각해보면 더 이해가 쉽다.

IPv6는 2의 6승이므로 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 클래스는 00000001(1) ~ 01111111(127) 까지
    • B 클래스는 10000000(128) ~ 10111111(191) 까지
    • C 클래스는 11000000(192) ~ 11011111(223) 까지
  • 공인 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를 제외한 남는 구간이다.
    • 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주소이다. 이를테면 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 주소 클래스 단위보다 더 작은 단위로 분할된 네트워크를 말한다.

서브넷팅

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

서브넷팅의 필요성

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

A클래스의 서브넷팅 예제

서브넷팅 전

네트워크 ID: 00000001
호스트 ID: 00000000 00000000 00000000

서브넷팅 후

네트워크 ID: 00000001
서브넷 ID: 00000000 00
호스트 ID: 000000 00000000

기존과 비트 수는 변하지 않았지만, 일정 부분의 비트를 서브넷 ID에 떼어주었다. 서브넷 ID는 호스트 ID의 비트를 빌려서 만든다.

서브넷 마스크

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

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

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

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

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

그래서 네트워크 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이 된다.

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

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

라우터의 필요성

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

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

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

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

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

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

게이트웨이란 해당 네트워크를 출입할 수 있는 출입구와 같은 역할을 한다. 일반적으로 해당 대역의 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에 내 데이터를 넘겨주는 역할을 하는 계층이다.

네트워크 계층이 구현된 곳

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

레퍼런스

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

profile
풀스택 웹개발자로 일하고 있는 Jake Seo입니다. 주로 Jake Seo라는 닉네임을 많이 씁니다. 프론트엔드: Javascript, React 백엔드: Spring Framework에 관심이 있습니다.

0개의 댓글