IPv6 URL에서 호스트와 포트를 어떻게 구별 할 수 있습니까?


87

URL은 항상 다음 형식을 갖습니다.

<protocol>://<host>[:<port>]/[<path>][#<hash>]

문제는 IPv6이 포트와 호스트의 구분 기호와 같이 콜론을 사용한다는 것입니다.

2001:db8:1f70::999:de8:7648:6e8

그러나 이것이 호스트 인 경우 포트 100에서 HTTP를 사용하여 호스트에 연결하려면 어떻게해야합니까?

http://2001:db8:1f70::999:de8:7648:6e8:100/

문제는 마지막 결장입니다. 0은 이중 콜론 (1f70에서 999 사이)으로 생략되므로 ': 100'이 IP 또는 포트 번호에 속하는지 알 수 없습니다. 우리는 이것을 어떻게 알 수 있습니까?

답변:


118

이 경우 표기법은 IPv6 IP 번호를 대괄호로 인코딩하는 것입니다.

http://[2001:db8:1f70::999:de8:7648:6e8]:100/

그건 RFC 3986 , 섹션 3.2.2 : 호스트

인터넷 프로토콜 리터럴 주소, 버전 6 [RFC3513] 이상으로 식별 된 호스트는 IP 리터럴을 대괄호 ( "["및 "]")로 묶어 구별됩니다. URI 구문에서 대괄호 문자가 허용되는 유일한 곳입니다. 미래의 아직 정의되지 않은 IP 리터럴 주소 형식을 예상 할 때, 구현에서는 추론 적 결정에 의존하기보다는 선택적 형식 플래그를 사용하여 이러한 형식을 명시 적으로 나타낼 수 있습니다.


38
대괄호는 선택 사항 이 아님을 지적하는 것이 좋습니다. 브라우저가 숫자 IPv6 주소를 식별 할 수있는 유일한 메커니즘입니다.
— tylerl

포트가 브래킷 안에 없어야합니까?
— jayarjo

2
@jayarjo 아니오, 대괄호가 있으므로 콜론을 포함하는 IP 주소와 콜론으로 IP 주소와 구분되는 포트 사이에 명확성을 제공합니다.
— sysadmin1138
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.