क्या हम लेयर 3 आईसीएमपी पैकेट के लिए srp() फ़ंक्शन का उपयोग कर सकते हैं? मैं देखता हूं कि जब हम एक आईसीएमपी इको-अनुरोध पैकेट तैयार करते हैं और भेजने/प्राप्त करने के लिए sr() का उपयोग करते हैं, तो हम इसे इंटरफ़ेस से बाहर नहीं भेजते हैं, इसलिए गंतव्य से कोई प्रतिक्रिया नहीं होती है। लेकिन अगर हम srp() फ़ंक्शन का उपयोग करते हैं तो वही पैकेट हम प्रतिक्रिया देखते हैं। हमें sr() और जब srp() का उपयोग करना चाहिए? प्रलेखन में यह बताता है कि एल 2 के लिए एल 3 पैकेट और एसआरपी() के लिए एसआर() का उपयोग किया जाना है? लेकिन मेरे मामले में मुझे यकीन नहीं है कि क्यों sr() आईसीएमपी पैकेट के लिए काम नहीं कर रहा है? क्या कुछ विशेषज्ञ मुझे समझने में मदद कर सकते हैं?स्कैपी में आईसीएमपी पैकेट भेजना और सही इंटरफेस चुनना
क्या कोई मुझे बता सकता है कि "iface" तर्क हमेशा की आवश्यकता है या नहीं। इसके बिना स्कैपी कैसे पता चलेगा कि किस इंटरफ़ेस को पैकेट भेजना है?
केस 1: तर्क के रूप में iface साथ sr() फ़ंक्शन:
sr(icmp,iface="eth0")
शुरू उत्सर्जन:
WARNING: Mac address to reach destination not found. Using broadcast.
Finished to send 1 packets.
^C
Received 0 packets, got 0 answers, remaining 1 packets
(<Results: TCP:0 UDP:0 ICMP:0 Other:0>, <Unanswered: TCP:0 UDP:0 ICMP:1 Other:0>)
से ऊपर मैं आईपी से किसी भी ICMP प्रतिक्रिया नहीं दिख रहा है 192.168.25.1
केस 2: एसआर() फ़ंक्शन बिना iface:
sr(icmp)
.Begin emission:
......WARNING: Mac address to reach destination not found. Using broadcast.
.Finished to send 1 packets.
...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................^C
Received 887 packets, got 0 answers, remaining 1 packets
(<Results: TCP:0 UDP:0 ICMP:0 Other:0>, <Unanswered: TCP:0 UDP:0 ICMP:1 Other:0>)
यदि आप प्राप्त पैकेट के ऊपर देखते हैं तो अधिक है लेकिन मुझे कोई आईसीएमपी प्रतिक्रिया नहीं दिखाई दे रही है।
केस 3: SRP साथ ICMP पैकेट भेजा जा रहा है (के बजाय) sr():
srp(icmp,iface="eth0")
Begin emission:
Finished to send 1 packets.
*
Received 1 packets, got 1 answers, remaining 0 packets
(<Results: TCP:0 UDP:0 ICMP:1 Other:0>, <Unanswered: TCP:0 UDP:0 ICMP:0 Other:0>)
यहाँ मैं SRP() sr() फ़ंक्शन के बजाय समारोह इस्तेमाल किया और अब मुझे लगता है कि देख आईसीएमपी गूंज अनुरोध ठीक से भेजा गया था और मुझे प्रतिक्रिया भी मिली।
>>> icmp.show2()
###[ Ethernet ]###
dst: 02:00:00:11:01:03
src: 02:00:20:ee:64:01
type: 0x800
###[ IP ]###
version: 4L
ihl: 5L
tos: 0x0
len: 28
id: 1
flags:
frag: 0L
ttl: 64
proto: icmp
chksum: 0xc78c
src: 192.168.25.2
dst: 192.168.25.1
\options\
###[ ICMP ]###
type: echo-request
code: 0
chksum: 0xf7ff
id: 0x0
seq: 0x0
>>>
ग्रेट योएल। मैंने ईथर() को दिए बिना एक आईसीएमपी पैकेट तैयार किया और मैंने देखा कि sr() जैसा कि उल्लेख किया गया है। मैंने यह भी देखा कि स्कैपी में रूटिंग टेबल सिंक से बाहर थी। मैंने इसे पुनर्वित्त किया और अब यह sr() के लिए सही निकास iface ले रहा था। अपनी त्वरित प्रतिक्रिया के लिए धन्यवाद। – Pradeep