- URL에서 호스트 이름이나 IP 주소를 지정할 수 있습니다. 마찬가지로 포트 번호를 지정할 수 있지만 포트 번호 대신 서비스 이름을 지정할 수 있습니까? 그렇지 않은 경우 필요할 때 서비스 이름을 어떻게 지정할 수 있습니까(예: 서비스의 포트 번호가 기억나지 않는 경우)?
우리가 지정할 수 있나요전송 프로토콜URL에? URL에 전송 프로토콜을 지정할 수 없다면 필요할 때 전송 프로토콜을 어떻게 지정할 수 있습니까? 이에 대한 필요성은 하나의 서비스 이름이 두 개의 전송 프로토콜에 해당할 수 있다는 것입니다.
/etc/services
http 80/tcp # Hypertext Transfer Protocol http 80/udp ssh 22/tcp # Secure Shell ssh 22/udp telnet 23/tcp # Telnet telnet 23/udp smtp 25/tcp # Simple Mail Transfer Protocol smtp 25/udp
감사해요.
답변1
귀하의 질문은 이러한 URL로 무엇을 하려는지 명확하지 않습니다. 목적을 알지 못한 채 표준을 준수해야 한다고 가정해야 합니다. 비표준 URL을 사용하기 시작하면 문제가 발생할 수 있습니다.
RFC 3986URL의 표준입니다. 그리고...
- 프로토콜을 지정하지 않습니다. 하지만그것은 계획을 지정합니다. 일반적으로 이 체계는 프로토콜을 지정하는 데 사용됩니다. 예를 들어
http://example.com/blah.html
. - 서비스를 지정하지 않습니다. 하지만그것은 지정합니다숫자포트. 일반적으로 이 포트 번호는 서비스를 지정하는 데 충분합니다. 서비스가 등록되어 있기 때문이죠인터넷 할당 번호 기관.
포트 번호 부족으로 인해 서비스가 누락되는 문제를 해결해야 하는 경우 제가 본 가장 일반적인 접근 방식은 각 프로토콜/포트 쌍에 대해 고유한 체계를 정의하는 것입니다.
답변2
서비스 이름은 운영 체제 수준의 응용 프로그램 수준 개념/서비스이며 단순히 포트 번호로 변환됩니다. 결국 그것은 숫자로 번역된 이름일 뿐이다.
그러나 RFC RFC 3986 § 3.2.3에서는 이를 허용하지 않지만(@JdeBP에게 감사드립니다) 브라우저/응용 프로그램에서 허용하는 경우 URL에 서비스 이름을 사용할 수 있습니다.
대부분의 일반적인 URL/브라우저 유틸리티 파서는 이 작업을 올바르게 수행하도록 허용하지 않습니다.
이러한 이상 현상을 설명하기 위해 우리는 서비스 이름이 포함된 URL을 허용하는 텍스트 모드 브라우저 lynx를 사용합니다.
lynx https://www.cnn.com:https
또는
lynx http://www.sapo.pt:http
작동하고 IP가 해당 웹사이트를 올바르게 탐색하는 것 같습니다. 정의에 따르면 lynx 유틸리티/프로토콜은 TCP를 사용하며 서비스 번호 UDP 정의를 가져오지 않습니다.