본문 바로가기
기타 CS

기술 면접 준비 - 네트워크

by 밝지 2023. 2. 21.
728x90
반응형

OSI 7계층

인터넷 환경에서 통신을 하기 위해 네트워킹에 대한 표준을 7개 계층으로 나눈 것입니다. 물리 계층, 데이터 링크 계층, 네트 워크 계층, 세션 계층, 전송 계층, 표현 계층, 응용 계층이 있습니다. 

 

 

 

TCP vs UDP

TCP는 연결형 프로토콜로 신뢰성이 높습니다. 서버와 클라이언트가 3 way handshaking으로 연결이 설정되고 4 way handshaking으로 연결이 해제된다. 1대 1 통신(unicast)며, 데이터 흐름제어와 혼잡 제어가 가능하다는 장점이 있지만 연결이 성공되었음을 확인해야 데이터를 전송하므로 전송 속도 가 느립니다. 카카오톡과 같은 메시징 서비스에 적절합니다.

UDP는 비연결형 프로토콜로 연결 없이 통신이 가능합니다. 연결 여부를 확인하지 않고 손상된 데이터를 다시 전송하지 않으므로 신뢰성은 떨어지지만 속도가 빠릅니다. 유튜브와 같은 스트리밍 서비스에 적절합니다. 1대1, 1대다 다대다 통신이 가능합니다. 

 

 

 

Internet Protocol

IP는 Internet Protocol의 약자로 인터넷망을 통해 패킷을 전달하는 프로토콜입니다. 비연결성과 비신뢰성의 특징을 가집니다. 비 연결성은 패킷을 보내는 경로를 정하지 않는 것이고, 비 신뢰성은 패킷의 완전한 전달을 보장하지 않는 것입니다. 

 

 

 

DNS

DNS는 도메인 주소를 IP 주소로 변환해주는 시스템입니다. DNS는 다음과 같은 순서로 작동합니다. URL을 입력하면 ISP(Internet Service Provider)가 관리하는 DNS 해석기에 요청을 라우팅합니다. DNS 해석기가 top level의 서버 주소를 요청하고 second level, sub DNS 서버를 거쳐 IP 주소를 얻게 됩니다. 

 

 

 

로드밸런서

로드밸런서는 서버의 부하를 분산시키는 시스템입니다. 크게 L4 로드밸런서와 L7 로드밸런서가 있습니다. L4 로드밸런서는 4(전송 계층)계층 이하의 정보를 활용해 로드를 분산합니다. 특히 MAC주소, IP주소, 포트정보를 가지고 트래픽을 분산합니다. L7 로드 밸런서는 7(응용 계층)계층의 정보를 활용해 로드를 분산합니다. 패킷의 내용을 확인하고 분산하기 때문에 DDoS같은 비정상적 트래픽도 필터링 할 수 있습니다.

 

 

 

로드밸런싱

로드밸런싱이란 한 대의 서버에 부하가 집중되지 않도록 요청을 여러 대의 서버로 나누어 처리하는 것입니다. 기존의 서버만으로 원활한 서비스 동작이 불가능 할 때 기존의 서버의 성능을 확장하는 scale up 방식, 기존의 서버와 동일하거나 낮은 서버를 증설하는 scale out 방식으로 대처가 필요한데 scale out 방식일 때 로드 밸런싱이 필요합니다. 로드 밸런싱에는 라운드로빈 방식, 가중 라운드로빈 방식, IP 해시 방식, 최소 연결 방식, 최소 응답 시간 방식 등이 있습니다.

[라운드로빈 방식]

서버에 들어온 요청을 순서대로 돌아가며 배정하는 방식이다. 클라이언트의 요청을 순서대로 분배하기 때문에 여러 대의 서버가 동일한 스펙을 갖고 있고 세션(서버와의 연결)이 오래 지속되지 ㅇ않는 경우에 적합하다.

[가중 라운드로빈 방식]

각 서버마다 가중치를 매기고 가중치가 높은 서버에 클라이언트 요청을 우선적으로 배분한다. 서버의 트래픽 처리 능력이 상이한 경우 사용한다. 

[IP해시 방식]

클라이언트의 IP주소를 특정 서버로 매핑하여 요청을 처리하는 방식이다. 사용자의 IP를 해싱해 로드를 분배하기 때문에 사용자는 항상 동일한 서버로 연결된다.

[최소 연결 방식]

요청이 들어온 시점에 가장 연결 상태가 적은 서버에 우선적으로 트래픽을 배분하는 방식이다. 세션이 길어지거나 서버에 분배된 트래픽들이 일정하지 않은 경우에 적합하다.

[최소 응답 시간 방식]

서버의 현재 연결 상태와 응답 시간을 모두 고려하여 트래픽을 배분한다. 가장 연결 상태가 적고 응답 시간이 짧은 서버에 우선적으로 로드를 분배한다. 

 

 

 

프록시 서버

프록시 서버는 서버와 클라이언트 사이에서 데이터를 전달해주는 서버입니다. 클라이언트에서 프록시 서버로 전달할 요청을 보내면 프록시 서버에서 받아 서버에 요청합니다. 서버에서는 요청에 맞는 데이터를 프록시 서버로 전달하고 프록시 서버는 전달 받은 데이터를 클라이언트에 전달합니다. 클라이언트와 서버가 직접 통신하지 않고 프록시 서버를 거치는 가장 큰 이유는 보안 때문입니다. 프록시 서버를 통함으로써 서버의 IP를 숨기는 것이 가능하고 이는 외부로부터 위협을 막아줍니다. 웹 캐싱 또한 프록시 서버에서 이루어집니다. 프록시 서버는 사용자에 의해 빈번히 요청되는 데이터를 사용자와 지리적으로 가까운 웹캐시 서버에 보관합니다. 응답 시간을 줄이고 웹 트래픽을 줄일 수 있습니다.

 

 

 

 

 

 

 

 

 

 

728x90
반응형