URL 및 URI는 미리 정의된 구문 규칙을 따릅니다. 따라서 웹 브라우저에서 탐색하는 또는 클라이언트에 의해 요청되는 URL과 URI는 다음 예시와 비슷한 형태를 보여줍니다.
http://www.mydomain.com:80/Ko/Users?user_id=12903#UserProfiles
예시의 URL 구문은 다음 요소들의 조합으로 구성됩니다(*는 필수 요소를 의미).
예시 | 구분 | 비고 |
*http:// | 스키마(Scheme) | 통신 프로토콜 |
*www.mydomain.com | 도메인 이름(Authority) | 웹 서버 IP 또는 호스트 이름 |
:80 | 포트(Port) | 웹 서버 포트 |
/Ko/Users | 경로(Path) | 웹 서버에서 리소스 경로 |
?user_id=12093 | 쿼리(Query) | 웹 서버에서 리소스를 필터하기 위한 질의 |
#UserProfiles | 프래그먼트(Fragment) | 리소스의 특정 지점을 가리키는 앵커 |
스키마(Scheme)
http://www.mydomain.com:80/Ko/Users?user_id=12903#UserProfiles |
우리가 웹 브라우저에서 흔히 볼 수 있는 스키마는 http:// 또는 https://입니다.
- 요청에 사용되는 프로토콜을 지정합니다.
- 웹 브라우저는 일반적으로 많이 사용되는 http://와 https:// 외에도 mailto:(메일 전송) 또는 ftp:(파일 전송)와 같은 프로토콜도 처리가 가능합니다.
- 웹 서버에 직접 요청을 보내는 클라이언트의 경우 구현 내용에 따라 더 많은 프로토콜을 처리 할 수도 있습니다.
도메인 이름(Authority)
http://www.mydomain.com:80/Ko/Users?user_id=12903#UserProfiles |
네임스페이스를 관리하는 도메인 이름 혹은 권한입니다.
- 어떤 웹 서버에게 요청을 보낼 것인지를 결정합니다.
- 호스트 이름 또는 IP 주소를 사용합니다.
- IP 주소를 외우는 것은 쉽지 않기 때문에 웹 브라우저에서는 호스트 이름을 주로 사용합니다.
- 로컬 호스트(localhost) 또는 루프백 주소(127.0.0.1)와 같은 특수한 주소를 사용 할 수 있습니다.
포트(Port)
http://www.mydomain.com:80/Ko/Users?user_id=12903#UserProfiles |
포트는 웹 서버가 수신하는 포트를 지정합니다.
- 가장 흔히 사용하는 HTTP의 표준 프로토콜인 HTTP(:80)와 HTTPS(:443)는 생략 가능합니다.
- 그 외 포트는 생략될 경우 리소스에 대한 접근이 차단 될 수 있으니 정확한 포트를 입력해야합니다.
경로(Path)
http://www.mydomain.com:80/Ko/Users?user_id=12903#UserProfiles |
웹 서버에서의 리소스 경로를 지정합니다.
- URL을 정의하는 Path Variable 방식으로 표현됩니다.
- 초기 웹에서는 리소스의 경로가 웹 서버의 실제 경로와 맵핑되었습니다.
- 오늘날에는 웹 서버의 실제 경로를 사용하지 않고 웹 서버에서 추상화된 경로를 사용합니다.
쿼리(Query)
http://www.mydomain.com:80/Ko/Users?user_id=12903#UserProfiles |
웹 서버에서 리소스를 필터하기 위한 질의문입니다.
- URI를 정의하는 Query Parameter 방식으로 표현됩니다.
- 웹 서버에 전달되는 파라미터를 입력합니다.
- & 심볼을 사용하여 여러 개의 파라미터를 전달 할 수도 있습니다.
- 파라미터가 사용되는 방식은 웹 서버마다 다르게 구현됩니다.
프래그먼트(Fragment)
http://www.mydomain.com:80/Ko/Users?user_id=12903#UserProfiles |
리소스의 특정 지점을 가리키는 앵커입니다.
- 앵커는 리소스 내의 북마크의 한 종류입니다.
- 웹 브라우저에서 리소스를 수신했을 때 리소스 내의 북마크로 이동(스크롤링)됩니다.
- 보통은 해당 리소스에 대한 특정 북마크를 링크로 하여 외부에 공유하기 위한 용도로 사용됩니다.
- 웹 브라우저를 제외한 클라이언트에서는 사용되지 않습니다.
'Deprecated > HTTP' 카테고리의 다른 글
[Web/HTTP] URI 문자들을 이스케이프하기 위한 URI Encoding (0) | 2023.03.01 |
---|---|
[Web/HTTP] MIME 타입과 MIME 스니핑 (0) | 2022.04.19 |
[Web/HTTP] URL, URN 그리고 URI의 차이점과 Path Variable, Query Parameter (0) | 2022.04.19 |
[Web/HTTP] HTTP/0.9, HTTP/1.x 그리고 HTTP/2 (0) | 2022.04.19 |
[Web/HTTP] HTTP 간단 정리 (0) | 2022.04.18 |