네트워크 계층 - 데이터 평면 2

이윤설·2024년 8월 8일

네트워크 계층 - (TCP 4계층에선 인터넷 계층)에 대해 알아보자.


3. 인터넷 프로토콜(이어서)

DHCP(Dynamic Host Configuration Protocol)


정의

네트워크 상의 장치들이 자동으로 IP 주소와 기타 네트워크 구성 정보를 받을 수 있도록 해주는 통신 프로토콜이다. DHCP를 사용하면 네트워크 관리자가 각 장치에 수동으로 IP 주소를 할당하고 관리하는 번거로움 없이, 네트워크에 연결된 모든 장치가 자동으로 IP 주소를 받아 인터넷이나 로컬 네트워크에 접근할 수 있다.

동작 방식

  1. 공유기에 노트북을 LAN으로 연결하면 자동으로 DHCP Client(ex. 핸드폰, 컴퓨터, TV 등등)의 MAC 주소가 DHCP Server에게 IP 주소를 요청한다.

  2. DHCP Server는 DHCP Client에게 사용 가능한 IP를 자동으로 할당한다. DHCP는 마치 호텔의 카운터 직원과 같다. 컴퓨터가 고객이라면, 고객이 차례대로 올 때마다 최적의 방(IP주소)을 할당한다.

  3. 단, DHCP를 통해 할당 받은 IP 주소는 영구적인 것이 아니다. 즉, 유동IP다.
    만약 일정 시간(임대 시간)이 지나면 클라이언트가 갱신해야 한다.

  4. 할당 받은 IP 주소를 사용하다가 임대 시간이 지나면 기간을 연장하거나 IP 주소를 반납한다.

본래 이 IP 설정 과정은 매우 복잡해서 머리가 터져나갈 수 있으나, 라우터와 장치에 내장된 DHCP 기술 덕분에 이 과정이 자동으로 진행되어 편리하게 이용할수 있는 것이다.

고정IP, 유동IP

앞서 DHCP는 유동IP를 할당한다고 했었다.

고정 IP 주소는 ISP에 의해 해당 사용자 전용으로 부여되는 인터넷 주소로서, 컴퓨터에 고정적으로 부여된 IP로 한번 부여되면 IP를 반납하기 전까지는 다른 장비에 부여할 수 없는 IP 주소다.

고정IP는 말 그대로 컴퓨터를 껐다 켜더라도 IP가 변하지 않는다.

이를 사용하는 이유는 서버의 주소지를 변경하지 않게 함으로서 외부에서 동일한 주소지로 접속을 할 수가 있어 특정 IP만 접속되도록하는 게임 등의 IP인증용과 웹 서버, 원격 데스트톱, 파일 서버, DB서버 등을 운용하기 위한 용도로 주로 사용하게 된다.

반면 유동 IP는 장비에 고정적으로 IP를 부여하지 않고 컴퓨터를 사용할 때 남아 있는 IP 중에서 돌아가면서 부여하는 IP를 뜻한다. 부여받은 IP가 10개이고 접속해야 할 컴퓨터가 20대라면 10대는 고정 IP를 부여할 경우 IP가 모자라므로 유동 IP로 10개를 20대가 돌아가면서 사용할 수 있도록 한다. 따라서 유동 IP를 사용하는 경우 같은 장소에서 인터넷에 접속하더라도 그때 그때 IP주소가 변동될 수 있다.

유동IP를 사용하는 것이 더 유연하기 때문에 DHCP는 유동IP를 할당한다.

DHCP 작동 과정

cf. 255.255.255.255는 IPv4 인터넷 프로토콜에서 사용되는 특별한 브로드캐스트 주소다.

이 주소를 사용하여 네트워크 상의 모든 기기에 데이터를 한 번에 전송할 수 있으며, 주로 네트워크 설정이나 서비스 발견과 같은 초기 설정 과정에서 유용하게 사용된다.

하지만, 이 주소를 통한 브로드캐스트는 네트워크 내에서만 작동하며, 라우터를 통해 다른 네트워크로는 전파되지 않는다.

1) DHCP discover

  • 클라이언트가 네트워크에 접속하면 처음에는 IP주소 0.0.0.0을 가지고 있다.

  • 클라이언트는 랜덤한 숫자인 transaction ID를 지정해놓는다.

  • dest가 255.255.255.255 라는 것은 브로드케스트로 해당 서브넷의 모든 주소에게 다 보낸다는 뜻이다.

  • 모든 IP주소에 DHCP discover를 보낸다.

  • DHCP 프로토콜의 포트번호는 67번이다.

    그래서 다른 것들은 67번을 닫아놔서 요청을 무시하고, DHCP 서버만 67을 열어놔서 응답하게 된다.

cf. DHCP 서버와 클라이언트 간의 통신이 인터넷 표준에 따라 사전에 정의된 특정 UDP 포트 번호를 사용하여 이루어진다. DHCP 서버는 UDP 포트 67을 사용해 클라이언트의 요청을 수신하고, DHCP 클라이언트는 UDP 포트 68을 사용해 서버로부터 메시지를 받는다.

이러한 포트 번호는 전 세계적으로 통용되는 인터넷 표준(RFC 2131)에 의해 지정되어 있기 때문에, DHCP 클라이언트는 특별한 설정 없이도 네트워크에 있는 DHCP 서버를 자동으로 찾아 통신할 수 있다.

2) DHCP offer

DHCP 프로토콜을 통해 네트워크에 연결하는 클라이언트는 DHCP Discover 메시지를 보내어 네트워크 설정 정보를 요청하고, DHCP 서버는 이에 대한 응답으로 DHCP Offer 메시지를 클라이언트에게 전송한다.

이 메시지에는 클라이언트가 네트워크에 연결하기 위해 필요한 IP 주소, 서브넷 마스크, 기본 게이트웨이(라우터) 주소, DNS 서버 주소 등의 정보가 포함되어 있다.

  • 이때도 아직 클라이언의 IP주소가 없기 때문에 응답도 브로드캐스트로 보내야한다.

  • 처음 응답 보낸 포트가 68번이기 때문에, 68번이 열려있는 클라이언트만 응답을 받게 된다,

  • transaction Id: 클라이언트가 DHCP Discover 메시지를 보낼 때 생성하는 고유한 식별자

  • yiaddrr: 새로 지정해준 IP 주소

  • lifetime: IP주소 유효기간

-src: DHCP 서버의 주소. 즉, DHCP 서버의 IP 주소가 223.1.2.5이고, UDP 포트 번호가 67(이는 DHCP 서버가 사용하는 표준 포트임)

3) DHCP request

  • 클라이언트는 새로 받은 IP주소를 사용하겠다 라는 뜻으로 request를 한번 더 보내야한다.

  • 아직 배정된 IP주소가 없기 때문에 이번에도 0.0.0.0으로 보낸다. (DHCP Offer 단계에서 클라이언트가 새로운 IP 주소를 제안받더라도, 이는 아직 임시적인 제안에 불과하며, 클라이언트는 DHCP Request 메시지를 통해 해당 IP 주소를 공식적으로 요청하고, DHCP 서버로부터 최종적인 승인인 DHCP ACK를 받기 전까지는 0.0.0.0을 사용한다.)

  • 여러 DHCP 서버에게 내가 정한 DHCP를 알려주기 위해 브로드케스트로 보낸다.

  • transaction ID 하나를 플러스해서 request 의미로 보낸다.

4) DHCP ACK

  • 똑같은 방식으로 ACK를 전송한다.

  • ACK를 받으면 그때부터 클라이언트에 IP주소가 배정된다(서브넷 마스크, 라우트, DNS 포함).

다시 정리해보자...

  • DHCP Discover: 이 단계에서 클라이언트는 네트워크 상의 DHCP 서버를 찾기 위해 DHCP Discover 메시지를 브로드캐스트한다. 이때 클라이언트의 IP 주소는 0.0.0.0으로 설정되어 있으며, 이 메시지를 통해 IP 주소 할당을 요청한다.

  • DHCP Offer: 네트워크 상의 DHCP 서버 중 하나 또는 여러 개가 클라이언트의 Discover 메시지를 받으면, 각 서버는 사용 가능한 IP 주소를 포함하는 DHCP Offer 메시지를 클라이언트에게 보낸다. 이 메시지에는 클라이언트에 제안하는 IP 주소(yiaddr), 서브넷 마스크, 기본 게이트웨이, DNS 서버 주소 등 네트워크 설정 정보가 포함된다.

  • DHCP Request: 클라이언트는 받은 Offer 메시지 중 하나를 선택하고, 해당 서버에게 선택된 IP 주소를 요청하는 DHCP Request 메시지를 브로드캐스트한다. 이 메시지는 클라이언트가 특정 서버의 제안을 수락했음을 다른 DHCP 서버들에게 알리기도 한다. 그 결과, 다른 서버들은 클라이언트에게 제공했던 제안을 철회한다.

  • DHCP Acknowledgement (ACK): 마지막 단계에서, DHCP 서버는 클라이언트의 Request 메시지를 확인하고, DHCP ACK 메시지를 클라이언트에게 보내 IP 주소 할당을 완료한다. 이 ACK 메시지는 클라이언트가 네트워크에 접속하는 데 필요한 모든 설정 정보를 포함한다. 클라이언트는 이 정보를 사용하여 네트워크에 접속하고, 할당된 IP 주소를 사용하기 시작한다.

cf.

  • 사실상 하나의 공유기가 하나의 DHCP 서버라고 알면 된다.

  • DHCP 서버를 따로 두기 보다는 통상적으로 라우터(또는 무선공유기)가 한꺼번에 처리한다.

  • 게이트웨이 라우터는 포워딩 뿐만 아니라 NAT, DNS, Firewall 뿐만 아니라 DHCP 역할까지 담당함

  • 가정에 있는 무선 공유기가 게이트웨이 라우터다. 따라서 NAT, DNS, DHCP기능을 가지고 있다.

  • 그 공유기가 또다른 NAT에 포함되어 있을수도 있다.

  • IPv4의 고갈로 현재 임시방편인 NAT에 종속되어있는 상태이다. NAT를 안쓰기도, IPv6로 바꾸기도 어려운 상태다.

IP fragment

두번째 줄에 있는 요소들에 대해 알아보자.

데이터 전송 과정에서 다양한 네트워크 링크를 거치게 되는데, 각각의 링크가 처리할 수 있는 데이터의 최대 크기, 즉 최대 전송 단위(MTU)가 서로 다르다. 전송하려는 패킷의 크기가 특정 링크의 MTU보다 클 경우, 패킷은 즉시 더 작은 단위로 분할된다. 이러한 과정을 'fragmentation'이라고 하며, 분할된 각각의 패킷은 'fragment'라고 부른다. 이렇게 쪼개진 패킷들은 목적지에 도달한 후에 다시 하나로 조립되는데, 이 과정을 'reassemble'이라고 한다.

패킷을 쪼개고 다시 조립하는 데에는 IP 헤더 안의 세 가지 주요 요소가 필요하다.

첫 번째는 16비트 크기의 'identifier'로, 원본 패킷이 같은 것임을 확인하기 위해 모든 쪼개진 패킷들에게 동일한 ID가 부여다.

두 번째는 'flags'로, 이는 패킷이 추가적으로 분할되었거나 분할되지 않았음을 나타낸다. 패킷 뒤에 더 분할된 패킷이 있으면 1로, 마지막 패킷이거나 분할되지 않았다면 0으로 설정된다.

마지막으로 'offset'은 분할된 패킷의 데이터가 원본 데이터에서 어느 위치에 해당하는지를 나타내며, 8로 나누어진 값으로 표현된다(이는 데이터 저장 공간을 절약하기 위함이다).

예를 들어, 4000바이트의 데이터를 전송하는 상황에서 MTU가 1500바이트인 링크를 만났다고 가정하자.
이 경우, 데이터는 길이가 1500바이트인 여러 개의 패킷으로 분할된다.
모든 쪼개진 패킷은 원본 데이터의 일부임을 나타내기 위해 동일한 ID 값을 가진다.

만일 쪼개진 패킷 중 하나라도 유실되면, 목적지에서는 패킷들을 제대로 조립할 수 없게 되어 결국 전체 데이터를 재전송해야 한다.

즉, 리어셈블이 안되니까 TCP 계층으로 못올리게 된다. 그러니까 결국 tcp가 위에서 알아서 타이머가 터지고 결국 재전송하는 것이다.

ICMP (Internet Control Message Protocol)


네트워크 계층에서 IP 프로토콜 외에 ICMP 프로토콜을 사용하기도 한다.
중요한 것은 IP와 ICMP를 동시에 사용한다는 점이다.

  • ICMP의 정의
    네트워크 장치에서 네트워크 통신 문제를 진단하는 데 사용하는 네트워크 계층 프로토콜

  • ICMP의 용도
    인터넷/통신 상에서 발생한 일반적인 상황에 대한 보고(report)
    인터넷/통신 상에서 발생한 오류에 대한 보고
    위험한 상황에 대한 경보

  • ICMP의 기능
    IP 프로토콜을 이용하여 ICMP 메세지를 전달
    네트워크 계층에 속하여 네트워크 관리 프로토콜의 역할을 수행

ex) 예를 들어, 목적지에 도달할 수 없을 때, 패킷이 너무 큰 경우, 경로 변경이 필요한 경우 등에 ICMP 메시지가 사용된다. 또한, 네트워크의 도달 가능성을 테스트하는 데 사용되는 핑(ping) 명령어도 ICMP를 기반으로 한다.

Transition from IPv4 to IPv6

터널링


IPv4는 IPv6를 이해할 수 없지만, IPv6는 IPv4를 이해할 수 있다.

IPv6를 사용하는 라우터 간에 데이터를 전달할 때 IPv4를 이용하는 기법인 터널링을 사용한다.

한번에 기존 네트워크는 IPv4를 기반으로 이루어져있기 때문에 한번에 네트워크를 IPv6에 맞춰서 전환하는 것은 엄청나게 많은 돈이 들기 때문에 사실상 불가능하므로 터널링을 사용하여 IPv6 라우터 간에 통신한다.

4. 일반화된 포워딩 및 소프트웨어 기반 네트워크(SDN)

SDN

SDN(Software Defined Network)이란 소프트웨어를 통해 네트워크 리소스를 가상화하고 추상화하는 네트워크 인프라에 대한 접근 방식을 의미한다.
조금 더 쉽게 설명하자면, 소프트웨어 애플리케이션과 API를 이용하여 네트워크를 프로그래밍하고, 중앙에서 전체 네트워크를 제어하고 관리하는 것이다.

SDN은 네트워킹 하드웨어에서 컨트롤 플레인 소프트웨어를 분리하여 네트워크 관리자가 API를 사용하여 원격으로 연결된 디바이스를 프로그래밍 방식으로 프로비저닝하고 관리할 수 있도록 허용한다.

SDN은 전체 분산 네트워크를 제어할 수 있는 공통 인터페이스를 제공하므로 IT 부서는 각 디바이스를 개별적으로 업그레이드, 문제 해결 및 관리할 필요가 없게된다.

5. 미들박스

미들박스란?

미들박스(Middlebox)는 네트워크 상에서 패킷을 단순히 전달하는 라우터와 스위치 외에 다양한 기능을 수행하는 네트워크 장비를 지칭한다. 이러한 장비들은 네트워크 보안, 성능 최적화, 트래픽 관리 등의 목적으로 사용된다.

  1. 방화벽(Firewall): 네트워크 트래픽을 필터링하여 허용된 트래픽만 통과시키고, 악의적이거나 허가되지 않은 트래픽을 차단한다.

  2. 네트워크 주소 변환기(NAT, Network Address Translator): 사설 네트워크 내의 IP 주소를 공인 IP 주소로 변환하여 인터넷과 통신할 수 있게 한다.

  3. 로드 밸런서(Load Balancer): 여러 서버에 트래픽을 분산시켜 각 서버의 부하를 줄이고, 전체 시스템의 성능과 신뢰성을 향상시킨다.

  4. 프록시 서버(Proxy Server): 클라이언트와 서버 사이에서 중계 역할을 하며, 캐싱, 콘텐츠 필터링, 보안 향상 등을 제공한다. 클라이언트의 요청을 대신 처리하여 성능을 개선하고, 익명성을 제공한다.

profile
화려한 외면이 아닌 단단한 내면

0개의 댓글