Q&A

  • 포트 별칭으로 포트 번호 알아내는 방법이 있을까요?
안녕하세요. 이호림이라고 합니다.

제가 구현 할려는 기능이 있습니다.
원격지 서버에 접속하기전 미리 체크하여 접속할 수 있는지 없는지 알아내는 기능입니다.

원격지 서버는 여러가지가 될수 있겠군요... 데이타베이스, 데몬, 메일, FTP...

체크할려면 Host, Port 이렇게 2가지를 알아야 하는데요. Port 번호를 모르고
Port 별칭으로 Port 번호를 구해서 체크할려고 합니다.

예를들면 HTTP = 80, FTP = 21, TELNET=23

Port1 := PortNameToNum('HTTP');
Port2 := PortNameToNum('TELNET');

위와 같은 기능을 구현할려고 합니다.
포트 번호는 모르는 가정하에 포트 별칭만 알고 있을경우 이 포트 별칭으로 포트 번호를 구할려고 합니다.

3  COMMENTS
  • Profile
    최용일 2006.03.07 02:32
    안녕하세요. 최용일입니다.

    Well-known port는 IANA에서 관장하고 있습니다.

    이름과 포트번호를 디비로 만들어놓으시면 쉽게 하실 수 있겠네요...

    http://www.iana.org/assignments/port-numbers

    ^^ 항상 즐코하세요...

  • Profile
    이호림 2006.03.07 02:51
    최용일님 답변 감사합니다.
    흠....

    제가 구현 할려는 실질적인 내용에 대해 말씀드리겠습니다.
    데이타베이스 서버가 살아있는지 죽어있는지 체크 할려고 합니다.
    데이타베이스 서버가 죽어있는 상태에서 연결 시도를 하면 프로그램이 먹통이 됩니다.

    그래서 데이타베이스에 연결하기전 미리 소켓으로 체크할려고 하는데요...
    데이타베이스 서버는 인포믹스 입니다.

    인포믹스 클라이언트 설정을 보면 'Service Name' 입력란에 보통 포트 별칭인 'turbo' 가 기본 셋팅이 됩니다.
    이 'turbo'의 실질적인 포트번호는 '1521' 이고요.. 하지만 간혹 어떠한 DBA 혹은 개발자나 사용자들은
    'turbo' 의 실제 포트번호를 임의적으로 설정합니다. 예를 들면 'turbo'의 포트번호는 '1555' 이런식으로요.
    이 사용자 혹은 DBA가 turbo의 포트번호를 뭘로 설정했는지 그리고 turbo 가 아닌 임의의 포트 별칭으로
    임의의 포트 번호로 설정할수도 있겠죠...
    'ids940' = '2800' 이런식으로요... 저는 포트 별칭만 알고만 있고 포트 별칭이 실질적으로 사용하는 포트번호는 인포믹스 서버 내부적으로 암호화 되어 전혀 알지 못합니다.

    위에서 제가 설정했듯 'ids940' 의 포트 별칭으로 '2800' 이라는 포트번호를 구해야 되거든요...
    간단한 문제가 아닌줄 알고있지만... 꼭좀 답변 부탁드립니다.




  • Profile
    최용일 2006.03.07 03:44
    안녕하세요. 최용일입니다.

    win9x계열은 \windows\services
    winnt계열은 \winnt\system32\drivers\etc\services
    windows xp계열은 \windows\system32\drivers\etc
    리눅스계열은 /etc/services
    에 별칭과 포트번호가 들어 있습니다.

    ......
    turbo 1521/tcp
    ......

    네트워크를 통한 통신은 기본적으로 서로간의 약속입니다. IP와 포트번호도 거기에 속하죠. 어느 한쪽만의 일방적인 규칙은 허용되지 않습니다.

    서버에서 turbo라는 별칭에 1521이라는 포트번호를 설정하였으면 클라이언트에도 그렇게 설정해서 사용해야합니다. 모든 포트로 다 접속해보는 무식한 방법도 있겠지만 연결된 포트의 별칭이 turbo라는 것까지는 알 수 없을겁니다.

    인포믹스는 제가 사용해본적이 없어서 이 이상은 답변드릴 수가 없네요...

    ^^ 항상 즐코하세요...