URL의 구성요소는 무엇인가요?

대부분의 경우 사실이 아니더라도 '도메인을 구매했습니다' 또는 '이미지는 다른 사이트에 호스팅됩니다'와 같이 말해도 괜찮습니다. 하지만 경우에 따라 더 정확해야 합니다. 예를 들어 쿠키를 처리할 때는 사이트출처의 차이를 이해해야 합니다.

URL 부분의 이름은 JavaScript API도 정의하는 표준에 지정됩니다.

  • URL 표준은 엔지니어가 상호 운용 가능한 웹브라우저를 빌드할 수 있도록 URL 및 관련 개념을 정의합니다.
  • 표준의 URL API 구성요소는 스키마 또는 출처와 같은 URL 문자열의 일부에 대한 액세스를 제공하는 메서드를 정의합니다.

이 문서에서는 HTTP 또는 HTTPS URL 문자열과 함께 사용되는 다양한 용어를 설명합니다. 파일 또는 데이터 URL과 같은 다른 유형의 URL은 다루지 않습니다. hostorigin와 같은 용어의 경우 정확한 정의는 본질적으로 복잡하므로 이 문서에서는 전체 설명을 시도하기보다는 예시와 URL 표준 링크를 제공합니다.

JavaScript를 사용하여 URL API에서 정의한 URL 구성요소의 이름을 가져올 수 있습니다. 예를 들면 다음과 같습니다.

let url = new URL('https://foo.com.au:1234/bar/foo.html#bar');
console.log(url);

URL 분석 도구

아래 URL을 수정하여 URL 문자열의 일부에 이름이 지정되는 방식을 확인합니다. 별도의 탭(url-parts.glitch.me)에서 열 수도 있습니다.


URL 부분의 이름은 아래에 알파벳순으로 나열되어 있습니다.

국가 코드 최상위 도메인(ccTLD)

ISO 3166-1 국가 코드 목록에 정의된 최상위 도메인입니다.

  • https://example.org.au의 경우 ccTLD는 au입니다.
  • https://example.io의 경우 ccTLD는 io입니다.

도메인 이름

HTTP 또는 HTTPS URL의 부분으로, 점으로 구분됩니다. 스키마 뒤에 있지만 경로 또는 포트(지정된 경우) 앞에 있는 모든 부분입니다. 도메인 이름의 각 부분을 라벨이라고 합니다.

URL 도메인 이름
https://example.github.io/path example.github.io
https://support.example.org.au:443 support.example.org.au

유효한 최상위 도메인(eTLD)

공개 접미사 목록의 항목으로, TLD 및(여러 부분으로 구성된 eTLD의 경우) 그 아래에 있는 추가 도메인(2차, 3차 등)을 포함합니다.

  • 예를 들면 com, com.au, github.io, sa.edu.au, schools.nsw.edu.au입니다.

이러한 예와 같은 '공용 접미사'는 도메인을 등록할 수 있는 이름입니다. 공개 접미사 목록은 알려진 모든 공개 접미사의 목록이며 자주 업데이트됩니다. ChromiumFirefox를 비롯한 브라우저는 빌드에 이 목록을 사용합니다.

eTLD+1

등록 가능한 도메인을 참고하세요.

eTLD와 그 앞에 오는 하위 도메인.

  • 예를 들면 example.com, example.org.au, example.github.io, example.sa.edu.au, example.schools.nsw.edu.au입니다.

파일 이름

URL 표준에 정의되어 있지 않으며 URL API의 일부가 아니지만 URL이 디렉터리 구조에 직접 매핑된다는 잘못된 가정을 기반으로 URL의 경로가 아닌 마지막 부분을 참조하는 데 일반적으로 사용됩니다.

예를 들어 https://example.com/dir/file.html에서는 file.html을 파일 이름으로 지칭할 수 있습니다.

파일 이름 값은 브라우저에서 애셋이 다운로드된 경우 애셋 이름을 지정하는 데도 사용됩니다. 예를 들어 https://example.com/images/image.jpg는 일반적으로 로컬에서 image.jpg에 저장됩니다.

Fragment

URL 끝에 있는 # 문자 뒤에 오는 문자열로 프래그먼트 식별자를 제공합니다.

  • 예를 들어 URL https://example.com/cats#tabby의 프래그먼트 식별자 값은 tabby입니다.

#가 포함된 부분을 해시 또는 앵커라고 합니다. 텍스트 프래그먼트에 링크하고 강조 표시할 수도 있습니다.

해시는 프래그먼트가 아닌 URL API에서 반환합니다.

정규화된 도메인 이름 (FQDN)

IP 주소에 매핑되는 웹사이트 또는 서버의 전체 주소입니다.

URL FQDN
https://example.com:1234/cats example.com
https://api.example.github.io api.example.github.io

URL의 FQDN에는 기본 포트가 아닌 포트가 사용되더라도 포트가 포함되지 않습니다.

해시(또는 앵커)

URL 끝에 있는 # 문자 뒤에 오는 문자열로, 프래그먼트 식별자를 제공합니다. 일부 맥락에서는 이를 '앵커'라고 합니다.

#를 제외한 부분을 프래그먼트라고 합니다. 텍스트 프래그먼트에 링크하고 강조 표시할 수도 있습니다.

해시는 프래그먼트가 아니라 URL API에서 반환됩니다.

호스트

URL 표준에 정의된 대로 호스트는 도메인 이름, IP v4 주소, IPv6 주소, 불투명 호스트 또는 빈 호스트일 수 있습니다.

  • URL 표준의 host 정의에는 포트가 포함되지 않습니다.
  • 포트가 스키마의 기본 포트가 아닌 경우 URL.host에는 포트가 포함됩니다.
  • URL.hostname에는 포트가 포함되지 않습니다.
URL URL.host
https://www.example.com:443/cat www.example.com
// 443 is the default port for the scheme
https://www.example.com:1234/cat www.example.com:1234
https://cat.example.github.io cat.example.github.io

호스트 이름

호스트 이름은 JavaScript URL API로 정의되지만 URL 표준으로 정의되지 않습니다. 자세한 내용은 호스트 표현을 참고하세요.

URL.hostname포트가 없는 호스트를 반환합니다.

URL URL.hostname
https://www.example.com:443/cat www.example.com
https://www.example.com:1234/cat www.example.com
https://cat.example.github.io cat.example.github.io

출발지

URL 표준은 origin를 정의하고 배경에 관한 HTML 표준으로 연결됩니다.

HTTP 또는 HTTPS URL의 경우 URL.origin는 포트가 스키마의 기본값이 아닌 한 스키마, 호스트, 포트를 반환합니다.

URL URL.origin
https://www.example.com:443/cat https://www.example.com
https://www.example.com:1234/cat https://www.example.com:1234
https://cat.example.github.io https://cat.example.github.io

매개변수

검색 매개변수를 참고하세요.

비밀번호

사용자 이름을 참고하세요.

경로 이름

HTTP 또는 HTTPS URL의 경우 도메인 및 포트(정의된 경우) 뒤의 부분으로, 파일 이름(정의된 경우)은 포함하지만 검색 문자열 또는 해시는 포함하지 않습니다.

URL URL.pathname
https://example.com [empty string]
https://example.com:8000/search?q=tabby /search
https://example.github.io/cat/pattern#tabby /cat/pattern
https://example.github.io/README.md /README.md

'경로'는 파일 이름이 없는 경로 이름을 나타내는 데 사용되는 경우가 있습니다. 예를 들어 URL https://example.com/cat/pattern/tabby.html의 '경로'는 /cat/pattern입니다.

포트

URL에서 네트워크 포트를 식별하는 : 뒤의 숫자입니다. 예를 들어 URL https://example.com:1234/tabby의 포트 번호는 1234입니다.

포트 번호는 16비트 부호 없는 정수여야 합니다. 즉, 0과 65535 사이의 정수여야 합니다(양 끝값 포함).

HTTP URL의 경우 기본 포트는 80, HTTPS의 경우 기본값은 443입니다. 기본이 아닌 포트를 사용하는 경우가 아니라면 URL에서 포트 번호를 지정할 필요가 없습니다.

포트가 스키마의 기본값인 경우 API는 빈 문자열을 반환합니다.

URL URL.port
https://example.com // empty string
https://example.com:443/foo // empty string: port is default for scheme
https://www.example.com:1234/foo 1234

프로토콜

스키마 다음에 : (예: http: 또는 https:)

protocol는 URL API에서 사용할 수 있지만 scheme는 사용할 수 없습니다.

쿼리 (또는 '쿼리 문자열')

URL의 검색 부분(앞의 ? 제외)

등록 가능한 도메인

  • com 또는 org와 같은 단일 부분 eTLD(즉, TLD에 해당하는 eTLD)가 있는 URL의 경우 도메인과 그 앞에 있는 2차 도메인(예: example.com 또는 example.org)
  • 3단계 등록만 허용되는 두 부분으로 된 eTLD가 있는 URL(예: com.augithub.io와 같은 공개 서픽스 목록의 항목)의 경우 두 부분으로 된 최상위 도메인('공개 서픽스')과 그 바로 앞의 3단계 도메인 이름입니다. 예를 들면 example.org.au 또는 example.github.io입니다.
  • 구성요소가 3개 이상인 eTLD의 경우 eTLD와 그 앞에 있는 도메인입니다.

스킴

URL에 대한 요청이 이루어질 때 네트워크 프로토콜 (또는 사용자 에이전트가 실행할 작업)을 정의하는 URL (:// 이전) 부분입니다. 예를 들어 https 스키마가 있는 URL에 대한 요청은 HTTPS 프로토콜을 사용하여 이루어져야 합니다. 네트워크 프로토콜에 해당하지 않는 file, mailto 또는 git와 같은 스키마를 사용하는 URL 요청의 경우 동작은 사용자 에이전트에 따라 다릅니다. 예를 들어 사용자가 mailto 링크를 클릭하면 대부분의 브라우저는 링크의 href URL에 있는 값을 사용하여 기본 이메일 애플리케이션을 엽니다.

물음표 뒤에 경로 뒤에 제공되는 매개변수 및 값을 나타내는 일련의 키-값 쌍이 옵니다.

URL URL.search
https://example.com/cats?pattern=tabby&mood=bonkers ?pattern=tabby&mood=bonkers
https://example.com/cats:443?pattern=tabby ?pattern=tabby

query 또는 '쿼리 문자열'은 선행 ?이 없는 search를 나타냅니다.

검색 매개변수도 참고하세요.

검색 매개변수

검색 문자열(또는 '검색어 문자열')에 전달된 데이터 항목을 참조합니다.

  • 예를 들어 https://example.com/cats?pattern=tabby&mood=bonkers의 경우 검색 문자열에는 pattern=tabbymood=bonkers의 두 매개변수가 있습니다.

2차 도메인

최상위 도메인 앞에 오는 도메인입니다.

  • URL https://www.example.com의 경우 2차 도메인은 최상위 도메인 com하위 도메인example.com입니다.

  • https://example.org.au의 경우 최상위 도메인은 au, 두 번째 수준 도메인은 org, 세 번째 수준 도메인은 example입니다. 이 예에서 org.auau의 하위 도메인이고 example.org.auorg.au의 하위 도메인입니다.

사이트

사이트스키마를 포함하는 동일 사이트스키마 없는 동일 사이트와 함께 HTML 표준에 의해 정의됩니다.

사이트가 URL 표준 또는 JavaScript URL API에 정의되어 있지 않습니다.

이 문맥에서 각 항목의 의미는 다음과 같습니다.

  • https://example.com과 같이 단일 부분 eTLD가 있는 HTTP 또는 HTTPS URL의 경우 사이트는 scheme, eTLD, 그 앞에 있는 라벨로 구성됩니다. 예를 들어 URL https://www.example.com/cat의 경우 사이트는 https://example.com입니다. 이 URL의 경우 eTLD는 최상위 도메인과 동일합니다.
  • co.uk, github.io 또는 sa.edu.au와 같은 멀티파트 eTLD의 경우 '사이트'는 scheme, eTLD, 라벨로 구성됩니다. 예를 들어 URL이 https://cat.example.co.uk/tabby이면 사이트는 https://example.co.uk이고 https://www.education.sa.gov.au의 경우 사이트는 https://education.sa.gov.au입니다.
URL 사이트 (스키마 및 eTLD +1 포함)
https://cat.example.com/tabby ("https", "example.com")
https://cat.example.co.uk/tabby ('https', 'example.co.uk')

origin과 달리 사이트에는 포트가 포함되지 않습니다.

하위 도메인

상위 도메인 내의 도메인입니다.

com 또는 org와 같이 단일 부분 최상위 도메인이 있는 사이트의 경우 최상위 도메인 앞에 있는 부분으로, 각각 점으로 구분됩니다.

  • www.example.comexample.com의 하위 도메인입니다.
  • support.api.example.orgexample.org의 하위 도메인인 api.example.org의 하위 도메인입니다.

3단계 등록만 허용되는 두 부분으로 구성된 eTLD(예: co.ukgithub.io와 같은 공개 접미사 목록의 항목)의 경우 하위 도메인은 그 앞에 있는 도메인 이름의 일부입니다.

  • 예를 들어 cat.example.co.ukexample.co.uk의 하위 도메인입니다.

텍스트 프래그먼트

페이지 내의 텍스트 범위에 연결하고 강조 표시할 수 있는 프래그먼트 유형입니다. 사용자가 텍스트 프래그먼트가 포함된 링크를 클릭하면 브라우저는 페이지 내에서 텍스트를 찾아 스크롤하고 강조 표시하려고 시도합니다.

텍스트 프래그먼트는 :~:text=로 시작하고 그 뒤에 검색어가 옵니다.

예를 들어 이 페이지에서 'fragment' 텍스트가 처음으로 표시되는 위치에 연결하려면 URL https://web.dev/articles/url-parts#:~:text=fragment를 사용하세요.

자세한 내용은 텍스트 프래그먼트를 참고하세요.

최상위 도메인(TLD)

루트 영역 데이터베이스에 등록된 도메인 이름(예: com 또는 org) 일부 최상위 도메인은 uktv과 같은 국가 코드 최상위 도메인입니다.

HTTP 또는 HTTPS URL의 부분을 설명할 때 TLD는 마지막 점 뒤에 오는 도메인 이름입니다.

  • https://example.org의 경우 URL의 최상위 도메인은 org입니다.
  • https://example.org.au의 경우 URL의 최상위 도메인은 au이고 org2차 도메인입니다(org도 최상위 도메인임). org.au는 두 부분으로 구성된 eTLD입니다.

eTLD공개 접미사 목록에는 1개, 2개 이상의 부분으로 구성된 도메인이 포함되므로 TLD가 eTLD일 수도 있습니다. 예를 들면 다음과 같습니다.

  • https://example.com의 경우 URL의 eTLD는 TLD이기도 한 com입니다.

사용자 이름

선택사항인 사용자 이름과 비밀번호를 URL 시작 부분에 제공할 수 있지만 보안상의 이유로 지원 중단되었으며 대부분의 경우 무시됩니다.

예를 들어 https://user123:password1@example.com의 경우 사용자 이름은 user123입니다. 사용자 이름과 비밀번호는 일반 텍스트로 되어 있으며 암호화되지 않습니다. 사용자 이름에 : 또는 @ 기호가 포함된 경우 각각 %3A%40로 URL 인코딩되어야 합니다.


자세히 알아보기