[study] 주소창에 google.com을 입력하면 일어나는 일

김대운·2023년 5월 31일
0

study

목록 보기
4/7

주소창에 google.com을 입력하면 일어나는 일

  1. 사용자가 웹 브라우저를 통해 google.com 을 입력하면 URL 주소 중 도메인 이름에 해당하는 IP 주소를 찾는 과정이 일어납니다. 이때 Domain Name System(DNS) 서버를 통해 도메인 이름을 IP 주소로 변환합니다.


  1. 웹 브라우저가 HTTP 요청을 생성합니다. 일반적으로 이 과정에서는 "GET" 메서드가 사용되어 Google 메인 페이지의 리소스를 요청합니다.


  1. 생성된 HTTP 요청을 전송하기 위해 웹 브라우저는 TCP 프로토콜 스택을 사용합니다. 이 과정에서 TCP 연결이 설정됩니다.


  1. HTTP 요청이 TCP/IP 프로토콜 스택을 통해 서버에 전송됩니다.

  1. 서버가 요청을 받아 처리한 후 응답을 생성합니다. 이때 응답에는 웹 페이지의 HTML 코드가 포함되어 있습니다.

  1. 생성된 응답이 TCP 연결을 통해 클라이언트(웹 브라우저)로 전송됩니다.

  1. 웹 브라우저가 서버로부터 응답을 받으면 HTML을 렌더링하여 화면에 표시합니다.



꼬리 질문

URL이란

URL(Uniform Resource Locator)은 인터넷 상의 리소스(웹 페이지, 이미지, 비디오 등)의 고유 위치를 나타내는 문자열이며, 해당 리소스에 접근하기 위해 사용됩니다. URL은 웹 주소라고도 불리며, 웹 브라우저에 입력하여 인터넷 상의 리소스를 가져오는 데 사용할 수 있습니다.

URL은 다음과 같은 구성 요소로 이루어져 있습니다.

  1. 프로토콜(Protocol) 또는 스키마(Scheme): 리소스에 접근하기 위해 사용되는 통신 규약입니다. 예를 들어, HTTP, HTTPS, FTP 등이 있.
  2. 도메인 이름(Domain Name): 웹 서버의 고유 명칭이며, IP 주소로 변환되어 서버에 접근할 수 있게 합니다.
  3. 포트(Port): 웹 서버의 특정 프로세스를 지칭하는 번호로, 대부분의 웹 서버는 기본 포트인 (HTTP) 또는 443(HTTPS)를 사용합니다.
  4. 경로(Path): 웹 서버 내에서 리소스의 위치를 나타냅니다. 경로는더와 파일 구조로 이루어져 있습니다.
  5. 쿼리(Query): 리소스에 대한 추가적인 정보를 전달하는 문자열로, '?'로 시작하며, key-value 쌍으로 전달되며 '&'로 구분됩니다.
  6. 프래그먼트(Fragment): URL 내에서 특정 섹션을 지시하기 위해 사용되며, '#'로 시작합니다.

예를 들어, 다음과 같은 URL 구성 요소를 살펴볼 수 있습니다:

https://example.com:443/path/to/resource?query=value#fragment

  • 프로토콜: https
  • 도메인 이름: example.com
  • 포트: 443
  • 경로: /path/to/resource
  • 쿼리: query=value
  • 프래그먼트: fragment

URL을 사용하여 웹 브라우저는 인터넷 상의소스를 식별하고, 접근하여 웹 페이지를 렌더링하거나 파일을 다운로드할 수 있습니다.

URL과 URI의 차이점

URI(Uniform Resource Identifier)와 URL(Uniform Resource Locator)은 서로 관련되어 있지만 차이점이 있습니다.

  • URI는 인터넷 상의 고유한 식별자를 나타냅니다. 즉, 인터넷 상의 어떤 리소스든지 식별하는 데 사용됩니다. URI는 URL과 URN(Uniform Resource Name)으로 구분됩니다.

  • URL은 URI의 하위 개념이며, 인터넷 상의 리소스의 위치를 나타냅니다. 예를 들어, http://www.example.com/index.html은 웹 사이트의 홈 페이지를 나타내는 URL입니다.

  • 반면에 URN은 리소스의 이름을 나타냅니다. 예를 들어, urn:isbn:0-486-27557-4은 "Introduction to the Theory of Computation" 책을 식별하기 위한 URN입니다. 우리는 이 URN을 사용하여 책을 찾고 가져올 수 있습니다.

따라서 URL은 인터넷 상의 리소스의 위치를 찾기 위한 식별자이고, URI는 인터넷 상의 어떤 리소스든지 식별하기 위한 식별자라는 차이가 있습니다.

DNS 캐싱이란

  • DNS 캐싱이란, 이전에 방문한 도메인 이름에 대한 IP 주소를 메모리 또는 디스크에 저장해 두고, 동일한 도메인 이름에 대한 다음 요청에서 IP 주소를 빠르게 반환하는 기술을 말합니다. DNS 캐싱을 사용하면 사용자의 웹 브라우저나 컴퓨터에서 다시 DNS 서버로 요청을 보내지 않고, 이전에 수행했던 DNS 조회 결과를 로컬에서 참조할 수 있습니다.

  • DNS 캐시는 DNS 조회 속도를 크게 향상시키며, DNS 서버의 부하도 감소시킵니다. DNS 조회 요청이 캐시된 결과를 불러온다면, 원격 DNS 서버에 다시 요청을 보내지 않아도 되므로 전체적인 인터넷 연결 속도 향상을 가져올 수 있습니다.

  • 그러나 DNS 캐싱은 항상 최신 정보를 제공하는 것이 아닙니다. IP 주소가 변경된 경우 DNS 캐시는 이에 대한 업데이트를 수행하지 않으므로 사용자는 변경된 IP 주소를 직접 찾게 됩니다. 이는 웹 사이트를 호스팅하는 서버를 전환하는 경우 또는 DDoS 공격을 받는 경우 등에서 문제가 될 수 있습니다. 따라서, DNS 서버는 캐시된 정보의 유효 기간을 설정하고, 일정한 주기로 DNS 조회 결과를 갱신하는 작업이 필요합니다. 이를 통해 DNS 캐시의 무효한 내용을 최소화하고, 사용자가 항상 최신 IP 주소를 찾을 수 있도록 도와줍니다.

HTTP란

HTTP(Hypertext Transfer Protocol)는 월드 와이드 웹(World Wide Web)에서 웹 서버와 클라이언트(웹 브라우저) 간에 데이터를 교환하는 데 사용되는 통신 규약입니다. HTTP는 클라이언트에서 서버로 요청(Request)을 보내고 서버에서 클라이언트로 응답(Response)을 제공하는 방식으로 동작하며, 기본적으로 비연결성 특성을 가지고 있습니다.

HTTP는 다음과 같은 주요 구성 요소로 이루어져 있습니다

  1. 메서드(Methods): HTTP 요청을 표현하는 동작입니다. 주로 사용되는 메서드에는 GET, POST, PUT, DELETE, PATCH 등이 있습니다.

    • GET: 특정 리소스를 서버로부터 요청합니다.
    • POST: 서버에 새로운 데이터를 생성하거나 전송합니다.
    • PUT: 서버의 존하는 리소스를 갱신하거나 새로 생성합니다.
    • DELETE: 서버의 특정 리소스를 삭제합니다.
    • PATCH: 서버의 특정 리소스를 부분적으로 갱신합니다.
  2. 헤더(Headers): 요청과 응답 모두에 포함되는 메타데이터입니다. 헤더를 통해 클라이언트와버간에 다양한 정보를 전달할 수 있습니다. 예를 들어, 콘텐츠 유형(ContentType), 인증(Authorization) 정보 등이 헤에 포함될 수 있습니다.

  3. 본문(Body): 요청과 응답에 포함되는 실제 데이터입니다. 본문은 주로 POST 및 PUT 요청에 사용되며, 서버로 전송되는 데이터를 담고 있습니다.

  4. 상태 코드(Status Codes): 서버로부터의 응답 상태를 나타내는 세 자리 숫자입니다. 상태 코드를 통해 클라이언트는 요청에 대한 결과를 알 수 있습니다.

    • 1xx (Informational): 임시 상태 응답을 제공합니다.
    • 2xx (Successful): 요청이 성공적으로 처리되었습니다.
    • 3xx (Redirection): 추가 동작이 필요합니다.
    • 4xx (Client Error): 클라이언트에서 발생한 오류입니다.
    • 5xx (Server Error): 서버에서 발생한 오류입니다HTTP는 상태가 없는(stateless) 프로토콜로 설계되었기 때문에 일반적으로 각 요청이 개별적으로 처리되며 서버는 이전 요청에 대한 정보를 저장하지 않습니다. 그러나 쿠키, 세션, 토큰을 사용하여 상태 정보를 유지하고 사용자 인증 및 인를 처리하는 방법도 존재합니다.

요약하면, HTTP는 웹 서버와 웹 브라우저 간의 통신을 위한 표준 프로토콜, 요청/응답 메커니즘을 통해 데이터를 송수신합니다. HTTP는 메서드, 헤더, 본문 및 상태 코드와 같은 여러 구성 요소를 사용하여 이러한 통신을 가능하게 합니다.

TCP 연결설정이란

TCP 연결 설정은 3-way handshake 과정을 거쳐 이루어집니다.

  1. 클라이언트가 서버에 SYN 패킷을 전송합니다.
  2. 서버가 클라언트에게 SYN 패킷과 ACK 패킷을 함께 전송합니다.
  3. 클라이언트가 서버에게 ACK 패킷을 전송 연결을 확립합니다.


용어정리

DNS

  • DNS(Domain Name System)은 인터넷에서 도메인 이름을 IP 주소로 매핑하는 시스템입니다. 인터넷에서 이메일을 보내거나 웹 사이트에 접속하는 등의 작업을 할 때 DNS를 이용하여 도메인 이름을 IP 주소로 변환합니다.

  • DNS 서버는 전세계적으로 분산되어 있는데, 인터넷에서 도메인 이름에 대한 요청을 받으면 이를 처리하여 적절한 IP 주소로 매핑합니다.

프로토콜

  • 프로토콜은 통신하기 위한 약속들을 기술적으로 잘 정의해 둔 것입니다. 데이터를 송수신하는 순서와 내용을 결정합니다. HTTP, TCP/IP, UDP 모두 프로토콜입니다.

TCP

  • TCP (전송 제어 프로토콜)은 두 개의 호스트를 연결하고 데이터 스트림을 교환하게 해주는 중요한 네트워크 프로토콜입니다. TCP는 데이터 전송을 제어하고 데이터를 어떻게 보낼 지, 어떻게 맞출 지 정합니다. 또한 데이터와 패킷이 보내진 순서대로 전달하는 것을 보장해줍니다.신뢰성과 연결성을 책임지기 위한 프로토콜이 TCP입니다. 호스트와 호스트간의 데이터 전송은 IP(인터넷 계층 프로토콜)에 의지하면서 동시에 신뢰성 있는 전송에 대해서는 TCP가 책임지는 구조입니다.

IP

  • IP 주소는 인터넷 프로토콜 주소(Internet Protocol address)의 약자로, 컴퓨터 네트워크에서 다른 기기와 통신할 수 있는 주소입니다. IP 주소는 인터넷 주소로도 불리며, 컴퓨터나 네트워크 장치(라우터, 모뎀, 브릿지 등)와 같은 인터넷 상의 장비를 식별하는 고유한 숫자입니다.

렌더링

  • 웹 페이지의 렌더링이란, 웹 브라우저가 서버로부터 수신한 HTML, CSS, JS 등의 코드를 해석하고, 이를 화면에 그리는 과정을 말합니다.

  • 웹 브라우저는 HTML 코드를 분석하여 DOM(Document Object Model) 트리라는 구조를 구성합니다. DOM 트리는 HTML 문서의 각 요소(element)들의 상하위 포함구조를 나타내기 위한 구조체입니다. 그리고 CSS 코드를 분석하여 CSSOM(Cascading Style Sheets Object Model) 트리라는 구조를 구성합니다. CSSOM 트리는 각 요소에 대한 CSS 스타일 정보를 포함하는 구조체입니다.

  • DOM 트리와 CSSOM 트리가 완성되면, 두 개의 트리를 결합하여 렌더 트리(Render Tree)를 구성합니다. 렌더링 엔진은 렌더 트리를 생성하면서 각 노드의 레이아웃과 스타일 정보를 결정합니다. 이후, 브라우저는 렌더링 엔진을 사용하여 렌더 트리를 기반으로 요소 위치, 크기, 색상 등의 다양한 속성을 계산하고, 이를 화면에 표시합니다.

  • 이러한 렌더링 과정은 웹 페이지의 레이아웃 및 디자인에 대한 사항을 결정하고, 사용자의 눈에 보여지는 최종 결과물을 생성합니다. 따라서, 웹 페이지의 렌더링 품질과 속도는 사용자 경험을 유지하기 위해 매우 중요합니다.


0개의 댓글