Como funcionam as comunicações através das portas [fechadas]

1

Eu estava estudando programação de socket e certas questões vieram à minha mente. Estas são algumas dúvidas de nível iniciante

  1. É obrigatório usar uma porta bem conhecida para um aplicativo específico. Por exemplo, se eu estiver usando o SSL, posso projetar um servidor para escutar 1000, em vez de 443.

  2. Para o http, estamos nos conectando à porta 80 de alguma outra porta arbitrária. Por que não há porta 80 para a porta 80 communcation.

  3. como um servidor responde às conexões que chegam de diferentes portas à sua porta 80.

  4. quantas conexões são possíveis para um particul

por user71866 08.06.2012 / 10:30

2 respostas

3
  1. Não, isso não é obrigatório, mas alguns aplicativos esperam esse comportamento por padrão (isso torna o aplicativo mais utilizável, já que você não precisa especificar a porta explicitamente). Por exemplo, quando você navega para o site example.com, não é necessário especificar a porta, pois a porta padrão é 80. Se você quiser se conectar a um servidor da Web em outra porta, precisará declarar explicitamente essa porta. Às vezes, as pessoas intencionalmente mudam as portas, como a porta SSH 22, para ter menos incômodos do ruído de fundo da Internet.
  2. Não há motivo para querer isso, sugerir que você está executando um servidor da Web na porta 80 e deseja navegar em um site, não seria possível fazer isso porque outro serviço está usando essa porta. Como eu disse em 1, as portas estão lá apenas, portanto, você não precisa especificá-las quando deseja se conectar a um serviço, a menos que esse serviço esteja sendo executado em uma porta não padrão.
  3. Isso dependeria do que está escutando em sua porta 80, os servidores da web responderão com o protocolo HTTP. Se por algum motivo você estiver executando o SSH nessa porta, ele responderá com o SSH.
  4. No entanto, não há limite em uma porta específica. Existe um limite no número de conexões simultâneas, normalmente limitado pelo número de descritores de arquivos que o kernel suporta (por exemplo, 2048). ( stackoverflow )
por 08.06.2012 / 11:15
1

1 - Isso é apenas sobre "padrões". Por padrão, seu navegador alcançará a porta 443 se você especificar https e 80 se http por exemplo. Você pode fazer o que quiser para seu uso em particular, mas precisará especificar sua porta personalizada assim: some.place.to.go: 1000 Você pode usar as portas "reservadas e bem conhecidas" (0-1023) para os serviços correspondentes, mas se você precisar / quiser usar outra, é com você ... lembre-se que você tem mais de 65k delas:)

2- porque portas < 1024 são reservados e não podem ser usados para iniciar uma conexão

3- estamos falando de conexões TCP ... Em uma máquina específica, um número de porta acoplado ao endereço IP da máquina é conhecido como um soquete. Uma combinação de IP e porta no cliente e no servidor é conhecida como quatro tuplas. Esta tupla quatro identifica exclusivamente uma conexão. Assim, o servidor pode conversar com muitos clientes porque cada cliente fez uma conexão única com o servidor para conversar com ele.

Ex: Um cliente (cli) se conecta ao servidor (srv) de uma porta do cliente (5432) para a porta do servidor (80) cli: 5432 - > srv: 80

O servidor responderá ao cliente na mesma porta do cliente: srv: 80 - > cli: 5432 E assim por diante ...

Então, para a questão 2): - imagine no lado do cliente que existe um servidor http em execução, a porta "local" 80 já está sendo usada. - imagine que existem vários clientes por trás de um roteador (com apenas 1 IP ...), como muitos clientes usam couls a mesma porta de origem?

Se a conexão foi feita a partir da porta 80 e não de uma porta arbitrária, nenhuma dessas situações funcionará. é por isso que precisamos usar uma porta arbitrária para iniciar a solicitação!

4- de um IP para o mundo, max 65535 (porque você só pode ligar 65k sockets ... já que você tem apenas 65k portas)

Se você quiser aprofundar isso, recomendo que leia estas coisas:

link (e os artigos relacionados ...)

link

    
por 08.06.2012 / 11:35

Tags