URL에 서비스 이름과 전송 프로토콜을 지정할 수 있나요?

URL에 서비스 이름과 전송 프로토콜을 지정할 수 있나요?

URL에는 고유한 구문이 있습니다..

  1. URL에서 호스트 이름이나 IP 주소를 지정할 수 있습니다. 마찬가지로 포트 번호를 지정할 수 있지만 포트 번호 대신 서비스 이름을 지정할 수 있습니까? 그렇지 않은 경우 필요할 때 서비스 이름을 어떻게 지정할 수 있습니까(예: 서비스의 포트 번호가 기억나지 않는 경우)?
  2. 우리가 지정할 수 있나요전송 프로토콜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의 표준입니다. 그리고...

포트 번호 부족으로 인해 서비스가 누락되는 문제를 해결해야 하는 경우 제가 본 가장 일반적인 접근 방식은 각 프로토콜/포트 쌍에 대해 고유한 체계를 정의하는 것입니다.

답변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 정의를 가져오지 않습니다.

관련 정보