[HTTP 웹 기본 지식] - URI와 웹 브라우저 요청 흐름

개발자가 되고 싶어요 ㅣ 2023. 7. 28. 01:50

김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식 강의 정리&복습

URI(Uniform Resource Identifier)

URI란 이름 그대로 리소스를 식별하는 통일된 방식이라는 뜻이다.

 

URI는 로케이터(Locater), 이름(Name) 또는 둘 다 추가로 분류될 수 있다.

URL(Uniform Resource Locater): 리소스가 있는 위치를 지정

URN(Uniform Resource Name): 리소스에 이름을 부여

 

URL과 URN의 문법

 

그러나 URN의 이름을 부여하는 방식은 보편화 되어 있는 방식이 아니기 때문에 앞으로 URI와 URL을 동일시 하겠다.

 

URL의 전체 문법

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

 

scheme

주로 어떤 방식으로 자원에 접근할 것인가에 대해 정하는 프로토콜을 사용한다.

예시로는 http, https, ftp 등이 있다.

 

userinfo

URL에 사용자정보를 포함해서 인증해야 할 때 쓰이지만 거의 사용하지 않는다.

 

host

호스트명을 뜻하며 도메인 명 또는 IP 주소를 직접 사용한다.

 

port

접속 포트를 의미하며 일반적으로는 생략한다.

생략시 http는 80, https는 443이다.

 

path

리소스 경로를 의미하며 계층적 구조로 이루어져 있다.

예시로는 /home/file1.jpg 같은 계층적 구조이다.

 

query

key=value 형태로 이루어져 있으며 ?로 시작하고 &로 추가 가능하다.

보통 query parameter, query string 등으로 불린다.

 

fragment

html 내부 북마크 등에 사용하며 서버에 전송하는 정보는 아니다.

 

웹 브라우저 요청 흐름

만약 웹 브라우저에 "https://www.google.com:443/search?q=hello&hl=ko"를 검색하는 상황을 생각해보자.

먼저 웹 브라우저에서는 HTTP 요청 메시지를 생성한다..

HTTP 요청 메시지

그런 다음 저번 시간에 배운 인터넷 프로토콜 스택의 4계층의 각 과정을 지나면서 요청 패킷을 만든다.

HTTP 요청 메시지 패킷

그 후 요청 패킷을 인터넷을 통해 구글 서버에 전달한다. 그럼 구글 서버에서는 요청 패킷을 분석해서 HTTP 응답 메시지 만들고 같은 과정을 통해 응답 패킷을 전송해준다.

HTTP 응답 메시지

마지막으로 웹 브라우저에서 응답 패킷을 받으면 분석하여 보여준다.