Você está na página 1de 75

PDF gerado usando o pacote de ferramentas em cdigo aberto mwlib. Veja http://code.pediapress.com/ para mais informaes.

PDF generated at: Sun, 14 Sep 2014 17:38:26 UTC


Redes de computadores
Contedo
Pginas
Introduo 1
Arquitetura de redes de computadores 3
Protocolos e servios de rede 5
Meios fsicos de transmisso 8
Comutao de circuitos e de pacotes 11
Pilha de protocolos da Internet 16
Histria da Internet 20
ATM 22
Camada de rede 23
Protocolo IP 23
Camada de transporte 26
Multiplexao e demultiplexao 28
Protocolo UDP 32
Transmisso de dados confivel 36
Protocolo TCP 40
Controle de congestionamento 47
Camada de aplicao 49
HTTP 54
FTP 57
Correio eletrnico 58
DNS 63
Programao com sockets 67
Referncias
Fontes e Editores da Pgina 71
Fontes, Licenas e Editores da Imagem 72
Licenas das pginas
Licena 73
Introduo
1
Introduo
O que uma Rede de Computadores?
A ltima coisa que devemos entender ao comear a estudar redes entender o que uma rede. Quando falamos em
redes de computadores, a maioria das pessoas pensa em uma srie de computadores ligados entre si por meio de
cabos para trocarem dados ou ento pensa em grandes redes como a internet. A disciplina de Redes de
Computadores de fato estuda estas coisas, mas ela tambm estuda muito mais coisas, pois o assunto de redes de
computadores algo bastante amplo e possui uma quantidade enorme de aplicaes.
Uma boa definio de Rede de Computadores : Uma rede de computadores um conjunto de dois ou mais
dispositivos (tambm chamados de ns) que usam um conjunto de regras (protocolo) em comum para compartilhar
recursos (hardware, troca de mensagens) entre si, atravs de uma rede.
Perceba que qualquer tipo de dispositivo capaz de enviar ou receber dados pode ajudar a compor uma rede, no
apenas um computador. Por essa razo, quando falamos em componentes de rede, nos referimos eles como ns, e
no computadores. Como exemplo de Redes, podemos citar:
A Internet
Uma rede local de uma empresa
Uma rede de telefonia
Como exemplo de ns que vemos com frequncia conectados uma rede, podemos citar:
Terminais de computadores
Impressoras
Computadores
Repetidores
Pontes
Roteadores
Chaves
Switches
Hub
Abaixo veremos alguns termos e expresses que so essenciais para que possamos estudar redes de computadores:
Endereamento: Isso significa alocar um endereo para cada n conectado a uma rede. Um exemplo o usado
pelas redes de telefonia, onde cada aparelho de telefone possui o seu prprio nmero.
Meio: O ambiente fsico usado para conectar os ns de uma rede. O meio de uma rede pode ser algum tipo de
cabo ou atravs de ondas de rdio ou outro tipo de radiao eletromagntica.
Protocolo: Um protocolo so algumas regras que os ns devem obedecer para se comunicarem uns com os
outros. O que eles fazem criar uma linguagem comum entre diferentes mquinas. De forma geral, ele um
conjunto de regras, especificaes e procedimentos que devem governar entidades que se comunicam entre si. Por
exemplo, quando conversamos com algum, devemos sempre esperar a pessoa terminar de falar para que
possamos dizer algo tambm. No permitido comear a falar ao mesmo tempo que outra pessoa. Isso um
exemplo de protocolo usado por humanos para que eles possam conversar. Da mesma forma, tambm somos
obrigados a seguir protocolos diferentes em festas, ocasies formais ou reunies executivas. Como exemplos de
protocolos que regem a comunicao entre computadores, podemos citar o TCP/IP (Transmission Control
Protocol/ Internet Protocol') - um protocolo para controle de transmisso e para a internet, o FTP (File Transfer
Protocol) - um protocolo para a transmisso de arquivos entre computadores, HTTP (HyperText Transfer
Protocol) - protocolo de transmisso de hiper-textos e o protocolo Google Talk - conjunto de protocolos de rede
usado pelo Google. Protocolos so to importantes que s vezes comum chamarmos uma rede pelo nome de seu
Introduo
2
protocolo.
Roteamento: Rotear significa determinar qual o caminho que um pacote de dados deve tomar ao viajar entre os
ns de origem e destino. Em redes em lao completo no qual todas as mquinas esto conectadas entre si, isto
uma tarefa fcil. Mas no caso de redes mistas, por exemplo, esta pode ser uma tarefa complicada. Para fazer este
servio, costuma-se usar unidades de hardware dedicadas chamadas roteadores.
Tipos Bsicos de rede
Classificao de redes pela rea Ocupada
Com relao rea que ocupa, uma rede pode ser classificada em:
Rede Local: (LAN - Local Area Network) Qualquer rede com um raio de 10 Km ou menos. Elas so bastante
usadas para conectar computadores em uma sala, prdio ou campus universitrio.
Rede Metropolitana: (MAN - Metropolitana Area Network) Uma rede que conecta mquinas ao longo de uma
rea metropolitana. Por exemplo, considere uma empresa com sedes em vrios pontos ao longo de uma metrpole
cujos computadores estejam em rede.
Rede de Longa Distncia: (WAN - Wide Area Network) Qualquer rede que seja maior do que uma Rede Local
descrita acima. Muitas delas so usadas para conectar mquinas entre diferentes cidades, estados ou pases. Alm
destas duas classificaes principais, existem outras:
Rede Pessoal: (PAN - Personal Area Network) Uma rede domstica que liga recursos diversos ao longo de uma
residncia. Atravs da tecnologia Bluetooth obtm-se uma rede PAN.
Rede Global: (GAN - Global Area Network) Colees de redes de longa distncia ao longo do globo
Rede de Armazenamento de Dados (SAN - Storage Area Network) Redes destinadas exclusivamente a
armazenar dados.
Classificao de redes pela Topologia
Diversas topologias de rede.
Outra forma muito usada de se classificar redes pela
sua topologia. Ou seja, a forma pela qual os
computadores se conectam entre si. De acordo com a
topologia, elas podem ser classificadas em:
Rede Ponto-a-Ponto: Neste tipo de rede, cada
mquina s tem a capacidade de se comunicar com
mquinas adjacentes entre si. Por exemplo, suponha
que existem os ns A, B e C. A s pode se
comunicar com B, B pode se comunicar com A e C
enquanto C s pode se comunicar com B. Nessa
rede, se o n A deseja se comunicar com C, a sua mensagem deve obrigatoriamente passar por B. Esta uma rede
ponto-a-ponto. No desenho mostrado ao lado, todas as redes so ponto-a-ponto, com exceo da ltima. Existem
alguns tipos especiais de redes deste tipo:
Rede em Estrela: Neste tipo de rede, existe um n central que adjacente todos os outros. J os outros ns,
no possuem adjacncia entre si, somente com o n central. O dispositivo que costuma ser usado como n
central deste tipo de rede o Hub. A terceira rede mostrada no desenho ao lado uma rede deste tipo.
Rede em Lao: So semelhantes s Redes Estrela, mas nelas no existe um n central. Ele substitudo por
um cabeamento dedicado. Um tipo de Rede em Lao a Rede em Anel. Nela, todas as mquinas ligam-se
outras duas formando um circuito fechado. As informaes podem ser passadas tanto em sentido horrio, como
anti-horrio. Com isso, a rede no destruda mesmo que um cabo seja destrudo. Outro tipo de Rede em Lao
Introduo
3
o Lao Completo. Nela, todas as mquinas ligam-se entre si. Ela um tipo de rede cara, mas bastante
confivel Mesmo que um punhado de cabos sejam destrudos, ela pode continuar funcionando. A Quarta rede
mostrada no desenho acima uma Rede em Lao Completo.
Rede em rvore: uma rede na qual os ns esto dispostos de forma hierrquica. Existe um n-raiz que se
conecta com ns de segundo nvel. Estes, por sua vez, conectam-se ns de terceiro nvel e assim por diante.
Um exemplo a rede do meio da linha de baixo mostrada no desenho acima.
Redes de Difuso: Neste tipo de rede, sempre que uma mquina envia uma mensagem, esta se propaga ao longo
da rede de forma que todos os ns escutem a mensagem. Uma vantagem deste tipo de rede que podemos
classificar as suas mensagens em trs diferentes tipos: mensagens nicas destinadas um nico n, mltipla para
um certo nmero de ns e ampla para todos os ns da rede. Como exemplos deste tipo de rede podemos citar:
Redes em Barramento: Nesta rede, existe um barramento por onde toda a informao passa e toda vez que
algum coloca uma informao no barramento, as mquinas conectadas ele recebem a mensagem. Um
exemplo a ltima rede mostrada no desenho acima.
Redes via Satlite: Neste tipo de rede, existe um satlite capaz de transmitir dados em rbita ao redor da terra.
Em uma determinada regio geogrfica, todas as mquinas sintonizadas ele so capazes de receber os dados.
Arquitetura de redes de computadores
O termo redes de computadores est cada vez mais em desuso com as novas tecnologias e dispositivos que esto
sendo interconectados na internet pblica. Estes dispositivos conhecidos como sistemas finais no so unicamente
compostos de computadores de mesa mas tambm de uma grande variedade de equipamentos que incluem telefones
celulares, sistemas de automao residencial ou industrial, computadores portteis e aparelhos eletrnicos diversos.
Estes sistemas finais so interconectados e percorrem uma rota ou caminho que passa por enlaces de comunicao
(cabos, ondas, fibras pticas etc) e tambm por comutadores de pacotes (switches, hubs, roteadores etc). O primeiro
o meio fsico responsvel pela transmisso em si enquanto o segundo faz o encaminhamento dos pacotes aos seus
destinos.
Os sistemas finais acessam a internet por meio de ISPs (provedores de servio de internet) de nvel baixo que so
interconectados por ISPs de nvel alto, compostos por roteadores e sistemas de fibra ptica de altssima velocidade,
obedecendo certas convenes de nomeao e endereo a fim de padronizar o acesso rede.
Os protocolos controlam o envio e recebimento das informaes e envolvem todos os dispositivos que compem a
internet, sendo o mais famoso deles o conjunto de protocolos conhecido como TCP/IP. Este protocolo, cujo nome
vem dos protocolos mais importantes de pilha, TCP e IP, foi desenvolvido originalmente pela Universidade da
Califrnia para o Departamento de Defesa dos EUA (DoD). Atualmente o TCP/IP o protocolo padro para redes
locais e remotas.
Topologia
A topologia da rede define o modo como diversos dispositivos computacionais (ns) esto ligados um ao outro. A
topologia de rede mais simples a que representa dois ns interligados. Esta a topologia Ponto a Ponto, que pode
ser utilizada tambm na conexo entre mais de dois ns. Alm da ligao Ponto a Ponto h outros exemplos de
topologias, como:
Topologia em barramento;
Topologia Anel;
Topologia em estrela.
Arquitetura de redes de computadores
4
Tipos de cabo
Existem 4 tipos de cabo de rede: Cabo de par tranado no blindado (UTP - Unshielded Twisted Pair), cabo de par
tranado blindado(STP - Shielded Twisted Pair), cabo de fibra ptica e cabo coaxial, que usado em redes antigas.
Camadas da pilha de protocolos
O TCP/IP foi implementado em uma arquitetura de pilhas, onde cada camada interage com a camada imediatamente
superior ou inferior a ela. A diviso superficial em camadas e alguns protocolos so mostrados abaixo:
Camada Protocolo
4. Aplicao FTP, TORRENT, SMTP, POP3, HTTP
3. Transporte TCP, UDP, DCCP
2. Rede ARP, RARP, IPv4, IPv6
1. Fsica BLUETOOTH, WIFI, USB, ETHERNET
Descrio do servio
Atravs da internet os sistemas finais executam aplicaes distribudas (navegao na web, compartilhamento de
arquivos, jogos em rede, troca de mensagens, adio, vdeo etc) que podem se comunicar entre si e dois servios so
oferecidos a essas aplicaes: servio confivel orientado a conexo TCP (Transmission Control Protocol) e, servio
no confivel no orientado a conexo UDP (User Datagram Protocol). O primeiro geralmente mais lento que o
segundo, mas oferece garantia de entrega e integridade dos pacotes a serem transmitidos.
Um dos problemas que a internet enfrenta que no h garantia de tempo que os pacotes levaro para ser
transmitidos. O usurio pode apenas aumentar a velocidade de trfego entre sua rede e seu provedor de acesso,
geralmente pagando mais ao seu provedor.
Referncia
Redes de Computadores e a Internet, JAMES F. KUROSE - KEITH W. ROSS
Protocolos e servios de rede
5
Protocolos e servios de rede
Podemos pensar em rede de computadores como diversas mquinas interligadas fisicamente entre si onde os seus
utilizadores promovem a troca de informao de seu interesse. Entretanto, uma rede no pode ser bem estabelecida
considerando apenas o hardware como preocupao principal como nas primeiras redes, atualmente o software
considerado uma das partes mais importantes na concepo de novas tecnologias de redes de computadores.
Protocolo o conjunto de regras sobre o modo como se dar a comunicao entre as partes envolvidas.
Protocolo a "lngua" dos computadores, ou seja, uma espcie de idioma que segue normas e padres determinados.
atravs dos protocolos que possvel a comunicao entre um ou mais computadores. Os protocolos de rede
nasceram da necessidade de conectar equipamentos de fornecedores distintos, executando sistemas distintos, sem ter
que escrever a cada caso programas especficos. Ambos os computadores devem estar configurados com os mesmos
parmetros e obedecer aos mesmos padres para que a comunicao possa ser realizada sem erros. Existem diversos
tipos de protocolos de rede, variando de acordo com o servio a ser utilizado. De maneira geral h dois tipos de
protocolos: Abertos e Proprietrios ou Especficos. Os protocolos Abertos so os protocolos padres da internet. Este
podem comunicar com outros protocolos que utilizam o mesmo padro de protocolo. Um exemplo seria o TCP/IP,
pois ele pode comunicar com vrias plataformas como Windows, Linux, Mac e outros. J os protocolos Proprietrios
so feitos para ambiente especficos (da o seu nome), pois ele apenas pode comunicar com uma plataforma padro.
Exemplos desse tipo de protocolo: IPX/SPX, NETBIOS e outros. So 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), SMTP (Simple Mail Transfer Protocol), IMAP (Internet Message Access Protocol).
Funes dos Protocolos
Uma das funes dos protocolos pegar os dados que sero transmitidos pela rede, dividir em pequenos pedaos
chamados pacotes, na qual dentro de cada pacote h informaes de endereamento que informam a origem e o
destino do pacote. atravs do protocolo que as fases de estabelecimento, controle, trfego e encerramento,
componentes da troca de informaes so sistematizadas. O protocolo desempenha as seguintes funes:
Endereamento: especificao clara do ponto de destino da mensagem
Numerao e sequencia: individualizao de cada mensagem, atravs de nmero sequencial
Estabelecimento da conexo: estabelecimento de um canal lgico fechado entre fonte e destino
Confirmao de recepo: confirmao do destinatrio, com ou sem erro, aps cada segmento de mensagem
Controle de erro: deteco e correo de erros
Retransmisso: repetio da mensagem a cada recepo de mensagem
Converso de cdigo: adequao do cdigo s caractersticas do destinatrio
Controle de fluxo: manuteno de fluxos compatveis com os recursos disponveis
Hierarquia
Como j foi visto um protocolo um conjunto de regras sobre o modo como se dar a comunicao entre as partes
envolvidas. Com o intuito de reduzir a complexidade do projeto, a maioria das redes foi organizada como uma srie
de nveis ou camadas, que so colocadas uma sobre a outra. O nmero, o nome, o contedo e a funo de cada
camada difere de uma rede para outra. Em todas as redes, no entanto, o objetivo de cada camada oferecer
determinados servios para as camadas superiores. A camada n de uma mquina comunica-se com a camada n de
outra mquina. Para isso acontecer, ela baseia-se num conjunto de convenes e regras que vo permitir gerenciar
esta comunicao na qual foi nomeada de protocolo da camada n, ou, simplesmente, protocolo n.
Protocolos e servios de rede
6
As entidades que ocupam as mesmas camadas em diferentes mquinas so chamadas de PARES. So os pares que se
comunicam utilizando o protocolo. Os dados no so transferidos diretamente entre os pares, pois no existe meio
fsico entre eles. Ento cada camada transfere os dados para a camada inferior a ela, at alcanar a ltima camada.
Aps a ltima camada est o meio fsico (meio de transmisso) atravs do qual se d a comunicao.
Em cada par de camadas adjacentes, h uma INTERFACE (Define as operaes e servios que a camada inferior
tem a oferecer para a camada superior a ela). Ao conjunto das camadas compondo uma rede d-se o nome de
arquitetura da rede. As especificaes da arquitetura devem conter informaes suficientes para permitir o correto
desenvolvimento da rede, tanto do ponto de vista do software quanto do hardware. Por outro lado, os detalhes de
implementao dos mecanismos em cada camada, assim como as especificaes detalhadas das interfaces no fazem
parte da definio da arquitetura da rede.
Resumindo, o protocolo um conjunto de regras que controlam o formato e o significado das informaes trocadas
pelas entidades pares contidas numa camada, sendo que as entidades utilizam protocolos com a finalidade de
implementar as suas definies de servios e as entidades tm a liberdade de trocarem os seus protocolos, desde que
no alterem o servio visvel para os seus utilizadores.
Servios de Rede
Um servio de rede um conjunto de operaes implementado por um protocolo atravs 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 operaes sero executadas.
Cada servio utilizado por aplicaes diferentes, podendo uma aplicao utilizar vrios servios, como, por
exemplo, um browser como o Mozilla Firefox. Este utiliza, por exemplo, HTTP, SHTTP, DNS.
Os servios podem ser orientados a conexo ou no. Servios relacionados famlia TCP so orientados a conexo,
enquanto servios relacionados ao protocolo UDP so sem conexo.
Protocolos e servios de rede
7
Classificao de servios
Servios orientados a conexo: o servio TCP. Antes do envio de dados, um processo conhecido como
handshaking cria uma conexo fraca entre os hosts. Basicamente, esse processo prepara o receptor para a
recepo de pacotes. Esta conexo prvia possibilita verificar se todos os pacotes iro chegar corretamente ao
destino, e em caso negativo, solicitar o reenvio dos mesmos (quando o receptor recebe um pacote, ele envia uma
mensagem de confirmao ao transmissor. Se a confirmao no chegar, o pacote reenviado), gerando uma
transferncia de dados confivel. Tambm pode fazer-se um controlo de fluxo e congestionamento, para casos em
que o receptor no 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 servios orientados a conexo, TCP, temos: HTTP, FTP, Telnet.
Servios sem conexo: o servio UDP (Protocolo de Datagrama de Usurio). No h o processo de handshaking.
Assim, uma aplicao apenas envia dados para um host, e com isso no h como saber se todos os pacotes
chegaram. mais rpido, mesmo por no haver a etapa da handshaking, mas menos confivel, alm de no
possuir a possibilidade de controle de fluxo e congestionamento presentes no TCP. Algumas aplicaes que usam
o UDP: conferncia de vdeo e telefone por internet.
Existem outros tipos de servios, como o DHCP, que automaticamente determina um endereo IP vlido a cada host
conectado Internet e o DNS, que possibilita que o utilizador use strings, ao invs de endereos IP para se conectar a
outros servidores. O DNS mantm um banco de dados que relaciona cada string a um endereo IP.
Meios fsicos de transmisso
8
Meios fsicos de transmisso
Para definir os meios fsicos necessrio entender o comportamento dos bits. Um bit viaja partir de um sistema
atravs de uma srie de links e roteadores at atingir o sistema de destino. Nesse caminho, o bit transmitido
diversas vezes. O sistema de origem transmite o bit, o primeiro roteador recebe o bit e o transmite e assim por diante.
Enquanto viaja da origem para o destino, o bit passa por uma srie de transmissores e receptores. Cada bit enviado
pela propagao de ondas eletromagnticas ou pulsos pticos atravs de um meio fsico. Os meios fsicos podem ter
formas distintas e no precisam ser do mesmo tipo em todo o caminho. Exemplos de meios fsicos incluem
par-tranado, cabo coaxial, cabo de fibra-ptica, espectro de rdio terrestre, e, espectro de rdio por satlite. Os
meios fsicos dividem-se em duas categorias: meios encapsulados e no encapsulados. Nos meios encapsulados, as
ondas percorrem um material slido. Os exemplos desse tipo de meio so: cabo de fibra-ptica, par-tranado e cabo
coaxial. Nos meios no encapsulados, as ondas propagam-se na atmosfera e no espao. Exemplos: LAN wireless e
canal digital de satlite. O custo do link fsico relativamente baixo comparado a outros custos da rede. O custo de
instalao do link fsico pode ser muito superior ao custo do material. Por essa razo, muitos construtores instalam
tipos variados de cabos em todas as salas de um edifcio. Mesmo que, inicialmente, s um meio seja usado, existe
uma boa chance de outro meio ser usado no futuro. Dessa forma, economiza-se dinheiro evitando a colocao de fios
no futuro.
Meios Magnticos
Uma forma muito barata de se transportar dados de um lugar para o outro atravs de fitas magnticas ou discos
flexveis. Apesar de simples muito confivel e, dependendo da maneira como feita, pode ser mais eficaz que
muitos meios de transmisso guiados. Por exemplo, vamos supor que um usurio queira fazer um back-up de seu HD
em outro computador localizado algumas quadras de distncia. Um HD de 80 GB porttil leva algumas horas para
ser completamente preenchido em um computador e levando para outro. No entanto, transmitir 80GB em uma
Internet ADSL comum levaria muito mais tempo.
Cabo Coaxial
O cabo coaxial formado por dois condutores separados e envoltos por um material isolante. O primeiro condutor,
normalmente o cobre, mais rgido e est envolto pelo segundo condutor, este em forma de malha e normalmente de
alumnio. Este segundo condutor, alm de ajudar na transmisso tambm responsvel por proteger o primeiro
condutor contra interferncias magnticas. O cabo coaxial pode ser classificado de duas formas dependendo do
material do condutor em malha.
Quando este material o alumnio o cabo dito Cabo Coaxial Grosso (Resistncia de 75 ohms, transmisso numa
velocidade de at 10 mbps a uma freqncia de 10 Ghz). Quando esse material cobre o cabo dito Cabo Coaxial
Fino (Resistncia de 50 ohms, transmisso numa velocidade de at 10 mbps a uma freqncia de 2 Ghz).
Meios fsicos de transmisso
9
Fibra ptica
Os cabos de fibra ptica so filamentos de vidro ou de materiais polimricos com capacidade de transmitir sinais
digitais sob a forma de sinais luminosos. Tal filamento pode apresentar dimetros variveis, dependendo da
aplicao, indo desde dimetros nfimos, da ordem de micrmetros (mais finos que um fio de cabelo) at vrios
milmetros. Graas a essa caracterstica, so cabos que conseguem ter uma velocidade ilimitada, se comparados com
cabos eltricos.
Tambm torna seu uso desejvel quando existe a necessidade de transmitir dados a grandes distncias. Outra
caracterstica interessante destes tipos de cabos que eles no sofrem interferncia de campos eletromagnticos.
So cabos com custo mais alto, e com certa dificuldade de manuseio. Entretanto, seu uso vem se disseminando cada
vez mais, com a necessidade cada vez maior de velocidades mais altas. Seu custo tambm diminui dia aps dia, e a
matria-prima para a construo do cabo abundante.
Os cabos de fibra ptica so compostos por dois fios(um para a recepo e outro para a transmissso) formados por
minsculos cilindros de vidro. Possui duas camadas: Ncleo (vtreo) e Revestimento (Silicone). At no seculo XIX o
cabo fibra ptica era considerado o mais confiavel, porque tinha poucas desvantagens
Tipos
Multimodo Degrau
Primeiro tipo de fibra ptica que surgiu, tambm o mais simples dos trs. Aqui, o ncleo e o revestimento esto
claramente definidos. O ncleo formado por um nico tipo de material, tendo ento ndice de refrao constante, e
dimetro varivel. Os raios de luz refletem no revestimento em vrios ngulos, resultando em comprimentos de
caminhos diferentes para o sinal. Isto causa o espalhamento do sinal ao longo do cabo e limita a largura de banda do
cabo. Este fenmeno chamado de disperso modal. A atenuao alta, fazendo com que essas fibras sejam
utilizadas em transmisso de dados em curtas distncias e iluminao.
Banda: at 35 Mhz.km
Ncleo: entre 50 e 400 mm
Atenuao: maior que 5 dB/km
Multimodo Refrao Gradual
Neste tipo de fibra ptica, a interface entre o ncleo e o revestimento alterada para propiciar ndices de refrao
diferentes dentro do ncleo e do revestimento. Os sinais luminosos viajam no eixo do cabo encontrando uma grande
refrao, tendo uma velocidade de transmisso baixa. Os raios que viajam na mesma direo do cabo tem um ndice
de refrao menor e so propagados mais rapidamente. Com isso, todos os modos do sinal podero viajar a uma
mesma velocidade efetiva no cabo, de maneira a reduzir a disperso modal. normalmente empregada nas
telecomunicaes.
Banda: at 500 Mhz.km
Ncleo:entre 125 e 50 mm
Atenuao: 3 dB/km
Meios fsicos de transmisso
10
Monomodo
Com um dimetro de ncleo diminuto, o ndice ncleo/revestimento permite que apenas um modo seja propagado
atravs da fibra, o que diminui a disperso do pulso luminoso. A emisso de sinais em fibras do tipo monomodo s
possvel com a utilizao de laser. Contudo, o equipamento como um todo mais caro que o dos sistemas
multimodo. Esse tipo de fibra possui grande emprego em sistemas telefnicos.
Banda: at 100 GHz.km
Ncleo: 8 micrometros (m)
Atenuao: entre 0,2 dB/km e 0,7 dB/km
Transmisso via rdio
Neste tipo de transmisso utilizamos varias caractersticas fsicas que as ondas de rdio podem oferecer. Elas so
fceis de serem geradas, atravessam paredes, contornam objetos, so refletidas pela atmosfera e percorrem longas
distancias. muito til quando se quer construir uma rede em regies onde esticar cabos coisa complicada, como
em uma cidade cheia de prdios, ou dentro de um prdio ou em regies montanhosas.
A desvantagem que preciso uma visada perfeita (sem obstculos) para uma boa qualidade de trafego, embora
fatores como chuva, neblina, serrao no influenciam a via rdio
Ondas infravermelhas
As ondas infravermelhas so largamente utilizadas em controles remotos, por exemplo. Uma caracterstica
importante desta onda que ela no pode atravessar objetos slidos. Assim pode-se construir LAN's mais seguras
contra espionagem eletrnica. Contudo, essas transmisses esto limitadas a cerca de 30 metros, e possui largura de
banda de at cerca de 30Mbps.
Outros meios
As redes tambm podem ser construdas por outros meios, que agora esto conquistando mercado. Entre eles:
Bluetooth
As redes bluetooth (chamadas de rede PicoNet) tem suas vantagens e desvantagens no esto aqui. Dentre suas
vantagens, est o preo bem acessvel dos adaptadores bluetooth, baixo consumo de energia, e a possiblidade de usar
esses mesmos adaptadores para fazer a conexo com diversos gadgtes do dia-a-dia. Como desvantagem, a velocidade
da conexo bluetooth raramente passa de 700kb/s, o alcance do no mximo 10 metros, e s podem ser ligados 8
acessos simultneos.
PLC (Power Line Communications)
Pensando na enorme rede eltrica que j existe em todo o mundo, foi desenvolvida essa tecnologia para a
transferncia de dados e voz pela rede eltrica. Outra vantagem a fcil instalao desse tipo de rede. Agora, como
desvantagens, temos a quantidade de interferncia que ainda existe nesse meio, e o imenso compartilhamento dele.
USB (Cabo de rede USB)
As portas Universal Serial Bus mais conhecidas como USB, esto presentes em todos os computadores atuais, alm
de ser a interface mais utilizada pelos outros perifricos. Para montar uma rede via USB, necessrio um cabo
especial, que possui um hardware controlador de rede, que ser o responsvel pela criao de uma rede virtual entre
os computadores. Apesar de ter uma alta taxa de transferncia, as redes USB so limitadas a conectar apenas duas
mquinas.
Comutao de circuitos e de pacotes
11
Comutao de circuitos e de pacotes
Comutao segundo o dicionrio Michaelis [1] significa permutao, substituio. Em computao, a Comutao
de circuitos e pacotes utilizada, por exemplo, em sistemas de comunicao onde o trfego constante.
Uma imagem sobre comutao pode ser encontrada neste link
[2]
.
Autor: David Sudjiman
[3]
Website: davidsudjiman.info
[4]
.
Histrico
Inicialmente as redes comutadas surgiram por uma necessidade da rea de telecomunicaes. Com o surgimento e
ampliao das redes telefnicas, houve a necessidade de interligar os pontos. A princpio eram interligadas uma a
uma, mas esta opo gradativamente tornou-se invivel devido grande quantidade de fios exigida.
Iniciou-se ento a comutao manual onde cada telefone era interligado a uma central com um telefonista e este era
encarregado de transferir a ligao. Porm, era tambm inconveniente pois alm de ter a demora natural do operador,
ainda perdia-se a privacidade, uma vez que o operador poderia ouvir toda a conversa.
Observando a necessidade de um mecanismo mais eficiente, em 1891 foi criada a primeira central telefnica
automaticamente comutada. Para seu funcionamento, foi necessria a adaptao da aparelhagem. Os telefones
passaram a ter o sinal decdico, que representavam os nmeros de 0 a 9. A interpretao dos sinais pelos
comutadores gerava uma cascata interligada destes at o estabelecimento da ligao.
Entre 1970 e 1980 houve o desenvolvimento e implantao de centrais telefnicas eletrnicas, ou seja, os
comutadores operados eletromecanicamente foram substitudos por sistemas digitais operados computacionalmente,
tudo graas s tecnologias de digitalizao da voz
[5]
.
A expanso dos conceitos para transmisso de dados foi quase imediata, gerando os paradigmas de comunicao
comutada existentes.
Tambem se divide em sub-etapas:
1. 1. Estabelecimento do circuito
2. 2. Conversao
3. 3. Desconexo do circuito
Comutao por Circuitos
A comutao por circuitos exige que as estaes comunicantes possuam um caminho dedicado exclusivo, que pode
ser estabelecido de quatro maneiras:
1. 1. Circuito fsico
2. 2. Frequency Division Multiplexing (FDM - multiplexao por canais de frequncia)
3. 3. Time Division Multiplexing (TDM - multiplexao por canais de tempo)
4. 4. Statistical Time Division Multiplexing (STDM - multiplexao estatstica por canais de tempo)
Este paradigma de comunicao executado em trs passos distintos e especficos:
Estabelecimento do circuito
Troca de informaes
Desconexo ponto a ponto
Caso uma destas etapas tenha problemas, h quebra da conexo. Um exemplo claro uma ligao telefnica, onde
h a necessidade de um canal dedicado em ambos terminais. Outro exemplo a internet discada.
Comutao de circuitos e de pacotes
12
Circuitos fsicos
As vantagens dos circuitos fsicos so a exclusividade do canal que agiliza a velocidade de troca de informaes e
consequentemente o tempo. A contrapartida um mtodo oneroso, que exige manuteno individual constante, com
uso excessivo de fiao. interessante seu uso somente para pequenas aplicaes em distncias curtas, pois sua
expanso trabalhosa.
FDM - Frequency Division Multiplexing
Imagem de FDM disponvel no Flickr
[6]
.
A diviso em canais de frequencia cria circuitos virtuais com banda mais estreita que o canal do comutador com a
rede, de forma que a soma de todos circuitos igual ou menor banda do comutador.
A grande vantagem o uso de menos fiao para promoo do servio, porm o problema a rpida saturao dos
canais. Conforme a figura
[6]
ilustra, os canais necessitam uma banda de comunicao e uma faixa de segurana.
Outro problema est na expanso do sistema: ser necessrio reconfigurar todos os terminais para as novas larguras
de banda.
Em geral, utiliza-se FDM em sinais analgicos.
TDM - Time Division Multiplexing
Imagem de TDM disponvel no Flickr
[7]
.
A diviso de canais no tempo gera circuitos virtuais entre os terminais e o roteador. Este possui um ciclo de tempo
em que deve se comunicar com todas estaes. Para tanto, o tempo alocado igualmente para cada terminal
comunicar-se.
Este mtodo exclui parcialmente o problema da expansibilidade, j que no exige reconfigurao, apenas
disponibilidade de recursos. A disputa ocorre somente no momento da conexo, aps estabelecida no h problemas.
O grande problema no entanto que, conforme a rede aumenta, os recursos so alocados e o tempo de resposta
aumenta aritmeticamente.
Em geral, utiliza-se TDM em sinais digitais.
STDM - Statistical Time Division Multiplexing
Imagem de STDM disponvel no Flickr
[8]
.
O mtodo STDM
[9]
funciona identicamente o mtodo TDM, porm soluciona parcialmente o problema do tempo de
resposta. Ele utiliza mtodos estatsticos e diferencia as estaes ativas das ociosas. O segundo passo alocar
recursos somente s estaes ativas, e escutar as ociosas, de forma que no seja perdida a conexo com as mesmas.
No entanto, quando todas as estaes esto ativas o tempo de resposta se mantm igual ao TDM.
Este procedimento foi denominado Fast Connect Circuit Switching. Um problema do STDM a perda de conexo.
Caso uma estao ociosa fique ativa e o roteador no possua recursos livres, a conexo perdida.
Comutao por Pacotes
A comutao por pacotes no exige o estabelecimento de um circuito dedicado para a comunicao, o que implica
menores custos com meios fsicos. Este paradigma utiliza a ideia da segmentao de dados em partes discretas,
compostas de cabealho (com bits de verificao de integridade), corpo e rodap (onde realizada a verificao
cclica de redundncia), que so denominados pacotes
[10]
(ou outros nomes, como quadro, bloco, clula, segmento,
dependendo do contexto).
Neste tipo de comutao usada a multiplexao estatstica (STDM). Diferentemente do paradigma rival (por
circuitos), neste o tempo alocado para os terminais mais ativos prioritariamente, porm sem o risco da quebra da
Comutao de circuitos e de pacotes
13
conexo.
Um exemplo so as conexes Ethernet, que comutam por pacotes e no perdem conexo.
Os comutadores de pacotes utilizam uma das trs tcnicas seguintes:
1. Cut-through
[11]
(corte de caminho)
2. Store-and-forward
[12]
(armazena e passa adiante)
3. Fragment-free
[13]
(livre de fragmentos)
Cut-through
Este comutador recebe e armazena apenas parte do cabealho (6 primeiros bytes), para saber qual receptor do pacote,
e j encaminha os dados diretamente. A princpio, h um enorme ganho em velocidade. No entanto, por no haver
nenhuma verificao de erros (neste caso a verificao ocorre nos terminais), frequentemente necessrio o reenvio
do pacote. Na prtica muito pouco utilizado sozinho.
Store-and-forward
O comutador recebe e armazena os dados at possuir completamente o pacote em um buffer de entrada. Aps, efetua
verificao por erros cclicos e outros, passa o pacote para o buffer de sada e retransmite o pacote para o outro
comutador ou o terminal. Caso ele encontre algum erro, descarta o pacote.
Este tipo de comutador mais robusto e eficiente, porm devido ao grande nmero de requisies geralmente
ocorrem muitos choques de pacotes a atrasos. A implementao mista do store-and-forward e do cut-through a
configurao mais utilizada.
Fragment-free
O funcionamento deste comutador muito semelhante ao cut-through, porm ele armazena os 64 primeiros bytes
antes de enviar. Esta implementao baseada em observaes estatsticas: a grande maioria dos erros, bem como
todos os choques de pacotes, ocorrem nos primeiros 64 bytes.
O deslocamento dos pacotes n a n (e no fim a fim como na por circuito), sendo que cada passagem para o
prximo n denominada hop. A cada hop o terminal ou comutador transmite apenas um pacote e aguarda para
transmitir o restante.
H basicamente duas implementaes: circuitos virtuais e datagramas.
Circuitos Virtuais
[14]
Cada roteador grava em uma tabela seus circuitos virtuais (VCs) e os identifica unicamente (para este comutador,
dois roteadores podem referenciar um terceiro por identificadores diferentes). As tabelas so montadas por ordem
hierrquica, ou seja, dos mais abrangentes para os menos.
Aps a identificao e montagem das tabelas, necessrio primeiramente o comutador estabelecer um circuito para
ento iniciar a transferncia de dados. O circuito implica que todos os pacotes seguiro o mesmo caminho durante a
conexo. H uma grande desvantagem neste mtodo, pois ele vulnervel a pontos cegos. Caso um comutador saia
do ar e este faa parte do circuito virtual h uma perda da conexo.
O funcionamento assemelha-se ao sistema de uma transportadora, onde so definidas rotas para a entrega de
mercadorias.
Comutao de circuitos e de pacotes
14
SVC Switched Virtual Circuit
[15]
O circuito estabelecido dinamicamente, sob demanda, e encerrado assim que finda a transmisso. Seu
estabelecimento segue os mesmos passos de uma comutao por circuitos.
A alocao temporria de banda permite a disponibilidade quase constante de recursos, uma vez que assim que
concluda a comunicao encerrada a conexo. No entanto, h um alto consumo de banda no estabelecimento e no
encerramento dos circuitos, pois necessrio percorrer todos os ns.
PVC Permanent Virtual Circuit
[16]
Nesta implementao,permanentemente, ficando dedicado transferncia de dados. Os circuitos virtuais
permanentes (PVC) so bastante utilizados por fornecedores de servios pblicos ATM para criar e estabelecer uma
complexa infra-estrutura baseada em ATM para as respectivas redes internas. Em muitos casos, a infra-estrutura
interna ATM da rede construda utilizando PVCs com ligaes ponto a ponto que ocorrem em circuitos virtuais
comutados (SVC, switched virtual circuit).
H tambm um menor consumo de banda no estabelecimento e encerramento da conexo, no entanto a alocao
permanente satura a rede por garantir banda e trfego constantes.
E muito utilizada em aplicaes que exigem fluxo constante de informaes.
Datagramas
A implementao por datagramas permite aos pacotes serem enviados por caminhos diferentes. A cada pacote
determinada uma rota individual, com base na tabela de roteamento presente em cada comutador e no endereo de
destino. No garantida a chegada dos pacotes em ordem, sendo necessrio a reorganizao aps a chegada.
A transmisso dos dados inicia-se imediatamente aps hop, e devido ao fato de cada pacote possuir um caminho
distinto os roteadores
[17]
(comutadores) ficam menos sobrecarregados, alm de prevenir a perda de conexo.
O funcionamento semelhante a uma viagem, sabendo o destino e partindo do mesmo local muitos carros podem
fazer diversas rotas e chegarem, sem garantias de ordem de chegada.
Vantagens
Melhor uso do meio de transmisso
Melhor eficincia de linha
Melhora a confiabilidade da transmisso de dados
Pode no haver tempos de estabelecimento e desconexo de circuito(datagramas)
Baixo tempo de transmisso desde a origem ao destino
Os erros no precisam chegar no terminal para serem recuperados
Possibilidade de armazenar pacotes (transmisso e recepo assncronos)
Alterao de encaminhamento em caso de congestionamento
Possibilidade de aceitar pacotes em situaes de trafego intenso, com posterior envio
Comutao de circuitos e de pacotes
15
Desvantagens
Disputa por banda n a n
Congestionamento excessivo (choque de pacotes e atraso)
Sem garantia de banda
Tempos de atraso entre origem e destino variveis no tempo
Possibilidade de chegada de pacotes ao destino por ordem diferente da de emisso (datagramas)
Comutao de circuitos vs. Comutao de pacotes
[18]
A comutao de circuitos e a comutao de pacotes diferem em diversos aspectos. Nesta seo, faremos uma
comparao entre estas duas tcnicas, no que diz respeito a configurao de chamada, forma de envio de
dados/pacotes, suscetibilidade a falhas, congestionamento, transparncia e tarifao.
Na comutao de circuitos, necessrio estabelecer, previamente, um caminho fim-a-fim, para que os dados possam
ser enviados. Isso garante que, aps a conexo ter sido efetuada, no haver congestionamento e os dados sero
enviados de forma ordenada. Entretanto, configurar um caminho com antecedncia provoca reserva e provvel
desperdcio de largura de banda. Esse tipo de comutao no muito tolerante a falhas, sendo que na inatividade de
um switch, os circuitos que o utilizam sero encerrados. Os bits fluem continuamente pelo fio e a tranmisso de
dados feita de forma transparente, ou seja, o transmissor e o receptor determinam a taxa de bits, formato ou mtodo
de enquadramento, sem interferncia da concessionria de comunicaes, o que proporciona, por exemplo , a
coexistncia de voz, dados e mensagens de fax no sistema telefnico.
J na comutao de pacotes, no necessrio estabelecer uma comunicao previamente. Assim sendo, diferentes
pacotes podero seguir caminhos distintos, dependendo das condioes da rede no momento em que forem enviados,
no chegando, necessariamente, ao receptor de forma ordenada. Existe, entretanto, a possibilidade de
atraso/congestionamento em todos os pacotes, uma vez que no reservada, antecipadamente, largura de banda para
a transmisso. Esta tcnica mais tolerante a defeitos e, em caso de inatividade de um switch, os pacotes so
roteados de modo a contornar os inativos. utilizada a transmisso store-and-forward, na qual os pacotes so
reservados na memria de um roteador, e depois de inspecionados em busca de erros, so enviados ao roteador
seguinte. Por fim, essa transmisso no se d de forma transparente sendo que os parmetros bsicos, tais como taxa
de bits, formato e mtodo de enquadramento, so determinados pela concessionria de comunicaes. No sistema
como um todo, a comutao de pacotes mais eficiente que a comutao de circuitos.
Aps estas comparaes, podemos chegar a seguinte concluso: de uma lado temos um servio garantido, porm
com desperdcio de recursos (comutao de circuitos); de outro, temos servio no garantido, porm com velocidade
maior e sem desperdcio de recursos (comutao de pacotes).
Referncias
[1] http:/ / michaelis. uol. com. br/ moderno/ portugues/ index. php?lingua=portugues-portugues& palavra=comuta%E7%E3o
[2] http:/ / www. flickr.com/ photos/ davidsudjiman/ 169238847/
[3] http:/ / www. davidsudjiman. info/ about/
[4] http:/ / www. davidsudjiman. info
[5] http:/ / www. projetoderedes.com.br/ tutoriais/ tutorial_rede_telefonica_comutada_01. php
[6] http:/ / www. flickr.com/ photos/ davidsudjiman/ 169233552/
[7] http:/ / www. flickr.com/ photos/ davidsudjiman/ 169237353/
[8] http:/ / www. flickr.com/ photos/ davidsudjiman/ 169237351/
[9] http:/ / www. davidsudjiman. info/ 2006/ 02/ 06/ fdm-tdm-and-stdm/
[10] http:/ / hsw. uol.com.br/ questao525. htm
[11] http:/ / informatica. hsw. uol. com.br/ lan-switch8.htm
[12] http:/ / informatica. hsw. uol. com.br/ lan-switch8.htm
[13] http:/ / informatica. hsw. uol. com.br/ lan-switch8.htm
[14] KUROSE,J. F.; ROSS,K. W. Redes de Computadores e a Internet - Uma abordagem top-down, 3 Edio
Comutao de circuitos e de pacotes
16
[15] http:/ / fatosdigitais.wordpress. com/ 2007/ 07/ 24/ redes-wan-basico/
[16] http:/ / fatosdigitais.wordpress. com/ 2007/ 07/ 24/ redes-wan-basico/
[17] http:/ / pt. wikipedia. org/ wiki/ Roteador
[18] [18] TANENBAUM, A. S. Redes de Computadores; 4 edio
Pilha de protocolos da Internet
Segundo Kurose, "a Internet um sistema extremamente complicado e que possui muitos componentes."
[1]
. Para que
um sistema to complexo possa permitir a comunicao de usurios, independente da plataforma de Software
utilizada, ou meio fsico de transmisso, ou mesmo de hardware usado, foi necessrio criar padres e regras. Com
isso, surgiram os protocolos de rede. Segundo definio da CISCO, "um protocolo uma descrio formal de um
conjunto de regras e convenes que governam a maneira de comunicao entre os dispositivos em uma rede."
[2]
Camada de Enlace (CE)
Para que duas mquinas se comuniquem, necessrio haver um certo grau de cooperao. "Em vez de implementar a
lgica para isso como um nico mdulo, a tarefa dividida em subtarefas, cada qual implementada
separadamente."
[3]
. Ento desenvolveu-se a arquitetura da Internet em camadas. A modularizao facilita o
entendimento das funes e tambm a deteco de erros. Cada camada tem caractersticas prprias.
Assim, surgiu a pilha de protocolos da Internet (ou pilha TCP/IP), que formada pelos protocolos que regem a
comunicao na Internet. Nessa arquitetura em forma de pilha, as camadas inferiores fornecem servios s camadas
superiores, de forma que estas no precisem saber o funcionamento de uma camada inferior, apenas conhecer os seus
servios. Na pilha TCP/IP, o TCP o principal protocolo da camada de transporte, enquanto que o IP o responsvel
pela camada de redes.
Um exemplo tpico da relao entre esses protocolos a comunicao entre duas pessoas. Uma pessoa pensa em algo
para falar e "processa" o que quer dizer. O cerbro ordena a movimentao das cordas vocais, e depois da boca. O ar
o responsvel por enviar a mensagem at os ouvidos de outra pessoa. A mensagem ento levada ao crebro,
processada, e essa segunda pessoa capaz de compreender o que foi dito pela primeira. Para o outro responder,
feito o mesmo processo realizado pela primeira pessoa.
As regras para redes, ou protocolos, so criadas e mantidas por diferentes organizaes e comits, como: Institute of
Electrical and Electronic Engineers (IEEE), American National Standards Institute (ANSI), Telecommunications
Industry Association (TIA), Electronic Industries Alliance (EIA) e International Telecommunications Union (ITU),
anteriormente conhecida como Comit Consultatif International Tlphonique et Tlgraphique (CCITT).
Modelos OSI e TCP/IP
Quando a Internet surgiu, no existia ainda um modelo padro para suas aplicaes, ela simplesmente "funcionava".
Ento, criaram o modelo OSI (Open Systems Interconnection - Interconexo de Sistemas Abertos), que descreve
toda a comunicao em 7 camadas: Aplicao, Apresentao, Sesso, Transporte, Rede, Enlace de Dados e Fsica.
Esse modelo descreve e separa cada parte da comunicao, porm, trata-se de um modelo complexo, que no
realmente implementado pela Internet. Surgiu ento o modelo para descrev-la, o modelo TCP/IP, baseado em seus
dois principais protocolos (o TCP e o IP). O modelo TCP/IP em si no muito utilizado, mas mais prximo
realidade da comunicao na grande rede mundial.
Ser explicado aqui as camadas do modelo TCP/IP, com algumas adies, fornando o modelo Hbrido, pois este une
a didtica de um lado, e a utilizao prtica da internet do outro.
Pilha de protocolos da Internet
17
TCP/IP
A pilha TCP/IP formada por quatro camadas. Este modelo apresenta uma soluo prtica ao modelo OSI que nunca
chegou a ser implementado. As camadas que formam o TCP/IP so:
Aplicao
Na camada superior, a Aplicao, funcionam os servios que so diretamente fornecidos ao usurio da Internet.
Nesta camada funcionam protocolos como HTTP, DNS, DHCP, MSN Messenger e outros. implementada
simplesmente por software. Sua principal funcionalidade padronizar a forma com que os programas consigam
conversar entre si, definindo regras que devem ser obedecidas por todos os softwares que implementem tal servio.
Transporte
A camada seguinte responsvel por criar uma comunicao fim-a-fim, ou seja, ela faz uma conexo virtual entre a
origem e o destino. Os principais protocolos dessa camada so o TCP (Transmission Control Protocol - Protocolo de
Controle de Transmisso) e o UDP (User Datagram Protocol - protocolo de datagramas do usurio).
O TCP (descrito na RFC 793) prov uma transmisso confivel, garantindo que o que foi mandado chegue ao
destino, como o uso de pacotes ACK(confirmao) e janelamento. O TCP garante que os dados so entregues livres
de erro, em sequncia e sem perdas ou duplicao. O lema do TCP "transmitir com segurana". Portanto, esse
protocolo mais usado em aplicaes em que necessria a garantia de entrega dos pacotes de forma ordenada e
sem erros, como acessos a pginas WEB, por exemplo.
O UDP (descrito na RFC 768) corresponde a um protocolo no orientado a conexo, sem confiabilidade, j que no
h garantia de recebimento de pacotes, quer dizer, o UDP no implementa nenhum mecanismo de controle de
congestionamento, de fluxo ou de erros. Geralmente utilizado por aplicaes que necessitam de velocidade (o UDP
um protocolo bastante leve) e dispensam a confirmao de que as informaes foram recebidas (como
videoconferncias).
Essa camada trabalha com endereamento baseado em portas. Cada servio fornecido pela camada de aplicao
possui um endereo de porta, e a camada de transporte faz a conexo entre porta de origem e porta de destino.
Segundo Tanenbaum: "A Camada de Transporte no simplesmente outra camada. Ela o ncleo de toda hierarquia
de protocolos...Sem a camada de transporte, todo o conceito de protocolos em camada faria pouco sentido."(Andrew
Pilha de protocolos da Internet
18
S. Tanenbaum, Redes de Computadores). Nessa camada, os dados vindos da camada de Aplicao so agrupados em
segmentos.
A figura TCP Header
[4]
mostra as partes do cabealho TCP. Esta exibio apenas uma representao esquemtica.
Na analogia com a realidade, deve-se considerar uma disposio horizontal, com a segunda linha aps a primeira e,
assim sucessivamente, at a ltima.
Source port / Destination port: parte que identifica as portas das camadas de aplicao da origem e do destino.
Sequence number: normalmente especifica o nmero assinalado para o primeiro byte de dados na mensagem
corrente. Na fase de estabelecimento de uma conexo, pode ser usado como uma identificao da transmisso.
Acknowledgment number: contm o nmero sequencial do prximo byte de dados que o dispositivo de origem
espera receber.
Data offset: o nmero de palavras de 32 bits do cabealho TCP.
Reserved: reservado para uso futuro.
Flags: usado para uma variedade de informaes de controle, como SYN e ACK para estabelecer conexo e FIN
para terminar.
Window: especifica o tamanho da parte de memria (buffer) disponvel para os dados a receber.
Checksum: verificao da integridade do cabealho.
Urgent pointer: aponta para o primeiro byte urgente de dados no pacote.
Options: especifica vrias opes do TCP.
Data: contm cabealho e dados da camada superior, isto , a de aplicao. O seu comprimento varivel,
podendo ser bem mais que os 32 bits indicados na tabela.
Inter-Redes
A camada de Redes est relacionada com o transporte dos pacotes da origem at o destino. Quando se fala nisso, se
fala em roteadores, que so os responsveis por esse trabalho. Eles no devem conhecer a localizao de cada
endereo na rede de ip em redes de comunicao curta. Os protocolos tcp/ip dessa camada no podem garantir que
pacotes possam ser roteados pela rede, ou seja, protocolos que contenham endereamento de origem e destino (IP,
IPX/SPX, etc.) e protocolos que conheam a rede e os respectivos endereos nela (RIP, OSPF, EIGRP, IS-IS, etc.),
alm de utilizarem algoritmos de roteamento para determinar o caminho de menor custo. O principal protocolo dessa
camada o IP (Internet Protocol). Nessa camada, os segmentos da camada superior (transporte) so agrupados em
datagramas.
Host/Rede
O modelo de referncia TCP/IP no define muito bem essa camada, somente deve ser garantido que os pacotes IP
trafeguem de algum modo, independentemente do protocolo e do meio fsico, at o destino.
Por isso, para explicar essa parte, costuma-se usar o modelo hbrido de referncia, que composto pelas camadas:
Aplicao, Transporte, Rede, Enlace de Dados e Fsica.
Enlace de Dados
A camada de Enlace responsvel por dar acesso ao meio fsico de comunicao. Como uma camada bem prxima
transferncia de bits, ela tambm fornece correo de erros, atravs da Checagem Cclica de Redunncia (CRC -
Cyclic Redundancy Checksum). Tambm responsvel por fazer o controle do fluxo de bits, de forma que o
receptor possa receber os dados a uma velocidade que possa processar. Essa camada trata as topologias de rede e
engloba dispositivos como Switch, placas de rede, interfaces, etc. Os pacotes de dados, nessa camada, so
denominados quadros. Exemplos de protocolos da camada de enlace so o Ethernet e o PPP, e nessa camada onde
so adicionados cabealhos e trailers MAC. Isso permite que seja feita a anlise do MAC Address em um dado
aplicativo. Uma breve descrio a respeito do MAC Address feita abaixo.
Pilha de protocolos da Internet
19
Endereo MAC (MAC Address)
O endereo MAC (Media Access Control) o endereo fsico nico de uma interface de rede. Todos os dispositivos
que esto conectados rede local Ethernet, possuem interfaces endereadas: estaes de trabalho, impressoras,
roteadores e switches, etc. O IEEE controla o espao de endereamento Ethernet e distribui faixas de endereos aos
fabricantes. Cada faixa consiste de um identificador de 24 bits (3 primeiros dos 6 bytes - pares hexadecimais),
chamado Organizationally Unique Identifier (OUI). Cada fabricante adquire um ou mais OUIs e produz interfaces
de rede cujos endereos so compostos do seu OUI concatenado com um nmero de 24 bits ( 3 ltimos bytes) que
identifica a interface. Apesar de ser nico, praticamente todo hardware hoje permite a alterao do endereo MAC.
Isso acontece devido ao fato de as interfaces de rede terem o MAC gravado em memria ROM, a qual depois
copiada para a RAM, com a inicializao da placa de rede, o que abre brechas para sua modificao. Tal modificao
conhecida como MAC spoofing, uma tcnica em que se altera o endereo MAC, muitas vezes para fins maliciosos
ilegais.
Fsica
Em uma rede, uma informao controlada, manipulada e processada por um agente especfico, e sinais so a
materializao dessas informaes. O meio onde esses sinais se propagam pode ser descrito pela camada Fsica.
Resumidamente, essa camada inclui o elemento condutor e os parmentos que definem a transmisso. Muitas vezes
chamada de PHY, essa a camada que conecta um dispositivo de link ao meio de transmisso, onde os dados
realmente trafegam. A camada fsica trata da distncia mxima dos cabos (por exemplo, no caso do UTP onde so
100m), de conectores fsicos (tipo BNC do coaxial ou RJ45 do UTP), dos pulsos eltricos (no caso de cabo metlico)
ou pulsos de luz (no caso da fibra tica). Na transmio de qualquer tipo de sinal, pode-se usar cabos par-tranado,
cabos coaxiais, fibras-pticas ou at mesmo o ar (wireless). O papel dessa camada, portanto, apenas permitir que os
dados saiam do transmissor e cheguem ao receptor, no provendo nenhum servio de segurana, nem integridade.
Referncias
[1] [1] James F. Kurose e Keith W. Ross, Redes de Computadores e a Internet - Uma abordagem Top-Down
[2] [2] Currculo online CISCO CCNA 3.0
[3] [3] Willian Stallings, Redes e Sistemas de Comunicao de Dados
[4] http:/ / www. mspc.eng. br/ info/ im01/ net108. gif
Histria da Internet
20
Histria da Internet
A abordagem histrica sempre vlida, mesmo quando se trata de tecnologia, que nos termos atuais, se moderniza e
evolui em ritmo frentico. Devemos recorrer histria para resgatar as motivaes, o contexto histrico e a evoluo
por trs de cada inveno. Portanto, no podemos ignorar a histria daquilo que se tornou um componente central da
infra-estrutura mundial de telecomunicaes
[1]
, a Internet.
interessante notar que uma srie de pesquisas e motivaes nasciam na dcada de 60, e que tinham em comum a
idealizao de uma grande rede de comunicao: a necessidade da descentralizao geogrfica da informao
durante a Guerra Fria, as primeiras pesquisas sobre comutao de pacotes e a idealizao de estudiosos (J.C.R.
Licklider, do MIT) de construir uma grande rede de onde qualquer pessoa pudesse acessar arquivos e programas, so
exemplos das motivaes que surguiram naquela dcada.
Foram nos anos 60 que surgiram os primeiros estudos sobre comutao de pacotes, com a inteno de criar uma
forma de comunicao mais eficiente e robusta que a comutao de circuitos. Neste perodo temos 3 institutos que se
destacam em suas contribuies (pesquisas realizadas em paralelo, sem conhecimento mtuo). Seriam estes o MIT,
Rand Institute e o National Physical Laboratory. Muito do que foi pesquisado teve o propsito de atender a
necessidades militares, pois o contexto poltico do mundo era a Guerra Fria. Mas pesquisadores, como J.C.R.
Licklider do MIT, em 1962, j discutia o conceito de Rede Galtica (Galactic Network), e j idealizava um conceito
de redes de computadores que basicamente o modelo de internet que temos hoje.
O primeiro livro sobre a teoria da comutao de pacotes foi lanando em 1964, por Leonard Kleinrock. Em 1965,
depois que Lawrence G. Roberts, trabalhando com Thomas Merril, colocaram em funcionamento a primeira
(pequena) rede WAN usando a rede telefnica, concluiu-se que a comutao por circuito era ineficiente para este
propsito, confirmando definitivamente, que a soluo estava na comutao por pacotes.
Em 1968 criado o primeiro comutador de pacotes, chamado Interface Message Processors (IMPs), para compor a
arquitetura da ARPANet. Em 1969, trs IMPs so instalados na universidade de Stanford, Santa Brbara e Utah,
configurando assim, uma rede com 4 ns. Em 1972 a ARPANet j contava com 15 ns. Neste mesmo ano o primeiro
protocolo tipo host-to-host foi criado, e a primeira aplicao de e-mail foi apresentada.
A dcada seguinte, 70, foi a responsvel pelo desenvolvimento do TCP, inicialmente especificado por Vint Cerf, em
1974. O objetivo era obter um protocolo que transmitisse de forma eficiente e confivel ,pacotes em redes de longa
distncia. Posteriormente, Robert Kahn definiu algumas regras que norteariam o desenvolvimento do novo
protocolo, como por exemplo: retransmisso dos pacotes em caso de perda, cada rede distinta se conecta internet
sem depender da sua arquitetura, caixas-pretas (posteriormente chamados de gateways e roteadores) fariam a
conexo entre as redes sem reter informao sobre os pacotes e no haveria um controle global no nvel de operao.
Os anos 80 marcam a proliferao das redes conectadas Internet e finalmente, com a criao da Web , e dos
browsers com interface grfica na dcada de 90, temos a incluso do usurio domstico na rede, e o incio do
fenmeno comercial e cultural que se tornou a Internet.
A Proliferao de Redes 1980-1990
Ao final da dcada de 1970, aproximadamente 200 mquinas estavam conectadas ARPAnet, ao final da dcada de
1980, o nmero de mquinas ligadas a internet pblica, uma confederao de redes muito parecida com a internet de
hoje, alcanaria 100 mil. A dcada de 1980 seria uma poca de formidvel crescimento.
Grande parte daquele crescimento foi consequncia de vrios esforos distintos para criar redes de computadores
para interligar universidades. A BITNET processava e-mails e fazia transferncia de arquivos entre diversas
universidades do nordeste dos Estados Unidos. A CSNET (computer science network rede da cincia de
computadores) foi formada para interligar pesquisadores de universidades que no tinham acesso a ARPAnet. Em
1986, foi criada a NSFNET para prover acesso a centros de super-computao patrocinados pela NFS. Partindo de
Histria da Internet
21
uma velocidade inicial de 56 kbps, ao final da dcada o backbone da NSFNET estaria funcionando a 1.5 Mbps e
servindo como backbone primrio para interligao de redes regionais.
Na comunidade da ARPAnet, j estavam sendo encaixados muitos dos componentes finais da arquitetura da internet
de hoje. No dia 1 de janeiro de 1983, o TCP/IP foi adotado oficialmente como o novo padro de protocolo de
maquinas para a ARPAnet (em substituio ao protocolo NCP). Devido a importncia do evento, o dia da transio
do NCP para o TCP/IP foi marcado com antecedncia a partir daquele dia toda as maquinas tiveram de adotar o
TCP/IP. No final da dcada de 1980, foram agregadas importante extenses ao TCP para implementao do controle
de congestionamento baseado em hospedeiros. Tambm foi desenvolvido o sistema de nomes de domnios (DNS)
utilizado para mapear nomes da internet fceis de entender para endereos IP de 32 bits. Paralelamente ao
desenvolvimento da ARPAnet (que em sua maior parte deve-se aos Estados Unidos), no inicio da dcada de 1980 os
franceses lanaram o projeto Minitel, um plano ambicioso para levar as redes de dados para todos os lares.
Patrocinado pelo governo francs, o sistema Minitel consistia em uma rede publica de comutao de pacotes
(baseada no conjunto de protocolos X.25, que usava circuitos virtuais), servidores Minitel e terminais baratos com
modens de baixa velocidade embutidos. O Minitel transformou-se em um enorme sucesso em 1984, quando o
governo francs forneceu, gratuitamente, um terminal para toda residncia francesa que quisesse. O sistema Minitel
inclua sites de livre acesso como o da lista telefnica e tambm sites particulares, que cobravam uma taxa de
cada usurio baseada no tempo de utilizao. No seu auge, em meados de 1990, o Minitel oferecia mais de 20 mil
servios, que iam desde home banking ate bancos de dados especializados para pesquisa. Era usado por mais de 20%
da populao da Frana, gerava receita de mais de um bilho de dlares por ano e criou dez mil empregos. Estava
presente em grande parte dos lares franceses dez anos antes de a maioria dos norte-americanos ouvir falar em
internet.
Referncias
[1] [1] Kurose, 2006
ATM
22
ATM
Asynchronous Transfer Mode, um modo de transferncia de troca de pacotes onde toda a informao organizada
em clulas. ATM um mtodo de formatao, multiplexagem, transporte e troca de informao num tamanho fixo
de 53 bytes de informao, 5 bytes presentes no cabealho da clula e 48 bytes na zona do corpo (Payload) da clula.
O tempo de Informao contida poder ser voz, data ou vdeo.
ATM, uma conexo orientada ligao. Por norma, a informao e a sinalizao so transportados em camadas
(layers) diferentes.
Vantagens
A escolha na utilizao de pequenas clulas, representa ao compromisso entre a necessidade de troca dados com um
overhead e um delay mais reduzido tendo assim uma excelente eficcia na utilizao da largura de banda disponvel.
Este tipo de rede funciona com uma largura de banda relativamente alta. Um exemplo de utilizao, onde existem
pacotes de voz e vdeo a circular numa rede e onde se quer um delay muito baixo.
As vantagens de utilizar clulas de tamanho fixo passam por:
Uma variao do delay muito baixa ou nula.
Uma sincronizao de clulas mais eficiente.
Excelente para a utilizao pelo mecanismo de routing.
A utilizao de clulas de 53 bytes passa por um acordo existente entre:
Europeus queriam clulas de 32 bytes com header.
Americanos desejavam clulas de 64 bytes com header.
Ento o compromisso ficou por exemplo, 48 bytes com 5 bytes de header: i.e., (32bytes + 64bytes) / 2 = 48 bytes
mais 5 bytes de header.
Layers
O funcionamento do modelo ATM, ocorre de duas formas, uma para o user-to-network interface (UNI), outra para
network-to-node interface (NNI) e esto divididos em 3 layers.
1. 1. ATM Adaptation Layer (AAL)
2. 2. ATM Layer
3. 3. Physical Layer
1. O Interface AAL, o layer responsvel por fazer repassar "clulas" vindas de layers superiores para layers
inferiores. Quando isto ocorre o AAL segmenta os dados em "clulas" ATM e quando faz o processo contrrio,
quando recebe dados de layers inferiores, ento o Layer ATM volta a re-assembelar os dados num formato que os
layers superiores consigam compreender. Este processo chamado de SAR, segmentation and reassembly.
2. O ATM layer responsvel por repassar "clulas" para o Physical Layer para fazer transmisso e vice versa.
Determina para onde que as ligaes recebidas devero ser encaminhadas, faz reset dos identificadores de
ligao e reencaminha os dados para o link seguinte. Controla tambm diversos funes de gesto de trfego,
como por exemplo, marcao de clulas de baixa prioridade, indicadores de congestionamento, controles
genricos de fluxos de dados. Controla igualmente a velocidade de transmisso de dados.
Camada de rede
23
Camada de rede
A camada de rede o ncleo de toda a hierarquia de protocolos e integra toda a arquitetura da rede. Sua funo
permitir transferncia de dados da mquina de origem e mquina de destino, independente das redes fsicas em uso
no momento. O destino pode ser outra rede e muitas vezes, para chegar ao destino, pode exigir vrios hops (saltos)
em roteadores intermedirios ao longo do percurso.
Para atingir seus objetivos, a camada de rede deve conhecer a topologia da sub-rede de comunicaes (ou seja, o
conjunto de todos os roteadores) e escolher os caminhos mais apropriados atravs dela. A camada de rede tambm
deve ter o cuidado de escolher rotas que evitem sobrecarregar algumas das linhas de comunicao e roteadores
enquanto deixam outras ociosas. Por fim, quando a origem e o destino esto em redes diferentes, ocorrem novos
problemas, e cabe camada de rede lidar com eles
Protocolos da camada de rede: IP (Internet Protocol ), ICMP (Internet Control Message Protocol), ARP (Address
Resolution Protocol) e RARP (Reverse Address Resolution Protocol). Um papel essencial do protocolo IP receber
os dados enviados pela camada de transporte e envi-los para a camada de enlace, o protocolo ARP responsvel
por fazer a converso entre os endereos IPs e os endereos MAC da rede, e o protocolo RARP faz o processo
reverso do ARP.
Protocolo IP
Os endereos fsicos ( MAC) das placas de rede podem ser utilizados para comunicar-se com outras mquinas na
prpria rede, mas no alm desta, pois o protocolo utilizado na camada fsica as limita. Para que distintas redes
locais com tecnologias diferentes possam se comunicar que foi criado o protocolo IP. Ou seja, este protocolo serve
para abstrair os protocolos das camadas superiores (transporte e aplicao) da rede em que se encontram, tratando
vrias redes interconectadas como apenas uma.
Para conectar somente duas redes locais, normalmente um computador com duas placas de rede j basta. Este
computador comumente chamado de bridge
[1]
, pois faz uma "ponte" entre as duas redes locais. Porm quando se
deseja interligar vrias LANs, o equipamento mais usado um computador dedicado chamado roteador, cuja funo
principal receber pacotes endereados a redes diferentes da que esto e coloc-los na rede que esteja mais prxima
de seu destino.
O endereo IP
O endereo IP um nmero de 32 bits
[2]
, comumente exibido como octetos na base decimal (veja Converso de base
numrica) separados por pontos, dividido em um prefixo que identifica a rede onde est conectada a mquina e um
sufixo que identifica cada mquina individualmente em sua rede. O endereo IP completo (prefixo da rede + sufixo
da mquina) tem de ser nico em todas as sub-redes que componham a rede maior.
Para melhorar o controle e o gerenciamento, os gestores dividiram os endereos IP na Internet em diversas classes
[3]
com diferentes fronteiras entre o endereo da rede e o da mquina. Assim, cada rede, dependendo do nmero de
mquinas que possuir, recebe um prefixo para as classes A, B ou C e gerencia o sufixo de forma que os endereos
no se repitam, podendo tambm subdividir um sufixo em um novo endereo de sub-rede, caso esta passe a existir.
Protocolo IP
24
Classe 8 16 24 31
A Prefixo Sufixo
B Prefixo Sufixo
C Prefixo Sufixo
D Multicast
E Reservado para experimentao
Portanto o espao de endereamento na internet dividido da seguinte forma:
Classe Faixa de valores
(primeiro octeto)
Nmero de
endereos
de rede
Nmero de
mquinas
em cada rede
A 0 ~ 127 128 16.777.216
B 128 ~ 191
16.384
[4]
65.536
C 192 ~ 223 2.097.152 256
D 224 ~ 239 - -
E 240 ~ 255 ? ?
Este sistema de classes facilita o roteamento, pois dependendo da faixa em que se encontrar o primeiro octeto do
endereo, se sabe quantos bits dele se referem a rede e quantos a mquina. Porm tira versatilidade do sistema.
Fica-se limitado a 3 tamanhos de redes: grande (classe C), muito grande (classe B) ou exagerada (classe A).
Conforme a internet crescia, se fez necessria a subdiviso dos espaos de endereamento, para poder acomodar
mais redes de menor tamanho. Ento foi criado o CIDR (Classeless Interdomain Routing), que possibilita a
utilizao de qualquer nmero de bits para rede, devendo este nmero ser informado em um netmask.
Mscaras de rede (endereamento sem classe)
Netmask a forma de se informar ao sistema operacional qual parte do endereo referente rede e qual referente
mquina. Ele formado com 1 na poro da rede do endereo e 0 na poro da mquina
[5]
. Geralmente o netmask
escrito com o mesmo formato de um endereo IP (bits separados em octetos escritos na base decimal), mesmo no
sendo o endereo.
Por exemplo, um netmask para uma rede de classe C 255.255.255.0, j que apenas o ltimo octeto dos endereos
classe C so referentes rede, os demais esto totalmente preenchidos por 1 pois (255)
10
=(11111111)
2
.
Os administradores frequentemente precisam subdividir o espao de endereamento recebido para a internet. Por
exemplo: Suponha ter recebido um endereo de classe C 200.131.56 e precise separar o espao para 4 sub-redes.
Assim sendo, deve-se separar mais dois bits do ltimo octeto para identificar as redes (00, 01, 10 e 11) e o netmask
teria (11000000)
2
no ltimo octeto; assim o netmask seria 255.255.255.192. Todos os endereos se iniciariam por
200.131.56, e teriam para o ltimo octeto o seguinte:
Protocolo IP
25
Sub-rede De At
1 (00000000)
2
= (0)
10
(00111111)
2
= (63)
10
2 01000000)
2
= (64)
10
(01111111)
2
= (127)
10
3 (10000000)
2
= (128)
10
(10111111)
2
= (191)
10
4 (11000000)
2
= (192)
10
(11111111)
2
= (255)
10
O netmask, assim, ideal para a extrao do endereo de rede de um endereo IP. Basta um simples e (and) bit a bit
entre o netmask e o endereo para a tarefa ser completada. Por esta tarefa ser realizada nos roteadores a cada pacote,
para se decidir qual ser a porta de destino, a eficincia importante.
Entretanto, alguns sistemas usam uma grafia distinta desta, indicando o nmero de bits componentes do endereo de
rede, por exemplo 200.131.56.207/24, onde o 24 aps o endereo IP serve para indicar que os 16 primeiros bits do
endereo referem-se a rede e, portanto, que os 8 restantes so referentes ao endereo da mquina.
Entre a rede local e a de longa distncia
A camada fsica possui um tipo prprio de endereamento, portanto se faz necessria uma converso do endereo IP
para o protocolo utilizado nesta camada.
Referncias
[1] LSM (http:/ / lsm. dei. uc. pt/ ib/ comunicacoes/ redes/ bridge. html), Acessado em 9/8/10.
[2] Devmedia (http:/ / www.devmedia.com. br/ post-17494-Como-funciona-o-protocolo-IP. html), Acessado em 9/8/10.
[3] [3] [mesonpi.cat.cbpf.br/naj/tcpipf.pdf Mesonpi], pgina 8. Acessado em 9/8/10.
[4] Vas-y (http:/ / www. vas-y. com/ dicas/ navegar/ internet/ 03. html), Acessado em 9/8/10.
[5] [5] [mesonpi.cat.cbpf.br/naj/tcpipf.pdf Mesonpi], pgina 9. Acessado em 9/8/10.
Camada de transporte
26
Camada de transporte
Introduo Camada de Transporte
A camada de transporte, dentro do modelo OSI, localiza-se abaixo da camada de aplicao e acima da camada de
rede (Internet). A principal finalidade dessa camada manter a comunicao entre dois hosts, ou seja, ela
responsvel pela transferncia fim-a-fim, de maneira eficiente, confivel e econmica de dados entre uma mquina
de origem e uma mquina de destino. A camada de transporte prev dois protocolos, o primeiro deles o TCP
(Transmission Control Protocol protocolo de controle de transmisso), que um protocolo orientado a conexes
confiveis, ou seja, ele permite a entrega sem erros de dados de uma determinada mquina a outra mquina da rede.
O outro protocolo, o UDP (User Datagram Protocol - protocolo de datagramas do utilizador) corresponde a um
protocolo no orientado a conexo, ou seja, sem confiabilidade, j que no h garantia de envio/recebimento de
pacotes.
O servio de transporte mantm um relacionamento muito prximo com o destinatrio do servio. Portanto, deve ser
fcil de usar. Podemos relacionar algumas primitivas que os provedores deste tipo de servio devem adotar, de modo
a oferecer um servio orientado a conexo com um mnimo de funcionalidade (em geral, basta permitir requisies
de estabelecimento, uso e encerramento de uma conexo). Primitivas: LISTEN, CONNECT, SEND DATA,
RECEIVE e DISCONNECT.
Uma ilustrao do servio provido pela camada de trasporte
[1]
. Observe a implementao de um servio de
transporte confivel de dados sobre uma camada no confivel.
Multiplexao e Demultiplexao
Enquanto que a camada de rede prov uma comunicao host a host, a camada de transporte prov uma comunicao
processo a processo. Para realizar essa ampliao do servio provido pela camada de redes, a camada de transporte
utiliza o conceito de portas, que , na verdade, um nmero que identifica qual processo dever se encarregar da
informao trazida por aquele pacote. Na prtica, o aplicativo informa ao sistema operacional que estar escutando
uma determinada porta e ento todos os pacotes daquele protocolo (UDP ou TCP) sero repassados quele processo.
O mtodo de receber os dados do processo utilizando uma determinada porta, colocar um cabealho e enviar a um
determinado processo de outro host chamado de multiplexao.
O mtodo de receber um pacote vindo de outro host e repassar as informaes ao processo correto chamado de
demultiplexao.
Abaixo segue uma ilustrao do funcionamento da Multiplexao/Demultiplexao, na qual dois clientes usam o
mesmo nmeros de porta destino (80) para se comunicar com a mesma aplicao do servidor web.
Protocolo UDP
O protocolo UDP um dos protocolos utilizados pela camada de transporte. A idia central do protocolo receber os
dados de um processo e entregar ao processo de destino. No leva em considerao o congestionamento da rede, ou
uma entrega confivel dos dados, apenas a multiplexao e demultiplexao.
A grande vantagem do UDP em relao ao TCP (outro protocolo da camada de transporte) est na velocidade de
transmisso, relevando a confiabilidade na entrega dos pacotes. Nas aplicaes onde velocidade mais importante
do que a ordem em que os pacotes so recebidos, como jogos, vdeos e msicas, o UDP prefervel.
Observe o Cabealho UDP
[2]
, podemos notar a tamanha simplicidade deste protocolo, bem como uma ilustrao da
idia do UDP, que a de transmitir (busca pelo tempo real, velocidade), independentemente da chegada ou no dos
pacotes no destinatrio (sem garantia de envio/ recebimento).
Camada de transporte
27
Protocolo TCP
O protocolo TCP outro protocolo utilizado pela camada de transporte. A idia central deste protocolo prover
confiabilidade no transporte dos dados, no deixando de lado o trfego na rede (controle de congestionamento) e a
multiplexao e demultiplexao.
A grande vantagem do TCP em relao ao UDP est na confiabilidade em que os dados so entregues ao remetente.
Este protocolo prov mecanismos que garantem que todos os dados repassados a camada de aplicao no esto
corrompidos. Desta forma um host A pode enviar um arquivo ao host B tendo a certeza de que o arquivo, caso seja
entregue camada de aplicao do host B, est ntegro.
O Tcp orientado a conexo, isto , um host estabelece uma conexo com outro host, de forma que um pode enviar
dados para o outro em modo full duplex.
O TCP, portanto, prov transferncia confivel de dados entre processos rodando em sistemas finais. A comunicao
entre os dois aplicativos se d como se eles estivessem fisicamente interligados por um cabo, embora ambos possam
estar a milhares de quilmetro de distncia um do outro.
Observe uma representao do cabealho TCP
[3]
, uma simples demonstrao do propsito do TCP. Percebe-se a
complexidade de um pacote TCP, o que reflete toda a confiabilidade e garantia oferecidos por este protocolo. O TCP
no est preocupado em apenas enviar os pacotes (velocidade, tempo real), mas sim dar a garantia ao destinatrio de
que o pacote enviado pelo remetente tenha sido entregue.
Referncias
1. 1. James F. Kurose e Keith W. Ross, Redes de Computadores e a Internet - Uma abordagem Top-Down
2. 2. Andrew S. Tanenbaum, Redes de Computadores
Referncias
[1] http:/ / gridra. files.wordpress.com/ 2008/ 10/ transporte1. jpg
[2] http:/ / www. ccuec. unicamp.br/ treinamento_int2004/ tcpip/ udp-packet. gif
[3] http:/ / www. ralphmcs.eti.br/ midia/ 19990910_arquivos/ image019. gif
Multiplexao e demultiplexao
28
Multiplexao e demultiplexao
Situada entre as camadas de aplicao e de rede, a camada de transporte prov uma comunicao processo a
processo. Para tal, a camada de transporte utiliza o conceito de portas, que , na verdade, um nmero que identifica
qual processo dever se encarregar da informao trazida por aquele pacote. Na prtica, o aplicativo informa ao
sistema operacional que estar escutando uma determinada porta e ento todos os pacotes daquele protocolo (UDP
ou TCP) sero repassados quele processo. A Demultiplexao a entrega dos dados de um segmento da camada de
transporte porta correta. "O trabalho de reunir, no hospedeiro de origem, pores de dados provenientes de
diferentes portas, encapsular cada poro de dados com infomaes do cabealho (que mais tarde sero usadas na
demultiplexao) para criar segmentos, e passar esses segmentos para a camada de rede denominado
multiplexao".(KUROSE; ROSS, 2006, p. 148).
Multiplexao e Demultiplexao na camada de transporte
Sabe-se que o servio de multiplexao e o de demultiplexao de extrema importncia para todas as redes de
computadores. No entanto, aqui ser enfatizado seu uso na camada de transporte.
A camada de transporte, em um hospedeiro de destino, recebe segmentos da camada de rede que fica abaixo dela
(isso acontece, analisando uma abordagem top-down), a qual tem o dever de entregar todos os dados desses
segmentos ao processo da camada de aplicao, que tambm roda nesse hospedeiro. Porm, o que acontece na
realidade que a camada de transporte no entrega os segmentos a um processo, mas sim em um socket (porta)
intermedirio. Onde cada socket tem um identificador exclusivo, que depende de o socket ser TCP ou UDP.
O direcionamento a uma porta correta de um segmento, feito a partir da anlise de um conjunto de campos que se
localiza no segmento. Nesse campo encontra-se a porta destinatria, a qual o segmento ser direcionado pela camada
de transporte. Esse direcionamento a porta correta denominado de demultiplexao.
Define-se multiplexao como sendo a tarefa de reunir pedaos de dados, vindos de diferentes portas (no hospedeiro
de origem), encapsulando esses pedaos com o conjunto de campos para criar segmentos e entreg-los a camada de
rede. A transferncia de dados pode ser feita por: UDP (no orientada para conexo) ou TCP (orientada para
conexo). Caso seja feita por UDP, o socket UDP identificado por uma tupla com dois elementos: endereos IP de
destino e um nmero de porta de destino; por outro lado seja feita por TCP, o socket TCP identificado por uma
tupla com quatro elementos: endereo IP de origem, nmero da porta de origem, endereo IP de destino e nmero da
porta de destino.
Multiplexao/demultiplexao no orientada para conexo
A porta UDP pode ser criada a partir de uma implementao, na qual pode se designar um nmero de porta
especfico ou mesmo deixar que seja designado um nmero de porta ao socket pela camada de transporte.
Logicamente isso, depender da escolha do implementador. Em geral, o lado servidor de uma aplicao designa um
nmero de porta especfico, enquanto o lado cliente da aplicao deixa essa escolha livre e transparente para a
camada de transporte.
Com isso, entende-se que mesmo que dois ou mais segmentos tenham endereos IP ou nmero de porta fonte
diferentes eles podero ser direcionados ao mesmo processo de destino, caso tenham o mesmo nmero IP e mesmo
nmero de porta de destino pela mesma porta de destino.
Multiplexao e demultiplexao
29
Transporte Orientado Para Conexao: TCP
O protocolo TCP , sem dvidas, um dos mais importantes protocolos utilizados atualmente. Esse protocolo fornece
um servio de entrega de pacotes confivel e orientado para conexo, ou seja, todos os aplicativos que utilizam o
TCP como protocolo de transporte estabelecem uma conexo antes de comear a trocar dados, alm de contar com
servios como deteco de erros, retransmisses, reconhecimento cumulativo, temporizadores e campos de
cabealho para nmeros de seqncia e de reconhecimento.
Ao contrario do UDP para mandar dados atravs do TCP necessrio a abertura de uma conexo fim-a-fim, ou seja
o TCP suporta comunicao apenas entre dois hosts por vez. Uma sesso TCP inicializada atravs de um processo
conhecido como 'three-way handshake', que consiste em trs pacotes de estabelecimento de conexo, sendo um
pacote SYN enviado pelo cliente que consiste em um segmento TCP especial que no contem nenhum dado da
camada de aplicao mas com o flag SYN ativado. Alm disso o cliente escolhe aleatoriamente um numero de
seqncia inicial e coloca esse nmero no campo de numero de seqncia do segmento SYN inicial. Quando o
servidor recebe o segmento SYN ele aloca buffers e variveis TCP necessrias a conexo e envia um segmente de
aceitao de conexo ao TCP cliente. Esse segmento chamado SYNACK. Ao receber o segmento SYNACK o
cliente tambm reserva buffers e variveis para a conexo. O cliente ento envia ao servidor mais um segmento que
reconhece o segmento de confirmao da conexo do servidor, o bit SYN ajustado para 0 e a conexo j esta
estabelecida. Esse processo sincroniza os nmeros de seqncia e oferece informaes de controle necessrias para
estabelecer uma conexo virtual entre os dois hosts. Depois de concludo o 'tree-way handshake' inicial, os
segmentos so enviados e confirmados de forma seqencial entre os hosts remetente e destinatrio. Um processo de
handshake semelhante usado pelo TCP antes de fechar a conexo para verificar se os dois hosts acabaram de enviar
e receber todos os dados.
O TCP recebe os dados de aplicao e processa esses dados como um conjunto de bytes, os mesmos so agrupados
em segmentos que o TCP numera em seqncia para a entrega. Apos receber os dados de aplicao o TCP direciona
esses dados para um buffer de envio da conexo (reservado durante o estabelecimento da conexo) e vai criando
segmentos e enviando para a rede. A quantidade mxima retirada do buffer e colocada em um segmento limitada
pelo MMS (tamanho mximo do segmento).
O TCP utiliza o conceito de portas, que permite que vrios programas estejam em funcionamento, ao mesmo tempo,
no mesmo computador, trocando informaes com um ou mais servios/servidores.
Algumas das principais caractersticas do TCP e que faz com que ele seja tao utilizado so citadas a seguir:
Garante a entrega de datagramas IP: Esta talvez seja a principal funo do TCP, ou seja, garantir que os pacotes
sejam entregues sem alteraes, sem terem sido corrompidos e na ordem correta. O TCP tem uma srie de
mecanismos para garantir esta entrega.
Garante o seqenciamento adequado e entrega ordenada de dados segmentados: Esta caracterstica refere-se a
funo de dividir grandes arquivos em pacotes menores e transmitir cada pacote separadamente. Os pacotes
podem ser enviados por caminhos diferentes e chegar fora de ordem. O TCP tem mecanismos para garantir que,
no destino, os pacotes sejam ordenados corretamente, antes de serem entregues ao programa de destino.
Verifica a integridade dos dados transmitidos: Usando clculos de soma de verificaao o TCP faz verificaes
para garantir que os dados no foram alterados ou corrompidos durante o transporte entre a origem e o destino.
Envia mensagens positivas dependendo do recebimento bem-sucedido dos dados. No destino, o TCP recebe os
pacotes, verifica se esto OK e, em caso afirmativo, envia uma mensagem para a origem, confirmando cada
pacote que foi recebido corretamente. Caso um pacote no tenha sido recebido ou tenha sido recebido com
problemas, o TCP envia uma mensagem ao computador de origem, solicitando uma retransmisso do pacote.
Com esse mecanismo, apenas pacotes com problemas tero que ser reenviados, o que reduz o trfego na rede e
agiliza o envio dos pacotes.
Oferece um mtodo preferencial de transporte de programas que devem usar transmisso confivel de dados
baseada em sesses: Ou seja, o TCP muito mais confivel do que o UDP e indicado para programas e servios
Multiplexao e demultiplexao
30
que dependam de uma entrega confivel de dados.
Transporte No Orientado Para Conexao: UDP
O UDP um protocolo usado para o transporte rpido de dados entre hosts TCP/IP. Porm o UDP no fornece
garantia de entrega e nem verificao de dados. De uma maneira simples, podemos dizer que o protocolo UDP
manda os dados para o destino sem a necessidade de apresentao entre as unidades remetentes e destinatria antes
de enviar o segmento, porem se vai chegar, e sem erros, impossvel saber (o UDP fornece verificao de erro
porm nada faz para corrigir o erro, apenas informa a aplicao que determinado pacote corrupto). O UDP no
garante a entrega ou verifica o seqenciamento para qualquer pacote. Uma outra soluo bastante utilizada
ultimamente a insero da confiabilidade na prpria aplicao (adicionando mecanismos de reconhecimento e de
transmisso embutidos na aplicao) permitindo assim que ela tire proveito de ambas as alternativas, ou seja, os
processos de aplicao se comunicam de maneira confivel sem ter que se sujeitar as limitaes da taxa de
transmisso impostas pelo mecanismo de controle de congestionamento impostas pelo TCP.
Alguns dos principais motivos pelo qual o UDP pode ser prefervel so:
Melhor controle no nvel de aplicao sobre quais dados so enviados e quando: como ele no possui controle de
congestionamento (como ocorre no TCP), no ocorre atraso no envio do pacote. No possui o servio de
confirmao de recebimento que pode atrasar a transmisso se alguns pacotes forem perdidos, e compatvel com
aplicaes de tempo real onde a velocidade mais importante que a confiabilidade na entrega.
No h estabelecimento de conexo: O UDP apenas envia os dados sem perder tempo tentando abrir conexes
(como ocorre no TCP) esse um dos motivos pelo qual DNS roda sobre UDP.
No h estados de conexo: Usado pelo TCP para garantir a entrega confivel de dados (esses estados inclui
buffers de envio e recebimento, parmetros de controle de congestionamento e etc), por isso um servidor com
uma aplicao especifica pode suportar um numero muito maior de clientes ativos quando a aplicao roda sobre
UDP ao invs de TCP.
Pequena Sobrecarga de Cabealho de Pacote: O TCP possui 20 bytes de sobrecarga de cabealho enquanto o
UDP so possui 8 bytes.
Algumas das aplicaes mais importantes que utilizam o UDP so:
Atualizao de tabelas de roteamento com protocolo RIP.
Transferir dados de gerenciamento de rede, que normalmente funcionam quando a rede esta sobrecarregada e
difcil conseguir transferncia confivel devido ao controle de congestionamento.
O DNS tambm roda sobre o UDP.
bastante utilizado em aplicaes multimdia como telefone por internet, vdeo conferncia em tempo real e
recepo de udio e vdeo armazenados.
Mecanismos de Controle de Congestionamento
Podemos distinguir mecanismos de controle de congestionamento conforme a camada de rede oferea ou no
assistncia explcita camada de transporte, com finalidade de controle de congestionamento. Sabendo que 'Janela
de Congestionamento' um parmetro que impe uma limitao a taxa a qual o remetente pode enviar trfego para
dentro da rede, (especificamente a quantidade de dados no reconhecidos em um hospedeiro no pode exceder o
mnimo da janela de congestionamento) podemos dividir o controle de congestionamento em dois modos:
Controle de congestionamento fim-a-fim: Nesse mtodo a camada de rede no fornece nenhum suporte explcito
camada de trasporte, e o congestionamento da rede intuda pelos sistemas finais com base na observao do
comportamento da rede (perda de pacotes). Esse o metodo utilizado pelo protocolo TCP.
Controle de congestionamento assistido pela rede: com esse mtodo os roteadores fornecem realimentao de
informaes ao remetente a respeito do congestionamento da rede. O controle de congestionamento assistido pela
Multiplexao e demultiplexao
31
rede tem dois modos de operao. So eles:
Realimentao Direta: Pacote enviados de um roteador da rede a um remetente (como se fosse um pacote de
congestionamento dizendo: estou congestionado)
Realimentao Indireta: Ocorre quando um roteador marca/atualiza um campo em um pacote que esta indo do
remetente ao destinatrio para indicar o congestionamento e com isso o destinatrio informa ao remetente
sobre o congestionamento. Esse mtodo possui a desvantagem de perder, no mnimo, o tempo de ida e volta de
um pacote, para avisar ao remetente sobre o congestionamento.
Servidores Web e o TCP
Este um cenrio bastante interessante para se entender os princpios da multiplexao e demultiplexao no TCP.
Observe uma ilustrao
[1]
de uma situao tpica, onde vrios clientes se conectam a um servidor WEB atravs da
porta 80.
Em virtude de o TCP ser identificado por uma tupla de 4 (quatro) elementos, todas as conexes sero corretamente
multiplexadas/demultiplexadas.
Os pacotes que saem dos hospedeiros clientes possuem sempre o IP de destino B e porta de destino 80. Isto
exatamente o esperado em se tratando de servidores WEB.
Consideremos primeiramente o processo cliente (navegador) rodando no hospedeiro A. Apesar de este processo ter
escolhido a mesma porta de origem do processo rodando em C (porta origem x), os pacotes de A e C sero
corretamente demultiplexados, pois o servidor WEB ainda pode diferenciar os pacotes devido ao campo IP de
origem. Analogamente, tambm no haver problema na identificao de pacotes de duas aplicaes rodando no
mesmo hospedeiro cliente (como ocorre em C). Os pacotes sero diferenciados atravs do nmero da porta de
origem, que deve ser diferente para cada um dos processos(neste exemplo, temos x e y). Uma breve concluso que
o servidor identifica os pacotes pelo campo 'IP de origem', e duas aplicaes no mesmo cliente se diferenciam pela
campo 'porta de origem'.
O servidor WEB, por sua vez, tem duas abordagens para gerenciar estas conexes. Ele pode, a cada nova requisio,
criar um novo thread (inserido em um nico grande processo), ou criar um novo processo. Threads so mais
eficientes, uma vez que exigem/alocam menos recursos de hardware para serem executados. Observe que nas duas
abordagens, o servidor designar um socket nico a cada thread/processo, que na prtica, designa a porta pela qual os
dados passam da aplicao camada de transporte.
Algoritimo de Controle de Congestionamento
O principal objetivo do controle de congestionamento reduzir a taxa em que um remetente envia pacotes na rede.
Normalmente isso conseguido diminuindo o tamanho da janela de congestionamento de todos os remetentes
quando a rede esta congestionada (ocorre perdas de pacotes).
Alguns dos principais algoritimos usados no controle de congestinamento so:
Diminuio Multiplicativa: Nessa abordagem o TCP diminui a janela de congestionamento pela metade toda vez
que houver uma nova perda de pacotes. O valor da janela de congestionamento pode atingir um valor mnimo
igual a 1 MSS.
Aumento Aditivo: Esse mtodo utilizado toda vez que no h congestionamento, o principio desse mtodo que
se nenhum congestionamento for detectado, provavelmente h largura de banda disponvel e que pode ser usada
adicionalmente pelo TCP. Nessas circunstancias o TCP aumenta sua janela de congestionamento lentamente para
verificar se h largura de banda adicional disponvel no caminho fim-a-fim. Isso conseguido incrementando a
janela de congestionamento cada vez que um novo reconhecimento recebido tendo como meta aumentar a
mesma de 1 MSS a cada tempo de viagem de ida e volta.
Multiplexao e demultiplexao
32
Partida Lenta: No inicio de uma conexo o TCP inicia o valor da janela de congestionamento em 1 MSS. Nesse
caso a taxa de aumento da mesma aumenta exponencialmente, duplicando seu valor de janela de
congestionamento a cada RTT (Round Trip Time). Esse aumento exponencial continua at ocorrer o primeiro
evento de perda.
Referncias
[1] http:/ / www. decom. ufop. br/ prof/ tiago/ disciplinas/ 2006/ sistDist/ trabalhos/ httpXtcp_arquivos/ Image1. gif
KUROSE; ROSS. Redes de Computadores e a Internet: Uma abordagem top-down. So Paulo: Pearson Addison
Wesley, 2006
Protocolo UDP
Introduo
O protocolo de transporte UDP foi referenciado pela RFC 768 em 28 de agosto de 1980. O UDP, ao contrrio do que
muitos crem, no um protocolo anterior ao TCP. Inicialmente, no havia uma separao entre a camada de rede e
de transporte. Os protocolos TCP e IP eram referenciados como um nico protocolo. Entretanto, medida que se
percebia as limitaes do protocolo para certas aplicaes, as especificaes foram mudando. Na verso 3(1978) do
TCP/IP j haviam indcios de separao entre os protocolos, e na verso 4(1980), h a separao total entre eles. Por
isso o protocolo IP comea na verso 4.
O UDP nasce ento para servir como uma interface entre o IP e a camada de aplicao. Sua RFC possue apenas trs
pginas e sua meta ser um protocolo simples e rpido. Nela tambm, definido que o UDP assume que est
rodando sobre o protocolo IP.
Em relao ao IP, adere poucos servios, entre eles a verificao de erros(Checksum), suporte multiplexao e
demultiplexao e suporte a broadcast e multicast. Demais servios, como entrega confivel de dados e controle de
congestionamento podem ser implementados pela camada de aplicao, se o programador achar necessrio.
Comparao entre TCP/IP e UDP
Melhor controle no nvel da aplicao
Quando um processo passa dados, o UDP empacota e repassa para a camada de rede. No caso do TCP, o remetente
limitado pelo controle de congestionamento. Alm disso, o TCP reenvia os segmentos at a recepo ser conhecida.
No h estabelecimento de conexo
O TCP usa a apresentao de trs vias antes de transferir dados. O UDP simplesmente os envia, garantindo maior
velocidade. Por esse motivo o DNS roda sobre UDP. J no caso do HTTP, para maior preciso na apresentao de
pginas de texto, por exemplo, usado o TCP.
Protocolo UDP
33
No h estados de conexo
O TCP mantm o estado da conexo: buffers de envio e recebimento, parmetros de controle de congestionamento,
parmetros numricos de seqncia e de reconhecimento. O UDP no mantm estado, dessa forma, suporta mais
clientes ativos.
Pequena sobrecarga de cabealho
Alm dos dados de cada segmento, apresentam as seguintes sobrecargas de cabealho de pacote: TCP = 20 bytes,
UDP = 8 bytes.
Estrutura do Segmento UDP
O segmento UDP contm quatro campos de cabealho com 16bts cada, como mostrado no figura abaixo. A porta da
fonte um campo opcional que permite ao destinatrio identificar o processo no remetente (demultiplexao) e a
porta de destino identifica o processo de destino do segmento UDP. O campo da mensagem contm os dados da
aplicao que est usando o segmento. Vamos observar mais detalhadamente o campo Checksum.
+ Bits 0 - 7 8 - 15 16 - 23 24 - 31
0 Source address
32 Destination address
64 Zeros Protocol UDP length
96 Source Port Destination Port
128 Length Checksum
160 Data
Protocolo UDP
34
Checksum
Effect of a typical checksum function (the Unix cksum utility).
Checksum um campo de 16bts
utilizado na deteco de erros
fim-a-fim em UDP. Embora o UDP
fornea verificao de erros, ele no
recupera esse erro. Algumas
implementaes de UDP simplesmente
descartam o segmento danificado,
outras passam o segmento errado
aplicao acompanhado de algum
aviso.
O principio de funcionamento do
Checksum muito simples. Do lado de
remetente os dados so organizados em
pequenos blocos de 16bits. Realiza-se
a soma desses blocos e sobre o
resultado feito o complemento de um
que ento armazenado no campo do
Checksum do segmento UDP. No lado
do destinatrio o refaz-se o calculo
feito no remetente e o resultado ento
somado ao Checksum. Se o resultado
for zero ento considera-se que no
houve erros no segmento
Vale lembrar que o Checksum um campo opcional. Sendo assim, entende-se do lado do destinatrio que se o
Checksum estiver em zero, significa que a verificao no ocorrer. Contudo, possvel no lado do remetente que o
resultado do complemento de um da soma dos bits enviados pode ser zero. Neste caso, se a aplicao estiver usando
Checksum ento todos os 16bts sero marcados em um.
Checksums Simples
Os algortmos mais simples de checksum quebram os dados em "palavras" com um nmero fixo de bits, e depois
conta o bit do "exclusive or" de todas essas palavras. O resultado muda quando um nico bit dos dados est ao
contrrio, e tambm quando dois ou mais bits em posies diferentes da palavra, esto trocados. Porm, esse
algortimo de checksum no muito sensvel a erros comuns como:
Mudar a ordem das palavras de dados;
Inserir ou deletar palavras com todos os bits zerados;
Trocar um nmero mpar de bits na mesma posio da palavra.
Protocolo UDP
35
Checksums Avanados
Alguns algortmos mais sofisticados com verificao reduntante, incluindo os algortimos como:Fletcher's checksum,
Adler-32, and cyclic redundancy checks (CRCs), e eles so construdos para enderear essas fraquezas atravs da
considerao nao s o valor de cada byte, mas tambm a sua posio. O custo dessa habilidade de detectar mais tipos
de erros uma maior complexidade computacional ao fazer a verificao redundante de valores.
O Objetivo dos algortimos de checksum detectar modifiaes acidentais como corrompimento de dados gravados
ou erros de comunicao de canais Eles no so construdos para detectar corrompimentos intencionais por agentes
maliciosos. Por isso, muitos algortimos de checksum pode ser facilmente invertidos, no sentido de que algum pode
facilmente modificar os dados para preservar o seu checksum. Para se proteger de modificaes maliciosas, pode-se
usar um hash de criptografia.
Um exemplo de Algortimos de Checksum
Um exemplo de Checksum Simples:
Dados 4 bytes de dados: 0x25, 0x62, 0x3F, 0x52 (qualquer outra quantidade de bytes tambm vlida).
Passo 1: Adicionando-se todos os bytes juntos temos 0x118.
Passo 2: Retira-se o carry nibble para obter 0x18.
Passo 3: Calcule o complemento de doisde 0x18 e teremos 0xE8. Esse o byte de checksum.
Passo 4: Para testar o byte checksum simplesmente o adicione ao grupo original de bytes. O resultado dever ser
0x100.
Passo 5: Retire o carry nibble novamente resultando em 0x00. O resultado 0x00 (0 em decimal), indica que no
houve erro (todavia um erro indetectvel pode ter ocorrido).
Quando Utilizar o Protocolo UDP
Fluxo de dados em tempo real:
Multicasting:
Broadcasting;
E no geral, servios que admitem certa perda de dados.
Exemplos de Servios que usam UDP
Youtube, e outros servios de streaming, tanto de udio, quando de vdeo;
P2P;
Skype, e inmeros servios de VOIP.
Transmisso de dados confivel
36
Transmisso de dados confivel
Transferncia confivel de dados
Dentre todos os problemas que existem para a implementao de redes de computadores, podemos dizer que a
tranferncia confivel de dados um dos principais. Essa tarefa ainda mais complexa, pois a implementao do
Protocolo de tranferncia confivel de dados feita em um canal confivel, porm possui a camada de rede logo
abaixo: um canal no confivel. Por exemplo: o TCP um protocolo de tranferncia de dados confivel
implementado sobre uma camada de rede fim-a-fim no confivel (IP).
Tranferncia Confivel de dados
[1]
(Fonte: Rede de Computadores e a Internet, 3 Edio, James F. Kurose)
A figura do link acima ilustra como implementado o servio de tranferncia confivel de dados. Os pacotes so
enviados do remetente ao destinatrio vindo das camadas superiores at as inferiores. O protocolo de tranferncia
confivel de dados implementado na camada de transporte. rdt a sigla para Reliable Data Transfer que significa
transferncia confivel de dados. Na figura, rdt_send() chamada vinda da camada superior, (ex., pela aplicao).
Passa dados para entregar camada superior receptora. udt_send() chamada pela entidade de transporte, para
transferir pacotes para o receptor atravs do canal no confivel. rdt_rcv() chamada pela entidade da camada
inferior quando o pacote chega ao lado receptor do canal e deliver_data() chamada pela entidade de transporte para
entregar dados para camada superior.
Consideraremos apenas o caso de transferncia unidirecional de dados, ou seja, do lado do remetente ppara o lado do
destinatrio. Os diagramas utilizados para a exemplificao dos protocolos utilizam mquinas de estados finitos
(FSM) para especificar o protocolo transmissor e o receptor. definido que estado quando neste estado o
prximo estado fica unicamente determinado pelo prximo evento.
FSM
[2]
A figura acima ilustra a abordagem FSM.
rdt1.0: Transferncia confivel de dados sobre canais perfeitamente confiveis
Primeiro considerado um caso mais simples, na qual nao h erro de bits na transmisso e tambm no h perdas de
pacotes. As FSMs so separadas para transmissor e receptor na qual transmissor envia dados para o canal subjacente
receptor l os dados do canal subjacente. Como no a erro de bits ou perdas de pacotes o papel do remetente
simplesmente aguardar o pedido de envio da camada superior e enviar o pacote, voltando ao seu estado de espera de
nova solicitao. O lado do destinatrio fica em estado de espera de chegada de pacotes da camada inferior, recebe
os dados, extrai e os envia para a camada superior.
RDT1.0
[3]
A figura acima ilustra a especificao da FSM do protocolo em questo.
rdt2.0: Canal com erros de bit
J o rdt2.0 prev envio de dados que podem chegar com erros ou comrrompidos. Para solucionar tal problema,
implementado o conceito de resposta pelo destinatrio ao remetente. Dessa forma o protocolo usa como resposta
reconhecimento positivo (ACK) e reconhecimento negativo (NAK). Nos reconhecimentos (ACKs)o destinatrio
avisa explicitamente ao remetente que o pacote foi recebido corretamente e nos reconhecimentos negativos (NAKs)o
destinatrio avisa explicitamente ao remetente que o pacote tem erros. Quando o remetente recebe um NAK ele faz o
reenvio do pacote.
RDT2.0
[4]
A figura acima ilustra a especificao da FSM do protocolo em questo.
Transmisso de dados confivel
37
rdt2.1: Soluo para ACKs/NAKs perdidos
O rdt2.1 uma verso que soluciona um problema que pode acontecer no rdt2.0 e na qual este nao soluciona.
Trata-se do sequenciamento dos pacotes e dos reconhecimentos positivos e negativos emitidos pelo destinatrio.
Dessa forma evitado a tranferncia desnecessria de arquivos (duplicidade) e confuses em determinar para qual
pacote foi enviado o reconhecimento.
RDT2.1 REMETENTE
[5]
RDT2.1 DESTINATRIO
[6]
As figuras acima ilustram a especificao da FSM do protocolo em questo. Notamos que agora o remetente e o
destinatrio possui duas vezes a mais o nmero de estados.
rdt2.2: Uso somente de ACKs
O rdt2.2 possui a mesma funcionalidade do rdt2.1, porm usando somente ACKs. Ao invs de enviar NAK, o
destinatrio envia um ACK para o ltimo pacote recebido sem erro incluindo explicitamente o nmero de seqncia
do pacote sendo reconhecido. O recebimento de ACKs duplicados no remetente resulta na mesma ao do NAK, ou
seja, a retransmisso do pacote corrente. Dessa forma nota-se uma maior simplicidade no FSM com relao ao rdt2.1
Protocolo rdt3.0
O que vimos at agora foi:
Rdt1.0: um protocolo sobre um canal perfeitamente confivel;
Rdt2.2: um protocolo mais real, onde h erro de bits.
Porm, h uma outra situao que normalmente ocorre em uma transferncia de arquivos e que precisa ser tratada: a
perda de pacotes. Implementaremos ento um mecanismo para detectar um pacote perdido e retransmiti-lo. Tal
mecanismo consiste da utilizao de um temporizador de contagem regressiva que ser acionado ao enviar cada
pacote do remetente ao destinatrio.
Uma ilustrao do mecanismo apresentado a seguinte:
um pacote pkt0 enviado ao remetente, e o temporizador relativo esse pacote acionado.
pkt0 chega ao destinatrio e este envia o ACK0.
se ACK0 chegar ao remetente, o temporizador de pkt0 parado e ser enviado o pkt1. Porm, caso o
temporizador chegue a 0 antes do ACK0 ser recebido, pkt0 reenviado, e os passos anteriores so novamente
repetidos.
Utilizando o temporizador, nem o remetente nem o destinatrio conseguem identificar o que houve com o pacote
enviado. Ele pode ter sido perdido, a resposta ACK pode ter sido perdida, ou simplesmente houve lentido na rede, o
que fez com que o temporizador zerasse antes do recebimento do pacote ou do ACK. A ltima situao resulta em
pacotes duplicados, porm o protocolo rdt2.2 j corrige tal problema.
Transferncia confivel de dados utilizando paralelismo
Com a utilizao do protocolo rdt3.0 j so corrigidos os principais problemas que ocorrem em uma transferncia de
dados. Resta-nos agora melhorarmos seu desempenho.
Por ser do tipo pare-e-espere o protocolo rdt3.0 envia apenas um pacote por vez, e s envia o prximo quando
receber a confirmao de recebimento do mesmo. Introduziremos ento o conceito de paralelismo. Sero enviados
vrios pacotes sequencialmente(apesar do nome indicar, os pacotes no so enviados ao mesmo tempo), mesmo sem
a recepo dos pacotes anteriores. Isso implica em maiores nmeros de seqncia e na utilizao de buffers do lado
remetente, e tambm do lado destinatrio no caso da repetio seletiva, para mais de um pacote.
Transmisso de dados confivel
38
Sero apresentados dois protocolos que utilizam a idia de paralelismo,Go-Back-N e Repetio Seletiva.
Protocolo Go-Back-N
Para solucionar os problemas causados pelo comportamento pare e espere dos protocolos anteriores, foi
desenvolvido o protocolo Go-Back-N. Este permite o envio de um determinado nmero de pacotes sem que os
anteriores tenham sido reconhecidos. Para um melhor entendimento vamos analisar a seguinte figura:
definido um nmero de pacotes que podem ser enviados sem que seja necessrio aguardar pelo reconhecimento de
cada um deles. Esta quantidade de pacotes pode ser vista como uma "janela". Na figura, os pacotes pretos so
pacotes que foram corretamente enviados e j receberam reconhecimento (receberam o ACK do destinatrio). Os
pacotes azuis so pacotes que j foram enviados, mas ainda no foram reconhecidos, e os pacotes verdes so os
prximos pacotes a serem enviados, j que ainda esto dentro dos limites da janela. Os pacotes vermelhos esto fora
do limite da janela, logo no podem ser enviados ainda.
Nextseqnum o nmero de sequncia do prximo pacote a ser enviado. O pacote base o pacote no reconhecido
com nmero de sequncia mais antigo. Quando este pacote for reconhecido, a janela ir se deslocar para a direita no
espao de nmeros de sequncia dos pacotes, permitindo o envio de outros pacotes. A janela "desliza", e com isso o
protocolo Go-Back-N tambm denominado protocolo de janela deslizante.
O lado remetente deve ser capaz de responder a 3 situaes:
Dados recebidos da camada de cima
Antes de criar e enviar um pacote, o protocolo deve verificar se h espao na janela. Se no houver, os dados sero
devolvidos, podendo ser enviados apenas quando um espao for liberado;
Recebimento de um ACK
Receber um ACK com nmero de sequncia n indica ao remetente que todos os pacotes com nmero de sequncia
at n (inclusive) foram recebidos corretamente pelo destinatrio, e assim a janela desliza. O pacote com nmero de
sequncia n+1 se torna a base;
Esgotamento de temporizao
usado um temporizador para o pacote base. Se um ACK chegar antes do temporizador se esgotar, ele reiniciado
para o pacote seguinte. Se ele se esgotar, todos os pacotes que foram enviados mas que ainda no foram
reconhecidos so reenviados.
O lado destinatrio, ao receber um pacote com nmero de sequncia n, que est na ordem esperada, envia um ACK
correspondente e entrega os dados camada superior. Caso o pacote recebido no esteja na ordem, ele ser
descartado e ser reenviado um ACK para o ltimo pacote recebido corretamente.
Esta caracterstica garante que os pacotes sejam recebidos em ordem, mas descarta pacotes recebidos corretamente.
Se por um lado isto gera um prejuzo na necessidade de retransmisso de dados (que ainda podem ser perdidos,
gerando mais retransmisses), existe uma vantagem importante nesta opo: a simplicidade nos buffers do
destinatrio. No ser preciso armazenar pacotes fora de ordem, mas apenas o nmero de sequncia esperado para o
prximo pacote.
As figuras a seguir, retiradas do livro Computer Networking: A Top-Down Approach Featuring the Internet, de
James F. Kurose e Keith W. Ross, 3 edio, mostram as FSM do lado remetente e do destinatrio, e a operao
geral do protocolo, respectivamente.
Transmisso de dados confivel
39
Repetio Seletiva
O protocolo o Go-Back-N ou (GBN) resolveu um problema de vital importncia para a transferncia de dados, que
a questo do aproveitamento e da utilizao do canal. Com o GBN h envio de mais de um pacote sem a
obrigatoriedade de confirmao de recebimento do pacote anterior, ou seja, ele enche o canal com pacotes, N pacotes
(um numero finito), tendo assim um melhor aproveitamento do canal, da largura de faixa do canal. Porm a forma
como foi feito o GBN existem ainda algumas questes que prejudicam a transferncia eficiente de dados. Estas
questes so: o tamanho da janela grande e/ou o produto entre atraso e largura de faixa tambm grande. Pensemos
sobre a janela, que o mesmo conceito de janela do GBN. Vamos supor uma janela de tamanho para 100 pacotes. Se
houver qualquer erro, pode ser perda do pacote enviado ou perda do ACK enviado pelo destinatrio, ter que ser
reenviado o pacote. O problema surge do fato que todos os pacotes posteriores ao que foi perdido tero de ser
tambm reenviados. Se houver erro no 10 pacote, todos os 90 restantes juntamente com o 10 tero de ser
reenviados, ou seja, haver muitos reenvios desnecessrios, tendo desta forma uma utilizao tambm ineficiente,
apesar de j ter melhorado. Imagine agora uma janela com 1000 pacotes! Quanto maior a janela, mais o problema se
agrava. Se, tambm, o canal contiver uma taxa de erros alta, implica em maiores repeties. Como sabemos, os
canais reais no transmitem sem erros. Por mais que o canal seja confivel e com baixa taxa de erros, esses erros
existiro!
A repetio seletiva veio justamente melhorar esta questo. Agora, como o prprio nome sugere, no havero
reenvios desnecessrios. Apenas ser retransmitido o pacote que tiver algum problema. Com isto h um bom ganho
de tempo nas transferncias de dados. Analisemos agora a viso que tanto o remetente quanto o destinatrio tm da
janela, primeiramente para o remetente:
Em verde podemos ver os pacotes que foram enviados e seus ACKs j foram recebidos. Em amarelo so os que
foram enviados, mas ainda no chegou a resposta (recebimento do ACK). Em azul so os pacotes que foram
autorizados a serem enviados, mas ainda no foram. Em branco so os pacotes que ainda no foram autorizados ao
envio. Veja que alguns pacotes j tiveram confirmao de recebimento mesmo que pacotes anteriores ainda no
tenham sido confirmados. Isto uma grande diferena da janela do GBN, e justamente a isso que veio a Repetio
Seletiva, permitir que o destinatrio reconhea pacotes fora de ordem, possibilitando assim retransmisses somente
dos arquivos com algum problema.
Como no GBN, os pacotes medida que so recebidos da camada superior recebem um nmero de sequncia. Se
este nmero estiver dentro da janela, ento este pacote pode ser enviado, que so justamente os pacotes em azul. Ao
ser enviado sua classificao muda para amarelo, e finalmente ao receber confirmao de recebimento por parte do
destinatrio o pacote passa a ser classificado como verde. Ao receber o ACK do pacote, se o pacote estiver no incio
da janela, ento a janela pula uma ou mais posies frente conforme os pacotes posteriores forem verdes ou no.
Outra questo quanto ao problema da perca de pacotes. Para isto usado temporizao, s que na repetio
seletiva, cada pacote tem de ter sua prpria temporizao, uma vez que s ser retransmitido o pacote perdido.
Agora analisemos o destinatrio. Os pacotes em lils j foram recebidos, veja que eles esto fora de ordem, uma vez
que existem pacotes anteriores ainda no recebidos. Esta mais uma diferena, e uma causa da repetio seletiva.
Esses pacotes ficaro em buffer no destinatrio. Em cinza temos os pacotes que so aguardados, mas ainda no
recebidos. Em azul so pacotes aceitveis, que tambm so aguardados por estarem dentro da janela. Em branco so
os pacotes no utilizados por estarem fora da janela. Como j dito, os pacotes j recebidos mas fora de ordem ficam
armazenados em buffer. Ao receber um pacote e este pacote sendo o primeiro da janela, ele ser enviado camada
superior juntamente com aqueles que j foram recebidos anteriormente e esto em sequncia com este primeiro.
Ento a janela desliza direita por um numero de pacotes igual quantidade de pacotes que foram camada
superior. Em caso de o destinatrio receber um pacote com nmero de sequncia anterior ao nmero de inicio da
janela (rcv_base), ou seja, pacote j recebido, mesmo assim ser necessrio o envio de um ACK para que o
remetente possa movimentar sua janela frente. Este fato pode ocorrer devido perca do ACK, pois desta forma o
remetente nunca receber confirmao e ento reenviar o pacote, mas o pacote j foi recebido pelo destinatrio,
Transmisso de dados confivel
40
porm o remetente no sabe disso, e por isso ele deve reenviar o ACK.
Na figura acima temos um exemplo de transmisso com a repetio seletiva. So enviados 4 pacotes (pkt0, pkt1,
pkt2, pkt3). Porm o pacote pkt2 perdido e s chegam ao destinatrio os pacotes pkt0, pkt1 e pkt3. O destinatrio
recebe normalmente os trs pacotes que chegaram, os armazena em buffer e envia seus respectivos ACKs. O
remetente recebe confirmao para os pacotes pkt0 e pkt1 e envia ento os pacotes pkt4 e pkt5. Nesse ponto o tempo
de vida do pacote pkt2 se esgota e ento ele reenviado. Os pacotes pkt4 e pkt5 so recebidos, armazenados em
buffer e o destinatrio envia seus ACKs. S ento o pacote pkt2 recebido. Agora ento, como pkt2 est no inicio
da janela ele enviado para a camada superior juntamente com pkt3, pkt4 e pkt5 que estavam em buffer e na
sequncia de pkt2. ento enviado o ACK respectivo a pkt2 (ACK2).
Referncias
[1] http:/ / www. uploadimagens.com/ upload/ ebdbcfcb1e2ed83918d48c7a430c83fc. jpg
[2] http:/ / www. uploadimagens.com/ upload/ 10f4e26f1ace9be4ae779ce6451a84af. jpg
[3] http:/ / www. uploadimagens.com/ upload/ 2aa14739f2bf3f3602403d7074bcae7d. jpg
[4] http:/ / www. uploadimagens.com/ upload/ 5c91dbdcd59c6e9fc32a31ca87fd49eb. jpg
[5] http:/ / www. uploadimagens.com/ upload/ 05eb6c61f0eaf56efabbfd76bda5f2de. jpg
[6] http:/ / www. uploadimagens.com/ upload/ 6fa4767cf39f23f7d642c89a3406fa99. jpg
Protocolo TCP
Transporte orientado para conexo: TCP, protocolo de transporte confivel da camada de transporte, orientado
para conexo, da Internet.
[1]
O TCP (Transmission Control Protocol - Protocolo de Controle de Transmisso) um dos protocolos
[2]
, sob os quais
assenta o ncleo da Internet nos dias de hoje. A versatilidade e robustez deste protocolo tornou-o adequado para
redes globais, j que este verifica se os dados so enviados de forma correta, na sequncia apropriada e sem erros,
pela rede.
Protocolo TCP
41
A conexo TCP
TCP(Transmission Control Protocol) um protocolo da camada de transporte, orientado a conexo. Ele
responsvel pela diviso da mensagem em datagramas, reagrupamento e retransmisso no caso de datagramas
perdidos.
Dentre suas principais vantagens, podemos destacar a segurana quanto reposio de pacotes perdidos e ordenao
desses pacotes.
Estrutura do segmento TCP
[3]
O segmento TCP dividido em partes. Didaticamente representado pelo bloco abaixo ilustrado, porm na prtica
enviado sequencialmente. Cada linha da tabela um bloco de 32 bits, sendo que o bit inicial de nmero 0.
O protocolo TCP permite que seu cabealho tenha tamanho varivel, conforme as necessidades das estaes
comunicantes e especifidades do enlace. A estrutura bsica possui valores bem definidos, como as portas de origem
(16 bits) e de destino (16 bits).
Partes importantes no TCP so o nmero de seqncia (32 bits) e o nmero de reconhecimento (32 bits), pois estes
campos garantem a confiabilidade da transferncia.H tambm outros campos, como comprimento do cabealho (4
bits), que indica qual tamanho do cabealho em palavras de 32 bit, as flags (6 bits), que podem ser de 6 tipos:
URG urgncia
ACK nmero ack vlido
PSH push (envio imediato de dados)
RST reset (reincio da conexo)
SYN sync (estabelecimento de conexo)
FIN finalizar conexo
Protocolo TCP
42
H tambm a janela de recepo (16 bits) que indica o tamanho da janela para controle de fluxo (figura acima), o
checksum (16 bits) que verifica a integridade dos dados de todo o pacote, como um hash; o ponteiro para dados
urgentes (16 bits) que indica que determinado dado deve ser entregue no mesmo instante, as opes (quantidade
varivel de bits), que podem alocar mais banda do enlace para a transmisso dentre outras possibilidades, e os dados,
cuja quantidade definida no MSS.
Protocolo TCP
43
A conexo TCP, por ser confivel, exige o estabelecimento de uma conexo, embora no seja necessrio alocar
exclusividade de enlace (circuito dedicado
[4]
). necessrio existir um cliente e um servidor, porm como um
protocolo full-duplex, um terminal pode ser simultaneamente servidor e cliente.
A confiabilidade da transmisso se deve ao nmero de seqncia e ao nmero de reconhecimento. O primeiro indica
qual o primeiro byte do segmento de daos, e o segundo indica o primeiro byte do prximo segmento de dados. Isso
permite que os dados sejam agrupados corretamente, mesmo que pacotes tenham sofrido atrasos na transmisso.
O nmero de sequncia escolhido aleatoriamente no servidor e no cliente, e so independentes entre si, ou seja, no
exigncia que o nmero de sequncia do servidor seja o mesmo do cliente. Mas ento como feita a comunicao?
Para isto utilizada a flag ACK. Esta flag faz a sincronizao dos nmeros de sequncia, como mostrado na figura a
seguir.
[5]
Estimativa do tempo de viagem de ida e volta e de esgotamento de
temporizao
O TCP utiliza um mecanismo de controle de temporizao/retransmisso para recuperar segmentos perdidos. Em um
protocolo real como o TCP, surgem problemas de implementao de um mecanismo de controle de
temporizao/retransmisso como por exemplo, estimar o tempo de viagem de ida e volta da conexo - RTT (a
durao dos intervalos de controle deve ser maior do que o RTT, evitando o envio de retransmisses desnecessrias).
Estimativa do tempo de viagem de ida e volta - RTT
[6]
O RTT para um segmento, denominado RTTamostra, a quantidade de tempo transcorrido entre o momento em
que o segmento enviado (isto , passado ao IP) e o momento em que recebido um reconhecimento para o
segmento. Ao invs de medir um RTTamostra para cada segmento transmitido, a maioria das implementaes de
TCP executa apenas uma medio de RTTamostra por vez. Isto , em qualquer instante, o RTTamostra estar
Protocolo TCP
44
sendo estimado para apenas um dos segmentos transmitidos mas ainda no reconhecidos, o que resulta em um novo
valor de RTTamostra para aproximadamente cada RTT. E mais, o TCP nunca computa um RTTamostra para um
segmento que foi retransmitido; apenas mede-o para segmentos que foram transmitidos uma vez.
Os valores de RTTamostra sofrero variao de segmento para segmento devido a congestionamento nos roteadores
e a variaes de carga nos sistemas finais. Por causa dessa variao, qualquer dado valor de RTTamostra pode ser
atpico. Portanto, para estimar um RTT tpico, natural tomar alguma espcie de mdia dos valores de
RTTamostra. O TCP mantm uma mdia, denominada RTTestimado, dos valores de RTTamostra. Ao obter um
novo RTTamostra, o TCP atualiza RTTestimado de acordo com a seguinte frmula:
RTTestimado = (1 - a) * RTTestimado + a * RTTamostra
Esta frmula est escrita sob a forma de um comando de linguagem de programao. O valor recomendado de a a
= 0,125 (isto , 1/8) [RFC 2988], caso em que essa frmula de torna:
RTTestimado = 0,875 * RTTestimado + 0,125 * RTTamostra
Onde RTTestimado uma mdia ponderada dos valores de RTTamostra. Essa mdia ponderada atribui um peso
maior s amostras recentes do que s amostras antigas.
Observao: O valor de "a" determina o peso das amostras mais recentes no clculo da mdia, por exemplo, se "a"
vale 0,125, a ltima amostra analisada ter peso de 12,5% no valor de RTTestimado.
Alm de ter uma estimativa do RTT, tambm valioso ter uma medida de sua variabilidade. O [RFC 2988] define a
variao do RTT, RTTdesvio, como uma estimativa do desvio tpico entre RTTamostra e RTTestimado:
RTTdesvio = (1 - b) * RTTdesvio + b * | RTTamostra - RTTestimado |
Onde RTTdesvio uma MMEP (Mdia Mvel Exponencial Pura) da diferena entre RTTamostra e RTTestimado.
Se os valores de RTTamostra apresentarem pouca variao, ento RTTdesvio ser pequeno; por outro lado, se
houver muita variao, RTTdesvio ser grande. O valor recomendado para b 0,25.
Estabelecimento e gerenciamento da temporizao de retransmisso
Considerando-se dispor dos valores RTTestimado, RTTamostra e RTTdesvio, pode-se estabelecer um valor para a
temporizao de retransmisso do TCP (IntervaloTimeOut). Este valor deve ser maior ou igual a RTTestimado,
caso contrrio seriam enviadas retransmisses desnecessrias, porm no deve ser muito maior pois se houver perda
de algum segmento, o TCP no o retransmitiria rapidamente, o que resultaria em grandes atrasos de transferncia de
dados. Dessa forma, desejvel que o valor estabelecido para a temporizao seja igual a RTTestimado mais uma
certa margem, que dever ser grande quando houver muita variao nos valores de RTTamostra e pequena quando
houver pouca variao. Assim, o valor de RTTdesvio deve ser considerado:
IntervaloTimeOut = RTTestimado + (4 * RTTdesvio)
Transferncia confivel de dados
Usa reconhecimentos positivos, temporizadores,nmeros de seqncia e paralelismo
Recuperao de perdas de segmentos
Retransmisso rpida
Ignora os ACKs duplicados
Ignora controle de fluxo e de congestionamento
RFC 2581: Trs ACKs duplicados retransmite o segmento que Falta
Reconhecimento cumulativo evita a retransmisso do primeiro segmento
Protocolo TCP
45
Gerenciamento da conexo TCP
A maior parte dos ataques Web, atualmente, exploram vulnerabilidades apresentadas no gerenciamento das
conexes TCP. Alm disso, importante observar, que o estabelecimento da conexo TCP interfere,
significativamente, nos atrasos percebidos em nossa navegao. Portanto, saber como as conexes TCP so
estabelecidas e finalizadas, possibilitando gerenci-las, bastante importante para garantia da confiabilidade inerente
ao protocolo TCP.
Para envio de pacotes entre hospedeiros, via TCP, necessrio, previamente, o estabelecimento de uma conexo
entre cliente e servidor. Para tanto, so necessrias trs etapas, comumente chamada de apresentao de 3 vias (3
way handshake), conforme detalhado abaixo.
Etapa 1: o lado cliente do TCP encapsula e envia ao
servidor, em um datagrama IP, um segmento contendo um bit de flag
SYN ativado em 1 (requisio de estabelecimento de conexo) e um
nmero de sequncia inicial escolhido aleatoriamente pelo prprio
cliente. Esse segmento chamado TCP SYN.
Etapa 2: o servidor, por sua vez, ao receber datagrama IP,
extrai o segmento TCP SYN, aloca buffers e variveis para conexo
TCP e envia um segmento de aceitao de conexo,
chamado SYNACK, contendo um bit de flag SYN ainda ativado em
1 e um ACK de reconhecimento do nmero de sequncia inicial do
cliente, juntamente com a informao de sequncia inicial do
servidor.
Etapa 3: por fim, o cliente recebe o SYNACK, reserva
buffers e variveis para a conexo TCP, enviando um segmento
contendo um ACK de reconhecimento do nmero de sequncia inicial
do servidor, o prximo nmero de sequncia do cliente e um bit de
flag SYN ajustado em zero (conexo j estabelecida).
Pode acontecer, entretanto, situaes em que o segmento TCP SYN recebido pelo hospedeiro apresenta nmero de
porta e/ou IP incompatveis com as portas nele existentes. Neste caso, no h o reconhecimento do segmento TCP
SYN e, ento, o hospedeiro (servidor) retorna ao cliente um segmento contendo um bit de sinalizao RST, ativado
em 1, para reenvio/reinicializao da conexo.
Se essas trs etapas forem bem sucedidas, os dados podem ser enviados entre um cliente e um servidor em
hospedeiros diferentes. Quando no se deseja continuar enviando pacotes, a conexo TCP pode ser finalizada pelo
cliente ou pelo servidor.
O encerramento acontece em 4 passos. Em suma, inicialmente o cliente envia, ao servidor, um segmento TCP FIN,
com um bit de flag FIN ajustado em 1, requisitando a finalizao da conexo. O servidor recebe e envia, ao cliente,
um ACK de reconhecimento (etapa 2). Posteriormente, o servidor envia um segmento FIN, tambm ativado em 1, ao
cliente. Quando o cliente o recebe, responde com um ACK de reconhecimento e, ento, a conexo encerrada e os
recursos (buffers e variveis) alocados para a conexo TCP so liberados.
Protocolo TCP
46
Encerramento da conexo TCP
Referncias
[1] KUROSE,J. F.; ROSS,K. W. Redes de Computadores e a Internet - Uma abordagem top-down, 3 Edio
[2] http:/ / pt.wikiversity. org/ wiki/ Introduo_s_Redes_de_Computadores/ Protocolos_e_servios_de_rede
[3] [3] TANENBAUM, A. S. Redes de Computadores; 4 edio
[4] http:/ / pt.wikiversity. org/ wiki/ Introduo_s_Redes_de_Computadores/ Comutao_de_circuitos_e_de_pacotes
[5] KUROSE,J. F.; ROSS,K. W. Redes de Computadores e a Internet - Uma abordagem top-down, 3 Edio
[6] KUROSE,J. F.; ROSS,K. W. Redes de Computadores e a Internet - Uma abordagem top-down, 3 Edio
Controle de congestionamento
47
Controle de congestionamento
As causas e custos do congestionamento
Antes de conhecer os principais mecanismos de controle de congestionamento devemos entender por que o
congestionamento acontece e as consequncias do mesmo, analizando trs possveis cenrios.
Cenrio 1: dois remetentes, um roteador com buffers infinitos
Supondo que tenhamos dois hospedeiros A e B que estejam enviando dados para os hospedeiros C e D. No h
retransmisso de dados perdidos, controle de fluxo e nem controle de congestionamento e o roteador tem capacidade
de armazenamento infinita.
A vazo no destinatrio (nmero de bytes por segundo) ser igual velocidade do envio do remetente at um certo
ponto em que no importa o quo rpido se envie os pacotes a vazo ser limitada pelo enlace de comunicao
compartilhado entre os dois hospedeiros remetentes A e B, e quanto mais a velocidade de envio se aproxima desse
limite maior ser o atraso mdio, tendendo a infinito.
Analizando esse cenrio vemos um custo do congestionamento que so os atrasos quando a velocidade de envio se
aproxima da capacidade do enlace.
Cenrio 2: dois remetentes, um roteador com buffers finitos
Neste caso supomos que a capacidade de armazenamento do roteador seja finita, o que acarretar em descarte dos
pacotes que chegam a um buffer que j est cheio e depois a retransmisso do mesmo.
O desempenho ideal ocorreria se o remetente soubesse sempre quando o roteador est livre pois no haveria perda
alguma, porm sabemos que isso impossvel na realidade.
Na prtica, h sempre a necessidade de se retransmitir pacotes que foram perdidos durante a comunicao, e embora
possamos usar de temporizadores para determinar se um pacote foi reconhecido ou no, pode ser que estes pacotes
estejam perdidos e levem um tempo a mais para chegar ao destinatrio, levando o remetente a fazer retransmisses
desnecessrias.
Cenrio 3: quatro remetentes, roteadores com buffers finitos e trajetos com mltiplos roteadores
Muitos roteadores implica em trajeto maior na transmisso de pacotes. O que pode ocorrer que a conexo
estabelecida entre dois hospedeiros entre em competio com outra conexo estabelecida entre outros dois
hospedeiros e medida que a transmisso de pacotes dentro de uma conexo fique maior, a outra conexo
estabelecida tender a cair no limite do trfego pesado.
Outro custo tambm do congestionamento ocorreria caso um pacote seja descartado no meio do caminho (no repasse
de um roteador por exemplo), desperdiando toda a transmisso feita at o momento em que o mesmo foi
descartado.
Mecanismos de controle de congestionamento
Dizemos que o controle fim-a-fim quando a camada de rede (roteadores) no oferece suporte camada de
transporte no controle de congestionamento. O controle ser feito pelos sistemas finais observando o comportamento
da rede atravs de informaes como perda de pacotes ou atraso. O protocolo TCP adota esse tipo de controle de
congestionamento.
O controle de congestionamento assistido pela rede conta com ajuda dos roteadores da camada de rede para fornecer
informaes a respeito de congestionamento. O roteador poder passar essa informao de congestionamento direto
para o remetente ou marcando um pacote para que o destinatrio perceba o congestionamento e sinalize para o
remetente. O principal controle deste tipo que temos o controle ATM ABR, usado na arquitetura ATM de
comunicao de dados.
Controle de congestionamento
48
Controle de congestionamento ATM ABR
A arquitetura ATM baseada no conceito de circuito virtual de comutao de pacotes (clulas, na terminologia
ATM). O comutador (roteador) est sempre monitorando o comportamento de remetentes individuais e interferindo
na conexo afim de se controlar congestionamentos.
Nesta arquitetura, temos a presena de clulas de dados e das clulas de gerenciamento de recursos (clulas RM)
durante a transmisso, sendo estas ltimas as que contm informaes sobre congestionamento entre hospedeiros e
comutadores.
As clulas de dados contm um bit EFCI (explicit forward congestion indication) que ser sempre modificado para o
valor 1 quando um comutador detecta congestionamento. Ao receber esta informao o destinatrio poder modificar
para 1 o valor do bit CI (congestion indication) da clula RM quando a situao do congestionamento for grave ou
do bit NI (no increase) tambm da clula RM quando for mais leve.
Alm dos bits CI e NI, a clula RM tambm possui um campo ER (explicit rate) de dois bytes, que estabelecer uma
taxa mnima suportvel por todos os comutadores medida que o congestionamento aumente.
Controle de congestionamento TCP
O TCP usa controle de congestionamento fim-a-fim. Isto significa que o remetente limita ou aumenta a taxa de
entrega de dados para conexo em funo do congestionamento percebido por ele, por isso dizemos que o TCP
auto-regulado.
A conexo TCP composta de um buffer de recepo, um buffer de envio e de diversas variveis. Dentre essas
variveis temos a CongWin (janela de congestionamento), que limitar a taxa de envio de pacotes de um remetente
TCP.
Ao incio de cada RTT (tempo de ida e volta) o remetente enviar seus pacotes de acordo com o tamanho da
CongWin estabelecido, e ao final recebe reconhecimento para os dados, um sinal de que todos os pacotes foram
enviados corretamente.
Quando ocorre um evento de perda ou de trs ACKs duplicados (ocasionando desperdcio de pacotes) o remetente
reduzir sua CongWin utilizando a chamada diminuio multiplicativa, reduzindo o valor da CongWin metade.
Porm existe um limite mnimo do tamanho dessa janela, que de 1 MSS (maximum segment size).
O TCP reconhece que no h congestionamento na rede quando recebe ACKs (reconhecimento de pacotes), ento
aumentar a CongWin lentamente a cada tempo de ida e volta (aumento aditivo).
Esse comportamento do TCP de estar sempre aumentando a janela de congestionamento lentamente e depois
reduzindo metade bruscamente gera um comportamento parecido com dentes de serra, se visualizado graficamente.
Durante o incio de uma conexo TCP temos a fase de partida lenta, quando o remetente transmite a uma taxa lenta
(normalmente 1 MSS) e depois aumenta sua taxa exponencialmente, duplicando o valor de CongWin a cada tempo
de ida e volta at acontecer um evento de perda. O remetente TCP tambm pode entrar em fase de partida lenta aps
um evento de esgotamento de temporizao, ajustando a janela de congestionamento para 1 MSS e aumentando
exponencialmente at que a CongWin alcance metade do valor que tinha antes do evento (Threshold, em portugus,
patamar).
Referncias
Redes de Computadores e a Internet, JAMES F. KUROSE - KEITH W. ROSS
Camada de aplicao
49
Camada de aplicao
Em um modelo de comunicao, como o TCP/IP, as camadas mais inferiores tm a funo de transmitir os dados
enviados pela camada de aplicao de maneira confivel, mas no fornecem servios diretos aos usurios. J a
camada de aplicao, fornece diretamente estes servios, sendo assim, a camada de aplicao a razo de ser de
uma rede de computadores
[1]
. No modelo TCP/IP no h as camadas de seo e apresentao, que na maioria das
aplicaes so pouco usadas. Essas duas camadas esto incluidas na camada de aplicao.
Arquiteturas de aplicao
Uma Arquitetura de Aplicao define a estrutura de comunicao entre os utilizadores da aplicao. Existem
basicamente trs tipos de arquitetura: Cliente-Servidor, Peer-to-Peer e uma arquitetura hbrida, que uma mescla das
outros duas. Ao contrario de uma arquitetura de rede, que fixa, ou seja, prov um conjunto especfico de servios
as aplicaoes, a arquitetura de aplicao deve ser escolhida pelo desenvolvedor da aplicao, determinando o modo
que a aplicao vai se comportar nos sistemas finais em uma rede.
Com essa classificao segundo a arquitetura (cliente-servidor, P2P ou hbrida) pode-se entender melhor como se
comportam as aplicaes em uma rede. Em qualquer uma dessas arquiteturas, uma aplicao se comunica atravs de
pares de processos, onde um rotulado cliente e outro servidor. Mesmo em uma aplicao do tipo P2P, o par que
solicita um arquivo de outra mquina, denominado cliente, e o outro que fornece o servidor.
Cliente e Servidor
Este modelo praticamente ocupava a nica possibilidade e acabava assumindo como unanimidade o posto de
arquitetura de aplicao, isso ocorria devido a computadores poderosos, com muita memria, serem muito caros.
Com isso, a tendncia era que existissem computadores potentes que centralizassem esses efeitos, por isso
MainFrames eram utilizados para armazenar dados de clientes para fazer operaes remotas.
Na atualidade, apesar do avano da tecnologia, trazendo computadores pessoais com maior possibilidade de
processamento e de memria, com custo baixo, esse modelo ainda se apresenta com muita fora e aparentemente ter
foras para continuar por muito tempo ainda.
No modelo de arquitetura Cliente-Servidor, existem dois processos envolvidos, um no host cliente e um outro no
host servidor. A comunicao acontece quando um cliente envia uma solicitao pela rede ao processo servidor, e
ento o processo servidor recebe a mensagem, e executa o trabalho solicitado ou procura pelos dados requisitados e
envia uma resposta de volta ao cliente, que estava aguardando. Nesta arquitetura o servidor tem uma aplicao que
fornece um determinado servio e os clientes tem aplicaes que utilizam este servio. Uma caracterstica desta
arquitetura, que um cliente no se comunica com outro cliente, e o servidor, que tem um endereo fixo, esta sempre
em funcionamento. Quase sempre um nico servidor incapaz de suportar as requisies de todos os clientes, devido
a isso, na maioria dos casos so utilizados vrios servidores que constituem um servidor virtual (server farm).
Um exemplo claro de aplicao Cliente-Sevidor a comunicao entre um browser, que usado para visualizar
pginas da internet, em um servidor web. Neste tipo de aplicao o cliente (browser) e o servidor (servidor web)
comunicam-se trocando mensagens atravs do protocolo HTTP.
Camada de aplicao
50
Peer-to-Peer
A arquitetura P2P (Peer-to-Peer) consiste em uma comunicao direta entre os clientes, no existe nenhuma diviso
fixa entre cliente e servidor. Cada par (peer) ativo requisita e fornece dados a rede, desta forma no existe a
dependncia do servidor, isso aumenta significativamente a largura de banda e a reduo de recursos. Esse tipo de
arquitetura utilizado principalmente por aplicaes de compartilhamento de contedo, como arquivos contendo
udio, vdeo, dados ou qualquer coisa em formato digital. Outras aplicaes orientadas a comunicaes de dados,
como a telefonia digital, videotelefonia e rdio pela internet tambm utilizam esta arquitetura. Como exemplo
podemos citar o protocolo BitTorrent que utiliza a arquitetura peer-to-peer para compartilhamento de grandes
quantidades de dados. Neste exemplo um cliente capaz de preparar e transmitir qualquer tipo de ficheiro de dados
atravs de uma rede, utilizando o protocolo BitTorrent.
Um peer (par) qualquer computador que esteja executando uma instncia de um cliente. Para compartilhar um
arquivo ou grupo de arquivos, um n primeiro cria um pequeno arquivo chamado "torrent" (por exemplo,
Meuarquivo.torrent). Este arquivo contm metadados sobre os arquivos a serem compartilhados e sobre o tracker,
que o computador que coordena a distribuio dos arquivos. As pessoas que querem fazer o download do arquivo
devem primeiro obter o arquivo torrent, e depois se conectar ao tracker, que lhes diz a partir de quais outros pares
que se pode baixar os pedaos do arquivo.
Camada de aplicao
51
Hbrida
Com uma pesquisa realizada pela empresa Xerox, foi detectado que pelo menos 70% dos usurios de P2P no
compartilhavam arquivo, enquanto apenas 1% compartilhavam 50% destes, ou seja, a teoria que se tinha de diviso
de trabalho pelos clientes, no valia na prtica. Para isso ento, buscou-se uma soluo, e esta soluo, representou
a utilizao da arquitetura do tipo hbrida.
Uma hbrida, mescla das outras duas: cliente-servidor/P2P. Esta arquitetura utiliza, por exemplo, para transferncia
de arquivos o P2P e a arquitetura cliente/servidor para pesquisar quais peers contm o arquivo desejado. Uma
aplicao muito utilizada neste tipo de arquitetura a de mensagem instantnea. O Windows Live Messenger e o
aMSN so bons exemplos, onde usurios podem bater papo online instantaneamente em tempo real. A comunicao
desta aplicao tipicamente P2P, no entanto, para iniciar uma comunicao, um usurio registra-se em um servidor,
e verifica quem da sua lista de contatos tambm est registrado, para a partir de ento comear uma comunicao.
Essas aplicaes tambm disponibilizam transferncia de arquivos, suporte a grupos, emoticons, histrico de chat,
suporte a conferncia, suporte a Proxy, e outras ferramentas.
Camada de aplicao
52
A Comunicao entre os Processos
Na Internet, as aplicaes devem "conversar" entre si, ou seja, o que o usurio deseja deve ser entendido pela outra
mquina e respondido. Essa comunicao feita entre os processos, atravs da troca de mensagens. O remetente cria
mensagens com seus pedidos ao destinatrio, que recebe e gera as suas mensagens para responder (ou no) a
solicitao.
Por exemplo, numa comunicao Web, o cliente solicita uma pgina da Internet, atravs de um determinado tipo de
mensagem (no caso, uma requisio HTTP). O servidor recebe a requisio, e envia uma mensagem com a pgina
para o cliente (atravs de uma resposta HTTP). Porm, se ocorre um erro, o servidor envia mensagens dizendo ao
cliente que ouve algum erro.
Geralmente, a comunicao consiste em pares de processos, onde um processo em cada lado envia mensagens para o
outro. Isso ocorre na rede atravs dos sockets, que so os "porta-vozes" de cada host para uma determinada
aplicao.
Para que haja essa comunicao, necessrio que os hosts se identifiquem. Para isso, usam o endereo IP. Porm,
necessrio tambm identificar qual processo naquela mquina ir levar as mensagens aplicao, e essa
identificao chamada de nmero (ou endereo) de porta.
Protocolos de Camada de Aplicao
Para que dois processos se comuniquem, eles devem trocar mensagens. Porm, necessrio haver regras que
padronizem como sero trocadas e tratadas essas mensagens. Por isso, existem os protocolos da camada de
aplicao. Como em Tanenbaum
[2]
, "mesmo na camada de aplicao existe a necessidade de protocolos de suporte, a
fim de permitir que as aplicaes funcionem."
necessrio definir os tipos de mensagens a serem trocadas, a sintaxe dos vrios tipos de mensagens, a semntica
dos campos que compem as mensagens e as regras que determinam quando e como um processo envia e responde
as mensagens. No entanto, como explica Kurose, importante no confundir os protocolos de camada de aplicao
com as aplicaes. So conceitos diferentes, apesar de os protocolos serem uma parcela significativa de uma
aplicao. Uma aplicao a interface com o usurio, ou seja, aquilo que realmente acessado. Os protocolos se
Camada de aplicao
53
responsabilizam por definir como os processos iro se comunicar e como iro tratar as mensagens, para expor o que
foi solicitado pelo usurio em sua aplicao. Por exemplo, para acessar uma pgina Web, um usurio executa um
programa Browser e solicita uma pgina. O Browser usa o protocolo HTTP para enviar o pedido da pgina, assim
como o servidor usa o mesmo protocolo para aceitar a requisio e devolver a pgina solicitada. O Browser
interpreta a mensagem vinda do servidor e apresenta a pgina.
Dentre os protocolos de aplicao, pode-se citar: HTTP (HyperText Transfer Protocol), HTTPS (HyperText Transfer
Protocol over Secure Socket Layer), FTP (File Transfer Protocol), SMTP (Simple Mail Transfer Protocol), Telnet,
POP3 (Post Office Protocol version 3), e muitos outros.
O protocolo de Transporte para uma Aplicao
Uma aplicao necessita escolher um tipo de protocolo da camada de transporte, para que as mensagens sejam
entregues a aplicao de destino. Uma vez feito essa escolha, a camada de transporte tem a responsabilidade de levar
as mensagens pela rede. A internet oferece dois protocolos para a camada de transporte, o TCP (Transmission
Control Protocol) e o UDP (User Datagram Protocol). Para efetuar uma boa escolha, o desenvolvedor da aplicao
deve fazer uma escolha atentando-se a necessidade de sua aplicao. Com relao ao transporte, podemos citar, por
exemplo, a necessidade de transporte sem perdas, a necessidade de largura de banda na comunicao, a
temporizao, no que se refere a aplicaes interativas em tempo real, a necessidade de mecanismos de controle de
congestionamento e controle de fluxo (ou seja, compatibilidade de velocidades do remetente e do receptor), entre
outras.
O protocolo TCP oferece um servio confivel de transferncia de dados, ou seja, ele garante a entrega do dados do
socket emissor ao socket receptor, na ordem e sem perdas, ou seja, ao iniciar a comunicao entre dois hosts com
esse protocolo, feito uma "conexo virtual" entre as portas dos hosts. O TCP utiliza o three-way-handshake para
iniciar a comunicao. Portanto, aplicaes que envolvem transferncia de arquivos, como correio eletrnico,
aplicaes financeiras, visualizador de pginas da Web (browsers) e ate mesmo conexes remotas a computadores e
mensagens instantneas, que necessitam de confiabilidade na entrega dos dados, ou seja, que no haja perdas,
utilizam o protocolo TCP. O TCP tambm oferece um servio orientado para conexo, ou seja, ele faz com que o
cliente e o servidor troquem mensagens sobre informaes de controle da camada de transporte, antes da
transferncia de dados propriamente dita, e isso garante uma transferncia orientada para conexo.
O protocolo UDP oferece um transporte simples e menos confivel, pois no orientado para conexo, ou seja, no
existem procedimentos de verificao de envio e recebimento de dados. No entanto, pode haver checagem de
integridade e se algum pacote no for recebido, a aplicao do host de destino pode no fazer uma nova solicitao.
Essa caracterstica de "bombear" os dados para o destino velocidade que quiser, faz do protocolo UDP mais rpido
e ideal para certos tipos de aplicaes. Existem aplicaes que prefervel entregar os dados o mais rapidamente
possvel, mesmo que algumas informaes se percam no caminho. o caso, por exemplo, das transmisses de vdeo
pela internet, onde a perda de um pacote de dados no interromper a transmisso. Por outro lado, se os pacotes no
chegarem ou demorarem a chegar, haver congelamentos na imagem, causando irritao ao usurio. O mesmo
acontece com aplicaes de videoconferncia, jogos em redes e telefonia pela internet.
Nem o TCP, nem o UDP oferecem garantia quanto a atrasos, ou seja, o TCP pode at garantir que os dados
cheguem, porm no garante um tempo mnimo para que isso ocorra. O UDP tambm: os dados podem ser aceitos
mais rpido que TCP, porm atrasos na rede podem tornar o servio intil.
Camada de aplicao
54
Referncias
[1] [1] James F. Kurose e Keith W. Ross, Redes de Computadores e a Internet - Uma abordagem Top-Down
[2] [2] Andrew S. Tanenbaum, Redes de Computadores
HTTP
Protocolo HTTP
O protocolo HTTP, Hypertext Transfer Protocol ou Protocolo de Transferncia de Hipertexto, um protocolo da
camada de aplicao do TCP/IP cuja funo de proporcionar a transferncia de hipertexto. Este protocolo usado
desde 1990, atualmente est na verso 1.1.
Caractersticas do Protocolo HTTP
um protocolo de camada de aplicao da WEB
implementado em dois programas: Cliente e Servidor
O HTTP quem define a estrutura da mensagem que o cliente vai trocar com o servidor e utiliza TCP como seu
protocolo de transporte
Protocolo sem estado. O que significa que ele no mantm memria sobre suas aes. Ou seja se um cliente fizer
uma requisio idntica a uma anterior a qualquer momento, o HTTP no sabe informar sobre esse histrico.
Passos para uma comunicao HTTP
1. 1. estabelecida uma conexo TCP entre o programa cliente e o servidor.
2. 2. O cliente envia uma requisio HTTP para sua interface socket.
3. 3. O TCP leva essa mensagem para a interface socket do servidor.
4. 4. O servidor envia uma resposta HTTP para sua interface socket.
5. 5. O TCP leva essa resposta para a interface socket do cliente.
Conexes Persistentes e No Persistentes
A verso HTTP/1.0 utiliza conexes TCP no persistentes na comunicao cliente-servidor. J a verso 1.1 deste
protocolo utiliza conexes persistentes.
Conexes No Persistentes
Neste tipo de conexo, cada objeto requisitado pelo cliente ao servidor transportado por uma conexo TCP, que se
encerra imediatamente aps a confirmao do recebimento do objeto. Desta forma, se um documento HTML, por
exemplo, referenciar outros objetos, como arquivos JPEG, GIF, entre outros, novas conexes TCP devero ser
estabelecidas para transferncia destes arquivos, alm da conexo para obteno do prprio arquivo HTML.
Os browsers podem ter interpretaes diferentes, pois o HTTP define apenas o protocolo de comunicao entre o
cliente e o servidor. Podem ser configuradas conexes paralelas reduzindo o tempo de resposta. Por padro, os
browsers utilizam entre 5 e 10 conexes paralelas.
HTTP
55
Conexes Persistentes
As conexes do tipo persistente so caracterizadas pelo fato da conexo TCP permanecer aberta aps o envio da
resposta, ou seja, a conexo persiste durante o recebimento de todos os objetos referenciados. A requisio e a
resposta utilizam-se da mesma conexo, esta s ser encerrada ou fechada quando no for usada por um tempo que
pode ser configurvel. Desta forma, apenas uma conexo TCP necessria para o recebimento completo de uma
pgina Web. Alm disso, outras pginas Web que estejam no mesmo servidor podem ser completamente recebidas
pelo cliente atravs desta mesma conexo TCP.
Existem duas verses de conexes persistentes: sem paralelismo e com paralelismo. Na primeira, uma nova
requisio s feita aps a resposta da anterior, portanto, requer um RTT para cada objeto e pode permanecer ociosa
aguardando outra requisio. Naquelas com paralelismo, o cliente emite requisies assim que encontra referncias,
ou seja, no aguarda respostas das requisies anteriores. Nesse caso, necessita apenas um RTT para todos os objetos
e fica ociosa uma frao menor de tempo.
Formato da Mensagem HTTP
Existem dois tipos de mensagem HTTP: requisio e resposta.
Requisio
Uma mensagem de requisio formada por uma linha de requisio, as linhas de cabealho e o corpo da
mensagem.
A linha de requisio formada pelo mtodo, a URL e a verso http, todos separados por um espao. O mtodo o
tipo de ao que a mensagem requer. Exemplos de mtodos que so muito usados em mensagens http so GET,
POST e HEAD. A URL o objeto sobre o qual a mensagem quer realizar a ao(mtodo) requisitada. E a verso
http se refere verso requisitada pela mensagem.
As linhas de cabealho devem conter detalhes sobre a requisio para o servidor. Podemos encaixar o cabealho das
mensagens de requisio em trs tipos.
Gerais: contm informaes referentes principalmente prpria mensagem, e so usadas para controlar seu
processamento e prover o receptor com informaes extras.
Requisio: fornecem para o servidor mais informaes sobre a natureza da requisio do cliente, e do ao cliente
mais controle sobre como a requisio gerenciada. Podem tambm contar quais formatos ou cdigos o cliente
consegue processar.
Entidade: descrevem a entidade contida no corpo da mensagem, se existir alguma.
Normalmente a mensagem de requisio no ir possuir cabealhos de entidade, pois dificilmente uma mensagem de
requisio trar consigo um corpo de mensagem.
No corpo de mensagem, quando o mesmo existir numa mensagem de requisio, haver uma entidade, que pode ser
um arquivo de msica, uma imagem, uma pgina html, etc.
Resposta
Uma mensagem de resposta formada por uma linha de estado, as linhas de cabealho e o corpo da mensagem.
Na linha de estado, teremos a verso http, o cdigo da resposta, e uma mensagem associada ao cdigo. A verso http
se refere verso da mensagem de resposta. O cdigo da resposta e a mensagem associada a ele traro a informao
sobre os resultados do processamento da requisio do cliente. O cdigo de resposta um nmero de trs dgitos que
indica o resultado formal que o servidor est comunicando ao cliente. J a mensagem associada opcional, e um
texto descritivo que pode ser mostrado para o usurio humano do cliente http, que poder ento saber o que o
servidor respondeu.
HTTP
56
Exemplos de Cdigos de estado:
200 OK: Requisio bem sucedida.
301 Moved Permanently: o objeto requisitado foi movido, e a resposta retornar uma nova URL, com a
localizao do objeto.
400 Bad Request: o servidor no entendeu a requisio do cliente.
404 HTTP Not Found: O servidor no encontrou o objeto requisitado.
505 HTTP Version Not Supported: o servidor no suporta a verso http requisitada.
As linhas de cabealho devem trazer informaes extras sobre a mensagem de resposta. Podemos encaixar o
cabealho das mensagens de resposta em trs tipos.
Gerais: assim como nas mensagens de requisio, devero conter informaes referentes principalmente prpria
mensagem, no tazendo informaes sobre o corpo da mensagem.
Resposta: provem informao complementar visando ampliar as informaes da linha de estado. O servidor
poder tambm retornar informaes extras no corpo da mensagem, principalmente se ocorrerem erros.
Entidade: descrevem a entidade contida no corpo da mensagem, se existir alguma. So mais frequentes nas
mensagems de resposta.
No corpo de mensagem, quando o mesmo existir numa mensagem de requisio, haver uma entidade, que pode ser
um arquivo de msica, uma imagem, uma pgina html, etc.
Cache WEB ou Servidores Proxy
Nos ltimos anos o nmero de usurios da Internet aumentou de maneira significativa e esse nmero cresce a cada
ano. Com isso, sem nenhum mecanismo de controle de banda ou constante aumento dessa banda, o tempo de
resposta em uma requisio de um cliente a um servidor pode demorar muito.
Para amenizar o impacto desses usurios na rede um mecanismo barato que tem sido largamente implementado o
cache web. A ideia do cache web ou servidor proxy muito simples: o cliente web se conecta ao cache web para
obter determinado contedo. Se o cache web no tiver o contedo solicitado armazenado, ele faz requisio ao
servidor web de destino. O contedo ento repassado primeiro ao cache web, que o armazena e s ento
repassado ao cliente web de destino. Pode-se dizer ento que o proxy tanto um servidor quanto um cliente.
Nesse processo tem-se um notvel ganho de desempenho quando uma mesma pgina requisitada vrias vezes por
clientes web, pois o contedo solicitado est armazenado numa maquina local. Outro benefcio que tanto o servidor
web quanto a rede externa tambm so desafogados, j que a requisio do cliente no chegar at eles. De uma
forma mais global, os servidores proxy tambm melhoram o desempenho da Internet como um todo.
Cookies
Principais objetivos
Os cookies so pequenos arquivos gravados nos computadores clientes, com determinadas informaes sobre
sesses do navegador. A principal funo desses arquivos a da persistncia das sesses HTTP. Outras funes do
cookie a restrio de acesso a determinados servios e a identificao de usurios.
Funcionamento dos Cookies
A comunicao do cookie acontece basicamente em trs etapas:
1. 1. O Navegador solicita uma pgina
2. 2. O Servidor responde com a pgina + o cookie
3. 3. O Navegador pede outra pgina j utilizando o cookie
HTTP
57
Parmetros dos Cookies
Todo arquivo de cookie, tem alguns paramtros bsicos. Dentre eles:
1. 1. Nome
2. 2. Valor
3. 3. Tempo de Vida
4. 4. Domnio
Utilizao dos Cookies
Como exemplo de servios que utilizam os cookies em larga escala, temos:
1. 1. Comrcio Eletrnico
2. 2. Google Accounts
3. 3. Redes Sociais
4. 4. Bancos On-Line
5. 5. Blogs
6. 6. Fruns
FTP
Histria
O primeiro protocolo a definir mecanismos para transferncia de arquivos foi proposto em 1971, desenvolvido para
ser implementado em hosts do M.I.T. Em 1972, com a especificao RFC 354, o File Transfer Protocol FTP
ento usado como o protocolo de transferncia de arquivos da rede ARPAnet. Seu objetivo era transferir dados
confiavelmente e eficientemente, alm de permitir o uso de armazenamento remoto de arquivos.
A partir de ento, foram feitas algumas correes de erros, aprimorados pontos que demandavam mais nfase e
adicionadas funcionalidades. Em 1973, como RFC 454, foi publicado o documento oficial do FTP, permanecendo a
estrutura original j concebida, mas incluindo mudanas importantes.Nos anos que se seguiram, vrios comentrios,
discusses e pequenas revises foram publicados.
Em 1980, motivado pela transio do protocolo NCP para o TCP da rede ARPAnet, o FTP foi ento especificado
para ser usado com o protocolo TCP. O ltimo documento de especificao deste protocolo o RFC 959.
FTP
Os objetivos do FTP so: promover o compartilhamento de arquivos, programas de computadores e/ou dados;
promover o acesso a computadores remotos; blindar o usurio da variao dos tipos de sistema de armazenamento de
arquivos entre os diversos hosts e finalmente, transferir dados de forma confivel e eficiente. Apesar do FTP poder
ser usado diretamente pelo usurio em um terminal, ele foi projetado para ser usado por programas principalmente.
um dos protocolos mais usados para se transferir arquivos na Internet. Envolve tanto transferncia de arquivos
quanto acesso a sistemas de arquivos remotos. Independe do hardware ou do sistema operacional e utiliza conexo
TCP para estabelecimento da conexo entre cliente e servidor. Faz uso de duas conexes paralelas para transferir um
arquivo: uma conexo de controle (informaes de usurio e senha, comandos como GET ou PUT etc.) e uma
conexo de dados (usada para enviar, efetivamente, o arquivo). Devido a essa caracterstica, dizemos que este
protocolo possui controle fora da Banda. A conexo de controle dita persistente, ou seja, uma vez estabelecida a
sesso, ela permanece ativa durante toda a conexo. J a conexo de dados dita no persistente, ou seja, a cada
nova transferncia, estabelece-se uma conexo, que fechada aps o trmino da tarefa.
FTP
58
Comandos FTP
No RFC 959 so definidos 33 comandos, que podem ser utilizados por um usurio em um terminal, embora seja
mais comum que as aplicaes tenham interfaces que blindem o usurio destas linhas de comando. As instrues so
no formato ASCII, de 7 bits, em caracaters maisculos, com ou sem argumentos. Alguns dos comandos mais comuns
so USER username, PASS password, RETR filename etc. Os nomes so auto-explicativos. USER usado para o
usurio especificado no argumento se conectar ao servidor FTP. RETR usado para recuperar um arquivo,
especificado pelo argumento filename, e assim sucessivamente. Outros comandos so mostrados na tabela abaixo:
Comando Descrio
ascii Transfere arquivos no modo ASCII. Neste modo, h converso de formatos, caso os sistemas operacionais envolvidos sejam
diferentes.
BIN Transfere arquivos no modo binrio, no alterando nenhum bit do arquivo
LR ou DIR Listam o contedo do diretrio atual
CD Permite mudar o diretrio remoto
GET Transfere um arquivo da mquina remota para a local. Para transferir mais de um arquivo usa-se mget
HASH Imprime "#" a cada 1024 bytes transferidos. importante para a visualizao do progresso de transferencia de arquivos
PUT Transfere um arquivo da mquina local para a remota. Para transferir mais de um arquivo usa-se mput
QUIT ou
BYE
Levam ao encerramento da conexo de controle levando ao trmino da conexo do FTP
Correio eletrnico
Introduo
O correio eletrnico, comumente chamado de email, foi utilizado inicialmente no meio acadmico nos anos 80. Em
duas dcadas, tornou-se bastante popular e sua utilizao cresceu exponencialmente.
Os primeiros sistemas de correio eletrnico consistiam apenas em protocolos de transferncia de
arquivos(mensagens). Ficou convencionado que a 1 linha de cada mensagem devia conter o endereo do
destinatrio. Essa tcnica, aos poucos, se mostrou bastante deficitria e limitada, inviabilizando sua utilizao no
envio de mensagens a um grupo de pessoas, por exemplo. Alm disso, vrias foram as crticas a esses sistemas,
dentre as quais destacamos:
[1]
as mensagens no apresentavam uma estrutura interna
no havia garantia de entrega da mensagem
a interface no era integrada ao sistema de transmisso, ou seja, usurio editava a mensagem, saa do editor e
rodava um software para transferncia da mensagem.
impossvel enviar mensagem integrando texto, desenhos, voz, etc.
Aps isso, foram propostos sistemas de correio eletrnico mais elaborados e completos. Em 1982, um grupo de
estudantes props o sistema de correio eletrnico da ARPANET, cujas propostas foram publicadas nas RFC821 e
RFC822, as quais tratavam de protocolos de transmisso e formatos de mensagens, respectivamente.
Correio eletrnico
59
Arquitetura e servios
[2]
Os sistemas de correio eletrnico so organizados em dois subsistemas: agentes de usurio, responsveis pela leitura
e envio das mensagens e agentes de trasnferncia/transporte de mensagem. Os agentes de usurio so programas
locais, cujos mtodos podem ser baseados tanto em comandos como em menus/grficos, o que permite interao
com o sistema de correio eletrnico. Os agentes de transferncia, por sua vez, so responsveis por executar tarefa
em 2 plano, ou seja, pela movimentao das mensagens por todo o sistema.
Um sistema tpico de correio eletrnico apresenta 5 funes bsicas, quais sejam:
Composio: processo de criar mensagens e respostas
Trasnferncia: deslocamento de mensagens entre remetente e destinatrio, de forma transparente para o usurio.
Gerao de relatrios: confirmao de entrega de mensagens
Exibio: necessria para leitura das mensagens recebidas
Disposio: Refere-se s possibilidades existentes para o destinatrio aps receber uma mensagem. Ex: apagar,
mover, etc
Definies
Para melhor entendimento, necessrio saber o significado de algumas siglas.
E-mail: Eletronic Mail, sinnimo de correio eletrnico. tambm o nome dado mensagem eletrnica enviada
atravs do correio eletrnico.
MUA
[3]
: Mail User Agent, o software utilizado pelo cliente para gerenciar seus e-mails. responsvel por
receber da caixa de entrada e repassar ao MTA para envio.
MTA
[4]
: Mail Transfer Agent, realiza a transferncia das mensagens. Recebe elas do MUA ou de outro MTA, e
com base no cabealho define a forma que entregar a mensagem ao MDA.
MDA
[5]
: Mail Delivery Agent, promove a entrega das mensagens. As recebe do MTA e realiza a entrega na caixa
de mensagens do destinatrio.
Alm disso, os e-mails so compostos de basicamente duas partes: cabealho (ou header, definido pela RFC 822) e
corpo (ou body), onde o cabealho contm as informaes do protocolo utilizado, do remetente, data, hora, assunto,
domnios, e diversas outras informaes, enquanto o corpo contm a mensagem propriamente dita.
Received: by intranet.sender.com (Postfix, from userid 33)
id 65BDC5B7CF; Thu, 28 Aug 2008 12:35:02 -0300 (BRT)
To: fulano@recipient.com
Subject: Um teste
Date: Thu, 28 Aug 2008 12:35:02 -0300
From: Ciclano <ciclano@sender.com>
A grande maioria dos webmails e dos MUAs ocultam o cabealho completo, exibindo apenas informaes bsicas,
como remetente, destinatrios, data e hora e assunto. Cada campo received indica um servidor SMTP que foi
visitado no trajeto da mensagem.
Cada conta de e-mail uma caixa postal, onde seu proprietrio pode criar novas mensagens, ler antigas, apagar,
classificar, dentre outros recursos, dependendo do servidor de e-mail.
Correio eletrnico
60
Protocolos de envio
Geralmente so utilizados pelos MTAs para envio de mensagens, e executam as transferencias de dados.
UUCP
[6][7]
O primeiro protocolo de transferencia desenvolvido foi o UUCP (Unix to Unix CoPy), sob regncia do RFC 976.
Surgiu e foi bastante difundido por volta dos anos 80.
Inicialmente foi utilizado na ARPANET, para troca de mensagens entre Universidades. Como funcionava sobre
redes comutadas por circuitos (e portanto a tarifao era por tempo de conexo), e ainda por ser necessrio uma
conexo entre cada cliente, que muitas vezes estavam em outros pases, era comum implantar um sistema
concentrador de atividades.
Este concentrador sincronizava-se com os clientes e armazenava as funes pedidas, como envio de e-mails e
transferencia de arquivos, e em determinada hora conectava-se e realizava as funes da fila. Aps concludo,
desconectava-se e voltava a armazenar as funes.
Este comportamento conferia uma certa desvantagem por no sem em tempo real, com atrasos de vrias horas, mas
com certeza havia grande vantagem sobre os correios convencionais, que demoravam dias ou meses. Os e-mails
conforme esta tecnologia eram formados pelo nome da mquina seguido de exclamao e do nome do usurio
(Exemplo: dominio.com.br!nome.de.usuario. Neste tipo de protocolo, era extremamente comum o uso de servidores
intermedirios, o que barateava a comunicao. Em geral, um servidor s possua acesso aos seus adjacentes. Se eu
fosse mandar um e-mail para a China por exemplo, deveria utilizar o endereo de destinatrio
ServidorBrasil!ServidorEuropa!ServidorLesteEuropa!ServidorChina!usurio. Esta prtica aumentava ainda mais o
atraso com que as mensagens chegavam.
Como esta definio de rotas estticas era bastante trabalhosa, comearam a ser implantados na rede hops, que eram
mquinas capazes de interpretar as rotas e reescrever outras mais rpidas e menos congestionadas, o que melhorou a
velocidade da comunicao e reduziu custos.
Atualmente este protocolo ainda utilizado em redes corporativas e alguns sistemas devido ao baixo custo,
gerenciamento no-persistente de filas, porm com adaptaes para uso sobre o protocolo TCP/IP. Gradativamente,
no entanto, ela vem sido substituda por tcnicas mais modernas.
A tecnologia utilizada pela NASA para comunicao com suas sondas e satlites similar UUCP.
SMTP
[8][9]
SMTP, ou simple mail transfer protocol, conforme define o RFC 2821, o protocolo mais utilizado atualmente para
transmisso de mensagens de correio eletrnico.
O protocolo utilizado pelo MTA para transferir a mensagem, e ele serve justamente para definir padres de como
entregar, e como interpretar os ados enviados. O padro exige a codificao de binrio em ASCII, e decodificao
ASCII para binrio na passagem ao MDA.
Em geral, uma transferencia SMTP direta entre o servidor de origem e o de destino, no passando por nenhum
intermedirio. Os servidores armazenam as mensagens caso no possam ser entregues de imediato, por qualquer
falha ou impedimento. A conexo feita na porta TCP 25.
A comunicao entre servidores SMTP estabelecida sobre o protocolo TCP/IP, com a identificao dos
conectantes. Aps estabelecida a conexo, h a troca de comandos entre o cliente e o servidor, iniciando-se com a
identificao do remetente, aps do destinatrio, e por fim a mensagem.
Por se tratar de uma conexo persistente, podem ser enviadas diversas mensagens sequencialmente, bastando apenas
especificar o remetente, destinatrio e mensagem dos demais emails antes do comando de encerrar a conexo (quit).
S: 220 www.example.com ESMTP Postfix
Correio eletrnico
61
C: HELO mydomain.com
S: 250 Hello mydomain.com
C: MAIL FROM: sender@mydomain.com
S: 250 Ok
C: RCPT TO: friend@example.com
S: 250 Ok
C: DATA
S: 354 End data with <CR><LF>.<CR><LF>
C: Subject: test message
C: From: sender@mydomain.com
C: To: friend@example.com
C:
C: Hello,
C: This is a test.
C: Goodbye.
C: .
S: 250 Ok: queued as 12345
C: quit
S: 221 Bye
Exemplo de transmisso SMTP
MIME
[10]
MIME no um protocolo de transmisso de e-mails. um formato de codificao dos caracteres utilizados na
escrita do e-mail, ele serve para que letras em outros padres de codificao diferentes do ASCII no sejam
truncadas, e para transmisso de dados multimdia. Significa Multipurpose Internet Mail Extensions, e regido pelas
RFC 2045 e RFC 2046.
MIME-Version: 1.0
Content-Type: multipart/alternative;
boundary="b1_ad752a574aae1a24143bb0f4add1f60d"
--b1_ad752a574aae1a24143bb0f4add1f60d
Content-Type: text/plain; charset = "iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Exemplo de cabealho MIME
O cabealho MIME utiliza-se basicamente de dois elementos fundamentais: content-type e
content-transfer-encoding.
O content-transfer-encoding indica qual codificao foi utilizada para transformar o contedo da mensagem em
ASCII para o envio por SMTP. Sem este dado a mensagem fica truncada, pois no se sabe como decodificar a
mesma. H diversos tipos de codificao, sendo uma das mais comuns a quoted-printable.
O content-type define que tipo de contedo possui a mensagem, e indica ao MUA como tratar o determinado
contedo. Podem ser desde contedos multimdia at textos simples.
Correio eletrnico
62
Protocolos de recebimento
Os protocolos de recebimento permitem ao usurio pegar arquivos e mensagens de sua caixa postal para seu
computador local. Os protocolos utilizados para este fim so basicamente trs: HTTP, IMAP E POP3.
POP3
[11][12]
Protocolo de acesso extremamente simples, definido pelo RFC 1939. Seu nome vem da abreviao de Post Office
Protocol verso 3.
H basicamente trs passos que devem ser executados: autenticao, transao e atualizao. Na autenticao, aps
estabelecida a conexo, o cliente fornece um nome de usurio e uma senha, sem nenhuma obfuscao. Aps, h duas
opes para a transao: ler-e-apagar, e ler-e-guardar, o que influencia nos comandos que devem ser passados ao
servidor. Na fase de atualizao, que ocorre aps o trmino da conexo, o servidor apaga ou marca como lida as
mensagens, conforme definido na fase de transao.
Embora seja a 3 verso deste protocolo, ele muito simples. Utiliza-se basicamente de 6 comandos: user, pass, list,
retr, dele e quit. Responde basicamente de duas formas: err quando um comando est incorreto, e ok quando o
comando foi compreendido. A conexo feita na porta TCP 110. Embora simples, o mais indicado para pessoas
que acessam e-mail de apenas um local.
IMAP
[13]
O protocolo IMAP (Internet Message Access Protocol) mais robusto que o POP, e est em sua quarta verso,
primeira reviso., definido na RFC 3501. Seu poder aumentou sua complexidade relativamente ao POP.
O IMAP ideal para usurio nmades, que acessam de diversos pontos, pois permite a gerncia remota de aes,
inclusive entre sesses. No entendeu? Voc organiza sua mensagens na pasta local e elas so organizadas
similarmente na sua caixa postal, com comandos do usurio. H tambm a vantagem de poder receber somente
determinada parte de uma mensagem, nos casos de uma conexo lenta, estreita, ou muito cara (como celular por
exemplo). Neste caso o usurio pode filtrar para receber parte da mensagem, escolher quais contedos baixar, ou
seomente mensagens pequenas.
O poder que este protocolo confere imenso. Vale a pena ler a RFC 3501.
Protocolos hbridos
Webmail
O webmail ou e-mail sobre HTTP uma funcionalidade excelente para usurios em trnsito. A transmisso das
mensagens para o servidor e da caixa de entrada ao usurio so feitas atravs do protocolo HTTP, que permite o
acesso atravs de qualquer browser.
Isto confere maior agilidade e portabilidade ao uso do e-mail. importante lembrar que as trocas entre servidores de
webmail continuam sendo feitas atravs de SMTP.
O webmail pode ser considerada a modalidade de acesso a e-mails mais utilizada atualmente. Muitos webmails
utilizam scripts que conferem funcionalidades IMAP ao usurio.
Correio eletrnico
63
Referncias
[1] [1] TANENBAUM, A. S. Redes de Computadores; 4 edio
[2] [2] KUROSE,J. F.; ROSS,K. W. Redes de Computadores e a Internet - Uma abordagem top-down, 3 Edio
[3] http:/ / www. feep. net/ sendmail/ tutorial/ intro/ MUA-MTA-MDA. html
[4] http:/ / www. feep. net/ sendmail/ tutorial/ intro/ MUA-MTA-MDA. html
[5] http:/ / www. feep. net/ sendmail/ tutorial/ intro/ MUA-MTA-MDA. html
[6] http:/ / www. uucp. org/
[7] http:/ / pt.wikipedia. org/ wiki/ UUCP
[8] http:/ / www. ietf. org/ rfc/ rfc2821.txt
[9] http:/ / en. wikipedia. org/ wiki/ Simple_Mail_Transfer_Protocol
[10] http:/ / pt. wikipedia. org/ wiki/ MIME
[11] http:/ / www.faqs. org/ rfcs/ rfc1939. html
[12] http:/ / www2.rad. com/ networks/ 1998/ pop/ index.htm
[13] http:/ / www.imap. org/
DNS
Domain Name System - DNS
Na internet as pginas web so geralmente conhecidas pelo seu apelidos ou nome de hospedeiro (hostname).
Embora sejam quase que exclusivamente conhecidas por esse nome, todos os hospedeiros so identificados tambm
pelo seu endereo IP. O endereo IP formado por 4 octetos que constituiem 32 bits e possui uma estrutura
hierrquica rgida, de forma que quando examinamos este endereo da esquerda pra direita vamos obtendo cada vez
mais informaes sobre sua localizao na internet, coisa que no possvel examinando apenas seu nome de
hospedeiro.
Enquanto as pessoas preferem identificar esses hospedeiros pelo seu nome por serem mais fceis de serem
lembrados, os roteadores preferem identific-los pelo seu endereo IP, mais fceis de serem processados por no
possuirem caracteres alfanumricos de tamanhos variveis.
Histria do DNS
[1]
O DNS foi criado a partir da necessidade existente de traduzir os complicados nmeros IP para um tipo de mais alto
nvel, que poderia ser relembrado com facilidade por pessoas comuns. Com certeza foi um ponto de apoio para o
crescimento exponencial que a rede sofreu. Sua criao data do ano de 1983 pelo americano Paul Mockapetris, que
fez o trabalho a pedido de Jonathan Postel, um grande personagem que esteve presente na criao da ARPANET e
foi editor dos RFCs. Paul descreveu o sistema de nomes nas RFCs 882 e 883, posteriormente o protocolo foi
reformulado nas RFCs 1034 e 1035. A primeira implementao do DNS foi criada por um grupo de quatro
estudantes da Universidade da Califrnia Berkeley. Essa implementao foi melhorada no ano seguinte, dando vida
ao software que at hoje mais conhecido servidor de domnios, o BIND (Berkeley Internet Name Domain).
DNS
64
Servios fornecidos pelo DNS
[2]
A tarefa de traduzir um nome de hospedeiro para endereo IP feita pelo DNS (domain name system - sistema de
nomes de domnio), que basicamente um conjunto de servidores distribuidos de forma hierrquica que recebe o
nome de hospedeiro que o usurio deseja e devolve o endereo IP correspondente. O protocolo DNS utiliza o
protocolo UDP e a porta 53 para comunicao.
Alm de ser identificado pelo seu nome de hospedeiro, um hospedeiro pode tambm ser identificado por um ou mais
apelidos que simplificam um nome de hospedeiro complicado ou muito grande. O DNS pode ser chamado neste caso
para obter o nome de hospedeiro (tambm conhecido como nome cannico) e o endereo IP correspondente ao
apelido fornecido, assim como para certos servidores de correio que possuem apelido para simplificar o seu nome
cannico.
O DNS tambm pode ser usado para fazer distribuio de carga entre servidores web ou de e-mail replicados,
principalmente para sites movimentados que rodam em vrios servidores e possuem endereos IP diferentes.
Modo de funcionamento do DNS
[3]
Os servidores DNS so distribudos de forma hierrquica entre vrios servidores por todo o mundo, de forma que
no concentre todo o processo em um nico servidor, o que sobrecarregaria o mesmo, tornaria o processo mais lento
e mais sujeito a falhas. Os servidores DNS dividem-se em trs classes:
Servidores de nomes raiz: h 13 servidores de nomes raiz no mundo, responsveis por passar uma lista de
servidores TLD correspondentes ao endereo IP desejado;
Servidores TLD (nomes de domnio de alto nvel): so responsveis por domnios de alto nvel como com, org,
net ,edu, gov, uk, fr, jp, br e outros;
Servidores de nomes com autoridade: so a parte final do processo, geralmente as prprias organizaes,
responsveis por passar o endereo IP em si correspondente ao nome de hospedeiro informado.
Tambm h o servidor DNS local contido em cada ISP (internet service provider - provedor de servios de internet).
Este no integra a hierarquia de servidores DNS, apenas faz o repasse do nome de hospedeiro e recebe o endereo IP
correspondente dos servidores que integram a hierarquia.
Para que um host acesse uma URL qualquer ("www.amazon.com", por exemplo) na internet, primeiramente ele
envia uma mensagem de requisio para o servidor de nomes local. O servidor local envia uma consulta ao DNS
raiz, o qual percebe o sufixo 'com' e responde uma lista de endereos IP para o DNS local contendo servidores TLD
que so reponsveis por 'com'. Em seguida, o DNS local faz requisio para um desses servidores TLD, o qual
percebe o sufixo 'amazon.com' e envia ao DNS local o endereo IP do servidor DNS com autoridade para a Amazon.
Finalmente, o DNS local consulta o servidor com autoridade e esse responde com o endereo do hospedeiro
'www.amazon.com'. Assim, o DNS local responde ao hospedeiro o IP do nome solicitado.
A partir do processo relatado acima, vemos que h consultas recursivas e iterativas. Entre o hospedeiro e o DNS
local, a consulta recursiva, uma vez que o hospedeiro pede que o DNS local obtenha o mapeamento em seu nome.
Enquanto que as outras trs consultas (DNS local com DNS raiz, TLD e autoridade) so iterativas, j que as
respostas so retornadas diretamente ao DNS local. Em teoria, qualquer consulta DNS pode ser iterativa ou
recursiva, porm, na prtica, as consultas geralmente so feitas conforme o padro exposto acima. A figura abaixo
ilustra o caminho de uma consulta DNS para resolver o endereo IP de determinado nome, similarmente ao que foi
apresentado acima:
Os servidores DNS, sejam eles de qualquer tipo, podem fazer uso de cache de DNS para agilizar o processo. Quando
feito uma requisio ao servidor, este armazena em sua memria a resposta correspondente, de forma que quando a
mesma requisio feita novamente ele dar a resposta imediatamente, no necessitando fazer toda a procura
novamente. Essa informao fica armazenada por um certo perodo de tempo, geralmente 2 dias, at ser atualizada
DNS
65
novamente em uma outra requisio.
Registros e Mensagens DNS
As informaes sobre o DNS so armazenadas em zonas. Em uma zona pode haver informaes sobre um ou mais
domnios. As informaes so adicionadas em uma zona do DNS, atravs da criao de registros de recursos (RR).
Um RR corresponde a uma tupla composta basicamente de quatro elementos (nome, valor, tipo e TTL-Tempo de
vida til do RR) e ele fornece mapeamentos de hospedeiros para endereos IP. Cada mensagem de resposta DNS
carrega um ou mais registros de recursos. Abaixo segue uma descrio dos principais tipos de RRs:
A: o tipo mais utilizado, faz o mapeamento de um nome DNS para um endereo IP verso 4, de 32 bits.
Exemplo:
host1.example.microsoft.com. IN A 127.0.0.1
AAAA: Faz o mapeamento de um nome DNS para um endereo IP verso 6, de 128 bits.
Exemplo:
ipv6_host1.example.microsoft.com. IN AAAA 4321:0:1:2:3:4:567:89ab
CNAME: (Canonical Name)- Mapeia um alias (apelido) ou nome DNS alternativo. Por exemplo, suponha que o site
da empresa esteja no servidor srv01.abc.com.br. Porm na internet, os usurios iro utilizar o nome
www.abc.com.br. Neste caso basta criar um alias www que faz referncia ao nome srv01.abc.com.br. Pronto, quando
os usurios digitarem www.abc.com.br estaro acessando, na verdade, o endereo srv01.abc.com.br. Porm para o
usurio, tudo ocorre transparentemente, como se o nome fosse realmente www.abc.com.br.
Exemplo:
www.abc.com.br. CNAME srv01.abc.com.br.
NS: utilizado para relacionar um nome DNS com o seu dono, ou seja, o servidor que a autoridade para o nome
DNS. Ou em outras palavras, o servidor DNS onde est a zona primria associada ao nome.
Exemplo:
example.microsoft.com. IN NS nameserver1.example.microsoft.com
MX: Fornece informaes utilizadas pelos servidores de e-mail, para o roteamento de mensagens. Cada host
definido em um registro MX deve ter um correspondente registro do tipo A em uma zona vlida, no servidor DNS.
Exemplo:
example.microsoft.com. MX 10 mailserver1.example.microsoft.com
Nota : O nmero de dois dgitos aps o MX, um indicativo da ordem de preferncia quando mais de um registro
MX configurado na mesma zona.
PTR: utilizado em zonas reversas, para fazer o mapeamento reverso, ou seja, o mapeamento de um nmero IP
para um nome. Ao criar um registro do tipo A, em uma zona direta, voc pode criar, automaticamente, o registro
PTR associado, se j houver uma zona reversa configurada.
Exemplo:
10.20.20.10.in-addr.arpa. PTR host.example.microsoft.com.
HINFO: Utilizado para armazenar informaes sobre o hardware do servidor DNS, tais como tipo de CPU, tipo e
verso do sistema operacional e assim por diante. Estas informaes podem ser utilizadas por protocolos como por
exemplo o ftp, o qual utiliza procedimentos diferentes, para diferentes sistemas operacionais
Exemplo:
my-computer-name.example.microsoft.com. HINFO INTEL-386 WIN32
DNS
66
As duas nicas espcies de mensagens DNS existentes so a de consulta e resposta DNS. Esses dois tipos de
mensagens possuem o mesmo formato e so compostas da seguinte maneira:
O cabealho formado por 12 bytes, dos quais 16 bits so designados a identificar a consulta. Esse identificador
copiado para a mensagem de retorno consulta da qual ele foi originado. Assim, a partir da propagao desse
identificador, vemos que possvel que o cliente combine respostas recebidas com consultas enviadas. O
cabealho ainda composto basicamente por mais cinco campos. So eles: Flags, que indica se uma mensagem
de consulta ou resposta e tambm se o servidor de nomes indicado na mensagem de resposta se trata de um
servidor com autoridade ou no, dentre outras funes; e quatro campos "nmeros de" (Perguntas, Respostas,
Autoridade e Informao adicional).
A seo de pergunta contm informaes a respeito de uma consulta que est sendo feita e inclui um campo para
nome de quem est sendo consultado e outro que indica o tipo de pergunta que est sendo feita sobre o nome.
Uma outra seo, chamada seo de resposta, possui os registros de recursos para os nomes referentes s
consultas. Como possvel que um mesmo hospedeiro tenha diversos endereos IP (como em servidores WEB
replicados), uma resposta pode retornar vrios RRs.
A seo de autoridade aquela que, como o prprio nome induz, contm registros de servidores com autoridade.
J a seo adicional contm outros registros teis, como por exemplo, conter o registro do tipo A que fornece o
endereo IP para o nome cannico do servidor de correio.
Listagem completa de RR's:
Referncias
[1] [1] en.wikipedia.org
[2] KUROSE,J. F.; ROSS,K. W. Redes de Computadores e a Internet - Uma abordagem top-down, 3 Edio
[3] KUROSE,J. F.; ROSS,K. W. Redes de Computadores e a Internet - Uma abordagem top-down, 3 Edio
Programao com sockets
67
Programao com sockets
Inicialmente preciso conceituar o que socket. A comunicao entre processos de software tornou-se indispensvel
nos sistemas atuais.
O elo entre os processos do servidor e do cliente o socket. Ele a porta na qual os processos enviam e recebem
mensagens. De acordo com JAMES F KUROSE: socket a interface entre a camada de aplicao e a de transporte
dentro de uma mquina.
Ento foram desenvolvidas diversas aplicaes cliente/servidor onde cliente(s) e servidor poderiam estar em
mquinas diferentes, distantes umas das outras. Os aplicativos do cliente e do servidor utilizam protocolos de
transporte para se comunicarem. Quando um aplicativo interage com o software de protocolo, ele deve especificar
detalhes, como por exemplo se um servidor ou um cliente. Alm disso, os aplicativos que se comunicam devem
especificar detalhes adicionais (por exemplo, o remetente deve especificar os dados a serem enviados, e o receptor
deve especificar onde os dados recebidos devem ser colocados).
Analisando o esquema acima percebemos que tudo acima da interface do socket, na camada de aplicao,
controlado pelo criador da aplicao. O controle da camada de transporte feito pelo Sistema Operacional.
Temos dois tipos de servios de transporte via socket: o confivel orientado a cadeia de bytes (byte steam) e os
datagramas no confiveis. O protocolo na qual implementado o primeiro o TCP, j o segundo implementado
no protocolo UDP.
Histrico
Na dcada de 1980 nos Estados Unidos a ARPA (Advanced Research Projects Agency of the Department of
Defense) deu Berkeley, Universidade da California a responsabilidade de construir um sistema operacional que
pudesse ser utilizado no suporte ARPAnet, que o antecessor da internet atual.
Neste sentido, foi desenvolvida uma interface e adicionada ao sistema operacional, Unix BSD (Berkeley Software
Distribution). Tal interface tinha justamente a funo de suporte a comunicao em rede. Esta interface ficou ento
conhecida como Berkeley Sockets Interface, e a base para a maioria das interfaces entre protocolos de internet
TCP/IP existente.
Existe uma nomenclatura especfica para se referir a cada lado da comunicao. Temos o servidor, que fica
esperando por conexes de entrada e que fornece certos tipos de servios outra parte. J o Cliente vem a ser quem
solicita a conexo ao servidor para fazer alguma requisio, algum pedido. importante dizer que no o
computador que distingue quem servidor e quem cliente, mas sim a forma como certo programa usa os sockets.
s vezes tambm se faz confuso no fato de se pensar que um servidor precisa ser um mainframe. Desktops como os
que usamos em casa funcionam tanto como cliente quanto como servidor, e o que ocorre freqentemente.
Cada socket tem um endereo nico na internet. Este endereo formado por um nmero IP e por um nmero de
porta. Devido s grandes dimenses da internet, no h como uma pessoa, ou mesmo uma mquina, saber o endereo
de todas as outras. Para resolver este problema foi criado protocolo DNS (Domain Name Service). Este protocolo
tem a funo de traduzir os nomes ou endereos de alto nvel das mquinas para o seu respectivo nmero IP. Assim,
ao se passar o endereo de um socket de um servidor, no se passa diretamente seu nmero IP, mas sim um nome
mais fcil de recordar e ento o DNS traduz para o endereo real, ou endereo IP.
Os sockets podem ser usados para comunicao via qualquer um dos protocolos UDP ou TCP. Assim, possvel
termos tanto comunicao orientada a conexo (via TCP), quanta no orientada a conexo (via UDP). O socket
abstrai esse conceito, permitindo assim a utilizao de qualquer um dos meios.
Programao com sockets
68
Programao de aplicaes TCP
Inicialmente o cliente deve contactar o servidor. Para isso, o processo servidor j deve estar executando o programa
antes de ser contactado alm de j ter criado o socket (porta) que aceita o contato do cliente. O cliente contacta o
servidor criando um socket TCP local e especifica o endereo IP e o nmero da porta do processo servidor. Quando
o servidor contactado o servidor cria um novo socket para se comunicar com o cliente, permitindo assim a
liberao do socket de boas-vindas para que possa ser contactado por outros clientes.
Do ponto de vista da aplicao, a conexo TCP um fluxo cotnuo de dados, a mensagem fragmentada em pacotes,
no h duplicao, ele garante a entrega e a ordem dos pacotes. A conexo ponto-a-ponto: um remetente e um
destintario conectado por sockets.
Este texto no tem como objetivo o aprendizado da linguagem Java, portanto s sero demonstradas e explicadas as
linhas de cdigos referentes s instrues que so utilizadas no programa exemplificado pela ilustrao acima.
Comeando com a aplicao que ser hospedada no Servidor.
No incio do programa, dever ser inserida essas linhas que importam a biblioteca que contm as classes que so
utilizadas em uma aplicao com Socket(java.net.*) e as classes de recepo de informao do teclado ou Socket do
cliente ou servidor(java.io.*).
import java.io.*;
import java.net.*;
Aqui criamos um objeto welcomeSocket o socket do lado do servidor, numero_da_porta dever ser substituido
pelo nmero da porta pela qual a aplicao cliente usar para conectar com o servidor. Este socket esperar a
requisio de conexo de um cliente.
ServerSocket welcomeSocket = new ServerSocket(numero_da_porta);
Como o programa servidor normalmente fica funcionando por tempo indefinido, coloca-se o restante das instrues
dentro de um loop infinito, como segue:
while(true) {
...
}
A prxima instruo cria um objeto connectionSocket do tipo Socket quando um cliente conectar ao servidor. O TCP
encarregar de criar uma conexo virtual direta entre esse socket e o socket do cliente de forma que todos os bytes
sero enviados ao servidor na ordem certa.
Socket connectionSocket = welcomeSocket.accept();
No caso do envio de um objeto do tipo String do cliente para o servidor, utilizamos as seguintes instrues para
receber os dados do cliente.
BufferedReader infoDoCliente = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream());
String mensagemDoCliente = infoDoCliente.readLine();
Depois de processar a informao enviada pelo cliente, queremos enviar um outro objeto(mensagem_para_cliente)
do tipo String de volta para o cliente, como um mensagem de dado recebido ou algo do tipo.
DataOutputStream infoParaCliente = new DataOutputStream(connectionSocket.getOutputStream());
infoParaCliente.writeBytes(mensagem_para_cliente);
Com isso termina-se o programa do lado do Servidor. Agora analisaremos o programa cliente.
Programao com sockets
69
Como no caso do programa servidor, o cdigo inicia com a importao das bibliotecas que contm as classes de
sockets e de envio de informaes.
import java.io.*;
import java.net.*;
Primeiramente, criamos o socket que conectar com o servidor. O primeiro parmetro passado ao construtor o
nome do servidor, por exemplo, 127.0.0.1 se a aplicao servidor estiver rodando no mesmo computador que a
aplicao cliente. O segundo parmetro o nmero da porta que informado ao socket servidor.
Socket clientSocket = new Socket("nome_do_servidor", numero_da_porta);
Aps a criao do socket cliente, temos que criar os objetos de cadeia que sero ligados ao socket. O objeto
infoParaServidor ser a cadeia que enviar informaes para o servidor e o objeto infoDoServidor ser a cadeia que
receber informaes do servidor.
DataOutputStream infoParaServidor = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader infoDoServidor = new BufferedReader(new InputStreamReader(client.getInputStream()));
Utilizaremos o mesmo caso do servidor, e enviaremos(mensagem_do_cliente) e
receberemos(mensagem_para_cliente) dois objetos do tipo String para exemplificar.
infoParaServidor.writeBytes(mensagem_do_cliente);
String mensagem_para_cliente = infoDoServidor.readLine();
Agora j podemos fechar o socket, e tambm a conexo TCP entre cliente e servidor.
clientSocket.close();
Sockets UDP so mais rpidos que sockets TCP; So mais simples, porm menos confivel; Em UDP no
necessrio abrir conexo, deste modo a comunicao ocorre apenas com o envio da mensagem; Um mensagem um
datagrama, que composto de um remetente (sender) e um receptor (receiver) e a mensagem (content).
Programao de sockets com UDP
A comunicao entre processos tambm possvel por UDP. Entretanto, UDP um servio sem conexo. Com isso,
no h o three-way handshaking (ou apresentao de trs vias)inicial, e assim no h um canal pr-estabelecido entre
os processos. Para que a comunicao entre os processos seja possvel, deve-se incorporar ao conjunto de bytes
enviados tanto o endereo IP do destino quanto a porta do processo de destino. Este conjunto (bytes + endereo IP +
porta) recebe o nome de pacote.
Com o pacote criado, ele colocado na rede atravs do socket. O processo receptor dever abrir o pacote para retirar
as informaes pertinentes. Sendo o UDP um servio sem conexo, no h garantias de que o pacote realmente
chegar ao seu destino.
Na comunicao por TCP, no necessrio que todas as cadeias de bytes recebam endereo IP e nmero de porta, j
que existe uma tubulao virtual, pela qual as cadeias fluem, que possui estas informaes adicionais. J na
comunicao por UDP, no havendo esta tubulao virtual, torna-se necessrio que as cadeias de bytes sejam
organizados em pacotes, todos com endereo IP e nmero de porta.
Abaixo segue uma exemplo de programao em socket com UDP. Assim como dito anteriormente, o objetivo aqui
no ensinar java, mas sim exemplificar programao com sockets. Comecemos pela parte do servidor.
DatagramSocket serverSocket = new DatagramSocket(9876);
Programao com sockets
70
Diferentemente do TCP, aqui criamos um objeto do tipo DatagramSocket e no ServerSocket. Os dados que sero
enviados e recebidos pelo servidor passaro todos atravs deste socket do tipo DatagramSocket. No se faz
necessrio a criao de um objeto DatagramSocket para cada nova conexo. Todas as conexes dos clientes passaro
por esse nico socket serverSocket. Isto no um problema porque cada vez que recebe um pacote, o servidor
responde e fica livre novamente, pois inexiste conexo entre ambos. O socket escuta na porta 9876.
while (true) { ... }
Loop infinito, onde o servidor fica esperando o recebimento de pacotes.
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
O objeto receivePacket aloca memria onde sero salvos os dados de entrada, recebidos pelo servidor. O mtodo
receive fica esperando o recebimento e armazena o pacote em receivePacket.
String sentence = new String(receivePacket.getData());
InetAddress IPAdress = receivePacket.getAddress();
int port = receivePacket.getPort();
Estas linhas desmontam o pacote, retirando informaes necessrias retransmisso. O objeto sentence recebe os
dados. IPAdress o nmero de IP do cliente, que necessrio para mandar a resposta assim como o nmero de porta
port. Todos estes dados foram enviados pelo cliente. Aps o processamento a resposta enviada para o respectivo
endereo IP e nmero de porta.
Do lado do cliente temos a criao do socket pelo qual ser enviado um pacote da seguinte forma:
DatagramSocket clientSocket = new DatagramSocket();
Note que a nica diferena entre o socket cliente e o servidor de que para o servidor foi necessrio especificar um
nmero de porta, e para o cliente no. Este comando no cria conexo alguma e nem contata o servidor, e
justamente por isso que no se faz necessrio especificar nome do servidor nem seu numero de porta.
InetAddress IPAddress = InetAddress.getByName(hostname);
Aqui criamos um objeto para armazenar o nmero de IP do Server. Hostname o nome (apelido) do servidor. O
mtodo getByName() faz uma consulta ao servidor DNS para saber qual o nmero IP do server.
byte[] sendData new byte[1024];
byte[] receiveData = new byte[1024];
Estes dois vetores armazenaro os dados enviados e recebidos respectivamente.
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAdress, 9876);
Esta linha cria o pacote que ser enviado ao Server. Nele esto gravados os dados em si, sendData, o tamanho dos
dados, sendData.length, o numero de IP do Server, IPAdress, e o numero da porta onde o Server espera, 9876.
clientSocket.send(sendPacket);
Depois de pronto, enviamos o pacote atravs do mtodo send do socket clientSocket. Enviado o pacote o cliente fica
esperando uma resposta.
clientSocket.receive(receivePacket);
Quando ocorre o recebimento do pacote, ele armazenado em receivePacket.
Fontes e Editores da Pgina
71
Fontes e Editores da Pgina
Introduo Fonte: http://pt.wikibooks.org/w/index.php?oldid=272727 Contribuidores: Abacaxi, Alan, Defender, 3 edies annimas
Arquitetura de redes de computadores Fonte: http://pt.wikibooks.org/w/index.php?oldid=270857 Contribuidores: Abacaxi, Algum, 1 edies annimas
Protocolos e servios de rede Fonte: http://pt.wikibooks.org/w/index.php?oldid=266767 Contribuidores: Abacaxi, Guiwp, 1 edies annimas
Meios fsicos de transmisso Fonte: http://pt.wikibooks.org/w/index.php?oldid=272037 Contribuidores: Abacaxi, Defender, 2 edies annimas
Comutao de circuitos e de pacotes Fonte: http://pt.wikibooks.org/w/index.php?oldid=247355 Contribuidores: Abacaxi
Pilha de protocolos da Internet Fonte: http://pt.wikibooks.org/w/index.php?oldid=265357 Contribuidores: Abacaxi, Stryn, 3 edies annimas
Histria da Internet Fonte: http://pt.wikibooks.org/w/index.php?oldid=271441 Contribuidores: Abacaxi, Marcos Antnio Nunes de Moura, 4 edies annimas
ATM Fonte: http://pt.wikibooks.org/w/index.php?oldid=267251 Contribuidores: Abacaxi
Camada de rede Fonte: http://pt.wikibooks.org/w/index.php?oldid=251995 Contribuidores: Abacaxi
Protocolo IP Fonte: http://pt.wikibooks.org/w/index.php?oldid=247335 Contribuidores: Abacaxi
Camada de transporte Fonte: http://pt.wikibooks.org/w/index.php?oldid=251994 Contribuidores: Abacaxi
Multiplexao e demultiplexao Fonte: http://pt.wikibooks.org/w/index.php?oldid=270383 Contribuidores: Abacaxi, 2 edies annimas
Protocolo UDP Fonte: http://pt.wikibooks.org/w/index.php?oldid=269946 Contribuidores: Abacaxi, 3 edies annimas
Transmisso de dados confivel Fonte: http://pt.wikibooks.org/w/index.php?oldid=247341 Contribuidores: Abacaxi
Protocolo TCP Fonte: http://pt.wikibooks.org/w/index.php?oldid=247338 Contribuidores: Abacaxi
Controle de congestionamento Fonte: http://pt.wikibooks.org/w/index.php?oldid=247342 Contribuidores: Abacaxi
Camada de aplicao Fonte: http://pt.wikibooks.org/w/index.php?oldid=269975 Contribuidores: Abacaxi, Marcos Antnio Nunes de Moura, 2 edies annimas
HTTP Fonte: http://pt.wikibooks.org/w/index.php?oldid=247350 Contribuidores: Abacaxi
FTP Fonte: http://pt.wikibooks.org/w/index.php?oldid=253150 Contribuidores: Abacaxi, Algum
Correio eletrnico Fonte: http://pt.wikibooks.org/w/index.php?oldid=247347 Contribuidores: Abacaxi
DNS Fonte: http://pt.wikibooks.org/w/index.php?oldid=266107 Contribuidores: Abacaxi, 1 edies annimas
Programao com sockets Fonte: http://pt.wikibooks.org/w/index.php?oldid=247348 Contribuidores: Abacaxi
Fontes, Licenas e Editores da Imagem
72
Fontes, Licenas e Editores da Imagem
Image:NetworkTopologies.png Fonte: http://pt.wikibooks.org/w/index.php?title=Ficheiro:NetworkTopologies.png Licena: Public Domain Contribuidores: Bensin, Fastily, Grafite,
Kilom691, Maksim, Malyszkz, Waldir, YMS, 16 edies annimas
Imagem:Camadas.jpg Fonte: http://pt.wikibooks.org/w/index.php?title=Ficheiro:Camadas.jpg Licena: Public Domain Contribuidores: Leofaragao
Imagem:Servicos.jpg Fonte: http://pt.wikibooks.org/w/index.php?title=Ficheiro:Servicos.jpg Licena: Public Domain Contribuidores: Leofaragao
Imagem:Modelos(cortado1).png Fonte: http://pt.wikibooks.org/w/index.php?title=Ficheiro:Modelos(cortado1).png Licena: Creative Commons Attribution-Share Alike Contribuidores:
Alancaio
Image:Checksum.svg Fonte: http://pt.wikibooks.org/w/index.php?title=Ficheiro:Checksum.svg Licena: Public Domain Contribuidores: Original by Helix84, adapted by Jorge Stolfi
Image:Versiones_de_TCP_en_BSD.svg Fonte: http://pt.wikibooks.org/w/index.php?title=Ficheiro:Versiones_de_TCP_en_BSD.svg Licena: Public Domain Contribuidores: Adam majewski,
Berthgmn, Clemente, Mdd, Popolon, Pyfisch, Skim, WikipediaMaster, 1 edies annimas
Image:TCP_windowing.png Fonte: http://pt.wikibooks.org/w/index.php?title=Ficheiro:TCP_windowing.png Licena: GNU Free Documentation License Contribuidores: User:Nuno Tavares
Image:Estrutura_TCP.png Fonte: http://pt.wikibooks.org/w/index.php?title=Ficheiro:Estrutura_TCP.png Licena: Attribution Contribuidores: Lauro Ramon Gomides
Image:Comunicao_TCP_cliente_servidor.png Fonte: http://pt.wikibooks.org/w/index.php?title=Ficheiro:Comunicao_TCP_cliente_servidor.png Licena: GNU Free Documentation
License Contribuidores: Diego.takashi
Imagem:TCP termination.png Fonte: http://pt.wikibooks.org/w/index.php?title=Ficheiro:TCP_termination.png Licena: GNU Free Documentation License Contribuidores: User:Nuno
Tavares
Imagem:Cliente-servidor.jpeg Fonte: http://pt.wikibooks.org/w/index.php?title=Ficheiro:Cliente-servidor.jpeg Licena: Creative Commons Attribution-Share Alike Contribuidores: Alancaio
Imagem:ProjetoP2P.jpeg Fonte: http://pt.wikibooks.org/w/index.php?title=Ficheiro:ProjetoP2P.jpeg Licena: Creative Commons Attribution-Share Alike Contribuidores: Alancaio
Imagem:Hbrido.jpeg Fonte: http://pt.wikibooks.org/w/index.php?title=Ficheiro:Hbrido.jpeg Licena: Creative Commons Attribution-Share Alike Contribuidores: Alancaio
Ficheiro:DNS_RR.jpg Fonte: http://pt.wikibooks.org/w/index.php?title=Ficheiro:DNS_RR.jpg Licena: Creative Commons Zero Contribuidores: 1freemind4u
Licena
73
Licena
Creative Commons Attribution-Share Alike 3.0
//creativecommons.org/licenses/by-sa/3.0/