CS 16

[Network] TCP와 UDP의 차이점

WeeklyPaper: 전송 계층에서 TCP와 UDP의 차이점은 무엇이며, 각각 어떤 상황에서 사용하는 것이 적절한가요?전송 계층은 데이터가 올바른 대상 애플리케이션에 전달되도록 보장하는 역할을 한다. 이 계층의 가장 대표적인 두 프로토콜은 TCP와 UDP다. 두 프로토콜은 명확한 차이점을 가지고 각각 다른 상황에 사용하는 것이 적절하다. 복습을 위해 OSI 7 Layer, TCP/IP 4 Layer에 관한 다이어그램을 가져왔다:TCP (Transmission Control Protocol)TCP는 연결 지향(Connection-Oriented) 프로토콜이다. 데이터를 전송하기 전에 반드시 상대방과 3-way handshake를 통해 연결을 설정하고, 4-way handshake를 통해 해제한다. 신뢰성..

CS/Networking 2025.10.31

[Network] TCP/IP 4계층 모델과 OSI 7계층 모델

WeeklyPaper: TCP/IP 4계층 모델과 OSI 7계층 모델에 대해 각각 설명하고, 두 모델을 비교해보세요. TCP/IP 와 OSI 7계층 구조 둘다 네트워크 통신에 필요한 프로토콜들을 계층화하여 체계적으로 구성한 모델들이다.하지만 각 모델의 계층 수와 명칭과 기능이 약간 다르다.OSI 7계층 모델 (이론)OSI 7계층 모델(Open Systems Interconnection Model)은 국제표준화기구(ISO)가 정의한 네트워크 통신 표준 참조 모델이다. 통신 과정을 7개의 논리적인 단계로 나누어, 각 계층이 독립적인 기능을 수행하도록 설계되었다. 이는 복잡한 네트워크 문제를 쉽게 파악하고, 장비 간 호환성을 높이기 위한 이론적인 표준이다.각 계층을 간단하게 정리해보았다:7계층 (응용 계층 -..

CS/Networking 2025.10.30

[OS] 로컬 캐시와 분산 캐시

WeeklyPaper: 로컬 캐시와 분산 캐시의 개념 차이와 각각의 장단점, 그리고 실무에서 어떤 기준으로 선택해야 하는지 설명해주세요.캐시(Cache)와 캐싱(Caching)캐시 (Cache)데이터나 값을 미리 복사해 놓는 임시로 저장해두는 고속 메모리를 가리킨다.캐시의 유형은 여러가지가 있다 - CPU 캐시 (CPU와 RAM사이의 속도를 줄이기 위해 사용됨, L1-L3), 메모리 캐시, 웹 브라우저 캐시, 등캐싱 (Caching)Cache + ing = 데이터를 캐시에 저장하고 필요할 때 빠르게 접근하는 기법이다. 캐싱을 통해 데이터 접근하는 시간을 줄이거나 값을 다시 계산하는 시간을 절약하고 싶을 경우에 사용한다.캐싱의 전략은 여러가지가 있다 - LRU, FIFO, LFU, Write-Through..

CS/OS 2025.10.22

[OS] 경쟁 상태(Race Condition)과 다양한 해결 전략

WeeklyPaper: 멀티스레드 환경에서 발생하는 대표적인 문제 중 하나인 경쟁 상태(Race Condition)에 대해 설명하고, 이를 해결하기 위한 다양한 전략을 설명해보세요.Race Condition경쟁 상태 (Race Condition)이란 두개의 프로세스가 공통 자원을 병행적으로 (concurrently) 읽거나 쓰는 동작을 할때, 공용 데이터에 대한 접근이 어떤 순서로 이루어졌는지에 따라 실행 결과가 달라지는 상황을 의미한다.간단히 말하면 말 그대로 Race 처럼 두개의 스레드가 하나의 자원을 놓고 경쟁하는 것을 말한다.Critical Section (임계 영역)운영 체제에서 여러 프로세스가 데이터를 공유하면서 수행될 때 각 프로세스에서 공유 자원에 접근하는 프로그램 코드 부분을 의미한다. ..

CS/OS 2025.10.16

[Security] JWT(JSON Web Token)의 구조와 구성 요소

WeeklyPaper: JWT(JSON Web Token)의 구조와 각 구성 요소가 어떤 역할을 하는지 구체적으로 설명하세요.JWT (Json Web Token)은 웹 표준으로, 온라인 네트워크에서 정보를 안젆게 통신할 때 사용하는 인터넷 표준 토큰이다. 간결하고, URL에 안전하게 사용할 수 있다는 장점이 있다. JWT의 구성JWT는 3가지로 구성되어있다: 헤더(header), 페이로드 (payload), 서명 (Signature).세 가지 주요 요소로 구성되고 각 구성은 . 마침표를 구분자로 사용한다.헤더 (header)일단적으로 토큰의 유형 (JWS,JWE)과 서명 알고리즘을 명시한다.이 JSON 객체는 Base64Url로 인코딩되어 JWT의 첫 번째 부분을 형성한다.일반적으로 두 가지 정보로 구성..

CS/Security 2025.09.30

[Security] OAuth 2.0의 주요 컴포넌트와 Authorization Code Grant 흐름

WeeklyPaper: OAuth 2.0의 주요 컴포넌트와 Authorization Code Grant 흐름을 설명하세요.OAuth 2.0OAuth 2.0은 인증(Authentication)을 위한 프로토콜이 아니라, 권한 허가(Authorization)를 위한 산업 표준 프레임워크다. 사용자가 특정 애플리케이션(제3자 앱)에게 자신의 비밀번호 같은 민감한 자격 증명을 직접 제공하지 않으면서, 자신이 소유한 자원(Resource)에 접근할 수 있는 제한된 권한을 위임(Delegate)하는 방법을 정의한다. 호텔에 비유하면 이해하기 쉽다. 우리는 호텔방에 들어가기 위해 마스터키를 복사해서 주차 관리원에게 주지 않는다. 대신, 프런트 데스크(권한 서버)에 가서 신원을 확인받고, 주차 관리원이 '주차장 출입'..

CS/Security 2025.09.25

[Security] 세션 기반 인증과 토큰 기반 인증

WeeklyPaper: 세션 기반 인증과 토큰 기반 인증의 차이점과 각각의 보안 고려사항에 대해 설명하세요.배경로그인 후 유저의 인증 상태를 유지하기 위해 세션 또는 토큰 방식을 사용한다.이렇게 해야 하는 이유는 HTTP 프로토콜의 속성 때문이다.기본적으로 서버는 각 HTTP 요청을 독립적 사건으로 취급한다. 그래서 이전 요청의 맥락 (로그인 여부, 유저 정보 등)을 자동으로 기억하지 않는다.HTTP 1.1에서 keep-alive가 있어도, 이는 TCP 소켓 재사용일 뿐 응용 계층의 인증상태를 보장하지 않는다. 또한, 실제 서비스는 로드 밸런서, 다수의 서버, 캐시, 프록시가 개입한다. 서버 로컬 메모리에만 의존한다면 다른 서버로 라우팅되는 순간 인증 상태를 잃어버린다. 중앙 저장소 (세션 스토어)나, ..

CS/Security 2025.09.25

[Docker] db-data 볼륨과 데이터 저장

과제를 하는 도중에 docker compose down을 하고 docker compose up --build를 다시 실행해봤더니, 이전에 생성됐던 데이터들이 postgres db에 아직 저장이 되어있었다. 그 이유는 docker-compose down 명령어는 컨테이너는 삭제하지만 데이터 볼륨은 일부러 남겨두기 때문이다.도커 컨테이너 (db): 컴퓨터 본체와 같다 -> 언제든지 껐다 켤 수 있고, 심지어 새 컴퓨터로 교체할 수도 있다도커 볼륨 (db-data): 외장 하드 드라이브와 같다 -> 중요한 파일(DB 데이터)을 여기에 저장한다.docker-compose down 명령어를 실행하면 컴퓨터를 끄지만 연결에 두었던 외장하드는 그대로 남아있는 것과 비슷하다고 보면 된다.application.ymlse..

CS/Docker 2025.08.25

[Docker] 컨테이너 오케스트레이션의 개념과 필요

WeeklyPaper: 컨테이너 오케스트레이션의 개념과 필요성을 설명하고, Docker 단독 사용 환경과 비교하여 컨테이너 오케스트레이션이 해결하는 주요 문제점 3가지(자동 확장, 자가 복구, 선언적 인프라)를 설명하세요.실제 서비스 환경에서는 수십, 수백 개의 컨테이너가 여러 서버에 걸쳐 동시에 실행되어야 한다 (Microservices에 많이 쓰임). 유저 트래픽이 몰리면 컨테이너를 늘리고 특정 컨테이너에 문제가 생기면 즉시 교체해야 하는데, 이 모든 것을 사람이 직접 24시간 수동으로 모니터링 하는 것은 불가능하다.Docker 단독 사용의 한계Docker만로도 컨테이너를 생성하고 실행하는 것은 잘 해낼 수 있지만, 여러 서버에 걸쳐 수많은 컨테이너를 운영하는 프로덕션 환경에서는 여러 문제점들이 발생..

CS/Docker 2025.08.20

[Docker] 컨테이너 기술 VS Docker

WeeklyPaper: 컨테이너 기술과 Docker를 명확히 구분하여 설명하세요. 컨테이너 기술이 Docker 이전에도 존재했던 개념임을 언급하고, Docker가 컨테이너 기술을 구현한 하나의 도구라는 관점에서 설명해주세요. 또한, Docker 외에 컨테이너 기술을 구현한 다른 도구의 예시를 들어보세요.컨테이너 기술컨테이너 기술이란, 애플리케이션을 실행에 필요한 모든 파일(코드, 런타임, 시스템 도구, 라이브러리 등)과 함께 패키징하여, 어떤 환경에서든 빠르고 안정적으로 실행할 수 있도록 격리하는 기술이다.컨테이너는 OS의 커널(Kernel)을 공유하면서도, 각 컨테이너는 독립된 공간(프로세스, 파일 시스템, 네트워크)을 할당받아 마치 별개의 서버에서 작동하는 것처럼 보인다. 이 덕분에 가상 머신(VM)..

CS/Docker 2025.08.19