CS 공부
리소스 게이트웨이 - CGI
게이트웨이의 가장 일반적인 형태인 애플리케이션 서버는 목적지 서버와 게이트웨이를 한 개의 서버로 결합한다. 애플리케이션 서버는 HTTP를 통해서 클라이언트와 통신하고 서버 측에 있는 애플리케이션 프로그램에 연결하는 서버 측 게이트웨이다. 애플리케이션 서버는 게이트웨이의 애플리케이션 프로그래밍 인터페이스를 통해서 요청을 서버에서 동작하고 있는 애플리케이션에 전달한다. 애플리케이션 게이트웨이에서 유명했던 최초의 API는 공용 게이트웨이 인터페이스(CGI)였다. CGI는 특정 URL에 대한 HTTP 요청에 따라 프로그램을 실행하고, 프로그램의 출력을 수집하고, HTTP 응답으로 회신하는데 웹 서버가 사용하는 표준화된 인터페이스 집합이다. 공용 게이트웨이 인터페이스 CGI 애플리케이션이 서버와 분리되면서 펄, ..
보안 게이트웨이
HTTP/HTTPS 서버 측 보안 게이트웨이 기업 내부의 모든 웹 요청을 암호화함으로써 개인 정보 보호와 보안을 제공하는데 게이트웨이를 사용할 수 있다. 클라이언트는 일반 HTTP를 사용하여 웹을 탐색할 수 있지만, 게이트웨이는 사용자의 모든 세션을 암호화할 것이다. HTTPS/HTTP: 클라이언ㅌ 측 보안 가속 게이트웨이 HTTpS/HTTP 게이트웨이는 보안 가속기로 유명하다. 이 HTTPS/HTTP 게이트웨이는 웹 서버의 앞단에 위치하고, 보이지 않는 인터셉트 게이트웨이나 리버스 프락시 역할을 한다. 이 게이트웨이는 보안 HTTPS ㅌ트래픽을 받아서 복호화하고, 웹 서버로 보낼 일반 HTTP 요청을 보낸다. 이런 게이트웨이는 원 서버보다 더욱 효율적으로 보안 트래픽을 복호화하는 암호화 하드웨어를 내장..
게이트웨이
게이트웨이 서로 다른 프로토콜과 애플리케이션 간의 HTTP 인터페이스 게이트웨이는 리소스와 애플리케이션을 연결하는 역할을 한다. 애플리케이션은 게이트웨이에게 요청을 처리해달라고 할 수 있고, 게이트웨이는 그에 응답할 수 있다. 게이트웨이는 요청을 받고 응답을 보내는 포털 같이 동작하는데, 동적인 콘텐츠를 생성하거나 데이터베이스에 질의를 보낼 수 있다. 클라이언트 측 게이트웨이와 서버 측 게이트웨이 웹 게이트웨이는 한쪽에서는 HTTP로 통신하고 다른 한쪽에서는 HTTP 가 아닌 다른 프로토콜로 통신한다. 게이트웨이는 클라이언트 측 프로토콜과 서버 측 프로토콜을 빗금(/)으로 구분해 기술한다. 게이트웨이가 HTTP 클라이언트와 NNTP 뉴스 서버 사이에 있으면 HTTP/NNTP 게이트웨이가 된다. 서버 측 ..
블로킹과 논블로킹
참고 사이트 블로킹과 논블로킹의 차이는 제어권을 다른 프로세스에게 넘기느냐 마느냐의 차이이다. 블로킹은 A 함수에서 B 함수를 호출했다면 B에게 제어권을 넘긴다. 반대로 논블로킹은 B함수가 실행되더라도 B함수에게 제어권을 넘기지 않고 A가 제어권을 가진 채 태스크를 수행한다.
DNS 에 대한 이해
오늘 회사에서 다급하게 전화가 와서 "웹 서버 접속을 막아주세요."라고 했다. 난 당연하게 그냥 개발용 웹서버를 막아달라는 줄 알고 8080 포트를 닫아버렸다. 그런데 도메인과 연결된 IP를 타고 tomcat 설정을 통해 접속이 가능했다. 난 뭘 한 거지? 사실 완전히 틀린 말은 아니었을 거다. 어쨌든 "개발용" 웹 서버 접속은 막았으니까. 다만 문제는 그 이후다. DNS에 대한 얘기를 하고 있는데 난 완전히 엉뚱하게 Tomcat 설정을 만지작 거리고 있었다. 도메인과 IP 연결을 끊어야 하는데 계속 애꿎은 웹서버만 만지작 거린 거다... 나중에 해결되고 나서 혼자 헛소리를 하는 날 보면서 다른 분들은 얼마나 답답했을까... (웹 서버 접속을 막아달란 요청은 당연하게도 모든 IP, Port를 통한 접속을..
비동기란?
Django 비동기 orm 을 실습하다가 비동기에 대한 이해가 모자란 거 같아서 공부차원에서 글을 써본다. 정의 비동기란 작업의 완료 여부와 상관없이 다음 작업을 수행할 수 있는 방식을 의미한다. 즉 한 작업이 완료되지 않아도 다음 작업을 실행할 수 있는 비선점 방식이다. 하나의작업이 끝나기 전에 다른 작업으로 전환이 일어나면 사용자 인터페이스가 응답하지 않을 수 있기 때문에 비선점 방식을 사용한다. 비선점 방식이란? 비선점 방식은 비동기 프로그래밍에서 사용되는 작업 스케줄링 방식 중 하나이다. 프로세스가 자원을 할당 받았을 경우 자원을 스스로 반납할 때까지 계속 그 자원을 사용하도록 허용한다. 따라서 비선점 방식은 작업이 시작되면 다른 작업이 완료될 때까지 실행되며, 현재 실행 중인 작업이 종료되지 않..
NAT Gateway란
DB의 경우 Private IP를 이용하여 외부에서의 접근을 차단하는 형태로 구성한다. 그런데 만일 외부의 접속을 허용해야 하는 경우가 발생하면 어떻게 해야 할까? Public IP를 부여한다면 외부에 노출되므로 보안에 취약하게 된다. 이때 사용하는 것이 NAT Gateway와 Bastion Host 기술이다. 이 둘은 사설망의 구조를 유지시켜주면서 외부와 조건적으로 데이터 통신이 가능하게 해 준다.(Bastion Host은 다음에 자세히 알아보자.) NAT Gateway(Network Address Translation) 네트워크 주소 변환은 IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 도애 트래픽을 주고받는 기술을 말한다. 대표적으로 사설 IP를 외부..
HTTPS 동작 방식
쓰는 이유 HTTPS는 SSL/TLS 보안 계층 위에서 HTTP가 작동하도록 한다. 그렇다면 왜 이렇게 하는 것일까? 간단히 말하면 보안 때문이다. HTTP는 클라이언트와 서버 간의 데이터를 주고받을 때 공격자가 데이터를 가로채기 쉬웠다. 암호화가 되지 않은 채 데이터를 전송하기 때문이다. HTTPS는 서버와 클라이언트가 주고받는 텍스트를 암호화한다. 또한 클라이언트는 접속하려는 서버가 신뢰할 수 있는 서버인지 판단할 수 있다. 원리 SSL 프로토콜은 SSL 인증서를 사용해 작동한다. SSL 인증서는 클라이언트와 서버 간의 통신을 제 3자가 보증해 주는 전자화된 문서이다. 이 인증서를 통해 암호화를 한다. 이 방식을 좀 더 살펴보자. CA는 서버의 공개키와 서버키를 암호화하여 보관한다. 암호화할 때는 공..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FISdk1%2FbtrWTLmgmXV%2FQgQ4U8UVEm6fijfXNYoY6K%2Fimg.jpg)
[Tree] 이진 탐색 트리 구현하기 - 1
이진 탐색 트리의 자세한 개념은 이 블로그를 참고하자. 구현은 이 블로그, 블로그를 참고했다. 이진트리 개념을 익히고 실제로 내가 설계를 해서 직접 구현까지 해야 할 예정이다. 이번 포스팅은 개념을 익히기 위한 포스팅이다. 1. Node Class Node 클래스의 구현 코드는 다음과 같다 class Node: def __init__(self, value): # double linked list self.value = value self.left = None self.right = None 이진 탐색 트리의 노드는 Linked List 속성을 지니고 있으므로 현재 노드를 기준으로 왼쪽과 오른쪽 자식 노드를 가진다. 2. 이진 탐색 트리 2.1 삽입 class NodeMgmt: def __init__(se..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4Hx8P%2FbtrWUHwGuUx%2F1zrSjnHMbv9QKnsNTD14Gk%2Fimg.png)
LRU(Least Recently Used) 알아보기
LRU 알고리즘은 페이지 교체 알고리즘 종류 중의 하나이다. 우선 페이지 교체 알고리즘이란 무엇인지 살펴보자. 0. 페이지 교체 알고리즘 페이지 교체 알고리즘은 페이징 기법으로 메모리를 관리하는 운영체제에서, 페이지 부재가 발생하여 새로운 페이지를 할당하기 위해 현재 할당된 페이지 중 어느 것과 교체할지를 결정하는 방법이다.즉 가상기억장치를 모두 같은 크기의 블록으로 편성하여 운용하는 기법이다. 이때의 일정한 크기를 가진 블록을 페이지라고 한다. 페이지 교체 알고리즘은 온라인 알고리즘의 일종이다. 페이징 기법? 컴퓨터가 메인 메모리에서 사용하기 위해 2차 기억 장치로부터 데이터를 저장하고 검색하는 메모리 관리 기법이다. -위키백과- 온라인 알고리즘? 전산학에서 온라인 알고리즘이란 시작할 때 모든 입력 정..