[혼공네트] Chapter 01. 컴퓨터 네트워크 시작하기 (1주차)

한샛코드·2024년 12월 29일
0
post-thumbnail

01-1. 컴퓨터 네트워크를 알아야하는 이유

  • 컴퓨터 네트워크(computer network, 네트워크) - 여러 장비를 그물(Net)처럼 서로 연결하여, 정보를 주고받을 수 있는 통신망

네트워크의 네트워크, 인터넷

  • 인터넷(internet) - 여러 네트워크를 연결하는 네트워크 (네트워크의 네트워크)
    • 네트워크에 연결된 주변 장치와 더불어 (네트워크에 연결되어 있는) 멀리 있는 장치와도 정보를 주고 받을 수 있음

개발자가 컴퓨터 네트워크를 알아야 하는 이유

  1. 프로그램을 만드는 업무에서의 상황
    • 일부 라이브러리는 네트워크에 대한 배경 지식이 있어야 활용할 수 있음
    • 프로그램의 안전성 및 안정성이나 보안 향상 등을 위해서 네트워크 지식이 활용됨
  2. 프로그램을 유지 보수하는 업무에서의 상황
    • 인터넷 연결이 안되거나, 웹 서버가 동작하지 않는 문제 등의 해결에 실마리가 됨

01-2. 네트워크 거시적으로 살펴보기

시작하기 전에

네트워크는 노드, 간선으로 이루어진 그래프의 형태를 띠고 있음

  1. 노드(node) - 정보를 주고받을 수 있는 장치, 정점(vertex)라고도 부름
  2. 간선(edge) - 노드와 노드를 연결함, 링크(link)라고도 부름
  3. 그래프(graph) - 각 노드를 연결하는 간선으로 연결된 자료 구조

네트워크의 기본 구조

네트워크는 호스트, 네트워크 장비, 통신 매체, 메시지로 구성됨

  1. 호스트(host) - 네트워크에 가장자리에 위치한 노드로, 네트워크를 통해 흐르는 정보를 최초로 생성 및 송신하고, 최종적으로 수신함 (우리가 사용하는 일반적인 네트워크 기기)
    • 네트워크의 가장자리에 자리 잡고 있다는 점에서 종단 시스템(end system)이라고도 부름
    • 호스트를 네트워크 내에서의 특정 역할에 따라 서버클라이언트로 나눌 수 있음
      1. 서버(server) - 서비스를 제공하는 호스트 (ex. 파일/웹/메일 서버)
      2. 클라이언트(client) - 서버에게 서비스를 요청하고, 서버의 응답을 제공받는 호스트 (ex. 웹브라우저)
  2. 네트워크 장비(중간 노드) - 호스트끼리 주고 받는 정보가 중간에 거치는 노드 (허브, 스위치, 라우터 등)
    • 다만, 호스트와 네트워크 장비를, 서버와 클라이언트를 완전 베타적인 것으로 생각하면 안됨
      • ex. 데스크탑을 일반적으로 사용(호스트)할 수 있는 동시에 핫스팟(네트워크 장비)로도 사용할 수 있고, 웹서핑(클라이언트)을 하거나 웹 배포(서버)를 할 수 있음
  3. 통신 매체 - 각 노드를 연결하는 간선이며, 유선 매체, 무선 매체가 있음
  4. 메시지(message) - 노드들이 주고 받는 정보 (웹페이지, 파일, 메일 등)

범위에 따른 네트워크 분류

네트워크의 범위를 기준으로 분류하면 [ LANCANMANWAN ] 이라고 말할 수 있음

  1. LAN(Local Area Network) - 가까운 지역을 연결한 근거리 통신망

    • ex. 가정, 학교, 회사 등과 같은 '한정된 공간'에 구성된 네트워크
  2. WAN(Wide Area Network) - 멀리 떨어진 지역(LAN)을 연결하는 광역 통신망

    • 인터넷 또한 WAN이라고 할 수 있음 (다른 LAN에 속한 호스트와 메시지를 주고 받음)
    • 우리가 사용하는 일반적인 인터넷(WAN)은 ISP(Internet Service Provider)가 구축하고 관리함
    • WAN의 모든 것이 인터넷인 것은 것은 아니기에, 비공개적인 WAN을 구축할 수도 있음
  1. CAN(Campus Area Network) - 학교나 회사의 여러 건물 단위로 연결되는 규모의 네트워크
  2. MAN(Metropolitan Area Network) - 도시 단위로 연결되는 규모의 네트워크

메시지 교환 방식에 따른 네트워크 분류

  1. 회선 교환 방식(curcuit switching) - 메시지를 주고 받기 전에 회선(curcuit)을 설정하고, 설정된 회선을 통해 메시지를 주고 받음
    • 주요 네트워크 장비 - 회선 스위치 (호스트 간의 일대일 회선을 확보)
    • 주어진 시간동안 전송되는 정보의 양이 비교적 일정함
    • 단, 메시지를 주고 받지 않으면서 회선을 점유하면 회선의 이용 효율이 낮아질 수 있음
  1. 패킷 교환 방식(packet switching) - 메시지를 패킷 단위로 잘라서 전송함
    • 패킷(packet) - 패킷 교환 네트워크에서 주고 받는 메시지의 단위
    • 정해진 경로만으로 메시지를 주고 받지 않음 (하나의 회선을 점유하지 않음)
    • 패킷 스위치 - 최적의 경로를 결정하거나 패킷의 송수신지를 식별함
      • 주요 네트워크 장비 - 라우터(router), 스위치(switch)
    • 패킷은 페이로드헤더트레일러로 구성됨
      - 페이로드(payload) - 패킷을 통해 전송하고자 하는 데이터
      - 헤더(header)트레일러(trailer) - 패킷의 부가 정보 (제어 정보)

주소와 송수신지 유형에 따른 전송 방식

  • 패킷에 헤더에 담기는 대표적인 정보로는 주소(송수신지를 특정하는 정보)가 있음
    • 네트워크에서 사용되는 주소 - IP 주소, MAC 주소
  • 송수신지 유형에 따라 다양한 방식으로 메시지를 보낼 수 있음
    1. 유니캐스트(unicast) - 하나의 수신지에 메시지를 전송하는 방식 (일대일)
    2. 브로드캐스트(broadcast) - 자신을 제외한 네트워크상의 모든 호스트에게 전송하는 방식
      • 브로드캐스트 도메인(domain) - 브로드캐스트가 전송되는 범위 (브로드캐스트 수신지)
    3. 멀티캐스트(multicast) - 네트워크 내 동일 그룹에 속한 호스트에게 전송하는 방식
    4. 애니캐스트(anycast) - 네트워크 내 동일 그룹에 속한 호스트 중 가장 가까운 호스트에게 전송하는 방식

01-3. 네트워크 미시적으로 살펴보기

프로토콜

  • 프로토콜(protocol) - 노드간 합의된 규칙이나 방법
    • 서로 다른 통신 장치들이 정보를 주고 받으려면, 프로토콜이 통해야 함
  • 모든 프로토콜은 목적특징이 있음
    • 프로토콜에 따라서 패킷의 부가 정보(헤더 내용)가 달라질 수 있음

네트워크 참조 모델

  • 네트워크 참조 모델(network reference model, 네트워크 계층 모델) - 통신이 일어나는 각 과정을 계층으로 나눈 구조
  • 통신 과정을 계층으로 나눈 이유
    1. 네트워크 구성과 설계가 용이함 - 각 계층이 수행해야할 역할이 정해져 있으므로, 계층의 목적에 맞게 프로토콜과 네트워크 장비를 계층별로 구성할 수 있음
    2. 네트워크 문제 진단과 해결이 용이함 - 문제의 원인을 계층별로 진단하기 수월함
  1. OSI 모델 - 국제 표준화 기구(ISO)에서 만든 네트워크 참조 모델이고, 통신 단계를 7단계로 나눔

    1. 물리 계층(physical layer) - 0과 1로 이루어진 비트 신호(데이터)를 주고 받는 계층
      • 통신 매체에 맞는 신호(전기, 빛, 전파 등)로 운반되도록 비트 데이터의 변환 후 송수신이 이루어짐
    2. 데이터 링크 계층(data link layer) - 네트워크 내 주변 장치 간의 정보를 올바르게 주고받기 위한 계층
      • 물리 계층을 통해 주고받은 정보가 오류가 없는지 확인함
      • MAC 주소 체계를 통해 네트워크 내 송수신지를 특정할 수 있음
      • 전송 과정에서 발생하는 충돌 문제를 해결하기도 함
    3. 네트워크 계층(network layer) - 메시지를 (다른 네트워크에 속한) 수신지까지 전달하는 계층
      • 네트워크 간의 통신이 이루어짐 (사실상 인터넷을 가능하게 하는 계층)
      • IP 주소 체계를 통해 통신하고자 하는 수신지 호스트 및 네트워크를 식별함
      • 원하는 수신지에 도달하기 위한 최적의 경로를 결정함
    4. 전송 계층(transport layer) - 패킷의 흐름을 제어하거나, 전송 오류를 점검하는 계층
      • 포트 정보를 통해 실행중인 응용 프로그램을 식별하기도 함
    5. 세션 계층(session layer) - 세션을 생성 혹은 유지하고, 종료되었을 때 끊는 역할을 하는 계층
      • 세션 - 통신을 주고 받는 호스트의 응용 프로그램 간 연결 상태
    6. 표현 계층(presentation layer) - 문자를 코드로 변환하거나, 압축, 암호화 작업을 하는 계층
    7. 응용 계층(application layer) - 응용 프로그램에 다양한 네트워크 서비스를 제공하는 계층
  2. TCP/IP 모델 - 이론보다는 구현에 중점을 둔 네트워크 참조 모델

    • TCP/IP 4계층, internet protocol suite, TCP/IP protocol stack이라고도 부름
    1. 네트워크 엑세스 계층(network access layer) - OSI 모델의 데이터 링크 계층과 유사함
      • 링크 계층(link layer) 또는 네트워크 인터페이스 계층(network interface layer)이라고도 부름
    2. 인터넷 계층(internet layer) - OSI 모델의 네트워크 계층과 유사함
    3. 전송 계층(transport layer) - OSI 모델의 전송 계층과 유사함
    4. 응용 계층(application layer) - OSI 모델의 세션 계층, 표현 계층, 응용 계층을 합친 것과 유사
  3. OSI 모델 vs. TCP/IP 모델 (숙제)

    • OSI 모델은 네트워크 통신을 이해하기 위한 이론적 설계를 위한 참조에 가까움
    • TCP/IP 모델은 실제 네트워크 구축을 위한 실용적 구현을 위한 참조에 가까움

캡슐화와 역캡슐화

  1. 캡슐화(encapsulation) - 정보를 송신할 때, 상위 계층으로부터 내려받은 패킷을 페이로드로 삼고, 프로토콜에 맞는 헤더(및 트레일러)를 덧붙인 후 하위 계층으로 전달하는 과정
  2. 역캡슐화(decapsulation) - 정보를 수신할 때, 캡슐화 과정에서 붙였던 헤더(및 트레일러)를 각 계층에서 확인한 뒤 제거하는 과정

PDU

  • PDU(Protocol Data Unit) - 각 계층에서 송수신되는 메시지의 단위
    • 상위 계층에서 전달받은 데이터에 현재 계층의 프로토콜 헤더(및 트레일러)를 추가하면 현재 계층의 PDU가 됨
    • OSI 모델의 각 계층에서의 PDU
      1. 물리 계층 - 비트(bit, symbol)
      2. 데이터 링크 계층 - 프레임(frame)
      3. 네트워크 계층 - 패킷(packet, IP packet) / IP 데이터그램(IP datagram)
      4. 전송 계층 - (TCP) 세그먼트(segment), (UDP) 데이터그램(datagram)
      5. 응용 계층, 표현 계층, 세션 계층 - 데이터(data) / 메시지(message)

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

  • 트래픽(traffic) - 네트워크 내의 정보량
    • 트래픽이 몰리면(노드가 처리해야할 정보가 많음) 과부하가 생길 수 있음
  • 네트워크 성능을 평가할 수 있는 3가지 지표
    1. 처리율(throughput) - 단위시간당 네트워크를 통해 실제로 전송되는 정보량
    2. 대역폭(bandwidth) - 단위 시간 동안 통신 매체를 통해 송수신할 수 있는 최대 정보량
    3. 패킷 손실(packet loss) - 송수신되는 패킷이 손실된 상황
      • 높은 트래픽으로 인해 노드가 순간적으로 처리해야할 패킷이 많아질 때 발생
      • 네트워크에 장애가 발생하여 패킷을 처리하지 못할 때 발생

추가 숙제

  • 네트워크에 대한 설명으로 옳지 않은 것을 골라 보세요.
    1. 네트워크에 대한 이해는 프로그램을 만드는 과정에 도움을 주지 않습니다.
      • 프로그래밍 언어나 웹 프레임워크, 라이브러리를 사용할 때 네트워크에 관한 지식이 있어야 활용을 할 수가 있으므로 오답
    2. 네트워크에 대한 이해는 프로그램을 유지 보수하는 과정에 도움을 줄 수 있습니다.
    3. 많은 프로그램이 네트워크를 통해 다른 장비와 상호 작용하며 실행됩니다.
    4. 채용 시 네트워크에 대한 지식을 강조하거나 검증하는 기업이 존재합니다.
  • 네트워크 참조 모델에 대한 설명으로 옳지 않은 것을 골라보세요.
    1. OSI 모델은 7개의 계층으로 통신 과정을 구분합니다.
    2. TCP/IP 모델은 3개 계층으로 통신 과정을 구분합니다.
      • TCP/IP 모델은 네트워크 엑세스 계층, 인터넷 계층, 전송 계층, 응용 계층으로, 4개 계층이므로 오답
    3. 네트워크 참조 모델은 네트워크 구성과 설계를 용이하게 합니다.
    4. 네트워크 참조 모델은 네트워크 문제 진단과 해결을 용이하게 합니다.

회고

 사실 네트워크에 대해서는 작년 7월까지 통신병으로 복무하여 약간의 지식은 가지고 있었다. UTP 케이블이나 IP나 MAC주소 개념에 대한 것 등이 그러하다. 하지만 업무에서 필요에 따라 핵심만 외워서 그런지, 이것이 어떤 원리로 작동하는지에 대해서는 알지 못하였다. (이 점에 대해서는 담당관님께 여쭈어보면 당연히 알 수 있었지만, 사실상 알려고 하지 않은 것에 가까웠다) 예를 들어, 허브와 스위치의 원리적 차이점이거나 복수 개의 스위치를 사용하는 것이 어떤 원리로 작동하는 것인가라던가. 원리를 이해하고 그 다음으로 배우려고 하는 나에게는 여러가지 궁금한게 정말 많았다. 그래서 이번 기회에 2학년으로 복학 전에 전공 공부도 할 겸, 이러한 궁금증을 해소하기 위해 '혼자 공부하는 네트워크'라는 책을 통해 '컴퓨터 네트워크'라는 세계에 첫 발을 딛게 되었다. 네트워크를 공부하며 '혼공학습단 13기'에 참가하게 되었는데, 참가하면서 'Velog'라는 글쓰기 플랫폼에도 가입하게 되어, 이제부터라도 컴퓨터 관련된 지식을 여러가지를 정리해볼 예정이다.

profile
개발도 하고 요리도 하는 노근본 개발자

0개의 댓글

관련 채용 정보