2009-04-28 3 views
0

GSM 네트워크에서 내부적으로 사용되는 약간의 프로토콜에 대한 기술 문서를 작성 중입니다. 이 프로토콜은 연속적인 바이트 스트림에서 패턴 [id1] + [byte [] data1], [id2] + [byte [] data2] 등을 사용합니다.전송 프로토콜의 사용되지 않는 필드 값

여러 가지 이유로 (향후 확장 성과 이전 버전과의 호환성) 일부 필드는 사용되지 않습니다. 이 필드의 값은 누가 프로토콜을 구현할 것인지 선택합니다 (그리고 현재 기본값은 프로토콜을 구현하는 데 사용 된 언어/프레임 워크, 즉 바이트 배열 요소의 기본값 임).

이제 질문입니다. 사용되지 않는 필드에 기본값을 부과하는 것이 어떤면에서 유용할까요?

답변

0

일반적으로 "예"라고 말합니다.. 기본 및 채우기 값을 지정하면 기존 채우기 값을 기반으로 향후 프로토콜을 변경할 수 있습니다. 현재 어떤 바이트가 와이어에 있는지에 의존 할 수 없다면, 미래에 해당 바이트에 구조를 적용하는 좋은 방법이 없습니다. 말할 필요도없이 일반적으로 "구현 종속적 인 값"을 바이너리 사양으로 유출하는 것은 나쁜 생각입니다. 이것이 "on the wire"구조에서 8 바이트 패딩과 인텔 주문 IP 주소로 끝난 방법입니다. 다음과 같이

0

이점은 필드가 사용되는 프로토콜의 향후 버전에 있습니다. 디폴트의 ​​「나쁜」값은, 프로토콜의 구버젼이 사용되고있는 것을 리시버가 판단하게합니다.

0

일반적으로 사용되지 않는 필드의 값을 지정하는 것이 좋습니다 : - 미래의 어느 지점에서, 수신기 필드

에게 그 방법을 무시해야 함 - 보낸 사람이 제로 에 필드를 설정해야합니다 새로운 기능을 사용하기 위해 필드를 사용할 수있는 시간. 이렇게하면 이전 버전과의 호환성을 위해 수행해야 할 작업은 필드의 값 0을 정의하여 "새로운 기능을 도입하기 이전의 이전 동작"을 의미합니다.

(사실, 한쪽이 상대방이 기능을 지원하는지 여부, 즉 상대방이 필드의 0이 아닌 값을 이해할 수 있는지 여부를 알아낼 수있는 기능 발표를 소개합니다.