I seek to understand how Skype for Business Online works on the network level.

In SBO all the servers are somewhere in the MS cloud. As a client I have some internet connection, so I can talk to the servers, signal my status, initiate calls and so on.

But how does the server reach my client when someone is contacting me and my client usually sits behind some NAT router and/or a firewall that does not allow incoming connections?

Would it simply not work in this case, or does the client use techniques like polling the server (long polling or similar), so all network connections are always initiated by the client?

1 Answer 1


For a basic birdseye overview of connectivity I can recommend this article with deeplink into the relevant part.

As for ports used by the client you can find a good table here.

In regards to how it works, I have not found the official docs from Microsoft, but usually these kind of connections work like this:

The way IM push is done is that the client (Skype for Business) opens a TCP connection to the messaging server. This connection is meant to remain open for as long as the phone is turned on. Fortunately a TCP connection uses absolutely no bandwidth when it's not transmitting anything, so it doesn't waste a lot of data, the radio transmitter can power down, etc.

The connection can remain open indefinitely, however behind a NAT, the NAT infrastructure keeps a table of open connections that it is handling, and drops connections that have been idle for some time, usually 10-15 minutes. Neither end gets notification of this. So this is handled by sending a TCP keep-alive packet which refreshes the entry in the carrier's NAT connection table. This only costs about 50 bytes or so, and only needs to be done every few minutes.

For VoIP things it is as far as I know ICE being used, you can check out this really good article by Jeff Shertz

  • The first link talks about E-Mail forwarding, I don't see the relevance here. The second link is somewhat more helpful because it differentiates between inbound and outbound traffic. But even if the respective Firewall ports are open, I still don't see how a server calling a client could get around the NAT.
    – TToni
    Jul 25, 2018 at 11:59
  • Ah sorry about the link, had the wrong one in the clipboard, I have exchanged it now with the right one. Jul 25, 2018 at 12:02
  • Answers which consist solely of links to external sites are not allowed, because links die and make the answer useless. Please edit the answer to include the relevant information, keeping the links for reference. Jul 25, 2018 at 12:08
  • Included some more explanation and added more relevant reading material. Jul 25, 2018 at 12:11
  • OK, the (new) first link is interesting, but doesn't answer my question. The article from Jeff Shertz set me on the right path though. It's a bit different for SBO since there is no on-premise edge server but it talks about the STUN and TURN protocols to get around the NAT issue and Wikipedia provided the rest :-). But the clients are not keeping connections open on the servers. While it doesn't produce much traffic, it still uses resources on the server and there are just too many clients around.
    – TToni
    Jul 25, 2018 at 12:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.