क्लाइंट भेजना समाप्त करता है, प्रॉक्सी EOF देखता है, और जवाब गायब हो जाता है। प्रॉक्सी के दोनों सॉकेट तुरंत बंद करने से ठीक यही क्रम हो सकता है। TCP रिले में एक दिशा में व्यवस्थित अंत का अर्थ यह नहीं कि दूसरी दिशा समाप्त हो गई है।

ऐसे क्लाइंट पर विचार करें जो अनुरोध भेजता है, अपना भेजने वाला पक्ष बंद करता है और जवाब की प्रतीक्षा करता है:

client -- request, then FIN --> proxy --> service
client <-------- reply ------- proxy <-- service

प्रॉक्सी के पास दो TCP कनेक्शन और स्वतंत्र रूप से आगे बढ़ती दो बाइट स्ट्रीम हैं। उसे अपने से पहले आने वाले बाइट्स अग्रेषित करने के बाद इनपुट के अंत का संकेत भी आगे ले जाना होता है।

EOF अग्रेषित करने से पहले कतार खाली करें

TCP स्ट्रीम पर गैर-शून्य आकार की प्राप्ति में, शून्य का लौटना उस आने वाली स्ट्रीम के व्यवस्थित अंत को दर्शाता है। उस पठन दिशा को पूर्ण चिह्नित करें। उससे और इनपुट की प्रतीक्षा बंद करें, लेकिन विपरीत सॉकेट के लिए पहले से कतारबद्ध बाइट्स रखें।

क्लाइंट-से-सेवा कतार खाली होने पर, POSIX सॉकेट पर shutdown(service_socket, SHUT_WR) कॉल करें। यह सेवा की ओर आगे का संचरण समाप्त करता है जबकि सेवा-से-क्लाइंट दिशा उपलब्ध रहती है। जब सेवा अपना जवाब पूरा कर ले, तो जवाब की कतार खाली करने के बाद दर्पण क्रिया लागू करें।

डिस्क्रिप्टर बंद करना उस बिंदु पर होता है जहाँ दोनों दिशाएँ और उनके लंबित बफ़र समाप्त हो चुके हों, या जहाँ त्रुटि या रद्दीकरण समाप्ति की मांग करे। ऐसे पीयर के लिए सीमित समय-सीमा रखें जो कभी अपना शेष आधा पूरा नहीं करता।

तैयारी पढ़ने का निमंत्रण है

पठनीय सॉकेट में डेटा या EOF स्थिति हो सकती है। recv कॉल करें और उसके परिणाम की व्याख्या करें। धनात्मक संख्याएँ अग्रेषित करने योग्य बाइट्स हैं; शून्य दिशा का अंत है। नॉनब्लॉकिंग सॉकेट पर, EAGAIN या EWOULDBLOCK का अर्थ है कि अभी और इनपुट नहीं है, जबकि EINTR को पुनः प्रयास की आवश्यकता हो सकती है। इनमें से कोई भी EOF जैसी वही घटना नहीं है।

लौटाए गए बाइट बफ़र में FIN फ़्लैग न खोजें। TCP इस API को क्रमबद्ध बाइट स्ट्रीम देता है; पैकेट सीमाएँ और FIN सेगमेंट सामान्य एप्लिकेशन पेलोड नहीं हैं।

यह कच्चे बाइट टनल का जीवन-चक्र है। संदेशों को पार्स करने वाली HTTP प्रॉक्सी को फिर भी HTTP फ़्रेमिंग का सम्मान करना होता है, और TLS समाप्त करने वाली प्रॉक्सी में भी TLS शटडाउन प्रोटोकॉल होता है। उन प्रोटोकॉल निर्णयों को दिशात्मक TCP रिले के ऊपर रखें।

संबंधित लेख