기타
-
소켓(socket)이란?TCP/IP 프로토콜을 이용하여 네트워크를 통해 데이터를 주고받을 수 있도록 호스트 사이의 네트워크 연결부를 만든다. 요청하는 호스트는 클라이언트 소켓, 요청받는 호스트는 서버 소켓이라고 한다. 클라이언트 소켓데이터 요청을 위해 클라이언트는 클라이언트 소켓을 생성하여 서버에게 요청한다. 요청하는 소켓이다. 1. socket() 함수를 통해 소켓을 연다. 2. connect() 함수를 통해 서버 소켓에게 연결하는데 통신할 서버 IP, Port가 필요하다. 서버 IP, Port 와 connect() 함수를 통해 서버 소켓에게 통신을 시도한다. 3. 클라이언트가 서버에게 통신을 시도했을 때 서버는 accept() 함수를 통해 클라이언트의 socket descriptor를 반환4. 이를 ..
Socket, WebSocket소켓(socket)이란?TCP/IP 프로토콜을 이용하여 네트워크를 통해 데이터를 주고받을 수 있도록 호스트 사이의 네트워크 연결부를 만든다. 요청하는 호스트는 클라이언트 소켓, 요청받는 호스트는 서버 소켓이라고 한다. 클라이언트 소켓데이터 요청을 위해 클라이언트는 클라이언트 소켓을 생성하여 서버에게 요청한다. 요청하는 소켓이다. 1. socket() 함수를 통해 소켓을 연다. 2. connect() 함수를 통해 서버 소켓에게 연결하는데 통신할 서버 IP, Port가 필요하다. 서버 IP, Port 와 connect() 함수를 통해 서버 소켓에게 통신을 시도한다. 3. 클라이언트가 서버에게 통신을 시도했을 때 서버는 accept() 함수를 통해 클라이언트의 socket descriptor를 반환4. 이를 ..
2024.05.16 -
여러개의 프로세스가 동시에 접근하는 동시성 프로그래밍에서 가장 큰 숙제는 공유자원 관리이다. 공유자원을 안전하게 관리하기 위해서는 상호배제(Mutual Exclusion)을 달성하는 기법이 필요하다. 데이터 접근에 대해 한번에 하나의 프로세스만 접근할 수 있도록 제한을 두는 동기화 방식을 취해야 한다. 대표적인 방식으로는 뮤텍스와 세마포어가 있다. Mutex(뮤텍스) 공유된 자원의 데이터에 하나의 프로세스 혹은 쓰레드가 사용하고 있으면 또 다른 쓰레드는 접근할 수 없도록 막는 방법 특정 프로세스가 공유된 자원의 데이터에 접근하기 위해선 Key가 필요하며, 특정 프로세스가 Key를 가지고 자원에 접근해 있으면 다른 프로세스는 접근할 수 있는 Key가 반납될 때까지 대기하는 Key를 기반으로 하는 상호배제 ..
뮤텍스(Mutext), 세마포어(Semaphore)여러개의 프로세스가 동시에 접근하는 동시성 프로그래밍에서 가장 큰 숙제는 공유자원 관리이다. 공유자원을 안전하게 관리하기 위해서는 상호배제(Mutual Exclusion)을 달성하는 기법이 필요하다. 데이터 접근에 대해 한번에 하나의 프로세스만 접근할 수 있도록 제한을 두는 동기화 방식을 취해야 한다. 대표적인 방식으로는 뮤텍스와 세마포어가 있다. Mutex(뮤텍스) 공유된 자원의 데이터에 하나의 프로세스 혹은 쓰레드가 사용하고 있으면 또 다른 쓰레드는 접근할 수 없도록 막는 방법 특정 프로세스가 공유된 자원의 데이터에 접근하기 위해선 Key가 필요하며, 특정 프로세스가 Key를 가지고 자원에 접근해 있으면 다른 프로세스는 접근할 수 있는 Key가 반납될 때까지 대기하는 Key를 기반으로 하는 상호배제 ..
2023.02.24 -
Proxy Proxy 는 단어 뜻대로 대리, 대리인이라는 뜻을 가지고 있습니다. 대리, 대리인은 누군가를 대신해서 그 역할을 수행하는 존재입니다. Proxy 패턴에서도 Proxy 라는 단어에 맞게 어떤 일을 수행할 때 대신 전달하거나 처리하는 역할을 합니다. Proxy 패턴 위 Proxy 패턴 이미지를 보면은 DoAction() 메서드를 가지고 있는 Subject 라는 인터페이스가 존재합니다. Subject 인터페이스를 구현하는 클래스는 RealSubject 와 Proxy 2개의 클래스입니다. 클라이언트가 Subject 인터페이스를 구현한 RealSubject 클래스의 DoAction() 메서드를 호출하면 Proxy 라는 클래스가 대신 RealSubject 의 DoAction() 메서드를 호출하고 반환값..
[디자인 패턴] Proxy 패턴Proxy Proxy 는 단어 뜻대로 대리, 대리인이라는 뜻을 가지고 있습니다. 대리, 대리인은 누군가를 대신해서 그 역할을 수행하는 존재입니다. Proxy 패턴에서도 Proxy 라는 단어에 맞게 어떤 일을 수행할 때 대신 전달하거나 처리하는 역할을 합니다. Proxy 패턴 위 Proxy 패턴 이미지를 보면은 DoAction() 메서드를 가지고 있는 Subject 라는 인터페이스가 존재합니다. Subject 인터페이스를 구현하는 클래스는 RealSubject 와 Proxy 2개의 클래스입니다. 클라이언트가 Subject 인터페이스를 구현한 RealSubject 클래스의 DoAction() 메서드를 호출하면 Proxy 라는 클래스가 대신 RealSubject 의 DoAction() 메서드를 호출하고 반환값..
2022.11.22 -
해당 글은 VELOPERT님의 게시글을 참고하여 작성하게 되었습니다. 토큰 기반 인증 쿠키나 세션을 이용한 인증보다 더 보안성이 강하고 효율적인 인증 방법이다. 토큰에는 암호화 방식과 타입 등을 알려주는 헤더 정보, 전송할 원본데이터가 담긴 페이로드, 토큰 검증을 위한 서명을 인코딩(해싱)한 값이 포함되어 있다. 쿠키 인증은 아이디나 암호와 같은 사용자 정보를 담아 서버로 보내게 되는데, HTTP 방식의 통신을 사용할 경우 제 3자가 해당 정보를 염탐할 수 있습니다. 세션의 경우 Session ID 를 통해 사용자를 인증하므로 쿠키에 비해 보안성이 높다고 할 수 있지만 서버쪽의 추가적인 DB 공간이나 메모리에 저장할 경우 접근한 사용자가 많으면 메모리 관리가 쉽지 않습니다. 이러한 쿠키인증과 세션인증의 ..
[JWT] 토큰(Token) 기반 인증(Basic, Bearer)해당 글은 VELOPERT님의 게시글을 참고하여 작성하게 되었습니다. 토큰 기반 인증 쿠키나 세션을 이용한 인증보다 더 보안성이 강하고 효율적인 인증 방법이다. 토큰에는 암호화 방식과 타입 등을 알려주는 헤더 정보, 전송할 원본데이터가 담긴 페이로드, 토큰 검증을 위한 서명을 인코딩(해싱)한 값이 포함되어 있다. 쿠키 인증은 아이디나 암호와 같은 사용자 정보를 담아 서버로 보내게 되는데, HTTP 방식의 통신을 사용할 경우 제 3자가 해당 정보를 염탐할 수 있습니다. 세션의 경우 Session ID 를 통해 사용자를 인증하므로 쿠키에 비해 보안성이 높다고 할 수 있지만 서버쪽의 추가적인 DB 공간이나 메모리에 저장할 경우 접근한 사용자가 많으면 메모리 관리가 쉽지 않습니다. 이러한 쿠키인증과 세션인증의 ..
2022.09.22 -
동기(Synchronous) 와 블로킹(Blocking), 비동기(Asynchronous) 와 논블로킹(NonBlocking)은 의미적으로 비슷할 수 있지만 전혀 다른곳에서 사용되며 직접적인 관련은 없다. 동기와 비동기는 프로세스의 수행 순서에 대한 매커니즘이고 블로킹과 논블로킹은 프로세스의 유휴 상태에 대한 개념이다. 동기(Synchronous) 동기라는 단어처럼 동시에 일어나는 작업이다. 요청과 그 결과가 동시에 일어나는데 요청을 하고 그 결과가 돌아왔을 때 다음 작업을 진행할 수 있다. A 작업이 완전히 종료된 후에 B 작업을 진행할 수 있다. 아래와 같은 예시가 있다. 예상 결과는 '1 - a 작업', '2 - b 작업', '3 - c 작업' 이다. 예상 결과랑 맞게 나왔다. 동기적 작업은 순서대..
동기(Synchronous), 비동기(Nonsynchronous), 블로킹(Blocking), 논블로킹(Non-Blocking)동기(Synchronous) 와 블로킹(Blocking), 비동기(Asynchronous) 와 논블로킹(NonBlocking)은 의미적으로 비슷할 수 있지만 전혀 다른곳에서 사용되며 직접적인 관련은 없다. 동기와 비동기는 프로세스의 수행 순서에 대한 매커니즘이고 블로킹과 논블로킹은 프로세스의 유휴 상태에 대한 개념이다. 동기(Synchronous) 동기라는 단어처럼 동시에 일어나는 작업이다. 요청과 그 결과가 동시에 일어나는데 요청을 하고 그 결과가 돌아왔을 때 다음 작업을 진행할 수 있다. A 작업이 완전히 종료된 후에 B 작업을 진행할 수 있다. 아래와 같은 예시가 있다. 예상 결과는 '1 - a 작업', '2 - b 작업', '3 - c 작업' 이다. 예상 결과랑 맞게 나왔다. 동기적 작업은 순서대..
2022.09.02 -
클라이언트에서 서버 데이터 변경 사항들을 실시간으로 반영하기 위해 폴링(Polling), 롱 폴링(long Polling) 등의 방식들을 사용한다. 폴링(Polling) 하나의 장치(또는 프로그램)이 충돌 회피 또는 동기화 처리 등을 목적으로 다른 장치의 상태를 주기적으로 검사하여 일정한 조건을 만족할 때 송수신 등의 자료처리를 하는 방식을 말한다. 간단하게 얘기하면 클라이언트가 일정 주기로 서버에게 필요한 데이터를 요청하고 서버는 이에 대한 응답을 주는 방식이다. 이는 AJAX polling 이라고도 불리는데 주로 AJAX 호출을 사용하기 때문이다. 폴링의 문제점 1. 폴링의 주기가 짧으면(데이터 요청 주기) 서버의 성능에 부담이 간다. 2. 주기가 길면 실시간성이 떨어진다. 롱 폴링(long Poll..
폴링(Polling), 롱 폴링(long Polling), 웹소켓(Web Socket)클라이언트에서 서버 데이터 변경 사항들을 실시간으로 반영하기 위해 폴링(Polling), 롱 폴링(long Polling) 등의 방식들을 사용한다. 폴링(Polling) 하나의 장치(또는 프로그램)이 충돌 회피 또는 동기화 처리 등을 목적으로 다른 장치의 상태를 주기적으로 검사하여 일정한 조건을 만족할 때 송수신 등의 자료처리를 하는 방식을 말한다. 간단하게 얘기하면 클라이언트가 일정 주기로 서버에게 필요한 데이터를 요청하고 서버는 이에 대한 응답을 주는 방식이다. 이는 AJAX polling 이라고도 불리는데 주로 AJAX 호출을 사용하기 때문이다. 폴링의 문제점 1. 폴링의 주기가 짧으면(데이터 요청 주기) 서버의 성능에 부담이 간다. 2. 주기가 길면 실시간성이 떨어진다. 롱 폴링(long Poll..
2022.04.27