IT 개발 라이프/CS 11

브라우저(Browser) 동작 방법

웹 서핑을 하다 보면 여러 URL을 통해 다양한 사이트를 방문하게 됩니다. 그렇다면 우리가 브라우저 주소창에 URL을 입력했을 때, 어떤 과정을 거쳐 원하는 페이지가 화면에 표시될까요?이는 웹의 기본적인 개념이지만, 막상 설명하려면 "렌더링", "파싱" 등 복잡한 용어들이 등장해 난감할 수 있습니다. 크롬, 파이어폭스, 사파리와 같은 오픈소스 브라우저를 기준으로, 브라우저가 동작하는 과정을 알아보겠습니다.브라우저의 주요 기능브라우저는 사용자가 요청한 자원을 서버에서 받아와 화면에 표시합니다. 이 자원은 HTML 문서, PDF, 이미지 등 다양한 형태일 수 있으며, 자원의 위치는 URI(Uniform Resource Identifier)에 의해 결정됩니다.브라우저는 HTML과 CSS 명세를 따라 HTML ..

CSRF(Cross-Site Request Forgery)

1. CSRF란 무엇인가?CSRF(Cross-Site Request Forgery)는 웹 보안 공격의 한 유형으로, 공격자가 인증된 사용자의 권한을 도용하여 사용자의 의지와는 무관하게 특정 요청을 서버로 보내도록 유도하는 방식입니다. 이를 통해 공격자는 피해자의 계정으로 악의적인 행동(데이터 삭제, 권한 변경, 거래 요청 등)을 수행할 수 있습니다.예시)사용자가 A 사이트에 로그인하여 인증 쿠키를 보유하고 있습니다.공격자는 악성 웹 페이지를 생성하여 사용자가 이 페이지를 방문하도록 유도합니다.사용자가 페이지를 방문하면, 공격자의 페이지에서 A 사이트로 악의적인 요청을 보냅니다.브라우저는 사용자가 이미 인증된 세션을 보유하고 있기 때문에, 해당 요청은 인증된 사용자로 간주되어 처리됩니다.2. CSRF의 작..

DNS(Domain Name System): 인터넷 주소록

1. DNS란 무엇인가?DNS(Domain Name System)는 사용자가 이해하기 쉬운 도메인 이름과 컴퓨터가 이해할 수 있는 숫자로 이루어진 IP 주소를 연결하는 분산 데이터베이스 시스템입니다.주요 역할도메인 이름을 IP 주소로 변환: 사용자가 "www.google.com"을 입력하면 DNS가 이를 해당 IP 주소로 변환하여 연결합니다.인터넷 자원의 이름 관리: DNS는 웹사이트뿐만 아니라 이메일 서버, 네트워크 장치 등 인터넷 자원의 이름을 관리합니다.DNS의 필요성사용자 편의성: 숫자로 이루어진 IP 주소를 기억하기 어려운 사용자를 위해, 이해하기 쉬운 이름을 제공합니다.확장성: 인터넷 자원이 증가함에 따라 도메인 이름 체계를 통해 효율적으로 관리할 수 있습니다.2. DNS의 작동 원리DNS는 ..

HTTP와 HTTPS의 차이

1. HTTP란 무엇인가?HTTP(HyperText Transfer Protocol)는 인터넷에서 데이터를 주고받기 위한 프로토콜입니다. 웹 서버와 웹 브라우저가 서로 통신할 때 사용하며, 텍스트, 이미지, 비디오 등 다양한 데이터를 전송합니다.주요 특징비암호화된 통신: HTTP는 데이터를 암호화하지 않고 전송하기 때문에, 네트워크 상에서 데이터를 쉽게 도청당할 수 있습니다.빠른 전송 속도: 암호화 과정이 없으므로 HTTPS보다 속도가 약간 더 빠를 수 있습니다.2. HTTPS란 무엇인가?HTTPS(HyperText Transfer Protocol Secure)는 HTTP에 보안(SSL/TLS) 계층을 추가한 프로토콜입니다. 데이터를 암호화하여 전송하며, 사용자와 서버 간의 보안성을 보장합니다.주요 특징..

TCP와 UDP: 무엇이 다를까?

인터넷에서 데이터를 전송하는 방식에는 TCP와 UDP라는 두 가지 주요 프로토콜이 존재합니다. 이 두 프로토콜은 인터넷 통신에서 중요한 역할을 하지만, 그 동작 방식에는 큰 차이가 있습니다. 이제 TCP와 UDP의 차이를 살펴보겠습니다. TCP (Transmission Control Protocol)TCP는 신뢰할 수 있는 전송을 보장하는 연결 지향적인 프로토콜입니다. 이를 이해하기 위해, 마치 두 사람이 서로 편지를 주고받는 상황을 떠올려 보세요.연결 지향적: 데이터를 보내기 전에, 송신자와 수신자는 서로 연결을 설정해야 합니다. 마치 서로 전화를 걸고 대화의 준비를 하는 것처럼 말이죠.신뢰성 있는 전송: 한 사람이 편지를 보낼 때, 상대방이 그 편지를 잘 받았는지 확인하고, 만약 편지가 분실되면 다시..

Redis란? (고성능 인메모리 데이터 스토어)

1. Redis란 무엇인가?Redis(레디스)는 "Remote Dictionary Server"의 약자로, 오픈 소스 기반의 인메모리 데이터 스토어입니다. 주로 키-값(key-value) 구조를 기반으로 데이터를 저장하며, 다양한 데이터 구조를 지원합니다. Redis는 캐싱, 세션 관리, 실시간 데이터 분석 등 빠른 데이터 액세스가 필요한 다양한 응용 프로그램에서 사용됩니다. 2. 주요 특징2.1 인메모리 데이터베이스Redis는 데이터를 메모리에 저장하여 매우 빠른 읽기/쓰기 속도를 제공합니다. 이 덕분에 캐시(Cache)로 사용하기에 적합합니다.2.2 데이터 영속성Redis는 기본적으로 데이터를 메모리에 저장하지만, 필요에 따라 데이터를 디스크에 영구 저장할 수도 있습니다. 이를 통해 데이터 유실 가능..

Blocking vs Non-Blocking

Blocking과 Non-Blocking은 프로세스나 스레드가 작업을 처리하는 방식에서 중요한 개념으로, 동기적 처리와 비동기적 처리와도 밀접하게 연관되어 있다.1. BlockingBlocking은 작업이 완료될 때까지 해당 프로세스나 스레드가 기다리는 방식입니다. 즉, 작업이 끝날 때까지 다음 작업으로 진행하지 못하고 멈춘 상태로 대기합니다.특징동기적 처리: 대부분의 Blocking 작업은 동기적으로 이루어집니다.대기 상태: 작업이 완료될 때까지 다른 작업을 수행하지 못함.단순한 구현: 구현이 간단하며 디버깅이 용이.장점예측 가능한 동작 방식.구현 및 유지보수가 쉬움.단점대기 시간 동안 자원이 낭비됨.시스템의 응답 속도가 저하될 가능성.예시파일 읽기/쓰기: read() 또는 write() 호출이 완료될..

클라우드 컴퓨팅과 AWS

클라우드 컴퓨팅이란?클라우드 컴퓨팅은 인터넷을 통해 컴퓨팅 자원(서버, 스토리지, 데이터베이스, 네트워크 등)을 제공하는 기술입니다. 이는 기업과 개인이 물리적인 장비를 직접 소유하거나 관리할 필요 없이 필요할 때만 자원을 사용하고 비용을 지불할 수 있는 혁신적인 방식입니다.클라우드 컴퓨팅의 특징온디맨드 자원 제공사용자가 필요할 때 원하는 만큼의 자원을 즉시 제공받을 수 있습니다.유연한 확장성워크로드의 변화에 따라 자원을 확장하거나 축소할 수 있습니다.비용 효율성초기 하드웨어 투자 없이 사용량 기반으로 비용을 지불합니다.글로벌 접근성인터넷만 있으면 전 세계 어디에서나 자원에 접근할 수 있습니다.보안 및 관리클라우드 제공 업체가 데이터 보호와 관리의 많은 부분을 책임집니다. AWS(Amazon Web Se..

도커(Docker)와 컨테이너(Container)

도커(Docker)란 무엇인가?도커는 애플리케이션을 컨테이너라는 가상화된 환경에서 실행하기 위해 설계된 오픈 소스 플랫폼입니다. 도커는 컨테이너 기술을 간단하고 효율적으로 구현할 수 있는 도구와 서비스를 제공합니다. 이를 통해 개발자와 운영 팀은 애플리케이션의 배포, 확장 및 관리를 보다 쉽게 수행할 수 있습니다. 컨테이너(Container)란 무엇인가?컨테이너는 애플리케이션과 그 실행에 필요한 모든 것을 포함하는 경량화된 가상화 환경입니다. 각 컨테이너는 독립적으로 실행되며, 다른 컨테이너와 격리된 상태를 유지합니다. 컨테이너는 운영체제(OS) 레벨에서 가상화되므로, 하이퍼바이저 기반의 가상 머신(VM)보다 빠르고 가볍습니다. 도커와 컨테이너의 관계도커는 컨테이너를 생성하고 관리하는 데 사용되는 가장 ..

하이퍼바이저(Hypervisor)란 무엇인가?

하이퍼바이저(Hypervisor)는 가상화를 가능하게 하는 핵심 소프트웨어입니다. 이는 물리적인 하드웨어 위에서 다수의 가상 머신(Virtual Machine, VM)을 실행할 수 있도록 지원합니다. 하이퍼바이저는 컴퓨터의 하드웨어 자원을 추상화하여 각 가상 머신이 독립적으로 운영체제를 실행할 수 있게 합니다. 이를 통해 단일 물리 서버에서 여러 운영체제를 동시에 구동하는 것이 가능합니다. 종류하이퍼바이저는 크게 두 가지 유형으로 분류됩니다:1. Type 1 하이퍼바이저 (베어 메탈)Type 1 하이퍼바이저는 물리적인 하드웨어 위에서 직접 실행됩니다. 운영체제가 필요하지 않으며, 하드웨어와 가상 머신 간의 중재 역할을 합니다. 주로 데이터 센터와 클라우드 환경에서 사용됩니다.대표적인 예:VMware ES..