본문 바로가기

기초 CS 정리36

Blocking/Non-Blocking 과 Synchronous/Asynchronous Blocking/Non-Blocking 호출된 함수가 호출한 함수에게 제어권을 건네주는 유무의 차이 함수 A, B가 있고 A 안에서 B를 호출했다고 가정했을 때 호출한 함수는 A이며, 호출된 함수는 B가 된다. 현재 B가 호출되면서 B는 자신의 일을 진행해야한다, 즉 제어권은 B에게 주어진 상황이다. Blocking : 함수는 B는 할일을 마칠 때까지 제어권을 가지고 있고 A는 B를 기다려야 한다. NonBlocking : 함수 B는 할일을 마치지 않았어도 A에게 제어권을 바로 넘겨준다. A는 B를 기다리면서도 다른 일을 진행할 수 있다. 호출된 함수에서 일을 시작할 때 바로 제어권을 리턴해주느냐 할일을 마치고 제어권을 주느냐에 따라 블록과 논블록으로 나눠진다. Synchronous/Asynchronou.. 2023. 2. 11.
로드 밸런싱(Load Balancing) 둘 이상의 CPU또는 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것 웹 사이트에 접속하는 인원이 급격하게 늘었기 때문에 이러한 사람들에 대한 모든 트래픽을 감당하기엔 1대의 서버로는 부족하다. 대응 방안으로 하드웨어의 성능을 올리거나, 여러 대의 서버가 나눠서 일하도록 만든다. (Scale-Up/Scale-Out) 하드웨어 향상 비용이 더욱 비싸기도 하고 서버가 여러 대면 무중단 서비스를 제공하는 환경 구성이 용이하므로 Scale-Out(서버 나누기)이 더욱 효과적이다. 이때 여러 서버에게 균등하게 트래픽을 분산시켜주는 것이 바로 Load Balancing이다. Load Balancing이 하는 일은? 분산식 웹 서비스로 여러 서버에 부하를 나누어주는 역할을 한다. 클라이언트와 서버 사이에 Load.. 2023. 2. 10.
TLS/SSL handshaking HTTPS에서 클라이언트와 서버간 통신 전 SSL 인증서로 신뢰성 여부를 판단하기 위해 연결하는 방식 클라이언트는 서버에게 client hello 라는 메시지를 담아 서버로 보낸다. 이때 암호화된 정보를 함께 담는데 버전, 암호 알고리즘, 압축 방식 등을 담는다. 서버는 클라이언트가 보낸 암호 알고리즘과 압축 방식을 받아 세션ID와 CA(공개인증서)를 server hello 메시지와 함께 담아 응답한다. 이 CA인증서에는 앞으로 통신 이후 사용할 대칭키가 생성되기 전, 클라이언트에서 handshaking 과정 속 암호화에 사용할 공개키를 담고 있다. 클라이언트 측은 서버에서 보낸 CA인증서에 대해 유효한지 CA목록에서 확인하는 과정을 진행 CA인증서에 대한 신뢰성이 확보되었다면 클라이언트는 난수 바이트를.. 2023. 2. 9.
HTTP & HTTPS HTTP (HyperText Transfer Protocol) 인터넷 상에서 클라이언트와 서버가 자원을 주고 받을 때 쓰는 통신 규약 HTTP는 텍스트 교환이므로 누군가 네트워크에서 신호를 가로채면 내용이 노출되는 보안 이슈가 존재 → 이런 보안 문제를 해결해주는 프로토콜이 HTTPS HTTPS 인터넷 상에서 정보를 암호화하는 SSL 프로토콜을 사용하여 클라이언트와 서버가 자원을 주고 받을 때 쓰는 통신 규약 텍스트를 공개키 암호화 방식으로 암호화 한다. HTTPS 통신 흐름 애플리케이션 서버를 만드는 기업(A)은 HTTPS를 적용하기 위해 공개키와 개인키를 만든다. 신뢰할 수 있는 기업(CA)을 선택하여 그 기업에게 공개키 관리를 부탁하여 계약을 한다. (CA, Certificate Authority .. 2023. 2. 8.