TIL

스파르타 코딩 클럽 모의 면접 깔끔한 답변 준비

추운날_너를_기다리며 2024. 11. 1. 17:27

1. 전송 계층 프로토콜에 대해 설명해주세요.

전송 계층 프로토콜에 대해서 말씀 드리겠습니다.

사실 아주 짧게 전송 계층 프로토콜로는 TCP와 UDP가 있습니다. 하면 질문 폭탄의 불안으로

OSI 7 계층중 4계층으로 애플리케이션이 네트워크를 통해 데이터를 안전하고 효율적으로 송수신할 수 있도록 도와주는 역할을 하는 계층의 프로토콜로 TCP와 UDP가 있습니다.

 

TCP는 연결 지향적 통신으로 3-way handshake 연결 설정을 통해 서버와 클라간의 데이터 송수신에 대한 신뢰성을 보장해 줍니다.

TCP의 예시로는 데이터의 신뢰성과 정확성이 중요한 금융 애플리 케이션이나 온라인 쇼핑몰에서 TCP가 사용됩니다.

 

UDP는 비연결 지향적 통신으로 데이터의 도착 여부나 순서를 보장하지 않고 손실된 데이터의 재전송또한 이루어지지 않습니다. 대신 TCP에 비해서 데이터 전송 속도가 빠르기 때문에 실시간 데이터 전송에 적합합니다.

UDP는 온라인 게임에서 위치 정보나 실시간 채팅 데이터를 주고받을 때 UDP를 사용하는 경우가 많습니다.


1-꼬리질문. IP의 한계

IP는 네트워크 계층에서 사용되는 프로토콜로 데이터를 목적지까지 전송하기 위한 주소 지정과 경로 설정을 담당합니다. 하지만 정말 이렇게까지 주소 지정과 경로 설정만 해줄줄은 몰랐던 거죠. 그 이외의 것을 해주지 않습니다.

 

IP는 데이터 전송의 신뢰성을 보장하지 않습니다.

그리고 IP는 데이터 전송 중 발생할 수 있는 오류를 처리하거나 수신자의 처리 속도에 맞춰 데이터를 조절하는 기능이 없습니다.

 

신뢰성을 보장받기 위해 TCP를 사용하여 데이터의 신뢰성을 보장받아주면 됩니다.


1-꼬리질문. 오류 제어, 흐름 제어

오류 제어는 전송 중에 발생할 수 있는 오류를 감지하고 수정하는 과정을 의미합니다. TCP는 오류 제어를 위해 다양한 메커니즘을 사용하죠.

흐름 제어는 송신자와 수신자 간의 데이터 전송 속도를 조절하여, 수신자의 버퍼 오버플로우를 방지하는 메커니즘입니다.

 

TCP 오류 제어의 메커니즘으로는 체크섬을 사용합니다. 헤더에 체크섬 계산 값을 더해 원래 값과 비교해주는 것 입니다.

TCP 흐름 제어의 예시로는 슬라이딩 윈도우 방식을 사용하여 데이터를 받은 크기만큼 데이터를 전송해 주는 것 입니다.

 

2. 대칭키, 비대칭키 암호화에 대해 설명해주세요.

대칭키 암호화는 송신자와 수신자가 동일한 키를 사용해 데이터를 암호화하고 복호화하는 방식입니다.

 

대칭키 암호화의 장점으로는 빠른 속도, 낮은 계산 복잡도를 가지고 있지만 단점으로는 보안에 취약합니다.

 

비대칭키 암호화는 서로 다른 키 쌍(공개키, 개인키)를 사용해 암호화와 복호화를 수행합니다. 공개키로 암호화한 데이터는 해당하는 개인키로만 복호화할 수 있으며, 개인키로 암호화한 데이터는 공개키로 만 복호화 할 수 있습니다.

 

비대칭키 암호화의 장점으로는 키 교환을 안전하게 할 수 있고 데이터 무결성을 보장해주지만 속도가 느립니다.


2-꼬리질문. 대칭키/비대칭키 혼합 사용

대칭키와 비대칭키는 각기 다른 장점과 단점이 있기 때문에, 이를 조합해서 사용하면 보안성과 성능을 모두 확보 할 수 있습니다.

 

앞서 설명 하였듯이 대칭키는 속도가 빠르고 대용량 데이터를 처리하는 데 적합하지만 키를 안전하게 전달하는 것이 문제이고 비대칭키는 키 교환의 안전성이 높아 신뢰할 수 있는 키 전달이 가능하지만 속도가 느려 대용량 데이터 처리에 비효율적입니다.

 

따라서 비대칭키를 사용해 대칭키를 안전하게 교환한 후, 교환된 대칭키를 이용해 실제 데이터를 암호화합니다. 이렇게 하면 비대칭키의 보안성과 대칭키의 속도를 동시에 활용할 수 있습니다.


2-꼬리질문. HTTPS

HTTPS는 HTTP와 SSL/TLS를 결합한 보안 프로토콜로, HTTP가 보안에 취약해 나오게된 프로토콜입니다.

 

HTTPS의 동작 방식으로는 HTTPS는 클라이언트가 서버에 HTTPS 연결을 요청하고 서버는 SSL 인증서를 브라우저에 전송합니다. 이 인증서에는 서버의 공개키가 포함되어 있습니다. 브라우저는 서버의 인증서를 신뢰할 수 있는 인증기관을 통해 검증하고 브라우저는 대칭 키를 생성하고, 서버의 공개키를 사용해 이를 암호화하여 데이터를 서버에 전송합니다.

 

간단하게 비대칭키로 처음에 안전한 연결을 설정하고 그 다음부터는 대칭키로 데이터를 주고받아 보안성과 속도를 확보하게 동작합니다.


3. 로드밸런싱에 대해 설명해주세요.

로드 밸런싱은 여러 서버에 트래픽을 분산시켜 서버의 부하를 효율적으로 관리하는 기술로 이를 통해 특정 서버에 과부하가 걸리는 것을 방지하고 시스템의 가용성과 성능을 향상시켜줍니다.

 

그렇다면 이러한 트래픽을 분산시켜주는 알고리즘이 존재할 겁니다.

라운드 로빈, 가중 라운드 로빈, IP 해시, 최소 연결, 최소 응답 시간이 있습니다.


3-꼬리질문. 로드밸런싱 알고리즘

로드 밸런싱 알고리즘은 특정 서버로 요청을 라우팅하는 방법입니다.

 

1) 라운드 로빈 (Round Robin)

요청을 순차적으로 서버에 할당하는 방식입니다. 즉, 첫 번째 요청은 A 서버, 두 번째 요청은 B 서버, 세 번째 요청은 C 서버로 전달되는 식입니다. 

서버의 상태와 관계없이 균등하게 요청을 분배합니다.

 

2) 가중치 라운드 로빈 (Weighted Round Robin)

A 서버의 성능이 높아 3개의 요청을 처리할 수 있고, B 서버는 2개, C 서버는 1개의 요청만 처리할 수 있다면, A 서버에 더 많은 요청을 할당합니다.

 

3) 최소 연결 (Least Connections)

현재 연결이 가장 적은 서버에 요청을 할당하는 방식입니다.

각 서버의 현재 부하를 고려하여, 가장 적은 연결 수를 가진 서버에 요청을 전달함으로써 효율적인 자원 활용을 가능하게 합니다.

A 서버가 5개의 연결을 유지하고 있고, B 서버는 3개, C 서버는 2개의 연결만 유지하고 있다면, C 서버에 새로운 요청을 전달하여 부하를 균등하게 분산합니다.

 

4) IP 해싱 (IP Hashing)

클라이언트의 IP 주소를 해싱하여 고유 값을 생성하고, 그 값에 따라 특정 서버에 요청을 할당하는 방식입니다.

이를 통해 특정 클라이언트는 항상 동일한 서버로 연결됩니다.

특정 사용자가 접속할 때마다 A 서버로 연결된다면, 이 사용자는 동일한 서버에서 서비스가 제공되어 세션 정보 등을 쉽게 유지할 수있습니다.


3-꼬리질문. 헬스체크

헬스체크는 로드밸런서가 각 서버의 상태를 모니터링하여 정상적으로 작동하는지를 주기적으로 확인하는 과정입니다.

만약 서버가 정상적으로 작동하지 않을 경우, 로드밸런서는 해당 서버에 요청을 보내지 않고, 다른 정상 서버로 요청을 분배합니다.

이를 통해 서버 장애가 발생하더라도 사용자는 서비스 중단 없이 계속해서 서비스를 이용할 수 있습니다.