💻Computer Science/📓네트워크 (Network)

[네트워크][HTTP] 2. URI와 웹 브라우저 요청 흐름

Written by Donghak Park

본 게시물은 김영한님의 HTTP 웹 기본 지식 강의를 듣고 정리, 요약한 것입니다. 더 자세히 알고 싶으시면 아래의 링크의 강의를 추천드립니다.

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC#


URI와 웹 브라우저 요청 흐름

URI (Uniform Resource Identifier)

URI, URL, URN 이란 ?

  • URI는 로케이터(Locator), 이름(Name) 또는 둘다 추가로 분류될 수 있다.
  • 즉 URL과 URN은 URI에 포함되는 개념이고, 이는 자원을 식별하기 위한 방법을 의미한다.

그렇다면 URI라는 단어는 어떤 뜻을 가지고 있을까 ?

  • Uniform : 리소스를 식별하기 위한 통일된 방식
  • Resource : 자원, 필요한 모든 것
  • Identifier : 다른 항목과 구분하는데 필요한 정보

URL : Uniform Resource Locator)

  • ex) foo://example.com:8042/over/there?name=ferrt#nose
  • 리소스가 있는 위치를 지정

URN : Uniform Resource Name

  • ex) urn:example:animal:ferret:nose
  • 리소스에 이름을 부여

하지만 이름만을 가지고 하기에는 한계가 있어 주로 URL을 많이 사용한다.

URL 분석

아래와 같은 URL은 다음의 규칙을 따라서 정해진 것이다.

https://www.google.com/search?q=hello&hl=ko  
--> scheme://[userinfo@]host[:port][/path][?query][#fragment]
  • scheme
    • 주로 프로토콜을 사용한다.
    • 프로토콜 : 어떤 방식으로 자원에 접근할 것인지에 대한 규칙을 약속한 것
    • 주로 http는 80, https는 443 포트를 사용
  • userinfo
    • URL에 사용자정보를 포함해서 인증하는 방식이지만 거의 사용되지 않고 있음
  • host
    • host 이름, 도메인명, IP주소를 직접입력가능
  • port
    • 포트 번호, 생략 가능
  • path
    • 리소스가 있는 경로를 명시해야함
    • 계측적인 구조를 / 를 통해서 나타냄
  • query
    • key = value 형태이다.
    • ?로 시작, &로 추가 가능 ex) keya=valuea&keyb=valueb
    • 쿼리 파라미터, 쿼리 스트링으로 불림, 웹서버에 제공하는 파라미터, 문자형태로 전송하기 때문에
  • Fragment
    • html 내부 북마크와 같은 정보에 사용되며, 서버로 전송되는 정보는 아님

웹 브라우저 요청 흐름

웹 브라우저가 특정 URI를 사용하면 다음과 같은 HTTP요청 메시지가 생성된다.

GET /search?q=hello&hi=ko HTTP/1.1 
HOST : www.google.com

이렇게 요청 메시지가 생성되면 서버로 전송되게 된다.

  • 웹 브라우저가 http 메시지 생성
  • 소켓 라이브러리를 통해서 TCP/IP로 연결 (IP, PORT)한 후 데이터 전달
  • TCP/IP 패킷을 생성한다. 이때 HTTP 메시지가 전송 데이터가 된다.
  • 아래 계층을 통해서 서버로 이 메시지를 전송하게 된다.

전송된 메시지를 수신한 서버는 http 메시지를 분석해서 필요로 하는 정보를 다시 회신해 준다. 이때 회신해주는 메시지는 http 응답 메시지라고 한다.

ex)
HTTP/1.1 200 OK
Contect-Type: text/html; charset = UTF-8
Content-Length : 3444
--> meta data

<html>
<body>~~~~</body>
~~~

</html>
--> html

회신하는 과정을 전송하는 과정과 동일하게 client로 전송한다.

이렇게 회신한 데이터를 웹 브라우저가 렌더링을 통해서 사용자에게 원하는 페이지를 보여준다.

즉 클라이언트가 서버로 http message 요청을 보내고 서버가 http 응답 메시지를 보내면 이를 웹 브라우저가 렌더링을 통해서 사용자에게 보여주는 것이다.