Pergunta

Esta foi uma questão levantada por um dos engenheiros de software em minha organização. Estou interessado na definição mais ampla.

Nenhuma solução correta

Outras dicas

Resumo

tomada A TCP é um ponto final exemplo definido por um endereço IP e uma porta no contexto de uma conexão TCP particular ou estado de escuta.

Uma porta é um identificador de virtualização definindo um terminal de serviço (como distinto de um serviço exemplo endpoint aka identificador de sessão).

tomada A TCP é não uma conexão , é o ponto final de uma conexão específica.

Não pode haver conexões simultâneas para um serviço de endpoint , porque uma conexão é identificado por tanto o seu local e remoto endpoints, permitindo que o tráfego seja encaminhado para uma instância de serviço específico .

Só pode haver uma tomada ouvinte para uma combinação dada endereço / porta .

Exposição

Esta foi uma questão interessante que me obrigou a re-examinar uma série de coisas que eu pensava que sabia fora para dentro. Você acha que um nome como "socket" seria auto-explicativo: ele foi obviamente escolhido para evocar as imagens do terminal no qual você conecta um cabo de rede, havendo fortes paralelos funcionais. No entanto, na rede de linguagem a palavra "socket" carrega tanta bagagem que um re-exame cuidadoso é necessário.

No sentido mais amplo possível, uma porta é um ponto de entrada ou a saída. Apesar de não ser usado em um contexto de rede, a palavra francesa porte significa literalmente porta ou porta de entrada , enfatizando ainda mais o fato de que os portos são terminais de transporte se você enviar dados ou recipientes de aço grandes.

Para o propósito desta discussão vou limitar consideração o contexto das redes TCP-IP. O modelo OSI é tudo muito bem, mas nunca foi completamente implementada, muito menos amplamente implantado em condições de alto estresse de alto tráfego.

A combinação de um endereço IP e uma porta é estritamente conhecida como um ponto final e às vezes é chamado de um soquete. Este uso se origina com RFC793, a especificação TCP originais.

A TCP conexão é definido por dois pontos finais aka soquetes .

Um ponto de extremidade (tomada) é definida pela combinação de um endereço de rede e um porta identificador. Note-se que endereço / porta não identificar completamente um socket (mais sobre isso depois).

O objetivo de portas é diferenciar vários pontos de extremidade em um determinado endereço de rede. Pode-se dizer que uma porta é um ponto final virtualizado. Esta virtualização faz várias conexões simultâneas em uma única interface de rede possível.

É a par encaixe (o 4-tupla que consiste no endereço IP do cliente, número da porta do cliente, servidor endereço IP, e número de porta do servidor) que especifica os dois terminais que exclusivamente identifica cada conexão TCP em uma Internet. ( TCP-IP Illustrated Volume 1 , W. Richard Stevens)

Na maioria das linguagens derivado de C, ligações TCP são estabelecidas e manipuladas usando métodos de uma instância de uma classe Socket. Embora seja comum que operam a um nível mais alto de abstracção, tipicamente uma instância de uma classe NetworkStream, este geralmente expõe uma referência a um objecto de tomada. Para o codificador este objecto tomada parece representar a ligação, porque a ligação é criada e manipulada usando os métodos do objeto soquete.

Em C #, para estabelecer uma conexão TCP (para um ouvinte existente), primeiro você cria um TcpClient . Se você não especificar um ponto final ao TcpClient construtor usa padrões - uma forma ou de outra, o endpoint local está definido. Então você invocar o Conectar método na instância que você criou. Este método requer um parâmetro descrevendo o outro ponto final.

Tudo isso é um pouco confuso e leva a acreditar que um soquete de uma conexão, que é besteira. Eu estava trabalhando sob este equívoco até Ricoard Dorman fez a pergunta.

Depois de ter feito um monte de leitura e pensamento, agora estou convencido de que ele faria muito mais sentido ter uma classe TcpConnection com um construtor que leva dois argumentos, LocalEndpoint e RemoteEndpoint . Você provavelmente poderia apoiar um único argumento RemoteEndpoint quando os padrões são aceitáveis ??para o endpoint local. Esta é ambígua em computadores com diversas bases, mas a ambigüidade pode ser resolvido usando a tabela de roteamento, selecionando a interface com o caminho mais curto para o ponto de extremidade remoto.

A clareza seria reforçada em outros aspectos também. Um soquete é não identificado pela combinação de endereço IP e porta:

[...] TCP demultiplexes segmentos de entrada usando todos os quatro valores que compõem os endereços locais e estrangeiros: endereço IP de destino, número de porta de destino, endereço IP de origem e número de porta de origem. TCP não pode determinar qual processo recebe um segmento de entrada, olhando apenas o porto de destino. Além disso, a apenas um dos vários] [extremidades em [um determinado número de porta] que irá receber os pedidos de ligação é a um no estado ouvir. (P255, TCP-IP Illustrated Volume 1 , W. Richard Stevens)

Como você pode ver, não é apenas possível, mas bastante provável para um serviço de rede têm inúmeras tomadas com o mesmo endereço / porta, mas apenas uma tomada ouvinte em uma combinação de endereço / porta particular. implementações de biblioteca típicos apresentar uma classe socket, uma instância que é usada para criar e gerenciar uma conexão. Isto é extremamente lamentável, pois provoca confusão e levou a fusão generalizada dos dois conceitos.

Hagrawal não acredita em mim (ver comentários) então aqui está um exemplo real. Liguei um navegador web para http://dilbert.com e, em seguida, correu netstat -an -p tcp. Os últimos seis linhas de saída contêm dois exemplos do facto de endereço e a porta não são suficientes para identificar unicamente uma tomada. Há duas ligações distintas entre 192.168.1.3 (meu trabalho) e 54.252.94.236:80 (o servidor HTTP remoto)

  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

Uma vez que uma tomada é o ponto de extremidade de uma ligação, existem duas tomadas com o endereço / porta combinação 207.38.110.62:80 e mais com o endereço / porta combinação 54.252.94.236:80 dois.

Eu acho mal-entendido de Hagrawal surge de meu uso muito cuidado com a palavra "identifica". Quero dizer "identifica completamente, sem ambiguidades e exclusivamente". No exemplo acima, existem dois pontos de extremidade com o endereço / porta combinação 54.252.94.236:80. Se tudo que você tem é o endereço e porta, você não tem informações suficientes para dizer a esses soquetes separados. Não é informação suficiente para identificar um soquete.

Adenda

parágrafo segundo do ponto 2.7 do RFC793 diz

conexão

A é totalmente especificado pelo par de bases nas extremidades. UMA socket local pode participar em muitas conexões para estrangeiro diferente tomadas.

Esta definição de socket não é útil a partir de uma perspectiva de programação, porque não é o mesmo que um objeto de soquete , que é o ponto final de uma ligação particular. Para um programador, e na maioria das audiências desta questão são programadores, esta é uma diferença funcional vital.

Referências

  1. TCP-IP Illustrated Volume 1 Os protocolos , W. Richard Stevens, 1994 Addison Wesley

  2. RFC793 , Information Sciences Institute, Universidade de sul da Califórnia para DARPA

  3. RFC147 , a definição de um soquete, Joel M. Winett, Lincoln Laboratory

A tomada consiste em três coisas:

  1. Um endereço IP
  2. Um protocolo de transporte
  3. Um número de porta

Uma porta é um número entre 1 e 65535 inclusive que significa uma porta lógica em um dispositivo. Cada conexão entre um cliente e servidor requer uma tomada única.

Por exemplo:

  • 1030 é uma porta.
  • (10.1.1.2, TCP, porta 1030) é um soquete.

A tomada representa uma única conexão entre duas aplicações de rede. Estas duas aplicações nominalmente executados em computadores diferentes, mas soquetes também pode ser usado para comunicação entre processos em um único computador. Os aplicativos podem criar vários soquetes para se comunicar uns com os outros. Sockets são bidireccional, o que significa que ambos os lados da ligação é capaz de enviar e receber dados. Portanto, um soquete pode ser criado teoricamente em qualquer nível do modelo OSI de 2 para cima. Os programadores costumam usar soquetes na programação da rede, ainda que indirectamente. bibliotecas de programação como Winsock esconder muitos dos detalhes de baixo nível de programação de socket. Sockets estão em uso generalizado desde o início de 1980.

Uma porta representa um ponto final ou "canal" para as comunicações de rede. Os números de porta permitem que diferentes aplicações no mesmo computador para utilizar os recursos de rede sem interferir uns com os outros. Os números de porta mais comumente aparecem na programação da rede, particularmente tomada de programação. Às vezes, porém, os números das portas são feitos visíveis para o usuário casual. Por exemplo, alguns sites uma pessoa visita sobre o uso da Internet uma URL como o seguinte:

http://www.mairie-metz.fr:8080/ Neste exemplo , o número 8080 refere-se ao número da porta usado pelo navegador da web para se conectar ao servidor web. Normalmente, um número de porta Web site utiliza 80 e esta necessidade número não ser incluído com a URL (embora possa ser).

Redes Em IP, números de porta pode, teoricamente, variam de 0 a 65535. A maioria das aplicações de rede populares, no entanto, os números de porta uso na extremidade baixa da escala (como 80 para HTTP).

Nota: A porta termo também se refere a vários outros aspectos da tecnologia de rede. Uma porta pode referir-se a um ponto de ligação físico para os dispositivos periféricos, tais como em série, em paralelo, e portas USB. A porta termo também se refere a determinados pontos de ligação Ethernet, tais como aqueles em um concentrador, comutador ou router.

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

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

Com alguma analogia

Apesar de um material técnico muito já é dado acima para soquetes ... Eu gostaria de acrescentar a minha resposta, apenas no caso, se alguém ainda não podia sentir a diferença entre ip, porto e soquetes

considerar um servidor S ,

e dizer pessoa X, Y, Z precisa de um serviço (dizem serviço de chat) de que Servidor S

então

endereço IP conta -> que é que o servidor de chat 'S' que X, Y, Z querer contato

tudo bem, você tem "que é o servidor"

Mas suponhamos que servidor 'S' está fornecendo alguns outros serviços para outras pessoas, bem como, dizem 'S' fornece serviços de armazenamento para pessoa A, B, C

então

porta diz ---> que? serviço que você (X, Y, Z) precisa, ou seja, serviço de chat e não que o serviço de armazenamento

ok .., você faz servidor para vir a saber que 'serviço de chat' é o que você quer e não o armazenamento

e

você é três e o servidor pode querer identificar todos os três diferente

lá vem a tomada

Agora Tomada conta -> qual particular, conexão

que é, digamos,

soquete 1 para a pessoa X

tomada 2 para pessoa Y

e soquete 3 para pessoa Z

Espero que ajude alguém que ainda estava confuso :)

Firsty, acho que devemos começar com um pouco de compreensão do que constitui a obtenção de um pacote de A para B.

Uma definição comum de uma rede é o uso do modelo OSI que separa uma rede para fora um número de camadas de acordo com a finalidade. Há algumas mais importantes, que abordaremos aqui:

  • O camada de enlace de dados . Esta camada é responsável por obter os pacotes de dados de um dispositivo de rede para outra e é apenas acima da camada que realmente faz a transmissão. Ele fala sobre endereços MAC e sabe como encontrar anfitriões com base no endereço MAC (hardware), mas nada mais.
  • O camada de rede é a camada que permite transportar dados através de máquinas e limites sobre físicas, tais como dispositivos físicos. A camada de rede deve, essencialmente, suportar um mecanismo baseado endereço adicional que de alguma forma relacionada com o endereço físico; entrar no Protocolo Internet (IPv4). Um endereço IP pode obter o seu pacote de A a B através da internet, mas não sabe nada sobre como atravessar saltos individuais. Isso é tratado pela camada acima, de acordo com informações de roteamento.
  • O camada de transporte . Esta camada é responsável por definir a forma como a informação chega de A para B e quaisquer restrições, cheques ou erros sobre esse comportamento. Por exemplo, TCP acrescenta informações adicionais para um pacote de tal forma que é possível deduzir se os pacotes foram perdidos.

TCP contém, entre outras coisas, o conceito de . Estes são efetivamente diferentes terminais de dados sobre o mesmo endereço IP para o qual um soquete Internet (AF_INET) podem se ligar.

Quando isso acontece, assim também faz UDP , e outros protocolos da camada de transporte. Eles não tecnicamente necessidade para portas de recursos, mas essas portas não fornecem uma maneira para múltiplas aplicações em camadas acima de usar o mesmo computador para receber (e de fato fazer) as conexões de saída.

O que nos leva à anatomia de uma conexão TCP ou UDP. Cada um apresenta uma porta de origem e endereço, e uma porta e endereço de destino. Isso é para que em qualquer sessão, o aplicativo de destino possa responder, bem como receber, a partir da fonte.

Assim portas são essencialmente uma forma mandatado-especificação de permitir múltiplas conexões simultâneas que compartilham o mesmo endereço.

Agora, precisamos dar uma olhada em como você se comunica a partir de um ponto de vista da aplicação para o mundo exterior. Para fazer isso, você precisa pedimos o seu sistema operacional e uma vez que a maioria dos sistemas operacionais suportam o caminho Berkeley Sockets de fazer as coisas, vemos que podemos criar camadas que envolvem portas de um aplicativo como este:

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

Great! Assim, nas estruturas sockaddr, vamos especificar o nosso porto e bam! Tarefa concluída! Bem, quase, exceto:

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

também é possível. Urgh, que é jogado uma chave inglesa nos trabalhos!

Ok, bem, na verdade ele não tem. Tudo o que precisamos fazer é vir acima com algumas definições adequadas:

  • Uma tomada internet é a combinação de um endereço IP, um protocolo e seu número de porta associado no qual um serviço pode fornecer dados. Então, a porta TCP 80, stackoverflow.com é uma tomada internet.
  • tomada de um sistema Unix é um ponto final IPC representados no sistema de arquivos, por exemplo, /var/run/database.sock.
  • Um soquete API é um método de solicitar um pedido de ser capaz de ler e gravar dados a uma tomada.

Voila! Que arruma as coisas. Assim, em nosso esquema, em seguida,

  • Uma porta é um identificador numérico que, como parte de um protocolo da camada de transporte, identifica o número de serviço que deve responder ao pedido dada.

Então, realmente uma porta é um subconjunto dos requisitos para a formação de uma tomada internet.Infelizmente, isso só acontece que o significado da palavra soquete tem sido aplicada a várias idéias diferentes. Então eu sinceramente aconselho você citar sua tomada projeto seguinte, apenas para aumentar a confusão;)

Um socket = Endereço IP + uma porta (endereço numérico)
Juntos, identificar um ponto final para uma ligação de rede em uma máquina. (Eu apenas rede Flunk 101?)

Geralmente, você vai ter um monte de teórico, mas uma das maneiras mais fáceis de diferenciar estes dois conceitos é a seguinte:

A fim de obter um serviço, você precisa de um número de serviço. Este número de serviço é chamado de uma porta. Simples como isso.

Por exemplo, o como um serviço HTTP está em execução na porta 80.

Agora, muitas pessoas podem solicitar o serviço e uma conexão de cliente-servidor estabeleceu. Haverá um monte de conexões. Cada conexão representar um cliente. A fim de manter cada conexão, o servidor cria um socket por conexão para manter seu cliente.

Parece haver um monte de respostas igualando soquete com a conexão entre 2 PC's..which eu acho que é absolutamente incorreto. A tomada tem sido sempre o endpoint em 1 PC, que pode ou não ser conectado - certamente nós temos tudo ouvinte usado ou sockets UDP * em algum ponto. A parte importante é que é endereçável e ativo. Enviando uma mensagem para 1.1.1.1:1234 não é susceptível de trabalho, como não há nenhuma tomada definido para esse desfecho.

Sockets são protocolo específico - para a implementação de singularidade que tanto TCP / IP e UDP / IP usos *. (endereçoip: porta), é diferente do que por exemplo, IPX (Network Node, e ... ahem, socket - mas uma tomada diferente do que se entende por os números gerais socket "socket" termo IPX são equivalentes a portas IP.). Mas, todos eles oferecem um ponto de extremidade endereçável único.

Desde IP tornou-se o protocolo dominante, uma porta (em termos de rede) tornou-se sinônimo de qualquer um número de porta UDP ou TCP -. Que é uma parte do endereço de socket

  • UDP é sem conexão - ou seja, nenhum circuito virtual entre os 2 pontos finais está já criado. No entanto, ainda se referem a sockets UDP como o ponto final. As funções da API deixam claro que ambos são apenas diferentes tipos de soquetes -. SOCK_DGRAM é UDP (basta enviar uma mensagem) e SOCK_STREAM é TCP (criação de um circuito virtual)

  • Tecnicamente, o cabeçalho IP contém o endereço IP e o protocolo em cima do IP (UDP ou TCP) mantém o número da porta. Isto faz com que seja possível ter outros protocolos (por ex. ICMP que não têm números de porta , mas não têm informações de endereçamento IP).

breve resposta curta.

A porta pode ser descrito como um endereço interno dentro de um hospedeiro que identifica um programa ou processo.

A tomada pode ser descrito como um Programming Interface permitir que um programa para se comunicar com outros programas ou processos, na internet, ou localmente.

Eles são termos de dois domínios diferentes: 'porta' é um conceito de rede TCP / IP, 'socket' é um (programação) coisa API. A 'socket' é feito (no código), tendo um porto e um adaptador de host ou de rede e combiná-los em uma estrutura de dados que você pode usar para enviar ou receber dados.

Depois de ler o excelente up-votado respostas, descobri que o seguinte ponto de ênfase necessária para mim, um recém-chegado à programação de rede:

conexões

TCP-IP são caminhos bi-direcional que conectam um endereço: combinação de porta com outro endereço: combinação de porta. Portanto, sempre que você abrir uma conexão de sua máquina local para uma porta em um servidor remoto (digamos www.google.com:80), você também associar um novo número de porta em sua máquina com a conexão, para permitir que o servidor para enviar as coisas de volta para você, (por exemplo, 127.0.0.1:65234). Pode ser útil usar netstat olhar para as conexões da máquina:

> 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
...

Um soquete endereço é um endereço e número de porta IP

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

A ligação ocorre quando tomadas 2 são ligados em conjunto.

Um soquete é um tipo especial de identificador de arquivo que é usado por um processo aos serviços de solicitação de rede do sistema operacional. Um endereço de socket é o triplo: {Protocolo,-endereço local, local de processo}, onde o processo local é identificado por um número de porta.

Na suíte TCP / IP, por exemplo:

{tcp, 193.44.234.3, 12345}

A conversa é a ligação de comunicação entre descreve dois processos, assim, uma associação entre dois. Uma associação é o 5-tupla que especifica completamente os dois processos que compreendem uma ligação: {Protocolo, endereço local, processo local,-endereço externo, processo estrangeira}

Na suíte TCP / IP, por exemplo:

{tcp, 193.44.234.3, 1500, 193.44.234.5, 21}

poderia ser uma associação válido.

A meia associação é: {Protocolo, endereço local, local, processo}

ou

{protocolo,-endereço externo, processo estrangeira}

que especificam cada meio de uma conexão.

A meia-associação é também chamado de uma tomada ou um endereço de transporte. Ou seja, um soquete é um ponto final para a comunicação que pode ser nomeado e endereçado em uma rede. A interface de encaixe é uma das várias interfaces de programação de aplicações (API) para os protocolos de comunicação. Projetado para ser uma interface de comunicação programação genérica, foi introduzido pela primeira vez pelo sistema 4.2BSD UNIX. Embora não tenha sido normalizado, tornou-se um padrão de fato indústria.

O porto foi a parte mais fácil, é apenas um identificador único para um soquete. Um soquete é algo processos pode usar para estabelecer ligações e para se comunicar uns com os outros. Alto Jeff teve uma grande analogia de telefone que não era perfeito, então eu decidi para corrigi-lo:

  • ip e porta ~ número de telefone
  • tomada ~ dispositivo de telefone
  • conexão ~ telefonema
  • estabelecer conexão ~ chamar um número
  • processos, aplicações remotas ~ pessoas
  • mensagens ~ discurso

Um soquete é uma estrutura em seu software. É mais ou menos um arquivo; tem operações como ler e escrever. Não é uma coisa física; é uma maneira para o seu software para se referir a coisas físicas.

Uma porta é um dispositivo semelhante coisa. Cada anfitrião tem uma ou mais redes (aquelas são físicos); um host tem um endereço em cada rede. Cada endereço pode ter milhares de portas.

Uma tomada só pode ser através de uma porta em um endereço. A tomada aloca a porta aproximadamente como atribuição de um dispositivo para o sistema de arquivo de I / O. Uma vez que a porta é alocado, nenhum outro soquete pode se conectar a essa porta. A porta irá ser libertado quando o encaixe está fechada.

Dê uma olhada em TCP / IP Terminologia .

Uma aplicação consiste par de processos que se comunicam através da rede (par cliente-servidor). Estes processos enviar e receber mensagens, de e para a rede através de uma interface de software chamado tomada . Considerando a analogia apresentada no livro "Redes de computadores: Top Down Approach". Há uma casa que deseja se comunicar com outra casa. Aqui, a casa é análogo a um processo, e porta para um soquete. processo de envio assume que há uma infra-estrutura no outro lado da porta que irá transportar os dados para o destino. Uma vez que a mensagem é chegou do outro lado, ele passa pela porta do receptor (socket) na casa (processo). Esta ilustração do mesmo livro pode ajudá-lo:
enter descrição da imagem aqui
Sockets são parte da camada de transporte, que fornece comunicação lógica para aplicações. Isto significa que a partir do ponto de vista de aplicação ambos os hospedeiros estão directamente ligados uns aos outros, embora existam numerosos routers e / ou interruptores de entre eles. Assim, um soquete não é uma conexão em si, é o ponto final da ligação. protocolos da camada de transporte são implementadas somente em hosts, e não em roteadores intermediários.
<> fortes portas fortes proporcionar meios de interna de endereçamento para uma máquina. O objetivo principal para permitir que vários processos para enviar e receber dados através da rede sem interferir com outros processos (seus dados). Todas as tomadas são fornecidos com um número de porta. Quando um segmento chega a um hospedeiro, a camada de transporte examina o número da porta de destino do segmento. É, em seguida, encaminha o segmento à tomada correspondente. Este trabalho de entregar os dados em um segmento da camada de transporte para a tomada correta é chamado de-multiplexação . dados do segmento é então enviada para o processo ligado à tomada.

o Oracle Java Tutorial :

Um soquete é um ponto final de um link de comunicação de duas vias entre dois programas em execução na rede. Um encaixe é obrigado a um número de porta de modo que a camada de TCP pode identificar a aplicação que dados está destinado a ser enviado para.

Port e soquete pode ser comparada com a agência bancária.

O número de construção do "Banco" é análogo ao endereço IP. Um banco tem seções diferentes, como:

  1. departamento de conta poupança
  2. Pessoal departamento de empréstimos
  3. Home departamento de empréstimos
  4. departamento de Reclamações

Assim 1 (conta poupança departamento), 2 (departamento empréstimo pessoal), 3 (casa departamento de empréstimo) e 4 (departamento de queixa) são portas.

Agora, vamos dizer que você vai abrir uma conta de poupança, você vai para o banco (endereço IP), então você vai para "conta poupança departamento" (número da porta 1), então você conhecer um dos funcionários trabalhando sob " conta poupança departamento". Vamos chamá-lo SAVINGACCOUNT_EMPLOYEE1 para abertura de conta.

SAVINGACCOUNT_EMPLOYEE1 é o seu descritor de socket, portanto, pode haver SAVINGACCOUNT_EMPLOYEE1 para SAVINGACCOUNT_EMPLOYEEN. Estes são todos os descritores de socket.

Da mesma forma, outros departamentos vai ter trabalho employess sob eles e eles são análogas à tomada.

Estes são conceitos básicos de rede por isso vou explicá-las em um fácil ainda de forma abrangente para entender em detalhes.

  • Uma tomada é como um telefone (isto é, a extremidade final do dispositivo para a comunicação)
  • IP é como o seu número de telefone (endereço ou seja, para o seu socket)
  • Porto é como a pessoa que você quer falar com (ou seja, o serviço que deseja a fim de que o endereço)
  • Um soquete pode ser um cliente ou um soquete de servidor (ou seja, em uma empresa do telefone do apoio ao cliente é um servidor, mas um telefone em sua casa é principalmente um cliente)

Assim, uma tomada de rede é um dispositivo de comunicação virtual ligada a um par (ip, porta) = (endereço, serviço).

Nota:

  • A máquina, um computador, uma máquina, um móvel ou um PC pode ter vários endereços, várias portas abertas, e, assim, tomadas múltiplas. Como em um escritório você pode ter vários telefones com vários números de telefone e várias pessoas para conversar.
  • A existência de um necessitate porta aberta / ativa que você deve ter uma tomada ligada a ela, porque é o soquete que faz com que o porto acessível. No entanto, você pode ter as portas não utilizadas para o momento.
  • Também nota, em uma tomada de servidor, você pode vinculá-lo a (uma porta, um endereço específico de uma máquina) ou para (uma porta, todos os endereços de uma máquina) como no telefone, você pode ligar muitas linhas de telefone (telefone números) para um telefone ou linha telefônica um específico para um telefone e ainda pode chegar uma pessoa através de todas essas linhas de telefone ou através de uma linha telefónica específica.
  • Você pode não associado (BIND) um soquete com duas portas, como no telefone, geralmente, você não pode ter sempre duas pessoas usando o mesmo telefone ao mesmo tempo.
  • Avançado: na mesma máquina que você não pode ter dois soquetes com o mesmo tipo (cliente ou servidor) e mesma porta e ip. No entanto, se você é um cliente que você pode abrir duas conexões, com dois soquetes, para um servidor porque o porto local em cada um dos soquetes estes do cliente é diferente)

Hope ele limpa você duvida

TCP Relativa terminologia / IP que é o que eu suponho que está implícito na pergunta. Em termos leigos:

A PORT é como o número de telefone de uma casa particular, em um código postal particular. O CEP da cidade poderia ser pensado como o endereço IP da cidade e todas as casas naquela cidade.

A TOMADA por outro lado, é mais como um telefonema estabelecida entre telefones de um par de casas conversando entre si. Essas chamadas podem ser estabelecidas entre casas na mesma cidade ou duas casas em diferentes cidades. É esse caminho estabelecido temporária entre o par de telefones conversando entre si que é tomada.

Um soquete é um ponto de extremidade de comunicação. A tomada não está directamente relacionado com a família do protocolo TCP / IP, ele pode ser usado com qualquer protocolo seus suportes do sistema. A tomada C API espera que você primeiro obter um objeto de soquete em branco a partir do sistema que você pode então se ligar a um endereço de socket local (para recuperar diretamente o tráfego de entrada para os protocolos de conexão-menos ou para aceitar pedidos de ligação para protocolos orientados a conexão) ou que você pode se conectar a um endereço de socket remoto (por qualquer tipo de protocolo). Você pode até fazer as duas coisas se você quiser controlar tanto, o endereço socket local uma tomada é obrigado a e o endereço do socket remoto um soquete está conectado. Para protocolos de conexão-menos que ligam um soquete é ainda opcional, mas se você não fizer isso, você também tem que passar o endereço de destino com cada pacote que deseja enviar sobre o soquete de que outra forma seria o know tomada para onde enviar esses dados para? Vantagem é que você pode usar um único soquete para enviar pacotes para diferentes endereços de socket. Depois de ter sua tomada configurado e talvez até mesmo conectado, consideram que é um tubo de comunicação bi-direcional. Você pode usá-lo para passar dados para algum destino e algum destino pode usá-lo para passar de volta os dados para você. O que você escreve para um socket é enviar para fora e que foi recebido está disponível para leitura.

Portos, por outro lado são algo que apenas determinados protocolos da pilha de protocolos TCP / IP tem. pacotes TCP e UDP tem portas. Uma porta é apenas um número simples. A combinação da porta-fonte e porta de destino identificar um canal de comunicação entre dois hospedeiros. Por exemplo. você pode ter um servidor que deve ser ambos, um servidor HTTP simples e um servidor FTP simples. Se agora chega um pacote para o endereço do servidor, como ele iria saber se isso é um pacote para o servidor HTTP ou FTP? Bem, ele vai saber assim como o servidor HTTP será executado na porta 80 eo servidor FTP na porta 21, por isso, se o pacote chega com uma porta de destino 80, é para o servidor HTTP e não para o servidor FTP. Além disso, o pacote tem uma porta de origem já que se tal porta de origem, um servidor poderia ter apenas uma conexão para um endereço IP de cada vez. A porta de origem torna possível para um servidor para distinguir conexões idênticas: todos eles têm o mesmo porto de destino, por exemplo, porta 80, o mesmo destino IP, sempre o mesmo endereço do servidor e o mesmo IP de origem, como todos eles vêm do mesmo cliente, mas como eles têm diferentes portas de origem, o servidor pode distingui-los uns dos outros. E quando o servidor envia respostas de volta, ele vai fazê-lo para o porto o pedido veio, dessa forma, o cliente também pode distinguir diferentes respostas que recebe.

Um encaixe é um I / O mecanismo de dados. Uma porta é um contratual conceito de um protocolo de comunicação . A tomada pode existir sem um porto. Uma porta pode existir witout uma tomada específica (por exemplo, se várias tomadas são activos na mesma porta, o que pode ser permitido para alguns protocolos).

A porta é usada para determinar qual socket o receptor deve encaminhar o pacote para, com muitos protocolos, mas nem sempre é necessária e a seleção de soquete de recebimento pode ser feito por outros meios - uma porta é inteiramente uma ferramenta utilizada pela manipulador de protocolo no subsistema de rede. por exemplo. Se um protocolo não usa uma porta, os pacotes podem ir para todos os soquetes de escuta ou qualquer tomada.

Em um sentido amplo, Socket - é apenas isso, um soquete, assim como o seu elétrica, cabo ou tomada de telefone. Um ponto em que "coisas necessárias" (poder, sinal, informação) pode sair e chegar de. Ela esconde um monte de coisas detalhada, o que não é necessário para o uso do "coisas necessárias". Na linguagem de software, que fornece uma maneira genérica de definir um mecanismo de comunicação entre duas entidades (estas entidades poderia ser qualquer coisa - duas aplicações, dois dispositivos separados fisicamente, o usuário & espaço kernel dentro de um sistema operacional, etc)

Uma porta é um discriminador de endpoint. Ele diferencia um endpoint de outro. A nível de rede, que diferencia uma aplicação de outro, de modo que a pilha de rede pode passar informações para a aplicação adequada.

respostas já teóricas foram dadas a esta pergunta. Eu gostaria de dar um exemplo prático a esta pergunta, que irá limpar o seu entendimento sobre o soquete e Porto.

Eu achei

Este exemplo irá orientá-lo através do processo de conexão a um site, como Wiley. Você iria abrir seu navegador (como o Mozilla Firefox) e digite www.wiley.com na barra de endereços. O navegador da Web utiliza um servidor Domain Name System (DNS) para procurar o nome www.wiley.com para identificar seu endereço IP é. Para este exemplo, o endereço é 192.0.2.100.

O Firefox faz uma conexão com o endereço 192.0.2.100 e para o porto onde o servidor web camada de aplicação está em funcionamento. Firefox sabe o porto que esperar, porque é uma porta conhecida. O bem conhecido porta para um servidor web é a porta TCP 80.

A tomada de destino que tentativas Firefox para conectar é escrito como soquete: porta, ou, neste exemplo, 192.0.2.100:80. Este é o servidor lado das, mas as necessidades do servidor de conexão para saber para onde enviar o página web que pretende visualizar no Mozilla Firefox, então você tem uma tomada para lado do cliente da conexão também.

A conexão do lado do cliente é composta de seu endereço IP, tais como 192.168.1.25, e um número de porta dinâmico escolhido aleatoriamente. O soquete associado com o Firefox parece 192.168.1.25:49175. porque web servidores operam na porta TCP 80, ambos os soquetes são soquetes TCP, enquanto que se você estavam se conectando a um operativo de servidor em uma porta UDP, ambos os soquetes de servidor e cliente seria sockets UDP.

soquete é uma abstração fornecida pelo kernel para aplicações do usuário para dados de I / O. Um tipo de socket é definido pelo protocolo de sua manipulação, uma comunicação IPC etc. Então, se alguém cria um TCP soquete que ele pode fazer manipulações como a leitura de dados à tomada e gravar dados a ele através de métodos simples eo tratamento protocolo de nível inferior como conversões TCP e encaminhar pacotes para reduzir os protocolos de rede de nível é feito através da implementação de soquete particular no kernel. A vantagem é que necessidade do usuário não se preocupar com a manipulação nitigrities específicos de protocolo e deve apenas ler e escrever dados à tomada como um tampão normal. Mesmo é verdade no caso do IPC, o usuário apenas lê e escreve dados para tomada e do kernel alças todos os detalhes de nível inferior com base no tipo de soquete criado.

juntos Porto com IP é como fornecer um endereço para o soquete, embora a sua não é necessário, mas ajuda na comunicação em rede.

A única porta pode ter um ou mais soquetes conectados com diferentes externa IP é como uma tomada múltipla.

  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

Um encaixe é basicamente um ponto de extremidade para comunicação de rede, constituído por, pelo menos, um endereço IP e uma porta. Em Java / C # uma tomada é uma implementação de nível superior de um lado de uma conexão bidirecional.

Além disso, uma definição na documentação Java .

Port:

Uma porta pode referir-se a um ponto de conexão física para os dispositivos periféricos, tais como em série, em paralelo, e portas USB. A porta termo também se refere a determinados pontos de ligação Ethernet, s dominam vários como aqueles em um concentrador, comutador ou router.

soquete:

Um soquete representa uma única conexão entre duas aplicações de rede. Estas duas aplicações nominalmente executados em computadores diferentes, mas soquetes também pode ser usado para comunicação entre processos em um único computador. Os aplicativos podem criar vários soquetes para se comunicar uns com os outros. Sockets são bidireccional, o que significa que ambos os lados da ligação é capaz de enviar e receber dados.

Eu sei que existem muitas explicações. Mas, há uma maneira mais fácil de entender com exemplo prático. Todos nós pode se conectar a HTTP porta 80, mas que significa apenas um usuário pode se conectar a essa porta em um momento ?. A resposta é obviamente não'. Vários usuários para fins múltiplos pode acessar a porta HTTP 80 mas ainda obtêm resposta apropriada eles estão esperando, a partir do servidor, não podem ?. Agora pense sobre isso por um minuto, como ?. Sim, você está correto, sua Endereço IP que identifica os usuários diferentes, que contatos para diferentes fins. Se você teria lido as respostas anteriores antes de chegar aqui, você saberia que o endereço IP é uma parte da informação que soquete consiste. Pense nisso, é possível ter uma comunicação, sem soquetes ?. A resposta é 'sim', mas você não pode executar mais de um aplicativo em um porto, mas sabemos que não somos um interruptor 'Dump' que roda em apenas hardware.

Uma porta denota um ponto de extremidade de comunicação nos transportes TCP e UDP para o protocolo de rede IP. Um soquete é uma abstração de software para um ponto de extremidade de comunicação comumente usado em implementações destes protocolos (soquete API). Uma implementação alternativa é a API XTI / TLI.

Veja também:

Stevens, W. R. 1998, a Rede UNIX Programação: de APIs de rede: Conectores e XTI; Volume 1, Prentice Hall.
Stevens, W. R., 1994, a TCP / IP Illustrated, Volume 1:. Os Protocolos, Addison-Wesley

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top