역주: 이 문서는 규범 키워드 자체를 정의하는 문서다. 키워드의 이름을 가리킬 때는 원어(MUST, SHOULD 등)를 그대로 두고, 이 문서가 실제로 요구 사항을 말하는 문장에서는 이 저장소의 규칙대로
반드시 ~해야 한다(MUST)처럼 병기한다. 이 문서는 RFC 8174보다 먼저 나왔으므로, 소문자 must·should가 규범 키워드인지 여부는 RFC 8174에서 정리되었다.
이 문서는 인터넷 커뮤니티를 위한 인터넷 현행 모범 관행(Best Current Practice)을 규정하며, 토론과 개선 제안을 요청한다. 이 메모의 배포에는 제한이 없다.
많은 표준화 트랙(standards track) 문서에서는 명세의 요구 사항을 나타내기 위해 여러 단어를 사용한다. 이 단어들은 흔히 대문자로 쓴다. 이 문서는 IETF 문서에서 이 단어들을 어떻게 해석해야 하는지 정의한다. 이 지침을 따르는 저자는 문서 앞부분에 다음 문구를 넣는 것이 좋다.
이 문서의 키워드 “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, “OPTIONAL”은 RFC 2119에 설명된 대로 해석한다.
역주: 정오표 499에 따라 위 문구의 키워드 목록에는 “NOT RECOMMENDED”도 들어가야 한다. 원문에서는 빠져 있다.
이 단어들의 강도는 그 단어가 쓰인 문서 자체의 요구 수준에 따라 달라진다는 점에 유의한다.
이 단어나 “REQUIRED”, “SHALL”이라는 용어는 해당 정의가 명세의 절대적 요구 사항이라는 뜻이다.
이 구절이나 “SHALL NOT”이라는 구절은 해당 정의가 명세의 절대적 금지 사항이라는 뜻이다.
이 단어나 형용사 “RECOMMENDED”는 특정 상황에서는 어떤 항목을 따르지 않을 타당한 이유가 있을 수 있지만, 다른 방식을 택하기 전에 그 영향을 충분히 이해하고 신중하게 따져 보아야 한다는 뜻이다.
이 구절이나 “NOT RECOMMENDED”라는 구절은 특정 상황에서는 해당 동작이 허용되거나 오히려 유용할 타당한 이유가 있을 수 있지만, 이 표시가 붙은 동작을 구현하기 전에 그 영향을 충분히 이해하고 해당 경우를 신중하게 따져 보아야 한다는 뜻이다.
이 단어나 형용사 “OPTIONAL”은 해당 항목이 진정한 선택 사항이라는 뜻이다. 어떤 공급자는 특정 시장에서 필요하거나 제품을 개선한다고 판단해 그 항목을 포함하고, 다른 공급자는 같은 항목을 생략할 수 있다. 특정 옵션을 포함하지 않은 구현은 그 옵션을 포함한 다른 구현과, 기능이 줄어들 수는 있더라도 반드시 상호 운용할 수 있도록 준비되어 있어야 한다(MUST). 같은 맥락에서, 특정 옵션을 포함한 구현은 그 옵션을 포함하지 않은 다른 구현과 반드시 상호 운용할 수 있도록 준비되어 있어야 한다(MUST). 물론 그 옵션이 제공하는 기능 자체는 예외다.
이 메모에서 정의한 유형의 명령형 키워드는 신중하고 절제해서 사용해야 한다. 특히 이 키워드는 상호 운용에 실제로 필요한 경우나, 해를 끼칠 가능성이 있는 동작을 제한하는 경우(예: 재전송 제한)에만 반드시 사용해야 한다(MUST). 예를 들어, 상호 운용에 필요하지 않은 특정 방법을 구현자에게 강요하는 데 이 키워드를 사용해서는 안 된다.
역주: 이 절의 첫 문장과 마지막 문장에 나오는 소문자 must, must not은 규범 키워드가 아니므로 일반 서술로 옮겼다.
이 용어들은 보안에 영향을 미치는 동작을 규정할 때 자주 쓰인다. MUST나 SHOULD를 구현하지 않거나, 명세가 MUST NOT 또는 SHOULD NOT이라고 한 일을 했을 때 보안에 미치는 영향은 매우 미묘할 수 있다. 대부분의 구현자는 명세를 만들어 낸 경험과 논의를 함께하지 못했으므로, 문서 저자는 권고 사항이나 요구 사항을 따르지 않았을 때의 보안상 영향을 시간을 들여 자세히 설명하는 것이 좋다.
이 용어들의 정의는 여러 RFC에서 가져온 정의를 합친 것이다. 또한 Robert Ullmann, Thomas Narten, Neal McBurnett, Robert Elz를 비롯한 여러 사람의 제안을 반영했다.
Scott Bradner
Harvard University
1350 Mass. Ave.
Cambridge, MA 02138
phone - +1 617 495 3864
email - sob@harvard.edu
역주: 저자 주소는 1997년 발행 당시의 정보를 원문 그대로 옮긴 것이다.
김마리 (Mariel Kim)
Email: marikim.code@gmail.com
GitHub: https://github.com/marik0de