SOAP was designed to be transport agnostic. So theoretically a SOAP message could travel over any number of SOAP intermediaries (possibly over a different transport between each pair) while it travels from the original sender to the ultimate receiver.
SOAP Web services always use HTTP as a transport (which itself might be running over TCP or SSL/TLS).
HTTP only supports a point to point connection. The HTTP client can only send a HTTP request to an HTTP server to which the server can send an HTTP response. The server can only communicate through HTTP responses with the client, which have to send the initial HTTP request first. Firewalls use this characteristics to let client requests out, but no requests in.
The nature of HTTP makes real asynchronous communication impossible.
WS-Addressing is primarily used to simulate asynchronous communication by letting the consumer specify a return address for the asynchronous SOAP response (which will be carried in an HTTP request issued from the producer). However a plain web service client cannot use this method - the consumer needs to have an URL address that the producer can send the SOAP response to - so the consumer has to also be a web server in order to participate in asynchronous SOAP communications. The existance of firewalls makes this communication even more difficult as the return address has to be accessible from the outside of the firewall.
[ November 27, 2008: Message edited by: Peer Reynders ]