TLS handshake 과정
·
Interview/Network
TLS handshake 과정TLS (Transport Layer Security) 핸드셰이크 과정은 클라이언트와 서버 간에 안전한 통신을 설정하기 위한 중요한 절차입니다. 이 과정은 클라이언트와 서버가 서로 인증하고, 암호화 키를 교환한 후, 안전한 연결을 설정하는 일련의 단계로 이루어집니다.TLS 핸드셰이크는 여러 단계로 나뉘며, 주로 네 가지 핵심 목표를 달성합니다:암호화 알고리즘 협상 (암호 스위트 결정)서버 인증 (인증서 확인)세션 키 생성 (대칭키 생성)데이터 암호화 시작 (보안 채널 생성)TLS 핸드셰이크 과정은 보통 아래와 같은 단계로 진행됩니다:1. ClientHello목적: 클라이언트가 서버에 연결을 시작하고, 사용할 수 있는 암호화 설정을 제안.내용:TLS 버전: 클라이언트가 지원하는..
URL Parsing 내부 로직 C, Golang 구현
·
Interview/Network
URL Parsing 내부 로직 구현URL 파싱은 주어진 URL을 파트별로 나누는 작업입니다. URL은 다음과 같은 형식을 따릅니다.scheme://host:port/path?query#fragment각 부분을 나누어 추출하는 C 코드 예제를 아래에 작성하였습니다.URL 파싱 C 코드#include #include #include #define MAX_URL_LEN 2048// Structure to store parsed URL componentstypedef struct { char scheme[32]; char host[256]; int port; char path[512]; char query[256]; char fragment[256];} URL;// Functi..
웹브라우저에서 도메인을 접근하기 위한 내부 트래픽 로직
·
Interview/Network
웹브라우저에서 도메인을 접근하기 위한 내부 트래픽 로직웹브라우저가 특정 도메인에 접근할 때 내부적으로 발생하는 트래픽 로직은 여러 단계를 거치며, 이 과정에서 DNS 요청, 네트워크 통신, 그리고 여러 프로토콜이 사용됩니다. 아래는 웹브라우저가 도메인에 접근하는 전체 흐름을 간단히 설명한 것입니다.1. URL 입력 및 파싱사용자가 브라우저에 URL을 입력하면, 브라우저는 해당 URL을 파싱합니다.URL은 보통 다음과 같은 형식을 따릅니다: https://www.example.com:443/path?query=abc#fragmenthttps : 프로토콜 (HTTP, HTTPS)www.example.com : 도메인443 : 포트 번호 (생략되면 기본값 사용)/path, ?query=abc, #fragmen..
OS Critical Section 임계 구역
·
Interview/OS
임계 구역 (Critical Section)임계 구역은 여러 스레드 또는 프로세스가 동시에 접근할 수 없는 코드 블록을 말합니다. 이는 공유 자원에 접근하는 코드에서 동시 실행으로 인해 잘못된 동작이 발생할 수 있는 부분을 보호하는 역할을 합니다. 즉, 여러 작업이 경쟁 상태(Race Condition)를 일으킬 수 있는 부분을 임계 구역으로 설정하여 동기화합니다.임계 구역에서는 하나의 스레드 또는 프로세스만 접근할 수 있으며, 다른 스레드나 프로세스는 그 구역이 해제될 때까지 기다려야 합니다. 이로 인해 공유 자원에 대한 동시 접근이 제한되어, 데이터의 일관성과 무결성을 유지할 수 있습니다.임계 구역의 주요 요구 사항임계 구역을 설정할 때는 다음과 같은 조건을 만족해야 합니다.상호 배제(Mutual E..
OS Disk Swap 디스크 스왑
·
Interview/OS
디스크 스왑 Disk Swap디스크 스왑(Swap)은 운영체제에서 물리 메모리(RAM)가 부족할 때, 디스크의 일부를 가상 메모리로 사용하는 기법입니다. 스왑은 페이징 시스템의 연장선으로, 운영체제가 메모리 부족 문제를 해결하기 위해 디스크를 사용하는 방법입니다. 아래에서는 디스크 스왑의 내부 로직과 작동 방식을 설명하겠습니다.디스크 스왑의 개념스왑 공간은 운영체제가 디스크 상에 설정한 특정 영역입니다. 이 공간은 주로 RAM이 부족할 때, 일시적으로 데이터를 저장하는 데 사용됩니다.스왑은 주로 비활성 페이지(현재 자주 사용되지 않는 메모리 영역)를 디스크에 옮겨, 활성 메모리에 자리를 마련하고, 현재 필요로 하는 데이터를 메모리에 올리기 위한 목적입니다.디스크 스왑의 동작 방식1. 메모리 부족 상황 발..
OS Delayed Write 지연 쓰기
·
Interview/OS
Delayed Write지연 쓰기(Delayed Write)는 운영체제에서 디스크 쓰기 작업을 효율적으로 처리하기 위해 사용되는 기술로, 데이터를 즉시 디스크에 기록하지 않고 메모리에 임시로 저장한 후 나중에 한 번에 기록하는 방식입니다. 이 방식은 주로 배치 작업(Batch Operation)으로 처리되며, 여러 쓰기 요청을 모아서 디스크 I/O를 최소화하고 시스템 성능을 높이는 역할을 합니다.지연 쓰기의 내부 로직1. 데이터 쓰기 요청 발생애플리케이션이 파일에 데이터를 쓰려는 요청을 보냅니다. 이 때, 운영체제는 디스크 I/O 작업을 바로 실행하지 않고, 데이터를 먼저 메모리 캐시(Page Cache)에 저장합니다.이 메모리 캐시는 페이지 캐시 또는 버퍼 캐시라고 하며, 자주 접근하는 데이터를 저장해..
OS 페이징과 캐시
·
Interview/OS
OS 페이징과 캐시운영체제에서 캐싱과 페이징은 메모리 관리와 성능 향상을 위한 핵심 개념입니다. 이 둘은 프로세스와 데이터를 더 빠르고 효율적으로 처리하기 위해 CPU와 메모리 사이의 자원 관리 방식에 관련된 개념입니다. 아래에서는 각각의 내부 로직을 설명하겠습니다.1. 캐싱 (Caching)개념:캐싱은 자주 사용되거나 접근할 가능성이 높은 데이터를 저장 공간에 임시로 저장하여, 해당 데이터에 대한 접근 속도를 높이는 방법입니다. 일반적으로 CPU 캐시나 디스크 캐시로 나누어지며, 운영체제는 이 캐싱을 통해 I/O 병목 현상을 줄이고, 데이터 접근 속도를 크게 향상시킬 수 있습니다.캐시의 내부 로직:1. CPU 캐시:CPU는 메모리(RAM)보다 속도가 훨씬 빠릅니다. 하지만 RAM에서 데이터를 가져오는 ..
Multiprocess간 IPC 중 메모리 매핑 파일
·
Interview/OS
메모리 매핑 파일Multiprocess 간의 통신(IPC, Inter-Process Communication)은 서로 다른 프로세스가 데이터를 주고받거나 리소스를 공유하는 방법입니다. 운영체제에서 프로세스는 독립된 메모리 공간을 가지기 때문에 직접적으로 데이터를 공유할 수 없습니다. 따라서 IPC 기법을 사용하여 프로세스 간의 데이터를 전달하거나 동기화해야 합니다.Linux 및 Unix에서 사용하는 다양한 IPC 방법들을 아래에 설명합니다.메모리 매핑 파일 (Memory-Mapped File)메모리 매핑 파일(Memory-Mapped File)은 파일을 메모리에 매핑하여, 여러 프로세스가 파일 내용을 메모리처럼 접근할 수 있는 방식입니다.이를 통해 파일 기반 데이터 공유가 가능하며, 프로세스 간에 파일을..
김 정출
'Interview' 카테고리의 글 목록 (8 Page)