O que são portas e protocolos realmente?


11

Eu ouço as pessoas falarem sobre portas e protocolos (em relação às redes de computadores) e geralmente fornecem analogias para elas (por exemplo: "uma porta é muito parecida com uma porta de remessa, envia e recebe dados como uma porta de remessa envia e recebe mercadorias" de outras portas ") e coisas assim.

Entendo o que tudo isso significa, mas apenas em um nível muito artificial. Basicamente, eu sei o que é uma porta e entendo o que são protocolos, mas o que são realmente?

Essas portas são objetos físicos? Eles são algo embutido em parte do meu computador? Quantas portas existem? Posso aumentar ou diminuir o número de portas? Eles são algo físico? Ou escrito em código? Onde está esse código? O sistema operacional? O que realmente é uma porta?

O que são protocolos? Eu imagino que eles são algum tipo de código .... Você pode criar seu próprio protocolo? Como você obtém uma porta específica para executar um protocolo específico? Qual idioma você usa para criar um protocolo? Como você define ou inventa um novo protocolo?

Respostas:


9

Além da resposta do Hello71, pode ser útil visualizar uma porta pensando na estrutura de um endereço em um pacote. Um pacote que é uma unidade de dados transmitida pela rede. O TCP é um exemplo de protocolo de camada de transporte que usa portas e é comumente usado sobre IP.

Portanto, o IP tem dois componentes de endereçamento - o IP de origem e o IP de destino. O TCP adiciona isso usando uma porta de origem e uma porta de destino. São as portas que permitem à máquina receptora diferenciar o tráfego destinado ao mesmo endereço IP - ou seja, se você possui um servidor que recebe solicitações da Web e email em um único endereço IP, é necessário determinar qual aplicativo deve receber os dados - o serviço de email ou o serviço da web. Portanto, eles podem ter esta aparência se um único usuário realizar uma solicitação da Web e uma solicitação de email para o mesmo servidor:

Source IP    Source Port       Dest IP       Dest Port       Service
10.1.1.10    23434             192.168.1.1   80              web
10.1.1.10    34343             192.168.1.1   25              incoming email

O serviço web possui a porta 80 e o serviço de email possui a porta 25 - eles "escutam" em suas respectivas portas, o que permite que o tráfego termine no lugar certo.

A porta de origem é "efêmera" - pois é composta no momento em que o pacote é enviado. No entanto, ainda serve a um propósito útil. Ele permite que ambas as extremidades da conexão acompanhem conversas separadas. Considere se nosso usuário enviou duas solicitações da Web simultâneas:

Source IP    Source Port       Dest IP       Dest Port       Service
10.1.1.10    23232             192.168.1.1   80              web request 1
10.1.1.10    23234             192.168.1.1   80              web request 2

Isso permite que o serviço da Web saiba que essas são solicitações separadas, mas também o tráfego de retorno do servidor da Web - as páginas da Web - são enviadas de volta para as respectivas portas de origem, o que permite ao navegador saber a qual solicitação o servidor está respondendo.

Observe que tudo isso se refere a números de porta, de uma perspectiva TCP / IP, os dados reais sendo movidos por essas portas podem ser qualquer coisa. Ele não se importa ou tem conhecimento de aplicativos; portanto, se você tivesse tráfego da Web na porta 25 e email na porta 80, não seria o mais sábio.

Cabe ao aplicativo de envio e recebimento garantir que os dados sejam a estrutura correta, e é aí que entram os protocolos de aplicativos. HTTP é um exemplo de protocolo de aplicativo usado pelos navegadores para se comunicar com os servidores da web. É um protocolo bem definido que garante que o navegador envie solicitações para qualquer servidor da Web e que o servidor da Web entenda e responda com sensibilidade. Mas o que não inclui em sua definição é algo sobre como os pacotes passam de A para B - que é de responsabilidade das camadas anteriores - as camadas de transporte, Internet e link.


Obrigado! Esta foi apenas a resposta que eu estava procurando, obrigado por ajudar!
Bob

3

Hum. Eu acho que o melhor lugar para começar seria olhar para o IP Suite, também conhecido como modelo TCP / IP. (Ignorando as outras camadas do modelo OSI por motivos de simplicidade.)

Basicamente, é uma série de camadas:

Camada de Aplicação - HTTP, FTP, POP, SSH, etc.
Camada de Transporte - TCP, UDP, etc.
Camada de Internet - IP, ICMP, etc.
Camada de Link - Ethernet, etc.

As portas são, na maioria das vezes, implementadas na camada de transporte (camada 4 - Sim, a numeração está correta).

A maioria das pilhas TCP e / ou UDP implementadas nos sistemas operacionais usa um sistema básico de atribuição de portas a programas e simplesmente eventos de eventos nesses programas à medida que os pacotes chegam pela rede. No entanto, qualquer implementação poderia, teoricamente, funcionar; pode haver até mesmo por alternativas hipotéticas ponderadas na academia.

O TCP foi definido como tendo um total de 65535 portas, que qualquer programa pode usar para fazer o que quiser (embora muitos SOs limitem o uso de portas abaixo de 1024, dando a elas um status especial ad hoc). Embora haja algumas listas limitadas, não há um padrão real para definir quem obtém qual porta e qual porta executa qual programa. Uma porta é, portanto, mais ou menos um número aleatório em que diferentes implementações de um programa decidem concordar em se comunicar. Obviamente, os projetistas de tais programas tentam evitar portas que outros programas populares já escolheram.

Concedido que não é necessário executar o TCP. Alguns protocolos são executados na camada de Internet simples, ou mesmo na camada de links simples, principalmente para fins de eficiência, ou porque esses protocolos foram inventados antes da existência do TCP ou IP. Obviamente, ao fazer isso, você troca a simplicidade e a extensa verificação de erros das bibliotecas de rede do sistema operacional.

Para mais detalhes, consulte as páginas da Wikipedia no modelo OSI, TCP e IP.


Eu entendo tudo isso. Então, basicamente, uma porta não é uma coisa física? É algo que está programado? Onde a porta está definida em um computador? E então para protocolos, como são criados? São programados?
Bob

Não, uma porta não é uma coisa física nesse contexto (obviamente, uma porta USB é física, mas não está relacionada a este tópico). Os protocolos são definidos através de RFCs ( en.wikipedia.org/wiki/Request_for_Comments ) e implementados em código programado.
Paul

Seria correto dizer que o TCP é um processo do sistema que reserva memória para armazenar dados recebidos do IP (ou armazenar dados a serem recuperados pelo IP) e que essa memória é dividida em 'portas'. E que outros aplicativos (processos), como HTTP, podem notificar o TCP de que gostariam de reservar portas específicas (por exemplo, 80 e 443). Então, torna-se tarefa do TCP 1. permitir que o HTTP adicione dados de saída a esses endereços de memória e 2. informar o HTTP quando os dados recebidos forem adicionados a esses endereços de memória?
Zach Smith

Talvez Bob estivesse confuso entre portas de protocolo e portas de switch físico. A parte da porta do protocolo foi bem respondida por vários, embora tenha faltado qualquer fonte. Quanto às portas físicas, são os locais de entrada e saída de entrada nos quais o cabeamento é conectado, o que permite a transferência de dados da rede. Isso pode envolver circuitos eletrônicos, receptores de fibra óptica, lasers e buffers. L. Peterson 4ª edição.
Nassim

3

Embora essa pergunta já tenha sido marcada como respondida, eu queria abordar algumas das perguntas adicionais feitas no OP.

Essas portas são objetos físicos?

Nenhuma porta não é um objeto físico.

Um número de porta é um número inteiro não assinado de 16 bits, o que significa que o intervalo de portas disponíveis para uso é de 1 a 65535 (o número de porta 0 está reservado e não pode ser usado). Um processo associa seus canais de entrada ou saída via soquetes da Internet, um tipo de descritor de arquivo, com um protocolo de transporte, um número de porta e um endereço IP. Esse processo é conhecido como ligação e permite o envio e o recebimento de dados pela rede.

Eles são algo embutido em parte do meu computador? Eles são algo físico? Ou escrito em código? Onde está esse código? O sistema operacional? O que realmente é uma porta?

O software de rede do sistema operacional tem a tarefa de transmitir dados de saída de todas as portas de aplicativos para a rede e encaminhar os pacotes de rede que chegam para um processo, combinando o endereço IP e o número da porta do pacote.

Somente um processo pode ser vinculado a uma combinação específica de endereço IP e porta usando o mesmo protocolo de transporte. Falhas comuns de aplicativos, às vezes chamadas de conflitos de porta, ocorrem quando vários programas tentam se conectar aos mesmos números de porta no mesmo endereço IP usando o mesmo protocolo.

O parágrafo acima é essencial para entender por que portas / protocolos são usados ​​em redes. Se não tivéssemos uma maneira de especificar o protocolo, que transmite dados através de um número de porta apon acordado - você não seria capaz de fazer mais de uma coisa por vez (verifique seu e-mail e use a web) porque seu computador teria não há como diferenciar dados do seu cliente de email e dados do site em que você está navegando.

Quantas portas existem?

Os números de porta são atribuídos de várias maneiras, com base em três intervalos:

  1. Portas conhecidas / do sistema (0-1023) - Esse intervalo de portas é usado pelos processos do sistema que fornecem tipos de serviços de rede amplamente utilizados (HTTP / 80, HTTPS / 443, Telnet / 21, SSH / 22)

  2. Portas registradas / usuário (1024-49151) - O intervalo de números de portas de 1024 a 49151 são as portas registradas. Eles são atribuídos pela IANA para serviços específicos mediante solicitação por uma entidade solicitante. (Webmin / 10000, HTTP Proxy / 8080, Protocolo de Área de Trabalho Remota / 3389, etc)

  3. Portas efêmeras / dinâmicas / privadas (49152-65535) - O intervalo 49152-65535 contém portas dinâmicas ou privadas que não podem ser registradas na IANA. Esse intervalo é usado para fins personalizados ou temporários e para alocação automática de portas efêmeras.

Posso aumentar ou diminuir o número de portas?

Em relação à capacidade de aumentar o número de portas disponíveis, você não pode atribuir uma porta acima de 65535 devido à matemática que permite que a rede funcione (binária) - portanto, a resposta a esta pergunta é não, você não pode aumentar o número total de portas disponíveis. portas acima de 65535.

O que são protocolos?

Na ciência da computação, um protocolo de comunicação é um sistema de regras digitais para troca de mensagens dentro ou entre computadores. Quando as mensagens são trocadas por uma rede de computadores, o sistema de regras é chamado de protocolo de rede. Um protocolo é basicamente um conjunto acordado de instruções / comandos / chamadas pelas quais dois dispositivos em rede podem se comunicar. Pense se não concordamos com protocolos e servidores da Web apenas enviando dados aleatoriamente para navegadores da Web com os quais o navegador não sabia o que fazer? Felizmente, temos HTTP e todos os navegadores criados no software incorporam o software para que ele possa se comunicar com qualquer servidor que também fale a mesma linguagem (HTTP).

Eu imagino que eles são algum tipo de código .... Você pode criar seu próprio protocolo? Qual idioma você usa para criar um protocolo?

Sim, você pode criar seus próprios protocolos. Os protocolos são escritos em uma ampla variedade de idiomas. Não sou desenvolvedor de software, mas tenho certeza de que, desde que qualquer linguagem que você esteja usando tenha bibliotecas que permitam escrever software que possa se comunicar por TCP / IP (existem outros conjuntos de protocolos, mas o TCP / IP é o mais amplamente utilizado), você pode usar esse idioma para escrever um protocolo. A linguagem de programação 'C' parece ser a mais usada para escrever protocolos. Isso se deve ao fato de que muitos dos primeiros protocolos de rede foram desenvolvidos no UNIX na década de 1970 e C é a linguagem na qual o próprio UNIX está escrito.

Como você obtém uma porta específica para executar um protocolo específico?

Isso difere um pouco entre os sistemas operacionais. Por exemplo, para alterar o número da porta, o Remote Desktop Protocol é executado no Windows, você precisa editar o registro. No Linux, muitos dos serviços de rede podem ser configurados diretamente de um arquivo .conf para um serviço de rede específico.

Como você define ou inventa um novo protocolo?

Consulte https://journal.paul.querna.org/articles/2012/02/22/designing-network-protocols/ para uma postagem no blog de alguém que desenvolveu recentemente um novo protocolo de rede e que tipo de coisas ele precisava fazer pelo caminho.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.