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

엄밀히 말하면 진실이 아니더라도 대부분의 경우 '도메인을 구입했습니다' 또는 '이미지가 다른 사이트에서 호스팅됩니다'와 같은 말을 하는 것은 괜찮습니다. 그러나 일부 상황에서는 더 정밀해야 합니다. 예를 들어 쿠키를 처리할 때 siteorigin의 차이점을 이해해야 합니다.

URL 부분의 이름은 표준에 지정되며 JavaScript API도 정의합니다.

  • URL 표준은 엔지니어가 상호 운용 가능한 웹브라우저를 빌드할 수 있도록 URL과 관련 개념을 정의합니다.
  • 표준의 URL API 구성요소는 스키마 또는 origin과 같은 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의 경우) 그 아래에는 두 번째 수준, 세 번째 수준 등의 추가 도메인이 포함된 공개 접미사 목록의 항목.

  • 예를 들면 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의 일부가 아니라

예를 들어 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

'Path'는 파일 이름 없이 경로 이름을 가리키기 위해 사용되기도 합니다. 예를 들어 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:).

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

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

URL의 검색 부분(앞 ? 제외)입니다.

등록 가능한 도메인

  • com 또는 org과 같이 한 부분으로 된 eTLD가 있는 URL(즉, TLD에 해당하는 eTLD)의 경우 도메인과 그 앞에 있는 두 번째 수준 도메인입니다(예: example.com 또는 example.org).
  • 3단계 등록만 허용되는 두 부분으로 된 eTLD를 포함하는 URL (즉, com.augithub.io과 같은 공개 접미사 목록의 항목)의 경우 두 부분으로 된 최상위 도메인 ('공개 서픽스')과 그 바로 앞에 세 번째 수준 도메인 이름이 있습니다. 예를 들면 example.org.au 또는 example.github.io입니다.
  • 세 개 이상의 부분이 있는 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는 최상위 도메인과 동일합니다.
  • 멀티파트 eTLD(예: co.uk, github.io, sa.edu.au)의 경우 '사이트'는 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과 달리 사이트에는 port가 없습니다.

하위 도메인

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

com 또는 org와 같이 한 부분으로 구성된 최상위 도메인이 있는 사이트의 경우 최상위 도메인 앞의 각 부분은 점으로 구분됩니다.

  • www.example.com은(는) example.com의 하위 도메인입니다.
  • support.api.example.orgexample.org의 하위 도메인인 api.example.org의 하위 도메인입니다.

세 번째 수준 등록만 허용되는 두 부분으로 된 eTLD(즉, co.ukgithub.io와 같은 공개 접미사 목록의 항목)의 경우 하위 도메인은 그 앞에 있는 도메인 이름의 일부입니다.

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

텍스트 프래그먼트

페이지 내 다양한 텍스트에 링크를 걸고 강조 표시하는 데 사용하는 프래그먼트의 한 유형입니다. 사용자가 텍스트 프래그먼트가 있는 링크를 따라가면 브라우저는 페이지 내의 텍스트를 찾아 스크롤하여 강조 표시합니다.

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

예를 들어 이 페이지에서 처음 발견된 텍스트 '프래그먼트'에 연결하려면 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는 com이며 TLD이기도 합니다.

사용자 이름

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

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


자세히 알아보기