1. A method for sending data from a source to a destination, comprising: a host providing to a sending agent of the source, virtual memory addresses of data to be sent to a destination wherein the data is stored in a plurality of physical locations of the source, each location having a physical address and a virtual memory address which is mapped to the physical address; the sending agent providing to the host at least some of the virtual memory addresses of the data to be sent to the destination; the host identifying to the sending agent the data addressed by the virtual memory addresses provided by the sending agent; and the sending agent sending the identified data to the destination.