[TIL] 250728_Network: URI와 웹 브라우저 요청 흐름

지코·2025년 7월 28일
0

Today I Learned

목록 보기
79/94
post-thumbnail

✴️ URI(Uniform Resource Identifier)

URI는 자원을 식별하는 통일된 방법으로, 다음 그림과 같이 분류할 수 있다.
URLResource Locator로 자원의 위치를 나타내고, URNResource Name으로 자원의 이름을 나타낸다.

더 구체적으로 알아보자.

URL 은 실제로 우리가 웹 브라우저에서 사용하는 형태로 자원에 어떻게 접근할 것인지를 나타내고, URN 은 자원에 어떻게 접근할지 나타내는 것이 아니라 경로와 자원 자체를 특정하는 것을 목표로 한다. 그래서 URL을 주로 사용하며, URIURL보통 같은 의미로 사용된다.

URL의 문법을 살펴보자.

1️⃣ Scheme

  • 주로 프로토콜을 사용한다.
  • 프로토콜은 어떤 방식으로 자원에 접근할 것인지에 대한 규칙을 의미하며, http, https, ftp 등이 있다.

2️⃣ UserInfo

  • URL에 사용자 정보를 포함해서 인증하는 것으로, 잘 사용하지 않는다.

3️⃣ Host

  • 호스트명을 기재하며, 주로 도메인명이나 IP주소를 직접 사용할 수도 있다.

4️⃣ Port

  • 접속 포트를 명시한다.
  • http는 80, https는 443 포트를 주로 사용하는 것으로 정해져있기 때문에, 대표적인 프로토콜들에 대해 포트는 생략이 가능하다.

5️⃣ Path

  • 리소스의 경로를 나타내며, 주로 계층적 구조로 구성되어 있다.
  • 예를 들어 /members/100 이라고 하면 100번째 회원의 정보를 나타내는 식으로 표현할 수 있다.

6️⃣ Query

  • 쿼리 파라미터, 쿼리 스트링이라고도 불리며, key=value 형태로 작성한다.
  • 웹 서버에 제공하는 파라미터이다.
  • ? 로 시작하며, & 로 추가할 수 있다.

7️⃣ Fragment

  • HTML 내부 북마크 등에서 사용하며, 서버로 전송되는 정보는 아니다.
  • 잘 사용하지는 않는다.

✴️ 웹 브라우저 요청 흐름

위와 같은 주소로 웹 브라우저 접속을 요청할 경우, 다음과 같은 과정을 거친다.

DNS 조회

웹은 www.google.com 이라는 host와 프로토콜 별로 지정된 포트에 대해 DNS 조회 요청을 보낸다. DNS 서버는 그에 맞는 IP 주소를 반환한다.

HTTP 요청 메세지 작성

HTTP 요청 메세지는 위와 같은 형태로 작성된다.

  • HTTP 메서드
  • Path와 Query
  • HTTP version
  • Host

HTTP 메세지 전송

웹 브라우저가 작성한 HTTP 요청 메세지를 웹 브라우저의 소켓 라이브러리를 통해 TCP/IP 계층에 전달하기 위해, IP 주소와 포트 정보를 통해 3-way handshake 과정을 진행하여 클라이언트와 서버 간의 연결을 확립하게 된다.

이후 TCP/IP 계층에 메세지를 전달하면 IP 포트 정보를 붙여 패킷을 완성한다.

완성한 패킷이 서버에 도착하면, 서버는 패킷 내부에 있는 HTTP 메시지를 해석해서 요청대로 작동한다.

서버는 위와 같은 HTTP 응답 메시지를 반환한다. 응답 메세지에는 서버 상태에 대한 정보와 전송 데이터에 대한 정보 등을 포함한다.

그리고 서버도 클라이언트와 동일한 방식으로 IP 포트 정보를 붙여 패킷을 완성해 클라이언트에 전달한다.

서버가 보낸 패킷 내 HTML 메세지에는 html 데이터가 들어있다. 패킷이 클라이언트에서 수신되면, 패킷 내 html 데이터를 통해 웹 브라우저 렌더링이 정상적으로 완료된다.

Reference

🎥 모든 개발자를 위한 HTTP 웹 기본 지식

profile
꾸준함이 무기

0개의 댓글