TCP-Hallef-Schluss viru schécken, nodeems d'waart Byte eidel gemaach goufen
Behandelt EOF an engem TCP-Proxy, ouni gepufferten Daten ze verléieren oder d'Äntwert an der anerer Richtung ofzeschneiden.
De Client ass fäerdeg mat Schécken, de Proxy gesäit EOF, an d'Äntwert verschwënnt. Béid Proxy-Sockets direkt zouzemaachen kann genau dës Reiefolleg verursaachen. An engem TCP-Relay heescht en uerdentlechen Enn an enger Richtung net, datt déi aner Richtung fäerdeg ass.
Betruecht e Client, deen eng Ufro schéckt, seng Sendesäit zoumécht an op d'Äntwert waart:
client -- request, then FIN --> proxy --> service
client <-------- reply ------- proxy <-- service
De Proxy huet zwou TCP-Verbindungen an zwou onofhängeg beweegend Byte-Stréim. Hie muss d'Uzeechen vum Enn vum Input weiderdroen, nodeems hien d'Byte gedroen huet, déi dovir kommen.
Maacht d'Schlaang eidel, ier EOF weidergeschéckt gëtt
Bei engem Empfang vun enger Gréisst déi net null ass op engem TCP-Stroum bedeit eng Nulll zréck en uerdentlechen Enn vun deem erakommende Stroum. Markéiert déi Liesrichtung als fäerdeg. Hält op, op méi Input vun do ze waarden, awer behält d'Byte, déi schonn an der Schlaang fir de géigeniwwer Socket stinn.
Soubal d'Schlaang vum Client zum Service eidel ass, rufft shutdown(service_socket, SHUT_WR) op engem POSIX-Socket. Dat beendet weider Iwwerdroung Richtung Service, während d'Richtung vum Service zum Client verfügbar bleift. Wann de Service seng Äntwert fäerdeg huet, applizéiert déi gespigelt Operatioun, nodeems d'Äntwertschlaang eidel ass.
D'Zoumaache vun den Deskriptoren gehéiert zu deem Punkt, wou béid Richtungen an hir waart Puffer fäerdeg sinn, oder wou e Feeler oder en Ofbroch en Enn verlaangen. Hält eng begrenzt Zäitlimit fir e Partner, dee säin iwwerege Rescht ni fäerdeg mécht.
Bereetschaft ass eng Invitatioun ze liesen
En liesbare Socket kann Daten oder en EOF-Zoustand hunn. Rufft recv op an interpretéiert d'Resultat. Positiv Zuelen sinn Byte fir weiderzeschécken; null ass d'Enn vun der Richtung. Op engem net-blockéierende Socket bedeit EAGAIN oder EWOULDBLOCK, datt et am Moment keen weideren Input gëtt, während EINTR eng Nei-Probe verlaangen kann. Keng vun deenen zwee ass déi selwecht Evenement wéi EOF.
Sicht net no engem FIN-Fändel am zréckginnene Byte-Puffer. TCP liwwert dësem API en uerdentlechen Byte-Stroum; Pakgrenzen an de FIN-Segment sinn net gewéinlech Applikatiounslascht.
Dëst ass de Liewenszyklus vun engem rouen Byte-Tunnel. En HTTP-Proxy, deen Noriichten parst, muss ëmmer nach d'HTTP-Kaderung respektéieren, an en TLS-Enn-Proxy huet och en TLS-Zoumaachprotokoll. Hält dës Protokollsentscheedungen iwwer dem richtungsbezunnenen TCP-Relay.