네트스트링
Netstring컴퓨터 프로그래밍에서 netstring은 선언적 표기법을 사용하여 문자열의 크기를 표시하는 바이트 문자열의 포맷 방법이다.[1][2]
넷스트링은 뒤에 오는 데이터의 바이트 길이를 저장하여 구분자 또는 종단자(예: null 문자)로 해석될 수 있는 값에 민감할 수 있는 프로그램 간에 텍스트와 바이트 데이터를 모호하게 전달하기 쉽게 한다.
형식은 ASCII 숫자를 사용하여 작성한 문자열의 길이에 이어 콜론, 바이트 데이터, 쉼표로 구성된다.이 맥락에서 "길이"는 "8비트 단위 수"를 의미하기 때문에, 예를 들어 문자열이 UTF-8을 사용하여 인코딩된 경우, 문자열에 존재하는 텍스트 문자의 수와 같을 수도 있고 아닐 수도 있다.
예를 들어, "Hello world!"라는 텍스트는 다음과 같이 부호화한다.
<31 32 3a 68 65 6c 6c 6f 20 77 6f 72 6c 64 21 2c>
즉
12:헬로 월드!,
그리고 빈 문자열은 다음과 같다.
<30 3a 2c>
즉
0:,
쉼표는 인간이 인접 기록으로 쓰이는 넷스트링을 조금 더 간단하게 읽을 수 있게 해주며, 정확한 파싱에 대한 약한 검증을 제공한다.쉼표가 없으면 이 형식은 Bencode가 문자열을 인코딩하는 방식을 반영한다는 점에 유의하십시오.
그 길이는 영점 없이 쓰여 있다.빈 문자열은 0으로 시작하는 유일한 그물 문자열이다.어떤 바이트 문자열에도 정확히 하나의 합법적인 넷스트링 인코딩이 있다.
포맷은 생성과 구문 분석이 용이하기 때문에 다른 프로그래밍 언어로 작성된 프로그램에 의해 지원이 용이하다.실제로, 그물은 종종 bytestring 또는 bytestring 리스트의 교환을 단순화하기 위해 사용된다.예를 들어 SCGI(Simple Common Gateway Interface) 및 QMQP(Quick Mail Queuing Protocol)에서 이 인터페이스의 사용을 참조하십시오.
넷스트링은 임의의 데이터를 구분된 형식으로 포함시키려 할 때 발생하는 합병증을 방지한다.예를 들어, XML은 특정 바이트 값을 포함하지 않을 수 있고 탈출과 구분의 비종교적인 조합을 필요로 하는 반면, 다중 아트 MIME 메시지를 생성하는 것은 데이터의 내용과 충돌하지 않아야 하는 구분 기호를 선택하는 것을 포함한다.
넷스트링은 재귀적으로 저장할 수 있다.문자열의 순서를 인코딩한 결과는 단일 문자열이다.위의 "Hello world!" 예를 다시 쓰면서, 그 자체로 단일 네트 스트링으로 인코딩된 두 개의 네트 스트링의 시퀀스가 되는 것은 다음과 같은 것을 제공한다.
17:5:안녕,6:세상!,,
포함된 문자열("5:hello, 6:world!")은 문자열이기도 하고 일련의 넷스트링이기도 하기 때문에 이러한 중첩된 넷스트링을 구문 분석하는 것은 오리 타이핑의 한 예다.그것의 유효 유형은 넷스트링 명세서에 의해 요구되는 명시적 형식 선언이 아니라 신청서가 그것을 해석하는 방법에 의해 결정된다.일반적으로 넷스트링을 기대하는 프로그램이 그 내용을 해석하기 위해 선택할 수 있는 세 가지 방법이 있다.
- 자동 처리 기능이 없는 사람이 읽을 수 있는 텍스트로 사용
- 미리 짜여진 고정 데이터 직렬화 형식(예: C 또는 C++ 구조체의 이진 내용)의 캡슐화된 데이터로서
- 캡슐화된 메타데이터 및 데이터로서, 태그가 지정된 결합 규약을 사용하여 중첩된 네트스트링의 유형을 설명함으로써, 자체 설명 계층적 데이터 직렬화 형식을 확립한다("태그된 네트스트링" 및 Bencode는 유사한 자기 설명 계층적[3][4][5][6][7] 형식을 지원하는 넷스트링의 확장으로 볼 수 있다.)
넷스트링은 저장한 데이터의 내용에 제한을 두지 않으므로, 포함하는 형식의 구분에 간섭할 가능성 없이 대부분의 구분된 형식으로 넷스트링을 삽입할 수 없다.
네트워크 프로그래밍의 맥락에서, 수신 프로그램은 정확히 충분한 메모리를 할당하고, 더 많은 데이터를 수용하기 위해 재할당의 필요성을 피할 수 있으며, 크기 제한을 초과하는 데이터를 사전에 거부할 수 있기 때문에, 다음과 같은 데이터의 크기를 알려주는 것이 잠재적으로 유용하다.
참고 항목
참고 및 참조
- ^ D. J. 번스타인이 작성한 문서에 정의되어 있다.
- ^ 예: 참조스티브 홀든, 데이비드 M의 파이톤 웹 프로그래밍 비즐리 출판사 샘스 출판사, 2002 ISBN0-7357-1090-2, 978-0-7357-1090-0 691페이지, 202페이지.
- ^ 카올란 맥마흔."벤코딩"
- ^ "TNetstrings Specification". Archived from the original on 2014-02-10.
- ^ 땡땡이-rb
- ^ "tnetstring: 태그가 지정된 netstring 사양"
- ^ "tnetstring: 입력된 netstring을 사용한 데이터 일련화"