SUBMIT, DELIVER, STATUS-REPORT용 온라인 PDU 디코더
PDU를 붙여 넣고 필드별로 읽으세요: 서비스 센터, 주소, 인코딩, 날짜, 연결과 디코딩된 텍스트. 필드가 잘못되면 디코더는 빈 화면 대신 필드 이름을 알려 줍니다.
브라우저에서 PDU 디코딩
필드에는 인코더가 만든 SMS-SUBMIT 프레임이 들어 있습니다. 어떤 프레임이든 붙여 넣고 ‘디코딩’을 누르면 아래에서 필드를 읽을 수 있습니다.
PDU 디코더
네트워크 불필요디코딩된 필드
텍스트, 날짜와 연결 참조는 프레임이 담은 그대로 표시합니다. 디코더는 입력을 절대 고쳐 쓰지 않습니다.
어떤 것도 서버로 보내지 않습니다. 페이지의 JavaScript가 프레임을 읽으므로 개인 메시지 보관함에서 뽑은 PDU도 이 기기에 남습니다.
텍스트 모드와 PDU 모드
같은 메시지도 기록된 모드에 따라 다르게 보입니다.
| 보이는 것 | 텍스트 모드 결과 | PDU 모드 결과 |
|---|---|---|
| 텍스트 | 읽을 수 있는 문자 | 16진수 옥텟; 텍스트는 패킹되거나 상위 바이트부터 인코딩됨 |
| 인코딩 | 모뎀이 고름 | 데이터 코딩 옥텟에 명시됨 |
| 긴 메시지 | 모뎀이 분할을 숨김 | UDH가 참조, 파트 번호와 총수를 표시 |
| 날짜 | 표시할 때 로컬 형식 | 시간대 옥텟이 붙은 서비스 센터 시각 |
| 전송 리포트 | 요약된 형태 | 두 날짜와 결과 옥텟이 있는 전체 상태 프레임 |
텍스트 모드는 메시지를 읽을 수 있는 형태로 보여 줍니다. PDU 모드는 네트워크가 보관하는 형태로 보여 줍니다. 무언가 잘못될 때 어느 필드가 틀렸는지 알려 주는 것은 후자입니다.
SMS-DELIVER 필드 구조
받은 메시지에는 수신자도 유효 기간도 없지만 날짜는 있습니다.
| 필드 | 옥텟 | 내용 |
|---|---|---|
| SCA | 1 + n | 메시지를 처리한 서비스 센터. 00은 프레임이 이를 생략함을 뜻함 |
| 첫 옥텟 | 1 | 메시지 타입, ‘다른 파트 있음’ 표시, 헤더 표시 |
| 발신자 | 2 + n | 출발 주소. 국제 번호는 91을 씁니다 |
| PID | 1 | 프로토콜 식별자 |
| DCS | 1 | 문자 집합, 클래스, 압축 비트 |
| SCTS | 7 | 서비스 센터 시각: 년, 월, 일, 시, 분, 초, 시간대 |
| UDL | 1 | GSM-7은 세프텟 수, UCS-2는 옥텟 수 |
| UD | n | 선택적 UDH와 텍스트 |
날짜는 Unix 값이 아니라 각 필드가 반 바이트씩 뒤집힌 십진수이고 마지막 옥텟이 UTC와의 차이를 15분 단위로 담습니다.
STATUS-REPORT 필드
상태 리포트는 사용자 데이터를 두 날짜와 결과 코드로 바꿉니다.
| 필드 | 옥텟 | 내용 |
|---|---|---|
| 첫 옥텟 | 1 | 메시지 타입 02와 설정된 경우 리포트 한정자 표시 |
| MR | 1 | 전송 시 장치가 돌려준 메시지 참조 |
| 수신자 | 2 + n | 메시지를 보낸 번호 |
| SCTS | 7 | 서비스 센터가 메시지를 받은 시각 |
| 전달 시각 | 7 | 서비스 센터가 전달한 시각, 같은 형식 |
| 상태 | 1 | 00–1F 전달됨, 20–3F 재시도 가능한 일시 오류, 40–5F 영구 오류, 60–7F 재시도 없는 일시 오류 |
상태 리포트에는 사용자 데이터가 없습니다. 프레임이 이 필드보다 길면 남은 옥텟은 경고로 보여 줄 뿐 디코딩하지 않습니다.
디코딩할 수 없는 예
오류 대부분은 망가진 메시지가 아니라 잘못 복사한 것입니다. 디코더는 읽지 못한 필드의 이름을 알려 줍니다.
| 입력 | 메시지 | 무엇이 문제인가 |
|---|---|---|
| 00110009812143 | 주소가 선언한 길이보다 짧습니다. | 수신자 길이는 9자리를 가리키는데 뒤에 옥텟 두 개만 옵니다. |
| 0011A | 16진수 길이가 홀수입니다(5 반 바이트). PDU는 완전한 바이트여야 합니다. | 복사 중 문자 하나가 빠져 마지막 바이트가 불완전합니다. |
| 004100098121436587F9000006070003010201 | UDH 길이 7이 사용자 데이터를 넘습니다. | 헤더 길이 옥텟이 프레임에 든 것보다 많은 바이트를 약속합니다. |
디코더는 서비스 센터 길이가 입력 끝을 넘는 프레임, 잘린 주소, 불완전한 날짜와 다른 메시지 타입인 SMS-COMMAND도 거부합니다. 8비트 인코딩은 지어낸 문자가 아니라 옥텟 수로 표시합니다. 모르는 확장 문자와 홀로 남은 이스케이프는 경고와 함께 버리고 메시지 전체를 잡음으로 만들지 않습니다.
이 세 입력은 인코더와 같은 회귀 테스트 파일에 들어 있습니다. 기대 오류는 부분 문자열로 저장되므로 디코더 문구를 바꿨다고 테스트가 실수로 통과하지 않습니다.
자동화가 필요하다면
이 페이지는 프레임 하나를 살펴보는 용도입니다. 메시지 흐름에는 SMS Deliverer를 쓰세요.
Windows 앱은 수신을 디코딩하고, 여러 파트 프레임을 다시 합치고, 발신자와 시각을 저장하며 전송 리포트를 원래 발송 옆에 보관합니다. 데스크톱 화면과 로컬 HTTP API가 같은 파서를 쓰므로 어디서 봐도 메시지가 같게 보입니다.
하드웨어는 GSM 모뎀 설명에서, 수신 기능은 Windows 소프트웨어 페이지에서, 시험용 프레임은 PDU 인코더에서 시작하세요.
지원하는 프레임
- SMS-SUBMIT (연결 파트 포함)
- 날짜와 발신자가 있는 SMS-DELIVER
- 두 날짜가 있는 SMS-STATUS-REPORT
- GSM-7, 확장 문자와 UCS-2
- 8비트 UDH, 16비트 참조와 목적지 포트
2026-11 확인. SMS-COMMAND는 의도적으로 거부합니다: 메시지 트래픽이 아닙니다.
구매자가 자주 묻는 질문
디코더가 서비스 센터가 없다고 하는 이유는?
앞의 00은 프레임에 서비스 센터 주소가 없고 장치나 모뎀이 SIM의 값을 쓴다는 뜻입니다. 나머지 프레임은 정상적으로 디코딩됩니다.
전송 리포트와 여러 파트 메시지도 읽을 수 있나요?
됩니다. SMS-STATUS-REPORT는 두 날짜와 상태 옥텟을 보여 줍니다. 여러 파트 메시지에서는 디코더가 UDH를 읽어 파트마다 참조, 파트 번호와 총수를 표시합니다.
메시지 일부가 이진 데이터로 보이는 이유는?
프레임의 데이터 코딩이 문자 대신 8비트 데이터를 선언하기 때문입니다. 디코더는 옥텟 수를 보여 주고 존재하지 않는 문자를 만들어 내지 않습니다.
디코더가 PDU를 어딘가로 보내나요?
아니요. 분석은 이 브라우저에서 이루어지고 오프라인에서도 동작하므로 번호와 개인 내용이 담긴 메시지에도 안전합니다.