What does the word ‘deterministic’ mean in regards to communication through a network?


I’ve been delving into the world of networking and have read about “deterministic data communications”. I Googled the word “deterministic” and it says “relating to the philosophical doctrine that all events, including human action, are ultimately determined by causes regarded as external to the will.”

Can someone how that relates to data communications?

Thanks 🙂

In: 7

In the word of computing, “deterministic” means “not random”.

If you run a deterministic process twice with the same input you will always get the same output.

A single computer is almost completely deterministic.

That is not necessarily true when you have two computers communicating with each other, though: Packets can be dropped or distorted, sync can be lost, and so on. A large part of designing network protocols is aimed at getting around that, to make network communication as deterministic as possible.

Deterministic in regards to communication means that something is predictable. So the message is sent and received in specified and predictable period of time.

Also when googling for specific terms, it’s always better to add some key words, in this case adding “data communication” with “deterministic” is going to give you results for this specific case

A lot of good answers about predictability of outcome, given the same inputs.

Let’s add the idea of a *state machine*.

A state machine has a finite number of states that it can be in. For any given state, it’s clearly defined which other states it can possibly move to and what inputs will make it move there.

Someone mentioned TCP. Have a look at it and you’ll see it has precisely defined states, and precisely defined actions to take for a given input in a given state. Instead of a complex mess of ambiguous outcomes, you have a finite set of managed behaviours. It’s not the only way of achieving determinism, but it’s a very good way.

Lesson: Don’t rely on Google for answers, because you won’t necessarily find what you are after and you have no way of knowing if it’s accurate. Use an appropriate reference work instead, in this case, a dictionary.

If you don’t have a dictionary to hand, http://onelook.com looks up words in multiple online dictionaries.

As an example of network that is not deterministic is Ethernet. On a standard ethernet network, if two computers try and transmit at the same time, there is a collision, and the transmit fails. Then both computers stop, wait a random amount of time, and try again. On a network with a lot of computers, it is possible nobody would ever get to transmit, because after the random timeout, there could be a collision with another computer that is trying to transmit. In practice however, it usually works pretty well.

However there are other protocols like token ring, where a token is passed around the network and whoever has the token is the only one who can transmit. These are more deterministic since you know how often you’ll get the token, so there is a guarantee on how often you will be able to transit.

Something like USB, bandwidth can be reserved. Your USB audio interface can say I need a block of data every X milliseconds. Then nobody else can use that time slot, so if you are writing to your hard drive it will periodically need to wait. This makes sure your sound never glitches.