[네트워크] 네트워크의 미시적 구조

windowook·2024년 6월 18일
post-thumbnail

🌱 프로토콜

택배가 송신지에 제대로 배송되려면 택배기사 또한 송장에 적힌 메세지를 이해할 수 있어야 하고,
여러 명의 택배 기사가 필요하다면 택배기사끼리 주고받는 언어도 서로 통해야 합니다.
올바르게 정보를 주고받기 위해 합의된 의사소통 방식이 필요한 것입니다.

네트워크에서 합의된 의사소통 방식은 프로토콜이 수행합니다.
프로토콜은 노드 간에 정보를 올바르게 주고받기 위해 합의된 규칙이나 방법을 의미합니다.
서로 다른 통신 장치들이 정보를 주고받으려면 프로토콜이 통해야 합니다.

🌱 네트워크 참조 모델 (네트워크 계층 모델)

네트워크를 통해 통신이 일어나는 각 과정을 계층으로 나눈 구조입니다.

통신 과정을 계층으로 나눈 이유

  • 네트워크 구성과 설계가 용이
    각 계층이 수행해야 할 역할이 정해져 있으므로 계층의 목적에 맞게 프로토콜과 네트워크 장비를 계층별로 구성 가능합니다.

  • 네트워크 문제 진단과 해결이 용이
    통신 과정에서 문제가 발생하더라도 문제의 원인을 계층별로 진단하기 수월합니다.
    예를 들어서 잘되던 인터넷이 갑자기 안 되면 가장 먼저 최하위에 있는 1계층에서 발생한 문제인지 판단하기 위해 케이블 등 유무선 매체의 접속 상태를 확인해 볼 수 있습니다. 이상이 없다면 2계층에서 발생한 건지 진단해보고, 여기서도 이상이 없다면 3계층에서 이상이 없는지 순서대로 진단합니다.

OSI 모델 (OSI 7 layers)

물리 계층 (physical layer)
기계의 전기적인 특성을 활요하여 통신 케이블을 통해 데이터를 전송합니다.
비트 단위로 0 혹은 1을 의미하는 전기 신호를 전달합니다.

  • 장비 : 리피터, 통신 케이블

데이터링크 계층 (datalink layer)
네트워크 기기 간의 데이터 전송을 수행하고, 물리 주소를 결정합니다.
물리 계층을 통해 주고받는 데이터의 오류 처리 및 흐름을 제어합니다.
물리 계층과 네트워크 계층과 달리 직접적으로 연결된 장치와의 통신에 중점을 둡니다.
물리 주소(MAC)를 이용합니다. 네트워크 내 송수신지를 특정 가능합니다.

  • 데이터의 단위 : 프레임
  • 장비 : 스위치, 브리지

네트워크 계층 (network layer)
데이터를 원하는 수신지까지 안전하고 정확하게 전달하는 기능을 수행합니다.
네트워크 간의 통신이 이루어집니다. 인터넷을 가능하게 하는 계층입니다.
라우팅, 흐름 제어, 오류 제어 등의 기능을 모두 포함합니다.
라우팅 프로토콜을 통해 최적화된 경로를 통해 목적지에 도달합니다.
논리 주소(IP Address)를 사용합니다.

  • 데이터의 단위 : 패킷
  • 장비 : 라우터

전송 계층 (transport layer)
포트에서 포트까지의 연결을 담당합니다. 일반적으로 두 응용 프로그램 간의 연결을 담당합니다.
TCP / UDP 프로토콜이 사용합니다.
TCP의 경우, 연결 기반으로 상태 정보에 기반하며 패킷들의 유효성을 검사합니다.
누락된 패킷을 확인하여 재전송을 요청하며 두 장치 간 데이터 전송의 신뢰성을 담당합니다.

세션 계층 (session layer)
두 응용 프로그램이 통신하기 위한 논리적인 연결(세션 형성)을 수행합니다.
세션은 통신을 주고받는 호스트의 응용 프로그램 간 연결 상태 의미합니다.
일반적으로 운영체제는 TCP/IP 세션을 생성/유지/제거하는 역할 수행합니다.

표현 계층 (presentation layer)
각 프로그램마다 데이터의 표현이 상이하고 독립적일 수 있습니다.
데이터의 형식(표현)이 다른 점을 처리하여 응용 계층의 부담을 덜어줍니다.
사람이 이해할 수 있는 언어인 문자를 컴퓨터가 이해할 수 있는 코드로 변환하거나
데이터 압축 및 암호화 기능 수행합니다.

응용 계층 (application layer)
우리가 실질적으로 사용하는 다양한 응용프로그램에서 활용합니다.
사용자로부터 정보를 받아 실질적으로 DB 접속, 이메일 전송 등의 서비스를 네트워크에 연결합니다.
웹 브라우저(HTTP), 파일 업로드/ 다운로드(FTP) 등이 대표적인 예시입니다.
타 계층에 비해 응용 계층에 속한 프로토콜이 많습니다.

네트워크 관련 문제 예시

  • 랜선이 뽑혀 있었거나, 통신 케이블(선)이 끊어져 있었다면
    : 물리 계층에서 문제가 있었던 것입니다.

  • 라우터의 발열 문제가 있어 재부팅을 해야 했다면
    : 네트워크 계층에서 문제가 있었던 것입니다.

TCP/IP 모델

OSI 계층은 참조 모델로서 사실상 이론적인 개념입니다. 국제 표준화기구가 참여하여 개발했습니다.
OSI 계층은 네트워크를 이론적으로 기술하고 이해할 때 사용하는 반면에 TCP/IP 모델은 이론보다는 구현에 중점을 둔 네트워크 참조 모델입니다. 그래서 OSI 모델의 목적이 이상적 설계에 가깝다면 TCP/IP 모델은 실용적 구현에 가깝습니다.

TCP/IP 모델은 4계층로 이루어져 있으며 '인터넷 프로토콜 슈트', 'TCP/IP 프로토콜 스택'이라고도 합니다.

계층설명
네트워크 액세스 계층OSI 모델의 데이터링크 계층과 유사
인터넷 계층OSI 모델의 네트워크 계층과 유사
전송 계층OSI 모델의 전송 계층과 유사
응용 계층OSI 모델의 세션 계층, 표현 계층, 응용 계층을 합친 것과 유사

🌱 캡슐화와 역캡슐화

패킷은 송신 과정에서 캡슐화가 이루어지고, 수신 과정에서 역캡슐화가 이루어집니다.

캡슐화

패킷 교환 네트워크에서 메세지는 패킷 단위로 송수신합니다.
어떤 정보를 송신할 때 각 계층에서는 상위 계층으로부터 내려받은 패킷을 페이로드로 삼아
프로토콜에 걸맞은 헤더를 덧붙인 뒤 하위 계층으로 전달합니다.

즉, 한 단계 아래 계층은 바로 위의 계층으로부터 받은 패킷에 헤더 및 트레일러를 추가해 갑니다.
캡슐화는 송신 과정에서 헤더 및 트레일러를 추가해 나가는 과정입니다.

역캡슐화

어떤 메세지를 수신할 때는 캡슐화 과정에서 붙였던 헤더를 각 계층에서 확인한 뒤 제거합니다.

🌱 PDU

각 계층에서 송수신되는 메세지의 단위입니다.
상위 계층에서 전달받은 데이터에 현재 계층의 프로토콜 헤더를 추가하면 현재 계층의 PDU입니다.

OSI 계층PDU
응용 계층데이터
표현 계층데이터
세션 계층데이터
전송 계층세그먼트, 데이터그램
네트워크 계층패킷
데이터링크 계층프레임
물리 계층비트

PDU는 주로 전송 계층 이하의 메세지를 구분하기 위해 사용합니다.
전송 계층보다 높은 계층에서는 일반적으로 데이터 혹은 메세지로만 지칭하는 경우가 많습니다.
전송 계층의 PDU는 TCP 프로토콜이 사용되었을 경우에는 세그먼트,
UDP 프로토콜이 사용되었을 경우에는 데이터그램입니다.

패킷이라는 용어는 패킷 교환 네트워크에서 쪼개어져 전송되는 단위를 통칭하기 위한
일반적인 용어로 사용되기도 하지만, 네트워크 계층에서의 송수신 단위를 지칭하기 위해 사용되기도 합니다.
그래서 네트워크 계층에서의 PDU는 'IP 패킷'이라고 구분해서 부르기도 합니다.

🌱 OSI 7계층과 TCP/IP 계층에 대한 편견

네트워크 참조 모델은 모든 프로토콜과 네트워크 장비가 반드시 지켜야 하는 엄격한 규칙이나 법규가 아닙니다.

네트워크 참조 모델은 분명 중요한 개념이지만 네트워크 '참조' 모델이라는 이름처럼
네트워크 구조에 대한 개념 참조를 위해 사용하는 것이 바람직합니다.

지금도 새로운 프로토콜과 네트워크 장비는 만들어지고 있고,
모든 프로토콜이 모든 모델의 특정 계층에 완벽히 대응되지는 않습니다.

그래서 특정 계층으로 명확히 분류되는 프로토콜이나 네트워크 장비도 물론 다수 있지만
특정 계층으로 분류하기 어렵거나 여러 계층을 포괄하는 프로토콜이나 네트워크 장비도 얼마든지 있을 수 있습니다.

그리고 네트워크 참조 모델이나 특정 계층은 네트워크를 작동시키는 주체가 아니며
프로토콜 혹은 네트워크 장비 같은 참조 모델에 속한 대상이 바로 네트워크를 작동시키는 주체이자
무언가를 해주는대상. 그래서 네트워크 참조 모델은 큰 그림이자 모델일 뿐입니다.

🌱 트래픽과 네트워크 성능 지표

트래픽

트래픽이란 네트워크 내의 정보량을 의미입니다.
특정 노드에 트래픽이 몰린다는 것은 해당 노드가 특정 시간 동안 처리해야 할 정보가 많음을 의미합니다. 이 경우 해당 노드에 과부하가 생길 수 있습니다.

처리율

단위 시간당 네트워크를 통해 실제로 전송되는 정보량을 의미합니다.
일반적으로 bps, Mbps, Gbps 단위로 표현합니다.
처리율은 실시간성이 강조된 지표로, 특정노드가 얼마만큼의 트래픽을 처리하는 중인지 판단하기 위해 사용합니다. 그래서 매 순간 변하는 모습으로 표현되거나 처리율의 평균값이 주로 활용됩니다.

대역폭

대역폭은 신호 처리 영역에서의 정의와 네트워크 성능 측정 영역에서의 정의가 서로 다릅니다.
신호 처리 영역에서는 주파수의 범위를 의미하지만, 네트워크 성능 측정 영역에서는 단위 시간 동안 통신 매체를 통해 송수신 할 수 있는 최대 정보량을 의미합니다. 처리율과 같이 bps, Mbps, Gbps를 단위로 사용합니다.

패킷 손실

송수신되는 패킷이 손실된 상황을 의미합니다.
높은 트래픽으로 인해 노드가 순간적으로 처리해야 할 패킷이 너무 많아지거나 네트워크상에 예기치 못한 장애가 발생해서 패킷을 처리하지 못하면 패킷 손실이 발생 가능합니다. 패킷 손실은 전체 패킷 중 유실된 패킷을 백분위로 표현한 값을 사용하는 경우가 많습니다.

패킷 손실은 명령 프롬프트 혹은 터미널에서 ping 명령어로 확인 가능합니다.
ping 명령어는 수신지로 다수의 패킷을 전송해 수신지까지 도달 가능한지 여부를 알려줍니다.

profile
안녕하세요

0개의 댓글