2011-09-14 10 views
12
struct sockaddr { 
    unsigned short sa_family; // address family, AF_xxx 
    char   sa_data[14]; // 14 bytes of protocol address 
}; 

इस संरचना वास्तव में क्या अर्थ "पता परिवार" "sa_family" द्वारा दर्शाया है?समझौता struct sockaddr

क्या इसका मतलब यह है कि टीसीपी/यूडीपी जैसे प्रोटोकॉल में "पते" हैं? खैर, प्रोटोकॉल पहचान संख्या हो सकती है पते नहीं, मुझे लगता है।

वैसे भी, यदि हां, तो किस आधार पर उनके परिवारों को विभाजित किया गया है?

उत्तर

18

पते का प्रारूप और आकार आमतौर पर प्रोटोकॉल विशिष्ट होता है।

sockaddr पता संरचनाओं कि एक भेदभाव संघ की तरह काम का एक सेट के आधार के रूप में प्रयोग किया जाता है, http://www.retran.com/beej/sockaddr_inman.html देखते हैं। आप आम तौर पर sa_family देखते हैं और फिर उपयुक्त पते परिवार की विशिष्ट पता संरचना में डाल देते हैं।

टीसीपी और यूडीपी के पास उनके लिए विशिष्ट पते नहीं हैं, बल्कि आईपी स्तर के आईपीवी 4 और आईपीवी 6 के लिए विभिन्न आकार के पते हैं।

यह भी देखें:

+0

धन्यवाद, लेकिन फिर इस मामले में पता आकार * निश्चित * 14 'sa_data [14] 'क्यों है? –

+0

और यदि आकार प्रोटोकॉल के प्रकार पर निर्भर है, तो प्रोटोकॉल को रन टाइम पर तय किया जा सकता है तो सामान्य मामले के रूप में क्या सेट किया जाना है? –

+1

http://msdn.microsoft.com/en-us/library/ff570822%28v=vs.85%29.aspx देखें। यह बताता है कि सॉकडर संरचना अधिकांश पता परिवारों के लिए एक परिवहन पता रखने के लिए काफी बड़ी है। तो यह काफी बड़ा बनाने के लिए 14 बाइट्स है। –

0

मैं जब C/C jnetpcap getHardwareAddress() विधि नकल करने की कोशिश कर रहा ++ बाहर इस पाया। मैक पता निहित है, जब sa_family 17-15 (0x11, AF_PACKET) है, बाइट 10-15 में।

संबंधित मुद्दे