Oui, j'ai déjà essayé de trouver des informations à ce sujet.Différence entre les types de socket
La documentation socket Python a cette liste de ce que je crois sont des protocoles:
SO_*
socket.SOMAXCONN
MSG_*
SOL_*
IPPROTO_*
IPPORT_*
INADDR_*
IP_*
IPV6_*
EAI_*
AI_*
NI_*
TCP_*
Que font-ils exactement? Disons que j'ai utilisé
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
Qu'est-ce que cela fait? Je comprends que c'est un socket brut, mais est-ce que IPPROTO_IP signifie que je dois tout construire? (c'est-à-dire l'en-tête IP jusqu'au TCP vers les données?)
La documentation Python indique que je peux trouver des informations sur ce qui précède dans la documentation Unix sur les sockets, mais je n'ai pas pu trouver le document. Quelqu'un sait où c'est?
Oui, IPPROTO_IP signifie IP brut, et vous ne le voulez probablement pas. (Bien que vous n'ayez pas besoin de construire l'en-tête IP, seulement l'en-tête TCP.) Pour ce qui est de la documentation, essayez http://linux.die.net/man/7/socket. – Sneftel
Merci, très apprécié. Donc, juste pour être sûr, si j'ai utilisé (IPPROTO_IP) cela signifie que tout protocole vers le haut de IP doit être construit par moi? Donc, si j'utilisais TCP, je construirais des têtes TCP, UDP, etc ...? – user3842825
Droite. De plus, pour TCP, vous devrez implémenter votre propre handshaking, accusés de réception, retransmission, etc. – Sneftel