मैं एक ईथरनेट ट्रेलर के साथ डेटाग्राम कैसे भेज सकता हूं? अगर मैं सॉकेटटाइप.रॉ का उपयोग करता हूं, तो मुझे पूरा आईपी हेडर भेजना होगा और मुझे नहीं पता कि यह कैसे करना है।मैं एक ईथरनेट ट्रेलर के साथ डेटाग्राम कैसे भेज सकता हूं?
6
A
उत्तर
2
शायद ऐसा कुछ?
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <linux/if_packet.h> #include <linux/if_ether.h> #include <linux/if_arp.h> #include <sys/ioctl.h> int s; unsigned char buffer[513]; struct sockaddr_ll socket_address; int main (void) { unsigned char seq; unsigned int ra; int length; struct ifreq ifr; s = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL)); if (s == -1) { printf("error creating socket\n"); return(1); } memset(&ifr,0, sizeof(struct ifreq)); strncpy(ifr.ifr_name,"eth0",IFNAMSIZ); if(ioctl(s, SIOCGIFINDEX, &ifr) < 0) { perror("ioctl SIOCGIFINDEX"); exit(1); } printf("index %d\n",ifr.ifr_ifindex); printf("socket created\n"); memset(&socket_address,0,sizeof(socket_address)); socket_address.sll_family = PF_PACKET; socket_address.sll_protocol = htons(ETH_P_ALL); socket_address.sll_ifindex = ifr.ifr_ifindex; if (bind(s, (struct sockaddr *)(&socket_address), sizeof(socket_address)) < 0) { perror("bind error"); exit(1); } printf("bound\n"); length=27; memset(buffer,0,sizeof(buffer)); //destination buffer[ 0]=0xFF; buffer[ 1]=0xFF; buffer[ 2]=0xFF; buffer[ 3]=0xFF; buffer[ 4]=0xFF; buffer[ 5]=0xFF; //source buffer[ 6]=0x00; buffer[ 7]=0x19; buffer[ 8]=0xd1; buffer[ 9]=0x02; buffer[10]=0xdc; buffer[11]=0xb3; //length buffer[12]=((length-14)>>8)&0xFF; buffer[13]=((length-14)>>0)&0xFF; //payload buffer[14]=0x12; buffer[15]=0x34; for(ra=0;ra<20;ra++) { buffer[16]=ra; if(send(s,buffer,length,0) < 0) { printf("sendto failed\n"); break; } else { printf("sent\n"); } } close(s); return(1); }
यह एक कच्चे पैकेट देना चाहिए जिसे आप वायरशर्क पर देख सकते हैं। यदि आप आईपी ईडर चाहते हैं, या इसे एक udp या ऐसा कुछ बनाते हैं तो आप इस विधि का उपयोग कर सकते हैं और हेडर स्वयं बना सकते हैं (यह आरएफसीएस पर मामूली रूप है या अन्य पैकेट हेडर के समूह को देखने के लिए केवल वायरशर्क का उपयोग करें) । ध्यान दें कि udp के लिए आपको चेकसम 0x0000 की गणना करने की आवश्यकता नहीं है एक वैध चेकसम है जिसे पारित करना है।
यदि आप चाहते हैं कि अंत में शून्य के साथ एक udp पैकेट है जो कुछ हद तक समान है, तो शायद मुझे बताएं।
2
वह ट्रेलर पैड ईथरनेट फ्रेम को उनकी न्यूनतम लंबाई (पेलोड के 46 बाइट्स) में उपयोग किया जाता है। तो एक छोटा यूडीपी पैकेट भेजें - 18 बाइट से छोटा (जैसे आईपी + यूडीपी सामान्यतः 28 बाइट्स है)
संबंधित मुद्दे
- 1. मैं एक पायथन पुस्तकालय के साथ एक एक्सबीई में डेटा के तार कैसे भेज सकता हूं?
- 2. मैं कोको से एक HTML ईमेल कैसे भेज सकता हूं?
- 3. मैं लिनक्स में आभासी ईथरनेट डिवाइस कैसे बना सकता हूं?
- 4. मैं POST डेटा कैसे भेज सकता हूं और JQuery के साथ नेविगेट कर सकता हूं?
- 5. मैं जावा से एक एसएमएस कैसे भेज सकता हूं?
- 6. मैं प्रोग्रामिंग के रूप में UILongPressGesture कैसे भेज सकता हूं?
- 7. मैं दो कंप्यूटरों के बीच तार कैसे भेज सकता हूं?
- 8. मैं PHP मेलर के साथ शामिल सीएसएस के साथ एचटीएमएल मेल कैसे भेज सकता हूं?
- 9. मैं .NET से पिछली तारीख के साथ एक ई-मेल कैसे भेज सकता हूं?
- 10. मैं अपने क्यूटी आवेदन के साथ एक फैक्स कैसे भेज सकता हूं?
- 11. मैं एक '\ n' चरित्र के साथ कई लाइनों के साथ एक ऐप्पल पुश अधिसूचना कैसे भेज सकता हूं?
- 12. मैं फ़िल्टर से पहले पैरामीटर कैसे भेज सकता हूं?
- 13. मैं ब्रॉडकास्ट रिसीवर से एक एसएमएस कैसे भेज सकता हूं और इसकी स्थिति जांच सकता हूं?
- 14. क्या मैं नोड में हेडर में कुकीज़ के साथ एक GET अनुरोध भेज सकता हूं?
- 15. मैं फॉगबगज़ को ईमेल कैसे भेज सकता हूं और इसे एक बग में बना सकता हूं?
- 16. मैं वेबसाकेट पर बड़े संदेश कैसे भेज सकता हूं?
- 17. मैं पर्ल के साथ जीमेल के माध्यम से मेल कैसे भेज सकता हूं?
- 18. मैं यूपीपी के माध्यम से PHP के साथ आईपी पते पर डेटा कैसे भेज सकता हूं?
- 19. मैं .NET Framework के साथ SSL SMTP के माध्यम से ईमेल कैसे भेज सकता हूं?
- 20. मैं यूआरएल में PHPSESSID कैसे भेज सकता हूं?
- 21. मैं ग्रेल्स के साथ टेक्स्ट/सादे और टेक्स्ट/एचटीएमएल भागों के साथ एक बहु-भाग ईमेल कैसे भेज सकता हूं?
- 22. मैं PHP वेब सेवा में छवियां कैसे भेज सकता हूं?
- 23. मैं ब्राउज़र से http हटाना अनुरोध कैसे भेज सकता हूं?
- 24. मैं सॉकेट.मैट के माध्यम से कितना डेटा भेज सकता हूं?
- 25. मैं क्रिटरसिज्म के साथ मैन्युअल रूप से अपवाद कैसे भेज सकता हूं?
- 26. सेलेनियम के साथ टेक्स्ट एरिया में मैं मुख्य तार कैसे भेज सकता हूं?
- 27. sp_send_dbmail का उपयोग करके मैं सादा पाठ ईमेल (लाइन ब्रेक के साथ) कैसे भेज सकता हूं?
- 28. मैं एक POST अनुरोध में एक फ़ाइल कैसे भेज सकता हूं?
- 29. मैं एक UIActionSheet varargs init विधि में तारों की एक सरणी कैसे भेज सकता हूं?
- 30. मैं प्रतिक्रिया कैसे समाप्त कर सकता हूं और HTTP कोड 404 वापस भेज सकता हूं?
क्या आप एक उदाहरण दिखा सकते हैं? मैंने 17 बाइट्स के साथ एक साधारण udp पैकेट भेजने की कोशिश की, यह सिर्फ डेटा के रूप में भेजता है। –
यहां तक कि एक खाली डेटाग्राम, या 1 बाइट डेटाग्राम इस व्यवहार को दिखाता है? कुल कितने बाइट्स (ईथरनेट + आईपी + udp) ने आपको ईथरियल दिखाया? – nos
60 बाइट ....... –