HTTP 정리 - URI와 웹브라우저 요청흐름

JoongHyeok.Velog·2022년 4월 7일
0

HTTP

목록 보기
2/3
post-thumbnail

인프런 - 모든 개발자를 위한 HTTP 웹 기본지식 강의를 수강하며 수강섹션에 따라 총 8개의 파트로 분리하여 정리해 보려 합니다.

  1. 인터넷 네트워크
  2. URI와 웹 브라우저 요청흐름
  3. HTTP 기본
  4. HTTP 메서드
  5. HTTP 메서드 활용
  6. HTTP 상태코드
  7. HTTP헤더1 - 일반 헤더
  8. HTTP헤더2 - 캐시와 조건부 요청

이번에는 그 두번째 섹션인 URI와 웹 브라우저 요청흐름에 대해 정리하겠습니다.

URI와 웹 브라우저 요청흐름

URI

URI란 Uniform Resource Identifier 의 약자로 리소스를 구분할 수 있는 식별자입니다.

Uniform : 리소스 시별하는 통일된 방식
Resource : 자원, URI로 식별할 수 있는 모든 것(제한이 없습니다.)
Identifier : 다른 항목과 구분하는데 필요한 정보

URI와 URL, URN등 많이 헷갈리는 용어에 대해서 정리해보려 합니다. URI는 로케이터(Locator)와 이름(Name) 또는 둘다 추가로 분류 될 수 있습니다. 그림을 보면 조금 더 쉽게 이해가 됩니다.

URL : Uniform Resource Locator - 리소스가 있는 위치를 지정
URN : Uniform Resource Name - 리소스에 이름을 부여

위치는 변할 수 있지만, 이름은 변하지 않습니다. 예를 들어 책 뒷면을 보면 isbn이 있습니다.이 isbn이 URN의 예로 들수 있습니다. URN 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화되어 있지는 않습니다.

URL 의 구성

[schema]://[userinfo@]host[:port][/path][?query][#fragment]
ex) http://www.google.com:443/search?q=hello&hl=ko

URL의 구성을 [블럭] 을 기준으로 하나하나 살펴보겠습니다.

  • schema
    주로 프로토콜을 사용합니다.
    (프로토콜이란 어떤 방식으로 자원에 접근할 것인가하는 약속,규칙입니다.)
    http 는 80포트, https는 443포트를 사용하며 포트는 생략이 가능합니다.
  • userinfo
    URL에 사용자 정보를 포함해서 인증합니다.
    거의 사용하지 않습니다.
  • host
    호스트명을 작성합니다.
    도메인명 또는 IP주소를 직접 사용가능합니다.
  • port
    접속포트를 뜻하며 일반적으로 생략, 생략시 http는 80, https는 443
  • path
    리소스 경로를 뜻하며 계층적 구조로 형성되어 있습니다.
    ex) /members/100
  • query
    key = value 형태로 구성되어 있습니다.
    ? 로 시작하고 &로 추가가 가능합니다
    query parameter,query string으로 불립니다.
    ex) keyA=valueA&keyB=valueB
  • fragment
    html 내부 북마크등에 사용되지만 서버에 전송하는 정보는 아닙니다.

웹 브라우저 요청 흐름

클라이언트는 구글 검색창에 hello를 검색하게 된다면 웹브라우저 주소창에 https://www.google.com:443/search?q=hello&hl=ko 와 같이 요청하게 됩니다.
이는 서버로 전송되게 되는데 이때의 흐름을 한번 정리해보겠습니다.

먼저 구글서버를 찾기 위해 DNS서버를 조회하여 www.google.com 이라는 도메인주소를 가진 IP주소를 받아 구글 IP주소에 요청을 하게 됩니다.
이때 클라이언트는 HTTP 요청 메시지를 생성하여 요청하게 되는데


요청 메시지는 위 사진과 같이 생겼습니다. HTTP METHOD와 앞서 말했던 query parameter(query string) 과 HTTP 버전정보 등이 보이는데 이에 관련해서는 HTTP메시지에 관련글에서 자세히 정리하겠습니다.

HTTP 요청 메시지를 생성한다음에는 SOCKET라이브러리를 통해 전달되고 TCP의 3 way handshake를 통해 구글 서버와 연결을 하고 생성한 HTTP메시지를 전달합니다.

그리고 나서 생성한 HTTP메시지를 TCP/IP 패킷을 생성하여 아래 그림과 같이 감싸게 됩니다.


그 후에는 웹브라우저가 구글서버로 생성한 요청 패킷을 전달하게 되고 패킷을 전달받은 구글서버는

다음과 같이 HTTP 응답메시지를 생성하여 HTTP 요청메시지와 같은 방식으로 패킷으로 감싸서

클라이언트에게 전달하게 됩니다.

그 후에는 서버에서 보낸 HTTP 응답 패킷을 읽어 클라이언트에서 HTML렌더링을 통해 http://www.google.com:443/search?q=hello&hl=ko 의 결과값을 사용자가 화면으로 보게 됩니다.

여기까지 HTTP - URL과 웹브라우저의 요청흐름에 대한 정리였습니다.

profile
영차영차

0개의 댓글