This paper proposes a new methodology for easily constructing extensible and high-fidelity TCP/IP network simulators. The methodology uses a kernel-reentering technique to reuse the existing real-life network protocol stacks, real application programs that generate traffic, and real utility programs that configure, monitor, or gather network statistics to the maximum extent. Only an event scheduler and some modifications to the kernel are needed to "glue" these existing components to collectively simulate a network. A simulator constructed this way has many advantages that a traditional network simulator cannot provide. First, reuse of real-life implementation in the simulator can generate more accurate results than a traditional simulator that abstracts a lot of away from the real implementation. Second, it can save much time and effort that would be needed if a high-fidelity simulator is developed from scratch. Third, because real application programs cannot distinguish a simulated network constructed by the simulator from a real one, all existing real-life and future application programs can directly run on any node in a simulated network.