[GetServbyName과 GetServbyport 기능의 차이점은 무엇이며 어떤 시나리오가 적합합니까? ]]
PHP에서 GetServbyName 과 GetServbyport는 네트워크 프로그래밍과 관련된 두 가지 기능입니다. 이들은 서비스의 포트 번호와 서비스 이름 간의 매핑 관계를 얻는 데 사용되며, 네트워크 통신과 관련된 기능을 처리 할 때 개발자가 편리한 쿼리를 제공 할 수 있도록 도와줍니다. 기능적 유사성이 있지만 응용 프로그램 시나리오 및 매개 변수 전달 방법은 다릅니다.
GetServbyName 함수는 서비스 이름을 통해 해당 포트 번호를 얻는 데 사용됩니다. 기본 구문은 다음과 같습니다.
<span><span><span class="hljs-title function_ invoke__">getservbyname</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$service</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$protocol</span></span><span>): </span><span><span class="hljs-keyword">string</span></span><span>|</span><span><span class="hljs-literal">false</span></span><span>
</span></span>
$ 서비스 : "http" , "ftp" , "smtp" 등과 같은 서비스 이름을 나타냅니다.
$ 프로토콜 : 서비스가 실행되는 프로토콜을 지정하기 위해 일반적으로 "TCP" 또는 "UDP" 프로토콜 유형을 지정합니다.
이 함수는 서비스 이름과 일치하는 포트 번호를 반환하고 찾을 수없는 경우 false를 반환합니다.
GetServbyName 과 달리 GetServbyPort 함수는 포트 번호를 통해 서비스 이름을 얻는 데 사용됩니다. 기본 구문은 다음과 같습니다.
<span><span><span class="hljs-title function_ invoke__">getservbyport</span></span><span>(</span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$port</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$protocol</span></span><span>): </span><span><span class="hljs-keyword">string</span></span><span>|</span><span><span class="hljs-literal">false</span></span><span>
</span></span>
$ 포트 : 포트 번호, 일반적으로 정수 값 (예 : 80, 443, 21 등)을 나타냅니다.
$ protocol : 또한 지정된 프로토콜 유형, 일반적으로 "TCP" 또는 "UDP" .
이 함수는 포트 번호와 일치하는 서비스 이름을 반환하고 찾을 수없는 경우 false를 반환합니다.
GetServbyName 과 GetServbyport 기능 모두 서비스와 포트 간의 매핑 관계를 쿼리하는 데 사용되지만 핵심 차이는 쿼리의 시작점이 다르다는 것입니다.
다른 쿼리 방법 :
GetServbyName은 서비스 이름을 기준으로 포트 번호를 찾습니다.
GetServbyport는 포트 번호를 기준으로 서비스 이름을 찾습니다.
다른 해당 시나리오 :
서비스 이름 (예 : HTTP, FTP 등)을 알고 있지만 사용하는 포트 번호를 쿼리 해야하는 경우 GetServbyName을 사용하십시오.
포트 번호 (80, 443 등)를 알고 있지만 해당 포트를 사용하는 서비스를 알고 싶다면 GetServbyport를 사용하십시오.
반환 값은 다릅니다 .
GetServbyName은 포트 번호를 반환합니다.
GetServbyport는 서비스 이름을 반환합니다.
서비스가 사용하는 포트를 결정하십시오 .
네트워크 서비스를 개발하는 경우 서비스 이름에 따라 해당 포트 번호를 쿼리해야 할 수도 있습니다. 예를 들어, 웹 애플리케이션을 개발할 때 HTTP 서비스 (일반적으로 80)에서 사용하는 포트 번호 또는 HTTPS 서비스에서 사용하는 포트 번호 (일반적으로 443)를 확인할 수 있습니다. 현재 GetServbyName을 사용할 수 있습니다.
샘플 코드 :
<span><span><span class="hljs-variable">$port</span></span><span> = </span><span><span class="hljs-title function_ invoke__">getservbyname</span></span><span>(</span><span><span class="hljs-string">'http'</span></span><span>, </span><span><span class="hljs-string">'tcp'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"HTTP 서비스의 포트 번호는입니다: <span class="hljs-subst">$port</span></span></span><span>";
</span></span>
네트워크 응용 프로그램의 포트 구성 :
네트워크 프로토콜과 관련된 코드를 작성할 때는 소켓 바인딩 또는 네트워크 통신 구성에 대한 포트 번호를 얻어야 할 수도 있습니다. 현재 GetServbyName 함수를 사용하여 포트 번호를 얻을 수 있습니다.
포트 번호로 서비스 찾기 :
네트워크 문제 해결 또는 보안 감사를 수행 할 때는 포트 번호 만 알고 있지만 어떤 서비스가 아닌지를 알 수있는 상황에 직면 할 수 있습니다. 현재 GetServByport를 사용하여 포트에 해당하는 서비스 이름을 얻을 수 있습니다.
샘플 코드 :
<span><span><span class="hljs-variable">$service</span></span><span> = </span><span><span class="hljs-title function_ invoke__">getservbyport</span></span><span>(</span><span><span class="hljs-number">80</span></span><span>, </span><span><span class="hljs-string">'tcp'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"포트 80 해당 서비스는입니다: <span class="hljs-subst">$service</span></span></span><span>";
</span></span>
포트 번호 및 서비스 매핑 처리 :
네트워크 모니터링 도구 또는 방화벽 규칙 구성 도구를 개발하는 경우 규칙 설정 및 서비스 식별을 위해 포트 번호를 통해 해당 서비스 이름을 얻어야 할 수도 있습니다. 현재 GetServbyport를 사용하여 서비스 이름을 빠르게 얻을 수 있습니다.
GetServbyName 과 GetServbyport는 네트워크 서비스 및 포트 관계를 처리하는 데 유용한 도구입니다. 올바른 기능을 선택하면 개발자가 서비스 및 네트워크 디버깅을 효율적으로 관리하는 데 도움이 될 수 있습니다.
서비스 이름을 알고 포트를 쿼리하려면 GetServbyName을 사용하십시오.
포트 번호를 알고 해당 포트를 사용하여 서비스를 쿼리하려면 GetServByport를 사용하십시오.
이 두 기능의 차이점은 주로 쿼리의 시작점과 반환 된 결과에 반영되며 개발자는 특정 요구에 따라이를 사용하도록 선택합니다.