For the ASP Page, if it is not the script timeout setting, there are 2 other possibilities I can think of, both of which are controlled at the server:
1) IIS 6 is known to experience memory leaks in file download. when a file is being downloaded, the IIS server will hold the file in memory, the file size may be exceeding the available memory causing the problem.
2) There may be a bandwith issue. The connection may have a time out, if the download stalls for a moment, the connection is being dropped.
I tested the PHP script a few times and the download was successful each time.