리소스를 식별하는 통합된 방법
Uniform
: 리소스를 식별하는 통일된 방식Resource
: 자원,URI
로 식별할 수 있는 모든 것 (제한 없음)Identifier
: 다른 항목과 구분하는데 필요한 정보
URI
는 인터넷 자원을 나타내는 고유 식별자이다. ID
라고 생각하면 된다.URI
는 로케이터(locator
), 이름(name
) 또는 둘 다 추가로 분류될 수 있다.
URL (Uniform Resource Locator)
: 리소스가 있는 위치를 지정URN (Uniform Resource Name)
: 리소스에 이름을 부여
Ex) 초코가 인천에 살고 있다. → URL
: 인천, URN
: 초코
URN
이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화되지 않으므로 그냥 URI
를 URL
과 같은 의미로 생각할 것이다!다음의
URL
를 분석하면서URL
문법을 알아보자.
https://www.google.com/search?q=hello&hl=ko
💡 URL 구조
scheme://[userinfo@]host[:port][/path][?query][#fragment]
위의 URL
을 구조에 따라 분류하면 다음과 같다.
https
www.google.com
443
/search
q=hello&hl=ko
하나씩 알아보자!
- 사용할 프로토콜, 리소스에 어떤 방식으로 접근할 것인지를 명시한다.
scheme = 영문 * (영문 * (영문 / 숫자 / "+" / "-" / ".")
http
, https
프로토콜을 주로 사용하며, ftp
등 다양한 프로토콜을 사용할 수도 있다.http
는 포트 80
, https
는 443
을 주로 사용하며, 포트 번호는 생략할 수 있다.📌 참고
https
는http
에 보안을 추가한 것이다. (HTTP Secure
)
authority
는 사용자 정보, 호스트, 포트로 나뉜다.authority = [ userinfo "@" ] host [ ":" port ]
userinfo
: URL
에 사용자 정보를 포함하여 인증하는 것으로, 거의 사용하지 않는다.host
: 호스트명. 도메인명 또는 IP 주소를 직접 사용할 수 있다.PORT
: 접속 포트 번호. 일반적으로 생략하며, 생략 시 http
는 80
, https
는 443
호스트에서 제공하는 자원의 경로(
path
)를 나타낸다.
클라이언트가 자원을
GET
방식으로 요청할 때, 필요한 데이터를 함께 넘겨줄 목적으로 사용한다.
key=value
형태이다.?
로 시작하며, &
로 추가할 수 있다.?keyA=valueA&keyB=valueB
query parameter
, query string
등으로 불린다. 웹 서버에 제공하는 파라미터, 문자 형태
html
내부 북마크 등에 사용된다.
이번에는
https://www.google.com/search?q=hello&hl=ko
의URL
을 이용해서
웹 브라우저가 서버에 요청하는 동작을 자세하게 살펴보자.
HTTP
요청 메시지 생성DNS
를 통해 google.com
의 IP 주소를 찾는다. 이때 포트 번호를 생략했다.웹 브라우저가 패킷을 전송하고,
서버는 패킷이 도착하면 패킷의 내부 HTTP 메서드를 해석해서 정보에 맞는 동작을 한다.
서버에서 HTTP 응답 메시지를 생성하고 전송한다.
웹 브라우저에서 응답 메시지를 받아서 맞는 동작을 한다. (여기에서는 렌더링)
HTTP 요청 메시지 생성
→ HTTP 메시지 전송
→ 응답 메시지 생성 및 전송
→ 웹 브라우저에서 응답 메시지에 맞는 동작