sbyeol3/http-study

[RFC1413] Identification Protocol

Opened this issue · 0 comments

RFC1413 원문

1. 소개

ident 프로토콜은 특정한 TCP 커넥션의 사용자 ID를 확인할 수 있는 수단을 제공합니다. TCP 포트번호 쌍이 주어지면 ident 프로토콜은 서버의 시스템에서 커넥션의 주인을 식별할 수 있는 문자열을 반환합니다.

ident 프로토콜은 이전에는 Authentication Server Protocol로 불렸습니다. 이후 프로토콜의 기능을 더 잘 반영할 수 있는 이름으로 변경되었습니다.이 문서는 IETF의 TCP 클라이언트 식별 프로토콜 작업그룹의 제작물입니다.

2. 개요

이 프로토콜은 TCP 위의 어플리케이션을 기반으로 하는 커넥션입니다. 서버는 TCP 포트 113에서 TCP 커넥션을 기다립니다. 일단 커넥션이 맺어지면 서버는 connection of interest를 설명하는 데이터 라인을 읽습니다. 해당 커넥션이 존재하면, 커넥션의 시스템 종속 사용자 식별자가 응답으로 전송됩니다. 서버는 해당 커넥션을 닫거나 여러 쿼리에 대해 계속 읽고 응답할 수도 있습니다.

서버는 어느 정도의 시간동안(보통 60-180초 권장) 쿼리가 없다면 그 커넥션을 닫아야 합니다. 클라이언트는 언제든지 커넥션을 끊을 수 있지만 네트워크 딜레이를 허용하기 위해 클라이언트는 쿼리를 취소하거나 커넥션을 끊기 전에 30초 이상을 기다려야 합니다.

3. 제한사항

완전히 명세된 커넥션에 한해서만 쿼리가 허용됩니다. 쿼리는 local/foreign 포트 쌍을 포함하고 있습니다. 커넥션을 명세하기 위해 사용되는 local/foreign 주소 쌍은 쿼리 커넥션의 로컬 및 외부 주소로부터 가져옵니다. 즉, A와 B 사이의 커넥션에서 주소 A의 사용자는 주소 B의 서버에만 쿼리가 가능하다는 것입니다.

4. 쿼리/응답 포맷

서버는 다음과 같은 단순한 텍스트 쿼리 요청을 받습니다.

<서버 포트>, <클라이언트 포트>

<서버 포트>는 "ident" 서버가 동작하는 타겟의 TCP 포트번호이고, <클라이언트 포트>는 클라이언트 시스템의 TCP 포트번호입니다.

주의사항 : 호스트 A의 클라이언트가 로컬로 23, 6191으로 명세된 커넥션에 대해 호스트 B에게 요청을 보내고 싶을 때 클라이언트는 반드시 6191, 23에 요청을 보내야 합니다. 호스트 B에게는 해당 커넥션이 6191, 23으로 명세되었기 때문입니다.

응답 메시지의 형태는 다음과 같습니다.

<서버 포트>, <클라이언트 포트> : <응답 타입> : <추가 정보>

<서버 포트>, <클라이언트 포트>는 쿼리와 동일한 쌍이고 <응답 타입>은 응답의 타입을 식별하는 키워드입니다. <추가 정보>는 맥락에 따라 달라집니다.

반환되는 정보는 <서버 주소>, <클라이언트 주소>, <서버 포트>, <클라이언트 포트>로 식별되어 완전히 지정된 TCP 커넥션과 연관되어 있습니다. <서버 주소>, <클라이언트 주소>는 Identification 프로토콜 서버에 대한 TCP 커넥션과 같은 쿼리 커넥션의 로컬과 외부 IP 주소입니다. (<서버 포트>, <클라이언트 포트>는 쿼리로부터 받습니다.)

응답 예

6193, 23 : USERID : UNIX : stjohns
6195, 23 : ERROR : NO-USER

5. 응답 타입

응답은 두 가지 타입 중 한 타입이 될 수 있습니다.

USERID

이 유형의 응답에서 <추가 정보>: 이후에 운영체제 이름으로 이루어진 문자열이 옵니다. 추가적으로 식별자 캐릭터 셋이 오기도 합니다.

식별자 캐릭터 셋이 존재하는 경우에 ,에 의해 운영체제 이름과 구분됩니다. 캐릭터들로 이루어진 식별자는 식별 문자열의 캐릭터 셋을 나타내기 위해 사용됩니다. 만약 캐릭터 셋이 생략된 경우 "US-ASCII"가 기본값이 됩니다.

허용되는 운영체제 이름과 캐릭터 셋 이름은 RFC 1340 "Assigned Numbers" 또는 그 이후에 정의되어 있습니다.

추가적으로 "Assigned Numbers"에서 명세된 운영체제와 캐릭터셋 외에도 "OTHER"이라는 운영체제 식별자가 있습니다.

운영체제 타입이 "OTHER"로 정의되지 않았다면 서버는 커넥션의 소유자의 "normal" 사용자 ID를 반환해야 합니다. 이 경우에 "Normal"은 커넥션의 소유자를 고유하게 식별하는 문자열로 사용됩니다. 시스템 관리자가 할당한 유저 식별자나 시스템 자원에 접근하기 위해 사용되는 user/password 쌍의 "user" 부분과 같이 말이죠. "OTHER" 외에 운영체제가 명세된 경우, 유저 식별자는 즉시 사용가능한 형태여야 합니다. "finger"에 대한 인수나 메일 주소 등으로 사용할 수 있는 것들처럼요.