www.naver.com 이라는 url에 접속해보자
네이버의 ip 주소를 알아야 접근이 가능하지만 우리는 네이버의 ip 주소를 모르며
알고자 하더라도 수많은 웹 사이트의 ip 주소를 모두 알기에는 그 양이 너무 많다
따라서 DNS 서버에 질의를 해서 도메인을 주고 ip주소를 얻어온다
하지만 바로 DNS로 질의를 하는 것은 아니다
ip를 얻어오고 연결을 하는 과정을 알아보자
과정 - 기본
1. 컴퓨터마다 hosts 파일이라는 것이 있다
- 이 파일을 먼저 찾고 ip 주소를 얻어온다
- 해당 파일 내에 찾고자 하는 ip 주소가 없다면 다음으로 넘어간다
2. 과거 DNS 질의를 해서 운영체제 내에 캐싱된 응답을 확인한다
- 그 캐싱된 것을 먼저 보고 DNS에 물어보기 전 찾는다
- displaydns : dns 캐시를 보는 명령어
- 저장된 dns 캐시들을 볼 수 있다
- 단, 이 캐싱된 정보는 유효기간이 있다
- TTL = DNS 쿼리 결과가 캐시되는 기간
- 없다면 다음으로 넘어간다
3. DNS 질의를 한다.
- 공유기 세팅 설정이 되어있을 시
- 공유기가 설정된 사설ip(192.168.0.1~)로 DNS 포워딩을 이용해 질의하고 받아온다
- 설정을 안했으면
- ISP에서 정해둔 DNS 설정을 이용해 DNS에 직접 질의를 한다
4. http 통신을 위해 PC와 서버가 받아온 ip 주소로 TCP 연결을 한다
5. TCP 연결이 success되면 http request가 보내진다
6. reponse가 오면 연결이 시작된다
- HTTPS를 사용하는 경우 주고 받는 데이터의 암호화를 위한 TLS (Transport Layer Security) 핸드셰이크라는 추가 과정을 수행
💡 여기까지는 신입 개발자라면 필수로 알아야 하는 정도라고 한다
과정 - 심화
CDN(Content Delivery Network)
- CDN (Content Delivery Network)의 약자로 전 세계에서 분산되어있는 서버 네트워크
- 과정
- 만약 유럽에서 한국에 있는 서버에 접속한다고 하자
- 거리가 멀기 때문에 한국에 있는 CDN 서버를 유럽의 CDN서버에 복사하여 유럽 사용자의 요청을 유럽 CDN으로 연결한다
- 비용과 속도를 보장하며, 장애가 나도 다른 CDN서버로 재연결하기 때문에 안정성도 보장된다
GSLB(Global Server Load Balancing)
- DNS 서버의 발전된 형태
- 사용자에게 컨텐츠요청이 있는 경우 가장 최적의(가장 근접의 혹은 트래픽여유가 많은) 서버환경을 찾아주는 역할
- 과정
- pc가 cdn에 접속한다
- 접속자의 ip를 보고 cdn의 db내의 데이터와 대조하여 접속자의 주소를 알아낸다
- 어떤 ip로 접속했을 때 가장 빠를지 판단한다
- 이때 Health check를 통해 서버의 상태를 분석한다
- 즉 www.naver.com은 여러 개의 주소를 가지고 있으며 GSLB는 가장 빠르게 접속할 수 있는 주소를 추천해준다
DNS와 GSLB 차이점
- DNS
- Round Robin을 이용한 로드밸런싱으로 지역과 떨어진 지역의 서버와도 네트워크를 연결
- 서버의 상태를 알 수 없기 때문에 서비스가 정상/중단 여부를 모름
- GSLB
- Round Robin방식은 동일하나 서버의 트래픽을 분석하고 근접한 서버를 찾아내어 부하를 분산
- 서버의 상태를 알 수 있어서 정상으로 작동하는 서버를 찾아냄
참고
https://www.youtube.com/watch?v=GAyZ_QgYYYo&feature=emb_title&ab_channel=널널한개발자TV