개발 & 데이터베이스/CS

주소창에 구글, 네이버 등을 검색하면 어떤일이 벌어질까?

K.두부 2023. 3. 21. 10:57
반응형

안녕하세요. N년차 웹 개발자입니다.

저는 웹 개발을 하면서 이 페이지가 어떻게 동작하는지에 대해서 알아야 된다고 생각합니다.

그렇다면 사용자가 주소창에 www.google.com   혹은 www.naver.com 을 입력하면 무슨 일이 발생할까요? 

 

우리가 사는 집 주소가 존재하듯이 웹 브라우저도 주소가 있다.

모든 사람에게 '수원역 1번 출구'로 오세요. 라고 한다면 한 명도 빠짐없이 수원역 1번 출구로 올 것이다.

웹 브라우저도 google.com 혹은 naver.com 처럼 고유 주소가 존재하고 이것을 URL이라고 부른다.

 

웹 브라우저 동작 방식

출처: 'www.google.com'을 주소창에서 입력하면 일어나는 일 (velog.io)

1. 사용자가 google.com 을 검색

 

2. 웹브라우저는 캐싱된 DNS 기록들을 해당 도메인 주소와 대응하는 IP 주소를 확인

 

DNS는 웹사이트 이름과 IP 주소를 연결해주는 데이터베이스로 일종의 '전화번호부' 다.

사용자가 웹사이트를 편하게 이용할 수 있게 해주는 역할로 IP 주소가 아닌 google.com 과 같은 도메인으로 검색이 가능하게끔 하는 것이 DNS다.

 

브라우저는 4개의 캐싱된 DNS 기록들을 아래와 같은 순서로 확인한다.

 

1) 브라우저 캐시 : 브라우저는 일정 기간 동안 사용자가 방문했던 DNS 기록을 보관한다. 따라서 가장 먼저 확인을 하는 곳

2) OS 캐시 : systemcall을 통해서 OS가 저장하고 있는 DNS 기록들의 캐시에 접근한다.

3) router 캐시 : 자체 DNS 캐시를 유지관리하는 라우터와 통신한다.

4) ISP 캐시 : ISP는 DNS 서버를 가지고 있기 때문에 해당 서버의 DNS 기록을 검색할 수 있다.

 

▶ ISP (Internet Service Provider) 

인터넷 서비스 제공자로 3개의 계층으로 나누어져 있다.

 

3단계 ISP 

인터넷 전송을 구매하는 제공 업체로 우리가 흔히 알고 있는 인터넷을 제공해 주는 접속 ISP다. ex) KT, LG U+, ···

 

2단계 ISP

1단계 ISP와 3단계 ISP를 연결하는 공급자다.

인터넷 전송을 구매하기도 하고 피어링 계약을 통해 인터넷 트래픽을 교환한다.

 

1단계 ISP

다른 1단계 ISP와 인터넷 트래픽을 교환하는 인터넷 제공 업체들로 백본 인터넷 공급자라고 불린다.

모든 인터넷 공급자에게 트래픽을 제공하며 1단계 ISP가 없다면 대륙과 국가 간에 인터넷 트래픽을 교환할 수 없다.

 

3. 만약 캐싱된 DNS 기록들에 해당 도메인 주소가 없다면 ISP의 DNS server는 재귀적으로 도메인 이름을 찾는다.

 

▶ DNS Server (Domain Name System Server)

할당된 도메인 영역에 대한 정보를 가지고 있는 서버로 주로 도메인을 IP주소로 변환하는 역할을 한다.

DNS Server 혹은 DNS Recursor라고 부른다.

 

DNS Query의 목적은 여러 다른 DNS Server 들을 검색해서 해당 사이트의 IP주소를 찾는 역할을 담당한다.

이러한 검색을 recursive search라고 부른다. IP주소를 찾을 때까지 DNS 서버에서 다른 DNS 서버를 오가면서 반복적으로 검색을 하던지 못 찾아서 에러가 발생할 때까지 검색을 진행한다.

 

우리가 마주하는 웹 사이트 URL들은 Third-level, Second-level, Top-level을 가지고 있다.

각 레벨 별로 자신만의 name server을 가지고 있고 DNS lookup 프로세스 중에 쿼리가 진행된다.

 

google.com을 입력하면

처음에 DNS recursor 가 root name server에 연락함.

root name server는 .com 도메인 name server 로 리다이렉트 함

.com name server 는 google.com name server 로 리다이렉트 함

google.com name server 는 DNS 기록에서 google.com에 매칭되는 IP 주소를 찾고 DNS recursor로 보내게 된다.

 

이 모든 요청들은 작은 데이터 패킷을 통해서 보내지고, 패킷 안에는 보내는 요청의 내용과 DNS recursor의 IP주소가 포함되어 있다. 이 패킷들은 원하는 DNS 기록을 가진 DNS 서버에 도달할 때까지 클라이언트와 서버를 여러 번 오감.

 

 

4. 일치하는 주소를 찾으면 브라우저는 해당 서버와 TCP 연결을 한다.

 

▶ TCP/IP (Transmission Control Protocol / Internet Protocol)

전송 제어 프로토콜(TCP)은 한 기기에서 다른 기기로 데이터 전송하는 것을 담당하고, 인터넷 프로토콜(IP)은 데이터의 조각을 최대한 빨리 대상 IP주소로 보내는 역할을 한다. 각 각 담당하는 작업이 있지만 같은 목표를 가지고 있기 때문에 한 명칭으로 알려져 있다.

 

▶ TCP/IP 4계층

응용 계층

사용자가 네트워크에 접근할 수 있도록 한다. 사용자 인터페이스를 제공할 뿐만 아니라 이메일, 원격 파일 접근 및 전송, 공유 데이터베이스 관리 등의 서비스를 제공한다.

 

전송 계층

전송을 담당하는 계층으로 TCP를 포함한 사용자 데이터그램 통신 규약(User Datagram Protocol : UDP)이 있다. 

UDP는 TCP보다 단순하며 다른 데이터에 비해 안전하게 보호되어야  할 필요가 없는 실시간 응용 프로그램에서 흔히 이용된다. 또한, TCP보다 신뢰도가 낮고 오류 검출, 흐름 제어 등의 기능을 제공하지 않아 패킷을 빠르게 전송하는 응용 계층에서 이용되고 있다.

 

TCP는 두 네트워크 사이에 연결을 형성하고 효율적인 작업을 위해 데이터를 작은 패킷으로 나눠서 데이터를 전송한다. TCP는 연결형 서비스이지만 UDP는 비연결형 서비스이다. TCP는 신뢰도가 높지만 속도가 느리다.

 

  UDP TCP
속도 빠름 느림
신뢰도 낮음 높음
패킷 교환 방식 데이터그램 방식 가상 회선 방식
전송 순서 변경 될 수 있음 보장

 

인터넷 계층

네트워크 간 데이터 패킷의 전송을 관리하는 계층으로 IP뿐만 아니라 주소 변환 규약(Address Resolution Protocol : ARP), 인터넷 그룹 관리 프로토콜(Internet Group Management Protocol : IGMP), 인터넷 제어 메시지 프로토콜(Internet Control Message Protocol : ICMP)이 있다.

 

ARP : 네트워크 계층 주소와 링크 계층 주소 사이의 변환을 담당하는 프로토콜

IGMP : 그룹 멤버십을 구성하거나 그룹 관리를 위한 프로토콜

ICMP : 인터넷 통신 서비스 환경에서 오류에 대한 알림과 관련된 메시지를 전달하는 목적의 프로토콜

 

데이터 링크 계층

데이터 전송의 최하위 계층으로 데이터가 원하는 IP주소에 도달하고 해당 네트워크 내의 연결된 기기에 연결되어 있는지 확인한다. 

 

 

5. TCP 연결에 성공하면 브라우저가 웹 서버 HTTP 요청을 보낸다.

 

TCP 연결에 성공하면 브라우저는 GET/POST 요청을 통해 웹 서버에게 google.com 웹페이지를 요구한다.

 

 

6. 웹 어플리케이션 서버(WAS) 와 데이터베이스에서 웹 페이지 작업을 처리한다.

 

웹 서버 혼자서 모든 로직을 수행하고 데이터를 관리한다면 서버에 과부하가 발생할 수 있다.

이를 방지하기 위해 웹 어플리케이션 서버(WAS)는 서버의 일을 도와준다.

 

브라우저로부터 요청을 받으면 웹 서버는 동적인 컨텐츠를 WAS에게 요청한다.

 

웹 서버: 정적인 컨텐츠(HTML, CSS 등)를 처리

WAS: 동적인 컨텐츠(JSP, PHP, ASP 등)를 처리

 

 

7. 웹 서버는 요청을 처리한 결과를 HTTP 응답으로 브라우저에게 전송한다.

 

처리한 결과에는 요청한 웹페이지, status code, Cache-control, 쿠키, 개인정보 등을 포함한다. 

 

▶ status code 종류

1xx: 정보만  담긴 메시지

2xx: 요청 처리 성공

3xx: 사용자를 다른 URL로 리다이렉트

4xx: 사용자 측에서 에러 발생

5xx: 서버 측에서 에러 발생

 

 

8. 브라우저는 HTML을 랜더링한 형태를 화면에 띄운다.

반응형