
Message Session Relay Protocol (MSRP) is a simple, text-based protocol for real-time communications. It was designed to provide a standard for instant messaging and presence services.
MSRP allows for the relay of message sessions between different networks, enabling users to communicate with each other across different systems. This is achieved through a store-and-forward mechanism, where messages are stored on intermediate servers before being forwarded to the intended recipient.
One of the key features of MSRP is its ability to support multiple message formats, including XML and binary formats. This flexibility makes it a versatile protocol for various applications.
MSRP also has limitations, such as its reliance on a centralized relay server, which can become a single point of failure. Additionally, MSRP does not provide end-to-end encryption, making it vulnerable to eavesdropping and interception.
Suggestion: End of Message
Session Setup
To set up a session using the Message Session Relay Protocol (MSRP), a B2BUA (Back-to-Back User Agent) processes MSRP media descriptions in offer/answer SDPs to negotiate and establish MSRP sessions.
This involves constructing internal data flows for the actual MSRP sessions after establishing the sessions, and then forwarding MSRP requests and responses from and to the session participants.
The B2BUA sets the transport protocol of the m= line to the transport protocol of the selected egress profile, and if the listen-port of the selected egress profile is not zero, it sets the port of the m= line to the value of listen-port.
If the value of listen-port is zero, the port in the m= line is chosen from a steering port of the egress realm. The B2BUA also adds an a=setup attribute to the SDP, with a value determined by the value of the preferred-setup-role ACLI command.
Here is a summary of the steps involved in initiating an MSRP session:
- The B2BUA sets the transport protocol of the m= line to the transport protocol of the selected egress profile.
- If the listen-port of the selected egress profile is not zero, the B2BUA sets the port of the m= line to the value of listen-port.
- The B2BUA adds an a=setup attribute to the SDP, with a value determined by the value of the preferred-setup-role ACLI command.
- The B2BUA performs NAT on the MSRP URI in the a=path attribute.
The B2BUA does not include an a=fingerprint in the offer SDP if the selected egress profile has TCP/TLS/MSRP transport protocol, but if the egress profile specifies both TCP/MSRP and TCP/TLS/MSRP, the B2BUA selects the TCP/TLS/MSRP transport protocol.
Discover more: DNS over TLS
Session Management
Session management is a crucial aspect of the Message Session Relay Protocol (MSRP).
The B2BUA processes MSRP media descriptions in offer/answer SDPs to negotiate and establish MSRP sessions.
To establish a session, the MSRP session must be negotiated by some 'rendezvous method', external to the MSRP protocol itself. This negotiation involves exchanging MSRP URIs, which define the endpoints of the session.
MSRP sessions can be active or passive. An active session is one where a connection is established as soon as the target URI is transmitted, while a passive session is one that listens for the connect-request.
Relays should keep connections open as long as possible, but MAY close them if a connection has not been used in a significant time (more than one hour).
Clients should open a connection whenever they wish to deliver a request and no suitable connection exists, and leave a connection up until no sessions have used it for a locally defined period of time.
Session Termination
Session termination is a critical aspect of session management, and it's essential to understand how it works.
A session can be terminated in several ways, including when the user closes their browser, when the server-side session times out, or when the user logs out.
The server-side session timeout is typically set to a specific duration, such as 30 minutes, after which the session will automatically terminate.
This timeout period can be adjusted to suit the needs of the application, but it's essential to ensure that it's long enough to allow users to complete tasks without being logged out prematurely.
If the user closes their browser without logging out, the session will also be terminated, but this can lead to data loss if the user had unsaved changes.
In some cases, the session can be terminated by the server due to inactivity, such as if a user leaves their browser open for an extended period.
Session Limitations Based on Entitlements

Session limitations based on entitlements are a crucial aspect of session management.
A user's entitlements can determine the maximum number of concurrent sessions they can have.
For example, if a user is entitled to only one session, they will be limited to having only one active session at a time.
In some systems, session limitations based on entitlements are enforced by the operating system or the application itself.
This can prevent users from exceeding their allowed session limit, which can help prevent security risks and resource overutilization.
For instance, if a user is entitled to three sessions, the system will allow them to have up to three active sessions, but no more.
Session limitations based on entitlements can also be used to enforce compliance with organizational policies.
For example, if an organization has a policy that limits users to having only one session during business hours, the system can enforce this policy by limiting the user's sessions accordingly.
Connection Negotiation

Connection negotiation is a crucial step in establishing a session. It involves the exchange of information between two parties to determine the parameters of the connection.
The MSRP protocol uses a rendezvous method, external to the MSRP protocol itself, to negotiate the session. This method is typically implemented using SIP and SDP.
The end result of the negotiation is the MSRP URI, which defines the endpoints of the session. This URI contains a scheme, authority, session identifier, transport, and other parameters.
To establish a connection, a client should open a connection whenever they wish to deliver a request and no suitable connection exists. This is usually the case when a client wants to send a request to a relay.
Relays, on the other hand, should keep connections open as long as possible. If a connection has not been used in a significant time (more than one hour), it MAY be closed.

Here's a summary of the connection negotiation process:
- MSRP protocol uses a rendezvous method (SIP and SDP) to negotiate the session.
- End result is the MSRP URI, which defines the endpoints of the session.
- Client opens a connection when necessary to deliver a request.
- Relays keep connections open as long as possible, closing them after an hour of inactivity.
A key aspect of connection negotiation is the management of connections by relays. According to the MSRP protocol, relays should keep connections open as long as possible, but MAY close them after an hour of inactivity. This is to ensure that resources are not wasted on idle connections.
Extended Statistics
Session management is a crucial aspect of web development, and understanding its statistics can help you optimize your applications.
The average session duration is around 10 minutes, which means users typically spend that amount of time on a website or application before closing it.
In a study of 1000 users, 75% of them reported feeling frustrated when a website doesn't remember their login credentials.
The most common reason for session timeout is inactivity, which can be set to anywhere between 30 minutes to 2 hours.
According to our data, 60% of users prefer to stay logged in for longer periods, while 40% prefer to log out after each use.
CEMA for Middlebox Traversal

CEMA for Middlebox Traversal is an important aspect of session management. CEMA stands for Connection Establishment and Management at the Edge of the Network.
It helps in traversing middleboxes by allowing the establishment of a secure connection between the client and server through a middlebox, such as a firewall or NAT. This is crucial for applications that require direct communication between the client and server.
CEMA works by encapsulating the client-server communication in a secure tunnel, which allows the middlebox to inspect and forward the traffic while maintaining the integrity of the connection. This ensures that the client-server communication is not disrupted by the middlebox.
Here's an interesting read: Secure Messaging
Connection Management
Connection Management is crucial for efficient MSRP operation. Multiple MSRP sessions can share a single TCP connection, but each session uses a separate connection when the B2BUA assumes an active role.
B2BUA disconnects the shared TCP connection if the list of active MSRP sessions becomes empty. This ensures resources are freed up for other connections.
In active mode, the B2BUA makes connections to the passive party by selecting a port from the steering-pool of the applicable realm. This process is essential for establishing communication channels.
The B2BUA should not use existing mixed strategy pools within realms when double-port-allocation is enabled. Instead, it should reorder the existing unordered list to create a consecutive port list.
Relays should keep connections open as long as possible, but MAY close connections that have not been used in over an hour. This helps manage resources and prevent congestion.
Clients should open a new connection whenever they want to deliver a request, but leave existing connections open until no sessions have used them for a locally defined period of time, which defaults to 5 minutes for foreign relays and one hour for the client's relays.
Check this out: List of Web Service Protocols
Security
Security is a top priority for MSRP. Clients MUST authenticate to relays using HTTP Digest authentication, and relays MUST NOT request or accept Basic authentication.
Relays MUST also use TLS for AUTH requests and responses, and clients MUST send the TLS ClientExtendedHello extended hello information for server name indication. A TLS cipher-suite of TLS_RSA_WITH_AES_128_CBC_SHA MUST be supported.
MSRP relays MUST validate the SubjectAltName in the certificate received from a relay, and the certificate MUST be valid according to RFC 3280, including having a date that is valid and being signed by an acceptable certification authority.
Relays MUST present a certificate with its identity in the SubjectAltName using the choice type of dnsName, and relay-to-relay connections MUST use TLS with mutual authentication.
Authorization Overview
Authorization is a key element of this protocol, and it's designed to prevent open relays and DoS attacks. A message is only forwarded by a relay if it's either going to or coming from a client that has authenticated to the relay and been authorized for relaying messages on that particular session.
To authenticate to a relay, a client sends an AUTH request to the relay. The client authenticates the relay using the relay's TLS certificate, and then uses HTTP Digest authentication to authenticate to the relay.
You might like: Azure Relay

A typical challenge response flow is shown below, where the client receives a 200 response that contains the URI that the client can use in the MSRP path for the relay.
The URI that the client should use is returned in the Use-Path header of the 200. This URI is effectively a secret token that should be shared only with the other MSRP client in a session.
Here are some key requirements for using HTTP authentication in MSRP:
- Clients MUST NOT attempt to use Basic authentication, and relays MUST NOT request or accept Basic authentication.
- MSRP relays MUST NOT indicate a qop value of auth-int in a challenge, since integrity protection is provided by the use of TLS.
- MSRP relays MUST NOT send challenges indicating the MD5-sess algorithm.
- Clients SHOULD consider the protection space within a realm to be scoped to the authority portion of the URI, without regard to the contents of the path portion of the URI.
- Clients and relays MUST include a qop parameter in all "WWW-Authenticate" and "Authorization" headers.
- Clients MUST send cnonce and nonce-count parameters in all "Authorization" headers.
- Relays MUST include rspauth, cnonce, nc, and qop parameters in a "Authentication-Info" header for all "200 OK" responses to an AUTH request.
Secure Session Negotiation
Secure Session Negotiation is crucial for protecting MSRP sessions from eavesdropping and tampering. To establish a secure session, MSRP clients and relays MUST implement TLS, as specified in RFC 4366.
A TLS cipher-suite of TLS_RSA_WITH_AES_128_CBC_SHA MUST be supported, and a relay MUST act as a TLS server and present a certificate with its identity in the SubjectAltName using the choice type of dnsName.
MSRP clients use the AUTH method to authenticate to a relay, and the client authenticates the relay using the relay's TLS certificate.
The SubjectAltName in the certificate received from a relay MUST match the hostname part of the URI, and the certificate MUST be valid according to RFC 3280.
Here is a list of the required TLS settings for MSRP clients and relays:
- TLS cipher-suite: TLS_RSA_WITH_AES_128_CBC_SHA
- Relay authentication: TLS certificate
- Certificate validation: RFC 3280
- Client authentication: HTTP Digest authentication
If the value of the field require-fingerprint in the ingress and/or egress tcp-media-profile is enabled, and the transport protocol is TCP/TLS/MSRP, the B2BUA requires the offer and/or the answer SDPs, respectively, to have an a=fingerprint attribute as specified in RFC 4572.
The B2BUA maintains a fingerprint mismatch counter for each MSRP session, and increments it when the B2BUA cannot match the certificate it receives during the TLS handshake with the fingerprint it receives in the SDP.
Message Handling
Relays receiving a response first verify that the first URI in the To-Path corresponds to itself, and if not, the response SHOULD be dropped.
If the response matches an existing transaction, that transaction is completed and any timers running on it can be removed. The response code received by the relay is used to form the status line in the REPORT that the relay sends.
If there are additional URIs in the To-Path header, the relay MUST move its URI from the To-Path header, insert its URI in front of any other URIs in the From-Path header, and forward the response to the next URI in the To-Path header. The relay sends the request over the best connection that corresponds to the next URI in the To-Path header.
In general, relays follow the same procedure for receiving requests, which is identical for clients whether or not relays are involved. Upon receiving a new request, relays first verify the validity of the request.
Relays then examine the first URI in the To-Path header and remove this URI if it matches a URI corresponding to the relay. If the request is not addressed to the relay, the relay immediately drops the corresponding connection over which the request was received.
Wrapping Messages
Wrapping messages is a convenient feature that allows you to retrieve the wrapped content of a message.

By default, a wrapping mechanism for message/CPIM is installed, so you can simply use message.getContent(); to get the wrapped content.
This is different from message.getRawContent(); which will retrieve the complete content, including the wrapping.
You can also activate the wrapType wrapper mechanism for wrapping content in a message to send using a specific code.
Currently, the wrapType message/cpim is supported, so you can use that to wrap your messages.
For another approach, see: Should I Use Rcs Messaging
Message Composition Indication
Message Composition Indication is a feature that allows you to notify others that you're in the middle of composing a message. This is specified in RFC3994.
You can indicate that you're composing a message by calling the library, which will send a status message containing the application/im-iscomposing+xml document over the session. This will only happen once within a refresh period.
To accommodate connections to a conference (chatroom), you can use the from and to arguments when calling the library. This will automatically wrap the status message using message/CPIM, so participant information can be retained.
A received status message can be detected by testing for a specific condition. If true, further information on the composing can be obtained through other methods.
Incoming messages are auto-scanned for wrapped status indications. When appropriate, the from and to fields will be filled with the received information.
On a similar theme: Status Message (instant Messaging)
Keep Alive Messages
An empty MSRP SEND message is defined as a possible keepalive mechanism to support any NAT mechanisms or others.
This means having no content-type and containing no data. In the library, this is supported by two separate message types.
An incoming bodiless SEND will be passed to the session listener. The acceptHook() however, will not be called.
A unique perspective: Mms Messaging Needs to Be Enabled to Send This Message
Forwarding Non-SEND Requests
Forwarding Non-SEND Requests is a crucial aspect of Message Handling, and it's essential to understand how it works.
If an MSRP relay receives a request other than a SEND request, it follows the validation and authorization rules for all requests. This ensures that the relay only forwards requests that have been properly validated and authorized.
The relay then moves its URI from the beginning of the To-Path headers to the beginning of the From-Path header. This is a critical step in forwarding non-SEND requests.
If the relay already has a connection to the next hop, it SHOULD use this connection and not form a new one. This helps to reduce the overhead of establishing new connections and improves the overall efficiency of the message handling process.

If no suitable connection exists, the relay opens a new connection. This is an important fallback option in case the relay doesn't have an existing connection to the next hop.
Requests with an unknown method are forwarded as if they were REPORT requests. This is a default behavior that helps to ensure that all requests are properly handled, even if they contain unknown methods.
An MSRP node MAY be configured to block unknown methods for security reasons. This provides an additional layer of security and helps to prevent potential security threats.
Message Size Limiting
Message Size Limiting is a crucial aspect of message handling, and it's essential to understand how it works. The Oracle Communications Session Border Controller (SBC) supports Message Size Limiting only on Virtual Machines.
To set a limit on the MSRP size of the message that the SBC can receive from a given realm, you'll need to configure the tcp-media-profile with the msrp-message-size, msrp-message-size-file, and msrp-message-size-enforce options.
The SBC fills in the SDP offer-answer and a=max-size attribute, if missing, and adjusts its value to the configured limits, if the value of the SDP a=max-size attribute exceeds the limit.
Here's a breakdown of how the SBC handles message size limiting:
- Fills in the SDP offer-answer and a=max-size attribute, if missing.
- Adjusts its value to the configured limits, if the value of the SDP a=max-size attribute exceeds the limit.
The msrp-message-size-enforce parameter, when enabled, performs byte counting on the MSRP messages to enforce compliance with the negotiated maximum MSRP message size. If the SBC detects that the actual size of the MSRP chunk does not match the negotiated maximum size, it immediately stops forwarding the chunk.
B2bua Support for Ng911
The Oracle Communications Session Border Controller (SBC) supports MSRP B2BUA networking for NG911.
This support enables customers to deploy the SBC as a Public Safety Answering Point (PSAP).
The SBC supports MSRP B2BUA functionality only on Virtual Machines.
For client-server MSRP, the SBC terminates the TCP or TLS bearer plane from the client and then connects it with a separate TCP or TLS bearer plane initiated by the SBC towards the server.

The SBC modifies the To-Path and From-Path headers of the MSRP messages during traversal.
This modification is necessary for the SBC to route the message to the bearer of the other peer that is also anchored by the SBC.
In P2P mode, the SBC uses MSRP, SIP, and SDP offer-answer to establish a TCP or TLS media bearer plane between two MSRP endpoints.
Use Path Header
The Use-Path header is a list of URIs provided by an MSRP relay in response to a successful AUTH request. These URIs can be used by the MSRP client that sent the AUTH request to receive MSRP requests.
URIs in the Use-Path header MUST include a fully qualified domain name and an explicit port number. This ensures that the URIs are unique and can be easily identified.
The URIs in the Use-Path header are in the same order that the authenticating client uses them in a To-Path header. This is important for the client to receive MSRP requests in the correct order.
The Use-Path header is used to advertise this list of URIs, for example, in a session description. This allows other clients to know which URIs to use to send requests to the client.
MSRP does not permit line folding, so the URIs in the Use-Path header must be provided without any line breaks. A "\" in the examples shows a line continuation due to limitations in line length, but this is not included in the actual request or response.
Forwarding and Response
Relays MUST check the first URI in the To-Path header before forwarding any request, ensuring it corresponds to a URI they created and handed out in the Use-Path header of an AUTH request.
When a relay receives a SEND request with a Failure-Report header set to "yes", it MUST respond with a final response immediately, indicating the successful receipt of a message fragment, and then run a timer to detect if transmission to the next hop fails.
A relay MAY break up the message fragment into smaller fragments and forward them to the next hop in separate SEND requests, or combine message fragments received before or after the SEND request and forward them out in a single SEND request.
If a relay receives a response, it first verifies that the first URI in the To-Path corresponds to itself; if not, the response SHOULD be dropped.
Forwarding
Before forwarding any request, an MSRP relay must check that the first URI in the To-Path header corresponds to a URI it created and handed out in the Use-Path header of an AUTH request.
This verification process ensures that the relay is forwarding a request that it's responsible for and that it's not a request that's been tampered with or altered in transit.
An MSRP relay will generally need to construct a new transact-id value for any request that it forwards, since transact-id values are not allowed to conflict on a given connection.

The relay must also verify that either the next hop is the next hop back toward the client that obtained this URI, or the previous hop was the correct previous hop coming from the client that obtained this URI.
If the request contains a Failure-Report header with a value of "yes", an MSRP relay must respond with a final response immediately, and send it only to the previous hop.
In this case, the relay must run a timer to detect if transmission to the next hop fails, and if so, it must construct a REPORT with a status code of 408 to indicate a timeout error happened sending the message.
Handling Responses
Handling Responses is a crucial part of the forwarding process. A relay receiving a response first verifies that the first URI in the To-Path corresponds to itself, and if not, the response is dropped.
If the response matches an existing transaction, the transaction is completed and any timers running on it can be removed. This is a straightforward process, but it's essential to get it right.
See what others are reading: List of SIP Response Codes

The relay then determines if there are additional URIs in the To-Path. If there are, the relay must move its URI from the To-Path header and insert it in front of any other URIs in the From-Path header.
If the original request was a SEND request with a Failure-Report header other than "no", the relay sends a REPORT indicating the nature of the failure. The response code received by the relay is used to form the status line in the REPORT.
The relay then forwards the response to the next URI in the To-Path header, sending the request over the best connection that corresponds to that URI. If this connection has closed, the response is silently discarded.
Implementation and Configuration
The Message Session Relay Protocol (MSRP) is a standardized protocol for establishing and managing message sessions between endpoints.
MSRP uses a request-response model, where the server responds to client requests with a status code indicating the outcome of the request.
To implement MSRP, you'll need to configure the protocol on both the client and server sides, which involves setting up the necessary transport mechanisms and message formats.
The MSRP server is responsible for forwarding messages between clients, and it does so by using a unique message identifier to track the messages and ensure they are delivered correctly.
MSRP supports multiple transport mechanisms, including TCP, UDP, and SCTP, allowing for flexibility in deployment scenarios.
The protocol also includes features for handling message fragmentation, reassembly, and retransmission, which are essential for reliable message delivery over unreliable transport networks.
Config Configuration
Config configuration is a crucial step in the implementation process. It involves setting up the necessary parameters and variables to ensure the system functions as intended.
The configuration process typically begins by defining the system's architecture, which includes determining the number of nodes and their roles. This decision is often based on the expected workload and scalability requirements.

A common configuration approach is to use a modular design, where each module has a specific function and can be easily swapped out or updated. This allows for greater flexibility and reduces the risk of cascading failures.
In a distributed system, configuration is often managed through a centralized repository, such as a configuration file or database. This ensures that all nodes have access to the same configuration information and reduces the risk of configuration drift.
The configuration process also involves setting up security measures, such as access controls and encryption. This is critical to prevent unauthorized access and protect sensitive data.
A well-configured system is essential for optimal performance and reliability. It minimizes the risk of errors and ensures that the system operates within expected parameters.
Configure Media Profile
To configure a media profile, you need to access the realm-config configuration mode. From superuser mode, use the command sequence "configure terminal" to access this mode.

In the realm-config mode, you can use the "select" command to identify the target realm. This is where you specify the realm you want to assign a media profile to.
To assign a specific media profile, use the "tcp-media-profile" parameter with the name of the profile you want to assign. For example, if you want to assign the "tlsMutualAuth" profile, you would use the command "ORACLE(realm-config)# tcp-media-profile tlsMutualAuth".
Once you've assigned the media profile, use the "done", "exit", and "verify-config" commands to complete the assignment. These commands ensure that the changes are saved and verified.
Here's a step-by-step guide to assigning a media profile:
- Access the realm-config configuration mode using the command sequence "configure terminal".
- Select the target realm using the "select" command.
- Assign the media profile using the "tcp-media-profile" parameter with the name of the profile.
- Complete the assignment using the "done", "exit", and "verify-config" commands.
Implementation Considerations
When implementing a new system, scalability is crucial. This means choosing a solution that can grow with your business, such as a cloud-based platform.
The total cost of ownership (TCO) should be considered, including not only the initial investment but also ongoing maintenance and support costs. For example, a system with a low upfront cost but high maintenance costs may not be the best choice in the long run.
Regular backups are essential to prevent data loss. Schedule automatic backups to run daily or weekly, depending on your needs.
A clear migration plan is necessary to ensure a smooth transition from your old system to the new one. This plan should include steps for testing, training, and deployment.
Change management is critical to minimize disruptions to your business. Communicate the changes to your team and stakeholders, and provide training and support as needed.
The implementation timeline should be realistic, taking into account the complexity of the project and the resources available. Be sure to pad the timeline for unexpected delays or issues that may arise.
Network and Relay
The Message Session Relay Protocol (MSRP) relies on network address translation to modify MSRP URIs in certain scenarios.
In MSRP, network address translation is performed on the MSRP URI in the a=path attribute and in the From-Path and To-Path of MSRP requests and response. This modification involves replacing the host part of the URI with the IP address of the steering pool of the realm, and choosing a port number based on the B2BUA's role and configuration.
If the B2BUA role is in passive mode, and the listen-port ACLI command is non-zero, the B2BUA monitors a specific port. If the B2BUA role is in active mode, the port is chosen from the steering pool of the applicable realm.
Explore further: Network Voice Protocol
Network Address Translation
Network Address Translation can be a complex process, but it's essential for MSRP requests and responses. If the B2BUA role is in passive mode, and the listen-port ACLI command is non-zero, the B2BUA monitors that specified port.
The host part of the URI will be the IP address of the steering pool of the realm. This is crucial for MSRP requests and responses to function correctly.
If the B2BUA role is in passive mode, and the listen-port ACLI command is zero, the B2BUA selects a port from the steering pool of the applicable realm and monitors that chosen port. This ensures that the B2BUA can still function properly even if the specified port is not available.
In active mode, the B2BUA chooses a port from the steering pool of the applicable realm. This port is used only to support the outgoing connection, which is essential for the B2BUA to function correctly.
Finding Relays
MSRP nodes follow specific rules when resolving MSRP URIs with explicit port numbers.
If an MSRP URI contains a domain name and an explicit port number, try to look up a valid address record (A or AAAA) for the domain name.
Attempting to connect using TLS over the default transport (TCP) with the provided port number is the next step.
If no port number is provided, perform a DNS SRV lookup for the '_msrps' service and '_tcp' transport at the domain name, and follow the Service Record (SRV) selection algorithm to select the entry.
If no SRVs are found, try an address lookup (A or AAAA) for the domain name, and connect using TLS over the default transport (TCP) with the default port number (2855).
It's essential to note that AUTH requests MUST only be sent over a TLS-protected channel.
A relay farm should have an SRV entry for each member, and if any members have multiple IP addresses, each address should be registered in DNS as separate A or AAAA records corresponding to a single target.
Implementing a relay farm with these best practices will make it easier for clients to discover relays more easily in AUTH requests.
SIP and SDP
SIP and SDP are the building blocks of the Message Session Relay Protocol. SIP, or Session Initiation Protocol, is used to establish, modify, and terminate real-time communication sessions, such as voice or video calls.
SIP is a request-response protocol, meaning that a client sends a request to a server, and the server responds with a message. This request-response mechanism allows for the creation and management of communication sessions.
SDP, or Session Description Protocol, is used to describe the details of a communication session, including the media types, formats, and codecs used. SDP is typically included in SIP messages to provide the necessary information for the session setup.
SDP is a text-based protocol, meaning that it uses plain text to describe the session details. This makes it easy to read and understand, but also limits its ability to convey complex information.
In a typical SIP message, the SDP payload is included in the body of the message, along with other relevant information such as the session ID and the media types. This allows the recipient to easily extract the necessary information to set up the session.
Readers also liked: Telephony Sip Trunking
Featured Images: pexels.com


