URI, URL, URN의 차이
https://www.google.com/search?q=hello&hl=ko의 분석
URI
- Uniform Resource Identifier
- Uniforn : 리소스를 식별하는 통일된 방식
- Resource : 자원, URI로 식별할 수 있는 모든 것(제한 없음)
- Identifier : 다른 항목과 구분하는데 필요한 정보
URI와 URL와 URN의 차이
-
URI는 locator, name 또는 둘 다 추가로 분류될 수 있다
국제인터넷표준화기구 ietf
-
식별(Identifier) 안에는 locator(리소스의 위치)와 name (리소스의 이름)이 있다
- URL - Locator : 리소스가 있는 위치를 지정
- URN - Name : 리소스에 이름을 부여
-
URN은 잘 사용하지 않는다
- 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화 되어 있지 않음
- 거의 url만 사용한다
- URI = URL 로 보편적으로사용
URL
URL의 문법
- scheme://[userinfo@]host[:port][**/path**][?query][**#fragment**]
- https://www.google.com:443/search?q=hello&hl=ko
프로토콜 : https
호스트명 : www.google.com
포트번호 : 443
패스 : /search
쿼리파라미터 : q=hello&hl=ko
scheme
- 스키마에는 주로 프로토콜이 사용된다
- 프로토콜은 어떤 방식으로 자원에 접근할 것인가 하는 약속이다
- ex) http, https, ftp 등
- http는 80, https는 443포트를 주로 사용가능하며 생략이 가능하다
- https는 http에 보안이 추가된 방식이다(http Secure)
userinfo@
- url에 사용자 정보를 포함해서 인증할때 사용, 거의 사용하지 않는다
host
- 호스트명
- 호메인명 또는 IP주소를 직접 사용 가능하다
port
- 접속 포트
- 일반적으로 생략
- 생략시 http는 80 https는 443을 의미
/path
- 리소스가 있는 경로, 계층적 구조로 이루어짐
- ex) home/file1.jpg → home 안에 file1
- members/100 → 회원 정보가 있는 dir에 100번째 회원
?query
- key=value 형태로 이루어짐
?
로 시작 &
로 추가 가능
- ex) ?keyA=value&keyB=valueB
- query parameter, query string 등으로 불림, 웹 서버에 제공하는 파라미터, 문자형태
#fragment
웹브라우저 요청 흐름
https://www.google.com/search?q=hello&hl=ko 를 요청했을 때의 상황
-
DNS를 찾는다
-
요청 메시지 생성
- 요청메시지에는 요청방식, 쿼리, http버전, host 등이 담기게 된다
-
요청메시지 전송
- TCP/IP 패킷을 생성해서 전달하게 된다
- 패킷에는 출발지의 ip, port, 목적지의 ip, port 와 전송데이터들이 담김
- 전송데이터에 http 메시지가 담기게 된다
- 응답메시지를 생성
- 받은 응답메시지로 HTML 렌더링을 한다
출처 모든 개발자를 위한 HTTP 웹 기본지식