Quelqu'un pourrait-il s'il vous plaît expliquer très clairement la différence entre un port et une prise. Je sais qu'un port sert de porte d'accès au réseau pour un processus d'application et que le processus d'application utilise une connexion socket au numéro de port donné pour gérer la communication réseau, mais lorsque plusieurs processus écoutent sur un seul numéro de port, je constate il est difficile de comprendre la différence entre le socket et le port et comment ils s’assemblent.
networking
sockets
networks
Cobie
la source
la source
Réponses:
S est un programme serveur: disons que c'est un serveur HTTP, il utilisera donc le numéro de port bien connu pour HTTP , qui est 80. Je l'exécute sur un hôte avec une adresse IP
10.0.0.4
, de sorte qu'il écoute les connexions10.0.0.4:80
(car c'est là où tout le monde s'attendra à le trouver).À l'intérieur de S , je vais créer un socket et le lier à cette adresse: le système d'exploitation sait maintenant que les connexions entrantes
10.0.0.4:80
doivent être routées vers mon processus S via ce socket particulier.la sortie netstat une fois que le socket est lié:
NB l'adresse locale est tout en zéros parce que S ne se soucie pas de la façon dont ses clients l'atteignent
Une fois que S a lié ce socket, il accepte les connexions - chaque fois qu'un nouveau client se connecte, il
accept
retourne un nouveau socket, qui est spécifique à ce client.netstat en sortie une fois la connexion acceptée:
10.0.0.4:80
représente la fin de la connexion de S et est associé au socket renvoyé paraccept
10.0.0.5:55715
est la fin de la connexion du client et est associé au socket que le client a transmis pour se connecter . Le port du client n'est utilisé que pour acheminer les paquets de cette connexion TCP vers le processus approprié: il est attribué de manière aléatoire par le noyau du client à partir de la plage de ports éphémère.Maintenant, S peut continuer à accepter plus de connexions client. Chacun recevra son propre socket, chaque socket sera associé à une connexion TCP unique et chaque connexion aura une adresse distante unique. S suivra l’état du client (s’il en existe) en l’associant au socket.
Alors, à peu près:
accept
appels simultanés est renvoyé et ne le fait que dans un seul processus, le socket de chaque connexion entrante est unique pour une instance du serveur.socketpair
, étant un enfant de ce processus et en héritant, ou étant explicitement passé à l'un des sockets de ce processusla source
Pensez à votre machine comme à un immeuble d'habitation:
Un port est un numéro d'appartement.
Une prise est la porte d'un appartement.
Une adresse IP est l'adresse du bâtiment.
la source
A socket is the door of an apartment.
Mais ne pourrait-il pas y avoir de nombreuses sockets ouvertes sur un port?Un port fait partie de l'adresse dans les protocoles TCP et UDP. Il est utilisé pour aider le système d'exploitation à identifier quelle application doit récupérer les données reçues. Un système d'exploitation doit prendre en charge les ports pour prendre en charge TCP et UDP, car les ports font partie intégrante de TCP et UDP.
Un socket fait partie de l'interface que le système d'exploitation présente aux applications pour leur permettre d'envoyer et de recevoir des données réseau. La plupart des implémentations de socket prennent en charge de nombreux protocoles autres que TCP et UDP, dont certains n'ont pas de concept de port. Un système d'exploitation n'a pas besoin de supporter les sockets pour supporter TCP ou UDP; il pourrait fournir une interface différente pour les applications à utiliser. Un socket est simplement un moyen d’envoyer et de recevoir des données sur un port spécifique.
la source
Un ordinateur a une adresse IP qui l'identifie en tant qu'entité distincte du réseau. Nous ajoutons un nombre supplémentaire à cela pour nous permettre de différencier les connexions vers cet ordinateur. C'est le numéro de port. Sur le système d'exploitation de la connexion, vous avez besoin de tampons, d'état de connexion, etc. Cet objet logique est le socket.
la source
Une socket est un chemin de communication vers un port. Lorsque vous souhaitez que votre programme communique via le réseau, vous lui avez donné le moyen de s’adresser au port. Pour ce faire, vous créez un socket et vous le connectez au port. Fondamentalement, socket = IP + ports Les sockets fournissent un accès au port + ip
la source
Une adresse IP identifie le périphérique, c’est-à-dire l’adresse du périphérique en question. Lorsque vous atteignez la machine en utilisant IP, le port définit le processus de communication à utiliser sur cette machine.
Donc, pour que la communication ait lieu, vous avez besoin du port + IP qui s'appelle socket.
la source