Qual é o propósito das portas?

4

Eu tenho algumas perguntas em relação à seguinte explicação dos portos que encontrei .

The Application layer talks to the Transport layer through a port. Ports are numbered and standard applications always use the same port.

The use of a port number allows the Transport protocol (typically TCP) to know which kind of contents is inside the packet, allowing it to know, at the reception side, to which Application protocol it should deliver the received data.

  • Por que um número de porta nunca seria usado para dizer que tipo de protocolo de dados de aplicativo reside dentro de quando não há garantia absoluta?

    No meu entender, não há restrições quanto ao tipo de dados do aplicativo que você envia por uma porta (é apenas uma sugestão). Além disso, os dados de protocolo já não estão incluídos em algum lugar do pacote para esse fim?

  • Além disso, o que acontece com os dados se você enviar HTTP ou algum outro tipo de protocolo para um destino da porta 25 (que espera SMTP)?

  • Terceiro, o que acontece com os dados se você os enviar para uma porta que não esteja vinculada a nenhum programa e, portanto, não seja atendida?

  • ** Finalmente, se uma porta só pode ser vinculada a um único programa, como vários programas que dependem de dados HTTP recebidos podem ser executados no meu computador ao mesmo tempo? ****

Obrigado antecipadamente!

    
por Griffin 22.01.2012 / 03:06

1 resposta

15

Why would a port number ever be used to tell what kind of application data protocol resides inside when there's not absolute guarantee?

Porque a adivinhação é uma maneira terrível de executar as coisas, e não há como você parar, por exemplo, alguém mal-intencionado de enviar a coisa errada de qualquer maneira. Então, isso ajuda no caso em que todo mundo está jogando bem e não faz nada pior.

To my understanding, there are no restrictions to what kind of application data you send over a port (it's just a suggestion).

Correto. Na verdade, não é nem uma sugestão, apenas um acordo que muitas pessoas compartilham.

Plus isn't the protocol data already included somewhere in the packet for this purpose?

Não. Pelo menos, não no nível que a porta geralmente indica: você sabe que tipo de protocolo IP de nível mais alto está sendo enviado (por exemplo: TCP, UDP), mas não qual é o conteúdo disso (por exemplo: HTTP, SMTP). / p>

Also, What happens to the data if you send HTTP or some other kind of protocol to a destination of port 25 (which expects SMTP)?

O TCP apenas passa os dados para a camada de aplicativo, que pode fazer qualquer coisa que desejar. Na maioria das vezes, você só recebe erros. Às vezes você tem falhas de segurança exploráveis.

Ocasionalmente, você obtém um bom comportamento para clientes incorretos, como os erros HTTP de texto simples que alguns servidores HTTPS fornecem quando você não usa SSL na porta.

Third, what happens to the data if you send it to a port that isn't bound with any program, and therefore not being listened to?

Você recebe uma mensagem de erro ICMP do sistema de recebimento. Tecnicamente, o receptor poderia fazer o que quisesse, mas na prática, é isso que acontece.

Finally, if a port can only be bound to a single program, how can multiple programs that depend on incoming HTTP data be running on my computer at the same time?

Quando o seu navegador faz uma conexão HTTP com um servidor remoto, ele usa uma porta local aleatória e fala com a porta conhecida (80 ou 443) no servidor remoto. Nesse caso, o é exclusivo para cada conexão de saída distinta. (Embora, tecnicamente, não tem que ser, como para o caso do servidor.)

No lado do servidor, quando você ouve, apenas um processo pode aceitar novas conexões em uma porta (em soquetes Unix / BSD), mas pode passar a conexão estabelecida para outros processos para o serviço. Como o conjunto é único, o tráfego pode ser roteado para a conexão correta.

    
por 22.01.2012 / 03:15