2016-11-04 6 views
2

Dites-vous qu'une socket est ouverte pour Ethernet alors est-ce la même chose que la socket dans TCP/IP? Dans certains codes existants, j'ai trouvé que, il supporte le protocole Ethernet, est-ce que cela signifie que je peux me connecter à cette socket Ethernet en utilisant le client socket TCP.Différence entre Ethernet et protocole TCP/IP en programmation?

Je suis dans la confusion, s'il vous plaît aider.

Merci d'avance Sagar

Répondre

0

Une prise Ethernet brut, par exemple SOCK_RAW, ne peut pas être utilisé pour la communication TCP sans écrire le gestionnaire de protocole (vous ne voulez pas faire cela). Vous devez savoir comment sérialiser/désérialiser les trames ethernet lorsqu'une socket est ouverte en mode Ethernet brut. SOCK_STREAM est le mode pour TCP et Internet est inondé d'exemples de code client/serveur TCP.

0

Il y a une certaine confusion. Ethernet est une technologie de couche 1 et 2 dans le modèle OSI et le modèle TCP/IP. Pour communiquer directement sur 802.3, sous Linux, vous pouvez utiliser packet sockets pour générer directement une trame 802.3 et l'envoyer via la carte réseau. Vous pouvez également utiliser des sockets de paquets pour recevoir des trames 802.3. Quelque chose de différent est le socket TCP, stream sockets. Utilisez les sockets de flux pour une connexion TCP. Avec un socket de paquets, vous pouvez toujours recevoir une trame 802.3 contenant un datagramme IP qui contient un segment TCP. Cependant, pour établir une connexion TCP, vous devez avoir une communication TCP établie entre deux points. Si le code que vous avez vu indique "Ethernet protcol", vous devriez vérifier que c'est effectivement le cas, il pourrait s'agir simplement d'une idée fausse du côté du programmeur. Vérifiez le type de socket qu'ils utilisent.