CS 16

네트워크 계층의 핵심: 라우팅 (Routing)

네트워크 계층의 중요한 역할 중 하나는 패킷을 목적지까지 올바르게 전달하는 것입니다.이 과정을 라우팅(Routing)이라고 부릅니다.🤔 라우팅(Routing)이란?라우팅(Routing)은 네트워크에서 데이터 패킷이 출발지부터 목적지까지 가는 최적의 경로를 찾아 전달하는 과정입니다. 마치 GPS가 목적지까지의 최적 경로를 안내해주는 것과 비슷하죠. 라우팅의 핵심 요소🔹 라우터(Router)서로 다른 네트워크를 연결하는 네트워크 장비패킷의 목적지를 확인하고 최적 경로를 결정네트워크의 "교통 관제탑" 역할🔹 라우팅 테이블(Routing Table)라우터가 참조하는 경로 정보 데이터베이스"목적지 네트워크 → 다음 홉(Next Hop)" 매핑 정보 저장실시간으로 업데이트되며 최적 경로 유지⚡ 라우팅의 기본 ..

CS/네트워크 2025.09.01

🌐 HTTP와 HTTPS — 웹 통신의 핵심 프로토콜

HTTP(HyperText Transfer Protocol)는 웹에서 클라이언트와 서버 간 데이터 전송을 위해 사용되는 프로토콜입니다.HTTPS(HyperText Transfer Protocol Secure)는 HTTP에 TLS/SSL 암호화 계층을 추가하여 보안성을 강화한 버전입니다.백엔드 개발자에게 HTTP/HTTPS는 필수적으로 이해해야 하는 통신 규약입니다. API 설계, 서버 구축, 성능 최적화, 보안 대응 등 대부분의 웹 서비스가 이 프로토콜 위에서 동작하기 때문입니다.🔍 핵심 개념📡 HTTP 특징텍스트 기반의 요청/응답 프로토콜비연결성 (Connectionless): 요청-응답 후 연결 종료 (HTTP/1.1부터 Keep-Alive로 연결 재사용 가능)무상태성 (Stateless): 각 ..

CS/네트워크 2025.08.15

데이터 전송의 기본: TCP와 UDP

인터넷에서 데이터를 주고받을 때 사용하는 핵심 프로토콜인 TCP와 UDP. 웹사이트를 볼 때, 게임을 할 때, 영상을 스트리밍할 때 모두 이 두 프로토콜 중 하나를 사용합니다.이 둘은 모두 IP(Internet Protocol) 위에서 동작하지만, 데이터 전송 방식과 특징이 완전히 다릅니다. 언제 어떤 프로토콜을 사용해야 할까요?🔒 TCP: 신뢰성 있는 연결 지향 전송TCP(Transmission Control Protocol)는 데이터를 신뢰성 있게, 순서대로, 손실 없이 전달하기 위한 연결 지향형 프로토콜입니다. 📌 TCP의 주요 특징1️⃣ 연결 지향(Connection-oriented)데이터 전송 전 3-way handshake로 연결 설정"안녕하세요?" → "네, 안녕하세요!" → "대화 시작..

CS/네트워크 2025.08.11

IP, PORT, DNS의 역할

네트워크에서 데이터를 주고받으려면 어디로 보낼지, 누구와 통신할지, 어떻게 찾아갈지를 정확히 알아야 합니다.이를 담당하는 것이 바로 IP 주소, 포트, DNS입니다.이번 글에서는 이 세 가지 개념을 구체적으로 설명하고, 요청이 어떻게 목적지에 도달하는지까지 알아보겠습니다.📍 IP 주소: 네트워크의 주소체계IP 주소는 네트워크 상에서 각 장치(컴퓨터, 서버, 스마트폰 등)를 식별하기 위한 고유한 논리적 주소입니다. 현실 세계의 집 주소와 비슷한 역할을 합니다. IP 주소의 형태:IPv4: 192.168.0.1, 8.8.8.8IPv6: 2001:0db8::1, fe80::1🌍 공인 IP vs 🏠 사설 IP구분설명예시특징🌍 공인 IP인터넷에서 전 세계적으로 고유한 주소1.1.1.1, 8.8.8.8외부에..

CS/네트워크 2025.08.08

네트워크 기본 개념

백엔드 개발을 하다 보면, API 호출이 느리거나 서버 간 연결이 안 되는 상황을 자주 마주하게 됩니다.이럴 때 문제를 제대로 이해하고 해결하기 위해서는 네트워크의 기본 구조와 동작 원리를 아는 것이 필수입니다.이번 글에서는 네트워크란 무엇인지, 그리고 OSI 7계층과 TCP/IP 4계층을 통해 데이터가 어떻게 이동하는지 정리하겠습니다.🌐 네트워크란 무엇인가?네트워크(Network)란 여러 대의 컴퓨터나 장치들이 서로 데이터를 주고받을 수 있도록 연결된 구조를 말합니다.우리가 브라우저에서 웹 페이지를 열 때, 내부적으로는 수많은 네트워크 장비와 프로토콜이 협력하여 데이터를 전달합니다.네트워크는 물리적인 선(케이블)뿐만 아니라, 무선(Wi-Fi, 5G 등)까지 포함하는 개념입니다.📚 OSI 7계층 vs..

CS/네트워크 2025.08.05

입출력 시스템 (I/O)

운영체제는 CPU, 메모리 외에도 하드디스크, 키보드, 마우스, 프린터, 네트워크 장비 등 다양한 입출력 장치(I/O Device)와 데이터를 주고받습니다.I/O 시스템은 느린 장치와 빠른 CPU 간의 속도 차이를 효율적으로 조율하는 중요한 역할을 합니다.🖥️ I/O 장치 분류 및 특성블록 장치(Block Device): 데이터를 블록 단위로 전송 (하드디스크, SSD, CD-ROM)문자 장치(Character Device): 문자 단위로 순차적 전송 (키보드, 마우스, 터미널)네트워크 장치: 패킷 기반 통신 (이더넷 카드, Wi-Fi 어댑터)🔄 I/O 장치 동작 방식입출력 장치는 일반적으로 CPU보다 훨씬 느립니다. 운영체제는 다음과 같은 방식으로 장치와 통신합니다. 1. 프로그램 직접 제어 (Po..

CS/운영체제 2025.07.25

파일 시스템과 저장장치

우리가 프로그램을 실행하거나 파일을 저장할 때, 그 정보는 어디에, 어떤 방식으로 저장되고 관리될까요?운영체제는 파일 시스템을 통해 데이터를 효과적으로 저장하고, 접근할 수 있게 해줍니다.✅ 파일 시스템이란?운영체제가 저장장치(HDD, SSD 등)에 데이터를 파일 형태로 저장하고, 관리하는 시스템파일 시스템은 디렉토리 구조를 통해 데이터를 체계적으로 관리하며, 파일 생성, 삭제, 읽기, 쓰기 등의 작업을 제공합니다.🔍 주요 구성 요소1. 파일 (File)연관된 데이터를 논리적으로 묶은 단위텍스트 파일, 바이너리 파일 등 다양한 형식 존재파일은 이름, 경로, 크기, 속성, 소유자 등의 메타데이터를 가짐2. 디렉토리 (Directory)파일을 그룹화하는 논리적 공간루트 디렉토리(/, C:\\\\) 아래 계..

CS/운영체제 2025.07.24

운영체제 메모리 관리

운영체제의 가장 중요한 책임 중 하나는 프로세스가 사용하는 메모리를 효율적으로 관리하는 것입니다. 한정된 물리 메모리(RAM)를 여러 프로세스에 나눠주고, 보호하면서도 효율적으로 사용하게 만드는 다양한 기법들이 존재합니다.✅ 메모리 관리란?여러 프로세스가 시스템의 메모리를 안전하고 효율적으로 사용할 수 있도록 OS가 메모리를 할당하고 회수하는 작업운영체제는 사용 가능한 물리 메모리를 관리하면서, 각 프로세스가 자기만의 메모리 공간을 갖고 있는 것처럼 보이게 만듭니다. 이를 위해 가상 메모리, 페이징, 세그멘테이션 등의 기술을 사용합니다. 메모리 관리의 목표메모리 보호: 프로세스 간 메모리 침범 방지메모리 공유: 필요시 프로세스 간 안전한 메모리 공유메모리 추상화: 프로그래머가 물리 메모리 세부사항을 몰라..

CS/운영체제 2025.07.23

동기화와 병행성 제어 - 멀티스레드 환경에서의 일관성 유지

멀티코어, 멀티스레드 환경이 기본이 된 현대의 컴퓨팅 환경에서는, 동시에 실행되는 작업들이 공유 자원에 접근하면서 생기는 경쟁 상태(Race Condition) 를 방지하는 것이 매우 중요합니다. 이 문제를 해결하기 위한 운영체제의 핵심 개념이 바로 동기화(Synchronization) 와 병행성 제어(Concurrency Control) 입니다.🤔 왜 동기화가 필요한가?동기화는 주로 다음과 같은 상황에서 필요합니다.여러 스레드가 동시에 같은 메모리(변수, 객체 등)에 접근할 때공유 자원에 대한 읽기/쓰기 작업이 충돌할 가능성이 있을 때연산이 원자적으로 보장되지 않을 때📝 예시로 살펴보기# 공유 변수 countcount = 0# 두 스레드가 동시에 실행def increment(): global ..

CS/운영체제 2025.07.17

CPU 스케줄링 - 한정된 CPU를 효율적으로 배분하는 법

운영체제의 가장 중요한 역할 중 하나는 CPU 자원을 여러 프로그램에게 공정하고 효율적으로 배분하는 것입니다. 이 작업을 CPU 스케줄링(CPU Scheduling) 이라고 합니다.이번 글에서는 CPU 스케줄링이 왜 필요한지, 어떤 방식으로 동작하는지, 그리고 실무에 어떤 영향을 주는지를 알아보겠습니다! 📚🤔 왜 CPU 스케줄링이 필요한가?현대 컴퓨터 시스템은 한정된 CPU(또는 코어) 를 여러 프로그램이 공유합니다. 특히 단일 코어 시스템이나, 실행 가능한 프로세스/스레드 수가 CPU 코어 수보다 많은 경우에는 더더욱 스케줄링이 중요해집니다.💡 핵심 포인트운영체제는 Ready 상태인 프로세스들 중 하나를 선택해 CPU를 할당하는데, 이 선택을 어떤 기준으로 하느냐에 따라 시스템 성능과 사용자 체감..

CS/운영체제 2025.07.16
728x90
반응형