Protocol Buffers 도구
Protocol Buffers 메시지 인코딩, 디코딩 및 검증
Proto 스키마
스키마 정보
입력
스키마를 파싱하고 메시지 유형을 선택하여 폼 필드를 생성하세요
출력
Raw 필드
| 필드 번호 | 와이어 유형 | 값 |
|---|
Protocol Buffers 문서
Protocol Buffers란?
Protocol Buffers(Protobuf)는 Google에서 개발한 언어 중립적, 플랫폼 중립적인 구조화된 데이터 직렬화 메커니즘입니다. 데이터 직렬화에 있어 XML 및 JSON보다 작고, 빠르며, 간단합니다.
주요 기능
- 언어 및 플랫폼 중립적
- XML/JSON보다 작고 빠름
- 스키마 정의를 통한 강력한 타이핑
- 하위 및 상위 호환성
- 자동 코드 생성
- 효율적인 바이너리 인코딩
이 도구 사용 방법
- 스키마 에디터에 .proto 스키마 정의를 입력하세요
- 스키마 파싱을 클릭하여 스키마를 검증하고 파싱하세요
- 작업할 메시지 유형을 선택하세요
- 인코딩: JSON 데이터를 입력하고 인코딩을 클릭하세요
- 디코딩: 바이너리 데이터를 입력하고 디코딩을 클릭하세요
- Raw 디코딩을 사용하여 스키마 없이 바이너리 데이터 분석
도구 기능
인코딩
JSON 데이터를 Protocol Buffers 바이너리 형식으로 변환합니다. 유형 검증과 함께 쉬운 데이터 입력을 위한 폼 기반 입력을 지원합니다.
디코딩
Protocol Buffers 바이너리 데이터를 읽을 수 있는 JSON 형식으로 다시 변환합니다. Base64, Hex 및 C 스타일 hex 입력 형식을 지원합니다.
Raw 디코딩
스키마 없이 protobuf 바이너리 데이터를 분석합니다. 디버깅, 리버스 엔지니어링 또는 알 수 없는 메시지 분석에 유용합니다.
폼 입력
스키마를 기반으로 입력 폼을 생성하는 사용자 친화적인 폼 인터페이스입니다. 중첩 메시지, 열거형 및 repeated 필드를 지원합니다.
Proto 구문 참조
Protocol Buffers는 메시지 유형 정의를 위한 간단한 구문을 사용합니다:
syntax = "proto3";
message Person {
string name = 1;
int32 id = 2;
string email = 3;
enum PhoneType {
MOBILE = 0;
HOME = 1;
WORK = 2;
}
message PhoneNumber {
string number = 1;
PhoneType type = 2;
}
repeated PhoneNumber phones = 4;
}
syntax: protobuf 버전 지정 (proto2 또는 proto3)message: 필드가 있는 메시지 유형 정의field: 각 필드는 유형, 이름 및 고유 번호를 가짐enum: 열거형 유형 정의repeated: 필드를 repeated로 표시 (배열/리스트)optional: 필드를 optional로 표시 (proto3)
스칼라 유형
Protocol Buffers는 다양한 스칼라 유형을 지원합니다:
| 유형 | 설명 | 기본값 |
|---|---|---|
| int32, int64 | 부호 있는 정수 (가변 길이 인코딩) | 0 |
| uint32, uint64 | 부호 없는 정수 | 0 |
| sint32, sint64 | ZigZag 인코딩을 사용하는 부호 있는 정수 (음수에 효율적) | 0 |
| fixed32, fixed64 | 고정 너비 부호 없는 정수 (4 또는 8 바이트) | 0 |
| sfixed32, sfixed64 | 고정 너비 부호 있는 정수 (4 또는 8 바이트) | 0 |
| float, double | 부동 소수점 숫자 (32 또는 64비트) | 0.0 |
| bool | 불리언 값 (true/false) | false |
| string | UTF-8 인코딩된 텍스트 문자열 | "" |
| bytes | 임의의 바이너리 데이터 | empty |
와이어 유형
Protobuf는 와이어 유형을 사용하여 바이너리 데이터에서 값을 읽는 방법을 결정합니다:
| 와이어 유형 | 의미 | 사용처 |
|---|---|---|
| 0 | Varint | int32, int64, uint32, uint64, sint32, sint64, bool, enum |
| 1 | 64-bit | fixed64, sfixed64, double |
| 2 | Length-delimited | string, bytes, embedded messages, packed repeated |
| 5 | 32-bit | fixed32, sfixed32, float |
모범 사례
- 새 프로젝트에는 proto3 구문을 사용하세요 - 더 간단하고 광범위하게 지원됩니다
- 필드 번호를 안정적으로 유지하세요 - 기존 필드의 번호를 재사용하거나 변경하지 마세요
- 데이터를 명확하게 설명하는 의미 있는 필드 이름을 사용하세요
- 자주 사용되는 필드에는 필드 번호 1-15를 사용하세요 (1바이트 사용)
- 값의 배열/리스트에는 'repeated' 키워드를 사용하세요
- 가능한 값의 고정 세트가 있는 필드에는 enum을 정의하세요
자주 묻는 질문
Protocol Buffers (Protobuf)란 무엇입니까?
Protocol Buffers는 구조화된 데이터를 직렬화하기 위한 언어 중립적이고 플랫폼 중립적인 확장 가능한 메커니즘입니다. JSON과 유사하지만 더 작고 빠르며 기본 언어 바인딩을 생성합니다. gRPC 마이크로서비스에서 널리 사용됩니다.
이 온라인 Protobuf 도구는 어떻게 사용합니까?
먼저 `.proto` 스키마 정의를 에디터에 붙여넣습니다(또는 샘플 로드). '스키마 파싱/구문 분석'을 클릭하고 메시지 유형을 선택합니다. 그런 다음 '인코딩'(JSON → 바이너리) 모드와 '디코딩'(바이너리 → JSON) 모드 간을 전환하여 데이터를 처리할 수 있습니다.
'Raw 디코딩'(Raw Decode)이란 무엇입니까?
Raw 디코딩을 사용하면 `.proto` 파일이 없어도 바이너리 Protobuf 메시지를 검사할 수 있습니다. 바이너리 구조를 파싱하고 필드 번호, Wire Type 및 값을 표시하므로 알 수 없는 패킷의 디버깅이나 리버스 엔지니어링에 매우 유용합니다.
데이터 처리는 안전합니까?
네. 이 도구는 JavaScript (protobuf.js)를 사용하여 브라우저에서 100% 실행됩니다. 스키마, JSON 데이터 및 바이너리 데이터는 서버로 전송되지 않으므로 민감한 정보가 안전하게 보호됩니다.
일반적인 사용 사례
- 마이크로서비스의 서비스 간 통신 (gRPC)
- 데이터 저장 및 캠싱
- 구성 파일
- 네트워크 프로토콜 및 API
참조
관련 도구
JSON 포맷터
가독성 및 디버깅 향상을 위해 JSON 데이터를 포맷하고 검증합니다
스키마를 SQL DDL 생성기로
MySQL, PostgreSQL 지원 및 자동 데이터 유형 추론을 통해 CSV/JSON 데이터를 SQL DDL CREATE TABLE 문으로 변환합니다
JSON YAML 변환기
사용자 정의 들여쓰기 및 플로우/블록 스타일 지원을 통해 JSON 및 YAML 형식 간 변환
Base64 인코더/디코더
텍스트 및 파일 변환을 지원하여 Base64 문자열을 빠르게 인코딩 및 디코딩합니다
XML 포맷터
구문 강조 표시를 사용하여 XML 데이터를 포맷하고 검증합니다
진법 변환기
2진수, 8진수, 10진수, 16진수 간 변환, 2-36 사용자 정의 진법 지원