본문 바로가기

Deprecated/HTTP

[Web/HTTP] URL 및 URI 구문 분석

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

리소스의 특정 지점을 가리키는 앵커입니다.

  • 앵커는 리소스 내의 북마크의 한 종류입니다.
  • 웹 브라우저에서 리소스를 수신했을 때 리소스 내의 북마크로 이동(스크롤링)됩니다.
  • 보통은 해당 리소스에 대한 특정 북마크를 링크로 하여 외부에 공유하기 위한 용도로 사용됩니다.
  • 웹 브라우저를 제외한 클라이언트에서는 사용되지 않습니다.