Network 기본 개념


그 동안 머릿속으로만 알고 있던 개념에 대해서 글로 간단히 작성하며 남겨보려고 한다.

따라서 내가 이해하는 수준에서 Basic 이라는 주제로 각 분야별 기본적인 개념에 대해 남긴다.

  • Ethernet

이더넷은 네트워킹의 한 방식이다. 즉 네트워크를 만드는 방법 중 하나다. 이더넷 방식의 가장 큰 특징은 CSMA/CD(‘Carrier Sense Multiple Access/Collision Detection’)라는 프로토콜을 사용해서 통신을 한다는 것이다. 네트워킹 방식은 우리가 알만한 이더넷 방식 말고도 토큰 링 방식, FDDI 방식, ATM 방식도 있었다. 어떤 네트워킹 방식을 사용하느냐에 따라 랜카드를 비롯하여 구입해야 하는 네트워크 장비들이 다르다. 회사, 학교 등에서 네트워크를 통해서 인터넷을 사용하고 있다면 이더넷 방식이 대부분일 것이다.

캐리어는 네트워크 상에 나타나는 신호라고 생각하면 되는데 네트워크 상의 신호가 있는지 감지하는 것을 ‘Carrier Sense’라고 한다. 만약 캐리어가 감지되면, 다시말해서 누군가가 네트워크상에서 통신을 하고 있으면 자기가 보낼 정보가 있어도 못 보내고 기다린다. 그러다가 네트워크에서 통신이 없어지면(캐리어가 감지되지 않았을 때) 자기의 데이터를 네트워크상에 실어서 보낸다. 만약 네트워크 상에 캐리어 감지가 되지 않아서 2개의 PC에서 자신의 데이터를 실어 보내는 경우가 발생할 수 있는데 이 경우를 ‘Multiple Access’라고 부른다. 통신에서 이렇게 2개의 장비들이 데이터를 동시에 보내려다 부딪치는 경우를 충돌이 발생했다고 한다. 따라서 이더넷에서는 데이터를 네트워크에 실어서 보내고 나서도 혹시 PC때문에 Collision이 발생하지 않았는지를 잘 점검해야 한다. 그것을 바로 ‘Collision Detection’이라고 한다. 만약 콜리전이 발생하게 되면 데이터를 전송했던 PC들은 랜던함 시간 동안 기다린 후 다시 데이터를 전송하게 된다. 콜리전이 발생하여 영향을 주는 영역을 콜리전 도메인이라고 한다.

- Bridge/Switch

허브에서는 콜리전 도메인이 그 허브에 연결된 모든 PC들이 되는데 콜리전 도메인이 너무 커지게 되면 콜리전에 의해 영향을 받는 PC들이 많아지면서 통신의 속도가 점점 떨어지게 된다. 이러한 문제를 해껼하기 위해서 콜리전 도메인을 나누어 줄 수 있는 장비가 나왔는데, 이 장비가 브리지 또는 스위치다. 스위치 이전에는 브리지를 사용하였으나 현재는 스위치를 많이 사용한다.

- Router

스위치는 콜리전 도메인은 나누어 줄 수 있지만 브로드캐스트 도메인은 나누지 못한다. 스위치에 연결된 모든 PC는 하나의 브로드캐스트 도메인이다. 브로드캐스트는 CPU의 성능도 저하시키기 때문에 적절히 브로드캐스 영역을 나누는 것은 중요하다. 브로드캐스트 도메인을 나누어 주기 위해서는 라우터가 꼭 필요하다.

  • Load Balancer란

Distributed, Scalable 시스템 환경에서는 확장성, 가용성 등을 고려한 아키텍처가 설계 되어진다.
로드밸런서는 서버의 앞단에 위치하여 단일 접점의 역할을 하며 다량의 트래픽에 대해 적절히 뒷 단의 서버에 트래픽을 분산하여 요청하는 기능을 수행한다.

분산 요청을 하게 되면 각 서버에 요청 되는 트래픽을 분산시켜 안정정적으로 응답할 수 있게 된다.

AWS 환경에서는 NLB, ALB가 존재한다.
NLB는 L4 Layer 에서 동작하는 로드밸런서로 IP/PORT 기반의 라우팅을 하게 된다.
설정시 Listen하는 포트는 TCP/UDP포트를 설정할 수 있으며 Target Group으로 요청을 받는 서버 및 포트를 설정하게 된다.

ALB는 L7 Layer 에서 동작하는 로드밸런서로 URL/IP/PORT 기반의 라우팅을 할 수 있다.
L4 Layer와 다르게 Listen하는 포트를 HTTP/TCP/UDP로 설정할 수 있고, Path를 설정할 수 있으므로 더 다양한 라우팅을 가능하게 한다.

  • OSI 7 계층 (Open System Interconnection)

  1. Physical Layer - 물리 계층
    물리 계층은 하드웨어 전송기술로 이루어져 있다. 전기적, 기계적 신호를 주고 받는 역할 계층
    대표적인 장비로는 통신 케이블, 허브, 리피터 등이 있다.

  2. Data Link Layer - 데이터 링크 계층
    데이터링크 계층은 Point to Point (노드 대 노드 전달) 간의 신뢰성 있는 전송을 보장하기 위한 계층이다.
    물리주소인 Mac 주소가 이 계층에 포함되며 전송 단위는 Frame 이다.
    대표적인 장비로는 스위치와 브릿지 등이 있다.

  3. Network Layer - 네트워크 계층
    네트워크 계층은 각 패킷이 송신지에서 목적지 까지 경로를 찾아 데이터를 전달되게 하는 계층이다.
    주소를 정하고(IP), 경로를 찾아(Route) 패킷을 전달 하는 것이 핵심이다.
    대표적인 장비로는 라우터가 있다.

  4. Transport Layer - 전송 계층
    전송 계층은 서비스를 구분하고 데이터 통신 방식을 결정하는 계층이다.
    4계층은 데이터를 생성하는 상위 계층과 데이터를 전달해주는 하위 계층을 연결해주는 역할을 담당하고 있다.

    • 1) 포트 넘버를 통한 서비스 구분

      포트 번호는 서비스 번호로도 불리는 Transport 계층의 주소이다.
      0~65535번의 값을 사용하고 이 중, 0~1023번은 Well-Known 포트로서 가장 빈번하게 사용되는 대표적인 프로토콜에 할당 되어 있다.


    • 2) 데이터 통신 방식 결정 (TCP/UDP)

      TCP
      신뢰성을 가지고 있지만 UDP통신보다 느리다. 데이터를 보내기 전에 통신이 가능한지 확인하고,
      데이터를 전달하면서 정확하게 전달이 되었는지 통신상태를 확인해주는 확인응답인 ACK 패킷을 지속적으로 전달하는 절차를 가지고 있어 신뢰성이 있는 프로토콜이다.
      신뢰성을 제공하기 때문에 오류제어와 흐름제어와 같은 기능을 제공한다.

      net1
      <TCP 3Way Handshake>

      UDP
      신뢰성이 없는 대신 빠른속도로 통신되는 특징을 가진 통신방식이다.

  5. Session Layer - 세션 계층
    세션 계층은 응용 프로그램 간의 대화를 유지하기 위한 구조를 제공하고, 이를 처리하기 위해 프로세스들의 논리적인 연결을 담당하는 계층이다.
    통신 중 연결이 끊어지지 않도록 유지시켜주는 역할 수행하기 위해 TCP/IP 세션 연결의 설정과 해제, 세션 메세지 전송 등의 기능을 수행한다.
    1계층에서 4계층까지 주된 기능은 데이터의 전송 목적이었다면, 5계층은 Application에 관련된 계층으로 볼 수 있다.

    • 1) 통신을 하기 위한 세션 확립, 유지, 중단을 수행한다
    • 2) 통신하는 사용자들을 동기화해주고, 오류 복구 명령들을 일괄적으로 처리한다.
  6. Presentation Layer - 표현 계층
    표현 계층은 Application이 다루는 정보를 통신에 알맞은 형태로 만들거나, 하위 계층에서 온 데이터를 사용자가 이해할 수 있는 형태로 만드는 역할을 담당하는 계층이다.
    수신자 장치에서 적합한 애플리케이션을 사용하여 응용계층 데이터의 부호화 및 변환 수행을 통해 송신 장치로부터 온 데이터를 해석한다.

    • 1) 데이터의 효율과 보안을 위해 압축과 암호화를 수행하고, 전송을 위한 포맷으로 변경을 수행한다.
    • 2) 통신하는 사용자들을 동기화해주고, 오류 복구 명령들을 일괄적으로 처리한다.
  7. Application Layer - 응용 계층
    응용 계층은 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행하는 역할을 담당하는 계층이다.
    응용 프로세스가 개방된 형태로 다양한 범주의 정보처리기능을 수행할 수 있도록 여러가지 프로토콜 개체에 대하여 사용자 인터페이스를 제공한다.

    • 1) 응용 프로세스 간의 정보 교환, 파일 전송 등의 서비스를 제공한다.
    • 2) 프로토콜 : HTTP, FTP, SMTP, POP3, IMAP, Telnet
  • Protocol

  1. L7 / FTP (File Transfer Protocol)

  2. L7 / SMTP (Simple Mail Transfer Protocol)

  3. L4 / TCP (Transmission Control Protocol)

  4. L4 / UDP (User Datagram Protocol)

  5. L3 / IP (Internet Protocol)

  6. L3 / ARP Protocol (Address Resolution Protocol)
    네트워크 상에서 IP 주소를 물리적 네트워크 주소로 대응(bind)시키기 위해 사용되는 프로토콜이다.

  7. BGP (Border Gateway Protocol)

참고 https://developers.redhat.com/blog/2018/10/22/introduction-to-linux-interfaces-for-virtual-networking#bridge

Tag: [ network  ]