Computer Science
-
프록시 서버(Proxy Server)란?Computer Science/Network 2024. 4. 26. 17:53
프록시 서버(Proxy Server)란? 프록시 서버는 클라이언트와 서버 사이에서 중개자 역할을 하는 서버입니다. 클라이언트의 요청을 받아 서버로 전달하고, 서버의 응답을 다시 클라이언트에게 전달하는 기능을 수행합니다. 프록시는 데이터의 흐름을 제어하고, 보안을 강화하며, 효율적인 네트워크 사용을 도모하는 여러 목적으로 사용됩니다.프록시의 주요 기능보안: 프록시 서버는 내부 네트워크와 외부 네트워크 사이의 보안 게이트웨이 역할을 합니다. 사용자의 실제 IP 주소를 숨기고, 외부 위협으로부터 내부 네트워크를 보호합니다.캐싱: 자주 요청되는 데이터를 프록시 서버에 저장하고, 같은 요청이 들어왔을 때 빠르게 응답하여 서버의 부하를 줄이고 네트워크 트래픽을 감소시킵니다.내용 필터링: 특정 웹사이트나 콘텐츠에 대..
-
주소창에 google.com을 치면 일어나는 일Computer Science/Network 2024. 4. 26. 17:38
I. 요약1. URL 입력 및 처리URL 입력: 사용자가 URL을 입력하고 엔터를 누르면, 브라우저는 URL의 유효성을 검사하고 필요한 프로토콜을 추가합니다.리다이렉트 확인: 초기 요청을 받은 서버가 URL을 다른 위치로 자동으로 보내도록 설정된 경우, 브라우저는 이 리다이렉트를 처리합니다. 예를 들어, http://로 시작하는 요청이 https://로 리다이렉트될 수 있습니다.공유 캐시 확인: 특히 대규모 웹 서비스에서는 네트워크 내에 공유 캐시(캐싱 프록시)가 존재할 수 있습니다. 이 캐시는 자주 요청되는 리소스를 저장하고, 캐시에 있는 리소스는 DNS 조회나 서버 접속 없이 바로 제공될 수 있습니다.2. DNS 조회브라우저는 "google.com"의 IP 주소를 찾기 위해 도메인 이름 시스템(DNS..
-
Foreground Process와 Background ProcessComputer Science/Linux 2024. 4. 18. 23:33
리눅스 시스템에서 프로세스 관리는 핵심적인 부분을 차지합니다. 프로세스는 실행 중인 프로그램의 인스턴스를 의미하며, 리눅스에서는 크게 두 가지 유형의 프로세스로 분류할 수 있습니다: Foreground Process와 Background Process. 이 두 유형의 프로세스는 리눅스를 사용하는 데 있어서 다양한 환경에서 다르게 활용되며, 사용자의 작업 효율성과 시스템 성능에 직접적인 영향을 미칩니다. 이에 대한 자세한 설명과 예시를 통해 이해를 돕고자 합니다. I. Foreground Process Foreground Process는 사용자가 직접 제어하고 상호 작용하는 프로세스를 말합니다. 이 프로세스는 사용자의 입력을 기다리며, 사용자가 명령을 입력하면 해당 명령을 실행하고 결과를 표시합니다. 사용..
-
직렬화(Serialization)와 역직렬화(Deserialization)Computer Science/OS 2024. 4. 11. 10:01
직렬화와 역직렬화는 소프트웨어 개발에서 자주 마주치는 개념으로, 데이터를 효율적으로 저장하고 전송하는 데 필수적인 역할을 합니다. 1. 직렬화란? 직렬화(Serialization)는 데이터 구조나 객체 상태를 저장하거나 전송할 수 있는 포맷(예: JSON, XML)으로 변환하는 과정을 말합니다. 이렇게 하면 메모리에 있는 객체를 파일 시스템, 데이터베이스, 또는 네트워크를 통해 전송 후에도 재구성할 수 있습니다. 2. 역직렬화란? 역직렬화(Deserialization)는 직렬화의 반대 과정으로, 데이터를 원래의 객체나 데이터 구조로 복구하는 과정을 의미합니다. 역직렬화를 통해 저장소나 네트워크를 통해 받은 데이터를 응용 프로그램에서 다시 사용할 수 있는 실제 객체로 변환할 수 있습니다. 3. 어디에 주로..
-
HTTP Method란?Computer Science/HTTP 2024. 4. 6. 18:58
웹 개발의 세계에서 HTTP 메소드는 기본적이면서도 필수적인 구성 요소입니다. 웹 애플리케이션과 서버 간의 통신을 가능하게 하는 이 메소드들은 데이터의 조회, 생성, 수정, 삭제와 같은 작업을 수행합니다. 이 글에서는 HTTP 메소드의 중요성을 이해하고, 각 메소드의 사용 사례와 특징을 상세하게 탐구해보겠습니다. 들어가기 전에 들어가기 앞서 REST에 대해 간단히 짚고 넘어갑니다. REST(Representational State Transfer)와 RESTful은 밀접하게 관련되어 있으며, 때때로 혼용되어 사용되기도 합니다. 그러나 둘 사이에는 분명한 차이점이 있습니다. REST (Representational State Transfer) 개념: REST는 분산 시스템 설계를 위한 아키텍처 스타일입니다..
-
기아상태(Starvation)란?Computer Science/OS 2024. 4. 6. 17:22
기아상태(Starvation)는 멀티스레딩 환경에서 특정 스레드가 CPU 시간이나 필요한 자원을 충분히 할당받지 못해 원하는 작업을 수행하지 못하는 상태를 말합니다. 이는 일반적으로 우선순위가 높은 작업에 자원이 계속 할당되어 우선순위가 낮은 작업이 무한히 대기 상태에 머무르게 될 때 발생합니다. 1. 기아상태란? 기아상태는 시스템 내의 자원 할당 정책으로 인해 발생할 수 있습니다. 예를 들어, 특정 스레드나 프로세스가 자원을 오랜 시간 동안 독점하고 있을 때, 다른 스레드는 그 자원을 사용할 기회를 얻지 못할 수 있습니다. 특히, 멀티스레딩 환경에서 스레드에 우선순위를 할당하여 작업을 스케줄링할 때 기아상태가 발생하기 쉽습니다. 2. 기아상태 코드 예시 Java 예시: Java에서는 Thread 클래스..
-
메모리 구조(Memory Structure)란?Computer Science/OS 2024. 4. 5. 11:21
메모리 구조는 프로그램이 실행되면서 사용하는 메모리의 구성을 설명합니다. 이 구조는 일반적으로 코드 영역, 데이터 영역, 힙 영역, 스택 영역으로 나누어집니다. 각 영역은 특정 유형의 정보를 저장하며, 프로그램의 성능과 안정성에 직접적인 영향을 미칩니다. 1. 코드(Code) 영역 코드 영역은 프로그램이 실행되기 위해 CPU가 직접 읽어서 실행할 수 있는 기계어 코드가 저장되는 메모리 영역입니다. 이 영역에는 프로그램의 모든 함수와 명령어가 포함되어 있으며, 프로그램 실행 동안 변경되지 않습니다. 코드 영역은 읽기 전용이므로, 프로그램 실행 중에 이 영역의 내용을 변경하려고 시도하면 실행 시간 오류가 발생할 수 있습니다. 보안상의 이유로도 코드 영역은 보호되며, 코드 주입과 같은 공격을 방지하는 데 중요..
-
컴파일(Compile)과 런타임(Runtime)이란?Computer Science/OS 2024. 4. 5. 10:04
1. 컴파일이란? 컴파일은 고수준 프로그래밍 언어로 작성된 코드를 기계가 이해할 수 있는 저수준 언어(보통 기계어나 바이트코드)로 변환하는 과정을 말합니다. 컴파일러는 이러한 변환 과정을 수행하는 프로그램입니다. 컴파일 과정은 일반적으로 여러 단계를 거칩니다. 소스 코드가 토큰으로 분해되고, 구문 분석을 통해 구문 트리가 생성되며, 최적화가 수행되고, 마지막으로 타겟 코드(기계어 코드)가 생성됩니다. 2. 런타임이란? 런타임은 프로그램이 실행되고 있는 시간을 의미합니다. 더 구체적으로는, 프로그램의 코드가 컴퓨터의 프로세서에 의해 실행되고 있는 상태를 말합니다. 런타임 동안, 프로그램은 메모리를 할당받고, 데이터를 처리하며, 사용자의 입력을 받고, 결과를 출력할 수 있습니다. 런타임 환경은 프로그램이 실..