필요한 조회가 여전히 전통적인 WHOIS를 사용한다면, 프록시 정책이 WHOIS 서비스로의 CONNECT를 허용할 때 HTTP 프록시가 그 TCP 교환을 전달할 수 있습니다. 클라이언트는 조회 텍스트를 보내기 전에 프록시 핸드셰이크를 끝내야 합니다. 프록시 자격 증명을 설정하지 않은 상태에서 허용된 공개 WHOIS 시험에는 HTTP 프록시 목록이 후보 중개자를 제공합니다. 그중 하나가 WHOIS 서비스의 호스트와 포트 43을 허용하는지 따로 확인하십시오.

whois.example이라는 가상의 서비스라면 다음 HTTP 요청으로 시작합니다.

CONNECT whois.example:43 HTTP/1.1
Host: whois.example:43

HTTP 줄 끝은 CRLF로 기록합니다. 끝나는 빈 헤더 줄까지 포함해 프록시 응답 전체를 읽고, 숫자 성공 상태를 확인합니다. 상태 줄의 일부만 받는 것으로는 다음 프로토콜을 시작하기에 충분하지 않습니다.

그다음 WHOIS 텍스트를 보냅니다

터널이 열리면 그 WHOIS 서버가 기대하는 질의를 보냅니다. 단순한 예시 질의는 다음과 같습니다.

example.com<CRLF>

이 표시는 캐리지 리턴과 라인 피드 바이트를 뜻합니다. 도메인 이름의 일부가 아닙니다. 이 WHOIS 교환 안에는 HTTP GET 줄도, HTTP 응답 상태도 없습니다.

WHOIS 서버가 연결을 닫을 때까지 텍스트를 읽습니다. 응답에는 여러 줄이 들어갈 수 있으며 첫 줄바꿈이 완료를 뜻하지는 않습니다. 구현에서는 연결과 읽기 대기 시간을 제한해 두십시오.

이 순서는 파서에게 두 개의 뚜렷한 경계도 줍니다. 먼저 HTTP 헤더 블록이 옵니다. 그다음 WHOIS 응답이 오며, 그 완료는 연결 종료로 알려집니다. 이미 분석한 경계를 넘어 버퍼에 남은 바이트는 전체 네트워크 읽기를 버리지 말고 보존하십시오.

프록시가 거부하면 터널은 열리지 않았으므로 그 뒤에 도메인을 보내도 WHOIS 결과를 얻을 수 없습니다. 서버 응답이 다른 WHOIS 서비스를 가리킨다면, 후속 질의에는 그 서비스로의 별도 허용 연결이 필요합니다.

관련 글