본문 바로가기

카테고리 없음

웹 브라우저에 URL을 입력하면 일어나는 일 by 널널한 개발자

URL과 URI의 차이에 대해 먼저 알아보자. 

위치 지정자 vs 식별자

 

- URL (Uniform Resource Locator): 리소스의 위치를 지정하는 "위치 지정자"입니다.
                                                         특정 서버나 데이터베이스 내의 파일 위치를 의미합니다.
- URI (Uniform Resource Identifier): 리소스를 식별하는 "식별자"입니다. URI에는 URL과 URN이 포함됩니다.

웹 주소 입력 시 URL을 사용하게 되며, 정확한 리소스 위치를 찾는 것이 목표입니다.

 

www.naver.com  URL을 웹 브라우저에 입력한다면?

가정

1. pc 는 window 운영체제를 사용중이다.

2. 공유기를 통해 Internet을 사용중이다. 

 

"입력"

 

"컴퓨터에서 naver.com  도메인에 속해있는 이름이 www인 인터넷망에서 통신을 하기 위해서는 

Naver의 IP주소가 우선적으로 필요하다."

 

브라우저에서 `http://www.naver.com`과 같은 주소를 입력하면, 

이 주소가 실제 IP 주소로 변환되어야만 인터넷을 통해 네이버 서버에 접속할 수 있습니다. 

이를 위해 DNS(Domain Name System) 서버를 거치게 되며, 아래의 과정이 순서대로 진행됩니다.

 

DNS 서버 : hierachy 구조. (분산형 DB)  / DDNS(Dynamic DNS)도 존재.

 

바로 DNS에게 직접 질의하는 것은 아니고, 각 컴퓨터 별로

1. host 파일에 뭐라고 썼는지를 확인하며,

2. DNS Cache를 우선적으로 확인한다.

 

위 두곳에 모두 없을 시 질의를 하는데,

 

3.PC의 설정에 따라 DNS에 질의를 한다. 

(공유기를 사용한다면, 공유기가 포워딩을 통해 대신 질의후 응답을 재전달해준다.)

설정이 부족하다면, ISP에서 전달해주는 DNS 설정을 사용하게 된다.

 

4.이렇게 ip주소를 획득한 이후,

5.브라우저로 연겨릿에는 HTTP를 쓰며, HTTP는 TCP기반이기에 PC에서 Naver IP (서버)로 TCP 연결을 우선 수행한다. 

6.이후, HTTP를 통해 연결하며, 

7. 연결 성공시 HTTP Request가 발생한다. 

 

-------------------------------------------- 신입 기준의 대답----------------------------------------

 

----------경력자라면?------------

 

구글, 네이버정도 규모의 회사에서는 "GSLB"와 CDN서버를 사용하는경우가 많다. 이를 언급해주어야함.

(GSLB : Global Server Load Balancing)

(CDN : Content delivery network)

 

- GSLB는 지리적으로 분산된 서버 간 부하를 분산하는 역할을 하며,
  특정 서버가 과부하 상태이거나 장애가 발생했을 때 자동으로 다른 서버로 접속을 유도합니다.
- CDN은 콘텐츠를 지리적으로 가까운 위치에서 제공함으로써 사용자에게 빠르고 안정적인 접속을 보장합니다.

 

nslookup www.naver.com

(현재 구글 DNS 설정되어있음)

위 명령어를 터미널에 입력할 경우 akamaiedge(CDN 제공 회사) 라는 네트워크 제공자의 이름을 확인할 수 있는데,

이를 통해 CDN을 사용하고 있다는 것을 인지하여야 한다. 

 

이외에도 whois.nic.or.kr 에 접속 시 IP 주소를 넣은 후 조회가 가능하다. 

주소가 AKAMAI 에 소속되어있는 것을 다시 확인해 볼 수 있을 것이다. 

 

이후, CDN이 언급되었다면 왜 CDN을 사용하는가? 에 대해서도 이야기해주어야 한다. 

추가로 GSLB의 구현 방식에는 여러 방법이 있는데, DNS를 통한 아주 간단한 방식이 있지만,

보통 Health check를 하며 DNS작동을 해주는 System을 만들어 구현하는 방식이 있으며,

이때 주로 GSLB를 사용했다고 한다.

 

사용자가 접속해있는 위치에 따라 IP 주소는 달라질 수 있다.

왜? 

CDN이 접속자의 IP주소를 보고 사용자의 위치를 파악 후,

보유중인 DB에서 제공해줄 수 있는 가장 원활한 IP주소를 찾아서 제공해준다.

 

왜 Health Check를 하는가?

(서버가 죽었을 수도 있기 때문에)

하나의 서버가 다운되었다 하더라도, 다른곳으로 제공해줄 수 있게 하기 위해서. 

 

여기서 무엇을 논해볼 수 있을까? 생각해보자. 


 

~> 만약, 누군가 로그인되어있는 상태에서 서버가 다운되어서

      본인도 모르는 곳에서 다른 IP주소로 옮겨졌다면?  (서울 -> 부산)

 

Q ) 과연 세션이 유지될것인가??

      어떻게 아키텍쳐를 설계해야 세션이 유지되도록 할 수 있을까?

이때 장애 대응을 위해 서버 간 **Failover**가 필요하며, 세션이 유지되도록 아키텍처 설계가 필요합니다. 

세션 클러스터링 또는 Redis 같은 외부 세션 스토리지를 통해 이를 해결할 수 있습니다.

 

if) 보안분야라면? 

Q) DNS를 속여먹는 스푸핑 어택? 디도스?  어떻게 대처할 것인가. 

DNS 스푸핑과 같은 보안 위협으로부터 DNS를 보호해야 하며, DDoS(분산 서비스 거부) 공격에도 대비해야 합니다. 이를 위해 **DNSSEC**(DNS Security Extensions)와 같은 보안 확장을 적용하거나 클라우드 기반의 보안 솔루션을 도입할 수 있습니다.

 

 

핵심 용어 GSLB, CDN. 

5분안에 URL접속시 발생하는 일들에 대해 이야기하라고 했다면, 

해당 용어들을 언급 후, 이 부분까지 이야기하면 시간이 넘을 것 같은데, 더 이야기 할까요?

와 같이 면접관이 궁금하도록 만들자!

 

 

추가로 이어나갈 수 있는 부분 

Docker + 쿠버네티스 

Q) 무중단 배포 해봤어? (+ 활용해서 장애대응까지도)

대규모 시스템에서 **Docker와 쿠버네티스**를 활용해 무중단 배포가 가능하며, 

장애 대응 및 부하 분산까지 가능하도록 환경을 구축할 수 있습니다.

 

보다 깊은 내용...

UserMode/ KernerMode/ H/W ~ 패킷 

 


본 글은 해당 영상을 보고 정리하였음을 알려드립니다.