SOCKET Show 1) Definição Socket é uma interface de comunicação bidirecional entre processos através de uma rede de computadores .Essa mesma interface permite que essa comunicação utilize diversas famílias de protocolos (Unix domain , Internet domain , Xerox NS domain ). Sockets são representados como descritores de arquivos e podem permitir a comunicação entre processos distintos na mesma máquina ou em máquinas distintas, através de uma rede. Os sockets são a base da comunicação em redes TCP/IP e também são muito usados em comunicações entre processos no interior de um mesmo computador.Essa comunicação é baseada no paradigma cliente –servidor . Eles normalmente são identificados como uma interface entre a camada de aplicação e a camada de transporte que também tem a função de servir como interface de programação pela qual as aplicações de rede são inseridas na Internet ( = Interface de Programação de Aplicação – API ) . Sockets podem trabalhar com RPCs e assim terem a função de implementar numa aplicação as funções de rede, mas fazem isto de maneiras diferentes. Em documentos de RFC (Request for Comments) relacionado a TCP ou UDP, um socket em um computador é definido como a combinação de um endereço IP, um protocolo, e o número da porta do protocolo. Um socket pode ainda ser visto como um tipo de dispositivo mecânico instalado em uma placa-mãe, destinado a receber a CPU - o processador, sua nomenclatura refere-se ao número de pinos que o mesmo poderá receber. Ex.: PGA 370 - só admite processadores com 370 pinos. A interface padronizada de soquetes surgiu originalmente no sistema operacional Unix BSD (Berkeley Software Distribution); portanto, eles são muitas vezes chamados de Berkeley Sockets. É também uma abstração computacional que mapeia diretamente a uma porta de transporte (TCP ou UDP) e mais um endereço de rede. Com esse conceito é possível identificar unicamente um aplicativo ou servidor na rede de comunicação IP. Para identificar uma conexão ente dois computadores, um socket deve ser definido, por meio das seguintes informações: -Endereço IP do servidor; -Porta onde se encontra o serviço solicitado; -Endereço IP do cliente; -Porta através da qual o cliente solicita o serviço. Um bom exemplo de um estabelecimento de uma conexão entre computadores através de socket seria o acesso à uma página da Internet. Um servidor Web tem a porta 80 como porta padrão de comunicação entre os clientes. Quando digitamos um endereço de um site no Internet Explorer do Windows, automaticamente esse endereço é convertido em seu respectivo endereço IP. Se estamos numa rede, nosso micro tem um único endereço IP. E finalmente, junto deste processo, uma porta em seu computador é disponibilizada dinamicamente, sendo um número maior que 1024, para esta conexão.Então, temos todas as informações necessárias para estabelecer a conexão, tendo assim um socket. O cliente, no caso de uma conexão à uma página da Internet, é quem a solicita através de um browser (Internet Explorer, por exemplo), e o servidor é quem disponibiliza a página para ser acessada. Sockets podem receber diversas denominações , por exemplo Socket de Conexão para o existente no final da fase de apresentação onde a conexão TCP ocorre entre o socket do cliente e o novo socket do servidor . Também podem receber a denominação de “portas” pelas quais os dados passam da rede para o processo e do processo para a rede , sendo processo considerado parte de uma aplicação de rede . Na Camada de Transporte do hospedeiro destinatário não há entrega dos dados de forma direta a um processo e sim a um socket intermediário . Aplicações de rede usam um par de programas ( um cliente e o outro servidor) em dois sistemas finais diferentes . Quando esses programas são executados , os dois processos ( o cliente e o servidor ) estabelecem uma comunicação entre si usando sockets para a leitura e os usando para escrever mensagens através deles . Uma particularidade é que pode existir mais de um socket no hospedeiro destinatário onde cada um possui um identificador exclusivo . Ainda podem existir os sockets UDP que participa da construção de sistemas . Esse processo é similar à dos exemplos apresentados em TCP, com pequenas alterações: · O servidor simplesmente cria um socket; não é necessário colocá-lo em modo de escuta (listen) nem aguardar conexões (accept). · Ao invés de usar as chamadas send/write e recv/read, normalmente são usadas as chamadas sendto e recvfrom, que especificam os parceiros de comunicação na hora do envio/recepção. · Ao contrário do TCP, que transforma a comunicação em um fluxo contínuo de bytes, em UDP as fronteiras entre as mensagens são respeitadas. O receptor deve receber as mensagens com os mesmos tamanhos com que foram enviadas. · Em UDP não há garantia de entrega de mensagens. Caso o servidor não esteja ativo, mensagens enviadas a ele são simplesmente descartadas. 2 ) Como criar um Socket Ao criar um socket, deve ser especificada a forma de comunicação (communication style) a ser usada e que protocolo deverá realizar a comunicação nos níveis mais baixos do sistema. Em UNIX, três formas de comunicação são normalmente usadas: · stream : esta forma de comunicação provê canais de comunicação bidirecional ponto-a-ponto (entre dois processos pré-definidos) sobre os quais pode-se enviar seqüências de bytes de qualquer tamanho, de maneira confiável (sem perdas, duplicações ou inversões de ordem nos dados). · datagram : forma que provê canais de comunicação bidirecionais sobre os quais pode-se enviar pacotes de dados a qualquer processo que tenha um canal equivalente definido. Não há garantia na entrega dos pacotes, pois o sistema implementa uma política de best-effort. Além disso, como os pacotes são tratados de forma independente, podem haver inversões de ordem. · raw : esta forma de comunicação provê acesso direto aos protocolos e interfaces de comunicação de baixo nível. Geralmente é usada por processos que gerenciam ou monitoram a infra-estrutura de rede. Essas formas de comunicação são definidas através das constantes inteiras SOCK_STREAM, SOCK_DGRAM e SOCK_RAW, no arquivo Além
da forma de comunicação, também deve ser escolhido um espaço de nomes para nomear ou endereçar o socket criado. O nome de um socket sempre está relacionado a um espaço de nomes, também chamado de domínio (socket domain). Cada espaço de nomes é definido por uma macro na forma · PF_LOCAL : indica o espaço de nomes local, no qual os nomes de sockets são válidos somente no escopo do computador local. As macros PF_UNIX e PF_FILE são sinônimos desse espaço de nomes. · PF_INET : indica o espaço de nomes IPv4e seus protocolos associados. · PF_INET6 : indica o espaço de nomes IPv6 e seus protocolos associados. Além dos acima, outros espaços de nome estão disponíveis, embora sejam de uso menos freqüente: PF_NS (protocolos Xerox NS), PF_ISO (protocolos OSI/ISO), PF_CCITT (protocolos do CCITT), PF_IMPLINK (Internet
Message Processors), PF_ROUTE (protocolos de roteamento), etc. Para cada espaço de nomes, uma macro correspondente Por fim, deve ser escolhido o protocolo que irá efetuar a comunicação, ou seja, o mecanismo usado para a transferência dos dados. Cada protocolo é aplicável a um dado espaço de nomes e uma forma de comunicação. Algumas regras são importantes na escolha de um protocolo:
3) Socket Na Comunicação Cliente / Servidor Geralmente a interação entre processos usa o modelo de comunicação Cliente/Servidor. Algumas características importantes desse modelo:
Como servidor e cliente têm comportamentos distintos face à comunicação, suas implementações seguem também padrões distintos. Ambos criam sockets para se comunicar, mas operam de forma diferente. Um cliente executa normalmente os seguintes passos para estabelecer uma comunicação com um servidor:
Um servidor normalmente executa os seguintes passos para oferecer serviço a seus clientes:
Diversas variantes são possíveis no esquema acima: por exemplo, o servidor pode lançar threads ou processos filhos para tratar as conexões recebidas. Bibliografia : Kurose , James F. ; Ross , Keith W. Redes de Computadores e a Internet : Uma abordagem top-down . 3ª edição – São Paulo : Pearson Addison Wesley , 2006 . http://pt.wikipedia.org/wiki/Socket - acessado em 22 de abril de 2007 Artigo : Seleguim Cestarolli , Guilherme Pontifícia Universidade Católica de Campinas Faculdade de Análise de Sistemas Segurança da Informação Perigos do Mundo Virtual1 www.puccamp.br/graduacao/curso/artigos - acessado em 20 de abril de 2007 Quando utilizamos uma interface de socket em um programa em qual is camada S e qual is protocolo s estamos trabalhando?Resposta: Camada de Apresentação e Transporte – protocolos Socket, TCP / UDP; Explicação: Pois quando utilizamos sockets precisamos declarar se utilizaremos TCP ou UDP, que corresponde a camada de transporte e nós utilizamos o socket em aplicações, o que é uma camada pertencente a camada de apresentação.
Qual camada OSI utiliza sockets?Resposta: Camada de transporte. Explicação: A camada de transporte, Modelo TCP/IP, é a camada responsável pela transferência de dados entre duas máquinas, independente da aplicação usada e do tipo, topologia ou configuração das redes físicas existentes entre elas.
O que é a interface de sockets em programação de rede?Socket é uma interface de comunicação bidirecional entre processos através de uma rede de computadores . Essa mesma interface permite que essa comunicação utilize diversas famílias de protocolos (Unix domain , Internet domain , Xerox NS domain ).
Qual tipo de comunicação de um socket?Um socket é uma interface de comunicação bidirecional entre processos. Sockets são representados como descritores de arquivos e permitem a comunicação entre processos distintos na mesma máquina ou em máquinas distintas, através de uma rede.
|