Fact-checked by Grok 2 weeks ago

User Data Header

The User Data Header (UDH) is an optional binary structure within the TP-User-Data (TP-UD) field of Transfer Protocol Data Units (TPDUs), such as SMS-DELIVER and SMS-SUBMIT, as specified in TS 23.040. It is indicated by setting the TP-User-Data-Header-Indicator (TP-UDHI) bit in the TPDU and precedes the actual user data to provide control information and metadata for processing the message. The UDH enables enhanced functionalities beyond basic text delivery, including message segmentation and reassembly, without forming part of the visible message content. The structure of the UDH is defined by a User Data Header Length (UDHL) octet, which specifies the total length of the header in octets (excluding the UDHL itself), followed by one or more Information Elements (IEs) that can appear in any order. Each IE comprises an IE Identifier (IEI) octet to denote its type, an IE Data Length (IEDL) octet indicating the length of the associated data, and the variable-length IE Data (IED) containing the specific information. The overall length of the TP-UD field, including the UDH and user data, is adjusted based on the (e.g., 7-bit, 8-bit, or UCS2 encoding), ensuring compatibility with , , , and networks. Key uses of the UDH include facilitating concatenated short messages by linking parts via reference numbers and sequence indicators, allowing a single long message (up to approximately 1,530 characters) to be split and reassembled. It also supports application port addressing to route messages directly to specific ports on the recipient device, enabling interactions with applications like push notifications or simple . Additionally, the UDH accommodates Enhanced Messaging Service (EMS) features, such as text formatting (e.g., bold or italic), embedded images, animations, and sounds, as well as special indications like alerts or SMSC control parameters. These capabilities, defined since the original standard and evolved through releases, remain integral to global infrastructure for both consumer and enterprise applications.

Fundamentals

Definition and Purpose

The (SMS) is a store-and-forward service that enables the transfer of short messages between mobile stations and external entities in , , , and networks via a (SMSC). The User Data Header (UDH), also known as the TP-User-Data-Header, is a structure positioned at the beginning of the TP-User-Data field within an SMS Transfer Protocol Data Unit (TPDU) in /3GPP networks. It is defined in 3GPP TS 23.040 and is present only when the TP-User-Data-Header-Indicator (TP-UDHI) bit is set to 1 in the TPDU, signaling to receiving entities that the initial octets of the user data contain this header rather than message content. The primary purpose of the UDH is to convey control information and for advanced SMS processing, such as message segmentation for longer content, formatting for enhanced features like (Enhanced Message Service), or specific routing instructions, without modifying the underlying text protocol. This allows SMS networks to support functionalities beyond basic text delivery while maintaining compatibility with legacy systems. However, including the UDH reduces the available payload for user content by consuming initial octets; for example, in 7-bit default alphabet mode, the maximum capacity drops from 140 octets (equivalent to 160 characters) to 134 octets (approximately 153 characters) when a typical 6-octet UDH is used. A representative example is the UDH for a segment, which uses a 6-octet structure (UDHL octet set to 05 in , followed by information elements for concatenation identifier 00, data length 03, and three data octets specifying a reference number, total parts, and sequence number). This header instructs the receiving device to collect and reassemble multiple segments using the shared reference number, skipping the UDH octets entirely so they are not interpreted as part of the text message.

Historical Development

The User Data Header (UDH) was introduced as part of the Short Message Service () specifications in the early 1990s within the Global System for Mobile Communications () framework, specifically in the ETSI GSM 03.40 standard, which defined the technical realization of point-to-point SMS. This initial formulation enabled the inclusion of optional header information in SMS user data to support features like application port addressing, laying the groundwork for enhanced message processing beyond basic text; the full UDH structure, including TP-UDHI, appeared in version 5.0.0 (December 1995). Developed under the European Telecommunications Standards Institute (), the UDH facilitated early SMS enhancements aimed at Europe-wide paging and interoperability, aligning with the broader GSM Phase 2 specifications that emphasized digital mobile communication standardization. Adoption of UDH occurred alongside the rollout of 2G networks, with the first commercial deployment in in 1991 and the inaugural transmission in 1992, marking the practical integration of UDH into operational mobile systems. By the mid-1990s, as expanded globally under and (ITU) influence, UDH became essential for ensuring across diverse networks, supporting binary and structured data formats that transcended simple alphanumeric messaging. With the formation of the 3rd Generation Partnership Project (3GPP) in 1998, the GSM 03.40 specification evolved into 3GPP TS 23.040, undergoing iterative updates to accommodate advancing mobile technologies. A key milestone came in Release 4 (2001), which introduced enhancements for the Enhanced Messaging Service (EMS), leveraging UDH to embed simple multimedia elements like bitmaps and melodies within SMS, thereby extending its utility for richer content delivery. In 3G Universal Mobile Telecommunications System (UMTS) networks, standardized under 3GPP Release 99 (1999–2000), UDH saw expansions for robust binary data support, enabling more efficient handling of non-text payloads in higher-bandwidth environments while maintaining compatibility with 2G infrastructure. UDH played a pivotal role in the precursors to () during 1999–2002, where it was used in SMS-based gateways for port addressing to MMS centers, allowing early between SMS and emerging multimedia systems before full MMS protocols were widespread. As mobile networks progressed to Long-Term Evolution () in Release 8 (2008) and New Radio in Release 15 (2018), UDH persisted through provisions in TS 23.040, ensuring seamless SMS support over IP-based cores and legacy fallbacks, with refinements in Releases 16–18 (up to 2024) for integration with modern services like (). As of 2025, UDH remains relevant for global SMS through in evolving releases, despite the decline of plain SMS in favor of advanced messaging.

Technical Structure

Overall Format

The User Data Header (UDH) in the Short Message Service (SMS) is a that precedes the user data payload within the TP-User-Data (TP-UD) field of an SMS Transfer (TPDU). It provides a mechanism to include additional control information without altering the core user data, enabling features such as message concatenation and special formatting. The UDH is indicated by the TP-UDHI flag in the SMS PDU header, which signals receiving entities to parse the initial octets of TP-UD as header elements rather than payload. The UDH begins with a single octet known as the User Data Header Length (UDHL), which specifies the total length of the remaining UDH in octets, excluding the UDHL octet itself. The UDHL value ranges from 0 to 139, ensuring the entire UDH (UDHL + 1 octets) fits within the maximum 140-octet limit of the for 8-bit data. Following the UDHL are one or more Information Elements (IEs), each structured as a triplet: a 1-octet IE Identifier (IEI) defining the IE type, a 1-octet IE Data Length (IEDL) indicating the length of the subsequent IE Data in octets, and the variable-length IE Data itself. This modular design allows multiple IEs to be concatenated without fixed positioning, with the total UDH length determined by the UDHL. The general octet-by-octet format of the UDH is outlined below:
Octet PositionComponentDescriptionSize (Octets)
1UDHLLength of UDH excluding UDHL (0-139 octets)1
2IEI (first IE)Identifier for the first Information Element (e.g., 0x00 for concatenation)1
3IEDL (first IE)Length of data for the first IE (0 or more octets)1
4 to (3+IEDL)IE Data (first IE)Variable data specific to the IE typeVariable
SubsequentAdditional IEsRepeating IEI + IEDL + Data triplets as neededVariable
This table illustrates the sequential, self-describing nature of the UDH, where each IE is independently parseable based on its IEDL. For example, a basic UDH for an 8-bit reference concatenated SMS consists of UDHL = 05 (indicating 5 octets follow), IEI = 00 (concatenated short message with 8-bit reference), IEDL = 03 (3 octets of data), and IE Data comprising a 1-octet reference number, 1-octet total segments count, and 1-octet sequence number (e.g., 01 03 01 for reference 1, 3 segments, first segment). The full UDH in hexadecimal would be 05 00 03 01 03 01. Parsing of the UDH requires receivers to first verify the TP-UDHI flag is set to 1; if present, they read the UDHL to skip the header octets and access the user data starting immediately after. The UDH is transparent to the user data, meaning it does not modify the content but effectively shifts its starting position within TP-UD, reducing available space for the message body. Unrecognized IEs should be ignored to ensure . Due to the 140-octet maximum for TP-UD in a single , the UDH length directly constrains the user data payload, with longer headers leaving fewer octets for content. The composition of the UDH necessitates 8-bit data coding for the TP-UD when non-text elements are involved, as 7-bit default encoding could misinterpret octets. For 7-bit encoded payloads, the UDH may require alignment with fill bits added if it does not end on a boundary.

Integration with SMS Protocol

The User Data Header (UDH) integrates into the protocol through the Transfer Protocol Data Unit (TPDU) as defined in TS 23.040, enabling enhanced features while maintaining with standard SMS delivery. The presence of the UDH is signaled by setting the TP-User-Data-Header-Indicator (TP-UDHI) bit to 1; this bit occupies position 6 in the TP-Message-Type-Indicator (TP-MTI)/UDHI octet, which is the first octet of SMS-SUBMIT, SMS-DELIVER, and related TPDU types. When TP-UDHI is set, the receiving entity interprets the initial portion of the TP-User Data (TP-UD) field as the UDH rather than part of the message payload, shifting the user data interpretation accordingly. The UDH is placed at the beginning of the TP-UD field, prepending the actual short message content. The TP-User-Data-Length (TP-UDL) parameter specifies the total length of the TP-UD in octets (or septets for 7-bit encoding), encompassing both the UDH and the user data; for instance, in 8-bit mode, the maximum TP-UD length is 140 octets, with the UDH consuming the first UDHL + 1 octets, where UDHL denotes the UDH length in octets. This placement ensures the UDH is processed before the message body during delivery from the (SMSC) to the (). The (DCS) octet in the TPDU further supports this integration by indicating 8-bit data mode (e.g., DCS value 0x04 for uncompressed 8-bit data), which is required for UDH elements containing elements. During the SMS delivery process, both the SMSC and the recipient handset must support UDH handling to correctly interpret and apply its features, such as message reassembly or formatting; if the recipient device lacks UDH support, it typically falls back to treating the entire TP-UD as plain text, potentially displaying the UDH octets as garbled characters unless mitigated by a leading carriage return in the user data. The integration operates in both point-to-point modes (via SMS-DELIVER and SMS-SUBMIT TPDUs) and cell broadcast modes, though cell broadcast support for UDH is more limited and depends on the broadcast channel configuration. In 5GS, UDH is supported via the SMS Function (SMSF) as per 3GPP TS 23.040 Release 19 (2025). Error handling for UDH in the protocol emphasizes robustness: if TP-UDHI is set to 1 but the UDH is malformed (e.g., invalid UDHL or unrecognized information elements), the receiving entity discards the message and may generate an SMS-DELIVER-REPORT or equivalent diagnostic to the SMSC, citing causes like "unspecified error" to prevent delivery of corrupted content. This mechanism, outlined in the protocol's relay layer procedures, ensures that only valid messages are forwarded, with reserved or malformed UDH elements skipped during parsing where possible.

Information Elements

Concatenation and Segmentation

The User Data Header (UDH) facilitates the concatenation of short messages in to overcome the 140-octet limit of a single SMS Transfer (TPDU), allowing longer messages to be split into multiple segments for transmission and reassembly at the receiving entity. Two specific Information Elements (IEs) within the UDH are defined for this purpose: IEI 00 for an 8-bit reference number and IEI 08 for a 16-bit reference number. These IEs enable the segments to be uniquely identified and ordered, ensuring proper reconstruction of the original message. The structure of the concatenation IE begins with the UDHL field (1 octet), specifying the length of the UDH excluding itself, followed by the IE itself. For IEI 00, the IEI octet is set to 00, followed by a 1-octet length field (fixed at 03), a 1-octet reference number (0-255), a 1-octet total segments field (1-255), and a 1-octet segment number (1-255); this results in a 5-octet IE and UDHL=05. For IEI 08, the IEI octet is 08, followed by a 1-octet length field (fixed at 04), a 2-octet reference number (0-65535), a 1-octet total segments field (1-255), and a 1-octet segment number (1-255); this yields a 6-octet IE and UDHL=06. The reference number remains constant across all segments of a message, while the segment number increments sequentially from 1 to the total segments value. The 16-bit reference in IEI 08 supports larger sequences and reduces the likelihood of overlaps in high-volume messaging compared to the 8-bit variant.
IE TypeFieldOctetsDescriptionRange
8-bit (IEI=00)IEI1Identifier for 8-bit reference 00
8-bit (IEI=00)IEDL1Length of data (fixed)03
8-bit (IEI=00)Reference Number1Unique message identifier (constant per message)0-255
8-bit (IEI=00)Total Segments1Number of segments in the message1-255
8-bit (IEI=00)Segment Number1Position of this segment1-255
16-bit (IEI=08)IEI1Identifier for 16-bit reference 08
16-bit (IEI=08)IEDL1Length of data (fixed)04
16-bit (IEI=08)Reference Number2Unique message identifier (constant per message)0-65535
16-bit (IEI=08)Total Segments1Number of segments in the message1-255
16-bit (IEI=08)Segment Number1Position of this segment1-255
Reassembly at the receiving handset or entity involves collecting segments matching the same reference number, originating address, and Service Centre address; segments are then ordered by segment number and concatenated once all parts up to the total segments count are received. If segments are incomplete, the message may be discarded after an implementation-dependent timeout, which varies by carrier and device but is typically on the order of minutes to hours. Reference number collisions are mitigated by the requirement for uniqueness within the context of the originating address and Service Centre, ensuring segments from different messages do not intermix even in high-volume scenarios. The inclusion of the UDH reduces the available per . In default 7-bit encoding, a single SMS without UDH holds 160 characters (140 octets); with IEI , the 6-octet UDH (UDHL plus IE) leaves 153 characters per segment, while IEI 08 leaves 152. For example, a 161-character message in 7-bit encoding would be split into two segments using IEI : the first with reference number (e.g., 123), total segments=, segment number=, and 153 characters of ; the second with the same reference and total but segment number= and the remaining 8 characters.

Special Message Features

The Special Message Features within the User Data Header (UDH) support the by allowing the embedding of simple multimedia elements, such as sounds, animations, pictures, and text formatting, directly into messages without requiring full infrastructure. These features utilize specific Information Element Identifiers (IEIs) to denote the type of enhancement, enabling receivers to render non-text content alongside the message body. Defined in early versions of the SMS protocol and carried forward, these elements prioritize lightweight implementations suitable for basic mobile devices, with data formats limited to black-and-white bitmaps for visuals and monophonic melodies (iMelody format) for audio. Predefined sounds are indicated by IEI 0x0B, with IEDL=0x02 and two data octets: the first specifying the position (00 for beginning, FF for end, or a value indicating location in the text), and the second the sound number (01-0A for predefined tones, e.g., 01 for beep, 02 for short ring; higher values up to 0xFF for device-specific). User-defined sounds use IEI 0x0C, with variable IEDL (>=0x02) and data including position octet followed by iMelody-encoded melody data (up to 130 octets total). Animations are handled by IEI 0x0D for predefined animations, with IEDL=0x02 and data: position + animation number (01-0A for fixed sequences like or heart, up to 0xFF). Small animations use IEI 0x0F (IEDL variable, position + data for 8x8 or similar), while large animations use IEI 0x0E (up to 32x32 s, multi-frame). Pictures are specified via IEI 0x10 for large (up to 72x28 pixels, ), IEI 0x11 for small (8x8 or 16x16), and IEI 0x12 for variable-sized (with 2 octets for horizontal/vertical dimensions followed by pixel data, up to 128 octets). Text formatting elements use IEI 0x0A, with IEDL=0x03 or 0x04: data includes start position (1 octet), length (1 octet), formatting mode (1 octet, bits for bold, italic, underline, alignment), and optional color (1 octet). This applies styles to specified portions of the message text. Object distribution for , using IEI 0x8E, facilitates linking and sharing of embedded objects (e.g., contacts), with IEDL=0x02 and data specifying distribution attributes (e.g., forwardable, replaceable). Multiple IEIs can be chained within a single UDH to combine effects, such as a predefined sound (IEI 0x0B) with text formatting (IEI 0x0A) and a small (IEI 0x0F), provided the total UDH length does not exceed available user data space (typically up to 140 octets). This chaining supports EMS object linking, where objects are referenced across elements for cohesive rendering, as specified in TS 23.040. Compatibility relies on device support, with unsupported IEIs ignored to ensure fallback to .
IEI (Hex)CategoryExampleData Length (IEDL)Notes
0x0BPredefined Sounds + sound 0x01 (beep)0x02Fixed tones; sound_id 01-0A predefined
0x0CUser-Defined Sounds + iMelody dataVariable (>=0x02, up to 0x82)Custom melodies, up to 130 octets
0x0DPredefined Animations + anim 0x01 ()0x022-4 frame sequences; anim_id 01-0A
0x0F / 0x0ESmall / Large Animations + bitmap framesVariable (up to 0x80)8x8 to 32x32 s, multi-frame
0x10 / 0x11 / 0x12Large / Small / Variable PicturesDimensions + dataVariable (up to 0x80)Black-and-white bitmaps, up to 72x28
0x0AText FormattingStart, length, mode [, color]0x03 or 0x04Bold, italic, underline, alignment
0x8EObject Distribution (EMS objects)Distribution attributes0x02Metadata for /vCalendar sharing/linking

Application Port Addressing

Application port addressing in the User Data Header (UDH) of enables the routing of messages to specific applications on receiving devices by specifying port numbers, facilitating services such as notifications and triggers without relying on phone numbers alone. This mechanism uses dedicated Information Elements (IEs) to encode port information, allowing transparent handling by the while identifying application entities through the combination of destination address (TP-DA) or originator address (TP-OA) and the port. The 8-bit application port addressing scheme is identified by IEI 04 and consists of IEDL=0x02 followed by two octets: one for the destination (coded as 0-255) and one for the originating (0-255). This IE is non-repeatable and categorized as SMS Control. For broader addressing needs, the 16-bit scheme uses IEI 05, comprising IEDL=0x04 and four octets: two for the destination (0-65535) and two for the originating . This supports up to 65,536 unique ports, making it suitable for complex applications like notifications or device triggers, and is also non-repeatable with SMS Control designation. Port numbering follows structured ranges to minimize conflicts and ensure . Well-known ports include 0x0000 (0 ) for the default SMS application and 0x0800 (2048 ) associated with MMS-related services within the IANA UDP/TCP range (0-15999). Ports 16000-16999 are allocated for SMS-specific applications without assignment, though this range carries a risk of conflicting implementations if not coordinated. Higher ranges, such as 49152-65535, are reserved by for specific uses like non-IP PDN triggers, requiring formal allocation to avoid overlaps. A practical example involves using IEI 05 in the UDH to specify 9200 (0x23F0 ) for a Push message, which can trigger an MMS download on the receiving device without user intervention by directing the content to the appropriate application handler. This setup encodes the destination as 0x23F0 followed by the originating port, enabling seamless integration with services like over-the-air provisioning or multimedia retrieval. Port addressing introduces security considerations, including potential conflicts in unallocated ranges that could lead to misrouted messages, and historical risks of arbitrary code execution if applications fail to validate incoming port-triggered payloads. In early implementations, SMS ports exposed vulnerabilities allowing remote exploitation for data theft or code injection, particularly in Android apps using open ports for inter-process communication. These risks, such as buffer overflows or improper permission handling, were mitigated in modern handsets post-2010 through stricter sandboxing, port validation, and OS-level restrictions on SMS-triggered actions. Extensions of application port addressing support advanced features like reply-charging mechanisms and various indication types as defined in specifications. Reply-charging uses port addressing in conjunction with to request cost-bearing replies for services, while indication types leverage ports for signaling message waiting states, priorities, or deletions in and scenarios.

Applications and Extensions

Use in SMS Concatenation

The User Data Header (UDH) facilitates SMS concatenation by enabling the transmission of messages longer than the standard 140-octet limit through segmentation and reassembly. In the workflow, the sending mobile station or application splits the message into multiple segments, each not exceeding 140 octets, and prepends a UDH to every segment containing a unique reference number (8-bit or 16-bit), the total number of segments (up to 255), and the sequence position of the current segment (from 1 to the total). These segments are transmitted independently via separate SMS-SUBMIT PDUs, with the TP-UDHI bit set to indicate the presence of the UDH. At the receiving end, the mobile station or service center collects segments matching the reference number and originating address, then reassembles them in sequence order before presenting the complete message to the user. This mechanism significantly extends message capacity, allowing up to approximately 1,530 characters in 7-bit encoding across 10 segments (153 characters per segment after accounting for the 6-octet UDH overhead). It is particularly valuable for applications requiring detailed notifications, such as banking alerts or (OTP) confirmations that include contextual instructions, where brevity alone may not suffice for user comprehension and compliance. By overcoming the 160-character single-SMS constraint, supports more informative communications without forcing or multiple unrelated messages. Despite its utility, reassembly poses challenges, including potential out-of-order delivery due to independent segment routing through the service center, which lacks sequencing guarantees. If segments arrive out of sequence or if any are lost (e.g., due to or delivery failures), the receiving device may discard the entire message or display only partial content, leading to incomplete information for the recipient. Additionally, memory constraints on the receiving device can prevent storage and reassembly of all segments. Carrier implementations introduce further variations; while the standard permits up to 255 segments, many operators impose practical limits of 5 to 10 parts to mitigate delivery risks and billing complexities. For instance, some networks cap at 6 segments for reliability, beyond which success rates decline. In international routing, certain gateways or legacy networks may not fully support UDH processing, potentially resulting in segments being delivered separately without reassembly. As a modern alternative, (RCS) addresses these limitations by natively supporting longer messages without segmentation.

Role in Enhanced Messaging Service

The () extends the capabilities of the standard () by enabling the inclusion of basic multimedia elements, such as sounds, images, animations, and formatted text, within short messages transmitted over networks. The User Data Header (UDH), a prefixed to the SMS user data, plays a pivotal role in EMS by signaling the presence, type, and location of these embedded objects, allowing compatible handsets to interpret and render them appropriately. This mechanism operates within the constraints of the 140-octet SMS payload, where the UDH consumes a portion of the space to describe objects, leaving the remainder for text and data. In the process, the sending device sets the TP-UDHI (User Header Indicator) bit in the Transfer () to indicate UDH presence, followed by the UDHL octet specifying the total UDH length in octets. Subsequent information elements (IEs) within the UDH each begin with an IEI (Information Element Identifier) to denote the object type, an IEDL (Information Element Data Length) for the size, and the actual object or reference. For example, IEI 0x0B identifies a predefined or , IEI 0x10 denotes a large picture (up to 32x28 pixels in format, positioned via UDH), and IEI 0x0F specifies a small composed of sequential images (positioned via UDH, with in TP-UD). The then follows the UDH, containing the text interspersed with object payloads at positions indicated by the IEs, ensuring the total adheres to segmentation limits if exceeding 140 octets. This structure supports embedding up to 128 octets of objects per single , with enabling larger compositions up to approximately 760 characters including across multiple segments. Practical examples illustrate UDH's utility in : a greeting message like "Have a great day!" could incorporate a predefined (IEI 0x0B, referencing one of 7 standard sounds such as a ) positioned at the start, with the UDH directing the receiving device to play it upon message receipt. For more complex enhancements, multiple IEs can chain objects, such as combining a small picture (IEI 0x11, pixels) with a user-defined (IEI 0x0C for sound or 0x0D for predefined animation, sequencing four frames) to create a simple emotive sequence, like a smiling face that winks. These features were particularly useful for personalizing messages in the pre-smartphone era, though limited to low-resolution, graphics and monophonic audio due to constraints. On the receiving end, compatible handsets parse the UDH IEs to extract and render objects in real-time—displaying images inline with text, playing sounds sequentially, or animating frames at specified rates—while skipping unsupported elements to avoid disrupting the core message. If the device lacks support, the UDH is ignored, and the fallback renders only the plain text, often with a to conceal the header bytes visually. , standardized in Release 99 and peaking in adoption during the 2000s, facilitated early experimentation but declined by the 2010s as it was superseded by , which provided superior rich media handling without SMS size restrictions.

Integration with MMS and Other Services

The User Data Header (UDH) plays a crucial role in integrating with by enabling notifications that bridge text-based SMS to richer multimedia delivery. Specifically, notifications are delivered as SMS messages containing a payload directed to port 2948 using the application port addressing information element (IEI 05) within the UDH. This IEI specifies the 16-bit destination port (2948) and (typically 0), ensuring the message is routed directly to the (UA) on the recipient's device without entering the standard SMS inbox. The encapsulates an MM1_notification.REQ primitive, including the multimedia message URL, size, expiry time, and subject, as defined in the MMS functional architecture. Upon receipt of the , the device's MMS client intercepts the message via the designated , parses the notification, and prompts the user to download the full content from the MMS Relay/Server using an MM1_retrieve.REQ over HTTP or . This workflow allows seamless transition from a lightweight SMS alert to multimedia retrieval, supporting features like address hiding if requested by the originator. The MMS then responds with an MM1_notification.RES to acknowledge processing, enabling end-to-end delivery confirmation. This integration relies on the UDH's port addressing to avoid misrouting and ensure compatibility across / networks. Beyond , the UDH facilitates triggers for other services, such as Over-The-Air () provisioning for Toolkit applications via TP-PID=0x7F in the TPDU to invoke SIM-resident applets for configuration updates or security enhancements per TS 23.048. These mechanisms allow to activate backend services without user intervention, such as provisioning data in commercial applications. However, UDH integration introduces security considerations, as spoofed application ports can enable by tricking devices into executing unauthorized actions, such as silent or app launches; 3GPP Release 7 addressed this through enhanced SMS filtering and validation mechanisms in the network and to detect anomalous UDH elements. In modern contexts, UDH port addressing is employed in two-factor (2FA) systems, where triggers dedicated apps (e.g., via proprietary ports) to process verification codes securely. Despite these uses, UDH adds overhead—up to 140 octets in severe cases—rendering it inefficient for large media, and its features are largely deprecated in (RCS), the successor to / as of 2025 that uses IP-based messaging without UDH dependencies.

Protocol Extensions

In SMPP and UCP Protocols

In the () protocol version 3.4 and later, the User Data Header (UDH) is transported within the short_message parameter of Protocol Data Units (PDUs) such as submit_sm, which carries up to 254 octets of binary user data including the UDH if present. The presence of a UDH is indicated by setting the UDHI (User Data Header Indicator) bit in the esm_class field, specifically bit 6 (value 0x40 added to the base esm_class for default message mode with UDH), ensuring the receiving () recognizes and preserves the header without alteration. The esm_class field indicates UDHI by setting bit 6 (e.g., adding 0x40), for both default messages and 8-bit binary data (specified in data_coding, e.g., 0x00 for 7-bit default or 0x04 for 8-bit binary). An example of a submit_sm PDU snippet incorporating UDH might appear in hexadecimal as follows, where the esm_class is 0x40 to flag UDH presence, and the short_message begins with UDH octets for concatenation (e.g., 0x050003CC0201 for a two-part message with reference 0xCC and sequence 1):
submit_sm  
  command_length: 0x000000B1  
  command_id: 0x00000004  
  ...  
  esm_class: 0x40  
  ...  
  short_message: 0x050003CC0201[remaining user data]  
This structure allows External Short Message Entities (ESMEs) to submit segmented messages via SMPP without losing UDH integrity during transit to the SMSC. In the Universal Computer Protocol (UCP), specifically the EMI-UCP used for gateways, the UDH is embedded in the XSer (Extended ) field of the message data for operations like code 51 (Submit Short Message), with service type 01 designating UDH information. The XSer field contains the UDH octets directly (e.g., 01 for type, followed by length and data like 0A090003400402 for ), limited to 140 octets to align with constraints, and only one such field is permitted per message to avoid conflicts. Operation code 31, by contrast, serves as an Alert to prompt delivery of buffered messages but does not directly handle UDH transport. SMS gateways implementing SMPP or UCP must preserve the UDH during routing by refraining from stripping or modifying the header octets, as removal can lead to failed reassembly of concatenated messages or loss of features like application port addressing. Common errors include encoding mismatches, such as incorrect data_coding in SMPP (e.g., treating 8-bit UDH as 7-bit default, resulting in garbled headers) or improper XSer parsing in UCP, which may cause SMSCs to reject PDUs with error codes like 0x0000000D (invalid ESM class). These issues often arise in multi-protocol environments where gateways fail to map UDH indicators consistently between SMPP and UCP. The transport of UDH via SMPP and UCP is essential for enterprise SMS platforms, enabling bulk concatenation and enhanced messaging in high-volume applications like marketing campaigns, where SMPP's binary handling supports efficient delivery of multi-part content without fragmentation errors.

Adoption in CDMA and Beyond

In CDMA networks, such as those based on IS-95 and cdmaOne standards, the User Data Header (UDH) was not natively defined but adopted through encapsulation within the SMS bearer data structure to support interoperability with GSM features. The 3GPP2 specification C.S0015 for Short Message Service in Wideband Spread Spectrum systems specifies that the User Data subparameter in the bearer data can include a UDH when the HEADER_IND bit in the Message Identifier subparameter is set to 1, encapsulating the GSM-SMS TP-User Data (including UDH elements) as defined in 3GPP TS 23.040 section 9.2.3.24. This approach allowed CDMA SMS to handle advanced features like concatenation and port addressing by embedding GSM-compatible headers, with the CHARi field carrying the encapsulated data. For concatenated messages in CDMA environments, segmentation relied on a distinct mechanism using a 16-bit (MSG_ID) in the bearer data, rather than the 8-bit reference number in UDH, to avoid collisions across multiple segments while maintaining compatibility. Port addressing, often used for Push or application-specific delivery, was implemented via the Wireless Datagram Protocol (WDP) teleservice in CDMA, which provided a header format analogous to UDH but tailored to the CDMA air interface, as outlined in the WAP specification. This encapsulation ensured that CDMA devices could process UDH-indicated payloads, such as those for enhanced messaging, without requiring full protocol stacks. In CDMA2000 1x and later evolutions, UDH adoption expanded to support multimedia extensions and cross-network roaming. The 3GPP2 C.S0024 standard for Enhanced Messaging Service (EMS) incorporated UDH-like elements in the user data for object distribution, building on the encapsulation model to enable richer content delivery over CDMA bearers. Interoperability between 3GPP (GSM/UMTS) and 3GPP2 (CDMA2000) networks further drove UDH mapping, where GSM UDH parameters are translated to CDMA User Data subparameters during SMS delivery, as described in interface specifications for multimedia messaging. Beyond CDMA, UDH was directly integrated into ( W-CDMA) networks under standards, inheriting the TP-UDH structure without encapsulation, as UMTS SMS operates via the same TS 23.040 over the UTRAN air . This native adoption facilitated seamless feature support, including concatenation limited to 153 characters per segment due to UDH overhead, across 2G-to-3G migrations. In subsequent systems like , UDH persists in over IMS () for legacy compatibility, where the SMS payload retains the TP-UDH format during domain selection between circuit-switched fallback and IP-based delivery, per TS 24.341.

References

  1. [1]
    [PDF] ETSI TS 123 040 V16.0.0 (2020-07)
    SMS User Data Header: UDHL=05, IEI=0A, IEDL=03, IED1=0F, IED2=12, IED3=10. SMS User Data: This is a text with bold option on following with normal text.
  2. [2]
    [PDF] GSM 03.40 - ETSI
    GSM 03.40 is a technical specification for the Short Message Service (SMS) within the Global System for Mobile communications (GSM).
  3. [3]
    GSM 03.40 - Wikipedia
    GSM 03.40 or 3GPP TS 23.040 is a mobile telephony standard describing the format of the Transfer Protocol Data Units (TPDU) part of the Short Message Transfer ...
  4. [4]
    [PDF] GSM 03.40 - ETSI
    GSM 03.40 Version 5.1.0: March 1996​​ Whilst every care has been taken in the preparation and publication of this document, errors in content, typographical or ...
  5. [5]
    [PDF] Historical Context of 2G, 3G and 4G Wireless Standards.
    The robust performance and attractive features of GSM led to rapid adoption of cellular telecommunications and it surged to deployment by 32 operators in 22 ...
  6. [6]
    Specification # 23.040 - 3GPP
    Feb 9, 2015 · Technical specification (TS). Initial planned ... 3GPP System Architecture Evolution Specification - Evolved Packet System (non RAN aspects).
  7. [7]
    [PDF] ETSI TS 123 040 V4.4.0 (2001-09)
    The use of radio resources for the transfer of short messages between the MS and the MSC or the SGSN is described in. 3GPP TS 24.011 [13], and is dealt with in ...
  8. [8]
    [PDF] ETSI TS 123 040 V3.10.0 (2003-06)
    SMS User Data Header: UDHL=05, IEI=0A, IEDL=03, IED1=0F, IED2=12, IED3=10. SMS User Data: This is a text with bold option on following with normal text.
  9. [9]
    User Data Header - Wikipedia
    User Data Header (UDH) is a binary structure which may be present at the start of a short message in the Short Message Service in GSM.
  10. [10]
    [PDF] ETSI TS 123 040 V17.3.0 (2023-07)
    User Data (-). UDL. User Data Length (3GPP TS 23.040). VLR. Visitor Location Register (*). VP. Validity Period (3GPP TS 23.040). VPF. Validity Period Format ( ...
  11. [11]
    [PDF] ETSI TS 123 040 V15.3.0 (2019-04)
    SMS User Data Header: UDHL=08, IEI=0B, IEDL=02, IED1=09,<sound5>, IEI=0B ... User Data Length (3GPP TS 23.040). VLR. Visitor Location Register (*). VP.
  12. [12]
    sms-combine-concatenated-mo problem/not working - Kannel
    Mar 2, 2010 · ... sms-combine-concatenated-mo = true sms-combine-concatenated-mo-timeout = "1800" dlr-storage = internal sms-resend-retry = 10 sms-resend-freq ...
  13. [13]
  14. [14]
    [PDF] Settings provisioning to mobile devices Theorical Section
    23F0 originator port = 9200 WAP connectionless session service Protocol: WSP/Datagram. That is a WAP Push message. We can analyze the content of the WBXML ...
  15. [15]
    [PDF] Open Port Usage in Android Apps and Security Implications
    These vulnerabilities can be exploited to cause highly-severe damage such as remotely stealing contacts, photos, and even security credentials, and also ...
  16. [16]
    [PDF] SMS of Death: from analyzing to attacking mobile phones on a large ...
    In this paper, we investigate the security of feature phones and the possibility for large scale attacks based on discovered vulnerabilities in these devices.
  17. [17]
    Messaging Character Limits - Twilio
    When you send an SMS message containing more than 160 characters, the message is split into smaller messages for transmission. Large messages are split into 153 ...
  18. [18]
    Top 10 Uses Of SMS In Banking And Finance - Fonada
    Jan 15, 2023 · Banks and financial institutions use SMS notifications to increase process transparency, give customers more control, and enhance customer ...
  19. [19]
    SMS Concatenation & Encoding | Vonage API Documentation
    The maximum length of a single SMS message is 140 bytes, which equates to 160 standard GSM 7-bit characters or 70 UCS-2 16-bit characters. A message longer than ...
  20. [20]
    What is the recommended maximum number of parts when sending ...
    Jul 28, 2025 · The recommended maximum number of parts of a concatenated message is six. Sinch does not recommend sending messages with more than six parts ...Missing: international routing UDH stripping
  21. [21]
    [PDF] Developers' Guidelines Enhanced Messaging Service
    There are today 10 different sounds supported by the EMS standard, pre-defined in the phone. ... Short Message Service (SMS)” ((3G TS 23.040 V4.0.0 (2000-07)). • ...
  22. [22]
    Definition of Enhanced Messaging Service (EMS) - IT Glossary
    Enhanced Messaging Service (EMS). If EMS were not obsolete, it could have been used as a form of text message marketing. Messages could be sent using EMS ...Missing: decline transition
  23. [23]
    [PDF] ETSI TS 123 140 V6.16.0 (2009-04)
    Jan 7, 2016 · The present document may refer to technical specifications or reports using their 3GPP identities, UMTS identities or. GSM identities. These ...Missing: UDH | Show results with:UDH
  24. [24]
    [PDF] Security analysis of SMS and related technologies
    The research of this thesis is to focus on a broad range of vulnerabilities related to SMS messages in different networks and further emphasis on the Two-Factor ...Missing: arbitrary | Show results with:arbitrary<|control11|><|separator|>
  25. [25]
    [PDF] Short Message Peer to Peer Protocol Specification v3.4 - SMPP
    Oct 12, 1999 · If an ESME encodes GSM User Data Header information in the short message user data, it must set the UDHI flag in the esm_class field. -. If ...
  26. [26]
    [PDF] Short Message Service Centre 4.6 EMI - UCP Interface Specification
    In the ERMES/UCP-based EMI protocol, the operation structure is as follows: ... This patch allows the UCP application to specify a User Data Header. The.Missing: Ericsson | Show results with:Ericsson
  27. [27]
    [PDF] ARIB STD-T64-C.S0015-C v1.0 Short Message Service (SMS) For ...
    The CHARi field of the subparameter User Data shall encapsulate GSM-SMS TP-User Data ... Data Subparameter contains a User Data Header as. 13 defined in 9.2.3.24 ...
  28. [28]
    MMSC in CDMA or CDMA2000 Environments - NowSMS
    In GSM environments, User Data Header (UDH) fields have been standardised to ... A key requirement of this standard is that each segment of the message must use ...
  29. [29]
    Implementing User Data Header(UDH) in CDMA messages
    Nov 6, 2010 · In GSM, it encodes port addresses in the UDH. In CDMA, a different header format is used with the message sent over the WAP teleservice.Missing: adoption networks