Understanding SIP Addresses


“To be or not to be. That is the question.”

Ah, the angst of youth — feeling that you are on the cusp of something incredible, but not having the maturity to understand what it is. William Shakespeare brought life to those words over 400 years ago and yet they still ring true today. I will venture to say that they apply equally as well to this middle-aged SIP guy who still struggles to find his place in an ever complex world of people, places, and gadgets.

Knowing who you are extends well past the trials of Hamlet, the Prince of Denmark. Here in the world of technology, we apply names to the entities we wish to control, be controlled by, or communicate with. In the IP space, we have the Media Access Control (MAC) and Internet Protocol (IP) addresses.

The MAC address uniquely identifies a network interface on a physical network segment. Every Network Interface Card (NIC) has a MAC address. This address is universally unique and no two NIC cards will ever share the same MAC address.

An IP address is a label assigned to a device (e.g. computer, printer, call processing server, etc.) that uses the Internet Protocol for communication. An IP address must be unique within the LAN or WAN it resides in, but is not necessarily universally unique. One enterprise can use many of the same IP address that another enterprise uses. Communication between those two enterprises is possible using Network Address Translation (NAT) techniques, but that is a subject beyond the scope of this article.

SIP has its own share of names and you will find them in a variety of different places. It’s important to know that there are different types of addresses and a single SIP element may be addressed in more than one way.

At the core of SIP communication is the Address of Record (AOR). The AOR is a high level name that is assigned to a SIP entity without regard to the device or devices that names might use. The format for an AOR is as follows.


When a SIP entity wishes to communicate with another SIP entity, it populates the SIP Request-URI and the To header with the recipient’s AOR. It will place its own AOR in the From header.

The AOR is great for high level routing, but it falls short when it comes to identifying the actual recipient of a SIP message. That’s because the form of name@domain doesn’t specify the device or devices that that AOR might be currently using. For instance, I can use my AOR of SIP:aprokop@arrows3.com to register the 9641 SIP telephone on my desk, the One-X Communicator on my PC, the One-X Mobile on my iPhone, and the Flare Experience on my iPad.

That’s four devices and four IP addresses. How do I go from an AOR to a device?

This is where the SIP Contact header comes into play. The Contact header allows a user to associate one or more devices to a single AOR. Each of those devices will send its own REGISTER message and each REGISTER will contain a unique Contact header.

For example, the Contact header used by the REGISTER from my PC might look as follows:

Contact: Andrew Prokop <SIP:aprokop@>

The Contact header used by the REGISTER from my iPhone might look as follows:

Contact: Andrew Prokop <SIP:aprokop@>

Notice how each Contact header uses a different IP address for the same “aprokop.” This allows a SIP registrar (which in my case is an Avaya Session Manager) to support multiple devices for a single user. If someone calls SIP:aprokop@arrows3.com, both my One-X Communicator and my One-X Mobile will ring. There is no reason for the caller to ever know the actual IP addresses of my devices. DNS routing will find arrows3.com and my company’s Session Manager will simultaneously alert all my registered devices.

Contact headers can be used in messages other than REGISTER, but in all cases the goal is to associate a device address with a user.

So, even though a rose by any other name would smell as sweet, a single AOR may take on different odors depending on the Contact headers associated with that AOR. Okay, that’s a weak metaphor, but I’m an engineer and not a poet.



  1. Perfect article to understand sip contact header. Thanks.

    1. Thank you, Vishal!

  2. Hi Andrew, is there any way that the MAC address of the user is accessed in a SIP based communication? Or one needs to use other techniques. I am thinking of developing a service that uniquely identifies devices and forward the service based on their capability that is updated dynamically.

    1. Zizi, I no of no reason why a MAC address couldn’t be part of a registration request, but I know of no SIP entities that support that. Still, they could be written. You would need to add the MAC address to the REGISTER Contact, store it in a SIP registrar, and later on access it during the routing process.

  3. Hi Andrew, what mean by Multiple Contacts for the same AoR for Register Method

    1. Different IP addresses for different devices.

  4. Hi Andrew, why Record-Route header wont be removed in response at each proxy like via?

    1. They serve a completely different purpose. Why would you want it removed?

  5. amrutha · · Reply

    Thanks for all your short and simple posts. I really appreciate it!!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: