This paper addresses two questions. Firstly, how is it possible for an application to become aware of network conditions and secondly, given this awareness, how can a system be designed that will allow application level adaptation? A framework enabling these adaptations, consisting of three components, is proposed: A network monitor makes available to applications measurements of the Quality of Service (QoS) that the network is providing. A Quality of Service Aware Web server handles the dynamic decisions required in order to determine the optimal version of a site to send to the connecting client. A content adaptation tool allows content providers to generate, from a single high quality pool of resources, Web content that is appropriate for different QoS levels. Currently the Internet relies upon congestion control mechanisms embedded in TCP to prevent congestion collapse and control traffic flows. Yet applications are in a strong position to know how best to react to the onset of co...