Buscar

APS 2018 (1) - DESENVOLVIMENTO DE UMA FERRAMENTA PARA COMUNICAÇÃO EM REDE

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 36 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 36 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 36 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

20
Universidade Paulista
Ciência da computação
Atividade Prática Supervisionada
DESENVOLVIMENTO DE UMA FERRAMENTA PARA 
COMUNICAÇÃO EM REDE
Lucas Colleone 	
Bauru
2018-1
Sumário
1. Objetivo do Trabalho	3
2. Introdução	4
3. Referencial Teórico	6
3.1. Sockets	6
3.1.1. Sockets UDP	8
3.1.2. Sockets TCP	8
3.2. Arquitetura em Camadas	10
3.2.1. Camada de Aplicação	10
3.2.2. Camada de Apresentação	10
3.2.3. Camada de Sessão	11
3.2.4. Camada de Transporte	11
3.2.5. Camada de Rede	11
3.2.6. Camada de Link ou Mac	11
3.2.7. Camada Física	11
3.3. Modelo Ethernet	12
3.4. Protocolos	12
3.5. Funções do Protocolos	13
3.6. Protocolos de Camadas	14
3.6.1. Protocolo TCP	15
3.6.2. Protocolo UDP	16
3.6.3. Protocolo HTTP	17
3.6.4. Protocolo IP	17
3.6.5. Protocolo de Roteamento	18
3.6.6. Protocolo FTP	18
3.7. Hierarquia	18
3.8. Hardware	20
3.8.1. Switches	20
3.8.2. Hubs	21
3.8.3. Roteadores	21
3.9. Cabeamento Estruturado	22
3.9.1. Principais Normas de Cabeamento	22
3.9.2. Tipos de Cabeamento	23
 3.9.2.1. Cabo Coaxial	23
 3.9.2.2. Cabo Par Trançado	23
 3.9.2.3. Cabo de Fibra Óptica	23
3.10. Serviços de Rede	24
3.11. Classificação de Serviços	24
4. Desenvolvimento	26
5. Resultado e Discussão	27
6. Considerações Finais	28
Referência Bibliográfica	29
Anexos – Código Fonte	30
	
	
Objetivo do trabalho
O objetivo desse trabalho consiste em estudar e desenvolver uma ferramenta para comunicação em rede e toda teoria computacional envolvida. Após pesquisa bibliográfica sobre o assunto em questão o grupo deverá criar uma aplicação que permita que duas ou mais pessoas possam se comunicar em uma rede, utilizando o protocolo TCP/IP. A utilização para a comunicação de dados implementando a ferramenta foi utilizada as primitivas dos sockets de Berkeley, os quais serão implementados na linguagem de programação JAVA.
Introdução
O sistema de comunicação vai se constituir de um arranjo topológico, interligando os vários módulos processadores através de enlaces físicos (meios de transmissão ou rede de transmissão), e de um conjunto de regras com o fim de organizar a comunicação (protocolos).
A Internet é um amplo sistema de comunicação que conecta muitas redes de computadores. Existem várias formas e recursos de diversos equipamentos que podem ser interligados e compartilhados, mediante meios de acesso, protocolos e requisitos de segurança.
Os meios de comunicação podem ser: linhas telefônicas, cabo, satélite ou comunicação sem fios (wireless).
O objetivo das redes de computadores é permitir a troca de dados entre computadores e a partilha de recursos de hardware e software. 
E a classificação ao tamanho da rede são: PAN, LAN, MAN, WAN.
A topologia de uma rede mostra como as máquinas estão ligadas entre si. De acordo com a topologia, redes podem ser classificadas em: Redes Ponto-a-Ponto, Estrela, Laço, Árvore.
Cabeamento estruturado é um termo geral que se refere a vários tipos de cabos instalados em uma casa ou empresa para a distribuição de sinais de áudio, vídeo, telefonia e dados. Estes fios são geralmente agrupados, como cabos de rede, de áudio de fibra óptica e outras combinações personalizadas, permitindo a distribuição dos itens em todo o ambiente.
As vantagens do cabeamento estruturado são: Consistência e redução de custos, Simplificação, Suporte para futuras aplicações. Isolamento de falha.
Um protocolo de comunicação é uma convenção que controla e possibilita uma conexão, comunicação, transferência de dados entre dois sistemas computacionais.
De maneira simples, um protocolo pode ser definido como "as regras que governam" a sintaxe, semântica e sincronização da comunicação. Os protocolos podem ser implementados pelo hardware, software ou por uma combinação dos dois.
O uso do funcionamento de protocolos difundidos e a expansão dos protocolos de comunicação é ao mesmo tempo um pré-requisito e uma contribuição para o poder e sucesso da Internet. O par formado por IP e TCP é uma referência a uma coleção dos protocolos mais utilizados. A maioria dos protocolos para comunicação via Internet é descrita nos documentos RFC do IETF.
Geralmente apenas os protocolos mais simples são utilizados sozinhos. A maioria dos protocolos, especialmente no contexto da comunicação em rede de computadores, são agrupados em pilhas de protocolo onde as diferentes tarefas que perfazem uma comunicação são executadas por níveis especializados da pilha.
Enquanto uma pilha de protocolos denota uma combinação específica de protocolos que trabalham conjuntamente, um modelo de referência é uma arquitetura de software que lista cada um dos níveis e os serviços que cada um deve oferecer.
A proposta deste trabalho consiste justamente em estudar com maior profundidade o assunto de desenvolvimento de uma ferramenta para comunicação em rede, bem como suas características principais. Esse estudo será abordado no capítulo 3 o qual consiste do referencial teórico. Após o referencial teórico, será abordado no capítulo 4 o desenvolvimento do processo de criação da ferramenta utilizada para comunicação em rede, depois no capítulo 5 os resultados e discussões, isto é, como foram aplicados os testes e sobre o desempenho obtido pelo código feito, etc. No capítulo 6 o grupo apresentará as considerações finais e o seu entendimento sobre tudo que foi feito. E finalmente as referências para esta pesquisa e o código da ferramenta desenvolvidos como anexo.
3. Referencial Teórico
Este capítulo aborda a teoria envolvida na proposta deste trabalho.
3.1. Sockets
Especificamente em computação, um Socket pode ser usado em ligações de redes de computadores para um fim de um elo bidirecional de comunicação entre dois programas. A conexão por sockets tem origem em 1980, quando a ARPA (Advanced Research Projects Agency, Agência de Projetos de Pesquisa Avançados), órgão do governo norte-americano, forneceu recursos financeiros para que a Universidade da Califórnia em Berkeley oferecesse uma implementação UNIX do pacote de protocolos TCP/IP. O que foi desenvolvido ficou conhecido então como interface de sockets de Berkeley ou simplesmente sockets de Berkeley. Os sockets foram desenvolvidos especificamente para aplicações Cliente / Servidor, onde Cliente e Servidor poderiam estar em máquinas diferentes, havendo uma comunicação através de protocolos de transportes, fazendo com que quando o aplicativo interagir com o software de protocolo, ele deve informar se o mesmo é um cliente ou um servidor.
Para estabelecer uma conexão, é necessário somente um endereço de destino e um número de porta.
Existem dois modos de transmissão de sockets: o modo baseado em conexões e o modo sem conexão. Os sockets baseados em conexões operam como um telefone: eles estabelecem uma conexão e depois suspendem a ligação. Os sockets sem conexão funcionam de maneira análoga ao correio: a entrega não é garantida, e os diferentes itens da correspondência podem chegar em uma ordem diferente daquela que foram enviados.
A escolha do modo de transmissão de sockets vai depender das necessidades da sua aplicação. Se confiabilidade é fundamental, você deverá utilizar o modo baseado em conexões. Um servidor de arquivos, por exemplo, necessita que todos os seus dados cheguem aos usuários e em uma sequência correta. Uma operação sem conexão seria mais rápida e eficiente, mas não teria garantia alguma.
O modo com conexões utilizar o protocolo TCP. Um socket nesse modo de operação precisa conectar-se a um destino antes de transmitir os dados. Quando conectados, os sockets utilizam uma interface de fluxos: abertura-leitura-escrita-fechamento.
Um Socket também é uma abstração computacional que mapeia diretamente a uma porta de transporte, através dos protocolos TCP ou UDP, e mais um endereço de rede. Os Sockets, por sua vez, se abstraem e conseguem usar qualquer um dos meios TCP ou UDP já citados. Com esse conceito, é possível identificar unicamente um aplicativo ou servidor na rede de comunicação IP.
Em documentos de RFC (Requestfor 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.
Sockets e RPCs têm a função de implementar numa aplicação as funções de rede, mas fazem de formas diferentes.
Imagine por exemplo que precisa de desenvolver uma aplicação servidor que funcione como uma “sala” de chat. Na prática essa aplicação irá receber ligações dos clientes (num determinado porto) e posteriormente, se um cliente enviar uma mensagem, o servidor envia essa mensagem para todos os outros clientes.
Figura 1 Sockets
 
Ou imagine por exemplo que tem instalado um sensor de temperatura numa máquina e uma aplicação servidor que controla esse sensor, dando informações sobre o estado do tempo. A aplicação cliente, poderá ligar-se remotamente à aplicação servidor e obter também essa informação. Tudo isto é possível de desenvolver usando sockets,
De uma forma geral, existe uma aplicação que cria um socket servidor e uma outra aplicação que implementa um cliente. Existem principalmente dois tipos de sockets: Socket_Stream (aka TCP) ou SOCK_DGRAM (aka UDP). Os sockets TCP garantem fiabilidade na comunicação (garantia da entrega de pacotes), enquanto os sockets UDP não dão garantia na entrega de pacotes a nível da camada de transporte).
3.1.1. Sockets UDP 
A comunicação entre processos também é possível por UDP. Entretanto, UDP é um serviço sem conexão. O remetente coloca explicitamente endereço IP e Porta do destino, no formato IP: Porta (ex: 192.168.0.1:80). O servidor deve extrair o Endereço IP e a Porta (Socket) do remetente do DataGrama recebido. Os dados recebidos podem ser recebidos fora de ordem ou até mesmo se perderem. Só então os dados são encaminhados para a camada superior, passando da Camada de Transporte (Protocolo UDP) para a Camada de Aplicação (Aplicativo Qualquer).
Estes Datagram Sockets, ou DataGrama, por serem UDP, tem a comunicação não orientada a conexão e não é confiável, pois os dados que são enviados por esse tipo, podem não chegar ao destino final da forma como foi enviado e sua chegada não é garantida. 
Transmissão de áudio e vídeo sob demanda, e jogos com vários jogadores são exemplos de aplicações de Datagram Sockets. Neste tipo de transmissão, a perda de uma pequena quantidade de dados não traz consequências graves ao processo.
Tanto o Socket UDP quanto o Socket TCP utilizam o protocolo IP para fazer o roteamento dos dados pela rede.
3.1.2. Sockets TCP 
Já no Protocolo TCP, o socket cria uma ligação stream bi-direcional entre os endereços ‘hostC:portC’ e ‘hostS:portS’, ou seja, entre uma aplicação cliente em execução na máquina ‘hostC’ consegue controlar também a porta ‘portC’ e outra aplicação servidora em execução na máquina ‘hostS’ conseguindo a visualização da porta ‘portS’ de ‘hostS’. Como sabemos também, o Protocolo TCP é orientado à Conexão e, portanto, garante que os dados encaminhados de um Cliente para um Servidor, em suas respectivas portas, cheguem ao seu destino.
Esta forma de comunicação com Sockets TCP, fazem uso de Stream Sockets, que representam a forma de comunicação de duas mãos, ou duas vias que são confiáveis e orientado a conexão. Os dados que foram enviados com esse tipo de Socket estarão seguros e irá chegar da mesma forma que foram enviados, pois o protocolo TCP é responsável por “entregar” os dados da mesma forma que foram enviados e sem erros. Ex: os browsers utilizam essa aplicação através do protocolo HTTP, estes normalmente trabalham no socket 80.
Sockets, são uma abstração para endereços de comunicação através dos quais processos comunicam. Cada endereço tem um identificador único composto pelo endereço da máquina e o identificador local da porta usado pelo processo. Este identificador de porta é usado para mapear dados recebido pela máquina para processos (aplicações) específicos. O processo de comunicação no modo orientado à ligação ocorre da seguinte forma: o servidor é colocado num determinado porto e aguarda por ligações a essa porta. O cliente deve saber previamente qual o nome ou IP do servidor e o respectivo porto onde o servidor foi colocado à espera de ligações. Então o cliente solicita uma ligação ao host (servidor) /porta conforme demonstra a figura 2.
Figura 2
Se nenhum problema ocorrer, o servidor aceita a ligação gerando um socket num porto vago do lado do servidor, criando assim um canal de comunicação entre o cliente e o servidor. De referir que o porto original fica livre para poder receber outros pedidos de ligação. A figura seguinte demonstra esse mesmo canal de comunicação.
Figura 3
Tipicamente o comportamento do servidor é ficar em loop, aguardando novas ligações e “gerando” sockets para atender as solicitações de clientes.
3.2. Arquitetura em Camadas
O modelo de referência OSI foi criado pela ISO em 1978 para ser um sistema de conexão entre dispositivos através da padronização de protocolos e padrões. Desde 1984, este é o padrão mundial em modelo conceitual. Este modelo apresenta a esquematização de trabalho conjunto entre hardware e software para possibilitar a comunicação entre dispositivos. O modelo OSI é, porém, um modelo muito mais teórico que prático.
3.2.1. Camada de Aplicação
Representa a comunicação com os usuários e fornece serviços básicos de comunicação. Os aplicativos que costumam estar nesta camada são bancos de dados, e-mail, FTP e HTTP. Esta aplicação serve como uma “janela” de acesso entre os aplicativos e os serviços da rede.
3.2.2. Camada de Apresentação
É responsável por definir o formato da troca de dados entre os computadores. Funciona no papel de um tradutor para os protocolos, a criptografia, compressão de dados e outras tarefas.
3.2.3. Camada de Sessão
Uma sessão é um canal de comunicação entre duas aplicações que estão sendo executadas em computadores diferentes. A camada de sessão é responsável por gerenciar o diálogo entre os aplicativos de forma que estas possam abrir, usar e fechar uma sessão. É nesta camada que são executadas as funções de reconhecimento de nomes e segurança.
3.2.4. Camada de Transporte
É responsável pela integridade dos pacotes de informação, garantindo uma comunicação confiável. Esta integridade é possível graças ao envio de sinais ACK entre as partes (sinais confirmando que a comunicação foi foita corretamente, enviado do receptor ao transmissor). É nesta camada que opera o protocolo TCP.
3.2.5. Camada de Rede
É usada para identificar os endereços dos sistemas na rede, e para transmitir os dados de fato. A camada de rede deve conhecer o meio físico da rede e empacotar a informação de tal modo que a camada de link possa enviá-la para a camada física. Em muitas redes esta camada não verifica a integridade da informação, simplesmente executando o empacotamento da informação.
3.2.6. Camada de Link ou MAC
É usada para definir como a informação será transmitida pela camada física e garantir o bom funcionamento desta camada. Havendo algum erro na transmissão da informação no meio físico, como rompimento de um cabo ou colisões de dado, a camada MAC deve tratar estes erros ou comunicar às camadas superiores deste fato.
3.2.7. Camada Física
É formada pelo hardware usado na conexão dos diferentes sistemas de rede, como cabos, fibras e conectores. Nesta camada a informação está codificada na forma de sinais elétricos.
3.3. Modelo Ethernet 
As redes Ethernet podem transportar até 1.500 bytes de dados. Por isso, o sistema operacional configura o protocolo IP automaticamente para criar datagramas com 1.500 bytes ao invés de 65.535 (o tamanho real dos datagramas é 1.497, pois a camada LLC utiliza 3 ou 5 para adicionar seu cabeçalho). O modelo Ethernet possui três camadas, que são equivalentes à Interface com a Rede do modelo TCP/IP:
· A camada LLC (controle do link lógico) é responsável por adicionar informações sobre qual protocolo da camada Internet foi responsável por gerar os dados. Assim, durante a recepção dos dados o computador receptor pode saber qual protocolo deve utilizar na camadaInternet para receber os dados.
· A camada MAC (controle de acessoao meio) é responsável por montar o quadro que será enviado para a rede. Esta camada é responsável por adicionar o endereço MAC de origem e de destino ao pacote (endereço físico da placa de rede). Quando os pacotes são destinados a outras redes que não a local, o endereço MAC inserido como destino será o do roteador que será utilizado. Os protocolos que definem esta camada são o IEEE 802.3 para redes com cabos físicos e IEEE 802.11 se for uma rede wireless.
· A Física é a camada mais baixa do modelo TCP/IP. Ela é responsável por converter o quadro gerado pela camada MAC em sinais elétricos (no caso de redes com cabo físico) ou eletromagnéticos (para redes wireless). No IEEE a camada física é definida pelos mesmos protocolos que a camada MAC.
De acordo com BEZERRA (2008, pg. 2), o padrão ethernet especifica a camada de enlace e a camada física. 
No fim do empacotamento, o dado irá conter cabeçalhos de todas as camadas do modelo TCP/IP e ainda o cabeçalho das sub camadas Ethernet.
3.4. Protocolos
Protocolo é o conjunto de regras sobre o modo de como se dará a comunicação entre os dispositivos envolvidos. É uma “língua” dos computadores, tipo um idioma que possuem normas e padrões determinados. A comunicação entre um ou mais computadores, só é possível através dos protocolos.
Os protocolos de rede, nasceram da necessidade de conectar equipamentos de fornecedores distintos, executando sistemas distintos, sem precisar escrever/desenvolver softwares específicos para cada caso. Ambos dispositivos devem estar configurados com os mesmos padrões e parâmetros, para que possa obedecer às normas do protocolo, e para que a comunicação seja feita sem problemas.
Há vários, diversos tipos de protocolos de rede, os mesmos variam de acordo com o serviço a ser utilizado. De maneira geral, há dois tipos de protocolos: Protocolos Abertos e Protocolos Proprietários ou Específicos. Os Protocolos Abertos são os protocolos padrões da internet, que através deste é possível comunicar com outros protocolos que utilizam o mesmo padrão de protocolo. Em um caso, o TCP/IP, pois o mesmo pode comunicar com várias plataformas, como: Windows, Linux, Mac, Android entre outros.
Já os Protocolos Proprietários/Específicos são feitos para ambientes ou situações específicas (Mr. Óbvio ataca novamente), ele só consegue se comunicar com uma plataforma padrão, por exemplo: IPX/SPX (Internetwork Packet Exchange/Sequenced Packet Exchange) feito especialmente para o Sistema Operacional NetWare, que serve para compartilhamento de arquivos e impressoras, NETBIOS (Network Basic Input/Output System ou Sistema Básico de Entrada e Saída de Rede), uma API que basicamente permite que os aplicativos em computadores separados se comuniquem em uma rede local, entre outros. 
Alguns exemplos de Protocolos de Rede: IP (Internet Protocol), DHCP (Dynamic Host Configuration Protocol), TCP (Transmission Control Protocol), HTTP (Hypertext Transfer Protocol), FTP (File Transfer Protocol), Telnet (Telnet Remote Protocol), SSH (SSH Remote Protocol), POP3 (Post Office Protocol 3), IMAP (Internet Message Access Protocol).
3.5. Funções do Protocolos
Dentre as funções dos protocolos, uma delas é pegar os dados que serão transmitidos pela rede, dividir em pequenos pedaços chamados pacotes, na qual dentro de cada pacote há informações de endereçamento que informam a origem e destino do pacote. Através desse protocolo que as fases de estabelecimento, controle, tráfego e encerramento, componentes da troca de informações são sistematizadas.
As Funções a realizar pelos Protocolos são naturalmente diferentes de camada para camada, podendo, no entanto, haver funções idênticas realizadas em mais do que uma camada, embora em contextos e com objetivos diferentes. (MPR/JAR, 2003)
O protocolo possui as seguintes funções:
· Endereçamento: Especificação clara do ponto de destino da mensagem;
· Estabelecimento: Estabelecimento de um canal lógico fechado entre fonte e destino;
· Numeração e sequência: Individualização de cada mensagem, através de número sequencial;
· Confirmação de recepção: Confirmação do destinatário, com ou sem erro, após cada segmento de mensagem;
· Controle de erro: Detecção e correção de erros;
· Retransmissão: Repetição da mensagem a cada recepção de mensagem;
· Conversão de código: Adequação do código às características do destinatário;
· Controle de fluxo: Manutenção de fluxos compatíveis com os recursos disponíveis.
Para cada tipo ou conjunto de protocolos é definido um padrão. Existem dois tipos de padrões:
· de facto: são padrões que são usados pela comunidade, principalmente por fabricantes quando lançam novos produtos, mas que ainda não foram aprovados por um comitê reconhecido, como ISO ou ANSI. Um exemplo é o protocolo IP.
· de jure: são padrões ou protocolos que foram reconhecidos por comitês reguladores. Um exemplo é a arquitetura OSI. Estes padrões de jure já passaram pelo status de facto e tiveram suas especificações submetidas a um corpo avaliador no formato RFC (request for change), até que tiveram sua versão final aprovada.
3.6. Protocolos de Camadas
O conjunto de protocolos utilizados para a comunicação entre computadores através da Internet, também chamado de conjunto TCP/IP, foi desenvolvido pelo Departamento de Defesa do governo Norte-Americano para permitir a comunicação entre diferentes redes, compostas por vários tipos de computador. A família de protocolos TCP/IP é especialmente popular por não ser propriedade de nenhum fornecedor específico. Assim sendo, é amplamente suportado no mercado.
3.6.1. Protocolo TCP
TCP é uma sigla que significa Transmission Control Protocol (Protocolo de Controle de Transmissões, em uma tradução livre), que faz referência ao sistema de envio de pacotes mais comum da internet. Ao acessar um site, seu computador manda dados ao servidor pedindo que ele envie os conteúdos da página à máquina que está sendo utilizada — as informações enviadas de volta são “costuradas” pelo seu navegador para mostrar aquilo que você deseja.	 
As principais características do TCP, de acordo com Scrimger et al. (2002) são a sua transferência de dados, robustez, controle de fluxo, multiplex, conexões lógicas e o fato de ser full duplex. Os termos estão descritos abaixo:
· Transferência de fluxo de dados: uma aplicação pode confirmar se todos os segmentos transferidos pelo TCP alcançaram seu destino previsto e obter retorno sobre o sucesso dessa operação.
· Robustez: o TCP do receptor agrupa os segmentos caso eles cheguem fora de ordem.
· Controle de fluxo: o receptor, à medida que recebe os segmentos, envia uma mensagem confirmando a recepção.
· Multiplex: uso paralelo das portas de comunicação.
· Conexões lógicas: são identificadas pelo processo transmissor e receptor, pela combinação dos mecanismos TCP.
· Full duplex: a transferência de dados pode ser simultânea em ambas as direções.
O TCP também adota um sistema de numeração próprio para se assegurar que os pacotes enviados vão chegar ao destino na ordem correta. Caso o receptor não receba um pacote corretamente, a informação é enviada novamente até que chegue seguramente ao destino — para completar, também há uma checagem de erros que assegura que nenhuma das informações foi corrompida durante o trajeto.
É exatamente essa a característica que se destaca no protocolo: a confiabilidade. É graças ao TCP que os downloads que você faz não são corrompidos por oscilações na velocidade de sua conexão e que as páginas acessadas por seu navegador dificilmente deixam de carregar algum elemento por acidente — é claro, se uma das máquinas usadas para a troca de dados ficar offline durante esse processo, você receberá uma mensagem de erro e não conseguirá acessar o conteúdo que deseja.
3.6.2. Protocolo UDP
Espécie de “irmão” do protocolo TCP, o UDP (User Datagram Protocol) também se baseia no envio de pacotes de informações, mas remove toda a parte de verificação de erros da outra tecnologia. O objetivo dessa opção é aceleraro processo de envio de dados, visto que todas as etapas de comunicação necessárias para verificar a integridade de um pacote (e para reenviá-lo, se necessário) contribuem para deixá-lo mais lento.
Quando o protocolo UDP é acionado, ele simplesmente manda informações a um destinatário, sem se preocupar se elas foram recebidas devidamente — em caso de erros, simplesmente ocorre o envio do próximo pacote programado pelo sistema, e os anteriores não podem ser recuperados. Embora esse método de funcionamento potencialize a ocorrência de erros, ele garante uma comunicação rápida entre dois computadores.
Graças às suas características, o protocolo é bastante usado em situações nas quais a correção de erros não é exatamente desejada. Durante a transmissão de um vídeo ao vivo, por exemplo, é mais interessante que uma pessoa perca alguns trechos ou tenha que lidar com distorções de imagem e áudio do que esperar pelo recebimento de um pacote que se perdeu — o que pode acabar com o fator “tempo real”.
O protocolo UDP fornece serviço de entrega sem conexão e não é confiável quando usa o IP para transportar datagramas entre as máquinas. (COMER, 2006, p. 114)
O UDP também é muito usado durante games online — caso você perca alguns pacotes, os personagens adversários podem se “teleportar” pela tela, no entanto não há motivos para que você receba os dados que foram perdidos, já que a partida continua mesmo sem que eles cheguem até você. Tudo o que importa é o que está acontecendo agora, não aquilo que ocorreu há alguns instantes, assim não faz sentido apostar em checagens de erro que só serviriam para aumentar a latência dos participantes.
3.6.3. Protocolo HTTP 
O HTTP é um protocolo da camada de aplicação que utiliza a porta de rede 80. Ele permite a transferência de dados na forma de textos simples, hipertexto, áudio, vídeo e outras. É usado em ambientes onde há transições rápidas de um documento para outro, como páginas de internet.
Este protocolo tem características parecidas com os protocolos FTP e SMTP, que permite a transferência de arquivos usando serviços do TCP. Ele é, porém, muito mais simples que o FTP e utiliza apenas uma conexão TCP, da porta 80. Através desta porta os dados são transferidos entre cliente e servidor.
As mensagens HTTP não se destinam diretamente ao usuário. Estas são interpretadas pelo cliente HTTP – o navegador. A ideia do HTTP é um cliente enviar um pedido, na forma de mensagem, ao servidor, e o servidor enviar a resposta, também na forma de mensagem, ao cliente.
3.6.4. Protocolo IP
Este protocolo é responsável pelo endereçamento do pacote a ser transmitido, adicionando um cabeçalho que permite o roteamento do pacote pela rede até que este seja entregue no destino correto. Em um pacote IP estão os endereços IP da origem e do destino, um identificador de protocolo, um valor calculado para verificar erros e um TTL (informação em segundos do tempo que o pacote poderá permanecer na rede, evitando loop infinito de tráfego).
Para Scrimger et al. (2002, p. 107) um endereço IP é semelhante ao endereço que você utiliza para enviar uma carta pelo correio. “O endereço deve apresentar todas as informações requeridas para que ocorra a entrega. Caso o contrário, a carta não chegará ao destino correto. Um endereço incompleto ou incorreto afeta o endereçamento IP da mesma maneira como afeta a entrega de uma carta”.
3.6.5. Protocolo de Roteamento 
O roteamento de pacotes pode ser estático ou dinâmico. Nas redes locais pequenas é utilizado o roteamento estático, ou seja, o caminho percorrido pelos datagramas para alcançarem seu destino é sempre o mesmo. Na Internet, o roteamento feito é dinâmico, ou seja, os roteadores podem mudar a rota dos pacotes a qualquer momento caso haja caminhos melhores para alcançar um destino. A melhor rota é aquela em que forem necessários menos saltos (roteadores intermediários), porém não necessariamente rotas mais curtas são mais rápidas.
3.6.6. Protocolo FTP
O protocolo FTP é utilizado na web para acesso de arquivos remotos, e em servidores de arquivos locais em uma empresa. Quando estamos fazendo o download de um arquivo, normalmente utilizamos o protocolo FTP. Ele também pode ser utilizado para fazer o upload de um arquivo de seu computador para a rede. O protocolo FTP permite transferir arquivos pela internet. Existem vários programas gratuitos na internet que fornecem os serviços de FTP. Através dele, é possível transferir arquivos, autenticar usuários e gerenciar arquivos e diretórios.
De acordo com Falbriard (2002,p. 63), “os protocolos utilizados em redes de comunicação definem conjuntos de regras que coordenam e asseguram o transporte das informações úteis entre dois ou mais dispositivos”.
3.7. Hierarquia
Como já foi visto, um protocolo é um conjunto de regras sobre o modo de como se dará a comunicação entre as partes envolvidas.
Com o intuito de reduzir a complexidade do projeto, a maioria das redes foi organizada como uma série de níveis ou camadas, que são colocadas uma sobre a outra.
O número, o nome, o conteúdo e a função de cada camada diferem de uma rede para a outra. Em todas as redes, no entanto, o objetivo de cada camada é oferecer determinados serviços para as camadas superiores.
A camada N de uma máquina comunica-se com a camada N de outra máquina. Para isso acontecer, ela baseia-se num conjunto de convenções e regras que vão permitir gerenciar esta comunicação na qual foi nomeada de protocolo de camada N, ou simplesmente, protocolo N.
 			Figura 4 Hierarquia das camadas
As entidades que ocupam as mesmas camadas em diferentes máquinas são chamadas de PARES. São os pares que se comunicam utilizando o protocolo. Os dados não são transferidos diretamente entre os pares, por não haver meio físico entre eles. Cada camada transfere dados para a camada inferior a ela, até alcançar a última camada. Após a última camada se encontra o hardware de rede, ou seja, o meio de transmissão dos dados, que através desse se dá a comunicação.
Existe uma INTERFACE (Define as operações e serviços que a camada inferior tem a oferecer para a camada superior a ela) em cada par de camadas adjacentes. 
Arquitetura de redes nada mais é que o conjunto das camadas compondo uma rede.
As especificações da arquitetura devem conter informações suficientes para permitir o correto desenvolvimento da rede, tanto do ponto de vista do software quanto do hardware. Por outro lado, os detalhes de implementação dos mecanismos em cada camada, assim como as especificações detalhada das interfaces não fazem parte da definição da arquitetura de rede.
Resumo do que é protocolo, é um conjunto de regras que controlam o formato e o significado das informações trocadas pelas entidades pares contidos numa camada, sendo que as entidades utilizam protocolos com a finalidade de implementar as suas definições de serviços e as entidades têm a liberdade de trocarem os seus protocolos, desde que não alterem o serviço visível para seus utilizadores.
3.8. Hardware
Hardware de rede, ou dispositivos de rede, referem-se aos equipamentos que facilitam e dão suporte ao uso de uma rede de computadores, ou seja, são os meios físicos necessários para que a comunicação entre os componentes participantes de uma rede seja realizada. São exemplos comuns de dispositivos de rede:
· Switches;
· Roteadores;
· Concentradores;
· Repetidores;
· Adaptadores de rede;
· Modem;
· Gateway;
· Bridge;
· Firewall;
· Pontos de acesso sem fio;
· Entre outros hardwares relacionados
3.8.1. Switches
O Switch (Comutador em português), é um dispositivo utilizado para reencaminhar pacotes entre os diversos nós. Possuem portas assim como os hubs (concentradores), sendo que a principal diferença é que o comutador segmenta a rede internamente já que cada porta corresponde um domínio de colisão diferente, eliminando assim a colisão entre pacotes de segmentos diferentes.
3.8.2. Hubs
O Hub (Concentrador em português) é o processo pelo qual se transmite ou difunde determinada informação, tendo, como principal característica,que a mesma informação está sendo enviada para muitos receptores ao mesmo tempo (broadcast). Este termo é utilizado em rádio, telecomunicações e em informática.
Uma das aplicações do hub, é no controle de tráfego de dados de várias redes, quando uma máquina ligada à rede envia informações para o hub, e se o mesmo estiver ocupado transmitindo outras informações, o pacote de dados é retornado a máquina requisitante com um pedido de espera, até que ele termine a operação. Esta mesma informação é enviada a todas as máquinas interligadas a este hub, e aceita somente por um computador pré-endereçado, os demais ecos retornam ao hub, e a máquina geradora do pedido, isso causa redundância.
Nesse sentido, o hub tem a função de interligar os computadores de uma rede local. Mais simples e fácil a instalação perto de outros dispositivos, como switch e roteador.
3.8.3. Roteadores
Um roteador é um dispositivo que encaminha pacotes de dados entre redes de computadores, criando um conjunto de redes de sobreposição. Um roteador é conectado à duas ou mais linhas de dados de redes diferentes. O roteador possui várias funções, mas a mais comum, a que todos conhecem é a possibilidade de conexão sem fio. Hoje em dia as redes sem fio são bastante utilizadas, pois são mais práticas. Sua principal desvantagem, é em relação aos hacks, uma vez que um hacker consegue ver onde existe uma rede sem fio, fica fácil a invasão da rede e potencialmente, os computadores ligados a ele.
3.9. Cabeamento Estruturado
O cabeamento estruturado é um método padronizado de cabear uma rede, considerando as normas de segurança — como a ANSI e a EIA / TIA —, melhores práticas e o maior aproveitamento de recursos dos equipamentos.
A capacidade de se redirecionar por diferentes caminhos, dentro de uma mesma estrutura de cabeamento para que pontos distintos se comuniquem é uma das principais características do cabeamento estruturado.
Este conceito surgiu nos serviços de tecnologia de voz, porém, não demorou para se tornar uma solução para atender aos mais variados serviços de dados devido à grande adoção por parte das empresas e a organização criada por meio das normatizações.
3.9.1. Principais Normas de Cabeamento 
A maioria das normas é internacional, portanto, foram criadas por institutos e associações renomados, como a IEEE (Institute of Electrical and Eletronics Engineers), TIA (Telecomunications Industry Association) e EIA (Eletronics Industry Association).
Normas físicas mais conhecidas:
· TIA/EIA-568-C.0 – Generic Telecommunications Cabling for Customer Premises;
· TIA 569-B – Commercial Building Standard for Telecommunications Pathways and Spaces;
· ANSI/TIA-606-A – Administration Standard for Commercial Telecommunications Infrastructure;
· ANSI/TIA-607-B – Telecommunications Grounding (Earthing) and Bonding for Customer Premises;
· ANSI/TIA-758-A – Customer-Owned Outside Plant Telecommunications Infrastructure Standard;
· ANSI/TIA-862 – Building Automation Systems Cabling Standard for Commercial Buildings;
· ANSI/TIA/EIA-1005 – Telecommunications Infrastructure Standard for Industrial Premises;
· TIA-942 – Telecommunications Infrastructure Standard for Data Center;
· IEEE-100BASE-TX – Fast Ethernet;
· TIA/EIA-568-C.3 – Optical Fiber Cabling Components Standard.
· Todos esses padrões definem o tipo de cabo utilizado, bem como os limites e requisitos (distância, segmentos, frequência etc.) que a estrutura deve atender para garantir o funcionamento adequado.
3.9.2. Tipos de Cabeamento 
Temos os cabos trançados e os de fibra óptica como os mais usados atualmente, sendo estes selecionados conforme os objetivos do negócio, isto é, o tipo de rede que estamos lidando.
3.9.2.1. Cabo Coaxial
Constituído por um fio de cobre condutor revestido por um material isolante e rodeado duma blindagem. Utiliza um conector BNC. Apesar de poder reduzir os efeitos e sinais externos sobre os sinais que transmite, caiu em desuso e está presente somente em algumas redes antigas, visto que são mais propensos a mau contato, conectores mais caros e pouca flexibilidade.
3.9.2.2. Cabo Par Trançado
Cabo par trançado, certamente é o mais conhecido e “dominado” pelos especialistas em informática, até por se tratar de um cabo utilizado há muitos anos para a implementação de redes. Dentre suas maiores vantagens podemos destacar o baixo custo e a facilidade para ser adquirido pronto ou sob medida.
3.9.2.3. Cabo de Fibra Óptica
O cabo de fibra óptica, projetado para atender a uma tecnologia muito mais moderna e que oferece uma série de benefícios, a começar pelo fato de que a fibra óptica é livre de interferências eletromagnéticas e, é claro, pela capacidade de trabalhar com altas taxas de transferência de dados.
Tipo de transmissão mais rápido que existe, converte o sinal de dados em luz. O receptor, que recebe a luz, converte novamente esse sinal para dados. Pode transmitir grandes quantidades de informação com uma atenuação bastante baixa. Em compensação, é um tipo caro para compra e manutenção. Se classificam em Monomodo (só pode atender um sinal por vez, apresentam menor dispersão e podem possuir vários quilômetros entre um retransmissor e outro) e Multimodo (vários sinais ao mesmo tempo, por isso é recomendado para distâncias de, no máximo, 300 metros, visto que acima disso começam a ocorrer perdas.)
3.10. Serviços de rede
Um serviço de rede é um conjunto de operações implementado por um protocolo através de uma interface, e é oferecido à camada imediatamente superior. Ele define o que uma camada é capaz de executar sem se preocupar com a maneira pela qual as operações serão executadas.
Cada serviço é utilizado por aplicações diferentes, podendo uma aplicação utilizar vários serviços, como, por exemplo, um browser como o Mozilla Firefox, que utiliza os protocolos: HTTP, SHTTP, DNS.
Os serviços podem ser orientados a conexão ou não. Serviços relacionados à família TCP são orientados a conexão, enquanto os relacionados à família UDP não são.
3.11. Classificação de Serviços
Existem duas classificações de serviços de rede, dentre elas: Serviços Orientados a Conexão e Serviços sem Conexão.
· Serviços orientados a conexão: É o serviço TCP. Antes do envio de dados, um processo conhecido como handshaking cria uma conexão fraca entre os hosts. Basicamente, esse processo prepara o receptor para a recepção de dados. Esta conexão prévia, possibilita verificar se todos os pacotes irão chegar corretamente ao destino, e em caso negativo, solicitar o reenvio dos mesmos (quando o receptor recebe um pacote, ele envia uma mensagem de confirmação ao transmissor. Se a confirmação não chegar, o pacote é reenviado), gerando uma transferência de dados confiável. Também pode-se fazer um controle de fluxo e congestionamento, para casos em que o receptor não suporta a velocidade de envio dos pacotes, ou quando algum roteador na rede está congestionado (É enviada uma mensagem ao transmissor, reduzindo ou interrompendo a velocidade de envio de pacotes). Como exemplo de serviços orientados a conexão TCP, temos: HTTP, FTP, Telnet.
· Serviços sem conexão: É o serviço UDP, não há processo de handshaking. Assim, não é possível saber se todos os pacotes chegaram, pois como ele não faz a conexão prévia, não é criado um “canal seguro” para os dados trafegarem, desse jeito, a aplicação apenas envia dados para o host. É mais rápido, por não haver o processo de handshaking, porém é menos confiável e não possui a possibilidade de controle de fluxo e congestionamento presentes no TCP. Algumas aplicações que usam o UDP: Conferência de vídeo e telefone por internet.
Existem outros tipos de serviços, como o DHCP, que automaticamente determina um endereço IP válido a cada host conectado à internet, e o DNS, que possibilita que o utilizador use strings, ao invés de endereços IP.
4. Desenvolvimento
4.1. Código Servidor
4.2. Código Programa
5. Resultados e Discussão6. Considerações Finais
Neste capítulo observamos três conceitos principais:
Primeiro, um soquete é um ponto de comunicação utilizado para transmissão de dados através da internet entre aplicativos rodando em máquinas distintas. A programação da aplicação de soquete foi realizada utilizando-se um conjunto de primitivas, que são funções que permitem o acesso aos serviços de transporte e são fornecidas pela camada de transporte. Elas são comumente usadas em programação para internet e pertencem a um conjunto de primitivas denominado Soquetes de Berkeley. Estas funções são utilizadas tanto para programar a aplicação do cliente como a do servidor (apesar de haver alguma distinção entre os dois em termos de programação), e apesar de serem muitas, só serão abordadas as primitivas básicas e a princípio necessárias para se desenvolver uma aplicação cliente/servidor.
Segundo, vimos que a arquitetura TCP/IP é independente da tecnologia adotada para transmissão dos quadros, e introduz dois níveis de endereçamento: o IP que permite endereçar redes, e as portas que permite endereçar processos. Os protocolos de aplicação, por sua vez, fornecem uma padronização entre as mensagens trocadas entre clientes e servidores, a fim de permitir a inter-operação entre produtos de fabricantes diferentes.
Finalmente, o modelo em camadas oferece define uma estratégia comuns a várias tecnologias de transmissão, inclusive o TCP/IP. Idealmente, o modelo em camadas define que protocolos de mesma camada são concorrentes (não são usados ao mesmo tempo), e protocolos de camadas distintas são complementares (seus cabeçalhos podem ser empilhados).
Referências bibliográficas
ALVES, Sérgio. REDES DE COMPUTADORES: Fundamentos de Redes de Computadores, Transmissão de Dados e Cabeamento. UNIRON. Disponível em: <www.gamaesouza.edu.br/site/ENADE/Redes/fundamentos_comunicacao_redes.ppt>. Acesso em: Maio/2018
TAROUCO, Liane M. R. Redes de Computadores Locais e de Longa Distância, Editora McGraw-Hill, 1986. pg 53.
ERIBERTO, João. Pequenas Redes com Microsoft Windows, Para Casa e Escritório, Editora Ciência Moderna, 2001. pg 69.
SOARES, Luiz Fernando Gomes; LEMOS, Guido; Colcher, Sérgio, Redes de Computadores: Das LANs, MANs e WANs às Redes ATM, Editora Campus, 1997, pg. 28.
MAIA, Luiz Paulo, Arquitetura de Redes de Computadores, Rio de Janeiro, 2009, pg. 37.
STEVENS, W. R., “UNIX Network Programming”, Prentice Hall, Englewood Cliffs, New Jersey, 1990. pg 89.
MARTINS, Elaine. TECMUNDO. O que é TCP/IP? Disponível em: <http://www.tecmundo.com.br/o-que-e/780-o-que-e-tcp-ip-.htm>. Acesso em: Maio/2018
FOROUZAN, Behrouz. Comunicação de Dados e Redes de Computadores. 3ª Edição. Bookman Companhia Ed. Porto Alegre, 2006. 
GALLO, Michael A. HANCOCK, William M. Comunicação entre Computadores e Tecnologias de Redes. 1ª Edição. Thomson Pioneira. São Paulo, 2003. 
ROSS, Julio. Redes de Computadores. 1ª Edição. Editora Antenna. Rio de Janeiro, 2008. pg 55.
TELECOM, Marketing Alctel. Entenda o que é cabeamento estruturado e sua importância. Disponível em: <http://www.alctel.com.br/entenda-o-que-e-cabeamento-estruturado-e-sua-importancia/>. Acesso em: Maio/2018.
	
SCHUNCKE, Alex. O que é cabo de rede. Disponível em: <https://www.oficinadanet.com.br/post/10162-o-que-e-o-cabo-de-rede-par-trancado>. Acesso em: Maio/2018.
REBOUÇAS, Lucas. Sockets conceitos e definições básicas. Disponível em: <http://tencnolife.blogspot.com.br/2012/05/sockets-conceitos-e-definicoes-basicas.html>. Acesso em: Maio/2018.
CASTELUCCI, Daniella. Protocolos de Comunicação em redes de computadores. Disponível em: <https://daniellacastelucci.wordpress.com/2011/04/08/protocolos-de-comunicacao-em-redes-de-computadores/>. Acesso em: Maio/2018.
FALBRIARD, C. Protocolos e aplicações para redes de computadores. São Paulo: Érika, 2002.
SCRIMGER, R. et al. TCP/IP: a Bíblia. Rio de Janeiro: Elseiver, 2002.
COMER, D. E. Interligação de redes com TCP/IP. Rio de Janeiro: Elsevier, 2006.
BEZERRA, Romildo Martins. Ethernet. 2008. Disponível em: <http://www2.ufba.br/~romildo/downloads/ifba/ethernet.pdf>. Acesso em: Maio/2018.
MPR/JAR. Arquitecturas de Redes Modelos Arquitectónicos, 2003. Disponível em: <https://web.fe.up.pt/~mricardo/02_03/rcd/teoricas/arquitecturas_v4.pdf>. Acesso em: Maio/2018.
ANEXOS - Código Fonte

Outros materiais

Outros materiais