[Network] 네트워크 계층

DudeKYH·2024년 9월 12일
0

Network

목록 보기
6/8
  • OSI 7계층 중 3번째에 위치한 계층이다.
  • 네트워크의 핵심인 라우팅(데이터가 가야 할 길을 찾는 기능)의 대부분이 3계층인 네트워크 계층에서 작동합니다.
  • 이 계층은 여러 대의 라우터들을 바탕으로 데이터를 패킷 단위로 잘게 쪼개어 전송하는 층위에 해당합니다. 데이터가 전송될 수 있는 수 많은 경우의 수 중 가장 효율적인 라우팅이 방법을 찾는 것 또한 이 단계에서 가능해집니다.

데이터 링크 계층에 대해 다시 간단하게 상기해보자

  • 데이터 링크 계층은 OSI 계층 중 2번째에 위치해 있다.

  • LAN 환경에서 L2 Switch에 연결되어 있는 여러 Host들은 이더넷 프로토콜을 사용하여 MAC Address가 담긴 Frame 단위의 데이터로 서로 통신하게 있다.

  • 그리고 여러 LAN 통신망들이 뭉쳐서 구성한 더 큰 통신망을 구성한 것을 WAN 이라고 한다.

이제부터 WAN 환경에서는 어떻게 통신을 주고 받는지 지금부터 네트워크 계층을 살펴보면서 알아보자!


IP Address란?

  • 데이터 링크 계층은 LAN 통신 환경에서 MAC address로 Host를 구별했다.
  • 네트워크 계층WAN 통신 환경에서 IP address로 Host를 구별한다!
  • 따라서, 인터넷에 연결된 모든 컴퓨터나 라우터의 IP 주소는 고유하다.
  • IANA(Internet Assigned Numbers Autority) 에서 전세계 IP 주소를 관리하고 있다.

  • IP Address란?
    • 'Internet Protocol'의 줄임말
    • 인터넷에 연결된 각 Host를 구별하기 위해 사용되는 고유한 주소이다.

    • Internet Protocol란?
      • 인터넷을 통해 데이터를 주고받을 때 사용되는 통신 규약
      • 패킷이라는 데이터 단위로 서로 통신이 가능하게 된다.
      • 밑에서 좀 더 자세히 다뤄보자~

IP Address 형식

  • IP Address는 총 4 Byte(32 bit)로 구성되어 있으며,
    일반적으로 1Byte씩의 값(=Octet)을 10진수로 '.' 으로 구분해서 표기한다. (위 이미지처럼)

  • IP Address는 효율적으로 네트워크 구성하기 위해 Network Address, Host Address 로 2개의 필드로 나눌 수 있다.
    => 이를 통해 우리는 이 IP Address를 총 A, B, C의 클래스로 나눌 수 있다.

    • A Class : 0.0.0.0 ~ 127.255.255.255 ( 규모의 네트워크에 적합)
      • Network Address : 1 Octet => 126 개의 네트워크
      • Host Address : 2 ~ 4 Octer => 16,777,214 개의 호스트
    • B Class : 128.0.0.0 ~ 191.255.255 (중간 규모의 네트워크에 적합)
      • Network Address : 1 ~ 2 Octet => 16,384 개의 네트워크
      • Host Address : 3 ~ 4 Octer => 65,534 개의 호스트
    • C Class : 192.0.0.0- ~ 223.255.255.255 ( 규모의 네트워크에 적합)
      • Network Address : 1 ~ 3 Octet => 2,097,152 개의 네트워크
      • Host Address : 4 Octet => 254 개의 호스트

    서브넷 마스크의 역할

    그러면 이제 IP Address를 통해 어떻게 통신하는지 알아보자~

    그전에 먼저 서브넷 마스크 라는 것을 알고 넘어가야 한다!


  • 서브넷 마스크란?

    • Subnet + Mask의 합성어로, IP Address를 서브넷 마스크를 통해
      우리는 Network ID 와 Host ID를 알 수 있다.
    • 서브넷(Subnet) : IP address를 더 작은 네트워크로 분할하는 기술
    • 마스크(Mask) : '비트연산을 통해 일부 데이터를 가린다' 라는 의미를 가진다.
  • 서브넷 마스크의 역할

    • 서브넷 마스크 중 '1'로 이루어진 부분을 네트워크 ID, '0'인 부분을 호스트 ID인 것을 알 수 있다.
    • 서브넷 마스크가 255.255.255.0이고 IP 주소가 192.168.123.132라 가정해보자
    • IP 주소를 서브넷 마스크로 AND 연산을 해주면 네트워크 ID가 192.168.123.000 인 것과 나머지 부분이 132가 호스트 ID인 것을 알 수 있다.

패킷(Packet)의 구조

  • IP 계층은 패킷이라는 단위로 데이터를 송수신한다.
  • 패킷(Packet)은 Header(20Byte) + Data + Option으로 구성된다.

1) Version (4bit)

  • 패킷의 IP Version을 나타낸다.
  • IPv4 : 0100, IPv6 : 0110

2) Header length (4bit)

  • IP Header의 길이를 4Byte 단위로 나타낸다.
  • 보통 헤더의 길이가 20Byte이므로 4Byte 단위로 0101이 담긴다.

3) Type of service (8bit)

  • 패킷의 우선순위를 정의한다.
  • 더 이상 사용되지 않아 신경 쓰지 않아도 된다.

4) Total length (16bit)
-패킷(IP header + Payload)의 길이를 Byte 단위로 나타낸다.

  • Total length - Header length를 통해 Payload의 길이를 알 수 있다.

5) Identification (16bit) / Flag (3bit) / Fragment Offset (13bit)

  • 패킷이 단편화가 가능하기 위해서 위 3가지의 헤더 정보가 담기게 된다.

  • MTU를 초과하였을 때, 여러 패킷으로 단편화를 진행하게 되는데,
    이때 패킷에 분할 정보를 Identification / Flag / Fragment Offset에 담게 된다

    • Identification (16bit)
      • 단편화된 패킷들을 재조합할 때, 식별하기 위한 용도로 사용한다.
    • Flag (3bit)
      • 패킷이 단편화되었는지 아닌지를 알려주는 역할을 한다.
      • 1번째 bit : 예약되어 있는 bit로 일반적으로 사용하지 않는다. (항상 0)
      • 2번째 bit : 패킷의 단편화 유무를 알려준다 (단편화 : 0, 단편화X : 1)
      • 3번째 bit : 분할된 패킷이 더 있는지를 알려준다. (마지막 패킷 : 0, 뒤에 더 있다 : 1)
    • Fragment Offset (13bit)
      • 패킷 재조립 시, 분할된 패킷 간의 순서에 대한 정보가 담겨 있다.
      • 분할된 패킷의 상대 위치를 8 Byte 단위로 나타낸다.
        따라서, Fragment Offset * 8 한 값이 패킷의 삽입 위치가 된다.

    MTU 란?

    • 'Maximum Transmission Unit' 의 줄임말로
      하나의 패킷으로 운반 가능한 최대 크기를 나타낸다.
    • IP Header와 Payload를 합친 크기로, 보통 1500 Byte로 정해져 있다.

6) Time to Live (8bit)

  • 패킷이 경유할 수 있는 최대 홉 수를 나타낸다.
  • 라우터를 통과할 때마다 TTL 값은 1씩 감소하게 되고, 0이 되면 패킷은 자동으로 폐기된다.
  • 이로 인해, 부정확한 패킷들이 네트워크 환경에서 무기한 순환되는 상황을 방지할 수 있게 된다.

7) Protocol (8bit)

  • 상위 계층인 전송 계층의 프로토콜을 나타낸다.
  • 예로, ICMP : 0x01, TCP : 0x06, UDP : 0x11

8) Header Checksum (16bit)

  • 패킷 헤더의 오류 발생 여부를 확인하기 위해 송신측에서 계산한 헤더의 체크섬을 담고 있다.

9) Source IP Address (32bit)

  • 출발지 IP 주소를 나타낸다.

10) Destination Ip Address (32bit)

  • 도착지 IP 주소를 나타낸다.

13) Option

  • 특수한 처리 옵션이 들어갈 수 있는 필드
  • 옵션 필드가 추가되는 경우, 4Byte 단위로 부족한 공간은 Padding으로 채워넣는다.

라우팅

라우팅이란?

  • 패킷에 포함된 주소 등의 상세 정보를 이용하여 목적지까지 데이터 또는 메시지를 체계적으로 다른 네트워크에 전달하는 경로 선택 그리고 스위칭하는 과정을 의미한다.
  • 쉽게 말해서, 데이터를 출발지부터 목적지까지 빠르고 정확한 길을 찾아 효율적으로 전달해주는 프로토콜이다.

위 이미지를 보면 A, B, C라는 라우터와 각 라우터가 가지고 있는 라우팅 테이블을 볼 수 있다.

1. 라우터

  • 네트워크 간의 패킷을 전송해주는 네트워크 장비이다.
  • 라우터는 라우팅 프로토콜을 통해 효율적인 경로로 목적기까지 데이터를 전달해주게 된다.

  • 라우터마다 LAN(근거리 통신망)을 이루고 있다.

2. 라우팅 테이블

  • 목적지 IP 까지 갈 수 있는 모든 경로들 중에서 가장 효율적이라고 생각하는 경로 정보를 라우터는
    라우팅 테이블에 따로 저장하여 보관하고 있다.

  • 라우팅 테이블이 어떤 정보들을 저장하고 있냐면,
    1) Destination IP : 최종 목적지 IP를 나타낸다.
    2) Next-Hop Interface : 목적지 IP에 가기 위한 라우터의 출구 Port에 대한 정보
    3) Distance : 목적지 라우팅을 위한 Matric 정보
    - 보통 6개 정도까지의 최적 루트를 계산해내며, 이들 사이에 트래픽을 로드 밸런싱한다.
    - 비용이 가장 적게 소요되는 기준값을 최적 경로로 저장
    4) Matric(=Cost) : 최적 경로 서열 값

  • 라우터가 바로 연결되어 있는 네트워크는 라우팅 테이블에 그대로 저장하면 되는데,
    원격 네트워크의 경우에는 어떻게 저장하는가?

    • 1) 정적 경로 : 네트워크 관리자가 직접 수동으로 입력
      • 구성이 간단하고, 원하는 경로로 패킷을 전달할 수 있다.
      • 단일 경로에 적합하다.
      • 관리 부담의 증가 및 경로 장애 발생 시엔 라우팅이 불가능하다.
    • 2) 동적 경로 : 라우팅 프로토콜에 의해 자동 계산
      • 장비가 자동으로 경로를 지정한다.
      • 네트워크 변화를 인지하여 경로를 재구성한다.
      • 다중경로 네트워크에 적합
  • 라우터들은 이웃 라우터끼리 지속적으로 라우팅 테이블 정보를 주고 받으며,
    각 라우터는 자신의 라우팅 테이블을 갱신한다.

  • 자신의 컴퓨터의 라우팅 테이블의 데이터를 보고 싶다면
    cmd에서 route print 명령어로 볼 수 있다!

3. 게이트웨이 (Gateway)

  • 한 네트워크에서 다른 네트워크로 이동하기 위하여 거쳐야 하는 지점
  • 다시 말해, 서로 다른 네트워크 프로토콜을 사용하는 경우 게이트웨이를 통해 외부 네트워크로 전달된다.
  • 보통 자신의 네트워크 ID + 1번으로 하여 기본 설정되어 있다.
    Ex) 내 IP : 192.168.132.32 이고, 서브넷 마스크가 255.255.255.0 인 경우,
    내 게이트웨이는 192.168.132.1이다.

예시를 통해 라우팅하는 과정을 좀 더 자세히 알아보자

위 이미지는 출발지인 PC_A(192.168.10.1) 가 패킷을 목적지인 PC_D(192.168.40.4)로 송신하는 과정이다.

1) 192.168.10.1의 네트워크 내엔 목적지의 (192.168.40.4)을 찾을 수 없어
자신의 라우팅 테이블을 확인하여 자신의 게이트웨이(192.168.10.254)로 전달되어 Router#1에 도착한다.

2) Router#1의 라우팅 테이블을 조회해보니 Router#2에 목적지 네트워크가 존재하는 것을 확인하여
Router#1의 게이트웨이(192.168.20.253)로 전달을 시작하고 Router#2는 (192.168.20.254)로 받게 된다.

3) Router#2는 받은 패킷의 목적지 IP 주소가 자신의 네트워크 내 존재하는 것을 확인하여 PC_D(192.168.40.4)까지 그대로 전달해준다.


IP 할당 방식 : Static, DHCP

1. Static 방식

  • 사용자가 직접 IP, 서브넷마스크, 게이트웨이, DNS 주소 입력하여 할당하는 방식이다.
  • 네트워크 내 호스트가 많아질수록 네트워크 관리 난이도가 올라간다는 단점이 있다.

2. DHCP(Dynamic Host Configuration Protocol) 방식

  • 호스트의 IP 주소, 서브넷마스크, 게이트웨이, DNS 주소를 자동으로 할당해주는 기능이다.
  • 통상적으로 라우터가 DHCP 서버 역할을 수행하고 있다.

<DHCP 동작 원리> : DORA 라는 4가지 과정이 존재한다.

  • D : Discover => Client가 DHCP 서버를 찾는다.
  • O : Offer => DHCP 서버가 Client에게 자신이 DHCP 서버라고 알린다.
  • R : Request => Client는 DHCP 서버에게 자신이 필요한 정보를 요청한다.
  • A : Ack => DHCP 서버는 요청한 정보를 제공해준다.

ARP 프로토콜

  • 아까 우리는 위 이미지를 통해 WAN 환경에서 데이터가 어떻게 전달되는지 살펴보았다.
    그리고 방금 DHCP로 인하여 IP들이 동적할당된다는 것도 알았다.

  • 여기서 우리는 중요한 부분을 짚고 넘어가야 한다. IP 주소는 정적이지 않고 변한다는 것에!!!

  • PC_D의 IP가 192.168.40.4가 아닌 192.168.40.10으로 DHCP 서버로 인해 변경이 되었다고 가정하자

    • 이제 PC_A가 보낸 데이터는 누구에게 가는가?

    • 쉽게 생각하면, PC_A의 목적지(IP 주소)인 192.168.40.4 가 없으니 패킷은 폐기가 될 것 같지 않나?

    • 하지만, 그렇지 않다. 여전히 PC_D에게 안전하게 전달이 된다!

    • 우리는 데이터 링크 계층에는 네트워크 기기마다 고유한 MAC 주소라는 것이 있다는 것을 알고 있다.

    • PC_D의 MAC 주소는 전달되는 데이터 속에 있는 Frame Header의 목적지 Mac Address에 잘 적혀있을 것이기 때문에 데이터는 PC_D로 도착할 수 있을 것이라는 생각이 들 것이다!!!!

    • 실제로 위 역할은 RARP 프로토콜이 제공해준다!!!

  • 그러면 위 상황을 가능하게 해준 ARP 프로토콜에 대해 자세히 알아보자!

ARP 프로토콜이란?

  • 'Address Resolution Protocol'의 줄임말로, 말 그래도 주소 결정 프로토콜을 의미한다.
  • IP 주소에 대응되는 물리적 주소(MAC Address)를 가지고 오는 프로토콜이다.
  • RARP : ARP와 반대로 해당 MAC 주소에 대응되는 IP 주소를 알아노는 프로토콜이다.

ARP Table

  • 매번 ARP 프로토콜을 통해 MAC 주소를 알아내기엔 너무 부담스럽기 때문에
    따로 ARP Table에 IP 주소와 대응되는 MAC 주소라는 정보들을 저장하게 된다.

ARP 프로토콜 과정

  • 1) ARP 테이블에 목적지 MAC 주소가 없다면 다음 과정이 수행된다.
  • 2) 송신자는 목적지 MAC 주소가 필요하므로 ARP 요청 패킷을 브로드캐스트로 전송한다.
  • 3) 모든 호스트와 라우터는 APR 요청 패킷을 수신한다.
  • 4) 요청한 MAC 주소를 가진 수신자만 이에 대해 ARP 응답 패킷을 유니캐스트로 전송한다.
  • 5) 송신자는 ARP 응답 패킷을 받고 ARP 테이블에 MAC 주소와 목적지 IP 주소를 추가한다.

브로드캐스트란?

  • LAN 상에 붙어있는(브로드캐스트 도메인 안에 있는) 모든 네트워크 장비들에게 보내는 통신

IP 주소 체계 : 공인 IP, 사설 IP

1. 공인 IP(Public IP)

  • ISP(인터넷 서비스 제공자)에 의해 공인 IP를 발급받을 수 있다.
  • 공인 IP는 전역 네트워크에서 고유한 IP 주소로 사용할 수 있다.

2. 사설 IP(Private IP)

  • 사설 IP는 공유기(=라우터 기능을 제공)에 연결된 네트워크 기기들에 할당한 내부 IP 주소를 의미한다.
  • 사설 IP는 로컬 네트워크 내에서만 유효한 IP 주소이다
    외부 네트워크를 이용할 때, NAT를 통해 라우터의 공인 IP를 가지고 통신할 수 있다.

3. NAT(Network Address Translation) : 네트워크 주소 변환

  • 외부에 노출된 공인 IP와 실제 내부에서 사용되는 사설 IP를 서로 매핑시켜주는 기술을 말한다.
  • 자세한 내용은 전송 계층의 포트 개념을 학습하고 살펴보자

<사설 IP 등장 배경>

  • 궁금한 것이 생겼다. 모든 IP를 공인 IP로 관리하면 더 편하고 좋지 않나?
  • 그러면 좋겠지만,
    전세계의 네트워크 기기의 수가 IP 주소로 표현할 수 있는 최대 개수를 초과해버린지 오래이다.
  • 따라서, 우리는 라우터가 공인 IP를 가지고, 그 내부에서 여러 네트워크 기기를 사설 IPfh 관리하는 형태로 최대한 공인 IP를 아껴쓰는 방식으로 변하게 되었다.

IPv6

  • 지금까지 내가 IP 주소를 말할 때의 기준은 IPv4 주소 체계였다.
  • 하지만 현재 IP는 IPv4뿐만 아니라 IPv6으로도 표현할 수 있다.

<IPv6 등장배경>

  • IPv4의 수요가 증가하면서 IPv4 주소인 32 bit(약 43억개)로는 처리가 어려울 수준까지 올라오게 되었다.
  • 그래서 최근까지는 NAT 기술을 도입하여 사설 IP로 많은 네트워크 기기가 인터넷을 사용할 수 있게 하였다.
  • 하지만, 사람들이 NAT가 IPv4 주소 고갈의 완전한 해결책이 될 수 없다는 것을 깨달았다.
  • 그 예로, 특정 Application들은 NAT 환경에서 작동하지 않을 여지가 있었다.
    실제로 스마트폰의 사용률이 급격하게 증가하던 2011년대 초, 특정 앱들이 NAT 장비에서 동작하지 않는 일들이 발생하기 시작했고,
    이를 해결하기 위해 NAT 장비의 S/W Upgrade를 따로 진행해야 했다.
    • 하지만 NAT 장비들의 Upgrade로 인해 부하 증가는 결국 스마트폰의 품질 저하 문제로 이어지게 되었다!

!!! 따라서, IPv4의 근본적인 문제 해결은 IPv6 방법밖에 없다.


<IPv6 특징>

  • 128 bit로 IP 주소를 표현한다.

  • 기존 A, B, C Class 사용 지양하고, 유니캐스트/애니캐스트/멀티캐스트 주소형태로 사용
    즉, 네트워크 규모 및 단말기 수에 따른 순차적으로 IP 주소를 할당

  • IPv6의 주소 표현 방법

    • 총 128bit를 16bit 단위로 총 8개의 블록을 나누고, 각 블록은 다시 4자리 16진수로 변환되어 :(클론) 구분한다.
    • Ex) FE80:CD00:0000:0CDE:1257:0000:211E:729C
  • 새로운 Header 포맷

    • 확장헤더도입
    • 헤더를 고정 길이로 변경 (IPv4는 최소 20 ~ 최대 60)
    • 패킷 단편화 관련 필드 삭제
    • 체크섬 필드 삭제 (데이터 링크 계층에서 체크섬의 계산이 이루어지므로 생략하였다.)
  • 보안 기능 기본적으로 제공

    • IPv4는 IPSec이라는 보안 프로토콜을 별도로 설치해주어야 했지만,
    • IPv6는 확장헤더를 통해 네트워크 계층에서의 암호화를 제공하고, 패킷 변조를 방지시켜준다.
profile
게임서버프로그래머를 꿈꾸는 자

0개의 댓글