본문 바로가기

분류 전체보기

(113)
공유기 및 스위치에 대하여 📡 공유기의 작동 원리 완벽 정리 (with NAT)✅ 개요공유기(Router)는 집에서 흔히 사용하는 장비로, 여러 대의 디바이스가 하나의 인터넷 회선을 함께 사용하도록 해주는 장치입니다. 정확히 말하자면 공유기는 "인터넷"이 아니라 "IP 주소"를 공유하게 해주는 기술이며, 이 과정에서 NAT(Network Address Translation) 라는 기법이 핵심 역할을 합니다.📌 1. 공유기의 기본 구조공유기는 내부적으로 다음 두 가지를 포함합니다:라우터 기능 (L3 계층): 패킷을 목적지 네트워크로 전달.스위치 기능 (L2 계층): LAN 내부 장치들끼리 통신하도록 중계.📌 2. NAT 작동 방식 (가장 중요한 개념!)📥 아웃바운드(내부 → 외부)내부 PC가 네이버 접속 (예: 192.168..
TCP 송/수신 원리 🔍 이해하면 인생이 바뀌는 TCP 송·수신 원리TCP 통신 구조는 단순히 '보내고 받는다' 이상의 복잡한 흐름을 갖고 있습니다. 이 글에서는 TCP 통신의 내부 동작 원리를 송신부터 수신까지 단계별로 정리해보았습니다. 특히 속도 지연이나 병목 현상의 원인을 파악하는 데 중요한 흐름 제어 개념까지 함께 다룹니다.📦 TCP 데이터 전송의 흐름1. 전송 준비 – 파일에서 메모리로서버는 전송할 데이터를 한꺼번에 전송하지 않고 일정 크기(예: 64KB)씩 잘라서 메모리에 올립니다.이 데이터를 send() 등을 통해 커널의 TCP 송신 버퍼로 넘기며 전송이 시작됩니다.예시: 1.3MB 파일을 64KB 단위로 나누어 전송2. TCP 세그먼트 구성메모리에 올려진 데이터는 TCP가 **세그먼트(segment)**라는..
가상 메모리(VM)에 대해 📌 가상 메모리 개요 – 핵심 개념과 운영의 의미 정리✅ 가상 메모리란?물리 메모리(RAM)와 분리된 논리적인 메모리 공간각 프로세스는 자신만의 독립된 주소 공간을 가진다고 착각하게 만들어줌CPU가 직접 접근하는 것이 아니라, 운영체제가 주소 변환을 통해 물리 메모리와 매핑시켜줌💡 즉, "프로세스 입장에서 거대한 배열처럼 보이는 가짜 공간"✅ 가상 메모리의 도입 배경과 필요성🔸 문제점컴퓨터마다 RAM 크기가 다름 → 소프트웨어를 쓸 때마다 대응이 힘들었음프로그램 간 메모리 충돌, 메모리 누수 등 문제 발생🔸 가상 메모리의 역할기능 설명추상화(Abstract)모든 프로그램에 동일한 메모리 구조 제공 (ex. 항상 4GB, 64GB 등)보안(Secure Isolation)각 프로세스는 자기 메모리 외..
멀티 스레드(multi thread) 멀티 쓰레드(Thread)란 무엇인가?하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고자원의 생성과 관리의 중복성을 최소화하여수행 능력을 향상시키는 것을 멀티쓰레딩이라고 한다.하나의 프로그램에 동시에 여러개의 일을 수행할수 있도록 해주는 것이다.멀티 쓰레드를 사용하는 이유는?프로세스를 이용하여 동시에 처리하던 일을 쓰레드로 구현할 경우메모리 공간과 시스템 자원 소모가 줄어들게 된다.쓰레드 간의 통신이 필요한 경우에도 별도의 자원을 이용하는 것이 아니라전역 변수의 공간 또는 동적으로 할당된 공간인 힙(Heap) 영역을 이용하여 데이터를 주고받을 수 있다.그렇기 때문에 프로세스 간 통신 방법에 비해쓰레드 간의 통신 방법이 훨씬 간단하다.심지어 쓰레드의 문맥 교환은 프로세스 문맥 교환과는 달리캐시..
페이징 기법 📌 가상 메모리와 페이징 기법 정리 (매우 중요!)✅ 가상 메모리란?물리 메모리(RAM)보다 큰 주소 공간을 사용하는 논리적인 메모리 공간각 프로세스는 자신만의 독립된 4GB(32bit 기준) 주소 공간을 갖는다고 생각하면 됨이 주소 공간은 실제 메모리와 1:1로 매핑되지 않음💡 쉽게 말해:가상 메모리는 "4GB짜리 거대한 배열" 처럼 생각하면 된다.배열 안에는 스택, 힙, 코드 영역 등이 포함되어 있고, 실제 물리 주소와는 다르다.✅ 왜 가상 메모리가 필요할까?메모리 보호: 각 프로세스는 자기 주소 공간만 사용 (서로 간섭 불가)효율적인 자원 관리: 실제로 필요한 메모리만 할당프로그래밍 편의성: 프로세스는 자신의 주소 공간만 알면 됨✅ 페이징(Paging) 기법이란?가상 메모리를 고정된 크기(Pag..
B+tree vs B-tree ✅ 요약부터: B-tree vs B+tree 차이항목 B-tree B+tree데이터 저장 위치모든 노드(내부+리프)에 데이터 저장리프 노드에만 데이터 저장리프 노드 연결연결 안 되어 있음리프 노드끼리 연결되어 있음 (순차 접근 가능)탐색 속도탐색 경로마다 길이가 다를 수 있음항상 리프까지 가야 탐색, 경로 일관적범위 조회 성능느림빠름 (리프 노드 연결로 인해 인접 데이터 쉽게 접근 가능)사용 분야일반적인 트리 구조, 메모리 기반 구조에 적합DB 인덱스 구조, 디스크 기반 저장에 최적화✅ 구조적 차이▶ B-tree모든 노드(루트, 내부 노드, 리프 노드)에 키와 데이터가 저장됨노드 수가 많아지면 탐색 경로가 다양해지고 깊이가 작음▶ B+tree모든 키는 내부 노드에만 존재모든 데이터는 리프 노드에만 저장됨..
힙과 우선순위 큐 📌 우선순위 큐와 힙(Heap)의 개념과 차이, 사용 사례 정리✅ 우선순위 큐(Priority Queue)란?우선순위 큐는 일반 큐(Queue)와 달리 들어온 순서가 아닌, 우선순위에 따라 먼저 처리되는 자료구조입니다.일반 큐는 FIFO(First-In-First-Out)우선순위 큐는 우선순위가 높은 값이 먼저 나옴🔧 주요 연산insert(item, priority): 아이템과 우선순위를 함께 넣음delete(): 가장 우선순위가 높은 아이템 제거 및 반환peek(): 가장 우선순위 높은 아이템 확인 (제거는 안 함)✅ 힙(Heap)이란?힙은 우선순위 큐를 구현하기 위한 자료구조 중 하나로, 완전 이진 트리를 기반으로 합니다.(※ 완전 이진 트리란, 마지막 레벨을 제외한 모든 노드가 꽉 차 있고 왼쪽..
객체 지향 프로그래밍이란? 이걸 왜 쓰나요? ✅ 객체 지향 프로그래밍이란?**객체 지향 프로그래밍(OOP, Object-Oriented Programming)**은현실 세계의 사물을 프로그램 안의 '객체(object)'로 모델링해서**속성(데이터)**과 **행동(기능)**을 함께 정의하고, 이 객체들 간의 상호작용으로 프로그램을 구성하는 방식이야.✅ OOP의 4대 특징캡슐화 (Encapsulation)객체는 데이터와 기능을 하나로 묶고, 외부에는 필요한 부분만 공개해.예: private 필드 + public getter/setter상속 (Inheritance)기존 객체(부모)의 속성과 기능을 재사용하면서 새로운 객체(자식)를 만들 수 있어.코드 중복 감소 + 계층 구조 생성 가능다형성 (Polymorphism)같은 메시지를 보냈을 때 객체에 따라 ..