क्योंकि जब आप सॉकेट में लिखते हैं, तो पैकेट के शीर्षलेख आपके उपयोगकर्ता-डेटा से अलग जगह पर इकट्ठे होते हैं, इसलिए नेटवर्क पैकेट में एकत्रित होने के लिए, डिवाइस को कम से कम प्राप्त करने के लिए "इकट्ठा" क्षमता की आवश्यकता होती है शीर्षलेख और डेटा।
सीपीयू को डेटा पढ़ने के लिए भी बचने के लिए (और इस प्रकार, बेकार सामानों के साथ अपने कैश को भरें, इसे कभी भी फिर से आवश्यकता नहीं है), नेटवर्क कार्ड को भी अपना आईपी और टीसीपी चेकसम उत्पन्न करना होगा (मैं हूं यहां टीसीपी मानते हैं, क्योंकि 99% थोक डेटा स्थानान्तरण टीसीपी होने जा रहे हैं)। यह ठीक है, क्योंकि आजकल वे सभी कर सकते हैं।
मुझे यकीन नहीं है कि यह सब TCP_CORK के साथ कैसे इंटरैक्ट करता है।
अधिकांश प्रोटोकॉल अपने स्वयं के हेडर हो जाते हैं, तो एक काल्पनिक प्रोटोकॉल की तरह दिखता है:
ग्राहक: अनुरोध भेजें सर्वर: कुछ मेटाडेटा भेजें; फ़ाइल डेटा
तो हमारे पास स्मृति में कुछ शीर्षलेखों को इकट्ठा करने, एक लिखने() जारी करने के लिए एक सर्वर अनुप्रयोग होता है, जिसके बाद एक sendfile() - ऑपरेशन की तरह। मुझे लगता है कि हेडर अभी भी इस मामले में कर्नेल बफर में कॉपी हो गए हैं।