human
Dans les réseaux informatiques, quelle est la différence entre un port et un socket ? J'ai googlé cela mais j'obtiens surtout des explications très techniques et je ne suis pas programmeur. Explique comme si j'avais cinq ans.
gpt
Dans les programmes informatiques, cela deviendrait très désordonné si nous devions toujours dire au système d'exploitation tous les détails de tout. " Donnez-moi les octets 0 - 4095 du fichier c:/users/jim/fichier.txt " " Donnez-moi les octets 4096 - 8191 du fichier c:/users/jim/fichier.txt " ... Garder le nom du fichier est fatigant. Passer le nom de fichier du programme au système d'exploitation tout le temps est fastidieux et inefficace. Le système d'exploitation sait sûrement que vous voulez lire ce fichier ! Ce que les systèmes d'exploitation ont, c'est une fonction « ouvrir un fichier ». Les programmes appellent cette fonction avec le nom de fichier qu'ils veulent ouvrir, et le système d'exploitation leur renvoie un *descripteur de fichier* ou un *descripteur de fichier*. Il s'agit d'un seul numéro, comme 5 ou 0x80241358, mais le système d'exploitation en garde la trace. Il conserve une liste des fichiers que votre programme a ouverts en ce moment. Il peut même utiliser le même numéro dans différents programmes, ou recycler le numéro si vous fermez un fichier et en ouvrez un autre. Il est beaucoup plus facile de demander les octets du fichier ouvert #5 que de continuer à passer le nom du fichier dans les deux sens. Ainsi, vous utilisez le système d'exploitation pour ouvrir les fichiers. Vous lui donnez un * nom de fichier * et il vous donne un * descripteur de fichier * ou un * descripteur de fichier * avec lequel travailler . De même, vous utilisez le système d'exploitation pour ouvrir des connexions réseau. Vous lui donnez une *adresse réseau* et il vous donne un *socket* avec lequel travailler. Pourquoi les appelle-t-on sockets plutôt que handles ou descripteurs ? C'est juste parce que [ les gens qui les ont inventés les appelaient sockets , et le nom est resté ] ( URL_0 ) . Mais c'est tout ce que sont les sockets ; numéros de comptabilité constitués par le système d'exploitation, afin qu'il sache laquelle de vos connexions réseau vous voulez utiliser sans avoir à lui dire l'adresse réseau tout le temps. Et c'est là que les ports entrent en jeu. Tout comme les fichiers ont des * noms de fichiers * qui les identifient de manière unique , les connexions réseau ont des * adresses réseau * qui les identifient de manière unique . Certaines connexions réseau utilisent en fait des noms de fichiers comme adresse ! Mais la plupart du temps, de nos jours, vous voulez une connexion Internet, et les adresses Internet comportent deux parties : le numéro qui identifie un autre ordinateur (l'adresse IPv4 ou l'adresse IPv6) et un autre numéro qui identifie le programme/service * sur * cet ordinateur avec lequel vous voulez parler. vers - le * port * . Vous êtes libre de choisir n'importe quel numéro de port, et si vous êtes le client plutôt que le serveur, votre connexion recevra un numéro de port aléatoire afin que le serveur puisse vous répondre. Mais les serveurs ne seraient pas facilement joignables à moins que les ports n'aient été convenus à l'avance. Parfois , c'est de facto ( le jeu DOOM a utilisé le port 666 juste parce que c'était cool ) , parfois c'est de - jure ( les courtiers IANA indiquent quels ports doivent être utilisés pour quels logiciels / protocoles , par exemple LDAP est sur le port 389 , HTTP est sur le port 80 , Microsoft Exchange est sur le port 691 ) .