🔥 컴퓨터가 숫자를 이해하는 방식

컴퓨터는 기본적으로 0과 1밖에 이해하지 못하는 기계입니다.
우리가 일반적으로 사용하는 숫자(10진수)를 컴퓨터가 이해할 수 있는 형태(2진수, 16진수 등)로 변환하는 과정이 필요합니다.

 

📌 이번 강에서는 컴퓨터가 숫자를 표현하는 방법을 학습합니다.
정보 단위 (비트, 바이트 등) 이해하기
이진법(2진수)와 십육진법(16진수)의 개념
2진수 ↔ 16진수 변환 방법
음수를 표현하는 방법 (2의 보수법)


🏗 1. 컴퓨터가 이해하는 정보 단위

비트(Bit)와 바이트(Byte)

📌 비트(Bit)란?

  • 컴퓨터가 이해할 수 있는 가장 작은 정보 단위
  • 0과 1, 즉 전기 신호의 "꺼짐(0)"과 "켜짐(1)"을 나타내는 최소 단위
  • 1비트는 두 가지(0 또는 1) 정보를 표현 가능

📌 비트(Bit) 개수에 따른 정보 표현 가능성

비트 개수 표현 가능한 정보 개수
1비트 2가지 (0, 1)
2비트 4가지 (00, 01, 10, 11)
3비트 8가지 (000~111)
n비트 2^n 개

 

📌 바이트(Byte)란?

  • 8비트(Bit) = 1바이트(Byte)
  • 하나의 문자(예: 'A')를 저장할 때 보통 1바이트 사용

더 큰 정보 단위

단위
크기
1 Byte 8 Bits
1 KB (킬로바이트) 1,000 Bytes
1 MB (메가바이트) 1,000 KB
1 GB (기가바이트) 1,000 MB
1 TB (테라바이트) 1,000 GB

 

📌 1024 vs 1000 기준?

  • 과거에는 1024 단위(2^10)를 기준으로 사용했지만,
  • 최근에는 1000 단위(KB=1000B)로 표기하는 경우가 많음.
  • 하지만 정확한 표기는 1024 단위를 따르는 것이 원칙 (예: 1 KiB = 1024 Bytes).

🎯 2. 이진법(2진수)이란?

컴퓨터는 0과 1만으로 숫자를 표현합니다.
이진법(Binary, 2진수) 이란, 숫자가 '2'가 될 때마다 자리 올림이 발생하는 진법입니다.

 

📌 이진법 변환 예시

10진수
2진수
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000

 

10진수 → 2진수 변환 방법

  1. 10진수를 2로 나눈 나머지를 기록
  2. 몫이 0이 될 때까지 반복
  3. 거꾸로 읽으면 2진수 완성

예) 10을 2진수로 변환

10 ÷ 2 = 5 ... 0  
5 ÷ 2 = 2 ... 1  
2 ÷ 2 = 1 ... 0  
1 ÷ 2 = 0 ... 1  
(위에서 아래로 읽으면 101010진수 10 = 2진수 1010)

 

🔢 3. 십육진법(16진수)

16진법이란?

  • 숫자가 16이 될 때 자리 올림이 발생하는 진법
  • 2진수로 표현하면 너무 길어지기 때문에 간결하게 표현하기 위해 사용
  • 0~9 이후 A(10), B(11), C(12), D(13), E(14), F(15)로 표현

📌 16진법 예시

10진수 2진수 16진수
0 0000 0
1 0001 1
10 1010 A
15 1111 F
16 0001 0000 10

2진수 ↔ 16진수 변환 방법

  • 2진수를 4비트씩 끊어서 변환하면 손쉽게 16진수로 변환 가능

예) 2진수 → 16진수 변환

1010  1101    1111  (2진수)
[A]    [D]    [F]  (16진수)
=> 16진수로 A D F

예) 16진수 → 2진수 변환

A = 1010,  D = 1101,  F = 1111
A D F = 1010 1101 1111 (2진수)

📌 16진수 표기 방법

  • 0x 접두사를 붙여 표기 → 예: 0xA3F
  • C언어나 Python 코드에서 사용되는 표기법

4. 음수를 표현하는 방법 (2의 보수)

📌 컴퓨터는 0과 1만 이해하기 때문에, 음수를 표현할 수 있는 방법이 필요
📌 현재 가장 많이 사용되는 방식은 '2의 보수(Two’s Complement)'

 

2의 보수 구하는 방법 1️⃣ 모든 비트를 반전(0↔1, 1↔0) 2️⃣ 1을 더하기

예) 2진수 5(0101)의 음수(-5)를 구하는 과정

 

1. 0101 (52진수)
2. 1010 (비트 반전)
3. 1011 (1 더하기)
=> 1011이 -5를 표현하는 2진수!​

 

📌 2의 보수 방식의 장점

  • 덧셈과 뺄셈을 동일한 연산 방식으로 처리 가능
  • 컴퓨터에서 음수를 쉽게 다룰 수 있도록 설계됨

🏁 정리: 컴퓨터가 숫자를 표현하는 방식

📌 컴퓨터는 0과 1(이진수)로 모든 데이터를 처리
📌 비트(Bit) → 바이트(Byte) → 킬로바이트(KB) 순으로 정보 단위 증가
📌 16진법을 사용하면 2진수를 더 쉽게 표현 가능
📌 2의 보수법을 이용하여 음수를 표현


이 블로그 포스트를 통해 배운 점

  • 컴퓨터는 0과 1(비트)로 정보를 처리한다
  • 2진수(이진법)와 16진수의 개념과 변환 방법
  • 음수를 표현하는 2의 보수법을 이해함

 

 

출처:
혼자공부하는 운영체제 - 강민철

🔥 컴퓨터 구조를 배우기 전에 큰 그림을 그려보자

컴퓨터 구조를 배우기 전에 무작정 세부적인 부품부터 학습하면 전체적인 흐름을 이해하기 어려울 수 있습니다.
따라서 컴퓨터 구조의 전반적인 개념을 먼저 파악하는 것이 중요합니다.

 

📌 이번 강에서는 컴퓨터 구조를 학습하는데 필요한 큰 그림을 그려봅니다.
컴퓨터가 이해하는 두 가지 정보: 데이터 & 명령어
컴퓨터의 네 가지 핵심 부품 (CPU, 메모리, 보조기억장치, 입출력장치)
이 부품들이 어떻게 상호작용하며 시스템을 구성하는지 학습


🏗 1. 컴퓨터가 이해하는 두 가지 정보

컴퓨터가 처리하는 정보는 크게 두 가지 종류로 나뉩니다.
1️⃣ 데이터 (Data)
2️⃣ 명령어 (Instruction, Command)


1️⃣ 데이터란?

컴퓨터가 다루는 모든 정적인 정보를 의미합니다.
예를 들어:

  • 숫자 (0, 1, 100, 255, -20, 3.14 등)
  • 문자 (A, B, 가나다, Hello 등)
  • 이미지, 동영상, 음성 파일

📌 데이터를 저장하고 처리하는 과정은 컴퓨터 구조의 핵심 개념 중 하나입니다.


2️⃣ 명령어란?

컴퓨터를 동작시키는 정보, 즉 CPU가 실행하는 작업입니다.
예를 들어:

  • "1과 2를 더하라" (덧셈 연산)
  • "문자열 'Hello'를 화면에 출력하라" (출력 연산)

📌 명령어는 데이터를 처리하는 역할을 하며, 컴퓨터는 명령어를 실행하여 프로그램을 동작시킵니다.


🛠 2. 컴퓨터의 네 가지 핵심 부품

컴퓨터의 종류와 관계없이 모든 컴퓨터에는 네 가지 핵심 부품이 존재합니다.
이 부품들이 서로 협력하여 데이터를 처리하고, 명령어를 실행합니다.

컴퓨터의 핵심 4대 부품

부품 역할
CPU (Central Processing Unit) 명령어를 실행하는 컴퓨터의 두뇌
메모리 (Memory, RAM) 현재 실행 중인 프로그램의 데이터와 명령어를 저장
보조기억장치 (Storage, HDD/SSD) 실행되지 않는 프로그램과 데이터를 장기 저장
입출력장치 (I/O Devices) 사용자와 컴퓨터 간의 데이터 송수신

📌 이 부품들이 어떻게 연결되고 작동하는지 이해하는 것이 컴퓨터 구조 학습의 핵심입니다.


🎯 3. 각 부품의 역할과 구조

1️⃣ 메모리 (Memory)

메모리는 현재 실행 중인 프로그램의 명령어와 데이터를 저장하는 공간입니다.

  • 프로그램이 실행되기 위해서는 메모리에 로드되어야 합니다.
  • RAM (Random Access Memory): 전원이 꺼지면 저장된 데이터가 사라짐.

📌 메모리는 실행 중인 프로그램을 빠르게 실행할 수 있도록 도와주는 역할을 합니다.


2️⃣ CPU (Central Processing Unit)

CPU는 컴퓨터의 두뇌 역할을 하며, 메모리에 저장된 명령어를 실행합니다.
CPU 내부에는 3가지 주요 구성 요소가 있습니다.

 

CPU의 주요 구성 요소

구성 요소 역할
ALU (Arithmetic Logic Unit, 산술논리연산장치) 계산(덧셈, 뺄셈 등)과 논리 연산 수행
레지스터 (Register) CPU 내부의 작은 저장 공간 (명령어 및 데이터 임시 저장)
제어장치 (Control Unit) 명령어를 해석하고 실행을 지시하는 역할

📌 CPU는 메모리에 저장된 명령어를 읽어 실행하며, 컴퓨터의 모든 연산을 담당합니다.


3️⃣ 보조기억장치 (Storage, HDD/SSD)

  • 실행되지 않는 프로그램과 데이터를 저장하는 공간
  • RAM과 달리 전원이 꺼져도 데이터가 유지됨
  • 하드디스크(HDD), 솔리드스테이트드라이브(SSD), USB 메모리 등이 포함됨

📌 실행 중인 프로그램은 메모리에 저장되지만, 실행되지 않는 프로그램은 보조기억장치에 저장됩니다.


4️⃣ 입출력장치 (I/O Devices)

  • 사용자와 컴퓨터 간의 데이터 송수신을 담당
  • 입력장치: 키보드, 마우스, 마이크
  • 출력장치: 모니터, 프린터, 스피커

📌 입출력장치는 사용자가 데이터를 입력하고, 컴퓨터가 처리한 결과를 출력하는 역할을 합니다.


🏁 정리: 컴퓨터 구조의 큰 그림

📌 컴퓨터는 데이터를 처리하고, 명령어를 실행하는 기계입니다.
📌 컴퓨터의 네 가지 핵심 부품은 서로 협력하여 동작합니다.

 

컴퓨터가 처리하는 정보
1️⃣ 데이터 (Data): 숫자, 문자, 이미지 등
2️⃣ 명령어 (Instruction): 데이터를 처리하는 작업

 

컴퓨터의 4대 부품

부품 역할
CPU 명령어를 실행하는 두뇌
메모리 실행 중인 프로그램을 저장
보조기억장치 실행되지 않는 프로그램과 데이터를 저장
입출력장치 사용자와 컴퓨터 간의 데이터 송수신

📌 이 개념을 이해하면, 이후 컴퓨터 구조 및 운영체제 개념을 쉽게 학습할 수 있습니다.


이 블로그 포스트를 통해 배운 점

  • 컴퓨터는 데이터를 처리하고, 명령어를 실행하는 기계이다.
  • 컴퓨터가 이해하는 정보는 데이터와 명령어로 나뉜다.
  • 컴퓨터의 4대 핵심 부품(CPU, 메모리, 보조기억장치, 입출력장치)의 역할을 이해했다.
  • 각 부품들이 어떻게 협력하여 시스템을 구성하는지 학습했다.

 

 

출처:
혼자공부하는 운영체제 - 강민철

🔥 왜 개발자는 컴퓨터 구조를 알아야 할까?

좋은 개발자가 되기 위해서는 단순히 프로그래밍 언어의 문법을 아는 것만으로는 부족합니다.
컴퓨터의 동작 원리를 이해하고, 성능과 비용을 고려한 효율적인 프로그래밍을 할 줄 알아야 합니다.

 

📌 이번 강에서는 컴퓨터 구조를 학습해야 하는 두 가지 핵심 이유를 다룹니다.
1️⃣ 문제 해결 능력 향상
2️⃣ 성능, 용량, 비용을 고려한 프로그래밍


🏗 1. 문제 해결 능력을 키울 수 있다

프로그래밍 언어 문법만으로 해결할 수 없는 문제

  • 프로그래밍을 배우면 보통 문법부터 학습하지만,
  • 실무에서는 코드 문법이 아니라 시스템 자체에서 발생하는 문제를 해결해야 할 때가 많음.
  • 예를 들어, 개발 환경에서는 정상적으로 동작하지만 배포 후 오류가 발생하는 경우가 빈번함.
  • 이런 문제들은 문법적인 오류가 아닌 시스템 내부의 문제일 가능성이 높음.

📌 이때 필요한 것이 "컴퓨터 구조에 대한 이해"!

  • 시스템이 어떻게 동작하는지 분석할 수 있어야 문제의 원인을 찾고 해결할 수 있음.
  • 컴퓨터를 미지의 대상이 아니라 분석할 수 있는 대상으로 바라볼 수 있어야 함.

컴퓨터를 분석 대상으로 바라보는 개발자가 되자

  • 컴퓨터 구조를 배우지 않은 사람은 컴퓨터를 미지의 존재로 인식하고 쉽게 포기하는 경향이 있음.
  • 반면, 컴퓨터 구조를 이해한 개발자는 문제의 원인을 분석할 줄 앎.
  • 컴퓨터 구조를 학습하면 문제 해결력을 키울 수 있으며, 더 좋은 개발자가 될 수 있음.

📌 채용 시장에서도 컴퓨터 구조를 이해하는 개발자를 선호

  • 실제로 구글과 삼성전자의 채용 공고를 보면, 컴퓨터 구조에 대한 이해가 있는 지원자를 우대함.
  • 컴퓨터 구조를 이해하는 것이 개발자로서 차별화되는 요소가 될 수 있음.

🛠 2. 성능, 용량, 비용을 고려한 프로그래밍

컴퓨터 구조를 이해하면, 프로그램을 개발할 때 성능, 용량, 비용을 고려할 수 있음.

성능, 용량, 비용이 중요한 이유

  • 많은 IT 대기업에서는 코드를 작성할 때 성능, 용량, 비용을 고려하는 것이 필수.
  • 무조건 저렴한 컴퓨터를 선택하면 성능이 부족하여 문제가 발생할 수 있음.
  • 반대로, 무조건 최신 컴퓨터를 사용하면 불필요한 비용이 발생할 수 있음.
  • 따라서, 개발자가 자신이 작성한 코드가 어느 정도의 성능과 자원을 요구하는지 판단할 수 있어야 함.

클라우드 환경에서도 성능과 비용은 중요한 요소

  • 최근에는 물리적인 서버 대신 클라우드(AWS, GCP, Azure 등)를 사용하는 경우가 많음.
  • 하지만, 클라우드를 사용하더라도 CPU, 메모리, 스토리지 등의 자원을 직접 선택해야 함.
  • 개발자가 성능과 비용을 고려하지 않으면 불필요한 리소스를 사용하게 되고, 비용이 증가할 수 있음.

📌 따라서, 컴퓨터 구조를 이해하는 것은 클라우드 환경에서도 매우 중요한 요소가 됨.


🎯 정리: 컴퓨터 구조를 학습해야 하는 이유

📌 컴퓨터 구조를 학습해야 하는 두 가지 핵심 이유
문제 해결 능력을 키울 수 있음

  • 컴퓨터를 미지의 존재가 아닌 분석 대상으로 바라볼 수 있도록 함
  • 실무에서 발생하는 시스템 오류를 해결하는 능력을 기를 수 있음
  • 채용 시장에서도 컴퓨터 구조를 이해하는 개발자를 선호

성능, 용량, 비용을 고려한 프로그래밍 가능

  • 적절한 하드웨어 리소스를 선택하여 최적의 성능을 내는 코드를 작성할 수 있음
  • 클라우드 환경에서도 CPU, 메모리, 스토리지 등의 선택이 중요
  • 불필요한 비용을 줄이고, 효율적인 프로그램을 개발할 수 있음

📌 결론:
"컴퓨터 구조를 이해하는 개발자가 더 좋은 개발자가 된다!" 🚀


이 블로그 포스트를 통해 배운 점

  • 프로그래밍 문법을 아는 것만으로는 좋은 개발자가 될 수 없다.
  • 컴퓨터 구조를 이해하면 문제 해결 능력을 향상할 수 있다.
  • 성능, 용량, 비용을 고려한 최적의 프로그래밍이 가능해진다.
  • 컴퓨터 구조를 학습하는 것은 실무에서 반드시 필요한 지식이다.

 

 

출처:
혼자공부하는 운영체제 - 강민철

🔥 네트워크를 미시적으로 살펴보는 이유

이전 강에서는 네트워크를 거시적으로 살펴보는 방법을 다루었습니다.
이번엔 네트워크를 좀 더 세부적으로(Micro) 관찰하며, 데이터가 어떻게 전송되는지 학습합니다.

 

📌 네트워크 미시적 분석의 핵심:
두 대의 호스트가 데이터를 주고받을 때 어떤 일이 일어나는지 이해하기
데이터(패킷)가 이동하는 과정에서 사용되는 프로토콜을 알아보기


🏗 패킷(Packet)이란?

현대 대부분의 네트워크는 패킷 교환 방식(Packet Switching) 을 사용합니다.
즉, 데이터를 패킷 단위로 나누어 전송하며, 각 패킷에는 제어 정보(헤더)와 실제 데이터(페이로드)가 포함됩니다.

패킷의 구조

[Header] | [Payload] | [Trailer]
  • 헤더(Header): 송신자/수신자 주소, 패킷 번호 등
  • 페이로드(Payload): 실제 전송할 데이터
  • 트레일러(Trailer): 오류 검출 정보

📌 일상 속에서 패킷을 쉽게 이해하기
택배를 주고받는 과정과 유사
택배 박스(패킷) 안에는 실제 물건(페이로드)과 배송 정보(헤더)가 포함됨
택배 기사(네트워크 장비)가 물건을 정확한 주소로 전달


🛠 네트워크의 언어, 프로토콜(Protocol)

📌 프로토콜이란?
네트워크에서 데이터를 올바르게 주고받기 위해 정해진 규칙과 방법

 

프로토콜이 필요한 이유

  • 데이터를 주고받는 모든 장비가 같은 규칙을 따라야 원활한 통신 가능
  • 서로 다른 네트워크 장비(컴퓨터, 서버, 라우터)가 같은 언어를 사용해야 함

일상 속 프로토콜 예시

  • 우리가 대화를 할 때, 같은 언어(예: 한국어, 영어)를 사용해야 이해 가능
  • 네트워크에서도 각 기기가 같은 프로토콜을 사용해야 데이터 전송 가능

🎯 프로토콜의 종류와 역할

1️⃣ IP (Internet Protocol)

📌 IP는 "데이터를 목적지까지 전달하는 역할"을 수행

  • 송신지에서 수신지까지 패킷을 정확히 전달
  • 패킷이 이동하는 경로(Route)를 결정
  • 네트워크에서 가장 기본적인 프로토콜
[송신자] --- (IP 주소 기반 데이터 전송) ---> [수신자]

 

IP 프로토콜의 특징

  • IP 주소를 기반으로 목적지를 식별
  • 데이터가 여러 개의 네트워크를 거쳐 전달됨
  • 패킷 단위로 데이터를 전송하므로, 일부 패킷이 손실될 수 있음

2️⃣ ARP (Address Resolution Protocol)

📌 ARP는 "IP 주소를 MAC 주소로 변환하는 프로토콜"

  • IP 주소만으로는 로컬 네트워크에서 데이터를 전송할 수 없음
  • ARP를 통해 IP 주소에 대응하는 MAC 주소를 찾아 데이터 전송
[IP 주소] → [MAC 주소 찾기] → [데이터 전송]

 

ARP의 역할

  • IP 주소를 기반으로 같은 네트워크 내 장치를 찾음
  • 네트워크 통신의 첫 단계에서 중요한 역할 수행

3️⃣ HTTP vs HTTPS

📌 HTTP (HyperText Transfer Protocol)와 HTTPS (Secure HTTP)의 차이

  • HTTP: 웹 페이지를 요청하고 응답하는 기본 프로토콜
  • HTTPS: HTTP에 보안(SSL/TLS 암호화)을 추가한 프로토콜

HTTPS는 보안성이 뛰어남

  • 데이터를 암호화하여 해커가 도청할 수 없도록 보호
  • 온라인 결제, 로그인 페이지 등에서 필수적으로 사용됨
[HTTP 요청] → [웹 서버] → [HTTP 응답]

 

📌 웹 개발자는 HTTP/HTTPS의 원리를 반드시 이해해야 함


4️⃣ TCP vs UDP

📌 TCP (Transmission Control Protocol)

  • 데이터를 안정적으로 전송
  • 패킷이 순서대로 도착하도록 신뢰성 높은 전송 방식 제공
  • 웹 브라우징, 이메일, 파일 다운로드 등에 사용됨

📌 UDP (User Datagram Protocol)

  • 빠른 속도로 데이터를 전송하지만, 신뢰성이 낮음
  • 패킷이 일부 손실될 수 있지만 속도가 중요한 경우 사용
  • 온라인 게임, 스트리밍, VoIP(인터넷 전화) 등에 사용됨

TCP vs UDP 비교

비교 항목 TCP UDP
신뢰성 높음 (순서 보장, 재전송 기능) 낮음 (패킷 손실 가능)
속도 느림 (확인 과정 필요) 빠름 (확인 과정 없음)
사용 사례 웹 브라우징, 파일 전송 실시간 스트리밍, 게임

 

📌 TCP는 신뢰성이 필요한 데이터 전송, UDP는 속도가 중요한 데이터 전송에 사용됨


🏁 정리: 네트워크에서 프로토콜의 역할

📌 네트워크에서 프로토콜은 데이터를 올바르게 주고받기 위한 규칙
📌 각 프로토콜은 특정 목적과 특징을 가짐

 

주요 프로토콜 정리

프로토콜 역할
IP 목적지까지 패킷을 전달
ARP IP 주소를 MAC 주소로 변환
HTTP/HTTPS 웹 페이지 요청 및 응답 (HTTPS는 보안 강화)
TCP 신뢰성 높은 데이터 전송 (순서 보장)
UDP 빠른 데이터 전송 (순서 미보장)

 

📌 개발자가 네트워크 프로토콜을 이해하면 더욱 최적화된 시스템을 개발할 수 있음


이 블로그 포스트를 통해 배운 점

  • 패킷(Packet)의 구조와 역할
  • 프로토콜(Protocol)이란 무엇이며, 왜 필요한가?
  • IP, ARP, HTTP, TCP/UDP 등 주요 프로토콜의 개념과 차이점
  • 각 프로토콜이 네트워크에서 어떤 역할을 수행하는지 이해

 

 

출처:
혼자공부하는 네트워크 - 강민철

🔥 네트워크에서 주소(Address)와 전송 방식이 중요한 이유

네트워크에서 데이터를 송수신할 때 어떤 기기(호스트)로 데이터를 전송할지를 결정해야 합니다.
이를 위해 네트워크에서는 주소(Address) 개념이 필수적으로 사용됩니다.

📌 주소(Address)란?

네트워크에서 송신자(보내는 쪽)와 수신자(받는 쪽)를 특정하는 정보

  • 주소가 없다면 데이터를 어디로 보내야 할지 알 수 없음
  • 네트워크에서는 다양한 주소 체계를 사용하여 데이터가 정확한 목적지에 도달하도록 설계

네트워크에서 사용되는 대표적인 주소 체계 1️⃣ IP 주소 → 인터넷에서 가장 많이 사용되는 주소
2️⃣ MAC 주소 → 로컬 네트워크에서 사용되는 장치 고유 주소

📌 이러한 주소 정보는 네트워크 패킷의 "헤더(Header)"에 포함되어 있음
📌 패킷이 송수신될 때 반드시 주소 정보가 필요함


🏗 네트워크 패킷(Packet)과 헤더(Header)의 역할

네트워크에서 데이터를 전송할 때 패킷(Packet) 단위로 전달됨
패킷은 크게 헤더(Header), 페이로드(Payload), 트레일러(Trailer) 로 구성됨.

패킷 구조

[Header] | [Payload] | [Trailer]
  • 헤더(Header): 송신자/수신자 주소, 패킷 번호 등 제어 정보 포함
  • 페이로드(Payload): 실제 전송할 데이터
  • 트레일러(Trailer): 오류 검출 정보

📌 헤더(Header)에 담기는 대표적인 정보송신자 주소 (Sender Address) → 패킷을 보낸 기기의 주소
수신자 주소 (Receiver Address) → 패킷을 받을 기기의 주소
기타 제어 정보 → 패킷 번호, 프로토콜 정보 등


🛠 네트워크의 전송 방식 (송수신 유형)

네트워크에서는 데이터를 전송할 때 수신지를 특정하는 방식이 다릅니다.
주로 네 가지 전송 방식이 존재합니다.

1️⃣ 유니캐스트(Unicast) - 1:1 전송

📌 특징

  • 네트워크에서 가장 일반적인 데이터 전송 방식
  • 송신자가 특정한 하나의 수신자에게만 데이터를 전송

📌 예제

  • 웹 브라우징 (내 PC → 구글 서버)
  • 이메일 전송 (내 PC → 상대방 이메일 서버)
[송신자] → [수신자]

일반적인 네트워크 통신 방식
특정 기기 간의 개별 통신이 필요할 때 사용


2️⃣ 브로드캐스트(Broadcast) - 1:N 전송 (모든 호스트에게 전송)

📌 특징

  • 하나의 기기가 같은 네트워크에 연결된 모든 기기에게 데이터를 전송
  • 네트워크 내부에서만 사용되며, 인터넷에서는 사용되지 않음
  • 로컬 네트워크에서 정보를 공유할 때 사용

📌 예제

  • DHCP 요청 (IP 자동 할당)
  • ARP(Address Resolution Protocol) (MAC 주소 확인)
[송신자] → [네트워크 내 모든 수신자]

네트워크 내부에서 특정 정보 공유에 유용
하지만 불필요한 트래픽을 발생시킬 수 있음

📌 브로드캐스트 도메인(Broadcast Domain)이란?

  • 브로드캐스트 메시지가 전달되는 네트워크 범위
  • 보통 하나의 LAN(Local Area Network) 을 의미
  • 라우터를 지나지 않음 (즉, 같은 네트워크 안에서만 브로드캐스트 가능)

3️⃣ 멀티캐스트(Multicast) - 1:특정 그룹 전송

📌 특징

  • 특정한 그룹(Group)에게만 데이터를 전송
  • 유니캐스트와 브로드캐스트의 중간 형태

📌 예제

  • 화상 회의 (Zoom, Webex 등)
  • 스트리밍 서비스 (IPTV, 스포츠 중계 등)
[송신자] → [특정 그룹]

브로드캐스트보다 효율적이고, 특정 그룹만 데이터를 받을 수 있음
멀티캐스트 그룹 주소를 활용하여 특정 기기만 데이터 수신 가능


4️⃣ 애니캐스트(Anycast) - 1:가장 가까운 서버로 전송

📌 특징

  • 여러 개의 서버 중 가장 가까운 서버로 데이터 전송
  • DNS, CDN(Content Delivery Network) 같은 서비스에서 많이 사용됨

📌 예제

  • DNS 서버 요청 (Google DNS - 8.8.8.8)
  • Cloudflare CDN (웹사이트 로딩 속도 향상)
[송신자] → [가장 가까운 서버]

빠른 응답 속도를 위해 최적의 서버로 연결
글로벌 서비스에서 네트워크 부하를 줄이기 위해 사용


🎯 정리: 네트워크에서의 주소와 전송 방식

📌 네트워크에서 주소(Address)는 송수신지를 특정하는 핵심 정보
📌 헤더(Header)에 송신자/수신자 정보가 포함됨


📌 전송 방식은 네 가지로 구분됨
유니캐스트(Unicast)1:1 전송 (웹 브라우징, 이메일)
브로드캐스트(Broadcast)1:N 전송 (DHCP, ARP 요청)
멀티캐스트(Multicast)1:특정 그룹 전송 (화상 회의, IPTV 스트리밍)
애니캐스트(Anycast)1:가장 가까운 서버로 전송 (DNS 요청, CDN)

 

📌 유니캐스트와 브로드캐스트는 가장 많이 사용되는 방식
📌 멀티캐스트와 애니캐스트는 효율적인 네트워크 트래픽 관리를 위해 활용


이 블로그 포스트를 통해 배운 점

  • 네트워크에서 주소(Address)의 역할과 중요성
  • 패킷(Packet) 구조와 헤더(Header)에 포함되는 정보
  • 네트워크 전송 방식 (유니캐스트, 브로드캐스트, 멀티캐스트, 애니캐스트)
  • 실무에서 사용되는 주요 네트워크 프로토콜의 전송 방식

 

 

출처:
혼자공부하는 네트워크 - 강민철

🔥 네트워크의 분류 기준

이전 강에서는 네트워크의 기본 개념과 구조를 살펴보았습니다.
이번엔 네트워크를 어떻게 분류할 수 있는지에 대해 학습합니다.

 

📌 네트워크 분류 기준은 크게 두 가지로 나뉩니다.
1️⃣ 범위에 따른 분류 (LAN vs WAN)
2️⃣ 메시지 교환 방식에 따른 분류 (회선 교환 vs 패킷 교환)


🏗 1. 범위에 따른 네트워크 분류

네트워크는 연결된 범위에 따라 크게 두 가지로 나뉩니다.

1️⃣ LAN (Local Area Network, 근거리 통신망)

📌 특징

  • 근거리에 있는 기기들을 연결하는 네트워크
  • 한정된 공간 내에서 구축 (가정, 사무실, 학교 등)
  • 빠른 속도와 낮은 지연 시간(Low Latency)
  • 개발자가 관리하는 네트워크 대부분이 LAN

📌 예제

  • 집에서 사용하는 Wi-Fi 네트워크
  • 회사 내부의 사무실 네트워크
  • 대학교 캠퍼스 네트워크
[노트북] --- Wi-Fi --- [공유기] --- 유선 --- [사무실 네트워크]

LAN은 보통 한정된 공간에서 한 개인이나 조직이 구축한 네트워크를 의미
개발자가 구축하고 관리하는 대부분의 네트워크는 LAN


2️⃣ WAN (Wide Area Network, 광역 통신망)

📌 특징

  • 멀리 떨어진 지역까지 연결하는 네트워크
  • 다른 LAN과 연결하여 데이터를 주고받는 역할
  • 인터넷이 대표적인 WAN의 예시
  • 주로 인터넷 서비스 제공업체(ISP)가 구축하고 관리

📌 예제

  • 인터넷 (KT, SKT, LG U+ 등 ISP가 제공)
  • 기업 간 전용 회선
  • 국가 간 연결된 해저 케이블
[사무실 LAN] --- 인터넷(ISP) --- [해외 데이터 센터 LAN]

WAN은 주로 ISP(인터넷 서비스 제공업체)가 관리
인터넷을 통해 LAN끼리 연결될 때 WAN이 사용됨


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

네트워크에서 데이터(메시지)를 주고받는 방식에 따라 크게 두 가지로 나뉩니다.

1️⃣ 회선 교환 방식 (Circuit Switching)

📌 특징

  • 메시지를 주고받기 전에 고정된 경로(회선)를 먼저 설정
  • 설정된 회선을 통해서만 데이터를 전송
  • 전송로를 예약하고 사용하기 때문에 전송 속도가 일정함

📌 예제

  • 전통적인 유선 전화망 (PSTN, Public Switched Telephone Network)
  • 전화 통화를 할 때, 상대방과 연결되면 하나의 회선이 유지
  • 통화가 끝나기 전까지 다른 데이터는 해당 회선을 사용하지 못함
[A 사용자] ----- (고정된 회선) ----- [B 사용자]
 

장점:

  • 전송 속도가 일정하고 안정적
  • 실시간 음성 통신에 적합 (전화, 음성 회의 등)

단점:

  • 회선이 예약된 동안 비효율적 (데이터가 전송되지 않더라도 회선 점유)
  • 네트워크 자원 낭비가 발생할 가능성이 있음

2️⃣ 패킷 교환 방식 (Packet Switching)

📌 특징

  • 메시지를 여러 개의 작은 패킷(Packet) 단위로 쪼개서 전송
  • 각 패킷은 최적의 경로를 찾아 독립적으로 이동
  • 네트워크의 이용 효율이 높음

📌 예제

  • 인터넷 (TCP/IP 기반 네트워크)
  • 웹사이트 요청, 파일 다운로드, 이메일 송수신
[A 사용자] ----> [라우터] ----> [B 사용자]  
(A → B로 패킷이 여러 경로를 통해 이동)

장점:

  • 네트워크 자원을 효율적으로 사용 (여러 사용자가 하나의 네트워크를 공유 가능)
  • 대용량 파일 전송 가능 (예: 영화 다운로드)
  • 인터넷에서 널리 사용되는 방식

단점:

  • 패킷이 다른 경로로 이동하므로, 도착 순서가 다를 수 있음
  • 일시적인 네트워크 지연(Jitter) 가능

📌 현대 인터넷 환경에서는 대부분 패킷 교환 방식이 사용됨
📌 웹 개발자라면 패킷 구조와 데이터 흐름을 이해하는 것이 중요


🎯 정리: 네트워크의 분류

📌 네트워크는 범위와 메시지 교환 방식에 따라 분류 가능

범위에 따른 네트워크 분류

분류 설명 예제
LAN (근거리 네트워크) 한정된 공간 내에서 연결 가정, 사무실 Wi-Fi
WAN (광역 네트워크) 멀리 떨어진 지역까지 연결 인터넷 (ISP 제공)

 

메시지 교환 방식에 따른 분류

분류 설명 예제
회선 교환 방식 고정된 회선을 먼저 설정 후 메시지 전송 전화 통화 (PSTN)
패킷 교환 방식 데이터를 여러 패킷으로 나눠 최적 경로로 전송 인터넷 (TCP/IP)

📌 오늘날 인터넷에서 사용되는 네트워크는 "패킷 교환 방식"
📌 앞으로의 강의에서는 패킷의 구조와 데이터 흐름을 집중적으로 다룰 예정


이 블로그 포스트를 통해 배운 점

  • 네트워크의 기본적인 분류 (LAN vs WAN)
  • 메시지 교환 방식 (회선 교환 vs 패킷 교환)
  • 현대 인터넷이 패킷 교환 방식을 사용하는 이유
  • 개발자가 네트워크의 흐름을 이해해야 하는 이유

 

출처:
혼자공부하는 네트워크 - 강민철

+ Recent posts