www.daum.net을 주소창에 치면 무슨 일이 일어날까?

    728x90
    반응형

     

     

     

    www.daum.net을 주소창에 치면 무슨 일이 일어날까?

    리다이렉트, 캐싱, DNS, IP라우팅, TCP 연결 구축을 거쳐

    요청, 응답이 일어나는 TTFB(Time To First Byte)가 시작되고

    이 후 컨텐츠를 다운받게 되고 이 후 브라우저 렌더린 과정을 거쳐 다음이라는 화면이 나타나게 됩니다.

     

     

     

     

    반응형

     

     

    1. 리다이렉트

    • 리다이렉트가 있다면 리다이렉트를 진행하고 없다면 그대로 해당 요청에 대한 과정이 진행됩니다.

     

     

     

    2. 캐싱

    • 해당 요청이 캐싱이 가능한지 가능하지 않은지를 파악합니다.
    • 캐싱이 이미 된 요청이라면 캐싱된 값을 반환하며 캐싱이 되지 않은 새로운 요청이라면 그 다음 단계로 넘어갑니다.
    • 캐싱은 요청된 값의 결과값을 저장하고 그 값을 다시 요청하면 다시 제공하는 기술입니다.
    • 이는 브라우저 캐시와 공유 캐시로 나뉘집니다.
    • 브라우저 캐시
      • 쿠키, 로컬스토리지 등을 포함한 캐시.
      • 개인캐시 (private cache)라고도 합니다.
      • 브라우저 자체가 HTTP를 통해 다운로드하는 모든 문서를 보유하는 것을 말합니다.
    • 공유 캐시
      • 클라이언트와 서버 사이에 있으며 사용자간에 공유할 수 있는 응답을 저장할 수 있습니다.
      • 예) 요청한 서버 앞단에 프록시 서버가 캐싱을 하는 것을 말합니다. 
      • 이를 리버시 프록시를 둬서 내부 서버로 포워드 한다고도 말합니다.
      • 많이쓰는 것 : AWS의 cloud front, cloud flare

     

     

     

    3. DNS

    • DNS (Domain Name System)으로 계층적인 도메인 구조와 분산된 데이터베이스를 이용한 시스템으로 FQDN을 인터넷 프로토콜인 IP로 바꿔주는 시스템입니다.
    • 이는 DNS관련 요청을 네임서버로 전달하고 해당 응닶값을 클라이언트에게 전달하는 리졸버,
    • 도메인을 IP로 변환하는 네임서버 등으로 이루어져 있습니다.
    • 즉 [ www.namver.com ]    => IP주소로 로 바꿔주는 것을 DNS
    • DNS 캐싱 : 미리 해당 도메인을 요청했다면 로컬 PC에 자동적으로 저장됩니다. 브라우저 캐싱 / OS 캐싱이 있습니다.

    *FQDN

    FQDN (Full Qualified Domain Name) 은 호스트와 도메인이 합쳐진 완전한 도메인 이름을 말합니다.

    www등은 호스트 부분이며 naver.com 은 도메인이라고 합니다.

    즉 [ www.namver.com ]    => IP주소로 로 바꿔주는 것을 DNS

    • www = host 주소 또는 Third level 도메인, sub 도메인이라고 불림
    • naver = second level 도메인
    • com = top level 도메인

     

     

     

    4. IP 라우팅

    • 해당 IP를 기반으로 라우팅, ARP 과정을 거쳐 실제 서버를 찾음 

     

     

     

    5. TCP 연결 구축

    • 브라우저가 TCP 3웨이 - 핸드셰이드 및 SSL 연결등을 통해 연결을 설정합니다.
    • 이 후 요청을 보낸 후 드디어 해당 요청한 서버로 부터 응답을 받습니다.

    *TCP 연결은 HTTP/2까지, HTTP/3은 QUIC연결이 일어납니다.

     

     

     

    6. 콘텐츠 다운로드

    • 요청한 컨텐츠를 서버로부터 다운합니다.
    • 브라우저 입력 후 TCP or QUIC 연결 구축을 통해 처음으로 컨텐츠를 다운받는 순간을
    • TTFB (Time To First Byte) 라고도 한다.

     

     

     

    7. 브라우저 렌더링

    • 받은 데이터를 바탕으로 브라우저 엔진이 브라우저렌더링 관정을 거쳐 화면을 만듭니다.

     

     

     

     

     

     

     

     

    8. 참고 정보 (URL 구성요소)

    웹에서 리소스에 접근하기 위해 사용되는 URL(Uniform Resource Locator)은 여러 구성 요소로 이루어져 있으며, 각각의 구성 요소는 웹 리소스를 정의하고 위치를 지정하는 데 사용됩니다.

    여기에는 프로토콜, 호스트, 포트 넘버, 그리고 도메인이 포함됩니다.

    이들 각각에 대해 설명하고 예를 들어보겠습니다.

     

    프로토콜

    프로토콜은 웹 서버와 클라이언트 간에 데이터를 교환하는 데 사용되는 규칙 또는 표준을 정의합니다.

    가장 일반적인 웹 프로토콜은 HTTP(Hypertext Transfer Protocol)와 HTTPS(HTTP Secure)입니다.

    HTTPS는 암호화를 추가하여 보안을 강화한 버전의 HTTP입니다.

    • https://
    • http://

     

    호스트(Host)

    호스트는 인터넷상의 장치를 식별하는 이름입니다.

    일반적으로 도메인 이름이 사용됩니다.

    호스트 이름은 URL에서 도메인 이름 또는 IP 주소로 지정될 수 있습니다.

    • example.com : 도메인 이름을 사용한 호스트
    • 192.168.1.1 : IP 주소를 사용한 호스트

     

    포트 넘버(Port Number)

    포트 번호는 호스트 내의 특정 서비스나 응용 프로그램을 식별하는 데 사용됩니다. 웹 서비스의 기본 포트는 HTTP의 경우 80번, HTTPS의 경우 443번입니다. 포트 번호는 필수가 아니며 일반적으로 기본 포트를 사용하는 서비스에서는 URL에 포함되지 않습니다.

    • http://example.com:80
    • https://example.com:443 (대부분의 경우 포트 번호 생략 가능)

     

    도메인(Domain)

    도메인은 인터넷에 연결된 컴퓨터를 찾기 위해 이름을 사용하는 시스템의 일부입니다. 이 이름은 사람이 읽고 이해할 수 있도록 설계되었으며, 일반적으로 여러 개의 부분으로 구성됩니다. 예를 들어, example.com에서 example은 "Second-Level Domain"이고 com은 "Top-Level Domain"입니다.

    • example.com
    • subdomain.example.com : 서브도메인을 포함한 도메인 예

     

    전체 URL 예시

    위의 구성 요소들을 조합한 전체 URL 예시는 다음과 같습니다:

    • https://www.example.com:443/path/resource?query=123
      • 프로토콜: https
      • 호스트(도메인 포함): www.example.com
      • 포트 넘버: 443 (이 경우 일반적으로 생략됨)
      • 추가적으로, 경로(/path/resource), 쿼리 스트링(?query=123) 등이 포함될 수 있습니다.

    이러한 구성 요소들은 웹 리소스의 위치를 정확히 지정하고, 해당 리소스에 액세스하는 방법을 제공합니다. URL 구조를 이해하는 것은 웹 개발뿐만 아니라 네트워크 관리와 보안에서도 중요한 역할을 합니다.

     

     

     

     

     

     

     

     

     

     

     

     

    참조!

    https://www.youtube.com/watch?v=YahjHM9UNCA&list=PLTC3gIv9IzFLblGSX7yf_4p9VeUqAr_9q&index=11

     

    728x90
    반응형

    '개발 지식' 카테고리의 다른 글

    [DNS] 브라우저가 URL로 IP주소(실제주소)를 얻는 방법?  (0) 2024.07.08
    HTTP 헤더 (Header)  (0) 2024.04.16
    CI / CD  (0) 2024.04.11
    API  (0) 2024.04.11
    디자인 패턴  (0) 2024.04.11

    댓글