The Story about Ping
Beacon sends Pings towards Home. Ping contain just enough information (and nothing more) for Home to understand where the Ping came from, who sent it and where it was sent to. If Home receives a Ping, it studies the content and sends an alert informing you that something happened.
Our Ping should not be confused with the famous ping command or the ICMP Echo packets. The functionality is same, but implementation is completely different. The term “ping” originates from sonar where the pulse of sound send by sonar is called “ping”.
For full disclosure the Ping packet contain the following information: Beacon’s predefined name, a sequence number and an object called Kind. Kind answers to question “What Kind of Ping is this?” and contains used protocol, destination IP address and optionally destination port. The Kind is used by the Home to understand what Beacon was trying to do when it succeeded. An example Ping translated from bits to English could be:
Beacon ‘my-secret-lair’ with a sequence number 12765 using UDP protocol sent to IP address 203.0.113.195 and port number 5353.
This Ping is constructed, encrypted and then sent using UDP to IP 203.0.113.195 and port 5353.
Kind, the sidekick of Ping
Kind can seem redundant for protocols like TCP and UDP. It is exactly the same information that is already transmitted in IP and TCP or UDP protocol headers! But it makes one thing easier: We can use port forwards and IP redirects on Home and have only one process listening on one port. And there’s no meddling around listening ports below 1024. In the future, Kind might be even more important feature.
Pinging all the time
Compared to what Sean Connery as Captain Ramius commanded in The Hunt for Red October:
Give me a ping, Vasily. One ping only, please.
Beacon is not commanded to do such thing. Beacon keeps Pinging. Continuously.