SMS-SUBMIT 메시지용 온라인 PDU 인코더
메시지를 GSM 모뎀이 PDU 모드에서 기다리는 16진수 문자열로 바꿉니다. 인코더는 GSM-7 세프텟을 패킹하고 필요하면 UCS-2로 바꾸며 메시지가 여러 파트를 요구하면 UDH를 붙입니다.
SMS-SUBMIT PDU 만들기
폼은 예제와 함께 열립니다. 텍스트, 번호와 매개변수를 바꾸고 ‘인코딩’을 누르세요. 결과는 이 페이지의 JavaScript가 이 기기에서 만듭니다.
PDU 인코더
네트워크 불필요| 파트 | UDH | 이 파트의 텍스트 |
|---|
각 블록은 ----- PDU n/total ----- 행으로 시작합니다. PDU 모드에서는 블록마다 16진수 문자열을 따로 보내세요.
입력한 내용은 어디로도 전송되지 않습니다. 로컬 파일이나 사이트의 오프라인 사본에서도 동작합니다.
PDU 모드란 무엇인가
PDU 모드는 단순 문자열이 아니라 프로토콜 프레임 전체를 모뎀에 넘깁니다.
SMS는 텍스트만이 아닙니다. 메시지 주위에 서비스 센터 주소, 수신자, 인코딩 표시, 유효 기간과 길이가 있습니다. 텍스트 모드(AT+CMGF=1)에서는 모뎀이 이 필드를 채우고 읽을 수 있는 부분만 보여 줍니다. PDU 모드(AT+CMGF=0)에서는 프레임 전체를 16진수로 지정하므로 모든 필드가 우리 손에 있습니다.
프레임은 3GPP TS 23.040이, 문자 집합과 7비트 패킹은 TS 23.038이 정의합니다. 인코더는 둘을 따릅니다: 번호에서 숫자 아닌 문자를 지우고, BCD 쌍을 뒤집고, 주소 타입 옥텟을 설정하고, GSM-7 또는 UCS-2를 고르고, 세프텟을 순서대로 패킹하며 메시지가 나뉘면 헤더 표시를 붙입니다.
텍스트가 이상해 보이는 이유.7비트 문자는 8비트 옥텟에 채워지므로 한 세프텟이 두 바이트에 걸칠 수 있습니다. GSM-7 PDU는 문자당 한 바이트의 나열이 아니며 손으로 고치면 쉽게 깨집니다.
첫 옥텟이 중요한 이유.서비스 센터 뒤의 옥텟은 메시지 타입, 리포트 요청과 연결 표시를 담습니다. 인코더는 0x01에서 시작해 연결에는 0x40, 유효 기간에는 0x10, 리포트 요청에는 0x20을 더합니다.
SMS-SUBMIT 필드 구조
결과를 왼쪽부터 읽으면 필드가 이 순서로 나옵니다.
| 필드 | 옥텟 | 담는 내용 | 인코더가 쓰는 값 |
|---|---|---|---|
| SCA | 1 + n | 서비스 센터 주소와 주소 타입 옥텟 | 비우면 00; 아니면 길이 옥텟, 주소 타입과 BCD 숫자 |
| 첫 옥텟 | 1 | 메시지 타입, 유효 기간 형식, 리포트 요청, 헤더 표시 | SMS-SUBMIT은 01, 필요하면 40, 10, 20을 더함 |
| MR | 1 | 장치가 증가시키는 메시지 참조 | 연결 참조를 1옥텟으로 자른 값; 미설정이면 00 |
| 수신자 | 2 + n | 번호 길이, 주소 타입, BCD 숫자 | 국내 번호는 81, 입력이 +로 시작하면 91 |
| PID | 1 | 프로토콜 식별자 | 00, 일반 단문 메시지 |
| DCS | 1 | 메시지의 문자 집합과 클래스 | GSM-7 00, UCS-2 08, 플래시 SMS 10 또는 18 |
| VP | 0, 1, 7 | 유효 기간: 상대, 확장, 절대 | 0시간이면 생략; 아니면 범위에 따라 눈금이 커지는 상대 옥텟(5분, 30분, 1일, 1주) |
| UDL | 1 | 사용자 데이터 길이 | GSM-7은 세프텟 수(UDH 포함), UCS-2는 옥텟 수 |
| UD | n | 선택적 UDH와 패킹된 텍스트 | 정렬된 UDH 뒤 7비트 패킹, 또는 UCS-2를 상위 바이트부터 |
상대 유효 기간은 한 옥텟입니다: 12시간까지 5분 단위로 0–143, 24시간까지 30분 단위로 144–169, 30일까지 1일 단위로 170–196, 그 이상은 1주 단위로 197–255이며 모두 서비스 센터가 메시지를 받은 시점부터 셉니다. 도구는 0–8760시간(약 1년)을 받습니다.
GSM-7, UCS-2와 연결된 SMS
PDU 하나는 140 옥텟을 담습니다. 몇 글자가 들어가는지는 문자 집합과 UDH 유무에 달렸습니다.
| 인코딩 | PDU 하나 | 8비트 UDH | 16비트 UDH |
|---|---|---|---|
| GSM-7 | 160 세프텟 | 153 세프텟 | 152 세프텟 |
| UCS-2 | 70 단위 | 67 단위 | 66 단위 |
6바이트 UDH는 48비트를 차지하며 GSM-7에서 7 세프텟으로 반올림됩니다. 16비트 참조는 옥텟 하나, 즉 슬롯 하나를 더 씁니다. 그래서 한 파트의 한도가 160이 아니라 153 또는 152입니다.
GSM-7은 기본 GSM 문자 집합의 라틴 문자, 숫자와 기호를 담습니다. 다음 열 글자는 두 세프텟을 씁니다: €, ^, {, }, [, ], ~, |, 역슬래시와 폼 피드. 인코더는 각 앞에 이스케이프 1B를 쓰고 두 파트 사이에서 쌍을 자르지 않습니다. 두 표에 모두 없는 문자는 UCS-2를 강제합니다: 문자당 2옥텟, 한도 70.
디코딩 예시
이 결과는 페이지에 첨부된 회귀 테스트 파일에서 나왔습니다. 입력은 고정되어 있고 기대 16진수 문자열은 TS 23.038 / TS 23.040의 독립 구현으로 구했습니다.
| 입력 | 인코딩 | PDU |
|---|---|---|
| Hello SMSDeliverer.com! | GSM-7, 국내 번호, 서비스 센터 없음 | 000100098121436587F9000017C8329BFD064D9B5362999DB697E565B96BFC6E8700 |
| € | GSM-7, 확장 문자 | 000100098121436587F90000029B32 |
| 您好,世界! | UCS-2 | 000100098121436587F900080C60A8597DFF0C4E16754CFF01 |
테스트 파일은 assets/js/tests/pdu-vectors.json입니다. 이전 빌드에서 기록한 행도 들어 있으며 실패로 표시된 벡터와 결함 설명이 함께 있습니다. 테스트가 통과할 때까지 고치지 않습니다.
텍스트 모드 대신 PDU 모드가 필요한 때
텍스트 모드는 읽기 쉽습니다. PDU 모드는 실제로 보내는 내용을 통제하는 유일한 방법입니다.
긴 메시지
연결된 SMS는 UDH로 묶인 PDU의 연속입니다. 파트, 순서와 참조는 PDU 모드에서만 보입니다.
연동
게이트웨이, 시험대 또는 프레임을 AT+CMGS로 넘기는 큐를 만든다면 모뎀이 문자열을 해석한 결과가 아니라 정확한 옥텟이 필요합니다.
진단
읽을 수 없는 텍스트, 사라진 악센트와 깨진 분할은 대개 잘못된 DCS나 손상된 UDH입니다. 둘 다 여기서 보입니다.
두 모드는 같은 네트워크에 닿고 비용도 같습니다. 달라지는 것은 프레임을 만드는 위치입니다: 모뎀 안인가, 확인할 수 있는 프로그램인가. 문자 집합, 유효 기간이나 리포트 요청을 메시지에 넣어야 한다면 PDU 모드가 가장 짧은 길입니다. 텍스트 모드는 빠른 점검용으로 남고 이 사이트의 디코더는 받은 프레임을 그대로 읽습니다.
자동화가 필요하다면
이 페이지는 조회용 도구입니다. SMS Deliverer는 큐에 있는 모든 메시지에 같은 처리를 합니다.
Windows 앱은 긴 메시지를 나누고, GSM-7 또는 UCS-2를 고르고, UDH 참조를 설정하고, 실패한 파트를 다시 보내며 전송 리포트를 연락처 옆에 저장합니다. 같은 인코딩 경로가 메시지 하나에도 수천 개에도 적용되고 발송은 내 모뎀의 SIM이 합니다.
GSM 모뎀 설명은 하드웨어를, Windows 소프트웨어 페이지는 전송과 리포트를 다룹니다. PDU 디코더는 모뎀이나 휴대폰에서 뽑은 프레임을 읽습니다.
인코더 결과에 담기는 것
- GSM-7 패킹과 확장 문자 쌍
- 서로게이트 쌍을 보존한 UCS-2
- 8비트 및 16비트 연결 참조
- 국내 및 국제 형식 수신자
- 상대 유효 기간과 플래시 클래스
2026-11 확인. 무료 평가판으로 전체 전송 경로를 시험할 수 있습니다. 이 도구는 라이선스도 설치도 필요 없습니다.
구매자가 자주 묻는 질문
인코더는 무료인가요? 계정이 필요한가요?
무료이며 계정이 필요 없습니다. 이 페이지는 HTML과 JavaScript로만 되어 있고 사이트의 오프라인 사본에서도 동작합니다.
PDU가 00으로 시작하는 이유는?
첫 옥텟은 서비스 센터 주소의 길이입니다. 00은 PDU에 서비스 센터가 없고 장치나 모뎀이 SIM에 적힌 값을 쓴다는 뜻입니다. 프레임에 포함하려면 서비스 센터 번호를 입력하세요.
긴 메시지가 여러 PDU를 만드는 이유는?
PDU 하나는 140 옥텟을 담습니다. GSM-7은 160 세프텟, 6바이트 UDH가 있으면 153, UCS-2는 70 단위, 같은 헤더가 있으면 67입니다. 텍스트는 문자 경계에서 나뉘고 파트마다 순서 번호가 붙습니다.
결과를 AT+CMGS로 보낼 수 있나요?
됩니다. AT+CMGF=0으로 모뎀을 PDU 모드로 두고 서비스 센터 필드 뒤에 프레임의 옥텟 수를 넘기세요. 파트를 순서대로 하나씩 보내면 장치가 UDH의 참조와 순서 번호로 다시 합칩니다.