2011-03-11 17 views
18

से [SYN] प्राप्त करने के तुरंत बाद सर्वर [आरएसटी, एसीके] भेजता है 0_होस्ट_ए टीसीपी पर होस्टबी को कुछ डेटा भेजने की कोशिश करता है। होस्ट_B पोर्ट 8181 पर सुन रहा है। होस्ट_ए & होस्ट_B दोनों लिनक्स बॉक्स (Red Hat Enterprise) हैं। टीसीपी परत जावा एनआईओ एपीआई का उपयोग करके लागू किया गया है।टीसीपी: क्लाइंट

जो भी होस्ट_ए भेजता है, होस्ट_B प्राप्त करने में असमर्थ है।

1) Host_A (33,253)> Host_B (8181): [SYN] Seq = 0 विन = 5840 लेन = 0 एमएसएस = 1460 TSV = 513,413,781 TSER WireShark का उपयोग कर तार पर डेटा सूँघने निम्नलिखित लॉग में हुई = 0 WS = 7
2) Host_B (8181)> Host_A (33,253): [आरएसटी, एसीके] Seq = 1 Ack = 1 जीत = 0 लेन = 0

लॉग दिखाने Host_A भेजता है कि एक [ SYN] कनेक्शन स्थापित करने के लिए Host_B को ध्वजांकित करें। लेकिन [SYN, ACK] के बजाय Host_B एक [आरएसटी, एसीके] के साथ प्रतिक्रिया करता है जो कनेक्शन को रीसेट/बंद करता है। यह व्यवहार हमेशा मनाया जाता है।

मैं सोच रहा हूं कि एक टीसीपी श्रोता [एसएसएन] के जवाब में [आरएसटी, एसीके] किस परिस्थिति को भेजता है?

उत्तर

29

RST, ACK का मतलब बंदरगाह बंद है। आप सुनिश्चित हैं कि Host_B सही आईपी/इंटरफ़ेस पर सुन रहा है?

एजे रीजेक्ट के लिए अपनी फ़ायरवॉल भी देखें - टीसीपी-रीसेट

+4

के साथ आपका एरिक। धन्यवाद। वास्तव में बंदरगाह बंद नहीं है। लेकिन पाया कि बंदरगाह 8181 वास्तविक आईपी की बजाय Host_B पर 127.0.0.1 तक है।/Etc/hosts की गलत कॉन्फ़िगरेशन की तरह दिखता है। क्या जावा की InetAddress.getByName() DNS पर होस्ट फ़ाइल पसंद करता है? – Riyaz

+2

यदि पोर्ट उस आईपी से बंधे नहीं है जिसकी आप परवाह है, तो यह बंद है। खुले बंदरगाहों को tuple (dst_ip, port) द्वारा दर्शाया जाता है, और आप बाध्य नहीं होने वाले किसी से कनेक्ट करने का प्रयास कर रहे हैं। साथ ही, पता समाधान के विभिन्न कार्यान्वयन को क्रम में व्यवहार करना चाहिए जैसा कि '/ etc/nsswitch.conf' में निर्दिष्ट है। –

+0

मुझे एक ही समस्या है। मैं सीगल टूल का उपयोग कर रहा हूं, मैंने कॉन्फ़िगरेशन में सही आईपी दिया है, लेकिन हमेशा 127.0.0.1 पर बाध्यकारी है, मुझे क्या करना चाहिए? – Subbu

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