[HTTP] URI(URL,URN)와 웹 브라우저 요청 흐름

0xDave·2022년 8월 8일
0

HTTP

목록 보기
2/5
post-thumbnail

URI


Uniform Resource Identifier의 줄임말로, 인터넷 상에서 어떤 자원을 식별하기 위한 문자열의 구성이다. URL과 URN은 URI의 하위개념이라 할 수 있다. URL은 리소스가 있는 위치를 나타내고, URN은 리소스에 이름을 부여한다.


URL


URL은 우리가 흔히 인터넷 브라우저 주소창에 입력하는 문자들이다.

https://www.google.com:443/search?q=hello&hl=ko

위 예시를 구조별로 해석하면 다음과 같이 나타낼 수 있다.

scheme://[userinfo@]host[:port][/path][?query][#fragment]

  1. scheme
    주로 프로토콜이 들어가고, 프로토콜은 어떤 방식으로 자원에 접근할 것인가 하는 약속 규칙을 말한다.(http,https,ftp 등)

  2. userinfo
    url에 사용자 정보를 포함해서 인증을 할 때 사용하는데, 거의 사용하지 않는다.

  3. host
    호스트 명을 나타낸다. 도메인 이름이나 IP주소가 들어간다.

  4. port
    http는 80, https는 443 포트를 사용하며, http와 https를 사용할 경우 포트는 URL 주소에서 생략될 수 있다.

  5. path
    리소스 경로를 나타내며, 계층적 구조로 되어있다.(폴더 경로 저장하는 것 처럼)

  6. query
    key=value 형태로 되어있다. ?로 시작해서 & 을 이용해 추가적인 파라미터를 붙일 수 있다.

  7. fragment
    html 내부 북마크 등에 사용되며, 서버에 전송되진 않는다.


웹 브라우저 요청 흐름


웹 브라우저 주소창에 다음과 같이 입력하고 엔터를 누르면

https://www.google.com:443/search?q=hello&hl=ko
  1. www.google.com:443 -> DNS를 조회해서 IP를 알아내고 포트 정보를 가져온다.
  2. 알아낸 정보를 바탕으로 다음과 같은 HTTP 요청 메시지를 생성한다.
GET /search?q=hello&hl=ko HTTP/1.1(HTTP 버전 정보)
HOST: www.google.com
  1. 생성된 HTTP 요청 메시지는 SOCKET 라이브러리를 통해 TCP/IP에 전달되고 HTTP 메시지(1차 포장)가 포함된 TCP/IP 패킷(2차 포장)이 생성된다.

  2. 생성된 패킷이 인터넷을 통해 구글 서버에 도착한다.

  3. 구글 서버에서 다음과 같은 HTTP 응답 메시지를 생성해서 다시 원래 웹브라우저로 전송한다.

HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 3423

<html>
	<body>...</body>
</html>
  1. HTTP 응답 메시지를 받은 웹브라우저는 메시지를 바탕으로 HTML을 렌더링한다.

출처 및 참고자료


  1. URI & URL & URN
  2. 모든 개발자를 위한 HTTP 웹 기본 지식
profile
Just BUIDL :)

0개의 댓글