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

오세창·2025년 2월 24일

HTTP 웹 기본 지식

목록 보기
2/8
post-thumbnail

본 게시글은 인프런의 모든 개발자를 위한 HTTP 웹 기본 지식 (김영한) 강의를 듣고 정리한 내용입니다.

URI


URI 란 ?

"URI는 로케이터(locator), 이름(name) 또는 둘 다 추가로 분류될 수 있다"

URI는 Uniform Resource Identifier의 약자로, 자원을 식별하는 통일된 방법이다. 이를 통해 웹상의 리소스를 고유하게 구분할 수 있다. URI, URL, URN은 비슷한 개념이지만 약간씩 다르다.

URI, URL, URN의 차이점

  • URI (Uniform Resource Identifier): 리소스를 식별하는 통합된 방법으로, 위치와 이름을 포함한 포괄적인 개념이다.
  • URL (Uniform Resource Locator): URI의 한 종류로, 자원의 위치를 나타낸다. 웹 브라우저에서 주로 사용하는 형태이다.
  • URN (Uniform Resource Name): URI의 또 다른 종류로, 자원의 이름을 나타낸다. 위치와는 무관하게 자원을 고유하게 식별한다.

즉, URL은 위치를, URN은 이름을 나타내는 형태이다. 웹 브라우저에서 입력하는 것은 주로 URL이다.

URI 각 단어의 의미

  • Uniform: 리소스를 식별하는 통일된 방식이다.
  • Resource: 웹 상의 자원(예: HTML 파일, 이미지, 실시간 데이터 등)이다.
  • Identifier: 고유하게 식별할 수 있는 값이다.

이처럼 URI는 웹 자원을 식별하는 고유한 방법을 제공하며, URL은 그 중 위치를 나타내는 방식이다.


URL 문법

예시 URL

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

URL 문법 규격화

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

URL 분석

요소설명예시
scheme프로토콜 (자원 접근 방식)https (HyperText Transfer Protocol Secure)
userinfo@사용자 정보 (거의 사용하지 않음)admin:password@
host호스트명, 도메인 또는 IP 주소www.google.com
port접속하려는 포트 (일반적으로 생략됨)443 (HTTPS 기본 포트)
path리소스 경로/search
query쿼리 파라미터 (key=value)?q=hello&hl=ko
fragmentHTML 내부 북마크 (서버로 전송되지 않음)#section1

웹 브라우저의 요청 흐름

웹 브라우저가 URL을 입력받아 서버에 요청을 보내고, 응답을 받아 렌더링하는 과정을 살표보자.

1. DNS 조회

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

위 URL 을 브라우저에 검색했다고 하자.

이때 웹 브라우저는 DNS 서버에 google.com 이라는 호스트를 조회해서 IP 주소를 조회한다.

2. HTTP 요청 생성

브라우저는 위와 같은 형태로 HTTP 요청 메시지를 생성한다.

3. Socket 라이브러리 통해서 애플리케이션 -> OS 계층으로 전달

웹 브라우저에서 생성된 HTTP 요청 메세지는 Socket 라이브러리를 통해 애플리케이션에서 OS 계층으로 전달이 된다.

4. TCP/IP 패킷 생성

전송 데이터에 HTTP 메시지를 추가한 후, TCP 3-way handshake를 통해 서버와의 연결을 확인한다.

5. 패킷 전달

패킷이 도착하면 TCP/IP 패킷을 모두 제거한 후 HTTP 메시지를 해석한다.

6. HTTP 응답 메시지 생성

  • 200 OK : 정상 응답
  • Content-Type : 응답한 데이터 형식(html), 문자 인코딩(UTF-8)
  • Content-Length : 실제 HTML 데이터의 크기

7. HTTP 응답 메시지 전송

해당 패킷은 똑같은 방식으로 클라이언트로 전달이 된다.

8. 웹 브라우저 HTML 렌더링

브라우저는 받은 HTML, CSS, JavaScript 등을 해석하여 사용자 화면에 웹페이지를 렌더링한다.

0개의 댓글