Quelle est la différence entre un port et une prise?

C'était une question soulevée par l'un des ingénieurs logiciels de mon organisation. Je suis intéressé par la définition la plus large.

745
demandé sur John Woo 2008-09-30 14:04:01

30 réponses

résumé

une socket TCP est un endpoint instance défini par une adresse IP et un port dans le contexte d'une connexion TCP particulière ou de l'état d'écoute.

un port est un identifiant de virtualisation définissant un endpoint de service (par opposition à un service instance endpoint alias identifiant de session).

une socket TCP est et non une connexion , c'est le point final d'une connexion spécifique.

il peut y avoir des raccordements simultanés à un point terminal de service , parce qu'une connexion est identifiée par à la fois ses points terminaux locaux et éloignés , ce qui permet d'acheminer le trafic à une instance de service spécifique.

il ne peut y avoir qu'un auditeur prise pour une combinaison adresse/port .

Exposition

c'était une question intéressante qui m'a forcé à réexaminer un certain nombre de choses que je pensais savoir à l'envers. On pourrait penser qu'un nom comme "socket" serait explicite: il a été évidemment choisi pour évoquer l'imagerie du point final dans lequel on branche un câble réseau, il y a de forts parallèles fonctionnels. Néanmoins, dans le jargon du réseau, le mot "socket" porte tellement bagages qu'un réexamen attentif est nécessaire.

au sens le plus large, un port est un point d'entrée ou de sortie. Bien qu'il ne soit pas utilisé dans un contexte de réseau, le mot français porte signifie littéralement porte ou passerelle , ce qui souligne davantage le fait que les ports sont des points terminaux de transport, que vous expédiez des données ou de grands conteneurs en acier.

pour les besoins de cette discussion je limiterai prise en compte du contexte des réseaux TCP-IP. Le modèle OSI est très bien, mais il n'a jamais été complètement mis en œuvre, et encore moins largement déployé dans des conditions de trafic intense.

la combinaison d'une adresse IP et d'un port est strictement connue comme un endpoint et est parfois appelée socket. Cette utilisation provient de la RFC793, la spécification TCP originale.

TCP connexion est définie par deux points de terminaison aka sockets .

un terminal (socket) est défini par la combinaison d'une adresse réseau et d'un identifiant port . Notez que address / port ne pas identifier complètement une socket (plus sur ce plus tard).

le but des ports est de différencier plusieurs endpoints sur une adresse réseau donnée. On pourrait dire qu'un port est un terminal virtualisé. Cette virtualisation fait plusieurs connexions simultanées sur une seule interface réseau possible.

c'est la paire de douilles (le 4-tuple composé de l'adresse IP du client, numéro de port du client, adresse IP du serveur, et le numéro de port du serveur) qui spécifie les deux points de terminaison de manière unique identifie chaque connexion TCP dans un Internet. ( TCP-IP Illustrated Volume 1 , W. Richard Stevens)

dans la plupart des c-derived les langages, les connexions TCP sont établis et manipulés en utilisant des méthodes sur une instance d'une classe de Socket. Bien qu'il soit commun d'opérer sur un niveau plus élevé d'abstraction, typiquement une instance d'une classe NetworkStream, cela expose généralement une référence à un objet socket. Pour le codeur, cet objet socket semble représenter la connexion parce que la connexion est créée et manipulée en utilisant les méthodes de l'objet socket.

en C#, pour établir une connexion TCP (à un auditeur existant) vous créez d'abord un TcpClient . Si vous ne spécifiez pas un endpoint au constructeur TcpClient il utilise par défaut - d'une manière ou d'une autre le endpoint local est défini. Puis vous invoquez le Connect méthode sur l'instance que vous avez créé. Cette méthode nécessite un paramètre décrivant l'autre paramètre.

Tout cela est un peu confus et vous mènent à croire qu'une socket est une connexion, qui est connerie. J'ai travaillé sous cette fausse impression jusqu'à ce que Richard Dorman pose la question.

ayant beaucoup lu et réfléchi, je suis maintenant convaincu qu'il serait beaucoup plus logique d'avoir une classe TcpConnection avec un constructeur qui prend deux arguments, LocalEndpoint et RemoteEndpoint . Vous pourriez probablement soutenir un seul argument RemoteEndpoint lorsque les valeurs par défaut sont acceptables pour le paramètre local. Ceci est ambigu sur les ordinateurs multi-pièces, mais l'ambiguïté peut être résolue en utilisant la table de routage en sélectionnant l'interface avec le chemin le plus court vers le point terminal distant.

la clarté serait également améliorée à d'autres égards. Une socket est et non identifiée par la combinaison de l'adresse IP et du port:

[...]TCP démultiplexe les segments entrants en utilisant les quatre valeurs qui comprennent les adresses locales et étrangères: l'adresse IP de destination, le numéro de port de destination, l'adresse IP source et le numéro de port source. TCP ne peut pas déterminer quel processus reçoit un segment entrant en regardant seulement le port de destination. De plus, le seul des [différents] points d'extrémité à [un numéro de port donné] qui recevra les demandes de connexion entrantes est celui de l'état listen. (p255, TCP-IP Illustrated Volume 1 , W. Richard Stevens)

comme vous pouvez le voir, il n'est pas seulement possible, mais très probablement pour un service réseau d'avoir de nombreux sockets avec la même adresse/port, mais seulement une socket écouteur sur une combinaison adresse/port particulière. Les implémentations typiques d'une bibliothèque présentent une classe de socket, dont une instance est utilisée pour créer et gérer une connexion. Cette situation est extrêmement regrettable, car elle est source de confusion et a conduit à une les deux concepts.

Hagrawal ne me croit pas (voir les commentaires) donc voici un vrai échantillon. J'ai connecté un navigateur Web à http://dilbert.com puis netstat -an -p tcp . Les six dernières lignes de la sortie contiennent deux exemples du fait que l'adresse et le port ne sont pas suffisants pour identifier une socket de façon unique. Il y a deux connexions distinctes entre 192.168.1.3 (mon poste de travail) et 54.252.92.236: 80

  TCP    192.168.1.3:63240      54.252.94.236:80       SYN_SENT
  TCP    192.168.1.3:63241      54.252.94.236:80       SYN_SENT
  TCP    192.168.1.3:63242      207.38.110.62:80       SYN_SENT
  TCP    192.168.1.3:63243      207.38.110.62:80       SYN_SENT
  TCP    192.168.1.3:64161      65.54.225.168:443      ESTABLISHED

depuis un socket est le point final d'une connexion, il y a deux sockets avec la combinaison adresse/port 207.38.110.62:80 et deux autres avec la combinaison adresse/port 54.252.94.236:80 .

je pense que le malentendu de Hagrawal provient de mon utilisation très prudente du mot"identifie". Je veux dire"s'identifie complètement, sans ambiguïté et de façon unique". Dans l'échantillon ci-dessus, il y a deux paramètres avec la combinaison adresse/port 54.252.94.236:80 . Si vous n'avez que l'adresse et le port, vous n'avez pas j'ai assez d'informations pour distinguer ces sockets. Il ne suffit pas d'informations pour identifier une socket.

Addendum

paragraphe deux de la section 2.7 de RFC793 dit

une connexion est entièrement spécifiée par la paire de douilles aux extrémités. Un socket local peut participer à de nombreuses connexions à différents socket.

cette définition de la socket n'est pas utile d'un point de vue de la programmation parce qu'il n'est pas le même qu'une socket objet , qui est le point final d'une connexion particulière. Pour un programmeur, et la plupart des auditeurs de cette question sont des programmeurs, c'est une différence fonctionnelle vitale.

Références

  1. TCP-IP Illustrated Volume 1 the Protocols , W. Richard Stevens, 1994 Addison Wesley

  2. RFC793 , Information Sciences Institute, University of Southern California for DARPA

  3. RFC147 , la définition D'une prise, Joel M. Winett, Lincoln Laboratory

817
répondu Peter Wone 2017-07-31 06:12:56

une douille se compose de trois choses:

  1. une adresse IP
  2. Un protocole de transport
  3. A Numéro de port

un port est un nombre compris entre 1 et 65535 inclusivement qui signifie une porte logique dans un dispositif. Chaque connexion entre un client et un serveur nécessite une prise unique.

par exemple:

  • 1030 est un port.
  • (10.1.1.2 , TCP , port 1030) est une socket.
157
répondu RT_ 2013-06-02 22:52:51

une socket représente une connexion unique entre deux applications réseau. Ces deux applications fonctionnent nominalement sur des ordinateurs différents, mais les sockets peuvent également être utilisés pour la communication entre processeurs sur un seul ordinateur. Les Applications peuvent créer plusieurs sockets pour communiquer entre eux. Les Sockets sont bidirectionnels, ce qui signifie que chaque côté de la connexion est capable d'envoyer et de recevoir des données. Par conséquent, une socket peut être créée théoriquement à n'importe quel niveau du modèle OSI à partir de 2. Les programmeurs utilisent souvent des sockets dans la programmation réseau, bien qu'indirectement. Les bibliothèques de programmation comme Winsock cachent de nombreux détails de bas niveau de la programmation socket. Les douilles sont largement utilisées depuis le début des années 1980.

un port représente un point terminal ou "canal" pour les communications réseau. Les numéros de ports permettent à différentes applications sur le même ordinateur d'utiliser des ressources réseau sans interférer les unes avec les autres. Les numéros de Port apparaissent le plus souvent dans la programmation réseau, en particulier la programmation socket. Parfois, cependant, les numéros de ports sont rendus visibles à l'utilisateur occasionnel. Par exemple, certains sites Web qu'une personne visite sur Internet utilisent une URL comme celle-ci:

http://www.mairie-metz.fr:8080 / dans cet exemple, le numéro 8080 fait référence au numéro de port utilisé par le navigateur web pour se connecter au serveur Web. Normalement, un site Web utilise le numéro de port 80 et ce numéro n'a pas besoin d'être inclus avec L'URL (bien qu'il puisse l'être).

dans les réseaux IP, les numéros de port peuvent théoriquement varier de 0 à 65535. La plupart des applications réseau les plus populaires, cependant, utilisent des numéros de port au bas de la gamme (comme 80 pour HTTP).

Note: le terme port se réfère également à plusieurs autres aspects de la technologie de réseau. Un port peut faire référence à un point de connexion physique pour les périphériques tels que serial, en parallèle, et des ports USB. Le terme port fait également référence à certains points de connexion Ethernet, tels que ceux situés sur un hub, un commutateur ou un routeur.

ref http://compnetworking.about.com/od/basicnetworkingconcepts/l/bldef_port.htm

ref http://compnetworking.about.com/od/itinformationtechnology/l/bldef_socket.htm

86
répondu Galwegian 2016-06-07 01:55:44

avec une certaine analogie

bien que beaucoup de choses techniques sont déjà données ci-dessus pour sockets ... Je voudrais ajouter ma réponse, juste au cas, si quelqu'un ne pouvait pas encore sentir la différence entre ip, port et sockets

Considérer un serveur S ,

et dire personne X, Y, Z besoin d'un service (dire service de chat) à partir de ce serveur s

puis

l'adresse IP indique --> - qui? est ce serveur de chat 's' que X, Y, Z veulent contacter

OK, vous avez "qui est le serveur"

mais supposons que server 's' offre aussi d'autres services à d'autres personnes, dites 'S' fournit des services de stockage aux personnes A,B, C

puis

---> laquelle? service (X,Y,Z) ont besoin, à savoir service de chat et pas que le service de stockage

OK.., vous faites serveur pour en venir à savoir que 'chat service' est ce que vous voulez et non le stockage

mais

vous êtes trois et le serveur pouvez identifier tous les trois différemment

il vient le socket

maintenant dit socket --> laquelle? connexion particulière

c'est-à-dire , disons,

douille 1 pour personne X

douille 2 pour personne Y

et douille 3 pour personne Z

j'espère que ça aidera quelqu'un qui était encore confus :)

45
répondu eRaisedToX 2018-08-03 14:41:36

tout D'abord, je pense que nous devrions commencer par un peu de compréhension de ce qui constitue obtenir un paquet de A à B.

une définition courante pour un réseau est l'utilisation du modèle OSI qui sépare un réseau en un certain nombre de couches selon le but. Il y en a quelques-unes importantes, que nous aborderons ici:

  • Le couche liaison de données . Cette couche est responsable de transmettre des paquets de données d'un périphérique réseau à un autre est juste au-dessus de la couche qui effectue la transmission. Il parle des adresses MAC et sait trouver des hôtes basés sur leur adresse MAC (hardware), mais rien de plus.
  • la couche réseau est la couche qui vous permet de transporter des données à travers des machines et des frontières physiques, telles que des dispositifs physiques. La couche réseau doit essentiellement supporter une adresse supplémentaire mécanisme basé qui se rapporte en quelque sorte à l'adresse physique; entrer le protocole Internet (IPv4). Une adresse IP peut obtenir votre paquet de A à B sur internet, mais ne sait rien sur la façon de traverser des houblons individuels. Ceci est traité par la couche ci-dessus en accord avec les informations de routage.
  • Le transport layer . Cette couche est chargée de définir la façon dont l'information est transmise de A à B et toute restriction, vérification ou erreur sur celle-ci. comportement. Par exemple, TCP ajoute des informations supplémentaires à un paquet, de sorte qu'il est possible de déduire si des paquets ont été perdus.

TCP contient, entre autres, le concept de ports . Il s'agit effectivement de différents paramètres de données sur la même adresse IP à laquelle une Socket Internet ( AF_INET ) peut se lier.

en l'occurrence, en l'occurrence UDP , et autre couche de transport protocole. Ils ne sont pas techniquement ont besoin d'avoir des ports, mais ces ports fournissent un moyen pour les applications multiples dans les couches ci-dessus d'utiliser le même ordinateur pour recevoir (et en effet faire) les connexions sortantes.

qui nous amène à l'anatomie d'une connexion TCP ou UDP. Chacune dispose d'un port source et de l'adresse et un port cible et l'adresse. C'est ainsi que dans n'importe quelle session donnée, l'application cible peut répondre, aussi bien que recevoir, de source.

donc les ports sont essentiellement un moyen prescrit par les spécifications pour permettre plusieurs connexions simultanées partageant la même adresse.

maintenant, nous devons jeter un oeil à la façon dont vous communiquez du point de vue de l'application au monde extérieur. Pour ce faire, vous devez demander gentiment à votre système d'exploitation et puisque la plupart des os prennent en charge la façon de faire des Sockets Berkeley, nous voyons que nous pouvons créer des sockets impliquant des ports à partir d'une application comme ceci:

int fd = socket(AF_INET, SOCK_STREAM, 0); // tcp socket
int fd = socket(AF_INET, SOCK_DGRAM, 0); // udp socket
// later we bind...

Super! Donc dans les structures sockaddr , nous allons spécifier notre port et bam! Travail de fait! Enfin, presque, sauf:

int fd = socket(AF_UNIX, SOCK_STREAM, 0);

est également possible. Urgh, qui a jeté une clé dans les travaux!

Ok, et bien en fait non. Tout ce que nous devons faire, c'est trouver des définitions appropriées:

  • une socket internet est la combinaison d'une adresse IP, d'un protocole et de son numéro de port associé sur lequel un service peut fournir des données. Donc tcp port 80, stackoverflow.com est une socket internet.
  • une socket unix est un paramètre de la CIB représenté dans le système de fichiers, par exemple /var/run/database.sock .
  • une API socket est une méthode pour demander à une application de pouvoir lire et écrire des données dans une socket.

voilà! Qui remet de l'ordre dans les choses. Donc, dans notre schéma alors,

  • A le port est un identificateur numérique qui, dans le cadre d'un protocole de couche transport, identifie le numéro de service qui doit répondre à la demande.

donc vraiment un port est un sous-ensemble des exigences pour former une socket internet. Malheureusement, il arrive que le sens du mot socket a été appliquée à plusieurs idées différentes. Alors je vous conseille vivement de nommer votre prochain socket de projet, juste pour ajouter à la confusion;)

40
répondu 2012-04-07 20:17:03

une socket = adresse IP + un port (adresse numérique)

Ensemble, ils identifient un point final pour une connexion réseau sur une machine. (Est-ce que je viens de recaler network 101?)

25
répondu Gishu 2008-09-30 10:05:47

il semble y avoir beaucoup de réponses mettant en parallèle socket et la connexion entre 2 PC..je pense que c'est totalement faux. Une socket a toujours été le endpoint sur 1 PC, qui peut ou non être connecté - sûrement nous avons tous utilisé écouteur ou sockets UDP* à un moment donné. L'important, c'est qu'il soit adressable et actif. Envoyer un message à 1.1.1.1: 1234 est peu probable, car il n'y a pas de socket défini pour ce paramètre.

Les Sockets sont spécifiques à un protocole - de sorte que la mise en œuvre de l'unicité à la fois les TCP / IP et UDP / IP utilise* (adresseip:port), est différente de celle, par exemple., IPX (Réseau, Nœud, et...ahem, socket, mais une autre prise de courant que l'on entend par "socket" terme. Les numéros de socket IPX sont équivalents aux ports IP). Mais, ils offrent tous un point final unique adressable.

depuis que L'IP est devenue le protocole dominant, un port (en termes de réseau) est devenu synonome avec un numéro de port UDP ou TCP - qui est une partie de l'adresse socket.

  • UDP est connexion-moins - ce qui signifie pas de circuit virtuel entre les 2 points de terminaison est jamais créé. Cependant, nous nous référons toujours à "UDP sockets comme le point final. Les fonctions API indiquent clairement que les deux sont des types de sockets différents. - SOCK_DGRAM est UDP (envoyer un message) et SOCK_STREAM est TCP (création d'un circuit virtuel).

  • techniquement, L'en-tête IP détient l'adresse IP, et le protocole sur IP (UDP ou TCP) détient le numéro de port. Cela permet d'avoir d'autres protocoles (par ex. ICMP qui n'ont pas de numéro de port, mais qui ont des informations d'adressage IP).

22
répondu Mark Brackett 2008-09-30 13:26:46

brève réponse.

A port peut être décrit comme une adresse interne dans un hôte qui identifie un programme ou un processus.

Un socket peut être décrit comme un interface de programmation autoriser un programme à communiquer avec d'autres programmes ou processus, sur internet ou en local.

22
répondu Andy 2014-07-27 14:55:37

en général, vous obtiendrez beaucoup de théorique, mais l'une des façons les plus faciles de différencier ces deux concepts est la suivante:

afin d'obtenir un service vous avez besoin d'un numéro de service. Ce numéro de service s'appelle un port. Simple que cela.

par exemple, le service HTTP fonctionne sur le port 80.

maintenant, beaucoup de gens peuvent demander le service et une connexion client - serveur a établi. Il y aura beaucoup de connexions. Chaque connexion représente un client. Afin de maintenir chaque connexion, le serveur crée une socket par connexion pour maintenir son client.

Espérons que cette aide.Remercier.

20
répondu kta 2013-12-13 10:09:45

ce sont des termes de deux domaines différents: 'port' est un concept de réseau TCP/IP, 'socket' est une chose API (programmation). Une 'socket' est réalisée (en code) en prenant un port et un nom d'hôte ou un adaptateur réseau et en les combinant dans une structure de données que vous pouvez utiliser pour envoyer ou recevoir des données.

15
répondu Roel 2008-09-30 10:08:29

après avoir lu les excellentes réponses mises aux voix, j'ai trouvé que le point suivant avait besoin d'emphase pour moi, un nouveau venu à la programmation de réseau:

TCP-IP, les connexions sont bi-directionnelles voies de raccordement une seule adresse:port de la combinaison avec une autre adresse:port de la combinaison. Par conséquent, chaque fois que vous ouvrez une connexion depuis votre machine locale vers un port sur un serveur distant (dire www.google.com:80), vous associez également un nouveau numéro de port sur votre machine avec le connexion, pour permettre au serveur de vous renvoyer des choses (par exemple 127.0.0.1:65234). Il peut être utile d'utiliser netstat pour examiner les connexions de votre machine:

> netstat -nWp tcp (on OS X)
Active Internet connections
Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)    
tcp4       0      0  192.168.0.6.49871      17.172.232.57.5223     ESTABLISHED
...
10
répondu Colin 2014-04-17 19:08:13

une socket est un type spécial de poignée de fichier qui est utilisé par un processus pour demander des services réseau à partir du système d'exploitation. Une adresse socket est le triple: {protocole local, l'adresse, les processus} où le processus local est identifié par un numéro de port.

dans la suite TCP/IP, par exemple:

{tcp, 193.44.234.3, 12345}

une conversation est le lien de communication entre deux processus représentant ainsi un association entre deux. Une association est le 5-tuple qui spécifie complètement les deux processus qui comprennent une connexion: {protocole local, l'adresse, les processus, l'étranger, l'étranger processus}

dans la suite TCP/IP, par exemple:

{tcp, 193.44.234.3, 1500, 193.44.234.5, 21}

pourrait être une association valide.

une demi-association est soit: {protocole, adresse locale, processus local}

ou

{protocole, l'étranger, l'étranger processus}

qui spécifient chaque moitié d'une connexion.

la half-association est également appelée une socket ou une adresse de transport. C'est-à-dire qu'une socket est un point final de communication qui peut être nommé et adressé dans un réseau. L'interface socket est l'une des interfaces de programmation d'application (API) des protocoles de communication. Conçu pour être un interface de programmation de communication générique, elle a d'abord été introduite par le système UNIX BSD 4.2. Bien qu'elle n'ait pas été normalisée, elle est devenue de facto une norme de l'industrie.

10
répondu Krishna 2015-05-20 16:53:46

une adresse socket est une adresse IP et un numéro de port

123.132.213.231         # IP address
               :1234    # port number
123.132.213.231:1234    # socket address

une connexion se produit lorsque 2 douilles sont reliées entre elles.

9
répondu Zaz 2017-09-19 20:49:49

le port était la partie la plus facile, c'est juste un identifiant unique pour une socket. Une socket est quelque chose que les processus peuvent utiliser pour établir des connexions et communiquer entre eux. Tall Jeff avait une bonne analogie téléphonique qui n'était pas parfaite, alors j'ai décidé de la corriger:

  • numéro de Téléphone ip et port
  • socket ~ téléphone de l'appareil
  • connexion ~ coup de téléphone
  • établir la connexion ~ appelant un numéro
  • des processus, des applications à distance ~ les gens
  • messages ~ discours
5
répondu inf3rno 2015-10-11 23:19:57

une application se compose d'une paire de processus qui communiquent Sur le réseau (paire client-serveur). Ces processus envoient et reçoivent des messages, à destination et en provenance du réseau, par l'intermédiaire d'une interface logicielle appelée socket . Considérant l'analogie présentée dans le livre "Computer Networking: Top Down Approach". Il y a une maison qui veut communiquer avec une autre maison. Ici, maison est analogue à un processus, et porte à une prise. Processus d'envoi suppose que il y a une infrastructure de l'autre côté de la porte qui transportera les données vers la destination. Une fois que le message est arrivé de l'autre côté, il passe par la porte du récepteur (douille) dans la maison (processus). Cette illustration du même livre peut vous aider:

enter image description here

Sockets sont une partie de la couche transport, qui fournit des logiques de communication pour les applications. Cela signifie qu'à partir de point de vue de l'application les deux hôtes sont directement connectés l'un à l'autre, même s'il y a de nombreux routeurs et/ou commutateurs entre eux. Ainsi, une socket n'est pas une connexion elle-même, c'est le point final de la connexion. Les protocoles de couche Transport ne sont appliqués que sur les hôtes, et non sur les routeurs intermédiaires.

Ports fournissent un moyen d'adressage interne à une machine. Le but principal it pour permettre plusieurs processus d'envoyer et de recevoir des données sur le réseau sans interférer avec d'autres processus (leurs données). Tous les sockets sont fournis avec un numéro de port. Lorsqu'un segment arrive à un hôte, la couche transport examine le numéro de port de destination du segment. Il transmet ensuite le segment à la prise correspondante. Ce travail de livraison des données dans un segment de couche transport à la bonne socket est appelé de-multiplexage . Les données du segment sont ensuite transmises au processus attaché à la socket.

5
répondu Ugnes 2016-10-04 08:26:23

à partir de Oracle Java Tutoriel :

une socket est un point terminal d'une liaison de communication bidirectionnelle entre deux programmes fonctionnant sur le réseau. Une socket est liée à un numéro de port afin que la couche TCP puisse identifier l'application à laquelle les données sont destinées.

5
répondu yondoo 2017-01-29 01:20:06

une socket est une structure dans votre logiciel. C'est plus ou moins un fichier; il a des opérations comme lire et écrire. Ce n'est pas une chose physique; c'est une façon pour votre logiciel de renvoyer à des choses physiques.

un port est une chose qui ressemble à un appareil. Chaque hôte a un ou plusieurs réseaux (personnes physiques); un hôte a une adresse sur chaque réseau. Chaque adresse peut avoir des milliers de ports.

une seule socket peut utiliser un port à une adresse. Socket une fois le port attribué, aucune autre socket ne peut se connecter à ce port. Le port sera libéré lorsque la socket sera fermée.

regardez terminologie TCP/IP .

4
répondu S.Lott 2008-12-31 11:10:28

terminologie relative TCP/IP qui est ce que je suppose est implicite par la question. En termes simples:

un PORT est comme le numéro de téléphone d'une maison particulière dans un code postal particulier. Le code POSTAL de la ville peut être considérée comme l'adresse IP de la ville et de toutes les maisons dans la ville.

d'un autre côté, une prise ressemble plus à un appel téléphonique établi entre les téléphones d'une paire de maisons qui se parlent. Ces appels peut être établie entre les maisons dans la même ville ou deux maisons dans différentes villes. C'est cette voie temporaire établie entre la paire de téléphones se parlant l'un à l'autre qui est la prise.

3
répondu Tall Jeff 2008-09-30 12:31:21

une socket est un terminal de communication. Une socket n'est pas directement liée à la famille de protocoles TCP/IP, elle peut être utilisée avec n'importe quel protocole pris en charge par votre système. L'API de socket C s'attend à ce que vous obteniez d'abord un objet de socket Vierge du système que vous pouvez ensuite soit lier à une adresse de socket locale (pour récupérer directement le trafic entrant pour les protocoles sans connexion ou pour accepter les demandes de connexion entrantes pour les protocoles orientés connexion) ou que vous puissiez vous connecter à une socket distante. adresse (pour chaque type de protocole). Vous pouvez même faire les deux si vous voulez contrôler à la fois, la prise locale de l'adresse d'une socket est lié et le socket distant, l'adresse d'une socket est connecté. Pour les protocoles sans connexion, la connexion d'une socket est même optionnelle, mais si vous ne le faites pas, vous devrez également passer l'adresse de destination avec chaque paquet que vous voulez envoyer sur la socket, sinon comment la socket pourrait-elle savoir où envoyer ces données? L'avantage est que vous pouvez utiliser une seule prise de envoyer des paquets à différentes adresses de socket. Une fois que vous avez configuré votre socket et peut-être même connecté, considérez-le comme un tuyau de communication bidirectionnel. Vous pouvez l'utiliser pour transmettre des données à une destination et certaines destinations peuvent utiliser pour transmettre des données vers vous. Ce que vous écrivez à une socket est envoyé et ce qui a été reçu est disponible pour la lecture.

Par contre, les Ports

sont quelque chose que seuls certains protocoles de la pile de protocoles TCP/IP ont. TCP et Les paquets UDP ont des ports. Un port est juste un nombre simple. La combinaison du port source et du port de destination permet d'identifier un canal de communication entre deux hôtes. Par exemple: vous pouvez avoir un serveur qui sera à la fois un simple serveur HTTP et un simple serveur FTP. Si maintenant un paquet arrive pour l'adresse de ce serveur, Comment saurait-il s'il s'agit d'un paquet pour le serveur HTTP ou le serveur FTP? Eh bien, il le saura car le serveur HTTP Tournera sur le port 80 et le serveur FTP sur le port 21, donc si le paquet arrive avec un port de destination 80, c'est pour le serveur HTTP et non pour le serveur FTP. En outre, le paquet a un port source car sans un tel port source, un serveur ne pourrait avoir qu'une connexion à une adresse IP à la fois. Le port source permet à un serveur de distinguer des connexions par ailleurs identiques: elles ont toutes le même port de destination, par exemple le port 80, la même adresse IP de destination, toujours la même adresse de serveur et la même adresse IP source, car elles proviennent toutes du même client, mais comme ils ont des ports source différents, le serveur peut les distinguer les uns des autres. Et lorsque le serveur renvoie des réponses, il le fait sur le port d'origine de la requête, ce qui permet au client de distinguer les différentes réponses qu'il reçoit.

3
répondu Mecki 2018-03-06 19:46:52

une socket est un mécanisme d'entrée/sortie de données. Un port est un contractuel concept d'un protocole de communication . Une socket peut exister sans port. Un port peut exister sans une socket spécifique (par exemple si plusieurs sockets sont actifs sur le même port, ce qui peut être autorisé pour certains protocoles).

Un port est utilisé pour déterminer quel support le récepteur devrait acheminer le paquet, avec de nombreux protocoles, mais il n'est pas toujours nécessaire et la douille de réception de sélection peut être effectuée par d'autres moyens - un port est entièrement un outil utilisé par le gestionnaire de protocole dans le sous-système réseau. par exemple, si un protocole n'utilise pas de port, les paquets peuvent aller à toutes les sockets d'écoute ou à n'importe quelle socket.

2
répondu Sander 2008-09-30 10:08:55

au sens large, Socket-est juste cela, une socket, tout comme votre prise électrique, câble ou téléphone. Un point où les" choses nécessaires " (puissance, signal, information) peuvent sortir et entrer. Il cache beaucoup de choses détaillées, qui ne sont pas nécessaires pour l'utilisation des "choses nécessaires". En langage logiciel, il fournit une façon générique de définir un mécanisme de communication entre deux entités (ces entités pourraient être n'importe quoi - deux applications, deux physiquement séparées les appareils, l'Utilisateur Et l'espace Noyau du système d'exploitation, etc)

un Port est un discriminateur de point final. Elle se différencie d'un point de terminaison d'un autre. Au niveau de la mise en réseau, il différencie une application de l'autre, de sorte que la pile de mise en réseau peut transmettre des informations à l'application appropriée.

2
répondu Harty 2008-12-31 07:47:21

déjà des réponses théoriques ont été données à cette question. Je voudrais donner un exemple pratique à cette question, qui éclaircira votre compréhension de Socket et Port.

je l'ai trouvé ici

cet exemple vous guidera dans le processus de connexion à un site web, tel que Wiley. Vous ouvrez votre navigateur web (comme Mozilla Firefox) et tapez www.wiley.com dans la barre d'adresse. Votre le navigateur Web utilise un serveur DNS (Domain Name System) pour rechercher le nom www.wiley.com pour identifier son adresse IP est. Pour cet exemple, l'adresse est 192.0.2.100.

Firefox fait une connexion à l'adresse 192.0.2.100 et au port où le serveur web de la couche application est opérationnel. Firefox sait ce port pour attendre parce que c'est un port bien connu . Le bien-connu le port pour un serveur web est le port TCP 80.

la prise de destination que Firefox tente de se connecter est écrit que socket:port, ou dans cet exemple, 192.0.2.100:80. C'est le serveur côté de la connexion, mais le serveur doit savoir où envoyer le page Web que vous voulez voir dans Mozilla Firefox, donc vous avez une socket pour le côté client de la connexion.

la connexion côté client est constituée de votre adresse IP, telle que 192.168.1.25, et un numéro de port dynamique choisi au hasard. La prise associée à Firefox semble comme 192.168.1.25: 49175. Parce que web les serveurs fonctionnent sur le port TCP 80, ces deux sockets sont des sockets TCP, alors que si vous vous connectiez à un serveur fonctionnant sur un port UDP, les sockets du serveur et du client seraient des sockets UDP.

2
répondu Omkar Ramtekkar 2013-06-26 12:57:17

Socket est une abstraction fournie par le noyau aux applications utilisateur pour les données I/O. Un type de socket est défini par le protocole son traitement, une communication IPC, etc. Ainsi, si quelqu'un crée une socket TCP, il peut effectuer des manipulations comme lire des données dans une socket et y écrire des données par des méthodes simples et le traitement de protocole de niveau inférieur comme les conversions TCP et le transfert de paquets vers des protocoles de réseau de niveau inférieur est fait par l'implémentation particulière de socket dans le noyau. L'avantage est cet utilisateur n'a pas besoin de s'inquiéter de gérer des nitigritities spécifiques au protocole et devrait simplement lire et écrire des données sur socket comme un tampon normal. Il en est de même dans le cas de la CIB, l'utilisateur ne fait que lire et écrire des données dans la socket et le noyau gère tous les détails de niveau inférieur basés sur le type de socket créé.

Port avec IP est comme fournir une adresse à la socket, bien que ce ne soit pas nécessaire, mais il aide dans les communications réseau.

2
répondu Navneet Singh 2013-10-16 10:08:44

un port simple peut avoir une ou plusieurs prises connectées avec différentes IP externes comme une prise électrique multiple.

  TCP    192.168.100.2:9001     155.94.246.179:39255   ESTABLISHED     1312
  TCP    192.168.100.2:9001     171.25.193.9:61832     ESTABLISHED     1312
  TCP    192.168.100.2:9001     178.62.199.226:37912   ESTABLISHED     1312
  TCP    192.168.100.2:9001     188.193.64.150:40900   ESTABLISHED     1312
  TCP    192.168.100.2:9001     198.23.194.149:43970   ESTABLISHED     1312
  TCP    192.168.100.2:9001     198.49.73.11:38842     ESTABLISHED     1312
2
répondu guest 2015-08-31 03:43:01

Port et socket peut être comparé à la succursale de la Banque.

le numéro du bâtiment de la" banque " est analogue à l'adresse IP . La banque a différentes sections comme: 1) le département des comptes D'épargne 2) le département des prêts personnels 3) le département des prêts à domicile 4) le département des griefs .

so 1 (SAVINGS ACCOUNT DEPARTMENT), 2 (PERSONAL LOAN DEPARTMENT), 3 (HOME LOAN DEPARTMENT) et 4(GRIEVANCE Department) Le ministère) sont des Ports.

maintenant, disons que vous allez ouvrir un compte d'épargne , vous allez à la Banque(adresse IP) puis vous allez à "compte D'épargne département" (numéro de Port 1) puis vous rencontrez un de l'employé qui travaille sous "compte D'épargne département" nous l'appelons comme SAVINGACCOUNT_EMPLOYEE1 pour ouvrir un compte .

SAVINGACCOUNT_EMPLOYEE1 est votre descripteur de socket , il peut donc y avoir SAVINGACCOUNT_EMPLOYEE1 to SAVINGACCOUNT_EMPLOYEEN these are all socket descripteur.

de même, d'autres ministères auront des employés travaillant sous leur direction et ils sont analogues à socket.

Espérons que cette aide !!

2
répondu Shridhar410 2017-04-11 12:21:55

une socket est essentiellement un terminal de communication réseau, comprenant au moins une adresse IP et un port. En Java / C# une socket est une implémentation de niveau supérieur d'un côté d'une connexion bidirectionnelle.

Aussi, une définition de la documentation de Java .

1
répondu Erik van Brakel 2008-09-30 10:08:53

Port:

un port peut faire référence à un point de connexion physique pour les périphériques tels que les ports série, parallèle et USB. Le terme port se réfère également à certains points de connexion Ethernet, s uch comme ceux sur un hub, commutateur, ou routeur.

Socket:

une socket représente une connexion unique entre deux applications réseau. Ces deux applications fonctionnent nominalement sur des ordinateurs différents., mais les douilles peuvent aussi être utilisées pour la communication interprocess sur un seul ordinateur. Les Applications peuvent créer plusieurs sockets pour communiquer entre eux. Les Sockets sont bidirectionnels, ce qui signifie que chaque côté de la connexion est capable d'envoyer et de recevoir des données.

1
répondu balaweblog 2008-09-30 10:23:50

je sais qu'il y a beaucoup d'explications. Mais, il y a une façon plus facile de comprendre avec l'exemple pratique. Nous pouvons tous nous connecter au port HTTP 80, mais cela signifie-t-il qu'un seul utilisateur peut se connecter à ce port à la fois?. La réponse est évidemment "non". Plusieurs utilisateurs à des fins multiples peuvent accéder au port HTTP 80 mais ils obtiennent quand même la réponse qu'ils attendent du serveur, n'est-ce pas?. Maintenant, réfléchissez - y une minute, comment?. Oui, vous avez raison, son IP adresse qui identifie de manière unique les différents utilisateurs qui contactent pour des buts différents. Si vous aviez lu les réponses précédentes avant d'arriver ici, vous sauriez que L'adresse IP est une partie de l'information que contient socket. Pensez-y, est-il possible d'avoir une communication sans sockets?. La réponse est "Oui", mais vous ne pouvez pas exécuter plus d'une demande dans un port, mais nous savons que nous ne sommes pas un "Dump" qui s'exécute sur le matériel.

1
répondu Vishal S 2016-12-27 07:42:02

un port indique un point final de communication dans les transports TCP et UDP pour le protocole réseau IP. Une socket est une abstraction logicielle pour un terminal de communication couramment utilisé dans les implémentations de ces protocoles (API de socket). Une autre implémentation est L'API XTI/TLI.

voir aussi:

Stevens, W. R. 1998, UNIX Network Programming: Networking APIs: Sockets and XTI; Volume 1, Prentice Hall.

Steven, W. R., 1994, TCP / IP Illustrated, Volume 1: the Protocols, Addison-Wesley.

0
répondu VoidPointer 2008-09-30 10:28:36

un port est une entité qui est utilisée par les protocoles de réseau pour accéder aux hôtes connectés. Les Ports peuvent être spécifiques à une application ou liés à un certain moyen de communication. Différents protocoles utilisent différents ports pour accéder aux hôtes, comme HTTP utilise le port 80 ou FTP utilise le port 23. Vous pouvez attribuer des numéros de port définis par l'utilisateur dans votre application, mais ils doivent être supérieurs à 1023.

Les Ports

ouvrent la connexion à l'hôte requis alors que les sockets sont un point final dans une communication inter-réseau ou inter-processus. Les Sockets sont attribués par APIs(Application Programming Interface) par le système.

une différence plus subtile peut être faite en disant que, lorsqu'un système est redémarré les ports seront présents tandis que les sockets seront détruits.

-1
répondu Sylar 2013-03-18 14:56:27