본문 바로가기
WEB/HTTP

[HTTP] URI와 웹브라우저의 요청 흐름 (URL, URI, URN, TCP/IP패킷)

by 정권이 내 2023. 2. 27.

[HTTP] URI와 웹브라우저의 요청 흐름

 

URI는 Uniform Resource Identifier의 약자로 통합 자원 식별자 라는 의미입니다. URI 뿐만 아니라 URL이라는 단어도 많이 들어보았을텐데 URL, URL 추가로 URN은 서로 어떤관계이며 어떤 의미를 가지고 있는지 대해 알아보겠습니다.

 

URI

URI는 로케이터(Locater) 또는 이름(Name) 으로 분류되거나 둘다로 분류될수 있습니다. 일반적으로 URN은 잘 사용되지않고 URL을 주로 사용하므로 URI, URL는 동일한 개념으로 볼수 있습니다.

img

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

 

URL 의미와 구조

URL은 Uniform Resource Locator의 약자로, 인터넷상에서 웹 페이지, 이미지, 동영상, 문서 등의 리소스를 가리키는 주소입니다. 일반적으로 URL은 프로토콜(스키마), 호스트, 포트, 경로, 쿼리스트링 등으로 구성되고 추가적으로 userinfo, fragment 가 있는데 각 구성요소에 대한 의미를 알아보겠습니다.

 

img

protocol://[userinfo@]host[:port][/path][?query][#fragment]
  • protocol : http, https, ftp 등등이 있습니다. 각 프로토콜들은 http(80), https(443), ftp(21) 포트를 주로 사용합니다. https는 http에 보안을 추가한 프로토콜입니다.
  • userinfo : URL에 사용자 정보를 포함해서 인증하는 기능인데 실제로는 거의 사용되지 않습니다.
  • host : 호스트명을 뜻하며 주로 도메인 이름, IP주소를 사용합니다.
  • port : 포트는 일반적으로 생략합니다. http(80), http(443)
  • path : 리소스의 경로이며 계층적 구조를 가집니다.
  • query : RestAPI 규격상 @PathVariable에 매핑되는 key=value 구조의 쿼리입니다. 쿼리의 시작부분은 ? 물음표 기호로 시작되며 ?key1=value1&key2=value2 처럼 & 기호로 추가할수 있습니다.
  • fragment : html 내부 북마크 등에 사용되며 서버에 전송되는 정보는 아닙니다.

 

웹 브라우저 요청 흐름

우리가 웹 브라우저 주소창에 https://www.google.com/search?q=hello&hl=ko 를 입력하면 다음과 같은 절차로 요청이 진행됩니다.

 

1. HTTP 요청 메시지 전송 (클라이언트)

img

  • 웹브라우저는 DNS에 해당 URL의 도메인 이름을 IP 주소 변환을 요청하여 HTTP 요청 메시지를 생성합니다.
  • HTTP 요청 메시지를 전송하기 위해, TCP 프로토콜을 사용합니다.
  • HTTP 요청메시지는 TCP 세그먼트로 분할되어 TCP/IP 패킷으로 캡슐화 되는데 각각의 IP 패킷에는 출발지 IP 주소, 목적지 IP 주소, 포트 번호 등의 정보가 포함됩니다.
  • 생성된 TCP/IP 패킷은 인터넷을 통해 목적지 서버로 전송됩니다. 이때, 패킷은 라우터(router)를 거치면서 최적 경로로 전송됩니다.

 

2. HTTP 요청 메시지 수신 및 응답 메시지 전송 (서버)

img

  • 목적지 서버에서는 TCP 프로토콜을 사용하여 IP 패킷을 다시 TCP 세그먼트로 추출합니다. TCP 세그먼트는 순서에 맞게 재조립되어 HTTP 요청 메시지가 복원됩니다.
  • 서버는 HTTP 요청 메시지를 처리하고, HTTP 응답 메시지를 생성합니다.
  • HTTP 응답 메시지는 TCP 세그먼트로 분할되어 IP 패킷으로 캡슐화되는데 각각의 IP 패킷에는 출발지 IP 주소, 목적지 IP 주소, 포트 번호 등의 정보가 포함됩니다.
  • IP 패킷은 인터넷을 통해 클라이언트의 웹 브라우저로 전송됩니다.

 

3. HTTP 응답 메시지 수신 (클라이언트)

  • 웹 브라우저에서는 TCP 프로토콜을 사용하여 IP 패킷을 다시 TCP 세그먼트로 추출합니다. TCP 세그먼트는 순서에 맞게 재조립되어 HTTP 응답 메시지가 복원됩니다.
  • 웹 브라우저에서는 HTTP 응답 메시지를 해석하여 웹 페이지를 렌더링합니다.

 

 

 

출처 : 인프런 - 우아한 형제들 기술이사 김영한의 스프링 완전 정복 (모든 개발자를 위한 HTTP 웹 기본)

반응형

댓글