조각들

대칭키 vs 공개키(비대칭키)

  • 대칭키 암호화 방식 : 암복호화에 사용하는 키가 동일함
  • 공개키 암호화 방식 : 암복호화에 사용하는 키가 서로 다르며 비대칭키 암호화라고도 함

 

대칭키

  • Session Key, Secret Key, Shared Key, 대칭키, 단용키라고도 함
  • 비밀키 하나만 알아내면 암호화된 내용을 해독 가능 → 해커로부터 안전 X
  • 하나의 비밀키를 양쪽(client & server)가 모두 같이 사용
  • 암호화방식에 속도가 빠르다. 대용량 Data 암호화에 적합하다.

 

공개키

  • 공개키는 누구나 알 수 있지만, 그에 대응하는 비밀키는 키의 소유자만이 알 수 있어서 특정한 비밀키를 가지는 사용자만이 내용을 열어볼 수 있도록 하는 방식. 따라서 안전하게 상대방에게 메세지를 전달해 줄 수 있다.
  • 암호화할 때의 키는 공개키(public key), 복호화할 때의 키는 개인키(private key)
  • 속도가 느리다.
  •  

부인 방지

데이터를 송신한 자가 송신 사실을 허위로 부인하는 것으로부터 수신자를 보호하기 위하여 송신자의 발신 증거를 제공하거나, 수신자가 수신 사실을 거짓으로 부인하는 것으로부터 송신자를 보호하기 위하여 수신 증거를 제공하는 보안 서비스의 일종.
 

무결성

데이터의 정보가 변경되거나 오염되지 않도록 하는 원칙. 네트워크에서 데이터 전송 시 비인가 접속자가 데이터를 변경하거나 위조하지 않았다는 것을 나타낸다.

 

 

[암호] 대칭키 암호 vs 공개키 암호

개인키 = 비밀키 = 비공개키공개키 기법 = 비대칭키 기법 암호화와 복호화에 사용하는 암호키가 같은지 다른지에 따라 암호화 기법이 대칭키 기법과 비대칭키 기법으로 나뉘어 진다. 1. 대칭키

gaeko-security-hack.tistory.com

 

 

대칭키 vs 공개키(비대칭키)

대칭키 암호화 방식 : 암복호화에 사용하는 키가 동일함공개키 암호화 방식 : 암복호화에 사용하는 키가 서로 다르며 비대칭키 암호화라고도 함대표적 알고리즘 : DES, 3DES, AES, SEED, ARIA장점 : 암

velog.io

 

7. DNS Round Robin 방식

  • 로드밸런싱
  • DNS Round Robin

 

로드밸런싱

로드밸런싱의 방법은 간단합니다. 먼저 여러대의 서버를 준비하고, 클라이언트와 서버 사이에 트래픽을 분산시켜주는 장치를 넣어줍니다.
 
저렇게 클라이언트와 서버의 사이에서 트래픽을 분산하는 장치를 로드밸런서 라고 합니다. 그리고 이렇게 트래픽을 분산시키는 방법을 로드밸런싱이라고 부릅니다.
 
말 그대로 부하(load)를 분산/균형(balance)해주는 방법입니다.

출처 https://velog.io/@dbstjrwnekd/DNS-Round-Robin

 

Round Robin

RR(Round Robin) : 선점형 스케줄링의 하나로서 프로세스들 사이에 우선순위를 두지 않고순서대로 시간단위로 CPU를 할당하는 방식입니다보통 시간 단위는 10ms ~ 100ms 정도이고 시간 단위동안 수행한 프로세스는 준비 큐의 끝으로 밀려나게 됩니다문맥 전환의 오버헤드가 큰 반면응답시간이 짧아지는 장점이 있어 실시간 시스템에 유리하고, 할당되는 시간이 클 경우 비선점 FIFO기법과 같아지게 됩니다.
 

 

Round-Robin(RR)이란? , CPU-Scheduling들

OS에서 핵심적인 부분 중 하나인 Scheduling입니다.상당히 중요한 부분인 만큼 긴 내용이 되겠군요..ㅜ 먼저 대표적인 스케줄링 기법으로 라운드로빈 방식이 있습니다.- 라운드 로빈 스케줄링(Round R

jwprogramming.tistory.com

 

DNS Round Robin

클라이언트가 어떤 요청을 보내기 위해선 DNS에 서버의 아이피를 먼저 요청해야 합니다.
DNS Round Robin은 이러한 요청이 들어올 때 DNS에서 각 서비스의 서버에 해당하는 ip를 round robin으로 제공해주는 방법입니다.
 
중간에 로드밸런서가 존재할 경우 일반적으로 트래픽을 담당하는 서버의 상태를 관찰하며 분산을 조절합니다. 하지만 DNS입장에선 이러한 서버의 상태를 실시간으로 관찰할 수 없기 때문에 장애 발생시 대처가 미흡합니다.
또한 로드밸런서는 클라이언트와 상관없이 들어오는 요청들을 분산시키지만, DNS Round Robin은 한 클라이언트의 요청이 보낼 때 마다 다른 서버에 보내지도록 만드는 방법입니다. 한 사람의 요청은 계속 분산되지만, 여러 사람이 요청을 보내는 경우 균등하게 부하를 분산시킨다고 보장할 수 없습니다.
마지막으로 DNS는 결과를 caching하기 때문에 요청마다 균등하게 분산시키기 어렵습니다. 물론 이는 설정을 통해 어느정도 해결이 가능합니다.
 
 

 

DNS Round Robin

DNS round robin을 알기 위해선 먼저 로드밸런싱과 라운드 로빈이라는 개념에 대해 알아야 합니다. 따라서 로드밸런싱과 라운드 로빈을 살펴보고 마지막으로 DNS round robin을 알아보겠습니다.일반적

velog.io

 

8. Blocking,Non-blocking & Synchronous,Asynchronous

Sync와 Async의 차이는 그것을 요청한 순서가 지켜지는가 아닌가에 있고
Blocking와 Non-blocking은 그 요청에 대해 받은 쪽에서 처리가 끝나기 전에 리턴해주는가 아닌가에 달려 있습니다.
그래서 3개를 요청했는데 응답에서 그 순서가 지켜진다면 Sync이고 어떤 게 먼저 올지 모른다면 Async입니다.

블로킹 Blocking

  • A 함수가 B 함수를 호출 할 때, B 함수가 자신의 작업이 종료되기 전까지 A 함수에게 제어권을 돌려주지 않는 것

논블로킹 Non-blocking

  • A 함수가 B 함수를 호출 할 때, B 함수가 제어권을 바로 A 함수에게 넘겨주면서, A 함수가 다른 일을 할 수 있도록 하는 것.

동기 Synchronous

  • A 함수가 B 함수를 호출 할 때, B 함수의 결과를 A 함수가 처리하는 것.

비동기 Asynchronous

  • A 함수가 B 함수를 호출 할 때, B 함수의 결과를 B 함수가 처리하는 것. (callback)

 

 

Blocking, Non-blocking, Sync, Async 의 차이

들어가며 전 회사에서 한 선배님이 질문을 했다. Blocking 과 Non-blocking, Sync 와 Async 의 차이를 설명할 수 있냐고. 어 음... 하는 사이 선배님이 다시 말을 했다. 그 둘을 설마 같은거라고 이해하고 계

jh-7.tistory.com

 

9. Blocking & Non-Blocking I/O

 

Blocking I/O

Blocking I/O는 I/O 작업이 진행되는 동안 User Process가 자신의 작업을 중단한채, I/O가 끝날때까지 대기하는 방식을 말한다.
 
Blocking I/O 형태의 작업은 다음과 같이 진행된다.

  1. Process(Thread)가 Kernel에게 I/O를 요청하는 함수를 호출
  2. Process(Thread)는 작업 결과를 반환 받을 때까지 대기
  3. Kernel이 작업을 완료하면 작업 결과를 반환 받음

이 경우 말 그대로 block이 되고, 어플리케이션에서 다른 작업을 수행하지 못하고 대기하게 되므로 Resource 낭비가 심하다.
 

Non-Blocking I/O

Non-Blocking I/O는 작업이 진행되는 동안 User Process의 작업을 중단하지 않고 I/O 호출에 대해 즉시 리턴하고, User Process가 이어서 다른 일을 수행할 수 있도록 하는 방식을 의미한다.
 
Non-Blocking I/O 형태의 작업은 다음과 같은 형태로 진행된다.

  1. read I/O를 하기 위해 system call
  2. 커널의 I/O 작업 완료 여부와 관계없이 즉시 응답
    a. 이는 커널이 system call을 받자마자 CPU 제어권을 다시 어플리케이션에 넘겨주는 작업
  3. 어플리케이션은 I/O 작업이 완료되기 전에 다른 작업을 수행 가능
  4. 어플리케이션은 다른 작업 수행 중간중간에 system call을 보내 I/O가 완료되었는지 커널에 요청하고, 완료되면 I/O 작업을 완료
  5.  

이러한 과정을 통해 모든 작업 수행이 I/O의 진행시간과는 관계없이 빠르게 동작하기 때문에, User Process는 자신의 작업을 오랜시간 중지하지 않고도 I/O 처리를 수행할 수 있다.
 
그러나 반복적으로 system call이 발생하기 때문에 이것 또한 Resource 낭비가 된다.
이러한 Non-Blocking I/O는 데이터를 입력할 때만 전송하는 게 아니라 주기적으로 계속 반복하기 때문이다.
 
 

 

Blocking/Non-Blocking I/O && I/O 이벤트 통지 모델

I/O(Input/Output) >I/O 작업은 Kernel level에서만 수행할 수 있다. 따라서, Process, Thread는 커널에게 I/O를 요청해야 한다. I/O란 데이터의 입력(input)과 출력(Output)을 함께 일컫는 말이다. 일반적으로 I/O라고

velog.io

 

'CS > 스터디' 카테고리의 다른 글

cs 스터디 5주차  (0) 2022.11.15
cs 스터디 4주차  (1) 2022.11.13
cs 스터디 (3주차)  (0) 2022.11.01
cs 스터디 (2주차)  (0) 2022.10.21
cs 스터디 (1주차)  (0) 2022.10.17