TCP/IP स्टैक कोडिंग, 1: Ethernet और ARP (2016)
(saminiir.com)-
TCP/IP स्टैक इम्प्लीमेंटेशन
- TCP/IP स्टैक को सीधे इम्प्लीमेंट करना एक जटिल काम लग सकता है.
- TCP की मुख्य specification में TCP header parsing, state machine, congestion control और retransmission timeout calculation शामिल हैं.
- इस ब्लॉग सीरीज़ में Linux पर एक न्यूनतम user-space TCP/IP स्टैक इम्प्लीमेंट किया जाएगा.
- इस पोस्ट और software का उद्देश्य network और system programming को गहराई से सीखने के लिए शैक्षिक है.
-
TUN/TAP डिवाइस
- Linux kernel में low-level network traffic को intercept करने के लिए TAP डिवाइस का उपयोग किया जाता है.
- TUN/TAP डिवाइस user-space programs से configure करना आसान है और OpenVPN जैसे कई programs में उपयोग होते हैं.
- TAP डिवाइस का उपयोग करके Ethernet buffers में data पढ़ा और लिखा जा सकता है.
-
Ethernet frame format
- Ethernet, LAN में computers को जोड़ने वाली विभिन्न networking technologies की नींव है.
- Ethernet standard, 1980 में पहली बार प्रकाशित होने के बाद से काफ़ी विकसित हुआ है.
- Ethernet frame header को C struct के रूप में declare किया जा सकता है, और इसमें DMAC, SMAC, Ethertype और payload fields शामिल होते हैं.
-
Ethernet frame parsing
- GNU C compiler struct memory layout को optimize न करे, इसके लिए
packedattribute का उपयोग किया जाता है. - Ethernet frame को parse और process करने का पूरा scenario सरल है.
- GNU C compiler struct memory layout को optimize न करे, इसके लिए
-
Address Resolution Protocol (ARP)
- ARP का उपयोग 48-bit Ethernet addresses को protocol addresses से dynamic रूप से map करने के लिए किया जाता है.
- ARP packet format अपेक्षाकृत सरल है, और इसमें hardware type, protocol type, hardware size, protocol size, opcode और data fields शामिल हैं.
-
Address resolution algorithm
- ARP के परिणामों को store करने और duplicate ARP requests से बचने के लिए
translation tableका उपयोग किया जाता है. - ARP implementation की अंतिम test यह देखना है कि वह ARP requests का सही जवाब देता है या नहीं.
- ARP के परिणामों को store करने और duplicate ARP requests से बचने के लिए
-
निष्कर्ष
- Ethernet frame handling और ARP का न्यूनतम implementation अपेक्षाकृत आसान है, और इसे कुछ lines of code में किया जा सकता है.
- प्रोजेक्ट का source code GitHub पर देखा जा सकता है.
- अगली पोस्ट में ICMP echo और reply (ping), तथा IPv4 packet parsing का implementation जारी रखा जाएगा.
अभी कोई टिप्पणी नहीं है.