🐣 Computer Science

    HTTP와 HTTPS | 대칭키, 비대칭키

    ❏ HTTP(80)HyperText Transfer Protocol의 약자로, HTTP는 서로 다른 시스템 간 효과적인 통신을 할 수 있도록 하는 프로토콜입니다. 웹 브라우저와 웹 서버 간의 기본적인 통신을 담당합니다. ❍ Client - ServerHTTP는 웹에서 이루어지는 대부분의 기초 프로토콜이며, 클라이언트에서 URL을 통해 서버에 요청(Request)을하면, 서버에서는 해당 요청에 대한 결과를 응답(Response)하는 형태로 동작합니다. ❍ 무상태 프로토콜(Stateless)HTTP는 Stateless한 특성을 가지고 있기 때문에, 서버는 클라이언트의 상태를 보관하지 않습니다. 즉, 서버와의 요청 간에 유지되는 데이터가 존재하지 않기 때문에, 서버는 클라이언트를 식별할 수 있는 능력이 없습니..

    [CS/OS] PCB, Interrupt, Context Switching

    ❏ PCB프로세스 제어 블록(Process Control Block, PCB)는 운영체제가 프로세스를 관리하는 것에 있어서 아주 중요한 자료구조입니다. 프로세스에 대해 중요한 정보를 저장하고 있기 때문입니다. ❍ Process MetaData여러 가지의 프로세스를 수행 및 관리하기 위해선 각각의 프로세스에 대한 정보를 알고 있어야 하기 때문에, 다음과 같은 정보들이 PCB에 저장됩니다. 이러한 정보를 Process MetaData라고 합니다. 1. 프로세스 ID 각 프로세스에 부여된 고유한 식별자, 이를 통해 프로세스를 식별하고 구분합니다. 2. 프로세스 상태 New : 프로세스가 생성된 상태 Ready : CPU를 할당 받기 위해 대기하는 상태 Running : CPU를 할당 받아 명령어를 실행 중인 ..

    [CS / OS] 프로세스 VS.  스레드

    [CS / OS] 프로세스 VS. 스레드

    들어가며 “프로세스와 스레드의 차이점”은 면접을 위해 준비해야 할 중요한 주제이기도 합니다. 프로세스와 스레드에 대해 소개하고, 둘의 차이점에 대해 소개합니다. 먼저, 프로세스를 소개하기 전, 프로그램에 대해 알아봅시다. ❏ 프로그램(Program)프로그램(Program)이란, 어떠한 작업을 위해 실행할 수 있는 파일입니다. 흔히 어떠한 프로그램을 설치하고자, 다운로드를 받은 파일을 살펴보면 확장자가 “.exe”라고 되어있는 것을 볼 수 있습니다. 이를 프로그램이라고 합니다. 아직 프로그램을 실행하지 않았기에 운영체제로부터 자원을 할당 받지 않은 상태로, 메모리에 올라가 있지 않은 상태입니다. 자, 이제 코드 덩어리 상태일 뿐인 멈춰있는 프로그램을 실행시켜 보도록 합시다. 프로그램을 실행을 하게 된다면,..

    [Web]  DNS란 무엇인가?

    [Web] DNS란 무엇인가?

    ❏ DNS 원하는 서비스를 제공받기 위해 서버에 요청을 할 때, 서버의 IP 주소를 알아야 한다. 하지만, IP 주소처럼 복잡한 숫자들을 기억할 필요 없이, 전화번호부처럼 도메인을 정의해 편리하게 접속한다. DNS(Domain Name System)이란, 바로 이 전화번호부가 저장되는 곳이다. 네트워크를 통해서 도메인 정보를 저장하고 조회한다. ❍ DNS Spoofing DNS로 보내는 요청을 가로채서 그에 대한 응답으로 변조된 IP를 전송한다. ❍ A Record vs. CNAME A Record는 도메인을 서버의 IP와 직접 연결되어 속도가 빠르다. CNAME은 서버의 IP가 유동적으로 변하는 경우, 그 IP에 일정하게 연결되는 다른 도메인(Canocical NAME)을 연결하는 것이다. ex. AWS

    [OS] 운영체제(Operating System)이란? || 추상화, 필요성, 기능, Kernel

    들어가며본 포스팅에서는 운영체제의 개념과 필요성, 운영체제의 기능, Kernel에 대해 소개합니다.📌 운영체제(OS)운영체제란 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서, 사용자가 하드웨어를 쉽고 효율적으로 사용할 수 있는 프로그램의 모임이자, 시스템 소프트웨어이다. 추상화(abstraction)을 제공하는 프로그램이라고도 정리해볼 수 있다. 어떻게 하드웨어를 쉽고 효율적으로 사용할 수 있도록 하는가에 대해 이야기 해보자면, 추상화라는 개념을 알아야 한다.❔ 추상화추상화(Abstraction)란, 복잡한 시스템 및 개념을 단순화하는 것이다. 소프트웨어를 설계할 때에도 추상화하여 미리 포괄적인 개념을 설계한 후에 구체화하여 진행한다. 따라서, 복잡한 시스템이더라도 사용자가 보다 쉽고 직관적인 방식..

    인증 방식 (Cookie & Session & Token) + JWT

    JWT 인증 방식에 대해 공부해보다가, 다른 인증 방식과의 차이를 정리해두어야겠다는 생각이 들었다. 클라이언트의 인증을 위한 대표적인 방식 Cookie, Session, Token을 다뤄보자 📌 Cookie 인증쿠키(Cookie)는 사용자의 브라우저에 저장되어 통신할 때 포함되어 전달한다. 사용자의 브라우저에 저장되는 데이터들이므로, 고유 정보 식별이 가능하다. 1. 클라이언트가 서버에 요청(Request)를 보낸다. 2. 서버는 클라이언트의 요청에 대한 응답(Response)을 작성하고, 응답 헤더의 Set-Cookie에 사용자의 브라우저에 저장될 데이터를 담아 보낸다. 3. 이후 해당 클라이언트는 요청을 보낼 때마다, 저장된 쿠키를 요청 헤더의 Cookie에 담아 보내게 된다. 4. 따라서, 서버는 ..

    XML Web Services (+ HTTP, SOAP, WSDL, UDDI), 시나리오

    XML Web Services (+ HTTP, SOAP, WSDL, UDDI), 시나리오

    XML Web Services 관련 기술로는 HTTP, SOAP, WSDL, UDDI가 있다. 📌 HTTPHyperText Transper Protocol의 약자로, 서로 다른 시스템을 통신할 수 있는 프로토콜이다. HyperText라는 것은, 컴퓨터 화면 및 전자 기기에서 볼 수 있는 텍스트 데이터를 의미하는데, 이것을 빠르게 네트워크 상에서 교환하기 위한 프로토콜인 것이다. Client - Server 웹에서 이루어지는 대표적인 인터넷 프로토콜이며, 클라이언트에서 URL을 통해서 서버에 요청(Request)을 하면, 서버에서는 해당 요청에 대한 응답(Response)을 하는 형태로 동작한다. Stateless 서버에서는 클라이언트에 대한 상태를 전혀 보관하지 않는다. Connectionless 또한,..

    SOA(Service Oriented Architecture)란?

    SOA(Service Oriented Architecture)란?

    📌 ServiceSOA를 알기 전, 서비스란 무엇인지 간단하게 설명해보자면, 우리가 컴퓨터에서 실행하는 프로그램, 애플리케이션을 소프트웨어라 한다. 이러한 소프트웨어를 다운로드하여 컴퓨터, 모바일에서 사용을 하곤 하는데, 서비스라는 것은 인터넷, 네트워크를 통해 제공되는 정보 및 기술을 의미한다. 소프트웨어와 함께 제공되어 설치하지 않고도 인터넷을 통해 서비스에 접속하여 이용할 수 있다. ✅ 구조Service Interface : 서비스 인터페이스는 서비스를 호출하기 위한 통신 방법이 정의된다. 이용자는 이를 제공받아 서비스를 이용한다. Service Implementation : 실질적으로 서비스가 구현되어 있는 곳이다. 서비스 이용자들은 서비스 구현이 어떻게 이루어져있는 지에 대해서는 몰라도 인터페이..

    분산 컴퓨팅, RPC vs. XML Web Service 비교

    분산 컴퓨팅, RPC vs. XML Web Service 비교

    📌 분산 컴퓨팅(Distributed Computing)이란?분산 컴퓨팅(Distributed Computing)이란, 말 그대로 여러 대의 컴퓨터가 분산되어 하나의 일을 해결하는 개념이다. 대량의 데이터 및 연산을 처리해야 하는 거대한 문제를 해결하고자, 원격지에 존재하는 여러 대의 컴퓨터들을 이용하여 협업하는 것으로, 대규모의 데이터베이스와 빅데이터를 분산하여 일을 처리하거나, 여러 프로그램들을 분산시켜 원격으로 실행하는 경우이다. 마치 하나의 컴퓨터인 것처럼 동작하며, 자원의 공유와 협업이 가능하기 때문에 효율적으로 활용이 가능하고, 확장성이 우수하다. ✅ 장점자원의 활용이 효율적자원의 공유와 협업이 가능 확장성이 좋다.빠른 성능을 제공 원격 컴퓨터를 이용하여 협업한다고 하는데,, 원격 컴퓨터를 어..

    [Design Pattern] 퍼싸드 패턴 || Facade Pattern

    [Design Pattern] 퍼싸드 패턴 || Facade Pattern

    ❓ 구조 패턴 클래스나 객체를 조합하여 더 큰 구조를 생성하는 방법이다. 서로 다른 인터페이스를 묶어 단일 인터페이스를 제공하거나, 새로운 기능을 제공한다. 따라서, 독립적인 각 클래스들을 마치 하나인 것처럼 사용한다.퍼싸드 패턴은 이러한 구조 패턴 중 하나이다.Facade : 건물의 외관❓ 퍼싸드 패턴이란내부의 서브 시스템을 감싸고, 클라이언트에게 인터페이스를 제공하여 쉽게 접근할 수 있도록 하는 패턴 서브 시스템을 더 쉽게 사용할 수 있도록 high-level 인터페이스를 정의하고 제공한다. 즉, 일련의 인터페이스에 대한 통합된 인터페이스를 제공한다. 클라이언트는 내부에 어떤 기능이 존재하는지 복잡한 것에 대해 잘 모르더라도, 해당 기능에 접근하여 사용할 수 있다. ❗예시