study/HTTP

HTTP 웹 기본 지식(2) - URI와 웹 브라우저 요청 흐름

올스왑 2022. 2. 13. 21:13

이 글은 인프런 김영한 님의 강의 모든 개발자를 위한 HTTP 웹 기본 지식을 듣고 정리하는 글입니다.

 

URI

 

URI - Uniform Resouce Identifier. 통합 자원 식별자.

URI 안에는 URL(loacater)과 URN(name)이 있다. 각각 리소스의 위치, 리소스의 이름으로 식별하는 방법이다.

URI, URL, URN

일반적인 url - Exmple.com:2013/over/there

Urn 거의 안쓴다. - example:animal:ferret

 

  • URI
    • Uniform: 리소스를 식별하는 통일된 방식
    • Resource: 자원, URI로 식별할 수 있는 모든 것(제한 없음)
    • Identifier: 다른 항목과 구분하는데 필요한 정보
  • URL: Uniform Resource Locator. 리소스가 있는 위치를 지정.
  • URN: Uniform Resource Name. 리소스에 이름을 부여. 보통 책의 ISBN 같은 곳에 쓰인다.
  • 위치는 변할 수 있지만, 이름은 변하지 않는다.
  • URN 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화되지 않았다.

 

Url 분석하기 - https://www.google.com:443/search?q=hello&hi=ko

  • scheme://[userinfo@]host[:port][/path][?query][#fragment]
  • scheme
    • 주로 프로토콜 정보가 들어간다.
    • 프로토콜 : 어떤 방식으로 지원에 접근할 것인가 하는 약속, 규칙
    • Http 80포트, https는 443포트를 주로 사용.  Http https 사용하면 포트는 생략 가능.
    • Https http 보안 추가
  • userinfo@
    • URI 사용자 정보를 포함해서 인증할 때 사용한다.
    • 거의 사용하지 않는다.
  • host
    • 호스트명
    • 도메인 이름이나 ip 주소를 직접 입력할 있다.
  • port
    • 접속 포트
    • 일반적으로 생략, 생략시 http 80, https 443
  • path
    • 리소스 경로, 대개 계층적 구조로 되어 있다.
  • query
    • Key=value 형태로 값이 들어간다.
    • ? 시작, & 추가 가능 ?keyA=ValueA&keyB=valueB
    • Query parameter, query string 등으로 불린다.(웹서버에 제공하는 파라미터, 문자 형태여서)
  • Fragment
    • Html 내부 북마크 등에 사용
    • 서버에 전송하는 정보는 아님.

 

브라우저 요청 흐름

https://www.google.com/search?q=hello&hl=ko 웹브라우저에서 주소를 호출하면 생기는 일을 알아보자.

  • 먼저 브라우저가 www.google.com에 대한 dns 조회해, ip port 조회한다.
  • Http 요청 메시지를 생성한다.
    • GET /search?q=hello&hl=ko HTTP/1.1 HOST: google.com
  • 그리고 생성된 메시지를 socket 라이브러리를 통해 전달한다.
    • 먼저 tcp/ip 구글 서버와 연결하고 데이터를 전달한다.
    • Tcp/ip 패킷 생성, http 메시지를 포함한.
  • 구글 서버에서는 HTTP 요청 메시지를 받으면 데이터를 처리하고 http 응답 메시지를 만든다.
  • 다시 브라우저로 보낸다. 브라우저는 받은 메시지를 html 렌더링하여 보여준다.