요약
- 넷뉴스
newgroup제어 메시지는 서버에 그룹을 생성하거나 기존 그룹의 관리 상태나 설명을 변경하도록 요청했다. 그것은 이식 가능한 선언이었지, 전역 레지스트리에 대한 쓰기가 아니었다. - 모든 에이전트는 로컬 권한 부여 정책에 따라 그 요청을 인증하고 거부할 수 있었다. 따라서 동일한 제어 기사가 서버마다 다른 그룹 인벤토리를 만들어 낼 수 있었다.
- 알 수 없는 그룹을 지목한 일반 기사는 그 그룹을 생성할 수 없었다. NNTP의
NEWGROUPS명령조차 보편적 존재 여부가 아니라 서버 로컬 이력을 보고했다.
하나의 선언, 두 개의 인벤토리
승인된 동일한 제어 기사가 두 개의 서빙 에이전트에 도착하는 상황을 상상해 보자. 그 기사는 관리(모더레이션) 그룹을 요청하고, 설명을 제공하며, 해당 계층의 명명 규칙을 따른다. 첫 번째 서버는 발행자의 권한을 인정하고 로컬 그룹을 생성한다. 두 번째 서버는 자체적인 방식으로 발행자를 검증할 수 없어 그 요청을 검토 대기열에 넣거나 거부한다.
나중에 일반 기사 하나가 제안된 그룹을 지목한다. 첫 번째 서버는 그 기사를 새 그룹에 배치할 수 있다. 두 번째 서버는 그 기사를 구실로 누락된 네임스페이스 항목을 생성할 수 없다. 두 서버는 같은 선언을 받았다. 그러나 인벤토리를 바꾼 곳은 한 곳뿐이다.
이런 차이가 이 설계의 핵심을 보여 준다.newgroup은 기사와 동일한 분산 매체를 통해 관리 의도를 전달했지만, 전송된 명령을 강제적인 전역 상태로 만들지는 않았다.
초기 명령은 이미 로컬 처리를 위한 여지를 남겼다
RFC 1036은Control헤더의 내용을 통해 제어 메시지를 정의했다. 첫 단어가 명령 이름을 지정했고, 뒤따르는 단어들이 매개변수를 제공했다. 또한 두 가지 운영 모드를 인정했다. 구현과 관리자는 제어 메시지를 자동으로 실행하거나 수동 처리를 위해 대기열에 넣을 수 있었다.
그룹 생성의 경우 명령은newgroup뒤에 그룹 이름과 선택적moderated플래그가 붙는 형태였다. 본문은 그룹의 의도된 용도를 설명해야 했다. 플래그가 있으면 그룹은 기본값인 비관리 상태가 아니라 관리 상태로 생성되어야 했다.Approved필드가 없으면 그 요청은 무시되어야 했다.
문구는 “새 뉴스그룹을 생성한다”고 직설적으로 들리는데, 이는 수신 시스템에서 요청된 행동을 설명하기 때문이다. 그러나 자동 또는 수동 처리를 허용하는 주변 규정은 이미 실행의 위치를 관리자의 기계에 두고 있었다. 변경이 모든 호스트를 동시에 바꾸도록 강제하는 단일 카탈로그는 존재하지 않았다.
제어는 통상적 전달을 넘어서는 행동을 뜻했다
RFC 5536은 이후 기사 형식의 경계를 더 명확히 했다.Control필드는 기사를 제어 메시지로 표시하고, 통상적인 저장이나 중계에 더해 원하는 행동을 지정한다. 동사는 행동을 나타내며, 인수와 경우에 따라 본문이 세부 사항을 제공한다.
이 구분은 중요하다. 제어 기사는 일반 기사처럼 중계되면서도 에이전트에게 그것을 표시하는 것 이상의 행동을 요청할 수 있다. 따라서 전송 성공은 실행 성공이 아니다. 서버는 요청을 증거로 보유하면서도 그 요청이 지목한 그룹을 채택하지 않았을 수 있다.
이 형식은 편의적인 모호함도 막는다.Control이 있는 기사는 동시에Supersedes를 가질 수 없다. 그룹 생성과 선행 기사 철회는 각각 다른 권한 부여 결과를 지닌 별개의 행동으로 남는다.
인증은 전역 권한 앞에서 멈췄다
RFC 5537은 신뢰 경계를 명시적으로 만들었다. 제어 메시지는 정상적인 기사 처리 이상의 행동을 유발할 수 있어 남용의 매력적인 수단이 된다. 이 표준이 작성될 당시에는 비표준 메커니즘이 사용되고 있었지만, 발신자를 인증하거나 주장된 발신자가 내용을 생성했음을 검증하는 표준화된 방법은 없었다.
에이전트는 행동하기 전에 인증할 것을 권고받았지만, 그 수단은 로컬에 남았다. 외부 프로토콜, 사람의 검토, 다른 방식 또는 미래의 메커니즘 등이다. 각 에이전트는 자체 권한 부여 정책을 유지해야 했다. 가장 결정적으로, 어떤 넷뉴스 에이전트도 제어 메시지에 따라 행동할 의무를 지지 않았다. 명세는 요청이 무엇을 의미하는지 정의할 뿐, 원격 관리자의 상태에 대한 권력을 부여하지는 않는다.
그래서Approved와 권한을 동일시할 수 없다. 그룹 제어 메시지는Approved를 반드시 포함해야 하며, 그것이 없는 요청은 수용되어서는 안 된다. 그러나 그 헤더는 승인을 표시할 뿐, 승인한 주체가 특정 서버의 계층을 통제할 자격이 있음을 그 자체로 증명하지는 않는다.
그룹 요청은 이름 이상을 담았다
RFC 5537은newgroup,rmgroup,checkgroups를 그룹 제어 메시지로 분류한다. 각각이 뉴스 서버가 알고 있는 그룹에 대한 갱신을 요청하기 때문이다. 하나를 수용하기 전에 에이전트는 영향을 받는 이름이 넷뉴스 명명 제한을 충족하는지 확인해야 한다.
newgroup은 누락된 그룹의 생성이나 기존 그룹의 관리 상태 또는 설명 변경을 요청할 수 있다. 서버가 요청을 수용하면moderated플래그의 존재가 관리 상태를 결정해야 한다. 익숙하지 않은 확장 플래그가 있으면 서버는 추측하지 말고 그 메시지를 무시해야 한다.
본문에는 그룹을 설명하는application/news-groupinfo엔터티가 포함될 수 있다. 본문과 명령이 모두 관리 상태를 표현하면 서로 일치해야 한다. 설명을 저장하는 서버는 유효한 요청을 수용할 때, 그룹이 이미 존재하고 다른 속성이 바뀌지 않더라도 해당 로컬 메타데이터를 갱신해야 한다.
따라서 요청된 대상은 단순한 문자열이 아니었다. 이름, 관리 모드, 설명적 맥락을 함께 묶은 것이었다. 그럼에도 각 요소는 로컬 채택을 통해서만 작동하게 되었다.
일반 트래픽으로는 생성을 밀반입할 수 없었다
같은 구조가 암묵적 네임스페이스 생성을 막는다. RFC 5537에 따르면 서빙 에이전트는 일반 기사의Newsgroups필드에 인식되지 않는 이름이 나타났다는 이유만으로 새 그룹을 생성해서는 안 된다. 그룹은 보통 제어 메시지를 통해 생성된다.
그 규칙이 없다면 어떤 게시자든 목적지 오타, 지어낸 레이블, 적대적인 네임스페이스 주장을 영구적인 서버 구성으로 바꿀 수 있었다. 일반 게시와 그룹 관리를 분리함으로써 기사 작성이 네임스페이스 권한이 되는 것을 막았다.
이는 유용한 진단 수단도 제공한다. 알 수 없는 그룹으로 보낸 기사의 거부는newgroup요청이 전혀 전송되지 않았다는 증거가 아니다. 그것은 조회된 서버가 그 기사를 처리할 당시 사용 가능한 로컬 항목을 채택하지 않았음을 증명할 뿐이다.
검색 명령은 한 서버의 이력만 보고했다
RFC 3977은 리더 명령NEWGROUPS를 정의하며, 이는 조회된 서버에서 주어진 날짜와 시간 이후 생성된 그룹을 반환한다. 대문자 표기가 제어 동사와 비슷해 보이지만 작동 방식은 다르다. 하나는 네임스페이스 변경을 요청하고, 다른 하나는 서버에 기록된 이력을 묻는다.
이 보고에도 신중한 한계가 있다. 결과에는 서버에서 더 이상 사용할 수 없는 그룹이 포함될 수 있고, 생성 날짜를 알 수 없는 그룹이 빠질 수 있으며, 정당하게 비어 있을 수도 있다. 클라이언트는 그 응답을 어떤 그룹이 모든 곳에 존재한다거나, 로컬에서 여전히 읽을 수 있다거나, 다른 곳에 존재한 적이 없다는 증거로 바꿀 수 없다.
제어 요청과 검색 응답의 구분은 흔한 범주 오류를 막는다. 선언, 채택된 로컬 기록, 현재 사용 가능한 그룹, 서버의 날짜별 인벤토리 보고는 서로 관련된 사실이지 서로 바꿔 쓸 수 있는 상태가 아니다.
등록은 도구를 안정시켰을 뿐, 인벤토리를 안정시킨 것은 아니다
IANA 메시지 헤더 레지스트리는Control을 영구적인 넷뉴스 필드로 기록하고 그 표준 참조를 가리킨다. 그 등록은 구현들 사이에서 이 도구를 인식 가능하게 유지한다.
그러나 모든 뉴스그룹을 나열하지도, 계층 관리자를 임명하지도, 발행자를 인증하지도, 어느 서버가 요청을 수용했는지 기록하지도 않는다. 레지스트리가 관장하는 것은 제어 표면의 이름이지, 그 모든 사용이 아니다.
허구의 만장일치 없는 분산 네이밍
newgroup은 중앙 데이터베이스 없이 관리 의도를 유포할 방법을 탈중앙화 네트워크에 제공했다. 그 성공은 부분적일 수 있고, 지연되거나 로컬 정책에 의해 뒤집힐 수도 있었다. 한 서버는 그룹을 생성하고, 다른 서버는 사람의 확인을 기다리며, 세 번째 서버는 그 계층 전체를 거부할 수 있었다.
그 결과가 네임스페이스의 혼돈과 같았던 것은 아니다. 명령은 무엇이 요청되는지를 표준화했고, 명명 규칙은 대상을 제약했으며,Approved는 그룹 제어 상태를 표시했고, 인증과 권한 부여는 특정 관리 주체가 행동할지 결정했다.
역사적 교훈은 명확하다. 이식 가능한 선언이 독립적인 시스템을 조정할 수 있는 것은 관찰자들이 그 선언을 각 시스템이 채택한 상태와 분리해 둘 때뿐이다.newgroup은 어떤 이름을 통제 가능하게 만들 수 있었다. 그러나 모든 서버가 그 그룹이 존재한다는 데 동의하게 만들 수는 없었다.
출처
회원 브리핑
프로필 심층 컨텍스트
올바른 멤버십 등급으로 로그인하면 전체 브리핑과 출처 노트를 볼 수 있습니다.
Strategic Circle 전용
Strategic Circle
모든 독자에게 공개됩니다. 가입 후 로그인하면 프로필 브리핑를 열람할 수 있습니다.
Strategic Circle 가입하기Leadership Alliance 전용
Leadership Alliance
자격을 갖춘 IP 자산 소유자 및 운영진을 위한 콘텐츠입니다. 로그인하면 Leadership Alliance 브리핑을 열람할 수 있습니다.
Leadership Alliance 가입하기





