[CS study] DNS, Network flow
DNS
Domain Name System (DNS) : 사람이 읽을 수 있는 도메인 이름(한글/영문 주소)과 컴퓨터가 해석할 수 있는 IP 주소를 변환하는 역할을 하는 프로토콜
- DNS로부터 얻은 IP로 HTTP 서비스 요청
- www.naver.com 서버는 요청에 따른 HTTP 서비스를 반환
- 전달받은 HTTP 서비스를 브라우저에 출력
DNS Round Robin
Load Balancing : 여러 대의 서버로 트래픽 부하를 분산하는 것
DNS 서버에서 하나의 도메인 명에 여러 개의 IP 주소를 등록시켜두고 클라이언트로부터 요청이 있으면 등록되어 있는 IP 주소를 순서대로 반환하는 방식이다. 반환되는 IP 주소가 바뀌므로 클라이언트의 행선지도 바뀌게 되어 결과적으로 커넥션이 분배된다.
* 각 프로세스에 일정 시간을 할당하고, 할당된 시가닝 종료되면 해당 프로세스 보류 후 다른 프로세스를 처리한다.
DNS는 다중화 방법이 아닌, 오로지 부하 분산용으로 아래와 같은 한계를 극복하기 위해 다른 SW와 조합하여 사용한다.
한계점
- 서버의 수만큼 공인 IP 주소가 필요된다.
- 모바일 접속의 경우, 프록시 서버를 경유하는데, 프록시 서버에서는 변환 결과가 일정 시간동안 캐싱되기 때문에, 같은 프록시 서버를 경유하는 접속은 항상 같은 서버로 접속하게 되어 균등하게 분산되지 않는다.
- DNS 서버는 웹 서버의 부하나 접속 수와 같은 상황에 따라 질의결과를 제어할 수 없으며, 이에 대한 감지가 없어 다운된 서버라 해도, 이를 검출하지 못한 채 유저에게 제공하게 된다.
보완
-
WRR (Weighted Round Robin) : 각각의 웹 서버에 가중치를 부여하여 분산 비율을 변경 (가중치가 큰 서버일수록 접속의 빈도가 높으므로, 처리 능력이 높은 서버의 가중치를 높게 설정)
-
Least Connection : 접속 클라이언트 수가 가장 적은 서버를 선택 (주기적인 커넥션 관리와 모니터링, 공지 필요)
Network Flow
Browser
- url에 입력된 값을 브라우저 내부에서 결정된 규칙에 따라 의미 조사
- 조사된 의미에 따라 Request 메세지 생성
- 생성된 메세지를 웹 서버로 전송
Protocol Stack, LAN
- 브라우저에서 전달받은 메세지를 패킷에 저장 및 제어 정보 추가
- LAN 어댑터(전기신호로 변환)에 패킷 전송
- LAN 케이블에서 신호 송출
Switch, Herb, Router
- LAN 어댑터가 송신한 프레임 : 스위칭 허브를 경유하여 인터넷 접속용 라우터에 도착
- 통신사에 패킷 전달 및 인터넷 접속
Provider(통신사), 엑세스 회선
- 엑세스 회선에 의해 POP(Point Of Presence)로 운반
- POP에 의해 패킷이 인터넷의 핵심부로 들어가, 목적지를 향해 이동
방화벽, Cash Server
- 인터넷 핵심부를 통과한 후 웹 서버의 LAN에 도착
- 방화벽에 의한 패킷 검사 및 캐시 서버의 패킷 필요 여부 검사
*요청된 데이터가 캐시서버에 저장되어 있을 때, 웹 서버에 요청을 보내지 않고 바로 캐시서버에서 값을 취하며, 저장되어 있지 않은 재사용 데이터의 경우 캐시서버에 저장
Web Server
- 웹 서버의 프로토콜 스택에서 패킷을 추출하여 메세지 복원 진행
- 복원된 메세지를 수신한 웹 서버 애플리케이션은 요청에 따른 응답을 클라이언트로 전송
- 위의 과정을 거꾸로 짚으며 클라이언트에게 응답 전달