Quelquun pourrait-il mexpliquer ce quest une socket? Je le vois dans de nombreux acronymes dans le contexte de SSL, etc.
Aussi, pourquoi est-il appelé socket? Est-ce uniquement parce que cest le nom quils ont inventé? Ou était-ce le premier nom quils ont trouvé?
Commentaires
- En termes simples ‘: une prise est un téléphone. Cest ‘ la chose que vous tenez dans votre main qui vous permet davoir une conversation avec un autre téléphone. Lanalogie se décompose un peu: la plupart des conversations téléphoniques sont dégal à égal. Les connexions de socket sont client à serveur. Le client (tel que, mais sans sy limiter, les logiciels de poste de travail tels que les navigateurs) se connecte à un serveur (tel quun serveur Web, un serveur de fichiers, un serveur dauthentification ou autre). Autre défaut de lanalogie: lorsque vous fermez une connexion socket, le socket est détruit, et vous devez créer un nouveau socket avant de pouvoir établir une nouvelle connexion.
- It ‘ nest pas si mal pour une analogie. Un serveur nest quun centre dappels et peut recevoir plusieurs centaines dappels actifs à la fois.
Réponse
Une socket nest quun point final logique pour la communication. Ils existent sur la couche de transport. Vous pouvez envoyer et recevoir des choses sur une socket, vous pouvez lier et écouter une socket. Un socket est spécifique à un protocole, une machine et un port, et est adressé comme tel dans len-tête dun paquet.
Beej « s guides to Network La programmation et la Communication inter-processus contiennent toutes deux de bonnes informations sur lutilisation des sockets, et même répondez à cette question exacte .
Réponse
Dans les termes les plus simples, une socket est un pseudo-fichier qui représente une connexion réseau. Une fois quun socket a été créé (en utilisant les primitives appropriées et les paramètres appropriés pour identifier lautre hôte), les écritures sur le socket sont transformées en paquets réseau qui sont envoyés et les données reçues du réseau peuvent être lues à partir de la socket.
Dans un sens, les sockets sont très similaires aux tubes: ils ressemblent à des fichiers pour les programmes qui les utilisent, mais nentraînent pas de lecture ou décriture sur un disque; ils permettent plutôt de communiquer avec un autre programme (local dans le cas des tuyaux, et po à distance dans le cas des prises). Ils offrent également, comme vous lavez mentionné, une communication bidirectionnelle (un peu comme une paire de tuyaux correctement connectés pourrait).
Enfin, il est courant pour les programmes sur une seule machine de communiquer en utilisant des protocoles réseau standard, tels que TCP ; il serait inutile daller jusquau matériel réseau (le cas échéant!), de calculer les sommes de contrôle, etc., juste pour revenir au même hôte: cest là que les sockets des domaines Unix entrent en jeu. Ce sont des sockets classiques. , sauf quils connectent des processus sur le même hôte plutôt que des processus distants, et nessaient pas du tout dutiliser des ressources réseau. De cette manière, ils sont un moyen de communication inter-processus.
Comme tripleee mentionné , au cours de lhistoire de BSD, les tubes ont été introduits plus tôt que les sockets et ont été réimplémentés à laide de sockets une fois que ceux-ci existaient. La même référence, La conception et limplémentation du système dexploitation FreeBSD , mentionne que les tubes ont ensuite été retournés à une implémentation non-socket pour des raisons de performances: cela souligne certainement le fait que les tubes partagent des similitudes.
Commentaires
- Peut-être aussi mentionner que les tuyaux sont antérieurs aux sockets, mais une fois que linterface socket a été ajoutée à Unix, cela avait beaucoup de sens. o réimplémenter les tubes en utilisant des sockets locaux.
- @tripleee: Cest ‘ un grand point historique. Voulez-vous fournir une référence?
- Une recherche rapide sur Google apparaît page 40 dans La conception et limplémentation du système dexploitation FreeBSD ; le texte mentionne ce changement dans la BSD 4.2 mais précise également que ce nest plus ainsi que ‘ est fait, pour des raisons de performances.
- Excellent, je ‘ Je vais ajouter ceci à ma réponse.
- La meilleure réponse techno de tous
Réponse
Maintenant, quest-ce que cest?
Une socket, ou « socket » peut être plusieurs choses:
Tout dabord, cest une pensée modèle et une interface de programmation dapplication (API) . Cela signifie que vous avez un ensemble de règles à suivre et un ensemble de fonctions que vous pouvez utiliser pour écrire des programmes qui font quelque chose, selon un contrat spécifié avec précision. Dans ce cas particulier, quelque chose signifie échanger des données avec un autre programme.
LAPI sockets fait largement abstraction des détails de la « communication » en général. Il résume avec qui vous parlez et comment, le tout à travers une forme de cookie-cutter (presque) cohérente et identique.
Vous pouvez créer des sockets dans différents « domaines » (comme par exempleune « socket unix » ou une « prise internet ») et de différents types de communication (par exemple une prise « datagram » ou une prise « stream ») et parler à différents destinataires, et tout fonctionne exactement de la même manière (enfin 99%, il y a évidemment des différences minimes dont vous devrez tenir compte).
Vous navez pas besoin de savoir (et vous ne voulez même pas savoir!) si vous parlez à un autre programme sur le même ordinateur ou sur un autre ordinateur, ou sil existe un réseau IPv4 ou IPv6 entre ces ordinateurs, ou peut-être un autre protocole dont vous navez jamais entendu parler.
socket
est aussi le nom de la fonction de bibliothèque (ou syscall) qui crée « le socket « , qui est un type spécial de fichier (tout sous Unix est un fichier).
Comment se compare-t-il à …
les sockets appartiennent à la même catégorie que les tubes et nom tubes
Un tube est un moyen de o ne voie communication entre un lecteur et un écrivain (tous deux étant des programmes) sur le même ordinateur. Il simule un flux de données (comme par exemple TCP).
Autrement dit, aucun « message » ou « bloc de données » individuel nexiste du point de vue du tube. Vous pouvez copier nimporte quelle quantité de données dans «une extrémité», et quelquun dautre peut lire nimporte quelle quantité de données (pas nécessairement les mêmes, et pas nécessairement en une seule fois) à «lautre extrémité» dans le même ordre doctet que vous lavez insérée .
Un tube nommé est, eh bien, simplement un tube qui possède un nom dans le système de fichiers . Cest-à-dire que cest quelque chose qui ressemble et se comporte comme un fichier, il apparaît dans la liste des répertoires et vous pouvez louvrir, y écrire, etc etc. Notez que vous pouvez également créer des fichiers spéciaux de socket (ce serait un nom socket).
Une socket, par contre, est un moyen de bidirectionnel ( » duplex « ), cela signifie que vous pouvez écrire et lire à partir du même socket, et que vous navez pas besoin de deux sockets séparés pour une communication bidirectionnelle.
De plus, un socket peut agir comme un flux (identique à un tube ), ou il peut envoyer des messages discrets et peu fiables, ou il peut envoyer des messages discrets et ordonnés (les deux premiers fonctionnent sur nimporte quel domaine, le dernier uniquement sur « domaine unix »). Il peut envoyer des messages (ou simuler un flux) à quelquun sur un ordinateur complètement différent. Une prise peut même faire une forme de communication un-à-plusieurs (multidiffusion) dans certaines conditions.
Dans cet esprit, il est clair que les sockets font quelque chose de beaucoup plus compliqué et généralement ont plus de surcharge que les tubes (qui ne sont fondamentalement rien de plus quun simple memcpy
vers et depuis un tampon!), mais si vous créez des sockets locaux (c.-à-d. sur le même ordinateur), le système dexploitation applique généralement un chemin rapide fortement optimisé, il ny a donc vraiment pas beaucoup de différence.
communication inter-processus parfois mentionnés à propos des réseaux
Oui, les sockets sont un moyen possible de communication inter-processus (la mémoire partagée et les tubes étant des exemples dalternatives). Tous en même temps, ils sont utilisés pour la « mise en réseau », comme expliqué ci-dessus.
Réponse
Une socket une abstraction . Il fournit une interface permettant aux applications dutiliser une ressource système (dans ce cas, la connexion réseau) dune manière qui permet au système dexploitation de négocier et dorganiser lutilisation dune ressource limitée par un nombre quelconque dapplications.
Si les données envoyées via le socket pouvaient être considérées comme des enveloppes de courrier, alors le socket serait votre boîte aux lettres. Vous attachez une boîte aux lettres (socket) à votre maison (programme) et y mettez votre courrier sortant (données). À une heure programmée, le facteur (système dexploitation) arrive et récupère votre courrier sortant et dépose tout courrier entrant dans la même boîte aux lettres. Votre courrier sortant est acheminé en votre nom au destinataire par le camion du facteur (connexion réseau) avec le courrier de tous vos voisins. Cela vous permet de correspondre avec des personnes éloignées sans avoir à vous soucier des dépenses, du temps, de la difficulté, etc. de livrer la lettre vous-même.
Quant à savoir pourquoi on les appelle bien « sockets », la notion que les inventeurs peuvent lappeler comme ils veulent y joue probablement un rôle important. Cependant, ce nest pas un mauvais nom à mon avis 🙂
Réponse
Pour udp ou tcp sur IP,
Une adresse de socket est la combinaison dune adresse IP et dun numéro de port.
Une adresse IP est ladresse de une machine sur Internet, par exemple unix.stackexchange.com has address 198.252.206.140
Cependant, chaque machine doit être capable de fournir plus dun service, donc la plupart des machines fourniront http (pages Web) sur le port 80 et ssh sur le port 22, et etc.
Donc unix.stackexchange.com:80
port 80
de unix.stackexchange.com
(une prise) est le point daccès de ce site Web.
Cependant, il existe dautres types de socket, voir les commentaires ci-dessous.
Commentaires
- tcp / ip nest quun type de prise. Il y en a dautres qui nont rien à voir avec tcp / ip.
- combien de types de sockets différents existe-t-il?
- @AbdulAlHazred, je connais quatre types courants utilisés avec les réseaux IP, la même chose avec ip6, deux avec unix et deux avec IPX. Je nai pas regardé ax25, atm ou appletalk. Il existe dautres protocoles pris en charge sur Linux, et il existe des protocoles que Linux ne prend pas en charge. Dans la plupart des cas, chaque protocole a des sockets stream (tcp) et datagram (udp). Les sockets bruts sont également courants, et imcp peut également avoir une interface de socket.
- Le fait est que cette réponse est incomplète en ce quelle ne couvre quun seul type de socket, et trompeuse en ce quelle représente les sockets en général comme sil sagissait toujours de sockets réseau, et spécifiquement de sockets IP (
AF_INET
).
Réponse
Je crois que vous avez posé une question sur le réseautage. Ainsi, les services TCP utilisent des sockets comme point de communication et sont constitués dune adresse IP, dun protocole et dun numéro de port.