Soquete Unix - Portas e Serviços

Quando um processo cliente deseja se conectar a um servidor, o cliente deve ter uma maneira de identificar o servidor que deseja conectar. Se o cliente souber o endereço de Internet de 32 bits do host no qual o servidor reside, ele poderá contatar esse host. Mas como o cliente identifica o processo de servidor específico em execução naquele host?

Para resolver o problema de identificação de um determinado processo de servidor em execução em um host, tanto o TCP quanto o UDP definiram um grupo de portas conhecidas.

Para o nosso propósito, uma porta será definida como um número inteiro entre 1024 e 65535. Isso ocorre porque todos os números de porta menores que 1024 são considerados bem conhecidos - por exemplo, telnet usa a porta 23, http usa 80, ftp usa 21, e assim por diante.

As atribuições de porta para serviços de rede podem ser encontradas no arquivo / etc / services. Se você estiver escrevendo seu próprio servidor, deve-se tomar cuidado ao atribuir uma porta a ele. Você deve se certificar de que esta porta não deve ser atribuída a nenhum outro servidor.

Normalmente, é uma prática atribuir qualquer número de porta superior a 5.000. Mas existem muitas organizações que escreveram servidores com números de porta superiores a 5.000. Por exemplo, o Yahoo Messenger é executado em 5050, o servidor SIP é executado em 5060 etc.

Portas e serviços de exemplo

Aqui está uma pequena lista de serviços e portas associadas. Você pode encontrar a lista mais atualizada de portas de Internet e serviços associados em IANA - Atribuição de portas TCP / IP .

Service Port Number Service Description
eco 7 UDP / TCP envia de volta o que recebe.
descartar 9 UDP / TCP descarta a entrada.
dia 13 UDP / TCP retorna a hora ASCII.
Chargen 19 UDP / TCP retorna caracteres.
ftp 21 Transferência de arquivos TCP.
telnet 23 Login remoto TCP.
smtp 25 Email TCP.
dia 37 UDP / TCP retorna o tempo binário.
tftp 69 Transferência de arquivo UDP trivial.
dedo 79 Informações de TCP sobre usuários.
http 80 TCP World Wide Web.
Conecte-se 513 Login remoto TCP.
quem 513 UDP informações diferentes sobre os usuários.
Xserver 6000 Janelas TCP X (NB> 1023).

Funções de porta e serviço

O Unix fornece as seguintes funções para buscar o nome do serviço do arquivo / etc / services.

  • struct servent *getservbyname(char *name, char *proto) - Esta chamada pega o nome do serviço e o nome do protocolo e retorna o número da porta correspondente para esse serviço.

  • struct servent *getservbyport(int port, char *proto) - Esta chamada pega o número da porta e o nome do protocolo e retorna o nome do serviço correspondente.

O valor de retorno de cada função é um ponteiro para uma estrutura com a seguinte forma -

struct servent {
   char  *s_name;
   char  **s_aliases;
   int   s_port;
   char  *s_proto;
};

Aqui está a descrição dos campos de membro -

Atributo Valores Descrição
s_name http É o nome oficial do serviço. Por exemplo, SMTP, FTP POP3, etc.
s_aliases ALIAS Ele contém a lista de aliases de serviço. Na maioria das vezes, ele será definido como NULL.
esporte 80 Ele terá o número da porta associado. Por exemplo, para HTTP, será 80.
s_proto

TCP

UDP

É definido para o protocolo usado. Os serviços de Internet são fornecidos usando TCP ou UDP.