Ferramentas do usuário

Ferramentas do site


rede

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.


rede [2023/09/12 16:14] (atual) – criada - edição externa 127.0.0.1
Linha 1: Linha 1:
 +====== Programação Cliente Servidor em Linux ======
  
 +Características para um sistema ser considerado cliente/servidor:
 +   - Uma arquitetura cliente/servidor consiste em um processo de cliente e um processo de servidor, que podem ser distinguidos um do outro, embora possam interagir totalmente.
 +   - A parte cliente e a parte servidor podem operar em diferentes plataformas de computador.
 +   - Tanto a plataforma do cliente como a do servidor podem ser atualizadas sem que se tenha de necessariamente atualizar a outra plataforma.
 +   - O servidor pode atender a vaŕios clientes simultaneamente. O cliente pode acessar vários servidores.
 +   - Ambos incluem capacidade de operar em rede.
 +   - A ação normalmente é iniciada no cliente.
 +
 +A chave para entender o conceito de programação cliente/servidor, é o entendimento do relacionamento lógico entre a entidade que requisita o serviço (isto é, o cliente) para a outra entidade (o servidor), que provê os serviços requisitados.
 +
 +Um cliente pode manter um relacionamento com diferentes servidores, que o atendam. Um servidor pode atender múltiplos clientes.
 +
 +{{:modelos_client_server.pdf |Exemplos de cliente/servidor}}
 +
 +Um atributo do servidor é pode atender vários clientes. Uma forma é criar servidores escravos para atender aos clientes. Neste exemplo, para cada cliente tem-se um servidor dedicado (relação de 1 para 1).
 +
 +{{:servidor_cria_escravo.pdf|Servidor criando escravos para atender o cliente}}
 +
 +===== Aspectos da Conexão =====
 +São dois os tipos de conexão utilizados em uma comunicação. Conexão orientada e conexão não orientada.
 +
 +==== ConnectionLess ====
 +Na conexão do tipo //connectionless// (não orientado a conexão):
 +  * Cada mensagem é independente.
 +  * Não existe garantia de entrega (a mensagem procura o servidor).
 +  * Mensagens de mesma origem podem chegar ao servidor por caminhos diferentes.
 +  * A sequência de envio pode ser diferente da sequência de chegada.
 +
 +Este tipo de comunicação também é chamada de comunicação por datagramas. O serviço postal é um exemplo na vida real para este tipo de comunicação, afinal é possível enviar uma carta sem que alguém a esteja esperado.
 +
 +{{:diagrama_udp_cliente_server.pdf|Relacionamento entre funções para programação UDP}}
 +
 +==== Connection-Oriented ====
 +O outro tipo de comunicação é conhecido como //connection-oriented// (orientado a conexão):
 +  * O caminho entre as partes é previamente estabelecido e conhecido.
 +  * Existe garantia de entrega.
 +  * A sequência de envio e recepção é respeita.
 +  * A cada envio do cliente, o servidor responde confirmando o recebimento.
 +
 +Este tipo de comunicação é conhecido como //datastream// ou somente conexão //stream//. O serviço de telefonia é um exemplo na vida real para este modelo. Deve haver uma pessoa do outro lado para atender a chamada telefônica.
 +
 +{{:diagrama_tcp_cliente_server.pdf|Relacionamento entre funções para programação TCP}}
 +
 +===== Funções do Linux =====
 +
 +A programação para rede utiliza as seguintes funções:
 +  * [[socket]]
 +  * [[htonl]], [[htonl|htons]], [[htonl|ntohl]], [[htonl|ntohs]]
 +  * [[bind]]
 +  * [[inet_aton]], [[inet_aton|inet_addr]] e [[inet_aton|inet_ntoa]]
 +  * [[connect]]
 +  * [[listen]]
 +  * [[accept]]
 +  * [[send]]
 +  * [[recv]]
 +  * [[send|sendto]]
 +  * [[recv|recvfrom]]
 +  * [[close]]
 +  * [[shutdown]] 
 +  * [[getpeername]]
 +  * [[gethostbyname]]
 +  * [[select]]
 +
 +E utiliza as seguintes estruturas:
 +  * [[sockaddr_in]]
 +
 +===== Exemplos de Aplicação =====
 +  * Cliente e Servidor [[exemplo_tftp|TFTP]] (usando UDP)
 +  * Cliente e Servidor de [[exemplo_eco|ECO]] (usando TCP)
 +
 + --- //[[marcos@laureano.eti.br|Marcos Laureano]] 2009/02/14 11:52//
rede.txt · Última modificação: 2023/09/12 16:14 por 127.0.0.1