📌 I/O ? → 어떤 디바이스를 통해 데이터의 입력(Input)과 출력(Output)이 이뤄지는 작업 입출력 작업은 커널 레벨에서만 수행할 수 있으므로 프로세스 및 스레드는 커널에게 I/O를 요청해야 함. 즉, 프로세스 및 스레드는 호출하는 함수, I/O작업은 호출되는 함수가 됨 Blocking I/O I/O 작업이 진행되는 동안 유저 프로세스가 자신의 작업을 중단한 채, I/O가 끝날때까지 대기하는 방식 → Read()를 호출해 커널에 read I/O를 요청하면, read가 끝날 때까지 application은 block되어 다른 작업을 하지 못함 커널 작업중에 프로세스/스레드는 자신의 작업을 중단하고 대기 커널 작업 중 CPU 자원을 쓰지 않으므로 자원낭비가 심함 여러 클라이언트가 접속하는 서버인 경..
Blocking & NonBlocking → 한 작업이 다른 작업을 호출하는 경우, 호출되는 함수가 바로 리턴을 하는 지 여부에 따라 나뉨 → 누구한테 제어권(작업을 할 권리)가 있는지가 관건 📌 Blocking : 자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 다른 작업이 끝날 때까지 기다렸다가 자신의 작업을 시작하는 것 호출된 함수가 자신의 작업을 완료할때까지 리턴하지 않음 호출된 함수는 자신의 작업을 완료하면 호출한 함수에게 제어권을 넘겨주므로 호출한 함수는 다른 일을 하지 않고 대기함 제어권은 호출된 함수에게 있음 📌 NonBlocking : 다른 주체의 작업에 관련 없이 자신의 작업을 하는 것 호출된 함수가 바로 리턴 호출된 함수가 제어권을 바로 호출한 함수에게 넘겨주어 다른 일을 할 수..
💡 로드밸런싱은 서버에 가해지는 부하(=로드)를 분산(=밸런싱)해주는 장치 또는 기술을 통칭 → 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해 각각의 서버가 최적의 퍼포먼스를 보일 수 있도록 하는 것이 목적 ☑️ 트래픽 대처방법 Scale-up : 서버 자체의 성능을 확장 Scale-out : 기존 서버와 동일하거나 낮은 성능의 서버를 두 대 이상 증설하여 운영하는 것 ☑️ 로드밸런싱 알고리즘 (부하 분산 방식) 라운드로빈 방식 (Round Robin Method) 서버에 들어온 요청을 순서대로 돌아가며 배정하는 방식 클라이언트의 요청을 순서대로 분배하기 때문에 여러 대의 서버가 동일한 스펙을 갖고 있음 서버와의 연결(세션)이 오래 지속되지 않는 경우에 활용하기 적합 가중 라운드로빈 방식 (We..
📌 송신자와 수신자가 암호화된 데이터를 교환하기 위한 일련의 과정 대칭키와 비대칭키 대칭키(비밀키) : 하나의 키로 데이터를 암호화하고 복호화 비대칭키(공개키) : 공개키와 개인키로 암호화 및 복호화 수행 암호화 - 공개키, 복호화 - 개인키 데이터를 암호화하여 보호하기 위한 목적 암호화 - 개인키, 복호화 - 공개키 인증을 위한 목적 CA와 인증서 CA : 인증서의 역할은 클라이언트가 접속한 서버가 의도한 서버가 맞는지 보장하는 것 → 이 역할을 하는 민간기업을 CA(Certificate Authority) 혹은 Root Certificate라고 부름 SSL 인증서 : 서비스의 정보(인증서를 발급한 CA, 서비스의 도메인 등)와 서버측 공개키가 들어있음 SSL Handshake 파란색 : TCP의 3-..
✅ HTTP (Hyper Text Transfer Protocol) 💡 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜 → 인터넷에서 하이퍼텍스트(HTML)를 교환하기 위한 통신 규약으로, 80번 포트를 사용하고 있음 [구조] 애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동 상태를 가지고 있지 않는 Stateless 프로토콜 Method, Path, Version, Headers, Body 등으로 구성 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜이기 때문에 제 3자가 정보를 조회할 수 있음 ✅ HTTPS (Hyper Text Transfer Protocol Secure) 💡 HTTP에 데이터 암호화가 추가된 프로토콜 → 443번 포트를 사용하며, 네트워크 상에서 중간에 제 3..
✅ 대칭키 : 암호화와 복호화에 같은 암호키를 쓰는 알고리즘 → 하나의 비밀키를 클라이언트와 서버가 같이 사용 장점 구현이 용이함 데이터를 암호화하기 위한 연산이 빨라 대용량 데이터 암호화에 적합 기밀성을 제공 단점 강한 보안을 위해 키를 주기적으로 교환해주는 것이 좋음 키 탈취 및 관리가 어려움 무결성 지원이 부분적으로만 가능 부인 방지 기능을 제공하지 못함 종류 블록 암호(Block Cipher) 방식 : 어느 특정 비트 수의 집합을 한 번에 처리하는 암호 알고리즘을 총칭 → 기밀성 있는 정보를 정해진 블록 단위로 암호화하는 대칭키 암호 시스템으로 만약 암호화하려는 정보가 블록 길이보다 길 경우 특정한 운용 모드가 사용됨 → SEED, HIGHT, ARIA, LEA, DES, AES 페스탈(Feist..