Most Internet services, including Web, FTP, and streaming, have been realized on top of TCP, which is the de facto protocol for data delivery over the Internet. Therefore, in order to achieve high-performance data delivery over TCP, we thoroughly analyze TCP-based data delivery and identify three critical mismatches in a general file system design while supplying data to TCP. The first is the frequent sleeping/ waking up of a server process that accompanies excessive context switching overheads due to processing TCP data and ACK segments in different contexts. The second is the inefficient uniform data prefetching for TCP connections, irrespective of their characteristics such as bandwidth, latency, and the status of a send buffer. The third is inefficient disk access due to the ignorance of abrupt changes in TCP connections. As a remedy to these mismatches, we newly design a TCP-plugged file system (TPF) which is comprised of three novel mechanisms, each of which relieves the identified mismatches, integrated data sending routine, TCP aware data prefetching, and eager disk request cancellation. With these mechanisms, TPF becomes capable of supplying data managed by a file system to TCP connections timely and seamlessly and becomes reactive to abrupt changes in TCP connections. As a consequence, TPF provides minimal context switching overhead, high buffer utilization, and highly effective disk access utilization. We have implemented and tested the mechanisms in Linux 2.4. The experimental results show that the number of context switching is reduced by up to 40 percent and the overall system performance is improved by 3-34 percent.