Wird der Download jedoch bspw. über ein PHP-Skript ausgeliefert, das den speed regelt, dann hängt mein Programm jedes mal. Das liegt vermutlich daran, dass das Skript erst abgearbeitet wird und danach der Response geschickt wird.
Kann ich mir nicht so recht vorstellen. Es gibt einen PHP-Ausgabepuffer, aber der muss a) explizit eingeschaltet werden (wird selten gemacht) und b) puffert er üblicherweise nur wenige Kilobyte.
Eine Möglichkeit dies zu umgehen wäre, anstatt einem HEAD-Request einen normalen GET-Reuqest zu schicken
HEAD- und GET-Anfragen werden von Skripten so gut wie nie unterschieden - hakt es also bei HEAD, müsste es auch bei GET haken.
Du solltest dir Wireshark herunterladen, um den Netzwerkverkehr nachzuvollziehen.