기타

웹 브라우저에 URL을 입력하면 발생하는 일

참깨빵위에참깨빵_ 2023. 11. 11. 21:30
728x90
반응형

브라우저에서 특정 주소창에 어떤 URL을 치면 잠시 후에 해당 웹 페이지가 열린다. 개발을 공부하기 전에는 굳이 의문을 가질 필요 없는 아주 당연한 현상이었다. 그러나 주소창에 URL을 입력하고 크롬 인스펙트를 켜서 기다리다가, 브라우저는 안에서 무슨 일을 하길래 웹 페이지가 빠르거나 느리게 뜨는 걸까 궁금해졌다. 그래서 정리해 본다.
 
https://aws.amazon.com/ko/blogs/korea/what-happens-when-you-type-a-url-into-your-browser/

웹 브라우저에 URL을 입력하면 어떤 일이 생기나요? | Amazon Web Services

여러분은 매일 웹 브라우저를 열고 소셜 미디어, 뉴스, 전자 상거래 사이트 등 즐겨 찾는 웹 사이트를 탐색합니다. 주소창에 URL을 입력하거나 페이지 링크를 클릭하면 해당 페이지로 이동합니다

aws.amazon.com

1. 웹 브라우저에 URL을 입력하고 엔터 키 입력

"https://channy.creation.net"라는 URL을 분류하면 아래와 같다

- 통신 규약(프로토콜) : "https://"는 통신 프로토콜이다. HTTPS는 브라우저에 전송 계층 보안(TLS)을 써서 서버에 연결하게 지시한다. TLS는 인터넷을 통한 통신을 보호하는 암호화 프로토콜이다
- 도메인 : "channy.creation.net"은 웹 사이트의 도메인 이름이다. 기억하기 쉬운 주소고 특정 서버의 IP 주소를 가리킨다
- 경로 : URL에 리소스의 추가 경로가 있는 경우가 있다. 예를 들어 위 URL뒤에 "/blog/hello-world"라는 문자열이 더 붙은 경우, blog는 서버에서 요청된 리소스인 "hello-world"로 이어지는 경로다. 이를 컴퓨터에 있는 파일의 디렉터리 구조나 기타 디렉터리처럼 생각할 수 있다. 이는 HTML, CSS, 자바스크립트, 이미지 파일, 동적으로 만든 컨텐츠에 상관없이 리소스를 구성하는 방법이다

2. 웹 브라우저가 도메인명의 IP 주소 조회 : 브라우저에 URL을 치고 엔터를 누르면 브라우저는 인터넷에서 연결할 서버를 파악해야 한다. DNS 조회를 통해 이 작업을 수행한다...(중략)

3. 웹 브라우저가 서버와의 TCP 연결 시작 : 인터넷에 연결된 웹 브라우저 요청 패킷은 일반적으로 TCP/IP라는 전송 제어 프로토콜을 써서 라우터 장비, ISP 교환기를 통해 이동돼 통신 회사간 경로인 라우팅 테이블을 따라 연결할 IP 주소가 있는 웹 서버를 찾는다...(중략)...웹 브라우저가 인터넷에서 서버를 찾으면 웹 서버와의 TCP 연결을 설정하고 HTTPS를 통해 평문 통신을 시작한다. 그러나 HTTPS를 쓸 경우 주고받는 데이터의 암호화를 위한 TLS 핸드셰이크라는 추가 과정을 수행한다...(중략)

4. 웹 브라우저가 HTTP 요청을 서버로 전송 : 브라우저가 서버에 연결되면 HTTP(S) 프로토콜에 대한 통신 규칙을 따른다. 웹 브라우저가 페이지의 컨텐츠를 요청하기 위해 서버에 HTTP 요청을 전송하는 걸로 시작한다. HTTP 요청에는 요청 라인, 헤더, 본문이 포함된다...(중략)

5. 웹 서버가 요청을 처리하고 응답을 다시 전송 : 웹 서버는 요청을 받고 요청 라인, 헤더, 본문의 정보를 기반으로 요청 처리법을 결정한다...(중략)

6. 웹 브라우저가 컨텐츠 렌더링 : 브라우저가 서버로부터 응답을 받으면 응답 헤더를 검사해서 리소스를 렌더링하는 방법에 대한 정보를 확인한다. HTML 리소스를 받으면 파싱하고 렌더링할 때 JS, CSS, 이미지 및 데이터를 가져오라는 추가 요청을 보낸다....(중략)

 
DNS 등 잘 모르는 용어들이 많지만, 대충 어떤 흐름으로 웹 페이지가 내게 표시되는지는 감이 온다.
다른 사이트, 블로그의 내용들도 이 흐름을 벗어난 내용을 설명하지 않기 때문에, 위 내용에서 잘 모르는 단어들을 추가로 찾아봤다. 먼저 DNS다.
 
https://www.cloudflare.com/ko-kr/learning/dns/what-is-dns/

DNS(Domain Name System)는 인터넷 전화번호부다. 사람은 naver.com 또는 google.com 같은 도메인 이름을 통해 온라인으로 정보에 접근한다. 브라우저는 IP 주소를 통해 상호작용한다. DNS는 브라우저가 인터넷 자원을 불러올 수 있게 도메인 이름을 IP 주소로 바꾼다. 인터넷에 연결된 기기들엔 다른 컴퓨터가 기기를 찾는 데 사용하는 고유한 IP 주소가 있다. DNS 서버를 쓰면 192.168.1.1 같은 주소나 2400:cb00:2048...같은 영문, 숫자로 된 IP 주소를 기억할 필요가 없다
DNS 확인 프로세스에는 호스트 이름을 컴퓨터 친화적인 IP 주소로 바꾸는 과정이 포함된다. IP 주소는 인터넷 각 기기에 제공되며 거리 주소가 특정한 집을 찾는 데 쓰이는 것처럼 적절한 인터넷 기기를 찾기 위해선 IP 주소가 필요하다. 유저가 어떤 페이지를 불러오려고 할 때는 유저가 브라우저에 입력한 내용을 웹 페이지를 찾는 데 필요한 컴퓨터 친화적 주소로 바꿔야 한다...(중략)...웹 페이지 로드와 관련된 4개의 DNS 서버가 있다

1. DNS 리커서 : 리커서는 도서관에서 특정한 책을 찾아달라고 요청하는 사서로 생각할 수 있다. 브라우저 등의 애플리케이션을 통해 클라이언트 컴퓨터로부터 쿼리를 받도록 고안된 서버다. 일반적으로 리커서는 클라이언트의 DNS 쿼리를 충족시키기 위한 추가 요청을 수행한다
2. 루트 이름 서버 : 루트 서버는 사람이 읽을 수 있는 호스트 이름을 IP 주소로 바꾸는 첫 단계다. 도서관에서 책장 위치를 가리키는 색인으로 생각할 수 있고, 일반적으로 더욱 특정한 위치에 대한 참조로 쓰인다
3. TLD 이름 서버 : TLD(최상위 도메인)서버는 도서관의 특정 책장이다. 이 서버는 특정 IP 주소 검색의 다음 단계고 호스트 이름의 마지막 부분을 호스팅한다
4. 권한 있는 이름 서버 : 최종 이름 서버로서 책장의 사전처럼 특정 이름을 해당 정의로 변환한다. 권한 있는 이름 서버는 이름 서버 쿼리의 종착점이다. 이 서버가 요청한 레코드에 대한 접근 권한이 있다면 요청한 호스트 이름의 IP 주소를 초기 요청을 한 DNS 리커서에게 돌려보낸다...(중략)

 
https://aws.amazon.com/ko/route53/what-is-dns/

DNS란 무엇입니까? – DNS 소개 - AWS

12개월 동안 AWS 프리 티어에 액세스하고 연중무휴 24시간 고객 서비스, 지원 포럼 등을 비롯한 AWS Basic Support의 기능을 사용할 수 있습니다. 현재 Amazon Route 53는 AWS 프리 티어에서 제공되지 않는다

aws.amazon.com

스마트폰, 노트북부터 대규모 소매 웹 사이트의 컨텐츠를 서비스하는 서버에 이르기까지 인터넷상의 모든 컴퓨터는 숫자를 써서 서로를 찾고 통신한다. 이 숫자를 IP 주소라고 한다. 브라우저를 열고 웹 사이트로 이동할 때는 긴 숫자를 기억해 입력할 필요가 없다. 대신 example.com 같은 도메인 이름을 입력해도 원하는 웹 사이트로 갈 수 있다. www.example.com 같이 사람이 읽을 수 있는 이름을 192.0.2.1 같은 숫자 IP 주소로 바꿔 컴퓨터가 서로 통신할 수 있게 한다. DNS 시스템은 이름, 숫자 간의 매핑을 관리해서 전화번호부 같은 기능을 한다. DNS 서버는 이름을 IP 주소로 바꿔 도메인 이름을 브라우저에 입력할 때 최종 사용자를 어떤 서버에 연결할지를 제어한다. 이 요청을 쿼리라고 부른다

< DNS 서비스 유형 >

- 신뢰할 수 있는 DNS : 개발자가 퍼블릭 DNS 이름을 관리하는 데 사용하는 업데이트 매커니즘을 제공한다. 이 매커니즘을 통해 DNS 시스템은 DNS 쿼리에 응답하고 도메인 이름을 IP 주소로 바꾼다. 그럼 컴퓨터가 서로 통신할 수 있게 된다. 이 DNS는 도메인에 대해 최종 권한이 있으며 재귀적 DNS 서버에 IP 주소 정보가 담긴 답을 제공할 책임이 있다
- 재귀적 DNS : 대개 클라이언트는 신뢰할 수 있는 DNS 서버에 직접 쿼리를 날리지 않는다. 대신 해석기 또는 재귀적 DNS 서비스라고 알려진 다른 유형의 DNS 서비스에 연결하는 경우가 일반적이다. 이것은 호텔 컨시어지 같은 역할을 한다. DNS 레코드를 갖고 있지 않지만 유저를 대신해서 DNS 정보를 가져올 수 있는 중간자 역할을 한다. 재귀적 DNS가 일정 기간 캐시된 또는 저장된 DNS 참조를 가진 경우, 소스 또는 IP 정보를 제공해서 DNS 쿼리에 답한다

< DNS는 어떻게 트래픽을 웹 앱에 라우팅하는가? >

아래 다이어그램은 재귀적 DNS 서비스와 신뢰할 수 있는 DNS 서비스가 서로 연계해서 최종 사용자를 웹 사이트 또는 앱으로 라우팅하는 법에 대한 개요를 보여준다 (AWS Route 53 기준으로 작성됐다)
1. 유저가 브라우저를 열어 URL을 입력하고 엔터를 친다
2. URL에 대한 요청은 일반적으로 케이블 인터넷 공급업체, DSL 광대역 공급업체, 기업 네트워크 등 인터넷 서비스 제공업체(ISP)가 관리하는 DNS 해석기로 라우팅된다
3. ISP의 DNS 해석기는 URL에 대한 요청을 DNS 루트 이름 서버에 전달한다
4. 이번엔 ISP의 DNS 해석기는 URL에 대한 요청을 .com 도메인의 TLD 이름 서버 중 하나에 다시 전달한다. 이 이름 서버는 도메인과 연관된 4개의 AWS Route 53 이름 서버의 이름을 써서 요청에 응답한다
5. ISP의 DNS 해석기는 AWS Route 53 이름 서버 하나를 골라 도메인에 대한 요청을 해당 이름 서버에 전달한다
6. AWS Route 53 이름 서버는 도메인 호스팅 영역에서 도메인의 레코드를 찾아 웹 서버의 IP 주소 192.0.2.44 등 연관된 값을 받고, 이 IP 주소를 DNS 해석기로 바꾼다
7. ISP의 DNS 해석기가 유저에게 필요한 IP 주소를 확보한다. 해석기는 이 값을 브라우저로 반환한다. 또한 DNS 해석기는 다음에 누가 도메인을 탐색할 때 더 빨리 응답할 수 있게 유저가 지정하는 일정 기간 도메인의 IP 주소를 캐싱(저장)한다. 자세한 내용은 Time to Live(TTL) 참조
8. 웹 브라우저는 DNS 해석기로부터 얻은 IP 주소로 도메인에 대한 요청을 전송한다. 여기가 컨텐츠가 있는 곳이다
9. 해당 IP 주소에 있는 웹 서버 또는 그 외의 리소스는 도메인의 웹 페이지를 브라우저로 바꾸고, 브라우저는 이 페이지를 표시한다

 
즉 DNS는 유저가 도메인을 입력하면 해당 웹 사이트의 IP 주소로 바꿔주는 역할을 하는 거라고 이해했다. 그 외에 DNS 레코드나 DNS 서버 종류들도 있는데 그것들은 추후 기회가 된다면 포스팅한다.

반응형