Maison > développement back-end > Golang > le corps du texte

Comment créer des paquets TCP personnalisés dans Go et éviter la panique « IP src invalide 127.0.0.1 » ?

Susan Sarandon
Libérer: 2024-11-24 11:04:10
original
783 Les gens l'ont consulté

How to Craft Custom TCP Packets in Go and Avoid the

Composer des paquets TCP bruts dans Go avec gopacket

Votre objectif est de créer des paquets TCP personnalisés à l'aide de gopacket et de les envoyer via des sockets bruts. Cependant, vous rencontrez un problème avec le code fourni, entraînant la panique suivante : "IP 127.0.0.1 src invalide."

Création de paquets IPv4 personnalisés

L'exemple Le code que vous avez fourni vise également à créer des en-têtes IP de couche 3 personnalisés, ce qui est une préoccupation distincte de la seule gestion des couches TCP. Voici une explication détaillée :

Création de sockets bruts dans Go

Contrairement à certaines hypothèses, la création de sockets bruts dans Go est possible en utilisant net.ListenPacket, net.DialIP , ou net.ListenIP :

conn, err := net.ListenIP("ip4:tcp", netaddr)
Copier après la connexion

Réglage de la prise IP Options

Pour définir votre propre en-tête IPv4 de couche 3, vous devez activer une option de socket connue sous le nom d'IP_HDRINCL. Ceci n'est pas pris en charge dans les packages Core Go, mais des bibliothèques tierces comme ipv4 peuvent fournir cette fonctionnalité :

conn, err := ipv4.NewRawConn(network, addr)
Copier après la connexion

Cette fonction établit une connexion brute et active IP_HDRINCL pour IPv4.

Alternatives

Pour les tâches plus simples impliquant la manipulation d'en-tête TCP, le Le code de latence peut convenir :

// Create a raw socket
fd, err := syscall.Socket(syscall.AF_INET, syscall.SOCK_RAW, syscall.IPPROTO_TCP)
Copier après la connexion

Cependant, cette approche ne permet pas de modifier les en-têtes IPv4.

Recommandations

Pour résoudre votre problème avec le code fourni, vous devrez utiliser une bibliothèque comme ipv4 pour activer IP_HDRINCL et définir des en-têtes IP personnalisés. Alternativement, vous pouvez explorer le package latency pour une approche simplifiée de la manipulation des en-têtes TCP.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal