본문 바로가기
개발/기타

[CS Study] 2. 네트워크 (1)

by 카펀 2022. 8. 8.

# 본 글은 인하대학교 단풍나무숲 CS 스터디에 작성한 내용을 그대로 가져온 글입니다.

2. 네트워크

목차

  1. 네트워크의 기초
  2. TCP/IP 4계층 모델

1. 네트워크의 기초

정의

노드 (node)와 링크 (link)가 서로 연결되어 있거나 연결되어 있지 않은 집합체.
여기서 노드란 서버, 라우터, 스위치 등 네트워크 장치를 뜻하며, 링크는 유무선 형태의 연결 수단을 의미한다.

처리량과 지연 시간

네트워크를 구축할 때, "좋은 네트워크" 로 만드는 것이 중요하다.
좋은 네트워크란,

  • 많은 처리량을 감당할 수 있으며,
  • 지연 시간이 짧고,
  • 장애 빈도가 적으며,
  • 좋은 보안을 갖춘 네트워크

처리량 (throughput)

  • 링크를 통해 전달되는 단위 시간당 데이터양 (amount of data per unit time)을 뜻한다.
  • bps (bits per second)를 단위로 사용
  • 트래픽, 장치 간의 대역폭, 에러, 하드웨어 스펙 등에 영향을 받는다.

지연 시간 (latency)

  • 요청이 처리되는 시간. 즉, 어떤 메세지가 두 장치 사이를 왕복하는데 걸린 시간
  • 매채 타입 (유무선), 패킷 크기, 라우터의 패킷 처리 시간 등에 영향을 받는다.

네트워크 토폴로지와 병목 현상

노드와 링크가 어떻게 배치되어 있는지에 대한 방식이자 연결 형태를 뜻한다.

  • 트리 토폴로지
    • 계층 형태로 네트워크가 존재한다.
    • 노드의 추가, 삭제가 쉬우며, 특정 노드에 장애가 생기면 하위 노드도 영향을 받는다.
  • 버스 토폴로지
    • 중앙 통신 회선 하나에 여러 개의 노드가 연결되는 방식
    • 보통 LAN (Local Area Network; 근거리 통신망)에서 사용된다.
    • 설치 비용이 적고, 신뢰성이 우수하며, 노드를 추가하거나 삭제하기 쉽고, 특정 노드에 장애가 발생하여도 다른 노드에 영향을 미치지 않는다.
    • 스푸핑 (spoofing)이 가능하다는 단점이 있다. (A -> B로 갈 요청이 A -> X -> B로 가도록 중간에 요청을 가로채는 것)
  • 스타 토폴로지
    • 중앙에 있는 노드 하나에 다른 모든 노드가 연결되어 있는 형태
    • 노드의 추가/삭제가 쉽고, 패킷의 충돌 발생 가능성이 적다.
    • (중앙 노드 제외) 특정 노드에 장애가 발생해도, 다른 노드에 영향을 미치지 않는다.
    • 중앙 노드에 장애가 생기면, 시스템 전체에 장애가 발생한다.
    • 설치 비용이 고가이다.
  • 링형 토폴로지
    • 각 노드가 양 옆의 두 노드와 연결되는 식으로, 둥근 원 형태로 네트워크가 구성되는 형태
    • 노드 수가 추가되어도 네트워크상의 손실이 거의 없고, 충돌이 발생되는 가능성이 적으며, 노드의 장애를 쉽게 발견할 수 있다.
    • 노드의 추가/삭제가 어렵고, 노드 하나에 장애가 발생하면 시스템 전체에 장애가 발생한다.
  • 메시 (mesh) 토폴로지
    • 모든 노드가 그물망처럼 연결되어 있는 형태
    • 노드 하나에 장애가 발생해도 시스템에 영향을 거의 끼치지 않음
    • 트래픽의 분산 처리가 가능함
    • 노드의 추가/삭제가 어려움
    • 운영 비용이 고가임

병목현상

  • 토폴로지가 중요한 이유. 병목 현상을 찾을 때 중요한 기준이 된다.
  • 병목 현상의 정의: 하나의 구성 요소로 인해 전체 시스템의 성능이나 용량이 제한을 받는 현상.

네트워크 분류

네트워크는 규모를 기반으로 분류할 수 있다.
개인-사무실 규모에서 사용할 수 있는 LAN (Local Area Network), 도시 정도 규모의 MAN (Metropolitian Area Network), 세계 규모의 WAN (Wide Area Network) 등이 존재한다.

  • LAN
    • 근거리 통신망을 의미
    • 전송 속도가 빠르고 혼잡하지 않다.
  • MAN
    • 대도시 지역 네트워크를 의미
    • 전송 속도는 평균이며 LAN보다는 혼잡하다.
  • WAN
    • 광역 네트워크를 의미
    • 전송 속도는 낮으며 MAN보다 더 혼잡하다.

네트워크 성능 분석 명령어

로직 상으로는 문제가 없어도, 네트워크 상태에 따라 데이터를 가져오지 못 하는 등의 장애가 발생할 수 있음. 이는 네트워크 병목이 원인일 수 있으며, 주로

  • 네트워크 대역폭
  • 네트워크 토폴로지
  • 서버 CPU, 메모리 (자원) 사용량
  • 비효율적인 네트워크 구성

위와 같은 경우 네트워크의 상태를 조회해 볼 필요가 있다. 이런 경우에 아래와 같은 명령어를 사용한다.

  • ping
    • Packet INternet Groper
    • 목적지 노드까지의 네트워크 상태를 확인하기 위해 일정 크기의 패킷을 보냄
    • TCP/IP 프로토콜 중 ICMP 프로토콜을 통해 동작
  • netstat
    • 접속되어 있는 서비스들의 네트워크 상태를 표시 (network status)
    • 주로 서비스의 포트가 열려 있는지 확인할때 씀
  • nslookup
    • 특정 도메인에 매핑된 IP를 확인
  • tracert (traceroute)
    • 목적지 노드까지의 네트워크 경로를 확인
    • 느려지는 구간을 파악 가능

네트워크 프로토콜 표준화

  • 장치들 간에 데이터를 주고받기 위한 공통 인터페이스
  • IEEE 또는 IETF에서 표준을 정함
  • 예:
    • IEEE802.3: 유선 LAN 프로토콜
    • HTTP: 웹 애플리케이션 계층에서 데이터를 주고 받기 위한 프로토콜

2. TCP/IP 4계층 모델

정의

Internet Protocol Suite는 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 프로토콜의 집합이다.
TCP/IP 4계층 모델, OSI 7계층 모델 등이 특히 널리 쓰인다.
계층 모델이란, 네트워크에서 사용되는 통신 프로토콜의 집합으로이다.
TCP/IP 4계층 모델의 계층들은 프로토콜의 네트워킹 범위에 따라 네 개의 추상화 계층으로 구성된다.

계층 구조

TCP/IP 4계층 모델은 이름 그대로 4개의 계층으로 나뉜다.
다음은 계층 구조를 나타낸다 (위에 있을수록 상위 계층).

  • 애플리케이션 계층 (FTP, HTTP 등)
  • 전송 계층 (TCP, UDP 등)
  • 인터넷 계층 (IP, ARP 등)
  • 링크 계층 (Ethernet 등)

애플리케이션 계층

  • HTTP, FTP 등 응용 프로그램이 사용되는 프로토콜 계층
  • 웹 서비스, 이메일, 동영상 스트리밍 등 서비스를 실질적으로 사용되는 사람들에게 제공하는 층

전송 (transport) 계층

  • 송신자와 수신자를 연결하는 통신 서비스를 제공
  • 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어 등 프로토콜마다 다양한 기능이 제공된다.
  • TCP, UDP 등이 이 계층에 속한다.
  • TCP
    • Transmission Control Protocol
    • 가장 널리 쓰이는 전송 계층 프로토콜. HTTP 2.0까지는 TCP를 사용한다.
    • 패킷 사이의 순서를 보장하고, 연결을 통한 신뢰성 구축 (3way handshake) 등 다양한 기능을 제공한다
    • UDP에 비해 속도가 느리다.
  • UDP
    • User Datagram Protocol
    • 도화지 같은 프로토콜. 기본적으로 제공하는 기능이 적지만, 그만큼 필요한 경우 커스터마이징 해서 사용할 수 있다.
    • 패킷 사이의 순서 보장, 수신 여부 확인 등이 지원되지 않는다.
  • TCP vs. UDP
    • TCP는 전송 순서 보장, 수신 여부 확인, 논리적 연결 수립/해제 등 안정성과 신뢰성을 강점으로 가진다.
      • 기본적으로 메일 송수신, 파일 전송 등 속도보다 정확한 전달이 중요한 경우에 쓰인다.
      • 최근에는 동영상 스트리밍 등에도 TCP가 널리 쓰인다.
    • UDP는 TCP 대비 빠른 속도를 강점으로 가진다.
      • 3way handshake 같은 논리적 연결 과정이 별도로 없으므로
      • TCP 대비 프로토콜이 기본적으로 요구하는 값이 적으므로
  • 3way handshake
    • TCP에서 서버와 클라이언트 사이에 서로 연결을 논리적으로 수립하는 과정
    • 아래 과정을 통해 진행된다.
      • 클라이언트 -> 서버, SYN 전송
      • 서버는 SYN 수신에 대한 응답으로 ACK 전송 및 서버 -> 클라이언트, SYN 전송
      • 클라이언트는 SYN 수신에 대한 응답으로 ACK 전송
  • 4way handshake
    • TCP에서 서버와 클라이언트 사이에 서로 연결을 논리적으로 해제하는 과정
    • 아래 과정을 통해 진행된다.
      • 클라이언트 -> 서버, FIN 전송
      • 서버는 FIN 수신에 대한 응답으로 ACK 전송 및 일정 시간 대기 (TIME_WAIT)
      • 서버 -> 클라이언트, FIN 전송
      • 클라이언트는 FIN 수신에 대한 응답으로 ACK 전송
    • TIME_WAIT은 왜 존재하는가?
      • 지연 패킷이 발생할 수 있으므로, 해당 패킷이 도착하도록 잠시 기다린다
      • 두 장치가 연결이 닫혔는지 확인한다.

인터넷 (Internet) 계층

  • 장치로부터 받은 패킷을 지정된 목적지로 전송하기 위해 사용되는 계층
  • IP 등이 존재하며, 패킷을 수신해야 하는 상대의 주소를 지정하여 (예: IP 주소) 데이터를 전달한다.

링크 계층

  • 전선, 광섬유, 무선 등 실질적으로 데이터를 전달하며 장치 간에 신호를 주고받는 규칙을 정하는 계층
  • 네트워크 접근 계층이라고도 함
    (내용 추가 예정)

계층 간 데이터 송수신 과정

  • 데이터 전송 시, 아래 순서로 프로토콜이 포장된다.
    • 애플리케이션 -> 전송 -> 인터넷 -> 링크
  • 데이터 수신 시, 아래 순서로 프로토콜의 포장을 풀어낸다.
    • 링크 -> 인터넷 -> 전송 -> 애플리케이션
  • "포장"을 뜻하는 고상한 표현 - 캡슐화 (encapsulation)
    • 객체지향의 캡슐화와 동일하지는 않지만 유사한 정의를 가진다
    • 상위 계층의 헤더와 데이터 내용을 하위 계층의 데이터에 포함시키는 것

PDU

  • 네트워크의 계층 간 데이터가 전달될 때, 한 덩어리의 단위를 PDU (Protocol Data Unit)이라고 한다.
  • 제어 관련 정보를 포함하는 '헤더', 데이터를 뜻하는 '페이로드' 등이 존재하며, 계층마다 이를 부르는 이름이 다르다.

댓글