1. In a computer system having a kernel providing a mapping between virtual and physical memory address space, a method for performing an input/output operation comprising: a) registering a physical memory buffer with a network interface card (NIC), wherein said physical memory buffer is associated with a first virtual address, a size and a key wherein said NIC comprises a memory resident table and wherein said registering comprises storing in said memory resident table an address of said physical memory buffer, said first virtual address, said size and said key; b) dynamically associating said physical memory buffer with a second virtual address which is different from said first virtual address; c) as part of an application program requesting an input/output operation regarding said second virtual address, using an application table to obtain said first virtual address, said key and said size and supplying said first virtual address, said key and said size to said NIC, wherein the first virtual address and the second virtual address comprise separate and distinct virtual address locations within available virtual address space; and d) said NIC, using said first virtual address, said key and said size, to determine the location of said physical memory buffer and performing said input/output operation using said physical memory buffer without intervention of said kernel.