UDP e TCP


NOTAS

Nas aplicações de rede existe sempre um processo cliente numa máquina que dispara uma conexão, e um processo servidor em outra que tem que estar preparado para aceitar várias conexões simultâneas. Para isso existe para cada tipo de processo servidor o conceito de um processo "master" que aceita novas conexões e cria processos escravos do mesmo tipo para lidar com cada conexão. O processo "master"nunca morre (exceto em condições excepcionais) e o processo cliente tem uma duração finita.

Esse processos servidores são chamados "daemons"na linguagem UNIX e seus nomes terminam com a letra "d". Existe um daemon genérico chamado inetd que aceita conexões "em nome de" vários tipos de processos, como telnet e finger.

Surge a questão: como identificar uma conexão unicamente, tanto na máquina origem quanto na máquina destino ? Da explanação anterior fica claro que apenas os IP de destino e origem não bastam. Solução: associar a cada aplicação (ou serviço) um número de porta padronizado. Assim por exemplo, telnet tem o número 23; ftp, 21 e SMTP, 25. O melhor meio de pensar numa porta é como uma fila. Quando uma aplicaçãop negocia com o sistema operacional uma determinada porta, o S.O. cria uma fila interna para armazenar as mensagens que chegam.

Porém isso não é suficiente: e se na máquina origem existir mais de um telnet com a mesma máquina destino? Solução: associar a cada cliente na máquina origem um múmero de porta único, obtido dinâmicamente. Para isso em cada máquina existe um processo chamado portmap que "escolhe" uma porta disponível. Os números de porta até 1024 são reservados para portas pré-definidas ( alguns valores são reservados para aplicações criadas por usuários) e acima deste valor a alocação é dinâmica.

Centro de Computação
UNICAMP
© Rubens Queiroz de Almeida