SOAP is the protocol that Web services use to communicate. It is an XML-based protocol that specifies a container called an Envelope, which stores application payload in a second container, called the Body, and additional (usually contextual) information inside a third container called the Header. The SOAP specification describes a processing model where application messages (and their associated headers) can pass through intermediary processing nodes between the sender and receiver, where the information stored in the SOAP header blocks can be used by those intermediaries to provide various quality of service characteristics. For example, the headers may contain routing information, transaction context, security credentials, or any other protocol information.
WSDL is an interface description language for Web services and like SOAP, WSDL is currently popularized by its 1.1 version, which is due to be superseded by WSDL 1.2. A WSDL interface is composed from a number of elements, each building on the previous, from simple type and message declarations, culminating in a network addressable entity which uses the defined types and messages to expose operations onto the Web.
Though SOAP and WSDL are undoubtedly important protocols in their own right, when drawn together through tool support, their potential is significantly enhanced. Web services toolkits can consume the WSDL offered by a service and automatically generate the code to deal with messages in the format that the service expects, while providing a straightforward API to the developer.