Tach!
http://handwerkzeugs.de/httpconn.html
Du erzählst dort Sachen, die mit der Realität nichts zu tun haben. Eine Verbindung ist keine Datei und man kann sie auch nicht mit einer solchen vergleichen. Das passt hinten und vorn nicht. Über eine Verbindung kann man bunt durcheinander Daten in beide Richtungen senden und nicht erst in die eine und an Ende in die andere Richtung. Sonst könnte man sowas wie Telnet oder SSH oder RDP nicht zum Fernbedienen von Maschinen verwenden.
Bei Connection: keep-alive
wartet der Webserver mitnichten darauf, dass irgendwann noch ein Request mit Connection: close
hinterherkommt. Sobald das zweite CRLF kommt, gibt es Antwort zu diesem Request. Nachvollziehbar mit telnet auf Port 80 und
GET / HTTP/1.1
Host: localhost
Connection: keep-alive
Nach dem Request bleibt die Verbindung noch ein paar Sekunden offen und wird dann geschlossen, wenn nichts mehr kommt. Nach deiner Argumentation dürfte der Webserver gar keine Antworten senden, weil er beim Timeout gar kein Connection: close zu Gesicht bekommt.
dedlfix.