Glossary · Connection

ReverseHello

ReverseHello is the OPC UA TCP message, type code RHE, that a server sends immediately after dialling out to a listening client. It carries the server's ServerUri and EndpointUrl. The client answers with the ordinary Hello on the same socket and the handshake proceeds exactly as if the client had dialled.

Two fields, both load-bearing

ServerUri is the server's ApplicationUri, which the client uses to decide whether it was expecting this server at all and which configuration entry applies. EndpointUrl is the endpoint the server wants to be reached on, and the client must have that exact string in its configuration. Neither is negotiable after the fact: the client matches on them and either proceeds or drops the socket.

Where it sits among the message types

The OPC UA TCP protocol uses four-character message type codes: HEL and ACK for the handshake, RHE for ReverseHello, ERR for protocol errors, OPN, MSG and CLO for secure channel traffic. RHE is the only one sent server-first. Everything after it - buffer size negotiation in HEL/ACK, then OPN - is the standard sequence, so a packet capture of a reverse connection differs from a normal one by exactly one leading frame.

Rejection semantics

A client that cannot or will not accept the connection replies with BadTcpMessageTypeInvalid, and the server must then stop retrying that client. This makes the code diagnostic: seeing it in a server log means the target port was open and something answered, but that something was not a reverse-connect-capable OPC UA client - frequently a load balancer, a health check, or a client with the feature simply not enabled.

Example

Message sequence, reverse versus normal

Normal connect             Reverse connect
---------------            -----------------------------
client dials               server dials
  -> HEL                     <- RHE   ServerUri, EndpointUrl
  <- ACK                     -> HEL
  -> OPN                     <- ACK
  <- OPN                     -> OPN ...
  -> MSG (CreateSession)     identical from here on

Client does not support RHE  ->  BadTcpMessageTypeInvalid, server aborts retries.
The mistake people make: Assuming the URL in the ReverseHello can be rewritten client-side. It cannot: matching is exact. If the server announces a short hostname and your client configuration holds the FQDN, or the other way round, the connection never forms and neither side logs anything more helpful than a dropped socket.

Defined in: Part 6 - Mappings, OPC UA TCP message types including ReverseHello.

Last verified 7 September 2026 against OPC UA 1.05.07. OPC UA Connect is an educational resource and is not affiliated with the OPC Foundation.

Free download
OPC UA Server Acceptance Test Pack
A 40-check acceptance test you run against a vendor's server before commissioning sign-off. Weighted scoring, three hard gates, and a one-page verdict for the supplier meeting.
Get the free test pack →
Free, no course, no login