Vous êtes sur la page 1sur 223

ApostiladeRededeComputadores

UniversidadeFederaldeItajub

InstitutodeEngenhariadeSistemaseTecnologiasda
Informao

GrupodePesquisasemEngenhariadeSistemaseComputao

Prof.IsaasLima

Prefcio
Esta apostila dedica-se aos cursos de Redes de Computadores I e II ministrados na
Universidade Federal de Itajub, cujos captulos e assuntos tratados nas sees seguem
exatamente o livro texto referenciado no plano de ensino, e que serviu de base para uma
traduo livre.
Portanto, dentro das expectativas de um curso introdutrio ou de nvel mais avanado,
algumas incorrees so meramente erros de compreenso ou entendimento do autor. Assim,
numa tentativa de apresentar um contedo abrangente e necessariamente direto, procurou-se
descrever da melhor forma possvel, os termos que por ora so correntes em Rede de
Computadores em geral.
De outra forma, apesar de um nvel relativamente satisfatrio, uma traduo livre nem
sempre se prende rigorosamente ao contedo explcito da obra; cabendo a ressalva de alguns
questionamentos em relao estrutura das sees, os termos tcnicos e as descries, bem
como ao prprio texto traduzido dos pargrafos e sees.
Fica ainda a necessidade de recorrncia ao livro original em ingls, cujo
acompanhamento recomendado desde o incio do curso, e consta das referncias bibliogrficas
da ementa de Redes de Computadores I e II.

2/223

Sumrio

Captulo 1 - Meios de Transmisso ............................................................................. 12


1.1 Introduo ............................................................................................................ 12
1.2 Os Fios de Cobre.................................................................................................. 12
1.3 Fibras pticas ...................................................................................................... 13
1.4 Rdio-Freqncia ................................................................................................. 13
1.5 Satlites ................................................................................................................ 14
1.5.1 Satlites Geo-Sincronizados (GEOS) ........................................................... 14
1.5.2 Satlites de rbita Baixa (LEOS) ................................................................. 14
1.6 Conjuntos de Satlites de rbita Baixa................................................................ 15
1.7 Microondas........................................................................................................... 15
1.8 Infravermelho....................................................................................................... 15
1.9 Laser..................................................................................................................... 15
Captulo 2 Comunicao Local Assncrona ............................................................ 16
2.1 Introduo ............................................................................................................ 16
2.2 A Necessidade da Comunicao Assncrona ....................................................... 16
2.3 Usando a Corrente Eltrica no Envio de Dados................................................... 16
2.4 Padres de Comunicao ..................................................................................... 17
2.5 Taxa de Envio, Framing e Erros .......................................................................... 18
2.6 Comunicao Assncrona Full-Duplex ................................................................ 18
2.7 Limitaes em um Hardware Real ....................................................................... 19
2.8 Largura de Banda de Hardware e Transmisso de Bits ....................................... 20
2.9 O Efeito dos Rudos na Comunicao de Dados.................................................. 20
2.10 Importncia para Redes de Dados...................................................................... 20
Captulo 3 Tecnologia de LANs e Topologias de Rede........................................... 22
3.1 Introduo ............................................................................................................ 22
3.2 Conexo Direta Ponto-a-Ponto ............................................................................ 22
3.3 Canais de Comunicao Compartilhados............................................................. 23
3.4 Importncia das LANs e Localizao de Referncia ........................................... 23
3.5 Topologia de LANs.............................................................................................. 24
3.5.1 Topologia em Estrela .................................................................................... 24
3.5.2 Topologia em Anel ....................................................................................... 24
3.5.3 Topologia dem Barramento .......................................................................... 25
3.5.4 A Razo das Vrias Topologias.................................................................... 25
3.6 Exemplo de Rede em Barramento: A Ethernet .................................................... 26
3.6.1 Histria da Ethernet ...................................................................................... 26
3.6.2 Compartilhamento na Ethernet ..................................................................... 26
3.7 Portadora Lgica em Rede de Mltiplos Acessos (CSMA)................................. 26
3.8 Deteco de Colises e Impedimento - CSMA/CD ............................................. 27
3.9 LANs Wireless e CSMA/CA ............................................................................... 27
3.10 Outro Exemplo de Rede de Barramento: A LocalTalk ...................................... 28
3.11 Exemplo de Rede em Anel: IBM Token Ring ................................................... 29
3.12 Outro Exemplo de Rede em Anel: FDDI ........................................................... 29
3.13 Exemplo de Rede em Estrela: ATM .................................................................. 30

3/223

Captulo 4 Endereamentos de Hardware e Identificao do Tipo de Frame ..... 32


4.1 Introduo ............................................................................................................ 32
4.2 Especificando um Receptor.................................................................................. 32
4.3 Como o Hardware de uma LAN usa o Endereo para Filtrar os Pacotes ............ 32
4.4 Formato de um Endereo Fsico .......................................................................... 33
4.5 Broadcasting......................................................................................................... 34
4.6 Multicasting ......................................................................................................... 34
4.7 Multicasting Address ........................................................................................... 35
4.8 Identificando o Contedo dos Pacotes ................................................................. 35
4.9 Cabealho de Frames e Formato de Frames......................................................... 36
4.10 Exemplo da Formatao de Frames ................................................................... 36
4.11 Redes que No Auto-Identificam os Frames...................................................... 37
4.12 Anlise de Rede, Endereos Fsicos e Tipo de Frames...................................... 38
Captulo 5 Cabeamentos de LAN, Topologia Fsica e Interface de Hardware .... 40
5.1 Introduo ............................................................................................................ 40
5.2 Velocidades de LANs e Computadores ............................................................... 40
5.3 Interface de Rede ................................................................................................. 40
5.4 Conexo NIC e Rede............................................................................................ 41
5.5 Thick Ethernet...................................................................................................... 41
5.6 Multiplexador de Conexo................................................................................... 42
5.7 Thin Ethernet........................................................................................................ 43
5.8 Par Tranado ........................................................................................................ 44
5.9 Vantagens e Desvantagens dos Sistemas de Cabeamento.................................... 44
5.10 Placas de Rede e Esquemas de Cabeamento...................................................... 46
Captulo 6 Extenso das LANs................................................................................. 47
6.1 Introduo ............................................................................................................ 47
6.2 Limitao de Distncia e Projeto de LAN ........................................................... 47
6.3 Extenses de Fibra ptica.................................................................................... 47
6.4 Repetidores........................................................................................................... 48
6.5 Bridges ................................................................................................................. 48
6.6 Filtro de Frames ................................................................................................... 49
6.7 Startup e Steady State de Redes com Bridge ....................................................... 49
6.8 Bridge e Edificaes ............................................................................................ 50
6.9 Bridges em Redes de Longa Distncia................................................................. 50
6.10 Bridges em Crculos........................................................................................... 51
6.11 Switching ........................................................................................................... 52
Captulo 7 WAN e Roteadores ................................................................................. 53
7.1 Introduo ............................................................................................................ 53
7.2 Grandes Redes e Grandes reas .......................................................................... 53
7.3 O Roteador ........................................................................................................... 53
7.4 Formando uma WAN........................................................................................... 54
7.5 Store e Forward .................................................................................................... 54
7.6 O Endereo Fsico ................................................................................................ 55
7.7 Next-Hop.............................................................................................................. 55
7.8 Relao de Endereamento Hierrquico para o Roteador.................................... 56
7.9 Roteamento numa WAN ...................................................................................... 56
7.10 Uso de Rotas Padro .......................................................................................... 57
7.11 Montando a Routing Table................................................................................. 58
7.12 Calculando o Caminho mais Curto .................................................................... 58
7.13 Vetor de Distncias ............................................................................................ 59
7.14 Link-State Routing (SPF)................................................................................... 59
7.15 Exemplos de Tecnologias WAN........................................................................ 59
4/223

Captulo 8 Rede Proprietria, Padres de Servios e Desempenho ...................... 60


8.1 Introduo ............................................................................................................ 60
8.2 Rede Proprietria.................................................................................................. 60
8.3 Virtual Private Networks...................................................................................... 61
8.4 Padres de Servios ............................................................................................. 61
8.5 Durao de Conexes e Persistncia.................................................................... 62
8.6 Endereos e Identificadores de Conexo ............................................................. 63
8.7 Caractersticas do Desempenho de Redes............................................................ 64
8.7.1 Delay............................................................................................................. 64
8.7.2 Taxa de Transferncia................................................................................... 64
8.7.3 A relao entre Delay e Taxa de Transferncia ............................................ 65
8.7.4 Produto do Delay e da Taxa de Transferncia .............................................. 65
Captulo 9 Protocolos e Diviso em Camadas......................................................... 66
9.1 Introduo ............................................................................................................ 66
9.2 A Necessidade dos Protocolos ............................................................................. 66
9.3 Camada de Protocolos.......................................................................................... 66
9.4 Plano e Projeto de Protocolos .............................................................................. 66
9.5 As Sete Camadas.................................................................................................. 67
9.6 Protocolos em Camadas ....................................................................................... 68
9.7 Como Interagem as Camadas de Protocolos ........................................................ 69
9.8 Cabealhos ........................................................................................................... 69
9.9 Base Cientfica para a Diviso em Camadas........................................................ 70
9.10 Tcnicas Usadas nos Protocolos ........................................................................ 71
9.10.1 Seqncia de Entrega Fora da Ordem......................................................... 71
9.10.2 Seqncia para Eliminar Pacotes Duplicados............................................. 71
9.10.3 Retransmisso de Pacotes Perdidos ............................................................ 71
9.10.4 Evitando o Replay Causado por Delay Excessivo...................................... 72
9.10.5 Controle de Fluxo para Evitar o Excesso de Dados.................................... 72
9.10.6 Mecanismos para Evitar Congestionamento da Rede................................. 74
Captulo 10 A Internet: Conceitos, Arquitetura e Protocolos ............................... 75
10.1 Introduo .......................................................................................................... 75
10.2 A Motivao para Estudar a Internet ................................................................. 75
10.3 O Conceito de Servio Universal ....................................................................... 75
10.4 Servio Universal em um Mundo Heterogneo ................................................. 75
10.5 Internet (entre Redes)......................................................................................... 75
10.6 Redes Conectadas e Roteadores......................................................................... 76
10.7 Arquitetura da Internet ....................................................................................... 76
10.8 Realizando o Servio Universal ......................................................................... 77
10.9 A Rede Virtual ................................................................................................... 77
10.10 Protocolos da Internet ...................................................................................... 78
10.11 Camadas e Protocolos TCP/IP ......................................................................... 78
Captulo 11 IP: Internet Protocol ............................................................................ 80
11.1 Introduo .......................................................................................................... 80
11.2 Endereos em uma Internet................................................................................ 80
11.3 O Esquema de Endereamento IP ...................................................................... 80
11.4 Hierarquia IP ...................................................................................................... 80
11.5 Classes de Endereamento IP............................................................................. 81
11.6 Identificando a Classe de um Endereo IP......................................................... 81
11.7 Notao Decimal com Ponto.............................................................................. 82
11.8 Endereos Especiais ........................................................................................... 83
11.8.1 Endereos de Rede...................................................................................... 83
5/223

11.8.2 Endereo de Transferncia Direta............................................................... 84


11.8.3 Endereo de Transferncia Limitada .......................................................... 84
11.8.4 IP de um Host ............................................................................................. 84
11.8.5 Endereo de Loopback................................................................................ 84
11.9 Resumo dos Endereos Especiais ...................................................................... 84
11.10 Roteadores e o Princpio de Endereamento de IP .......................................... 85
11.11 Multi-Homed Hosts.......................................................................................... 85
Captulo 12 Mapeando um IP para um Endereo Fsico....................................... 86
12.1 Introduo .......................................................................................................... 86
12.2 Protocolo de Endereamento e Entrega de Pacotes ........................................... 86
12.3 Mapeamento de Endereos ................................................................................ 86
12.4 Tcnicas de Mapeamento de Endereos............................................................. 87
12.5 Mapeamento de Endereos com Busca em Tabelas........................................... 87
12.6 Mapeamento de Endereos com Computao de Forma Fixa ........................... 88
12.7 Mapeamento de Endereos com Troca de Mensagens....................................... 88
12.8 Protocolo de Mapeamento de Endereos ........................................................... 89
12.9 Entrega da Mensagem ARP ............................................................................... 89
12.10 Formato da mensagem ARP............................................................................. 90
12.11 Enviando a Mensagem ARP ............................................................................ 91
12.12 Identificando a Mensagem ARP ...................................................................... 91
Captulo 13 Datagramas IP e Encaminhamento de Datagramas.......................... 92
13.1 Introduo .......................................................................................................... 92
13.2 Servio no Orientado para Conexo................................................................. 92
13.3 Pacotes Virtuais.................................................................................................. 92
13.4 O Datagrama IP.................................................................................................. 93
13.5 Encaminhando um Datagrama IP....................................................................... 93
13.6 Endereos IP e Entradas das Tabelas de Roteamento ........................................ 94
13.7 O Campo Mscara e Encaminhamento de Datagramas ..................................... 94
13.8 Destino e Endereos do Prximo Salto .............................................................. 95
13.9 Entrega a Qualquer Custo .................................................................................. 95
13.10 Formato do cabealho IP.................................................................................. 96
Captulo 14 Encapsulamento IP, Fragmentao e Agrupamento......................... 97
14.1 Introduo .......................................................................................................... 97
14.2 Transmisso de Datagramas e Frames ............................................................... 97
14.3 Encapsulamento ................................................................................................. 97
14.4 Transmisso Atravs da Internet........................................................................ 98
14.5 MTU, Tamanho do Datagrama e Encapsulamento ............................................ 99
14.6 Agrupamento.................................................................................................... 100
14.7 Identificando um Datagrama............................................................................ 100
14.8 Perda de Fragmento ......................................................................................... 101
14.9 Fragmentando um Fragmento .......................................................................... 101
Captulo 15 O IP do futuro (IPv6) ......................................................................... 102
15.1 Introduo ........................................................................................................ 102
15.2 O Sucesso do IP ............................................................................................... 102
15.3 A Motivao da Mudana ................................................................................ 102
15.4 Nome e Nmero de Verso .............................................................................. 103
15.5 Caracterizao dos Atributos do IPv6.............................................................. 103
15.6 Formato do Datagrama do IPv6 ....................................................................... 104
15.7 Formato do Cabealho Base do IPv6 ............................................................... 104
15.8 Como o IPv6 Lida com Mltiplos Cabealhos ................................................ 105
15.9 Fragmentao e o Path MTU ........................................................................... 106
15.10 O Propsito dos Mltiplos Cabealhos .......................................................... 106
6/223

15.11 Endereamento no IPv6 ................................................................................. 107


15.12 Notao Hexadecimal do IPv6....................................................................... 108
Captulo 16 Mecanismo de Informao de Erro (ICMP) .................................... 109
16.1 Introduo ........................................................................................................ 109
16.2 Semnticas: A Qualquer Custo e Deteco de Erro ......................................... 109
16.3 Protocolo de Mensagem de Controle de Erro .................................................. 109
16.4 Transporte da Mensagem ICMP ...................................................................... 112
16.5 Utilizando Mensagens ICMP para Testar Alcanabilidade ............................. 112
16.6 Utilizando ICMP para Traar uma Rota .......................................................... 113
16.7 Utilizando ICMP para Determinar a MTU do Caminho.................................. 113
Captulo 17 TCP: Servio de Transporte Confivel............................................. 115
17.1 Introduo ........................................................................................................ 115
17.2 A necessidade de um Transporte Confivel..................................................... 115
17.3 O Protocolo de Controle de Transmisso (TCP).............................................. 115
17.4 O Servio que o TCP Fornece aos Aplicativos ................................................ 115
17.5 Servio Ponto-a-Ponto e Datagramas............................................................... 116
17.6 Confiabilidade.................................................................................................. 117
17.7 Perda de Pacotes e Retransmisso.................................................................... 117
17.8 Retransmisso Adaptativa................................................................................ 118
17.9 Comparao de Tempos de Retransmisso...................................................... 118
17.10 Buffers e Controle de Fluxo........................................................................... 119
17.11 Three-Way Handshake................................................................................... 120
17.12 Controle de Congestionamento ...................................................................... 121
17.13 Formato do Segmento TCP............................................................................ 121
Captulo 18 Interao Cliente-Servidor ................................................................ 123
18.1 Introduo ........................................................................................................ 123
18.2 As Funcionalidades que o Software de Aplicao Fornece ............................. 123
18.3 As Funcionalidades Providas pela Internet ...................................................... 124
18.4 Fazendo Contato .............................................................................................. 124
18.5 O Paradigma Cliente-Servidor ......................................................................... 124
18.6 Caractersticas de Clientes e de Servidores...................................................... 124
18.7 Programas Servidores e Computadores da Classe de Servidores..................... 125
18.8 Pedidos, Respostas e Direo do Fluxo de Dados ........................................... 125
18.9 Protocolos de Transporte e Interao Cliente-Servidor ................................... 126
18.10 Mltiplos Servios num Computador ............................................................ 126
18.11 Identificando um Servio Particular............................................................... 127
18.12 Mltiplas Cpias de um Servidor para um s Servio ................................... 127
18.13 Criao Dinmica do Servidor ....................................................................... 128
18.14 Protocolos de Transporte e Comunicao No Ambgua .............................. 128
18.15 Conexo-Orientada e Transporte Sem Conexo ............................................ 129
18.16 Um Servio Atravs de Vrios Protocolos..................................................... 129
18.17 Interaes Complexas Cliente-Servidor......................................................... 130
18.18 Interaes e Dependncias Circulares............................................................ 130
Captulo 19 A Interface Socket .............................................................................. 131
19.1 Introduo ........................................................................................................ 131
19.2 Application Program Interface ......................................................................... 131
19.3 O Socket API ................................................................................................... 131
19.4 Sockets and Socket Libraries ........................................................................... 132
19.5 Comunicao Socket e UNIX I/O.................................................................... 132
19.6 Sockets, Descritores e Network I/O ................................................................. 132
19.7 Parmetros e o Socket API............................................................................... 133
19.8 Procedimentos do Socket API.......................................................................... 133
7/223

19.8.1 O Procedimento Socket ............................................................................ 133


19.8.2 O Procedimento Close .............................................................................. 134
19.8.3 O Procedimento Bind ............................................................................... 134
19.8.4 O Procedimento Listen ............................................................................. 135
19.8.5 O Procedimento Accept ............................................................................ 135
19.8.6 O Procedimento Connect .......................................................................... 136
19.8.7 Os Procedimentos Send, Sendto e Sendmsg............................................. 136
19.8.8 Os Procedimentos Recv, Recvfrom e Recvmsg ....................................... 137
19.9 Lendo e Escrevendo com Sockets.................................................................... 138
19.10 Sockets, Processos e Heranas ....................................................................... 138
Captulo 20 Exemplo Cliente - Servidor................................................................ 139
20.1 Introduo ........................................................................................................ 139
20.2 Comunicao com Conexo Orientada ............................................................ 139
20.3 Um exemplo de Servio ................................................................................... 139
20.4 Argumentos das Linhas de Comandos deste Exemplo de Programa ............... 139
20.5 Seqncia de Processos no Socket................................................................... 140
20.6 Exemplo de Cdigo Cliente ............................................................................. 141
20.7 Exemplo de Cdigo Servidor ........................................................................... 143
20.8 Servio Stream e Mltiplas Chamadas Recv ................................................... 144
20.9 Processos do Socket e Bloqueios ..................................................................... 145
20.10 Tamanho do Cdigo e Relatrio de Erros...................................................... 145
20.11 Usando o Exemplo Cliente com Outro Servio ............................................. 145
20.12 Utilizando Outro Cliente para Testar o Servidor ........................................... 146
Captulo 21 O Domain Name System .................................................................... 147
21.1 Introduo ........................................................................................................ 147
21.2 Estrutura de Nomes de Computadores ............................................................. 147
21.3 Estrutura Geogrfica ........................................................................................ 149
21.4 Nomes de Domnios Dentro de uma Organizao ........................................... 149
21.5 O Modelo Cliente-Servidor do DNS................................................................ 149
21.6 A Hierarquia de Servidores DNS ..................................................................... 150
21.7 Arquiteturas de Servidores............................................................................... 150
21.8 Localidade de Referncia e Mltiplos Servidores............................................ 151
21.9 Links entre Servidores...................................................................................... 151
21.10 Resoluo de Nomes ...................................................................................... 151
21.11 Otimizao do Desempenho do DNS............................................................. 152
21.12 Tipos de Entradas no DNS............................................................................. 152
21.13 Apelidos Utilizando o Tipo CNAME ............................................................ 153
21.14 Uma Conseqncia Importante dos Tipos Mltiplos..................................... 153
21.15 Abreviaes e o DNS ..................................................................................... 154
Captulo 22 Descrio do Correio Eletrnico e Transferncias .......................... 155
22.1 Introduo ........................................................................................................ 155
22.2 O Paradigma do E-mail.................................................................................... 155
22.3 Caixas de E-mail e Endereos.......................................................................... 155
22.4 Formato da Mensagem de E-mail .................................................................... 156
22.5 Extenses do E-mail com Mltiplos Propsitos .............................................. 156
22.6 E-mail e Aplicativos......................................................................................... 157
22.7 Transferncia de E-mail ................................................................................... 158
22.8 Simple Mail Transfer Protocol......................................................................... 158
22.9 Otimizao de Mltiplos Destinatrio num Computador................................. 158
22.10 Listas e Remetentes de E-mails...................................................................... 159
22.11 Mail Gateways ............................................................................................... 159
22.12 Transmisso de E-mail e Endereos de E-mail.............................................. 160
22.13 Acesso Caixa de Mensagens ....................................................................... 160
8/223

22.14 Conexo Dial-up e POP ................................................................................. 161


Captulo 23 Transferncia de arquivos e Acesso Remoto de arquivos ............... 163
23.1 Introduo ........................................................................................................ 163
23.2 Transferncia de Dados e Processamento Distribudo..................................... 163
23.3 Salvando Resultados Intermedirios ................................................................ 163
23.4 Generalizao da Transferncia de Arquivos................................................... 164
23.5 Interatividade e Conjunto de Paradigmas da Transferncia............................. 164
23.6 O Protocolo de Transferncia de Arquivos (FTP) ........................................... 165
23.7 Modelo Geral do FTP e Interface com o Usurio ............................................ 165
23.8 Comandos FTP................................................................................................. 165
23.9 Conexes, Autorizaes e Permisses de Arquivos......................................... 167
23.10 Acesso Annimo de Arquivos ....................................................................... 167
23.11 Transferncia de Arquivos em Ambas as Direes ....................................... 167
23.12 Expanso por Caracter Curinga em Nomes de Arquivos............................... 168
23.13 Traduo de Nomes de Arquivos................................................................... 168
23.14 Mudando de Diretrio e Listando o Contedo............................................... 168
23.15 Tipos de Arquivos e Modos de Transferncia ............................................... 169
23.16 Verbose Output .............................................................................................. 169
23.17 Interaes Cliente-Servidor no FTP............................................................... 170
23.18 Conexes de Controle e de Dados ................................................................. 170
23.19 Conexes de Dados e Fim de Arquivo........................................................... 170
23.20 Protocolo de Transferncia de Arquivos Trivial ............................................ 171
23.21 Sistema de Arquivos de Rede ........................................................................ 171
Captulo 24 Pginas da World Wide Web e Navegao ...................................... 173
24.1 Introduo ........................................................................................................ 173
24.2 Interface de Browser ........................................................................................ 173
24.3 Hipertexto e Hipermdia................................................................................... 173
24.4 Representao de Documentos ........................................................................ 174
24.5 Formato e Representao HTML..................................................................... 174
24.6 Exemplo de Sinalizadores de Formatao HTML ........................................... 175
24.7 Ttulos .............................................................................................................. 176
24.8 Listas ................................................................................................................ 176
24.9 Imagens Grficas numa Pgina da Web........................................................... 177
24.10 Identificando uma Pgina............................................................................... 177
24.11 Links em Hipertextos de um Documento para Outro .................................... 178
24.12 Interao Cliente-Servidor ............................................................................. 179
24.13 Transporte de Documentos Web e HTTP ...................................................... 179
24.14 Arquitetura do Browser.................................................................................. 179
24.15 Clientes Opcionais ......................................................................................... 180
24.16 Armazenamento em Cache nos Browsers Web ............................................. 181
Captulo 25 RPC e Middleware.............................................................................. 183
25.1 Introduo ........................................................................................................ 183
25.2 Programando Clientes e Servidores ................................................................. 183
25.3 Paradigma de Chamada de Rotinas Remotas................................................... 183
25.4 O Paradigma RPC ............................................................................................ 185
25.5 Stubs de Comunicao ..................................................................................... 186
25.6 Representao de Dados Externos ................................................................... 187
25.7 Middleware e Middleware com Orientao a Objeto ...................................... 187
25.7.1 ONC RPC ................................................................................................. 187
25.7.2 DCE RPC.................................................................................................. 188
25.7.3 MSRPC ..................................................................................................... 188
25.7.4 CORBA..................................................................................................... 188
25.7.5 MSRPC2 ................................................................................................... 188
9/223

25.7.6 COM/DCOM ............................................................................................ 188


Captulo 26 Tecnologia CGI para Documentos Dinmicos Web ........................ 190
26.1 Introduo ........................................................................................................ 190
26.2 Trs Tipos Bsicos de Documentos Web......................................................... 190
26.3 As Vantagens e Desvantagens de Cada Tipo de Documento........................... 191
26.4 Implementao de Documentos Dinmicos..................................................... 192
26.5 O Padro CGI................................................................................................... 192
26.6 Resposta de um Programa CGI ........................................................................ 192
26.7 Exemplo de um Programa CGI ........................................................................ 193
26.8 Parmetros e Variveis Globais ....................................................................... 194
26.9 Informao de Estado....................................................................................... 195
26.10 O Script CGI com Informao de Estado de Longo Termo........................... 195
26.11 O script CGI com Informao de Estado de Curto Termo............................. 196
26.12 Formulrio e Interaes.................................................................................. 198
Captulo 27 Tecnologia Java para Documentos Ativos Web............................... 199
27.1 Introduo ........................................................................................................ 199
27.2 Uma maneira precoce de Atualizaes Contnuas ........................................... 199
27.3 Documentos Ativos e Sobrecarga no Servidor ................................................ 200
27.4 Representao e Traduo de um Documento Ativo ....................................... 200
27.5 Tecnologia Java................................................................................................ 201
27.6 A Linguagem de Programao Java................................................................. 202
27.6.1 Caractersticas da Linguagem................................................................... 202
27.6.2 Similaridades ao C++ ............................................................................... 203
27.7 O Ambiente de Tempo de Execuo no Java................................................... 203
27.8 A Biblioteca Java ............................................................................................. 204
27.9 O Conjunto de Ferramentas Grficas ............................................................... 205
27.10 Usando os Grficos Java em um Computador Particular............................... 206
27.11 Intrpretes Java e Navegadores ...................................................................... 206
27.12 Compilando um Programa Java ..................................................................... 207
27.13 Um Exemplo de Applet.................................................................................. 208
27.14 Chamando um Applet .................................................................................... 209
27.15 Exemplo da Interao com o Navegador ....................................................... 210
27.16 Erros e Tratamento com Excees ................................................................. 211
27.17 Alternativas e Variaes ................................................................................ 212
Captulo 28 Administrao de Rede (SNMP) ....................................................... 213
28.1 Introduo ........................................................................................................ 213
28.2 Administrando uma Internet ............................................................................ 213
28.3 O Perigo de Falhas Ocultas .............................................................................. 214
28.4 Software de Administrao de Rede ................................................................ 214
28.5 Clientes, Servidores, Administradores e Agentes ............................................ 214
28.6 Protocolo de Administrao de Rede Simples ................................................. 215
28.7 Paradigma Fetch-Store ..................................................................................... 215
28.8 O MIB e Nomes de Objetos ............................................................................. 216
28.9 A Variedade de Variveis MIB........................................................................ 216
28.10 Variveis MIB que Correspondem a Vetores ................................................ 216
Captulo 29 Segurana de Rede.............................................................................. 218
29.1 Introduo ........................................................................................................ 218
29.2 Redes Seguras e Polticas de Segurana .......................................................... 218
29.3 Aspectos da Segurana..................................................................................... 219
29.4 Responsabilidade e Controle............................................................................ 219
29.5 Mecanismos de Integridade.............................................................................. 219
10/223

29.6 Controle de Acesso e Senhas ........................................................................... 220


29.7 Encriptao e Privacidade ................................................................................ 220
29.8 Encriptao por Chave Pblica ........................................................................ 221
29.9 Autenticao com Assinaturas Digitais ........................................................... 221
29.10 Filtragem de Pacotes ...................................................................................... 222
29.11 Conceito de Firewall da Internet .................................................................... 223

11/223

Captulo 1 - Meios de Transmisso


1.1 Introduo
Pode-se dizer que toda comunicao entre computadores envolve codificao de
informaes em uma troca e transferncia de energia atravs de um meio. Assim, neste captulo
discutido o conceito bsico da transmisso de dados, examinando os meios de transmisso que
so utilizados em modernos sistemas de redes de computadores.

1.2 Os Fios de Cobre


As redes de computadores tradicionais usam fios como meio principal de conexo entre
computadores, devido ao baixo custo e a facilidade de instalao. Alm disso, os fios podem ser
feitos de diferentes metais, e muitas redes utilizam o cobre por ter baixa resistncia eltrica, o
que significa que um sinal pode ser enviado a uma distncia muito maior.
O tipo de fiao utilizado em redes de computadores escolhido de maneira que a
interferncia seja a mnima possvel. A interferncia tem origem quando um sinal eltrico
transmitido em um cabo, e este atua como uma pequena estao de rdio (o fio emite uma
pequena quantidade de energia eletromagntica que se propaga no ar). Essa energia ao encontrar
outro fio produz uma pequena corrente eltrica. O somatrio das correntes geradas depende da
potncia das ondas eletromagnticas e da posio do fio. Normalmente, essa interferncia s
passa a ser detectada quando dois fios so colocados lado a lado e em paralelo, assim um sinal
eltrico enviado em um fio pode gerar um sinal similar em outro. Os computadores no
conseguem distinguir sinais gerados acidentalmente, assim so tomadas algumas iniciativas para
reduzir a interferncia.
Na tentativa de minimizar a interferncia so usados dois tipos bsicos de fiao: o par
tranado e o cabo coaxial. O par tranado tambm usado em sistemas de telefonia.
O simples tranar dos cabos altera as propriedades eltricas dos fios, ajudando a torn-lo
adequado ao uso em uma rede. Primeiro, porque limita a energia eletromagntica que o prprio
fio emite. Segundo, porque os torna menos susceptvel energia eletromagntica emitida por
outros fios. A figura a seguir ilustra um fio tipo par tranado.

O cabo coaxial apresenta uma maior proteo que o par tranado, em vez de tranar os
fios, utilizado um anel metlico em volta de um ncleo, com um nico fio.
Este anel de metal forma um cilindro flexvel em volta do fio isolado, o que gera uma
barreira radiao eletromagntica. Esta barreira protege o fio de duas maneiras, evitando que o
mesmo gere radiao eletromagntica, e evitando que a radiao eletromagntica gerada por
outros fios interfira no mesmo. Sua eficcia se deve ao fato de o anel blindar o fio central.
Assim o cabo coaxial pode ser posto em paralelo com outros cabos. A figura a seguir ilustra o
escudo e o cabo coaxial.

12/223

A idia de um escudo para proteger a fiao tambm aplicada ao par tranado. Um par
tranado protegido consiste em um par de fios blindados por uma rede metlica. Cada fio
ainda revestido por um material isolante, evitando o contato direto. Este tipo adicional de
proteo utilizado em cabos que estejam perto de equipamentos que tenham campos
magntico ou eltrico intensos.

1.3 Fibras pticas


As redes de computadores tambm utilizam as fibras pticas para transmitirem dados, o
meio de transporte do dado a luz. O transmissor em uma ponta do cabo um LED (light
emitting diode) ou um laser, que envia pulsos de luz; j na recepo de dados usado um
transistor foto-sensvel.
As fibras pticas tm quatro vantagens em relao aos fios. Primeiro, a luz no produz,
nem sofre interferncia eltrica. Segundo, devido a sua fabricao, os feixes de luz podem ser
levados muito mais longe do que um sinal em um fio de cobre. Terceiro, a luz pode codificar
mais informaes do que sinais eltricos. Quarto, no necessitam de no mnimo dois fios para
completar um circuito eltrico, pois apenas um fio de fibra ptica necessrio para interligar
dois computadores.
Porm, essas mesmas fibras tm algumas desvantagens, como a dificuldade de
instalao, pois necessrio um equipamento especial para polir e preparar a extremidade do
cabo; permitindo que a luz passe por ele. E, depois, se um cabo de fibra ptica se rompe,
difcil sua localizao, alm disso, para reparar um fio rompido necessrio tambm um
equipamento especial para unir as fibras.

1.4 Rdio-Freqncia
Alm de ser usada na transmisso de rdio, televiso e comunicao privada entre walktalks, a radiao eletromagntica pode ser usada para transmitir dados. As redes que usam ondas
de rdio so feitas para trabalharem em uma determinada rdio-freqncia, e as transmisses
so referidas como transmisses RF. Diferentemente de redes que usam a fibra ptica, redes
usando transmisses em RF no necessitam de um meio fsico que conecte os computadores.
Assim cada computador conectado a uma antena, que pode mutuamente transmitir e receber
RF.
Fisicamente, as antenas usadas para transmisso de RF podem ser grandes ou pequenas,
dependendo do alcance necessrio. Por exemplo, uma antena projetada para transmitir sinais a
muitos quilmetros deve ter uma altura de um plo metlico com dois metros de altura, p.e.,
instalada no topo de um edifcio. J uma antena para permitir comunicao entre dois prdios
to pequena que caberia em um computador porttil.

13/223

1.5 Satlites
Transmisses em RF nem sempre alcanam todo o territrio na superfcie da Terra,
assim podem ser combinadas com satlites, que provero uma comunicao a grandes
distncias. Como mostrado na figura abaixo, a transmisso de dados pode ocorrer entre
continentes.

O satlite dispe de um equipamento chamado transponder, que consiste em um


transmissor e um receptor de RF. Esse transponder aceita a transmisso de RF, amplifica o
sinal, depois transmite em um ngulo diferente do ngulo de chegada. Assim, podem ser feitas
comunicaes a grandes distncias, como entre um continente e outro. Uma das desvantagens
do uso de satlites o custo elevado para se colocar um satlite em rbita; e, quando se dispe
de um satlite, normalmente este tem de 6 a 12 transponders, que trabalham em mltiplas
conexes, pois trabalham em freqncias diferentes.
1.5.1 Satlites Geo-Sincronizados (GEOS)
A comunicao entre satlites pode ser classificada a partir da altura da rbita de cada
um. Os satlites chamados de geo-sincronizados, ou estacionrios, so colocados em uma
determinada rbita que quando vistos do solo, permanecem no mesmo local; ou seja, sua
rotao est sincronizada com a da Terra.
As leis de Kepler determinam a altura necessria para que um satlite permanea
sincronizado com a rbita terrestre. Essa distncia de aproximadamente de 60.000
quilmetros. Em termos tcnicos, essa distncia chamada de rbita terrestre elevada.
Porm h um espao limitado no espao, pois deve ser evitada a interferncia entre
satlites. Geralmente o espao tomado entre eles, no equador, deve ser de 4 a 8, e, como a
tem-se 360, cabem aproximadamente de 45 a 90 satlites.
1.5.2 Satlites de rbita Baixa (LEOS)
Uma segunda categoria de satlites so aqueles chamados de satlites de rbita baixa,
ou seja, que esto entre 325 e 645 km da Terra, assim seu perodo de rotao maior do que o
14/223

da Terra, no permanecendo fixos em um determinado ponto do cu. De fato um satlite pode


completar uma rbita inteira em aproximadamente 1,5 horas.
Suas desvantagens so que s podem ser usados durante o tempo que permanecem entre
duas estaes terrestres; e depois, para controlar um sistema em contnuo movimento, um
complexo sistema de controle em terra requerido.

1.6 Conjuntos de Satlites de rbita Baixa


Este esquema de comunicao consiste em permitir uma comunicao ininterrupta
atravs de satlites de baixa rbita. Ao invs de um satlite ser simplesmente direcionado, o
esquema exige uma determinada quantidade de satlites, de modo que um ponto nunca fique
sem nenhuma cobertura.
Alm de ter equipamentos para fazer a transmisso com as estaes terrestres, estes
satlites tambm tm um equipamento que permite a conexo entre um satlite e outro.

1.7 Microondas
A radiao eletromagntica que apresenta uma freqncia acima das freqncias de
rdio e televiso chamada de microondas; e tambm utilizada para transmitir informaes.
Ondas de microondas alm de terem a freqncia maior do que as ondas de rdio,
tambm tm um comportamento diferente. Diferentemente das ondas de rdio, que so
transmitidas em todas as direes, as microondas so transmitidas em uma nica direo,
dificultando a transmisso do sinal. Alm disso, as microondas no passam atravs de metais, e
tem precisam ser emitidas e recebidas em meios desprovidos de obstculos, sem a presena de
vegetao alta nem edifcios. Como resultado, as torres de microondas so mais altas que
qualquer obstculo e cada transmissor de microondas diretamente direcionado um para o
outro.

1.8 Infravermelho
Os controles remotos utilizados em aparelhos de som e televiso so exemplos do uso
da radiao infravermelha na comunicao entre dispositivos eletrnicos. Porm ela limitada a
pequenas distncias, e usualmente requer que seja direcionada para o receptor. O dispositivo de
infravermelho no caro quando comparado a outros dispositivos, alm do que no precisa de
antena transmissora de sinais.
Redes de computador podem usar a radiao infravermelha para transmisso de dados.
possvel, por exemplo, um equipamento em uma ampla sala prover conexes em
infravermelho e permitir a conexo a um mesmo provedor e o compartilhamento de dados. O
infravermelho conveniente para pequenos aparelhos, porque oferece as vantagens das redes
sem fio, sem necessidade de antenas.

1.9 Laser
J foi mencionado que a luz pode ser um meio de comunicao via fibras pticas. Como a
comunicao por microondas, o laser consiste em duas localidades com um transmissor e um
receptor. Este equipamento fixo normalmente em uma torre e o transmissor de um mirado no
receptor do outro. O transmissor usa um laser para gerar o feixe de luz, e a luz laser se manter
em foco durante a longa distncia.
Como a transmisso por microondas, o feixe de luz deve viajar em linha reta e no deve
ser bloqueado. Infelizmente o raio laser no consegue ultrapassar vegetao ou condies
climticas adversas, como fumaa ou neve, tendo, portanto, seu uso limitado.
15/223

Captulo 2 Comunicao Local Assncrona

2.1 Introduo
Por serem equipamentos digitais, os computadores utilizam os dgitos binrios para
representar os dados. Assim, transmitir dados atravs de uma rede, de um computador para
outro, consiste em enviar bits atravs de um meio de comunicao.
Fisicamente, o meio para se enviar bits o meio eltrico, as ondas de rdio ou os feixes
de luz. Neste captulo explicado uma dessas formas, a corrente eltrica - que pode ser usada
para transmitir dados curta distncia.
Alm de discutir o bsico da comunicao, so introduzidas duas propriedades
importantes em uma rede de comunicao de dados: a largura de banda e delay (atraso). Ambos
podem ser quantizadas.

2.2 A Necessidade da Comunicao Assncrona


Uma comunicao considerada assncrona quando no ocorre uma coordenao
(sincronismo) entre o emissor e o receptor antes de os dados serem transmitidos. Quando se usa
uma comunicao assncrona, o emissor pode aguardar aleatoriamente para enviar seus dados,
enquanto o receptor deve aceit-los a qualquer momento que estes cheguem. Sistemas
assncronos so utilizados especialmente em equipamentos como teclado, mouse, etc., onde os
dados ou informaes so gerados pelo toque humano sem prvio aviso.

2.3 Usando a Corrente Eltrica no Envio de Dados


O mais simples dos equipamentos eletrnicos utiliza uma pequena corrente eltrica para
codificar os dados a serem enviados. Para entender como a eletricidade pode codificar dados,
imagine um fio que conecta dois equipamentos eletrnicos. Tenses negativas so representadas
por 1, e tenses positivas por 0. Assim, para enviar o bit 1, o equipamento emissor fornece uma
tenso positiva, e depois retorna para o zero volt. J para se enviar o bit 0, o equipamento
fornece uma tenso negativa, e depois volta para o zero volt. A figura abaixo ilustra como a
tenso no fio varia com o tempo enquanto um aparelho envia uma seqncia de bits.

16/223

2.4 Padres de Comunicao


Muitas questes sobre o envio de dados por meio de tenses eltricas ainda no esto
bem estabelecidas, p.e., quanto tempo deve permanecer uma tenso para representar um simples
bit? Qual o tempo necessrio para o receptor perceber a tenso aplicada? Qual a taxa
mxima que o hardware deve mudar a tenso durante a transmisso? Como o consumidor final
ir saber se o hardware de uma determinada marca se comunicar com o hardware de outra
marca?
Para certificar que a comunicao entre hardwares de diferentes marcas no se torne
inoperante, as especificaes para comunicao foram padronizadas. Organizaes como a
Unio Internacional de Telecomunicaes (ITU), a Associao das Indstrias Eletrnicas (EIA),
e Instituto de Engenharia Eltrica e Eletrnica (IEEE) publicam especificaes para
comunicao em documentos chamados padres ou padronizaes.
Documentos de padronizao respondem s questes sobre a comunicao entre
tecnologias proprietrias. O padro especifica tanto o tempo de durao do sinal, quanto os
detalhes de tenso e corrente. Se duas marcas distintas seguirem um mesmo padro, os seus
equipamentos iro se comunicar.
Um padro particular produzido pela EIA emergiu como o mais usado e aceito na
transmisso entre um computador e um teclado, modem ou terminal. O padro RS-23-C,
abreviado como RS-232, ele especifica os detalhes fsicos da conexo, bem como os detalhes
eltricos. Como o RS-232 projetado para equipamentos como modem e terminais, este
especifica a transmisso de caracteres. Alm disso, este pode ser usado para transmitir
caracteres de oito bits. O RS-232 configurado de tal maneira que cada caracter consiste em
sete bits.
O RS-232 define uma comunicao serial assncrona, serial porque os bits so enviados
atravs de um nico fio, um bit atrs do outro. O RS-232 permite tambm que o emissor
transmita um caracter a qualquer momento, e permite um tempo arbitrrio no envio de outro
caracter. Porm, ao iniciar o envio de um caracter, o hardware envia um bit atrs do outro, sem
nenhum delay entre eles. E o mais importante que nesse padro, a tenso no fio nunca ser de
zero volt; assim quando no h nada para se transmitir, o hardware estabelece uma tenso
negativa no fio que corresponde ao bit de valor 1.
Como no se tem uma tenso de zero volt no fio, o receptor no pode usar esta tenso
para marcar o fim de um bit e o comeo do prximo. Assim, tanto o emissor, quanto o receptor
devem entrar em acordo sobre o tempo exato que cada tenso ser mantida para cada bit.
Quando o primeiro bit chega, o receptor dispara um contador (timer) e usa este tempo para
determinar qual ser o tempo de envio de todos os bits sucessivos. Assim, o RS-232 requer que
o emissor envie um bit extra, o bit 0 no caso, antes de comear a transmitir os bits de um
caracter. Esse bit extra chamado de bit inicial (start bit).
O perodo entre o fim de um caracter e o inicio de outro seria arbitrrio, porm o RS232 especifica que o emissor deve deixar uma tenso negativa no fio por um tempo mnimo
aceitvel. Esse tempo, escolhido como mnimo, o tempo necessrio para enviar um nico bit.
Podemos pensar que o bit 1 seja um fantasma, que fundido com cada caracter. Na
terminologia do RS-232, o bit fantasma chamado de bit de parada. Assim, para transmitir um
dado, so necessrios 9 bits. A figura a seguir ilustra uma comunicao no padro RS-232.

17/223

2.5 Taxa de Envio, Framing e Erros


Ao invs de especificar o tempo necessrio para cada bit, o que uma pequena frao
de segundo, os sistemas de comunicao especificam o nmero de bits que podem ser
transferidos em um segundo. As conexes em RS-232 operam comumente em velocidades de
19200 bits por segundo e 33600 bits por segundo.
Tecnicamente, as taxas de envio (baud rate) dos hardwares so medidas a partir do
nmero de mudanas de sinal por segundo que o hardware produz. Assim, uma taxa de 9600,
significa 9600 bits por segundo.
Para tornar o RS-232 um padro mais geral, os fabricantes usualmente projetam cada
pea do hardware para operar em uma variedade de taxas de envio (baud rate). A baud rate
pode ser configurada manualmente ou automaticamente. Se o emissor e o receptor no
estiverem configurados na mesma taxa de envio, erros ocorrero, porque o tempo do receptor
no ir aguardar tempo suficiente para leitura de cada bit, causando assim uma defasagem. Para
detectar erros, um receptor mede diversas vezes a tenso em cada bit, e compara as medies.
Se a tenso no for unnime ou o bit de parada no ocorrer no instante esperado, o receptor
acusa um erro. Esses erros so chamados erros de framing, pois um caracter como uma
quadro que no se encaixa no tamanho padro da moldura.
O hardware do RS-232 pode fazer uso dos erros de framing. Em particular, um teclado
tem a tecla BREAK, essa tecla no gera nenhum caracter ASCII. Ao invs disso, quando o
usurio pressiona a tecla BREAK, o teclado coloca o bit 0 por muito mais tempo que seria
necessrio para enviar um nico bit. Portanto, ao ser detectado que a tenso tenha se alterado
para o estado do bit 0, o receptor assume que um caracter est chegando e fica esperando pelo
bit de parada 1. Se este bit no chega, o receptor reporta um erro, o que aborta, portanto, uma
aplicao em execuo.

2.6 Comunicao Assncrona Full-Duplex


Foi descrito que a corrente eltrica flui por um nico cabo, porm todo circuito eltrico
necessita de no mnimo dois fios a corrente flui em um e volta pelo o outro. Este segundo fio
chamado de fio terra (ground). Ao se usar o padro RS-232 com um par tranado, um fio
transmite o sinal e o outro o retorno (terra). Nos cabos coaxiais o sinal segue pelo fio central, e
a blindagem externa (escudo) o fio terra.
Em muitas aplicaes do RS-232, os dados devem viajar em duas direes ao mesmo
tempo. Esse tipo de transferncia conhecido como comunicao Full-Duplex e so diferentes
das transmisses em uma nica direo, conhecidas como Half-Duplex. Para acomodar uma
transmisso Full-Duplex em RS-232, so necessrios trs fios; um para os dados enviados, um
para os dados recebidos e o terra que funcionar em ambas as direes. De fato, o RS-232
define um conector DB-25 e especifica como o hardware usa os 25 pinos para controlar o envio
18/223

de dados. Por exemplo, enquanto o receptor est apto a receber dados, este receptor fornece uma
tenso em um fio de controle, que o emissor interpreta como estando livre para enviar. Para
reduzir custos, os hardwares podem ser configurados para ignorarem os fios de controles e
assumirem que a outra parte esteja funcionando corretamente. A figura abaixo mostra um
circuito de trs fios.

Como a figura mostra, o fio terra conecta diretamente o terra de um dispositivo com o
terra do outro dispositivo. Os outros dois fios esto cruzados porque o transmissor de um est
ligado no receptor do outro. Para tornar os cabos mais simples, os projetistas decidiram que os
computadores e modems devem usar pinos opostos do conector DB-25. O computador transmite
no pino 2 e recebe no pino 3, enquanto o modem transmite no pino 3 e recebe no pino 2.

2.7 Limitaes em um Hardware Real


Na prtica, nenhum equipamento eletrnico consegue produzir uma tenso exata ou
alterar a tenso aplicada instantaneamente. Alm disso, nenhum fio um perfeito condutor de
eletricidade sempre h perdas de energia. Como resultado, h um pequeno tempo necessrio
para a tenso subir ou reduzir seu valor, e o sinal recebido tambm no perfeito. A figura
abaixo ilustra como um bit realmente , e como ele deveria ser.

Como a maioria das tecnologias de comunicao, o RS-232 reconhece que os hardwares


reais no so perfeitos, assim especifica uma proximidade que uma forma emitida deve ser da
estabelecida no padro, e a tolerncia sobre as imperfeies. Por exemplo, a padronizao no
especifica que o receptor deve medir a tenso exatamente no comeo de cada bit, apenas
recomenda que se faam amostragem durante o meio do tempo de alocao de cada bit.

19/223

2.8 Largura de Banda de Hardware e Transmisso de Bits


Sabendo que um hardware no consegue alterar os valores de tenses instantaneamente,
tem-se uma propriedade fundamental dos sistemas de transmisso, que relacionada com a
velocidade com que os bits podem ser enviados. Cada sistema tem uma largura de banda
limitada, que a taxa mxima que o hardware pode modificar o sinal. Se o emissor tentar
transmitir dados mais rpidos do que a largura de banda, o hardware no conseguir prosseguir,
porque no ter tempo suficiente para completar uma mudana da tenso antes de o emissor
tentar fazer outra. Assim, alguns valores alterados de tenso sero perdidos.
A largura de banda medida em hertz (Hz). Pode-se pensar que a largura de banda a
oscilao de um sinal que enviado por um hardware. Na dcada de 1920 um pesquisador
descobriu uma relao fundamental entre a largura de banda de um sistema de comunicao e o
mximo nmero de bits por segundo que podem ser transferidos. Conhecido como Teorema da
Amostragem de Nyquist, a relao prov um limite terico para a mxima velocidade em que os
dados podem ser enviados. O teorema mostra que a mxima quantidade de dados a serem
enviados duas vezes a largura de banda do logaritmo na base de 2 do nmero de tenses
usadas. Matematicamente temos:
D = 2Blog2K
Onde:
D = taxa de bits por segundo;
B = largura de banda
K = nmero de tenses utilizadas

2.9 O Efeito dos Rudos na Comunicao de Dados


O teorema de Nyquist prov um mximo absoluto que pode ser alcanado na prtica. Os
engenheiros observaram que em sistemas reais de comunicao h uma pequena parcela de
interferncias, chamadas de rudos; e estes rudos tornam impossvel alcanar a mxima taxa de
transmisso terica. Em 1948, Claude Shannon estendeu o teorema de Nyquist para especificar
a mxima taxa de dados que podem ser alcanadas em um sistema de transmisso que introduz
os rudos. O resultado chamado de Teorema de Shannon, e definido por:
C = Blog2(1 + S/N)
Onde C o limite efetivo da capacidade de transmisso de um canal, em bits por
segundo; B a largura de banda do hardware; S o valor mdio da potncia do sinal
transmitido e N o valor mdio da potncia do sinal de interferncia dos rudos.
Usualmente, S/N conhecido como taxa de rudos do sinal, e no representado
diretamente. Ao invs disso, os engenheiros citam a quantidade 10log10S/N, que medida em
decibis (abreviao dB).

2.10 Importncia para Redes de Dados


Os teoremas de Nyquist e de Shannon tm conseqncias diretas para os engenheiros e
projetistas de redes de comunicao de dados. O trabalho de Nyquist incentiva a explorao de
maneiras complexas para codificao bits em sinais.
O teorema de Nyquist encoraja os engenheiros a explorar maneiras de codificar bits em
um sinal, porque uma codificao permite que mais bits sejam transmitidos por unidade de
tempo.
No mesmo sentido, o Teorema de Shannon mais fundamental ainda, pois representa
uma limitao intrnseca, que derivada das leis da fsica. Lembrando que, muito dos rudos
20/223

em um fio pode ser atribudo termodinmica. Assim, o teorema de Shannon informa aos
engenheiros que nenhuma soluo inteligente para codificarem dados pode sobrepor as leis da
fsica, que colocam um limite fundamental no nmero de bits por segundo que podem ser
transmitidos em um sistema real de comunicao.
Na prtica, o teorema de Shannon ajuda a explicar a que velocidade os dados podem ser
enviados, p.e., atravs de uma ligao telefnica. A voz no telefone tem uma taxa de rudos de
interferncia de sinal de aproximadamente 30 dB e uma largura de banda de aproximadamente
3000 Hz. E, de acordo com a o Teorema de Shannon, o nmero mximo de bits que podem ser
transmitidos de aproximadamente 30.000 bits por segundo. Os engenheiros e projetistas
reconhecem este limite fundamental, e transmisses mais rpidas sero possveis se a taxa de
rudos for diminuda.

21/223

Captulo 3 Tecnologia de LANs e Topologias de Rede

3.1 Introduo
Pequenas redes so freqentemente projetadas para permitir que mltiplos
computadores compartilhem recursos como: impressoras, arquivos, etc.; e mesmo conexes
com a Internet.
A tecnologia de hardware usada em redes locais no consiste em modems e cabos
isolados, ao invs disso a tecnologia projetada para o compartilhamento. Ela permite que
mltiplos computadores e equipamentos, como impressoras, sejam ligadas diretamente em rede.
Este captulo descreve os conceitos que do suporte as tecnologias de uma rede local, e explica
porque as redes locais se tornaram to populares.

3.2 Conexo Direta Ponto-a-Ponto


Cada canal de comunicao conecta exatamente dois computadores, e s pode ser usado
por esses dois computadores, exclusivamente. Conhecida como rede ponto-a-ponto, essa
conexo direta tem trs propriedades bem proveitosas. A primeira, que cada conexo
instalada independentemente das demais. Assim, o equipamento de suporte no precisa ser o
mesmo para todas as conexes. A segunda, porque cada conexo exclusiva, ou seja, os
computadores decidem exatamente como enviar os dados pela conexo estabelecida. Eles
podem escolher o formato dos frames, o mecanismo de deteco de erros, e o tamanho mximo
de um frame. Como cada conexo independente das outras, os detalhes podem ser alterados
sem a intervenincia do administrador da rede. A terceira, pois apenas dois computadores tm
acesso ao canal de comunicao, fcil reforar a segurana e a privacidade.
bvio que conexes ponto-a-ponto apresentam desvantagens, pois sempre h mais de
dois computadores que querem se comunicar. A figura abaixo representa como o aumento de
computadores compromete a conexo ponto-a-ponto.

Matematicamente, o nmero de conexes que preciso para conectar N computadores


:
Conexes necessrias = (N2 N) /2
Na prtica, o custo alto, pois muitas conexes seguem o mesmo caminho no cho,
parede e cabos condutores.
22/223

Por exemplo, suponha uma empresa com cinco computadores, com dois em um andar
do prdio e outros trs computadores em outro andar do mesmo prdio. A figura abaixo ilustra
cada computador e suas respectivas conexes; seis conexes passaram entre duas localizaes em muitos casos essas conexes seguem o mesmo caminho, aumentando os custos.

O nmero de conexes acima, passando entre as duas localidades, excede o nmero


total de computadores. E, se outro computador adicionado localizao 1, a situao se torna
ainda pior, pois o nmero de conexes totais cresce para 9.

3.3 Canais de Comunicao Compartilhados


A histria das redes de computadores mudou drasticamente entre 1960 e 1970, quando
pesquisadores desenvolveram uma forma de comunicao entre computadores chamada de
Local Area Networks (LANs). Planejadas como alternativas para fugir do alto custo das
conexes ponto-a-ponto, os pesquisadores diferenciaram fundamentalmente das redes a longas
distncias. Cada LAN consiste em um nico meio compartilhado, usualmente um cabo, para os
computadores se interligarem. Os computadores revezam-se no uso do meio ao enviar os
pacotes de dados.
Muitos projetos de LANs surgiram de pesquisas e essas eliminaram a duplicao de
cabos e custos, trazendo um importante impacto econmico nas redes interligadas.
Conseqentemente, as LANs se tornaram populares. Redes que permitem mltiplos
computadores compartilharem um meio de comunicao so usados para comunicao local.
Porm, as conexes ponto-a-ponto ainda so usadas para redes a longas distncias e em outros
casos especiais.
Se compartilhar diminui custos, porque as LANs so usadas somente para comunicao
local? Porque os computadores em uma rede precisam coordenar o uso da rede, assim essa
coordenao exige tempo e, a longa distncia, esse tempo seria maior que o prprio envio de
dados; portanto, a rede passaria a maior parte do tempo coordenando-se, e no enviando dados.
Alm disso, os engenheiros descobriram que disponibilizando um canal com grande largura de
banda a longa distncia, muito mais caro do que provendo esse mesmo canal a curta distncia.

3.4 Importncia das LANs e Localizao de Referncia


A importncia das LANs pode ser resumida em: as LANs se tornaram a forma mais
popular de comunicao entre os computadores. As LANs agora conectam mais computadores
que qualquer outro meio de rede.
Uma das razes das LANs serem instaladas a economia. As tecnologias de uma LAN
so tanto baratas, quanto disponveis. Todavia, a principal razo para que a demanda de redes
seja to alta, pode ser atribuda ao princpio fundamental conhecido como localizao de
referncia. O princpio da localizao de referncia diz que a comunicao entre uma
23/223

quantidade de computadores no aleatria, mas, ao invs disso, segue dois modelos. Primeiro,
um par de computadores que se comunica uma vez, ir se comunicar novamente em um tempo
prximo, e mais freqentemente. Essa corrente chamada de localizao de referncia
temporal, e implica um relacionamento no tempo. Segundo, um computador tende a
comunicar-se com mais freqncia com computadores que esto mais prximos a ele. O
segundo modelo chamado de localizao de referncia fsica e enfatiza o relacionamento
geogrfico.

3.5 Topologia de LANs


Devido s vrias tecnologias de LANs projetadas, importante saber em que tais
tecnologias so similares e em que elas se diferem. Para compreender as similaridades, cada
rede classificada em uma categoria de acordo com a sua topologia ou forma geral. Esta
seo descreve as trs topologias mais usadas em LANs.
3.5.1 Topologia em Estrela
Uma rede que usa topologia dem estrela tem todos os computadores conectados a um
nico ponto. A figura abaixo ilustra o conceito:

Como uma topologia em estrela lembra uma roda, o centro da estrela comumente
chamado de hub. Um hub tpico consiste em um equipamento eletrnico que aceita dados de
computadores e entrega ao destino certo.
A figura acima ilustra uma rede em estrela idealizada. Na prtica, redes em estrela
raramente tm um formato simtrico no qual o hub localizado numa distncia igual para todos
os computadores. Ao invs disso, freqentemente, o hub est localizado em um local diferente
do centro da estrela.
3.5.2 Topologia em Anel
Uma rede usa uma topologia em anel para agrupar computadores conectados em uma
seqncia fechada - um cabo conecta o primeiro computador ao segundo computador, um outro
cabo conecta o segundo ao terceiro e assim por diante. O nome anel se deve conexo entre os
computadores em circunferncia, como a figura a seguir ilustra.

24/223

importante entender que o anel, como na topologia em estrela, refere-se s conexes


lgicas entre os computadores, no em uma orientao fsica - os computadores conectados em
uma topologia dem anel no precisam estar arranjados em um crculo. Por exemplo, o cabo
entre dois computadores pode seguir um corredor ou subir verticalmente de um andar de um
prdio para outro.
3.5.3 Topologia dem Barramento
Uma rede que usa a topologia em barramento usualmente consiste em um nico e longo
cabo, no qual os computadores so conectados. Qualquer computador conectado ao barramento
pode enviar um sinal atravs do cabo e todos os computadores recebero o sinal. A figura
abaixo ilustra essa topologia. Como todos os computadores esto conectados ao cabo, todos
podem receber os sinais eltricos enviados, e qualquer um pode enviar dados para outro
computador. claro que um computador conectado ao barramento deve estar coordenado com o
restante da rede, evitando que mais de um computador envie dados ao mesmo tempo, seno o
resultado ser o caos.

3.5.4 A Razo das Vrias Topologias


Cada topologia tem vantagens e desvantagens. A topologia em anel torna fcil a
coordenao do acesso dos computadores e a deteco de mau funcionamento na rede, porm
desativada se um nico cabo rompido. A topologia em estrela protege, no caso de danos em
um nico cabo, pois cada cabo s se conecta a um computador especfico. A topologia em
barramento requer menos fios, mas tem a mesma desvantagem da topologia em anel, se o cabo
principal rompido ou desabilitado, a rede pra de funcionar.

25/223

3.6 Exemplo de Rede em Barramento: A Ethernet


3.6.1 Histria da Ethernet
A Ethernet foi inventada pela Xerox Corporation na dcada de 1970. Na sua verso
original, a Ethernet consistia em um nico cabo coaxial, chamado ether, no qual mltiplos
computadores se conectavam. Os engenheiros e projetistas usam o termo segmento para se
referir ao cabo coaxial da Ethernet. Um segmento de Ethernet limitado em 500 metros de
distncia, e o padro requer uma separao mnima de 3 metros entre cada par de conexes. O
hardware original da Ethernet operava em uma largura de banda de 10 Mbps, uma verso
posterior conhecida como Fast Ethernet opera em 100 Mbps; e a verso mais recente, conhecida
por Gigabit Ethernet opera em 1000 Mbps, ou 1 Gigabit por segundo.
3.6.2 Compartilhamento na Ethernet
O padro para a Ethernet especifica todos os detalhes, incluindo o formato dos frames
que o computador envia atravs do ether, a tenso a ser usada, e o mtodo para modular o sinal.
Por usar a topologia em barramento, a Ethernet requer mltiplos computadores
compartilhando um mesmo meio. Um emissor transmite um sinal, que se propaga do emissor
para as duas pontas do cabo. A figura abaixo ilustra como os dados fluem pela Ethernet.

Como a figura mostra, o sinal se propaga de um computador para as duas pontas do


cabo. importante entender que compartilhar um mesmo meio no significa que mltiplos
frames sero enviados ao mesmo tempo. Ao invs disso, o computador emissor tem o uso
exclusivo do cabo durante a transmisso de um determinado frame outros computadores tm
de esperar a sua vez. Aps um computador terminar a transmisso de um frame, o cabo se torna
disponvel para os demais computadores utiliz-lo.

3.7 Portadora Lgica em Rede de Mltiplos Acessos (CSMA)


O aspecto mais interessante na Ethernet o mecanismo utilizado para coordenar a
transmisso. Uma rede Ethernet no tem um controle centralizado que diz para cada computador
qual a hora de usar o cabo compartilhado. Portanto, todos os computadores conectados a
Ethernet participam de um esquema coordenado chamado Portadora Lgica para Acesso
Mltiplo (CSMA). Quando nenhum computador est transmitindo frames, o ether no tem
nenhum sinal eltrico. Porm, durante a transmisso, o emissor transmite sinais eltricos usados
para codificar os bits. Ainda que o sinal difira um pouco das ondas descritas no captulo 5, elas
so chamadas normalmente de portadoras (carriers).
26/223

Assim, para verificar quando o cabo est disponvel, o computador procura por uma
portadora no cabo. Se a portadora no est presente, o computador transmite o frame. Se a
portadora est presente, o computador dever esperar pelo fim da transmisso antes de us-lo.
Tecnicamente, o processo de checar por uma portadora chamado de sensor de portadora
(CSMA).

3.8 Deteco de Colises e Impedimento - CSMA/CD


O CSMA permite que cada computador cheque o cabo, a fim de verificar sua
disponibilidade. Porm o CSMA no pode prevenir todos os conflitos possveis. Imagine dois
computadores em pontas opostas do cabo, e ambos tendo um frame pronto para ser enviado.
Quando checam por um carrier (portadora), ambos podem detectar que o cabo est livre; e,
ento, comear a enviar simultaneamente os frames. Os sinais viajam a uma velocidade de 70%
da velocidade da luz, e quando atingem o mesmo ponto do cabo, eles se interferem.
A interferncia entre os dois sinais chamada de coliso. Essa coliso cria um sinal
distorcido evitando que os dois frames sejam recebidos corretamente. O padro da Ethernet
requer que a estao emissora monitore os sinais no cabo. Se o sinal no cabo difere do sinal
enviado pela estao emissora, detectada uma coliso e o envio de dados parado
imediatamente. Tecnicamente, monitorar o cabo durante a transmisso conhecido como
Collision Detect (CD) e o mecanismo da Ethernet conhecido como Carrier Sense Multiple
Access with Collision Detect (CSMA/CD).
O CSMA/CD, alm de prevenir as colises, evita que aps ocorrer uma coliso, ocorra
outra, pois ambos os computadores iro parar a transmisso e refaz-la quando o cabo estiver
livre; assim o padro especifica que deve haver um delay aps a coliso e antes que haja a
retransmisso. O padro especifica um delay mximo d, e fora o computador a escolher
aleatoriamente um delay menor que d. Assim, o computador que escolher o menor delay ir
transmitir primeiro.
Se dois, ou mais computadores, escolhem delays prximos, eles iro comear a
transmisso e uma nova coliso ir ocorrer, produzindo assim uma segunda coliso. A Ethernet,
ento, requer que cada computador dobre o limite que foi escolhido na coliso anterior. Com
isso, a probabilidade de uma seqncia de colises se torna bem pequena.
Tecnicamente, dobrar o limite de delay aps cada coliso conhecido como binary
exponential backoff. Em essncia, o exponencial backoff significa que a Ethernet pode
recuperar-se rapidamente aps uma coliso, porque cada computador pode aguardar um tempo
ainda maior quando o cabo no est disponvel para transmisso. Assim garantido que as
colises sejam mnimas.

3.9 LANs Wireless e CSMA/CA


Ao invs de transmitir sinais atravs de um cabo, uma LAN wireless usa antena para
transmitir sinais de RF atravs do ar que outros computadores iro receber. Os dispositivos
usam a freqncia de 900 MHz para enviarem dados a 2 Mbps. Como as redes wireless so
usadas para compartilhamento, todos os computadores devem estar configurados na mesma
freqncia.
Uma diferena entre a maneira de transmisso de dados em fios e em wireless o
gerenciamento de dados devido maneira de propagao na transmisso. Embora a radiao
eletromagntica seja transmitida em todas as direes, os transmissores de LAN wireless usam
pouca energia, significando que a transmisso tem alcance a curta distncia. Alm disso,
obstrues no meio bloqueiam o sinal.
A caracterstica da LAN wireless no permite que esta use o mesmo mecanismo
CSMA/CD que a Ethernet. Para entender o porqu, considere trs computadores com hardwares
LAN wireless posicionados na distncia mxima d, como a figura a sguir mostra.
27/223

Na figura, os dois computadores externos esto separados a uma distncia que no


conseguem receber transmisses um do outro. Nessa situao, a carrier sense e collision
detection no basta. Por exemplo, suponha que o computador 1 esteja enviando dados para o
computador 2. Como o computador 3 no recebe essa transmisso, ele pode tambm transmitir
para o computador 2, resultando em uma coliso. Similarmente, se os computadores 1 e 3
transmitirem frames ao mesmo tempo, apenas o computador 2 ir detectar a coliso.
Para certificar-se que a transmisso de dados esteja correta, LANs wireless usam um
esquema modificado, conhecido como Carrier Sense Multiple Access with Collision Avoidance
(CSMA/CA). Ao invs de dependerem dos outros computadores para receberem toda
transmisso, o CSMA/CA usado em disparos curtos de transmisso para o receptor antes de
transmitir o pacote de dados. Por exemplo, suponha que o computador 1 na figura acima precise
transmitir dados para o computador 2. Assim, antes de transmitir o frame, o computador 1
transmite uma mensagem curta de controle. Quando o computador 2 recebe a mensagem de
controle, ele responde enviando outra mensagem de controle, indicando que est pronto para
receber a transmisso. Quando o computador 1 recebe esta mensagem, ele comea o envio dos
frames.
A vantagem de esperar uma resposta do receptor se torna clara se lembrarmos que a
transmisso assimtrica. Na figura, embora o computador 3 no receba a transmisso do
computador 1, ele recebe a transmisso do computador 2. Assim, uma vez que o computador 2
envie a mensagem de resposta, todos os computadores na rea de alcance da antena iro
aguardar para a transmisso de um pacote (mesmo que no consigam receber a transmisso).
Colises de mensagens de controle podem ocorrer quando se usa CSMA/CA, mas
podem ser facilmente contornadas. Na figura, por exemplo, se o computador 1 e 3 gerarem um
pacote para o computador 2 no mesmo instante, ambos enviam uma mensagem de controle. As
mensagens de controle iro chegar simultaneamente ao computador 2, causando uma coliso.
Quando este tipo de coliso ocorre, a estao emissora aplica um processo aleatrio de
impedimento antes de reenviar a mensagem de controle. Como as mensagens de controle so
menores que os pacotes de frames, a probabilidade de uma segunda coliso ocorrer muito
menor que na Ethernet convencional. Eventualmente, uma das duas mensagens de controles
chega intacta e o computador 2 transmite a resposta.

3.10 Outro Exemplo de Rede de Barramento: A LocalTalk


A tecnologia de LAN LocalTalk foi desenvolvida pela Apple, e usada principalmente
em seus computadores pessoais.
A rede LocalTalk um barramento no qual os computadores conectados utilizam uma
verso do CSMA/CA para acessar dados. Como a mensagem de controle utilizada neste tipo de
comunicao extremamente pequena, comparada com uma mensagem de dados, o tempo
destinado para o aguardo e envio se torna insignificante.
Uma das desvantagens da LocalTalk a largura de banda, que 2.3% da largura de
banda disponvel em uma rede Ethernet de 10 Mbps. Uma largura de banda menor significa que
se tem um tempo maior para transmitir grandes volumes de dados. A rede LocalTalk tambm
tem limitaes de distncia, e no disponvel em todos os computadores.
28/223

Sua vantagem principal o baixo custo, pois o hardware necessrio para fazer a
conexo j est incluso no computador. Por exemplo, um nico cabo necessrio para conectar
dois computadores Macintosh.

3.11 Exemplo de Rede em Anel: IBM Token Ring


A maioria das redes em anel utiliza um mecanismo de acesso chamado de token passing
(passagem do anel). Quando um computador precisa enviar dados, ele deve esperar a permisso
antes de acessar a rede. Uma vez que obtm a permisso, o computador tem total controle sobre
o anel - no h duas permisses simultneas. Assim que o computador transmite um frame, os
bits passam para o prximo computador e assim em diante, at completar o anel e o emissor
receber de volta os dados que ele mesmo enviou. A figura abaixo ilustra o conceito.

Para verificar que no houve erros na transmisso, o emissor compara os dados que ele
recebeu com os que foram enviados. Se um frame destinado a um determinado computador,
este computador faz uma cpia dos bits que esto passando pelo anel.
Para coordenao no envio dos dados, usada uma mensagem especial chamada de
Token. O Token um bit padro que difere do formato normal de dados. Para assegurar que
dados normais no sejam interpretados como Token, algumas tecnologias usam bits de
preenchimento. E o mais importante, h apenas um Token circulando em toda rede.
Em essncia, o Token d ao computador a permisso para enviar um frame. Assim,
antes de enviar um frame, o computador deve esperar o Token chegar. Quando o Token chega, o
computador remove o Token temporariamente do anel e usa o anel para transmitir um frame;
logo aps, transmite um Token. Assim, o Token viaja de um computador para o computador
adjacente que pode usar a rede para enviar um frame.
Note que o esquema garante um acesso justo: pois, medida que o Token circula no
anel, cada computador tem a oportunidade de usar a rede. Se um computador no tem nenhum
frame para enviar, ele repassa o Token sem nenhum delay. Alm disso, o tempo necessrio para
que um Token passe por todo o anel, com todos os computadores sem enviar nenhum dado
muito pequeno, na casa de milissegundos.

3.12 Outro Exemplo de Rede em Anel: FDDI


Uma das desvantagens principais da rede em anel susceptibilidade a falhas. Como
cada computador est conectado ao anel, e os bits devem passar por eles, uma falha em um
nico computador desabilita toda a rede.
O Fiber Distributed Data Interconnect (FDDI) uma tecnologia que transmite dados na
taxa de 100 milhes de bits por segundo, oito vezes mais rpido que a tecnologia IBM Token
29/223

Ring e dez vezes maior que a Ethernet original. Para prover taxas to altas, o FDDI utiliza fibra
ptica em vez de fios de cobre.
O FDDI tambm utiliza redundncia para evitar que a rede falhe. Uma rede em FDDI
contm dois anis completos um para enviar dado quando tudo est funcionando
corretamente, e outro que usado quando o primeiro anel falha.
Os anis em uma rede FDDI so chamados de counter rotation porque os dados
percorrem o segundo anel num sentido diferente da direo de fluxo de dados do anel principal.
Para entender a motivao da rotao contrria, considere que uma falha ocorra. Como um par
de fibras pticas que conectam dois locais geralmente percorre o mesmo caminho, uma quebra
acidental iria danificar o par. Se os dados sempre passam na mesma direo em ambos os cabos,
ao desconectar-se uma estao, desconectar-se-iam ambos os cabos e os dados estariam
perdidos. Porm, se os dados estiverem circulando em sentidos contrrios, as estaes
remanescentes podem reconfigurar a rede, a figura abaixo ilustra o conceito.

A figura acima ilustra o caminho dos dados e a ocorrncia de uma falha. O hardware
nas estaes adjacentes detecta a desconexo e reconfigura a rede de modo que os dados que
chegam voltam pelo caminho inverso. Esse processo de reconfigurao chamado de self
healing, ou cura automtica, e o FDDI conhecido como self healing network.

3.13 Exemplo de Rede em Estrela: ATM


Companhias telefnicas desenvolveram a tecnologia conhecida como Asynchronous
Transfer Mode (ATM). O elemento bsico de uma rede ATM um switch eletrnico, no qual
diversos computadores podem se conectar. Por exemplo, a figura a seguir ilustra 6
computadores conectados a um switch ATM.

30/223

Como a figura mostra, a rede ATM tem topologia em estrela. Diferentemente das
topologias em barramento ou em anel, uma rede em estrela no propaga dados para qualquer
computador, a no ser o par que est se comunicando o hub recebe os dados diretamente do
emissor e os transmitem diretamente para o receptor. Assim, a rede ATM tem menor
dependncia das conexes individuais de cada computador do que uma rede em anel. Portanto,
se a conexo entre um computador e o switch falha, apenas esse computador afetado.
Como a rede ATM projetada para ter uma alta largura de banda, uma conexo tpica
entre um computador e um switch ATM opera na velocidade de 155 Mbps ou mais rpido que
isso. Normalmente usada fibra ptica ao invs de fio de cobre. De fato, um nico cabo de fibra
ptica no consegue levar dados nas duas direes simultaneamente, assim cada conexo utiliza
um par de fibras pticas, como a figura abaixo ilustra.

31/223

Captulo 4 Endereamentos de Hardware e


Identificao do Tipo de Frame

4.1 Introduo
Este captulo apresenta com mais detalhes a transmisso em uma LAN, e explica como
um par de computadores se comunica atravs da LAN sem forar os outros computadores a
receberem e processarem uma cpia de cada mensagem. Assim, este captulo descreve o
endereamento de hardware, e mostra como um computador emissor usa o endereamento de
hardware para identificar qual computador dever receber a cpia de um determinado frame.
Esse captulo tambm explica como a interface do hardware de rede usa o endereamento para
filtrar os frames recebidos.
Tambm examinado um mecanismo que permite ao emissor identificar o tipo de
dados em cada frame. Isso explica o propsito conceitual do tipo de identificao de frame e o
usa como exemplo para ilustrar o conceito de frames da Ethernet.

4.2 Especificando um Receptor


Normalmente a comunicao em um meio comum no envolve todas as estaes.
Assim, a maioria das comunicaes ocorre porque um aplicativo em um computador envia
dados diretamente para o aplicativo em outro computador.
A maioria das tecnologias de LANs usa um esquema de endereamento para prover
uma comunicao direta. Cada estao em uma LAN tem um valor numrico nico, chamado
endereo fsico, endereo de hardware, ou Mdia Acess Address (MAC address). Quando o
emissor transmite um frame atravs da LAN, o emissor inclui o endereo de hardware do
receptor daquele frame. Assim o hardware da LAN em cada estao checa o endereo de cada
frame que chega para determinar se ela dever aceitar ou no o frame.
De fato, cada frame transmitido atravs de uma LAN inclui dois endereos um que
especifica o receptor e outro que especifica o emissor. Cada frame comea com um header fixo,
que contm o espao para os dois endereos. Antes de transmitir um frame, o emissor deve
colocar o endereo do receptor no campo chamado destination address field e seu prprio
endereo no campo source address field. Incluir o endereo do emissor em cada frame faz com
que a resposta do receptor seja gerada mais facilmente. A interface do hardware projetada para
examinar os campos de endereo em cada frame que passa pela rede, e aceitar apenas aqueles
que o endereo do destinatrio seja igual ao endereo da estao emissora.

4.3 Como o Hardware de uma LAN usa o Endereo para Filtrar


os Pacotes
Para avaliar como os sistemas usam o endereamento para prover uma conexo direta,
necessrio compreender a organizao bsica do hardware de uma LAN. A figura a seguir
ilustra o conceito. O hardware de uma LAN completamente separado da CPU e da memria
do computador.
A interface do hardware de LAN lida com todos os detalhes de enviar e receber frames
do meio compartilhado. Mais importante, o hardware da LAN pode realizar as funes de envio
e recepo de frames sem utilizar a CPU do computador. Assim, depois de passar os dados para
a interface da LAN e requisitar a transmisso, a CPU pode continuar executando um programa,
enquanto a interface espera o acesso ao meio e transmite o frame.
32/223

Conceitualmente, a interface do hardware de LAN, que opera independentemente do


processador do computador, usa o endereamento fsico para impedir que o computador receba
todos os pacotes que esto trafegando na LAN - relembrando que um frame viaja atravs do
meio compartilhado, e uma cpia dele passada a cada estao. Uma vez que tenha capturado
completamente um frame, o hardware de interface de rede compara o endereo do destinatrio
com endereo da estao; se o endereo for o mesmo, o hardware aceita o frame e o passa para
o sistema. Se o endereo no for o mesmo, o frame descartado e o hardware volta a esperar
por mais um frame; e um frame endereado para uma estao que no exista sempre ser
ignorado.

4.4 Formato de um Endereo Fsico


Os vrios tipos de formas de endereos podem ser agrupados em 3 categorias:

esttico: um endereo esttico conta com o fabricante do hardware, que ir determinar


um nico endereo fsico para cada interface de rede. Um endereo fsico esttico no
muda, a menos que o hardware seja substitudo.

configurvel: um endereo configurvel prov um mecanismo que o cliente pode usar


para determinar um endereo fsico. O mecanismo pode ser manual ou eletrnico
(memrias EPROM). A maioria dos hardwares precisa ser configurado uma nica vez
usualmente feito quando ele instalado.

dinmico: um endereo dinmico prov um mecanismo que automaticamente determina


o endereo fsico de uma estao quando esta ligada. A maioria dos esquemas de
endereamento dinmicos requer que a estao tente nmeros aleatrios at encontrar
um valor que nenhum outro computador esteja usando. Por exemplo, uma estao
escolhe o nmero de dias como um valor inicial. Para cada nmero aleatrio gerado, a
estao envia uma mensagem na rede para o endereo especificado. Se um computador
est usando o endereo, ele ir responder a mensagem. Se no houver resposta, o
emissor pode utilizar esse endereo como endereo fsico. Assim, o endereo de um
computador depende dos endereos dos outros computadores quando este ligado um
computador poder obter diferentes endereos cada vez que reiniciado.

33/223

A maior vantagem do endereo esttico sua facilidade de uso e permanncia. O


esquema fcil de usar porque os fabricantes determinam o endereo e confirmam que aquele
hardware ter aquele endereo nico em todo mundo. Assim, hardwares de vrios fabricantes
podem ser interconectados sem nenhum conflito de endereo.
O endereo dinmico tem duas vantagens: elimina a necessidade de o fabricante ter que
coordenar o endereamento e permite que cada endereo seja menor. A razo para um endereo
menor se deve exclusividade de se nico na LAN em que ele se encontra. A maior
desvantagem a falta de permanncia e conflitos em potencial. Por exemplo, se dois
computadores reiniciam enquanto a rede est desabilitada, estes podem escolher os mesmos
endereos, ocorrendo conflitos.
O endereo configurvel uma mescla do esttico e do dinmico. Como no dinmico, o
configurvel no precisa usar endereos longos, pois ele deve ser nico apenas na rede que ele
est conectado. E a interface configurvel pode ser trocada sem mudar o endereo fsico do
computador.

4.5 Broadcasting
O termo broadcasting (transmisso) que foi originalmente aplicado em transmisses de
rdio e televiso, refere-se transmisso para uma ampla audincia. Quando um aplicativo
realiza uma transmisso em broadcast, todos os outros computadores da rede recebem uma
cpia dos dados enviados.
O broadcast tem muitos usos, por exemplo, suponha que um computador precise
encontrar uma impressora na rede. O computador pode formar uma mensagem que especifique
uma impressora e transmitir a mensagem para todas as estaes na rede. Mesmo que todas
recebam a mensagem, apenas as que contenham a impressora iro responder.
Como a maioria das tecnologias usa um meio compartilhado, elas podem fazer do
broadcasting uma tcnica extremamente eficiente. De fato, no necessrio nenhum hardware
adicional para ocorrncia de um broadcast na LAN, pois todas as estaes esto conectadas ao
meio comum. Tudo que preciso em um broadcast um mecanismo para que todas as estaes
extraiam e processem uma cpia dos frames.
Para fazer um broadcast eficiente, a maioria das LAN estende o esquema de
endereamento. O projetista da LAN define um endereo especial e reservado, conhecido como
broadcast address. A interface em um computador construda para reconhecer o broadcast
address, como reconhece os demais endereos das estaes.

4.6 Multicasting
Diferentemente da aparente facilidade do uso do broadcast, poucos aplicativos em redes
foram projetados como aquele descrito na seo anterior. A razo simples o broadcasting
extremamente ineficiente. Mesmo que cada estao na rede possa ser configurada para descartar
frames desnecessrios, processar e descartar um frame requer recursos computacionais. Quando
um frame chega, o hardware da interface de rede coloca o frame na memria, interrompe a CPU
e permite que o software do sistema determine se o frame deve ser ignorado. Assim, descartar
frames envolve uma deciso da CPU. Temos ento um grande desperdcio de tempo de
processamento em toda a rede.
Como os computadores em uma LAN podem tirar vantagem do broadcasting, sem
desperdiar recursos da CPU? A resposta est na forma restrita de broadcasting, o multicasting.
Ele se parece muito com o broadcasting, porm, quando os frames chegam no so repassados
diretamente para a CPU. A prpria interface de rede toma a deciso de aceitar ou no o frame.
Para que isso ocorra, o hardware deve ser programado com determinadas especificaes, e s
sero aceitos frames que atendam essas especificaes.

34/223

4.7 Multicasting Address


O multicasting estende o esquema de endereos reservando alguns endereos para
multicast; e estende o endereamento da interface de rede permitindo que a interface reconhea
um conjunto adicional de endereos. Quando o computador ligado, a interface de rede
programada s para reconhecer os endereos dos computadores e os de broadcasting. Se um
aplicativo em um computador precisa receber frames de multicasting, o aplicativo deve
informar interface de rede qual endereo de multicasting deve ser usado. A interface adiciona
o endereo ao conjunto que ela ir reconhecer e comea aceitar os frames enviados para aquele
endereo.
Suponha que dois aplicativos tenham sido construdos para enviar sons pela rede. Um
aplicativo aceita e digitaliza o udio e ento envia o resultado para o outro aplicativo. O
segundo aplicativo recebe o udio digitalizado da rede, converte novamente para sinais de udio
e reproduz o resultado em um alto-falante. Agora, suponha que outros computadores na rede
desejam escutar o udio. A menos que os dois aplicativos usem broadcast para enviar frames,
nenhum outro computador ir receber uma cpia dos frames. Assim, o broadcasting ter a
desvantagem de consumir recursos da CPU de todos os computadores, at mesmo aqueles que
no querem ouvir o udio.
O multicasting prov uma excelente soluo para o problema de permitir que alguns
computadores participem da transmisso de udio, enquanto no incomodam outros. O
multicasting oferece a vantagem de enviar apenas uma nica cpia de cada frame na rede, e de
permitir que computadores distintos recebam a transmisso. Para usar o multicasting, um
endereo de multicasting deve ser escolhido pelo aplicativo de udio. Assim, o software de
udio deve ser configurado para usar tal endereo. O programa emissor deve arranjar um lugar
para colocar o endereo no campo de destino do frame, e o programa receptor deve ser
configurado para usar o endereo dos frames que chegam. Mais especificamente, quando o
programa receptor ligado, ele passa o endereo de multicasting para a interface de rede. A
interface adiciona o endereo e comea a aceitar os pacotes enviados para aquele endereo.
Devido interface de rede checar o endereo, computadores que no rodem o aplicativo de
udio no iro desperdiar tempo da CPU para descartar os frames.

4.8 Identificando o Contedo dos Pacotes


Embora o esquema de endereamento descrito na seo anterior permita ao receptor
identificar o emissor de um frame, o endereo no mostra o que os pacotes contm. Mais
importante ainda, pois muitos dados usam representaes e um receptor no pode utilizar dados
no pacote para determinar o seu contedo. Por exemplo, pacotes que levam mensagens de email, texto e pginas da web usam codificao em ASCII para representar os dados. Para
informar ao receptor o que h no pacote, cada frame contm informaes adicionais para
especificar o tipo do contedo, e dois mtodos so usados:

Tipo de frame explcito _ neste mtodo, os projetistas dos hardwares de rede


especificam que tipo de informao includo no frame e os valores usados para
identificar os vrios tipos de frames. Os bits de um frame que so usados para
identificar o seu contedo so chamados de frame type field e o frame chamado de
self-identifying.

Tipo de frame implcito _ neste mtodo, o hardware de rede no inclui o tipo de frame
em cada frame. Em vez disso, o frame leva apenas dados. Assim, o emissor e o receptor
devem concordar sobre o tipo de frame ou concordar em usar uma poro dos dados
para ser usado como campo de tipo.

35/223

4.9 Cabealho de Frames e Formato de Frames


Cada tecnologia de LAN define o formato exato de frames a ser usado. E a maioria das
LANs define o frame em duas partes: o cabealho do frame, que contm informaes como a
origem e o destinatrio. E seguido por uma rea de dados, que contm a informao que
enviada. A figura abaixo ilustra o formato geral:

Cada campo no cabealho do frame tem tamanho e localizao fixos. Como resultado,
todos os frames usados com a mesma tecnologia tm o mesmo tamanho de cabealho. Em
contraste, a rea dos dados no tem tamanho fixo a quantidade de dados que ser enviada
que determina o tamanho da rea final dos dados.

4.10 Exemplo da Formatao de Frames


A figura abaixo ilustra o formato de frame utilizado na Ethernet. Como a figura mostra,
um frame da Ethernet comea com um cabealho que contem trs campos. O preamble de 64
bits, que precede o frame, contm 1 e 0 alternados, para que o hardware do receptor se
sincronize com o sinal que chega. Os dois primeiros campos contm os endereos fsicos. A
Ethernet usa endereos estticos de 48 bits com endereo nico fornecido pelo fabricante. O
campo chamado de Dest. Address contm o endereo fsico do destinatrio. O campo chamado
Source Address contm o endereo fsico da estao que est enviando o frame. O terceiro
campo do cabealho consiste no tipo do frame, tendo 16 bits.

A Digital-Intel-Xerox Ethernet define os valores padres que devem ser usados no


cabealho e seus significados.

36/223

4.11 Redes que No Auto-Identificam os Frames


Algumas tecnologias de rede no incluem o formato dos frames no cabealho, isto , os
frames no so auto-identificados. Como os computadores conectados nessas redes sabem o tipo
de dados em cada frame? Existem duas possibilidades:
1. Antes que qualquer dado seja enviado, o emissor e o receptor concordam em usar um
nico formato de frames. O software no computador emissor programado para colocar
os dados no formato escolhido, e o software no receptor programado para esperar os
dados no formato escolhido;
2. Antes que qualquer dado seja enviado, o emissor e o receptor concordam em usar os
primeiros octetos do campo de dados para guardar a informao sobre o tipo de dados.
O software no computador emissor adiciona a informao do tipo de dado antes de
colocar os dados no frame a ser enviado. O software no receptor extrai a informao do
tipo dos dados, usando essa informao para saber como proceder com os dados
enviados.

A primeira tcnica raramente usada, pois limita um par de computadores a um nico


formato de dados. Assim, os donos dos dois computadores no podem instalar novos
aplicativos, a no ser que estes usem o formato de dados que foi selecionado. Se a rede
comporta broadcast, todos os computadores ligados na rede devero concordar em um nico
tipo de formatao de dados.
A figura abaixo mostra a segunda tcnica, que usa parte da rea de dados para
armazenar a informao sobre o tipo do frame.

Usar parte da rea de dados para informar o tipo do frame levanta duas questes. Qual
ser o tamanho exato do tipo da informao? E quem ir especificar os valores que so
permitidos e os seus significados? Essas decises so tomadas pelos projetistas do hardware de
rede. Mesmo assim, se o hardware de rede no incluir o tipo dos frames, o software do receptor
livre para interpretar o tipo da informao. Infelizmente, permitir que cada programador
escolha valores para o campo do tipo no funciona bem, pois dois programadores podem
escolher acidentalmente os mesmos valores para diferentes tipos. O problema se torna complexo
se o aplicativo realizar broadcasts.
Para assegurar que todos os softwares usam os mesmos valores para especificar os tipos,
as organizaes padres definiram os significados para cada valor. Infelizmente, mltiplas
organizaes determinaram valores diferentes para o mesmo tipo. Como resultado, duas
organizaes pode acidentalmente escolher o mesmo valor para diferentes tipos; o IEEE definiu
um padro que inclui um campo para identificar a organizao padro, bem como o tipo do
frame. Essa especificao conhecida com Logical Link Control (LLC) SubNetwork Attachment
Point (SNAP). E esse padro largamente aceito.

37/223

A figura abaixo mostra um exemplo de um cabealho LLC/SNAP que contem oito


octetos.

A poro SNAP dividida em dois campos, o primeiro chamado de Organizationally


Unique Identifier (OUI), que usado para identificar uma organizao em particular. O segundo
contm o valor do tipo, definido por aquela organizao.
Com um tipo codificado no cabealho, o tipo LLC/SNAP torna possvel que todos os
computadores faam broadcast de frames na rede. Quando um frame chega a determinado
computador, o computador procura pela informao LLC/SNAP no comeo da rea de dados.
Se o computador no reconhecer o OUI ou no ter o software que lida com o tipo de dados que
esto sendo enviados, o receptor descarta o frame. Assim, se apenas trs computadores de uma
rede entendem um tipo de frame, o broadcast desse frame ser ignorado por todos, menos os
trs.

4.12 Anlise de Rede, Endereos Fsicos e Tipo de Frames


Um network analyzer ou um network monitor um dispositivo usado para determinar o
desempenho da rede. A maioria deles porttil, permitindo serem movidos facilmente. Um
analisador pode monitorar um evento especfico como o nmero de frames por segundo ou o
tamanho mdio dos frames. Por exemplo, um analisador para uma rede CSMA/CD dever
reportar o nmero de colises que ocorreram. Mais importante, os analisadores so flexveis,
um gerente de rede pode configurar o analisador para observar os frames enviados por uma
determinada mquina, observar o trfego de um tipo especfico, ou computar a porcentagem de
cada tipo de frame.
O hardware necessrio para um analisador surpreendentemente simples muitos
analisadores consistem em um computador porttil com uma interface de LAN. Quando usado
como analisador, o computador dedicado completamente a essa funo. Um software tambm
necessrio para realizar a anlise. O programa de anlise comea permitindo ao usurio
configurar os parmetros, e utiliza esses parmetros para analisar os pacotes.
Para ler os pacotes, o software coloca a interface de rede do computador no modo
promiscuous, o qual cancela o reconhecimento convencional de endereo. Assim, o software
configura o computador para receber todos os frames. Uma vez no modo promiscuous, a
interface de rede no checa o endereo do destinatrio, assim no rejeita nenhum frame. A
interface simplesmente faz uma cpia de cada frame e armazena na memria do computador
interrompendo a CPU para informar que um frame chegou.
Usurios mal informados podem assumir que um carto de interface especial
requerido para o modo promiscuous. Surpreendentemente, no esse o caso. Quase todas as
interfaces de redes comercializadas suportam o modo promiscuous. Alm disso, mudar uma
interface para o modo promiscuous trivial apenas uma quantidade boa de instrues da CPU
precisa ser executada.
38/223

Como conseqncia, qualquer usurio com um computador conectado rede pode ler
todos os pacotes que passam atravs dela. Assim, pode-se notar que mensagens em uma LAN
no so totalmente privadas.
Para entender como isso possvel, considere como um analisador de rede trabalha. O
analisador pode examinar os campos no cabealho do frame para determinar o emissor, o
destinatrio, o tipo, ou olhar a rea dos dados.
Um analisador de rede configurvel: a exata configurao que um usurio seleciona
determina que campo o analisador examina e qual informao ele mantm. Assim, um
analisador pode tanto gerenciar o trfego, ou checar todos os frames que um determinado
computador envia.

39/223

Captulo 5 Cabeamentos de LAN, Topologia Fsica e


Interface de Hardware

5.1 Introduo
Este captulo continua a discusso das redes locais examinando o esquema de
cabeamento com mais detalhes. O captulo comea considerando a interface de rede que conecta
um computador a uma rede e trata dos detalhes da transmisso e recepo de pacotes.
Depois de discutir as interfaces de rede, o captulo descreve as LANs convencionais e
identifica os vrios componentes usados em quase todos os esquemas de rede cabeadas,
incluindo a descrio do hub.
Por fim, o captulo discute a diferena entre topologia lgica e topologia fsica e mostra
como os conceitos discutidos no captulo sete so implementados na prtica.

5.2 Velocidades de LANs e Computadores


Cada tecnologia de rede especifica uma taxa em que os dados devem ser enviados.
Surpreendentemente, muitas redes locais operam em taxas to rpidas que a CPU incapaz de
processar os bits na velocidade da rede. A diferena entre a velocidade da rede e a do
computador um problema grave, se a rede acompanhar a velocidade do computador mais lento
na rede ela ir prejudicar a velocidade de transferncia entre dois computadores mais rpidos.
As redes so feitas de modo a operar sempre utilizando a taxa de transferncia mxima que o
hardware pode suportar.

5.3 Interface de Rede


Numa transmisso via rede, a CPU no lida com um bit individualmente, ela usa uma
placa que trabalha exclusivamente com a rede. Fisicamente, trata-se de um circuito impresso
que contm vrios componentes eletrnicos que interpretam os sinais eltricos e os converte de
modo que a CPU possa ler os dados. Esse adaptador leva o nome de network interface card
(NIC), essa placa conectada ao processador, assim os dados que chegam via rede podem ser
processados. A figura a seguir mostra os sockets, nos quais as placas de rede podem ser
conectadas no computador.

40/223

Um NIC contm um circuito eletrnico capaz de operar independentemente do


processador, ele capaz de enviar e receber bits sem usar o processador do computador. A
vantagem disso que o processador do computador pode fazer outras coisas enquanto a placa de
rede processa os bits, e quando um pacote termina de ser enviado a placa avisa o processador
por meio de uma interrupo.
O mais importante disso tudo saber que a maioria das redes transfere dados por
diferentes meios a uma taxa fixa, normalmente essa taxa superior taxa que o computador
capaz de processar. Para evitar problemas no envio e no recebimento de dados, cada
computador tem um hardware especial para lidar com isso, a placa de rede (NIC); o NIC
funciona como um dispositivo I/O: ele construdo para uma determinada tecnologia de rede e
lida com os detalhes da transmisso de frames sem precisar do processador do computador.

5.4 Conexo NIC e Rede


A conexo entre uma rede e uma placa depende da tecnologia da rede, e em algumas
tecnologias, o NIC contm todo o hardware necessrio para que um cabo de rede seja conectado
diretamente nela; mas em muitas outras tecnologias o NIC no contm todo o hardware
necessrio. E quando isso ocorre, preciso usar alguns componentes eletrnicos adicionais.
Surpreendentemente, os detalhes de conexo entre rede e NIC no so determinados pela
tecnologia, pois uma mesma tecnologia pode suportar vrios esquemas de implementao.
Vamos analisar agora uma tecnologia que suporta 3 esquemas de implementao: a Ethernet.

5.5 Thick Ethernet


O thick ethernet um sistema de cabeamento de rede tambm conhecido informalmente
pelo nome de Thicknet, formalmente recebe o nome 10Base5, e o meio de comunicao desse
sistema um cabo coaxial extenso. Quanto ao hardware que lida com esse tipo de rede podemos
dizer que se divide em duas partes principais: um circuito que trata com os aspectos digitais da
comunicao (incluindo deteco de erros e reconhecimento de endereos) e um circuito que
trata com os dados analgicos, conhecidos pelo nome de transceiver. O hardware que lida com
os dados digitais no capaz de converter ondas em sinais digitais, por essa razo faz-se
necessrio o uso do transceiver. O transceiver um dispositivo de funcionamento simples, ele
converte um sinal analgico em um digital. Em sistemas de rede que usam o thicknet cada
computador precisa ter um transceiver, e tal dispositivo fica acoplado no cabo principal (como
41/223

mostra a figura a seguir); este conectado ao computador atravs de um cabo que recebe o
nome de AUI (Attachment Unit Interface). Na placa de rede, o conector que recebe o cabo se
chama conector AUI. Um AUI contm vrios pinos para transportar dados e alguns fios que so
destinados a controlar o transceiver e energizar o circuito.

Notando a figura, percebe-se outro detalhe: um terminal na ponta do cabo principal.


Esse terminal tem o objetivo de evitar que um sinal, ao chegar ao fim do cabo principal seja
refletido. A ponta de um cabo funciona para um sinal eltrico como um espelho funciona para
a luz, ou seja, reflete o sinal. Isso terrvel para o sistema de transmisso, o sinal que est
voltando pode causar uma interferncia no sinal que deveria ser enviado, modificando a
informao original.

5.6 Multiplexador de Conexo


Em alguns casos a thicknet pode ser inconveniente por causa da distncia entre o cabo
principal e o computador. Pensando nisso, os engenheiros e projetistas desenvolveram um
dispositivo conhecido por multiplexador de conexo. Um multiplexador de conexo permite que
vrios computadores da rede utilizem um nico transceiver, diminuindo a quantidade de AUIs.
Ao invs de usar um AUI para cada computador da rede esse esquema utiliza apenas um que
ligado ao multiplexador.

42/223

A figura abaixo ilustra a idia.

Cada computador tem sua prpria placa de rede, mas ao invs de se conectar a rede
atravs de um transceiver, ele faz isso se conectando ao multiplexador. Os AUIs que
convencionalmente se conectariam a um transceiver, se conectam ao multiplexador. O
multiplexador faz o papel do transceiver para todos os computadores da rede.

5.7 Thin Ethernet


Os hardwares de rede disponveis atualmente no mercado tambm aceitam outro tipo de
cabeamento, o 10Base2, conhecido informalmente por Thinnet. Esse esquema utiliza um fio
mais fino e mais flexvel que a Thicknet, mas as diferenas no param por a, existem pelo
menos mais trs pontos importantes nos quais os dois esquemas diferem. Primeiro: a Thinnet
geralmente mais barata de se implantar que a Thicknet. Segundo: a funo do transceiver j est
embutida na placa de rede, por isso desnecessria a utilizao de dispositivos externos.
Terceiro: a Thinnet no usam AUIs para conectar o computador ao meio de transmisso, nesse
caso o cabo de rede conectado diretamente na placa de rede atravs de um conector que recebe
o nome de BCN.

Como se pode ver na figura, esse esquema tambm utiliza terminais nas pontas do cabo,
no entanto o cabo coaxial esticado entre pares de computadores.
Apesar de a Thinnet e a Thicknet parecerem muito diferentes elas tm muita coisa em
comum: ambas usam um cabo coaxial para proteger o sinal de interferncias externas; ambas
usam terminais nas pontas do cabo principal; ambas usam bus topology (topologia em
43/223

barramento); e mais importante, os dois esquemas tm caractersticas eltricas semelhantes


(resistncia e capacitncia), por isso o sinal transita ao longo do cabo da mesma forma nos dois
sistemas.

5.8 Par Tranado


O terceiro tipo de cabeamento de rede Ethernet o par tranado. Esse sistema difere
drasticamente dos outros dois estudados at aqui. Ele formalmente conhecido pelo nome
10Base-T e informalmente conhecido pelo nome de Par Tranado. Esse sistema no utiliza
um cabo coaxial como as outras duas tecnologias apresentadas, ou seja, esse esquema no tem
um meio fsico compartilhado como nos outros dois casos. Em vez disso, faz-se uso da idia de
multiplexagem, sendo um dispositivo eletrnico o ponto central da rede. Tal dispositivo recebe
o nome de hub Ethernet, ou simplesmente hub.
O 10Base-T tambm requer que cada computador da rede tenha uma placa de rede, e
agora a conexo com a rede feita diretamente na placa, sem a utilizao de transceiver. O
conector recebe o nome de RJ-45. Em cada uma das pontas do cabo existe um conector RJ-45
uma conectada ao hub e a outra conectada placa de rede.
O hub simula um cabo coaxial principal, fazendo com que o sistema se comporte
exatamente como a rede Ethernet convencional. A diferena entre o sistema de cabeamento
usado por uma rede no pode ser percebida por softwares, as placas de rede lidam com os
detalhes e escondem as diferenas. Os hubs podem ser encontrados com diferentes quantidades
de portas (a cada porta se conecta um computador), h hubs de 4 portas e h hubs que suportam
grandes redes que chegam a ter centenas de portas. A figura a seguir ilustra um sistema de par
tranado.

5.9 Vantagens e Desvantagens dos Sistemas de Cabeamento


Cada um dos trs esquemas de cabeamento discutidos apresenta vantagens e
desvantagens. Cabeamentos que usam um transceiver para cada mquina permitem que um
computador seja retirado da rede sem problemas, j no sistema Thinnet isso no possvel por
causa da conexo ponto-a-ponto. Os transceivers muitas vezes so colocados em locais de
difcil acesso, e se um transceiver falhar, a localizao, e at mesmo a substituio do
dispositivo, pode se tornar complicada. No sistema Thinnet, se um computador for desconectado
da rede, todo o restante tambm ser, no entanto, para desconectar um cabo no preciso de
nenhuma ferramenta especial, o conector BCN muito fcil de ser desconectado.
44/223

Redes que usam hub so bastante imunes s desconexes acidentais, e se isso acontece
apenas uma mquina da rede vai ser afetada, e todo o restante permanecendo funcionando.
Hoje em dia, h um fator muito importante na escolha de qual tipo de cabeamento usar:
o preo. Atualmente o sistema que vem dominando o mercado o 10Base-T, por causa de seu
baixo custo (comparando com os outros dois). Mas o preo depende de vrios fatores, como por
exemplo, distncia entre as mquinas, preo da placa de rede, a quantidade de micros na rede, o
custo dos reparos e da freqncia com que novos computadores so adicionados ou retirados
dessa rede.

A figura acima compara uma rede de nove computadores usando diferentes sistemas de
cabeamento. Repare que para este caso, por exemplo, a quantidade de cabos poderia ser um
fator importante na hora de escolher um esquema.

45/223

5.10 Placas de Rede e Esquemas de Cabeamento


Como existem vrios tipos de cabeamento possveis de se aplicar numa rede,
conveniente que uma mesma placa de rede aceite vrios esquemas.

A figura ilustra tal situao: uma mesma placa de rede pode ser usada no esquema
Thicknet, Thinnet ou de Par Tranado.
Apesar de isso acontecer, apenas um conector pode estar funcionando por vez, no se
pode ligar um computador a duas redes de dois esquemas diferentes ao mesmo tempo. Um
software deve decidir qual dos trs conectores ser habilitado. Isso torna possvel usar um
computador com vrios esquemas de cabeamento, ou seja, a placa de rede no precisar ser
trocada caso a rede seja substituda por outra que usa outro esquema de cabeamento.
Mas o melhor de tudo isso que o endereo do computador na rede determinado no
pelo sistema de cabeamento, mas sim pela placa de rede. Por isso o endereo fsico de uma
mquina continua inalterado quando se substitui o sistema de cabeamento por outro.

46/223

Captulo 6 Extenso das LANs

6.1 Introduo
Cada tecnologia de rede se aplica a uma situao diferente, e os fatores que determinam
qual tipo usar, so geralmente a velocidade, a distncia e principalmente o custo. Quando se
projeta uma LAN, deve-se planejar a distncia mxima que ela poder atingir (normalmente
algumas centenas de metros). Por isso a grande maioria das LANs se restringe a um prdio
apenas.
Muitas vezes, computadores em uma rede precisam estar a uma distncia maior do que
aquela que a rede pode atingir. Por isso foram desenvolvidos mecanismos capazes de estender
uma rede a uma distncia maior. Este captulo trata desse assunto e aborda: extenses de LANs
em longas distncias, o uso de modems de fibra, repetidores e bridges.

6.2 Limitao de Distncia e Projeto de LAN


O fato de uma rede s poder se estender a uma determinada distncia um fator
importantssimo na hora de projetar uma rede. Quando se est projetando uma rede, deve-se
fazer uma combinao de sua capacidade, do mximo delay permitido, e mxima distncia
econmica de custo.
Para garantir que o delay no comece a ser significativo na hora da transmisso de
dados, as LANs so desenhadas para trabalharem com um tamanho mximo de cabo, e
ultrapassar esse comprimento significa incluir delays na transmisso. Outro problema que limita
a distncia o hardware. Uma placa de rede no pode emitir pulsos eltricos arbitrariamente,
ento, pois se a distncia for demasiadamente longa o sinal comea a se perder no fio de cobre.
A seguir sero discutidos alguns artifcios que podem ser usados para driblar o problema das
limitaes trazidas pela distncia.

6.3 Extenses de Fibra ptica


J que a distncia uma limitao no comprimento de uma rede, a soluo encontrada
por engenheiros e projetistas da rea foi fazer uma extenso. O tipo mais simples de extenso
o que usa uma fibra ptica e um par de modems de fibra ptica. A idia desse mecanismo pode
ser vista na figura abaixo.

Devido ao baixo delay e a alta condutividade da fibra ptica, alguns mecanismos podem
aceitar que um computador seja conectado a uma rede remota. Para se usar uma extenso
dessas, deve-se proceder como na figura: os modems servem para transformar o sinal analgico
47/223

(pulso eltrico) em luz, para que o dado possa ser transportado pela fibra e vice-versa. A
principal vantagem dessa extenso poder conectar um computador rede a uma distncia
absurdamente grande (vrios quilmetros); e a desvantagem que cada computador precisa de
um par de modems, o que encarece esse tipo de extenso. importante lembrar que essa
extenso se aplica entre uma rede e um computador.

6.4 Repetidores
Para ultrapassar as limitaes de distncia algumas tecnologias de rede permitem que
dois cabos sejam colocados juntos em um dispositivo conhecido pelo nome de repetidor. Um
repetidor um dispositivo analgico que monitora constantemente o sinal eltrico nas pontas
dos cabos. Quando um sinal chega ao dispositivo, ele (o repetidor) emite uma cpia amplificada
no outro cabo. A figura mostra um esquema usando repetidor.

Um repetidor conecta-se a dois cabos, cada um com terminais nas pontas (isso pode ser
observado na figura acima). Os repetidores no conseguem identificar um frame, por isso eles
apenas emitem cpias idnticas do sinal que recebem. O mximo comprimento que um
segmento de rede pode ter de 500 metros, no entanto, se usarmos um repetidor esse
comprimento pode dobrar; mas numa LAN estendida podemos ter no mximo quatro
repetidores separando duas estaes. Isso acontece porque cada repetidor acrescenta um delay, e
se o delay comea a ficar significativo o esquema comea a falhar.
Os repetidores apresentam alguns problemas, o mais grave deles o fato de um
repetidor no conseguir identificar um frame. Quando esse dispositivo recebe um sinal, ele no
faz nenhuma verificao de erros, por isso se um sinal sofrer uma interferncia eletromagntica
antes de chegar ao repetidor, esse sinal continuar a se propagar.

6.5 Bridges
Uma bridge um dispositivo eletrnico que conecta dois segmentos de rede, mas
diferentemente dos repetidores, uma bridge consegue identificar frames completos. Quando uma
bridge recebe um frame de um dos segmentos conectados a ele, este verifica se o frame est
chegando intacto e s depois envia uma cpia para o outro segmento, se necessrio. Uma bridge
unindo dois segmentos transforma-os em uma nica rede. A figura a seguir ilustra esse conceito.
O uso de bridge se tornou mais popular do que o uso de repetidores, porque as bridges
evitam a propagao de erros e faz isso comparando o frame que foi enviado pelo computador
com o frame que ele recebeu. Se esses dois frames forem iguais, a bridge transmite o frame para
o computador de destino.

48/223

6.6 Filtro de Frames


A maioria das bridges faz mais do que simplesmente transmitir uma cpia de frame de
um segmento para outro. A funo mais valiosa de uma bridge filtrar os frames uma bridge
no transmite um frame desnecessariamente para um segmento.
Particularmente, se um computador que est num segmento envia um frame para um
computador que est no mesmo segmento, a bridge no precisar enviar esse frame para o outro
segmento. Para determinar para onde enviar o frame, a bridge usa o endereo fsico encontrado
no cabealho do frame. Para identificar quais computadores esto conectados a cada um dos
segmentos, a bridge executa duas tarefas. Primeira: extrai o endereo do cabealho do frame e
adiciona este endereo na lista do segmento que o computador est. Segunda: extrai o endereo
de destino do frame e procede da mesma maneira que no primeiro passo. Portanto, a bridge s
aprende a localizao de um computador depois que ele envia seu primeiro frame. Para ilustrar,
observe a figura abaixo.

6.7 Startup e Steady State de Redes com Bridge


Depois que todos os computadores que esto conectados a uma rede com uma bridge
enviam um frame, a bridge aprende a localizao de cada um deles e usa essa informao para
fazer o filtro de frames. Como resultado disso, uma rede com bridge s envia frames para outro
segmento se isso for necessrio.
O princpio de propagao de redes com bridges nos diz que no steady state a bridge
envia cada frame apenas distncia necessria. No primeiro boot a bridge ainda no sabe a
localizao de cada computador e se um computador no enviar nenhum frame, sua localizao
no ser detectada pela bridge. Felizmente, a comunicao entre computadores normalmente
bidirecional, ou seja, quando um computador recebe um frame, normalmente ele envia uma
resposta. Por esta razo a bridge consegue identificar rapidamente a posio de todos os
computadores ligados rede.
Quando se deseja construir uma rede com bridge, devem-se colocar os computadores
que se comunicam com mais freqncia em um mesmo segmento.
49/223

Isto devido ao princpio de propagao, se um computador for enviar um frame para um


computador do mesmo segmento, os computadores do outro segmento podero se comunicar ao
mesmo tempo.

6.8 Bridge e Edificaes


Do mesmo modo que os repetidores, as bridges tambm podem ser usadas para expandir
uma rede a uma determinada distncia. Se, por exemplo, dois prdios esto separados por uma
distncia significativa, uma LAN convencional no ser capaz de fazer a comunicao entre
elas. Se para solucionar este problema for usada uma extenso de fibra ptica, o custo da
extenso ser altssimo, isto porque, para cada computador adicional necessrio um par de
modems de fibra, e a fibra ptica propriamente dita. Uma soluo que diminuiria bastante o
preo seria usar apenas uma bridge, um par de modems de fibra e uma nica fibra.

Neste caso a extenso conecta dois segmentos em vez de conectar um computador ao


segmento. Essa soluo traz trs vantagens principais:
Primeira: requer apenas uma fibra para a conexo, o que diminui o custo;
Segunda: pelo fato de estar conectando dois segmentos, um computador pode ser
facilmente adicionado ou removido da rede;
Terceira: devido ao fato de uma rede com uma bridge aceitar comunicao simultnea
nos dois segmentos, mesmo que um dos segmentos esteja congestionado, o outro pode trabalhar
sem problemas, desde que a comunicao ocorra no prprio segmento.

6.9

Bridges em Redes de Longa Distncia

Uma rede com bridge pode se expandir por uma distncia muito longa de dois modos
diferentes. O primeiro usa cabos para conectar os dois lados, o segundo usa satlites.
Normalmente o uso de cabos o mais comum porque mais barato. Tanto a linha quanto o
satlite podem ser alugados. Neste tpico analisaremos a comunicao via satlite, ela permite
comunicao a qualquer distncia.

50/223

Como pode ser visto na figura, o hardware usado nesta situao completamente
diferente do usado na comunicao local, note que cada segmento tem uma bridge. Neste tipo
de comunicao comum usar o filtro de frame em ambos os lados, isto porque os satlites so
alugados e quanto menos frames forem enviados, menor ser o custo do aluguel.
Conseqentemente, um canal de satlite opera com uma capacidade menor do que um
segmento. O resultado que o canal do satlite no capaz de enviar todos os frames de um
segmento para outro na mesma velocidade que um cabo ou uma fibra fariam. Para evitar
problemas de comunicao, a bridge usada nesses casos, faz um buffer dos frames excedentes
que chegam. Fazer um buffer significa salvar uma cpia dos frames que esto sendo enviados na
memria at que eles possam ser enviados. Bufferizar no resolve todos os problemas deste
tipo de transmisso, se os frames continuarem chegando a uma velocidade maior do que os
satlites podem enviar dados, a bridge comear a descartar os frames que chegarem por ltimo.

6.10 Bridges em Crculos


Uma rede pode ter vrias bridges para interligar os segmentos e apesar de cada bridge
acrescentar um pequeno delay, ele no suficientemente grande para que a rede deixe funcionar
corretamente. Abaixo est um exemplo de construo de rede com vrias bridges.

Se uma rede com bridges fizer um crculo, como na figura a seguir, podem acontecer
problemas na hora da transmisso dos dados. Considere, p.e., o que acontece se um computador
envia um frame. Com uma rede aberta, a informao chegaria ao computador de destino e
depois seria descartada. No entanto, com o sistema em crculo, o frame fica passando de um
segmento para o outro infinitamente, isso significa que a rede fatalmente ficar congestionada.

51/223

Para evitar esse problema de looping infinito, uma rede com bridges no pode permitir
que todas as bridges enviem todos os frames simultaneamente e, portanto, tenha um crculo de
bridges. Isso na prtica pode se tornar difcil numa rede extensa, mas por sorte a preveno pode
ser automtica.

6.11 Switching
O conceito de bridge fundamental para entender um switch. Um switch um
dispositivo que pode transferir frames, como uma bridge. Um switch lembra um hub quando
visto externamente, mas do ponto de vista de funcionamento eles so diferentes: um hub
funciona como um cabo coaxial, ou seja, como um meio. J o switch funciona simulando uma
rede de bridges, com um computador por segmento (a figura abaixo ilustra essa idia).

A principal vantagem de se usar um switch no lugar de um hub a mesma de se usar


uma bridge no lugar de um nico segmento: o paralelismo. Como um hub simula um segmento,
e apenas dois computadores podem trocar informaes simultaneamente, o switch simula uma
rede com bridge; e devido ao princpio da propagao, computadores em segmentos diferentes
podem se comunicar ao mesmo tempo. Como o switch simula uma rede com um computador
por segmento, a rede dificilmente ficar congestionada, e a velocidade do trfego de dados
aumenta quando comparada com a de uma rede com hub.
O problema do switch seu preo, que maior que o preo de um hub. Muitas
empresas que tem redes de computadores com muitos computadores utilizam combinaes de
hubs e switches para montar suas redes a um custo menor. A idia principal ligar um hub em
cada uma das portas do switch, assim a quantidade de entradas do switch fica multiplicada pelo
nmero de entradas de cada hub. Apesar da velocidade do trfego de frames diminuir, o custo
bem menor. Esses sistemas tambm funcionam em redes com bridges convencionais.

52/223

Captulo 7 WAN e Roteadores

7.1 Introduo
O captulo anterior tratou de tecnologias que oferecem comunicao digital a longas
distncias e fornecem comunicao digital aos assinantes. Esse captulo mostra como aquelas
tecnologias podem ser usadas para construir redes que se expandem por grandes reas. O
captulo descreve os componentes bsicos necessrios para se montar uma rede interconectada.
Como parte do assunto discutido o conceito fundamental do roteador e mostrado como ele
usado em WANs.

7.2 Grandes Redes e Grandes reas


As redes so, em geral, classificadas dentro de trs categorias. A classificao depende
do tamanho geogrfico que a rede pode atingir, assim, trs grupos podem descritos:

Local rea Network (LAN) - pode se estender desde um simples prdio ou campus
universitrio;
Metropolitan Area Network (MAN) - pode se estender por toda uma cidade;
Wide rea Network (WAN) - pode se estender por grandes reas, cidades, pases e at
mesmo continentes.

Temos visto ao longo dos captulos, que apesar de uma LAN ser desenvolvida para ser
usada apenas em um prdio, existem maneiras de estend-la (satlite com uma bridge pode
estend-la por qualquer distncia). Apesar disso, uma LAN estendida no pode ser considerada
uma WAN, porque no possvel conectar muitos computadores e no possvel que se tenham
diversidades de crescimento.
A questo bsica que separa uma WAN de uma LAN a escalabilidade. Uma WAN
capaz de crescer o quanto for necessrio para conectar a outras WANs e com quantos
computadores forem necessrios. Felizmente uma tecnologia no classificada como WAN a
menos que ela seja capaz de permitir a comunicao entre vrios computadores
simultaneamente. E por esse motivo que se usa um roteador para oferecer escalabilidade s
WANs.

7.3 O Roteador
interessante pensar em como uma WAN consegue lidar com tantos computadores.
Para entender isso preciso primeiro entender que a rede deve ser capaz de crescer. No entanto,
usando uma conexo ponto-a-ponto com circuitos alugados, que conecta um computador
diretamente a outro, possvel construir uma WAN - para isso basta adicionar roteadores e
switches para conectar os computadores individualmente. Depois que uma WAN montada
possvel aumentar seu tamanho facilmente apenas adicionando outros roteadores e switches.
O roteador tem a habilidade de mover pacotes inteiros de computador para computador.
Conceitualmente, cada roteador um computador com processador, memria, e dispositivos I/O
usados para enviar e receber os pacotes.
A figura a seguir mostra um roteador esquematicamente (packet switch).

53/223

Uma parte do dispositivo I/O usada para operar em altas velocidades e conecta o
roteador linha alugada, que, por sua vez, se conecta a outro roteador. Assim sendo a
transmisso de dados entre os roteadores se processa em alta velocidade. Uma outra parte do
dispositivo I/O opera em baixas velocidades e usada para conectar switches e hubs. A
transmisso de dados entre switches e hubs pendurados em um mesmo roteador acontece em
baixa velocidade. importante ressaltar que todas as formas de comunicao ponto-a-ponto so
usadas para montar as WANs, incluindo circuitos alugados, fibras pticas, microondas e canais
de satlites.

7.4 Formando uma WAN


Um grupo de roteadores deve ser interconectado para formar uma WAN. Cada roteador
normalmente tem vrios conectores I/O, por isso possvel formar vrias topologias diferentes e
conectar vrios switches e hubs. A figura a seguir ilustra um modo possvel de se montar uma
WAN interconectando quatro roteadores e oito computadores diretamente ligados.

Como a figura mostra a WAN no precisa ser simtrica; a quantidade de interconexes


e a capacidade de cada conexo so escolhidas para acomodar o trfego esperado e promover
redundncias em caso de falhas em uma das interconexes.

7.5 Store e Forward


Diferentemente de uma LAN, uma WAN permite que vrios computadores se
comuniquem ao mesmo tempo enviando e recebendo frames. Para fazer isso, existe um sistema
chamado de store and forward. Nesse sistema o roteador possui um buffer que armazena os
pacotes. O procedimento de store (estocar) acontece quando o pacote chega ao roteador.
54/223

Uma cpia do pacote guardada na memria do roteador. O procedimento de forward


(encaminhar) acontece logo em seguida. O processador examina o cabealho do pacote e
determina qual a interface que deve ser usada para envi-lo e, ento, inicia o envio. Esse
processo rpido porque permite a transmisso em alta velocidade (a velocidade a mxima
que o hardware suportar), e o mais importante que se vrios pacotes precisarem ser enviados
pela mesma sada do dispositivo, o roteador pode salvar os pacotes no buffer at que a sada
esteja livre para ser usada.

7.6 O Endereo Fsico


Para o computador em rede, uma WAN se comporta do mesmo modo que uma LAN.
Porm, na verdade, no bem assim. Numa WAN, cada computador deve ter um endereo
lgico que determina em qual porta o computador est ligado. Isso bvio, pois quando um
computador encaminha um pacote pela WAN, este pacote precisar ir at o destino. Muitas
WANs usam um sistema hierrquico de endereamento para fazer o encaminhamento com
maior eficincia. No sistema hierrquico o primeiro nmero indica em qual roteador o
computador est conectado, e o segundo nmero indica qual a porta usada. A figura ajuda a
imaginar a situao descrita.

7.7 Next-Hop
O roteador deve escolher uma de suas sadas atravs da qual enviar o pacote, e essa
escolha feita de acordo com o cabealho do prprio pacote. Se o destino for um dos
computadores conectado ao segmento do qual este computador faz parte, ele descarta o pacote.
Mas se o pacote tem como destino um computador conectado a outro roteador da WAN, a
transmisso feita pela porta adequada at o prximo roteador.
O roteador no tem informaes sobre todos os destinos possveis da WAN, mas ele
tem informaes sobre o prximo salto (next-hop). O conceito um pouco abstrato, mas para
compreend-lo imagine que na figura a seguir haja um pacote no roteador 2. A tabela mostra o
next-hop para todas as possibilidades.

55/223

7.8 Relao de Endereamento Hierrquico para o Roteador


A tabela usada para armazenar o next-hop (tabela b da seo 7.7) chamada de routing
table, e o processo de forward do pacote conhecido pelo nome de routing. A vantagem do
endereamento hierrquico fica evidente agora. Quando um pacote chega a um roteador para ser
enviado, o roteador identifica apenas o roteador de destino, ou seja, verifica apenas o primeiro
nmero do cabealho do pacote. Depois que o pacote chega ao seu destino, o outro roteador
identificar apenas o segundo nmero do endereo, que est no cabealho do pacote, para
direcionar a interface correta. Isso traz algumas conseqncias prticas, sendo que a principal
tornar o tempo de processamento menor se houvesse a necessidade de verificar todo o endereo.

A tabela acima uma tabela reduzida da anterior. Todos os pacotes que tm o roteador
1 como destino, so enviados atravs da interface 1, o processo igual para os outros destinos.
Cabe ao roteador de destino analisar e direcionar o pacote para uma das interfaces conectadas a
ele.

7.9 Roteamento numa WAN


Para fazer mudanas significativas no tamanho de rede interligada preciso adicionar
novos roteadores que permitiro mais computadores interconectados.
Para que uma WAN trabalhe corretamente preciso que os valores da tabela de
roteamento garantam o seguinte:

Roteamento Universal - a tabela de roteamento deve conter o next-hop para todos os


destinos possveis;
Rotas timas - num roteador, o next-hop da tabela de roteamento para um dado destino
deve ser o ponto mais prximo ao destino.

56/223

Uma maneira fcil de visualizar a situao descrita imaginar um modelo


representativo para a WAN. Na figura abaixo temos dois esquemas para entender melhor o
roteamento.

Agora vejamos a tabela de roteamento para esse esquema.

Onde se l (1,3), por exemplo, entenda como interface entre 1 e 3, repare que a ordem
importante.

7.10 Uso de Rotas Padro


A tabela de roteamento do n 1 ilustra uma idia importante: apesar de o endereamento
hierrquico reduzir o tamanho da routing table retirando as rotas repetidas, ainda existem muitas
entradas com o mesmo next-hop. Em exemplos pequenos essa lista de endereos repetidos pode
at ser pequena, mas quando a WAN apresenta um tamanho consideravelmente grande, isso
torna-se bastante complicado. Para resolver esse problema, a maioria das WANs tem um
mecanismo que elimina as duplicatas. O sistema conhecido pelo nome de rota padro (default
route). O mecanismo faz uma simplificao da routing table. A Tabela apresentada na seo 7.9
pode ser simplificada da seguinte maneira:

57/223

Note que para o n 1, que qualquer destino diferente do prprio n 1, o next-hop o


mesmo.

7.11 Montando a Routing Table


Apesar de ser fcil montar manualmente uma routing table para uma rede pequena, o
processo no nada simples para grandes redes. Por esse motivo so usados softwares que
fazem isso. Tais softwares seguem dois princpios bsicos:

Static Routing - o programa calcula e instala as rotas quando o roteador iniciado - as


rotas no mudam;
Dynamic Routing - O programa constri uma routing table inicial quando o roteador
iniciado, mas a routing table pode ser alterada quando a rede sofre alteraes.

Cada tipo de roteamento tem suas vantagens e desvantagens. A principal vantagem do


static routing sua simplicidade, e a principal desvantagem a inflexibilidade. A maioria das
WANs usa um sistema do tipo dynamic routing porque ele aceita que a rede trate de problemas
automaticamente. Se uma interface apresentar um problema e ficar inutilizvel, o roteador
modifica a routing table de modo a corrigir o problema.

7.12 Calculando o Caminho mais Curto


O software que calcula toda a routing table representa a rede como um grfico. Para
calcular as distncias entre os computadores ligados rede o software usa o chamado Algoritmo
de Dijkstra. Este algoritmo procura o caminho mais curto at cada um dos roteadores a partir de
um mesmo n (roteador), o procedimento repetido para cada um dos ns. Assim, a routing
table construda com os caminhos mais curtos de uma origem at o destino. O algoritmo deve
rodar uma vez para cada routing table. O algoritmo de Dijkstra se popularizou pelo fato de ser
usado com vrias definies de caminho mais curto, e de modo particular, o algoritmo aceita
que cada rtulo tenha um valor no negativo chamado peso ou custo do enlace, e define a
distncia entre dois ns com sendo a soma dos pesos ao longo do caminho entre os ns. A figura
a seguir ilustra um caso: a idia calcular a menor distncia entre os ns 4 e 5.
A distncia entre dois ns marcada com um custo associado. A menor distncia
aquela na qual a soma dos custos a menor possvel.

58/223

A seguir, tem-se a idia bsica do algoritmo de Dijkstra. O algoritmo mostra como a


routing table pode ser computada depois que as informaes da rede so codificadas como um
grafo de ligao. Uma tcnica alternativa para se descobrir o caminho mais curto a tcnica
distributed route computation na qual cada roteador calcula uma routing table local e ento a
envia pela rede para os roteadores vizinhos.
Redes que usam essa tcnica fazem com que cada roteador envie informao sobre as
rotas para a vizinhana periodicamente (poucos segundos). Depois de um perodo inicial, cada
roteador aprende o caminho mais curto para todos os destinos possveis da rede, e a routing
table gerada a mesma que aquela calculada por outro mtodo. Se por acaso um roteador falhar,
ou seja, parar de enviar informao sobre as rotas periodicamente, os outros roteadores da rede
aprendem as rotas que ele fazia e continuam a enviar informaes para os demais roteadores.

7.13 Vetor de Distncias


Um dos melhores algoritmos conhecidos para calcular a distributed route computation
o distance vector. Como no algoritmo mostrado, a cada link ou enlace associado um custo ou
peso, e a distncia at o destino definida como sendo a soma dos custos ao longo do caminho.
Como o valor da distncia fica registrado, um campo adicional exigido em cada entrada da
routing table. O campo adicional contm a distncia para os destinos ao longo do caminho que
corresponde ao prximo destino. O algoritmo a seguir mostra a idia presente no mtodo.

7.14 Link-State Routing (SPF)


Uma soluo para a distribuio de rotas que usa uma verso do algoritmo de Dijkstra
misturada com mapeamento de rota por distncia vetorial formalmente chamada de Link-State
Routing, e informalmente recebe o nome de Shortest Path First (SPF).
Apesar dos roteadores que usam o SPF enviarem mensagens atravs da rede, as
mensagens no contm informaes sobre as tabelas de roteamento. Cada mensagem carrega o
status do link entre dois roteadores apenas, e a mensagem transmitida para todos os outros
roteadores. Cada roteador coleta o status da mensagem que est chegando e o usa para construir
a topologia da rede. A partir da, o roteador pode usar os dados no algoritmo de Dijkstra para
produzir a tabela de roteamento.
O SPF tambm capaz de se adaptar a situaes de erro, alm de ter a vantagem de que
todos os clculos de distncia podem ser feitos ao mesmo tempo.

7.15 Exemplos de Tecnologias WAN


Muitas tecnologias tm sido criadas para experincias e acabam sendo usadas em
WANs. As tecnologias de WAN sero apenas citadas, em captulos posteriores elas so
abordadas com a devida importncia. Incluem-se, a ARPANET,o X.25, o Frame Relay, o
SMDS, o ATM entre outras.

59/223

Captulo 8 Rede Proprietria, Padres de Servios e


Desempenho

8.1 Introduo
Cada tecnologia de rede classificada em uma das trs categorias: LAN, MAN, ou
WAN, com a maioria sendo classificada como LAN ou WAN. Essa classificao til porque
permite comparar a arquitetura das redes.
Este captulo discute trs caractersticas adicionais de redes de computadores: rede
proprietria, tipo de servios providos por uma rede, e o desempenho do sistema resultante.

8.2 Rede Proprietria


O fato de uma rede estender-se at uma determinada distncia um fator
importantssimo no momento do projeto de uma rede. Quando se est projetando uma rede,
deve-se fazer uma combinao da capacidade, do mximo delay permitido, e mxima distncia
econmica.
Para garantir que o delay no seja significativo na hora da transmisso de dados, as
LANs so desenhadas para trabalharem com um tamanho mximo permitido de cabeamento, e
ultrapassar esse comprimento significa incluir delays na transmisso. Outro problema que limita
a distncia o hardware. Uma placa de rede no pode emitir pulsos eltricos arbitrariamente,
pois se a distncia for demasiadamente longa o sinal comea a se perder durante a transmisso.
A seguir so discutidos alguns artifcios que podem ser usados para driblar o problema das
limitaes impostas pela distncia.
Uma rede proprietria, que usada por uma nica companhia ou individuo, chamada
de privada, e uma rede cujos proprietrios so os cidados comuns, chamada de rede pblica.
A maioria das redes privada, pois as companhias usualmente tm uma ou mais LANs
que conectam os computadores de um nico prdio ou local. A companhia compra o hardware e
o software necessrios para cada LAN, instala os cabeamento, e administra e opera a rede.
Uma grande companhia tambm pode ter uma WAN privada, que usada para conectar
computadores em mltiplas localidades. A companhia compra os dispositivos de hardware para
a WAN, como roteadores e switches e, ento, administra e opera a rede interligada.
Para formar uma WAN privada, a empresa deve alugar as conexes entre os mltiplos
locais das companhias pblicas, como as de telefonia, por exemplo. A WAN ainda
considerada privada, pois mesmo alugando as conexes, nenhuma outra corporao ter acesso
aos dados que passam atravs das interligaes.
Uma rede pblica anloga ao sistema de telefonia, qualquer um pode se inscrever no
servio e conectar um computador. O sistema da rede pblica permite que um computador se
comunique com qualquer outro que esteja inscrito na rede. Para tornar o servio da rede pblica
atrativo, este deve ser disponvel para vrios computadores em vrias localidades.
Conseqentemente, a maioria das redes pblicas so WANs que disponibilizam servioes de
rede.
O termo pblico refere-se disponibilidade do servio, no transferncia de dados.
Em particular, uma rede pblica oferece uma comunicao privada, ou seja, apenas os
computadores que esto participando recebem uma cpia dos dados. Alm disso, algumas redes
pblicas permitem que um grupo de computadores se comunique, como numa conferncia
telefnica; e uma rede pblica no transmite pacotes de broadcast. Assim, essas redes so
chamadas de pblicas no mesmo sentido que o sistema telefnico.
A maior vantagem de uma rede privada que o proprietrio tem controle total sobre ela.
O proprietrio ajusta as configuraes e quais os computadores que podero se conectar. Alm
disso, o proprietrio pode garantir que a rede esteja isolada dos computadores que no
60/223

pertencem organizao, e que um computador nunca se conecte a um computador de outra


organizao.
Uma grande rede privada pode ser extremamente cara de ser instalada e mantida. Pois,
alm de comprar os hardwares de rede, a companhia dever contratar e treinar pessoal para
instalar, gerenciar e operar a rede. E o mais importante, as tecnologias de rede mudam
rapidamente, e manter-se atualizado pode ser caro.
As maiores vantagens de uma rede pblica so a flexibilidade e a habilidade para
utilizar a rede sem altos custos de manuteno. A rede pblica flexvel porque quaisquer
computadores em diferentes localidades podem se conectar a ela.

8.3 Virtual Private Networks


A tecnologia virtual private network (VPN) surgiu da juno das vantagens da rede
pblica e da rede privada. A rede VPN restringe o trfego, assim os pacotes podem ser
transmitidos apenas entre diferentes locais de uma mesma companhia, utilizando-se do meio
pblico como meio de transmisso.
Para construir uma VPN necessrio um hardware e um software especial para cada
uma das localidades. O sistema colocado entre a rede privada da companhia e a rede pblica,
sendo que cada um dos sistemas deve ser configurado com os endereos dos outros sistemas
VPN da companhia. Assim, o software s ir trocar pacotes com os sistemas da mesma
companhia, garantindo privacidade na comunicao. Alm disso, o sistema VPN codifica cada
pacote antes da transmisso.
O sistema VPN examina o destinatrio, codifica o pacote e envia o resultado atravs da
rede pblica para o sistema VPN em outra localidade. Assim, quando o pacote chega, o sistema
verifica se ele valido, decodifica o contedo e transmite o pacote para o destinatrio.

8.4 Padres de Servios


Para ajudar a explicar as similaridades e diferenas entre os padres de servios, todas
as interfaces de redes so classificadas em duas categorias de transmisso:

servio orientado para conexo;


servio no orientado para conexo.

O servio orientado para conexo opera de modo anlogo ao sistema de telefonia. Antes
de dois computadores poderem se comunicar, eles devem estabelecer uma conexo atravs da
rede. Um computador pede rede uma forma de conectar-se ao outro computador, e o segundo
computador aceita a conexo. Aps esse incio, ambos os computadores concordam em se
conectarem, e o sistema forma um caminho digital ou conexo, e informa aos computadores.
A comunicao atravs dessa conexo no precisa ser contnua. Ela existe at que um
computador decida que no ela no mais necessria. Para fazer isso o computador informa
rede (destinatrio) que a conexo no mais necessria, similar ao se desligar o telefone.
O servio no orientado para conexo opera analogamente ao servio dos correios.
Quando um computador for enviar dados, dever colocar esses dados em um formato
apropriado (envelope), adicionando o endereo do computador que receber os dados; depois,
passar o pacote para a rede e ela se encarregar da entrega ao computador de destino.
Cada um desses servios apresenta vantagens e desvantagens. A vantagem do servio
orientado para conexo a habilidade de informar imediatamente a um computador se a
conexo foi interrompida; j o servio no orientado para conexo no h como reportar um
erro imediatamente, assim, o computador continua enviando pacotes mesmo depois que uma
falha acontea.
A vantagem do servio no orientado para conexo permitir que um computador envie
dados imediatamente, sem ter que esperar pelo estabelecimento da conexo - estabelecida em
milissegundos, um tempo considerado alto para as atuais velocidades de processamento.
61/223

8.5 Durao de Conexes e Persistncia


Os termos estabelecimento de conexo e conexo permanente distinguem dois tipos de
conexo.
As conexes permanentes so usadas em hardware dedicado, ou seja, eram usadas em
redes antigas. Em redes modernas, as conexes permanentes so concebidas configurando a
rede para formar um caminho de comunicao eletrnico. Por exemplo, um conjunto de
switches pode ser configurado se um par de computadores requisitou uma conexo. Uma vez
que uma conexo permanente configurada, ela armazenada em uma memria no voltil,
permitindo aos switches restabelecerem a conexo aps uma queda de energia.
Assim cada computador mantm uma conexo com a rede durante todo o tempo, e o
switch conecta um computador ao outro. A figura abaixo ilustra a idia.

A maioria das conexes feitas por um switch tem curta durao. Se um computador
trava enquanto est usando uma conexo com switch, tal conexo dever ser restabelecida aps
o computador ser reiniciado.
O termo switch aplicado hoje a equipamentos eletrnicos usados em redes de dados, e
essas redes so chamadas de switched data networks.
Muitas redes que provem as conexes switched (chaveadas) usam uma idia derivada
do sistema de telefonia: mltiplas ligaes ao mesmo tempo. A rede permite ao computador
estabelecer mais de uma conexo ao mesmo tempo e especificar qual conexo usada em
determinado instante.
A vantagem de conexes permanentes a persistncia e a disponibilidade garantida.
Assim, exige-se pouca manuteno, alm disso uma conexo permanente est sempre pronta
para receber dados.
As vantagens da conexo switched (chaveada) so a flexibilidade e a generalidade.
Como so formadas eletronicamente, no necessrio instalar ou mudar fisicamente os cabos.
Alm disso, uma rede switched necessita apenas de uma conexo fsica por computador.
O quadro a seguir sumariza as caractersticas de vrias tecnologias de rede.

62/223

8.6 Endereos e Identificadores de Conexo


Em uma rede no orientada para conexo, cada pacote deve conter o endereo do
destinatrio. J em uma rede orientada para conexo faz uso de abreviaes. Quando um
computador requer uma nova conexo, ele envia uma mensagem para a rede, especificando o
endereo do destinatrio remoto. Depois de estabelecida a conexo, a rede responde com uma
mensagem que verifica a conexo e especifica um identificador da conexo para ser usado.
Usualmente, o identificador da conexo um nmero inteiro pequeno, bem menor que o
endereo total do destinatrio.
Usar um identificador de conexo reduz o overhead (cdigo extra), tornando o
cabealho de dados bem menor.
Um identificador de conexo determinado independentemente na extremidade de cada
conexo ATM; eles no so valores globais. Assim uma extremidade da conexo deve associar
um identificador 17, por exemplo; enquanto a outra extremidade da mesma conexo pode
determinar o valor 12. O switch quem cuida das conexes, que determina os identificadores e
os traduz na rede. A figura abaixo ilustra a idia:

Na prtica, em uma rede ATM, os identificadores so divididos em duas partes, que so


o Virtual Path Identifier (VPI) e o Virtual Circuit Identifier (VCI).
O VPI usado para o caminho do destinatrio do switch, e o VCI usado para a entrega
ao computador ligado aquele switch.

63/223

8.7 Caractersticas do Desempenho de Redes


As redes so classificadas como de baixa ou alta velocidade. Porm essas definies so
inadequadas, porque as tecnologias de rede mudam rapidamente, e uma rede classificada como
de alta velocidade pode se tornar de mdia ou baixa velocidade em um perodo de 4 anos, p.e..
Por isso, deve-se especificar a velocidade de uma rede precisamente, usando termos
quantitativos. Essa seo define duas quantidades fundamentais para uma rede e explica como
so relacionadas capacidade de transmisso da rede.
8.7.1 Delay
O delay de uma rede especifica quanto tempo ir demorar um bit de dados para ir de um
computador a outro, o delay medido em segundos ou fraes de segundo. O delay pode ser
diferente dependendo da localizao especfica de um par de computadores que se comunica. Os
usurios s se preocupam com o delay total de uma rede. Como so necessrias medies, so
reportados o delay mximo e o delay mdio, e estes se dividem em vrias partes.
O delay associado demora no tempo de um sinal ao longo de um fio ou fibra ptica
chamado de delay de propagao. Esse delay fica em torno de milissegundos em LANs, e pode
ser alto, quando, por exemplo, uma rede utiliza um satlite que orbita a terra e precisa levar
dados de um continente a outro.
O delay introduzido pelos equipamentos eletrnicos conhecido como switching delay.
Um equipamento eletrnico deve esperar at que todos os bits de um pacote tenham chegado, e
leva um pequeno tempo para escolher para onde enviar o pacote. Equipamentos altamente
especializados tornaram este delay insignificante.
Como a maioria das LANs utiliza um meio comum, o computador deve aguardar que o
meio esteja livre. Esse delay conhecido como delay de acesso.
Uma forma final de delay acontece quando um pacote roteado na WAN. Relembre-se
de que cada pacote colocado em uma fila, fazendo parte do processo de store-and-foward.
Assim, o pacote na fila deve esperar at que o pacote que chegou primeiro seja enviado. Esse
delay conhecido como delay de enfileiramento.
8.7.2 Taxa de Transferncia
A segunda propriedade fundamental de redes que pode ser medida a taxa de
transferncia (throughput). A taxa de transferncia uma taxa sobre os dados que so enviados
na rede, e especificada em bits por segundo (bps). Muitas redes tm uma taxa de transferncia
de alguns milhes de bits por segundo (Mbps).
Como a taxa de transferncias pode ser medida de vrias maneiras, deve-se ter cuidado
ao especificar exatamente qual o mtodo utilizado. Por exemplo, j vimos que a capacidade de
transferncia dos hardwares chamada de largura de banda. De fato, o termo largura de banda
s vezes sinnimo de taxa de transferncia. Em particular, na maioria das tecnologias, cada
pacote contm um cabealho, que significa que a taxa de transferncia efetiva menor que a
largura de banda oferecida pelo hardware. Nunca a largura de banda de hardware pode ser usada
como a taxa de transferncia da rede, pois a largura de banda um limite superior quele da
taxa de transferncia impossvel ao usurio enviar dados mais rpido que o hardware pode
transferir os seus bits.
Os profissionais de rede normalmente utilizam o termo velocidade como sinnimo de
taxa de transferncia. Porm, pode haver confuso com o delay. De fato, a taxa de transferncia
a medida da capacidade e no da velocidade de transmisso.
O delay medido em segundos, e especifica quanto tempo um bit permanece em
trnsito na rede. A taxa de transferncia, que medida em bits por segundo, especifica quantos
bits podem entrar na rede por unidade de tempo. A taxa de transferncia mede a capacidade de
transmisso da rede.

64/223

8.7.3 A relao entre Delay e Taxa de Transferncia


Em teoria, delay e taxa de transferncia de uma rede so independentes. Na prtica, eles
podem ser relacionados. Se um pacote est na fila esperando sua vez, enquanto um novo pacote
chega, o novo pacote ser colocado no final da fila e ir aguardar que o pacote a sua frente seja
enviado. Anlogo ao trnsito pesado nas rodovias, o trfego excessivo na rede chamado de
congestionamento.
Cientistas da computao estudaram a relao entre delay e congestionamento, e
chegaram a vrios casos em que o delay pode ser estimado pela porcentagem da capacidade da
rede que utilizada. Se D0 denota o delay quando a rede est livre, e U um valor entre 1 e 0,
que denota a utilizao da rede num determinado momento, o delay efetivo D dado por esta
simples equao:
D = D0 / (1-U)
Assim, pode-se notar a partir da equa, que o delay e a taxa de transferncia no so
completamente independentes.
8.7.4 Produto do Delay e da Taxa de Transferncia
Uma vez que o delay e a taxa de transferncia de uma rede so conhecidos, possvel
computar uma quantidade interessante, o produto do delay e da taxa de transferncia.
O produto dessas duas quantidades mede o volume de dados que esto presentes na
rede. E este produto importante para qualquer rede, especialmente para redes com delay alto
ou grande taxa de transferncia, porque significa que um computador ao enviar dados na rede
pode gerar um grande volume, antes mesmo de o destinatrio receber o primeiro bit.

65/223

Captulo 9 Protocolos e Diviso em Camadas

9.1 Introduo
Esse captulo examina a estrutura de um software utilizado no sistema de comunicao
das redes de computadores. O captulo explica porque o hardware no consegue resolver
sozinho todos os problemas de comunicao, e mostra o porqu da necessidade dos protocolos.
Esse captulo tambm ir descrever o conceito das camadas, que provem uma base conceitual
para a compreenso do conjunto completo de protocolos que trabalham para prover um rpido e
eficaz sistema de comunicao.

9.2 A Necessidade dos Protocolos


O software de rede trata com os detalhes e problemas de comunicao em nvel mais
baixo, tornando possveis aos aplicativos se comunicarem mais facilmente. Assim a maioria dos
programas conta com um software de rede para se comunicar: eles no interagem diretamente
com o hardware de rede.
Todas as partes envolvidas na comunicao devem concordar com um conjunto de
regras para serem usadas na troca de mensagens. Esse tipo de acordo chamado de protocolo. O
termo muito bem aplicado comunicao entre computadores: um conjunto de regras que
especifica o formato das mensagens e as aes apropriadas requeridas para cada mensagem
conhecido com protocolo de rede. O software que implementa este protocolo conhecido como
software de protocolo. Esses protocolos podem ser muitas vezes simples ou complexos,
dependendo da complexidade das mensagens que sero enviadas.

9.3 Camada de Protocolos


Ao invs de haver um nico e gigante protocolo que especifique completamente os
detalhes para todas as formas de comunicao, os projetistas decidiram dividi-lo em partes ou
camadas, e projetar separadamente cada protocolo para cada camada. Fazendo isso, a anlise e
teste dos protocolos se tornaram mais fceis. Assim, dividindo o software de comunicao em
vrios protocolos aumenta a flexibilidade, porque permite que subgrupos de protocolos sejam
utilizados de acordo com a necessidade.
A diviso dos protocolos foi cuidadosamente escolhida para que o sistema de
comunicao resultante se tornasse eficiente e efetivo. Para tornar tal implementao possvel,
os protocolos foram projetados de maneira a compartilharem as estruturas de dados e as
informaes. Finalizando, as combinaes dos protocolos tratam com todas as possveis falhas e
condies excepcionais que possam ocorrer no hardware.
A garantia de os protocolos trabalharem bem est contida no desenvolvimento, que em
vez de ser feito isoladamente, so projetados em conjunto. Cada protocolo em uma camada
resolve uma parte dos problemas de comunicao; e juntos, eles resolvem o problema da
comunicao por inteiro.

9.4 Plano e Projeto de Protocolos


Diversas ferramentas foram desenvolvidas para ajudar os projetistas dos protocolos no
entendimento dos problemas de comunicao e no planejamento de todo o conjunto. Uma das
ferramentas mais importantes a chamada de layering model (modelagem por camadas). Em
essncia, o modelo em camadas descreve uma maneira de se dividir o problema da comunicao
66/223

em pequenos pedaos, chamados de layer (camadas). A figura abaixo ilustra a idia (ISO
layering model).

9.5 As Sete Camadas


O modelo ISO bastante popular, porque prov uma explicao simples das relaes
entre um hardware complexo e os componentes de um protocolo de rede. No modelo ISO, o
nvel mais baixo corresponde ao hardware, e medida que o nvel sobe, as camadas vo
correspondendo sucessivamente s partes que integram hardware e software. Essa seo explica
cada camada.

Camada 1: Fsica

Essa camada corresponde base do hardware de rede. Por exemplo, a especificao do


RS-232 pertence camada 1, e fornece uma explicao detalhada do hardware de LAN.

Camada 2: Enlace

Essa camada de protocolo especifica como organizar os dados em frames, e como


transmiti-los atravs da rede.

Camada 3: Rede

Essa camada de protocolo especifica quais endereos sero marcados e como os pacotes
so enviados de um computador na rede para outro.

Camada 4: Transporte

Especifica como lidar com os detalhes de uma transferncia confivel, est entre um dos
protocolos mais complexos.

Camada 5: Sesso

A camada 5 especifica como estabelecer uma sesso de comunicao com um sistema


remoto. Especificaes de segurana, como autenticao utilizando senha secreta, pertencem a
esta camada.
67/223

Camada 6: Apresentao

A camada 6 especifica como representar os dados. Esse protocolo necessrio porque


diferentes marcas de computadores usam representaes internas diferentes para inteiros e
caracteres.

Camada 7: Aplicao

A camada 7 de protocolo especifica como um aplicativo usa a rede. Por exemplo, a


especificao de um aplicativo que transfere arquivos de um computador a outro. Esse protocolo
especifica os detalhes de como um aplicativo em um computador requer um arquivo em outro
computador, e como este responde.

9.6 Protocolos em Camadas


Os protocolos em cada computador so divididos em mdulos, com cada mdulo
correspondendo a uma camada. importante destacar que a diviso em camadas determina a
interao entre os mdulos; em teoria, quando se enviam e recebem dados, cada mdulo se
comunica apenas com o mdulo da camada correspondente no destinatrio e faz uso dos
servios das camadas subjacentes. Assim os dados que esto saindo descem atravs da pilha de
camadas na origem, e os dados recebidos sobem atravs da pilha no destinatrio. A figura
abaixo ilustra o processo.

Os fornecedores usam o termo pilha (stack) para se referirem ao conjunto de protocolos,


pois o modelo em camadas sempre visualizado como um conjunto de mdulos sobrepostos
hierarquicamente, como so apresentados na figura.
Diversas pilhas de protocolos so disponveis comercialmente. A tabela a seguir mostra
a lista das seis mais populares:

68/223

Como cada pilha projetada independentemente, os protocolos de uma pilha no podem


interagir com os protocolos de outro.
Para resolver esse problema, um computador pode utilizar mais de uma pilha de
protocolos ao mesmo tempo. Duas pilhas podem ser executadas em um mesmo computador e
podem transmitir em uma nica rede fsica sem interferncia; pois h um o campo tipo em cada
pacote que identifica qual pilha dever lidar com a mensagem.

9.7 Como Interagem as Camadas de Protocolos


O software em um computador emissor adiciona a informao da camada aos dados que
esto saindo, e o software no computador receptor, fazendo uso da camada correspondente,
utiliza a informao adicional para processar os dados.
Assim, cada camada adiciona uma informao, e essa mesma camada no receptor ir
extrair as informaes e dados.

9.8 Cabealhos
Usualmente, cada camada coloca informaes adicionais no cabealho antes de enviar
os dados para uma camada abaixo. Assim, um pacote viajando atravs da rede contm uma srie
de cabealhos agregados, como a figura abaixo mostra.

O cabealho correspondente camada mais baixa do protocolo o primeiro na estrutura


esquematizada. No modelo ISO, o cabealho da camada de enlace (camada 2) o que aparece
primeiro. Porm, a camada 1 especifica o sinal eltrico ou ptico que ser usado na transmisso
de um frame e, portanto, a camada 1 no adiciona nenhum cabealho como as outras camadas o
fazem.
69/223

A figura da seo 9.8 ilustra um conceito generalizado, mas no mostra todas as


possibilidades. Em particular, alguns protocolos fazem mais do que adicionar um cabealho aos
dados que esto saindo. Similarmente, alguns protocolos especificam que todas as informaes
adicionais devero ser adicionadas ao protocolo, em vez de serem adicionadas no incio do
pacote.

9.9 Base Cientfica para a Diviso em Camadas


O princpio cientfico conhecido como princpio das camadas se aplica diretamente ao
processo de diviso em camadas, pois:
A camada N no computador destinatrio deve receber exatamente a mensagem enviada
pela camada N do computador emissor
Em outras palavras, qualquer transformao feita pelo protocolo antes de enviar um
pacote de dados deve ser completamente revertida quando o pacote recebido. Se uma camada
em particular no computador emissor adiciona um cabealho no incio do pacote, a camada
correspondente no receptor deve remover este cabealho. Se uma camada codifica o pacote de
dados antes de enviar, a camada correspondente deve decodificar esse pacote.
A idia da diviso em camadas poderosa, pois simplifica o projeto e o teste dos
protocolos. A diviso em camadas impede que protocolos de uma camada introduzam mudanas
que podem ser visveis a outras camadas. Como resultado, tanto o emissor quanto o receptor
devem ser projetados, implementados e testados independentemente das outras camadas. A
figura abaixo ilustra este conceito.

70/223

9.10 Tcnicas Usadas nos Protocolos


Alguns protocolos fazem mais do que detectar erros, eles fazem um esforo para reparar
ou driblar os problemas. Os protocolos de transporte utilizam uma variedade de ferramentas
para lidar com alguns dos problemas mais complicados na comunicao. Esta seo faz uma
reviso de um conjunto de problemas que podem ocorrer e discute as tcnicas que os protocolos
usam para resolv-los. Com as tcnicas de camada-camada discutidas anteriormente, os detalhes
exatos dependem do projeto completo do protocolo criado.
9.10.1 Seqncia de Entrega Fora da Ordem
Em um sistema de comunicao no orientado para conexo podem ocorrer mudanas
de rotas e, portanto, entrega de pacotes fora de ordem. Para entender isso, considere uma
seqncia de pacotes sendo enviada, e relembre que a rede tenta usar o caminho mais curto a
todo o momento. Se um caminho mais curto se torna disponvel, imediatamente aps o pacote
de ordem i ser enviado, a rede deve enviar o pacote i+1 atravs do caminho mais curto, podendo
este chegar mais cedo que o pacote i.
Para lidar com esse tipo de erro, o protocolo de transporte usa um seqenciamento. O
emissor coloca um nmero seqencial em cada pacote. O receptor armazena o nmero da
seqncia do ltimo pacote recebido em uma lista adicional de pacotes que chegaram fora de
ordem. Quando um pacote chega, o receptor examina o nmero de seqncia para determinar
como tratar com esse pacote. Se o pacote o prximo (chegou em ordem), o protocolo entrega o
pacote prxima camada e checa a lista para ver se h mais pacotes que para serem entregues.
Se o pacote chega fora de ordem, o protocolo o adiciona a lista de espera.
9.10.2 Seqncia para Eliminar Pacotes Duplicados
A seqncia resolve os problemas de duplicao. O protocolo no receptor checa a
duplicao quando examina o nmero do pacote que chega. Se a seqncia j tiver sido entregue
ou o nmero coincidir com os pacotes que esto na lista, o protocolo descarta a nova cpia.
9.10.3 Retransmisso de Pacotes Perdidos
A perda de pacotes um problema fundamental em redes de computadores, pois erros
de transmisso podem corromper bits, tornando o frame invlido. Quando um receptor detecta
esse problema, o frame descartado.
Para garantir uma transferncia confivel, os protocolos utilizam o positive
acknowledgement with retransmission. Quando um frame chega intacto, o protocolo do receptor
envia uma pequena mensagem que reporta uma recepo com sucesso. Essa mensagem
conhecida como acknowledgement (ACK). O emissor tem a responsabilidade de assegurar que
cada pacote seja transferido com sucesso. Quando ele envia um pacote, inicia-se um timer. Se o
ACK chegar antes do timer expirar, timer cancelado. Se o timer expirar antes do ACK chegar,
outra cpia do pacote enviada e inicia-se o timer novamente. A ao de enviar uma segunda
cpia conhecida como retransmisso.
A retransmisso no ter sucesso se houver uma falha de hardware, como permanecer
desconectado, ou se o computador receptor tenha entrado em colapso. Ento, protocolos que
utilizam retransmisso, normalmente tm um limite mximo para a retransmisso. Quando este
limite atingido, o protocolo pra de retransmitir e declara que a comunicao impossvel.
Note que a retransmisso pode introduzir pacotes duplicados. Pois um emissor no pode
distinguir entre um pacote perdido e um pacote que tenha experimentado um longo delay.
Assim, protocolos que usam retransmisso para prover confiabilidade, devem lidar tambm com
o problema da duplicao.

71/223

9.10.4 Evitando o Replay Causado por Delay Excessivo


Uma fonte de delay em um sistema de comutao de pacotes introduzida pelo storeand-foward. Quando um pacote chega a um dispositivo de comutao, o pacote colocado em
uma fila. Se o pacote chegar mais rapidamente que o dispositivo possa envi-lo, a fila ir
aumentar e o delay se tornar excessivo. Delays extraordinrios podem levar a erros de replay.
Replay significa que um pacote antigo e atrasado pode afetar uma comunicao futura.
Infelizmente, a menos que o protocolo seja projetado cuidadosamente, um pacote de
uma conversao antiga pode ser aceito em uma nova conversao e, com isso, o pacote correto
pode ser descartado.
O replay tambm pode ocorrer com os pacotes de controle. Por exemplo,
protocolos sempre enviam pacotes especiais de controle para terminar a comunicao. Se uma
cpia de trmino de conversao chega da comunicao anterior, pode ocorrer que o protocolo
termine a conversao imediatamente e prematuramente.
Para prevenir o replay, os protocolos fazem cada seo com um ID nico, e requer um
nico ID presente em cada pacote. Os protocolos descartam quaisquer pacotes que cheguem
com ID incorreto.
9.10.5 Controle de Fluxo para Evitar o Excesso de Dados
O excesso de dados acontece quando um computador envia dados mais rpido que o
outro computador pode absorv-los. Conseqentemente, dados so perdidos.
A tcnica usada conhecida como mecanismos de controle de fluxo e a forma simples
o stop-and-foward, no qual o emissor espera at que cada pacote seja transmitido. Quando o
receptor est pronto para o prximo pacote, ele envia uma mensagem de controle, usualmente
conhecida como ACK.
Embora os protocolos de stop-and-go previnam um excesso de dados, eles podem
causar uma ineficincia extremada no uso da largura de banda da rede.
Para se obter altas taxas de transferncias, os protocolos utilizam uma tcnica de
controle de fluxo conhecida como sliding window. O emissor e receptor so programados para
utilizarem uma janela de tamanho fixo, que o mximo de dados que podem ser enviados
antes que a ACK chegue. Por exemplo, o emissor e receptor devem concordar em um tamanho
fixo de janela para quatro pacotes. O emissor comea com os dados a serem enviados, extrai os
dados para encher a primeira janela, e transmite as cpias. Se for necessria segurana no envio,
o emissor guarda uma cpia no caso da necessidade de retransmisso. O receptor deve ter um
espao de buffer pronto para receber toda a janela. Quando um pacote chega em seqncia, o
receptor passa o pacote para o aplicativo receptor e transmite o ACK ao emissor. Quando um
ACK chega, o emissor descarta a cpia do pacote e transmite o prximo pacote. A figura abaixo
ilustra o conceito.

72/223

Uma janela deslizante pode incrementar a taxa de transferncia drasticamente. Para


entender como, considere a seqncia de transmisses com o esquema stop-and-go e com o
esquema janela deslizante. A figura abaixo traz essa comparao.

Como a figura acima mostra a seqncia de transmisses do protocolo stop-and-go


envia um pacote e aguarda um ACK antes de enviar outro pacote. Se o delay requerido para
enviar um nico pacote N, o delay total para enviar quatro pacotes ser 8N.
Na seqncia de transmisso usando uma janela deslizante, o protocolo envia todos os
pacotes numa janela, antes de esperar. Na verdade, a figura mostra um pequeno delay entre os
envios sucessivos dos pacotes. Porm, o delay deve ser menor do que o mostrado, e a
transmisso nunca instantnea - um curto tempo (usualmente poucos milissegundos)
requerido para o hardware completar a transmisso de um pacote, interromper a CPU, e
comear a transmitir o prximo pacote. Assim, o tempo total para enviar quatro pacotes 2N +
E, onde E denota o pequeno delay.
Para entender o significado da janela deslizante, imagine uma comunicao extensa que
envolva muitos pacotes. Nesses casos, o tempo total requerido para transmisso to grande
que E pode ser ignorado. Para ver os benefcios da janela deslizante, considere uma rede com
uma grande taxa de transferncia e um grande delay. Para essas redes, um protocolo por janela
deslizante pode aumentar o desempenho por um fator muito maior que 1. De fato, o aumento do
desempenho por ser quantificado como:
T w = Tg W
Onde Tw a taxa de transferncia que pode ser alcanada com um protocolo por janela
deslizante; Tg a taxa de transferncia que pode ser alcanada em um protocolo stop-and-go; e
W o tamanho da janela deslizante. A equao explica o porqu do protocolo por janela
deslizante na figura acima ser aproximadamente 4 vezes menor do que a taxa de transferncia
do protocolo stop-and-go na mesma figura. claro que a taxa de transferncia no pode se
tornar abritariamente grande com o aumento de tamanho da janela. A largura de banda de uma
rede impe um limite, pois os bits no podem ser enviados mais rpidos que o hardware possa
transport-los. Assim, a equao pode ser reescrita como:
Tw = min (B, Tg W)

73/223

9.10.6 Mecanismos para Evitar Congestionamento da Rede


Congestionamento um problema fundamental em um sistema de comutao de
pacotes. Para entender o porqu, considere uma rede representada pelo esquema abaixo.

Se um computador conectado ao n 2 comea a enviar pacotes para um destinatrio


ligado ao n 6, os pacotes devem atravessar o link do meio, entre os ns 3 e 4. Se algum
computador no n 1 estiver enviando pacotes para um computador no n 5, os dados podero
chegar ao n 3 duas vezes mais rpido que possa ser enviado para o n 4. O comutador de
pacotes, que corresponde ao n 3, coloca os pacotes que ele recebe do n 1 e 2 em uma fila at
que eles possam ser enviados; como mais pacotes chegam para ser enviados, a fila cresce e o
delay aumenta. A situao conhecida como congestionamento.
Se o congestionamento persistir, o comutador de pacote comear a descartar pacotes
por superlotao de buffer. Mesmo que a retransmisso possa ser usada para recuperar os
pacotes, ela leva muito tempo. Alm disso, se a situao ainda persistir, a rede toda se torna
instvel. Essa condio conhecida como Colapso de Congestionamento. Os protocolos tentam
evitar o colapso de congestionamento monitorando a rede e reagindo rapidamente uma vez que
um congestionamento se inicia. H duas possibilidades:

Os comutadores de pacotes so projetados pelo fabricante para informarem quando um


congestionamento ocorre;
O uso da perda de pacotes como uma estimativa de congestionamento da rede.

74/223

Captulo 10 A Internet: Conceitos, Arquitetura e


Protocolos

10.1 Introduo
O captulo anterior descreveu uma rede bsica, incluindo os componentes de hardware
usados um uma LAN e em uma WAN; e tratou de conceitos como endereamento e roteamento.
Este captulo comea analisando outro conceito fundamental em comunicao entre
computadores: uma tecnologia entre redes que pode ser usada para conectar vrias redes
formando um nico sistema de comunicao. O captulo discute o motivo pelo qual o estudo da
interao de redes importante, descreve o hardware usado e a arquitetura nas quais os
componentes so conectados.

10.2 A Motivao para Estudar a Internet


Cada tecnologia de rede desenvolvida para se ajustar a um grupo especfico de
contrastes. Por exemplo, uma LAN desenvolvida para propiciar comunicao em alta
velocidade em distncias curtas, j uma WAN desenvolvida para promover a comunicao
entre uma ampla rea, sem grandes preocupaes com a velocidade. importante ter em mente
que no existe uma rede capaz de satisfazer todas as necessidades, e para cada caso h um tipo
de rede que melhor se adapte. Se uma empresa escolhe uma rede Ethernet para uma de suas
sesses, ela poder usar uma rede ATM em outra sesso e conectar as duas. Isso uma Internet,
ou seja, conexo entre as diferentes tecnologias de redes.

10.3 O Conceito de Servio Universal


O principal problema em se ter mltiplas redes bastante bvio: um computador de um
determinado tipo de rede s pode se comunicar com outro computador se ele tambm estiver
usando a mesma configurao da rede. O problema comeou a se evidenciar na dcada de 70,
quando grandes empresas comearam a adquirir vrias tecnologias de redes. Cada rede na
organizao formava uma ilha, pois no se comunicava com a outra. O problema teve fim
com a evoluo das redes e o surgimento do conceito de Servio Universal, que permite a
comunicao entre quaisquer dois computadores da organizao mesmo que eles estejam em
redes de tipos diferentes. Por a j se nota sua grande importncia.

10.4 Servio Universal em um Mundo Heterogneo


Como j foi visto impossvel formar uma grande rede simplesmente conectando os
cabos das duas redes. Infelizmente as tcnicas de expanso (com bridges) no podem ser usadas
em redes heterogneas, porque tecnologias diferentes usam formatos de pacotes diferentes, alm
de usarem um esquema de endereamento completamente diferente.

10.5 Internet (entre Redes)


A respeito das incompatibilidades entre redes diferentes, pesquisadores tm
desenvolvido um esquema que usa o servio universal para conectar redes diferentes. Esse
esquema utiliza-se de um software e de um hardware para tornar isso possvel.
75/223

Com duas ou mais redes ligadas, tm-se o que se chama de Internet. Numa Internet no
h um limite de tamanho ou do nmero de computadores interconectados.

10.6 Redes Conectadas e Roteadores


O componente bsico usado para conectar duas redes o roteador. Como j foi visto, o
roteador funciona como uma bridge, que conecta apenas um computador por segmento; quando
se trata de conectar duas redes no diferente: o roteador trata cada rede como sendo um nico
computador. A figura ilustra a idia de conexo de duas redes com um roteador.

O mais importante saber que um roteador pode interconectar redes que usam
tecnologias diferentes, incluindo meios de transmisso diferentes, esquema de endereamento,
ou at mesmo formatos de pacotes ou frames diferentes.

10.7 Arquitetura da Internet


O uso do roteador torna possvel que uma organizao escolha um tipo de rede
apropriado para cada caso e depois rena tudo em uma nica rede. A figura abaixo mostra
quatro redes arbitrrias unidas por trs roteadores formando uma Internet.

Apesar de a figura mostrar cada roteador com exatamente duas conexes,


comercialmente um roteador aceita que mais de duas redes sejam conectadas a ele. Deste modo,
na figura acima podemos substituir os trs roteadores por apenas um, obtendo-se o mesmo
efeito. Mesmo isso sendo verdade, as empresas que tem uma Internet raramente fazem isso, e os
motivos principais so os seguintes:

O hardware de um roteador insuficiente para lidar com um trfego de pacotes muito


alto;
No caso de uma falha em um dos roteadores os outros podem aprender suas rotas e
manter a rede funcionando. Se o roteador for nico isso pode no acontecer.

Para sintetizar o assunto: uma Internet consiste em um grupo de redes interconectadas


por roteadores.

76/223

10.8 Realizando o Servio Universal


A meta da Internet usar o universal service em redes heterogneas. Para promover o
universal service entre todos os computadores em uma Internet, os roteadores devem ser
capazes de enviar uma informao ou dado de uma fonte localizada em uma rede para um
destino em outra rede, do outro lado do roteador. A questo no simples, porque o formato do
pacote e o endereamento utilizado completamente diferente nos diversos tipos de redes
existentes. Como resultado, necessrio um protocolo, ou seja, um software que converta os
dados da rede em um formato que seja padro para todos os tipos de rede. Feito isso, o universal
service torna-se possvel.
Em captulos anteriores j se descreveram os protocolos da Internet em detalhes,
portanto, j se sabe (ou deve-se saber) como os protocolos da Internet ultrapassam as diferenas
entre os formatos de pacotes e frames e os diferentes tipos de endereamento para tornar a
comunicao possvel entre redes de diferentes tecnologias. Antes de entender como os
protocolos da Internet funcionam, importante entender o efeito que a Internet tem sobre os
computadores ligados a ela.

10.9 A Rede Virtual


Do ponto de vista do computador ligado Internet tudo parece ser como uma rede
comum. O sistema que faz uso do servio universal tem as seguintes caractersticas: cada
computador identificado por um endereo, e qualquer computador pode enviar dados ou
informaes para qualquer outro computador na Internet. Isso possvel porque os protocolos
da Internet manipulam as informaes e ocultam os detalhes da rede fsica. Por exemplo, o
esquema de endereamento e as informaes de roteamento, ou seja, o usurio e o computador
de destino no so informados sobre o tipo de rede e o tipo de endereamento do computador de
origem da mensagem e, no entanto, como todos usam o mesmo protocolo, a comunicao
possvel.
Diz-se que a Internet uma rede virtual porque o sistema de comunicao abstrato. Os
hardwares e softwares se unem em um emaranhado de redes e trazem a impresso de que tudo
aquilo uma nica rede uniforme. A figura a seguir mostra uma Internet como uma rede
uniforme e depois mostra o que acontece de verdade.

77/223

10.10 Protocolos da Internet


Apesar de muitos protocolos se adaptarem ao uso na Internet, um deles tem sido
largamente usado. Trata-se do TCP/IP. O TCP/IP foi o primeiro protocolo a ser desenvolvido
para uso em Internet, ele foi desenvolvido pelos mesmos pesquisadores que desenvolveram a
arquitetura da Internet vista anteriormente neste captulo, talvez por isso seja to bom e
funcional.

10.11 Camadas e Protocolos TCP/IP


As sete camadas descritas anteriormente foram criadas antes de a Internet ser inventada,
conseqentemente, o modelo no contm a camada para o principal protocolo da Internet. Como
resultado, os pesquisadores tiveram que desenvolver um novo modelo de camadas para tratar
com o TCP/IP. Esta seo descreve brevemente a camada criada para comportar o TCP/IP. Um
estudo mais profundo do protocolo e das camadas feito em captulos posteriores.
O novo modelo de camadas com o TCP/IP contm agora apenas cinco camadas, como
mostra a figura a seguir.

78/223

Quatro das camadas na pilha TCP/IP correspondem a uma ou mais camadas do modelo
ISO. No entanto, o modelo ISO no tem a camada da Internet. Resumidamente, as camadas da
pilha TCP/IP so:
Camada 1: physical - corresponde ao hardware bsico da rede;
Camada 2: network interface - especifica como se organizam os dados dentro dos
frames e como o computador transmite os frames atravs da rede;
Camada 3: internet - especifica o formato dos pacotes enviados atravs da Internet,
bem como o mecanismo usado para transmitir os pacotes de um computador at seu
destino final;
Camada 4: transporte - especifica como assegurar uma transferncia confivel;
Camada 5: aplicao - especifica como uma aplicao ou aplicativo usa a Internet
para troca de informaes e dados.

79/223

Captulo 11 IP: Internet Protocol


11.1 Introduo
Esse captulo introduz o protocolo que faz com que uma Internet parea ser uma rede
simples. So discutidos o esquema de endereamento usado pelo Internet Protocol (IP) e a
diviso dos endereos IP em classes.
Os prximos captulos expandem o conceito de IP, cada um deles trata de uma
caracterstica em particular.

11.2 Endereos em uma Internet


Para se alcanar a meta de uma Internet (que promover a comunicao entre redes
diferentes de computadores), o IP deve esconder os detalhes da rede fsica e oferecer as
facilidades de uma grande rede interconectada. Uma rede virtual funciona exatamente como
qualquer outra rede, ou seja, permite que os computadores enviem e recebam pacotes de
informaes. A principal diferena entre uma Internet e uma rede fsica que uma Internet
apenas uma abstrao criada inteiramente por softwares, por isso, o formato dos pacotes, o
esquema de endereamento e as tcnicas de entrega dos pacotes podem ser escolhidos
independentemente da rede fsica.
Para uma Internet, o ponto de maior cuidado o endereamento. Para que uma Internet
passe a impresso de ser uma rede nica e uniforme, preciso que todos os hosts usem o mesmo
esquema de endereamento. Isso no muito simples, porque cada tecnologia de rede usa um
esquema de endereamento prprio, fazendo com que os formatos dos endereos sejam
diferentes e incompatveis. Para garantir um esquema de endereamento uniforme para todos os
hosts, quem define o formato do endereo um protocolo, que enderea independentemente do
tipo de rede. Com um formato de endereo igual para todos os hosts, a Internet pode funcionar
como uma rede qualquer.

11.3 O Esquema de Endereamento IP


Na pilha de protocolos TCP/IP, o endereamento especificado pelo protocolo IP. O IP
padro especifica que cada host da Internet deve receber um nico nmero de 32 bits (endereo
IP ou endereo de Internet). Todo pacote enviado atravs da rede traz consigo este endereo IP
(nmero de 32 bits) do computador que o enviou e tambm do computador de destino.
importante saber que o endereo da Internet deve ser um nmero binrio de 32 bits que no se
repete, ou seja, se um IP for atribudo a um host, nenhum outro host na Internet poder us-lo.

11.4 Hierarquia IP
Para tornar o roteamento mais eficiente, o IP dividido em duas partes: prefixo e
sufixo. O prefixo do endereo identifica a rede na Internet, enquanto o sufixo identifica o
computador na rede local onde se encontra (no na Internet). Para entender, basta pensar que
cada rede na Internet recebe um valor nico de identificao (network number, que significa
nmero de rede). Falar em nmero de rede o mesmo que falar em prefixo; falar em sufixo o
mesmo que falar em nmero do computador dentro da rede local (cada computador recebe um
nico nmero que no pode ser usado por nenhum outro computador da mesma rede). Perceba
que se dois computadores tiverem o mesmo sufixo, mas estiverem em redes diferentes, ou seja,
tiverem prefixos diferentes, os endereos de IP sero vlidos, porque sero nicos; um endereo
IP formado por prefixo e sufixo.
80/223

11.5 Classes de Endereamento IP


Depois de escolher o tamanho do IP (32 bits) e dividi-lo em duas partes, os projetistas
do IP precisavam determinar quantos bits colocar em cada uma das partes (prefixo e sufixo). O
prefixo precisa de um nmero de bits suficiente para garantir que cada rede da Internet tenha um
nmero nico. J o sufixo, precisa de um nmero de bits suficiente para permitir que todos os
computadores da rede tenham tambm um nmero nico. A questo no simples, se os bits
reservados para o prefixo forem muitos, consegue-se acomodar muitas redes na Internet, porm
todas com poucos computadores. Se a situao for contrria (muitos bits reservados para o
sufixo), consegue-se acomodar poucas redes, mas elas podero ter muitos computadores.
As redes que formam a Internet so arbitrrias, ou seja, uma pode ser grande, outra
pequena, ou vice-versa. Conseqentemente, os projetistas tiveram que desenvolver um esquema
de endereamento que fosse capaz de acomodar redes grandes e pequenas. O esquema
desenvolvido divide o endereo de IP em trs classes, onde cada classe tem tamanho diferente
de prefixo e sufixo. Na figura abaixo temos as classes de endereamento IP. Note que apenas
com os quatro primeiros bits j possvel identificar a classe do IP.

As classes A, B e C so chamadas de classes primrias porque so usadas para


endereos de hosts na rede. A classe D usada para multicasting, que quando um pacote
transferido simultaneamente para um grupo de computadores na Internet. A classe E ainda no
usada, ela est reservada para usos futuros.

11.6 Identificando a Classe de um Endereo IP


Um protocolo identifica o IP e a classe de destino de um pacote, e faz isso sempre que
um pacote recebido. Este processo deve ser eficiente, porque ocorrem muitas e muitas vezes.
Diz-se que um endereo IP auto-identificvel, porque a classe pode ser verificada a partir do
prprio endereo. A figura a seguir mostra a tabela usada para identificar a classe.

81/223

11.7 Notao Decimal com Ponto


Apesar de o endereo IP ser um nmero binrio de 32 bits, ele raramente apresentado
desta forma. Quando um usurio est interagindo com um computador, muito mais
conveniente usar a notao decimal com ponto. Na notao decimal com ponto, cada grupo de
oito bits transformado para base decimal, e para separar os grupos de oito bits usa-se um
ponto, da o nome notao decimal com ponto. A figura a seguir ilustra alguns exemplos: do
lado esquerdo est a notao binria e do lado direito o mesmo endereo representado em
notao decimal com ponto.

Perceba que cada grupo de oito bits tratado como um nico nmero decimal, por isso,
os endereos de IP podem variar de 0.0.0.0 at 255.255.255.255.
A tabela das classes de endereos IP fica assim:

O nmero de redes possveis numa Internet est diretamente relacionado com a classe
dos IPs. O assunto pode ser facilmente abreviado pela tabela a seguir.

82/223

Uma Internet pode ter vrias redes distintas, e cada uma delas com uma classe de
endereos. A prxima figura exemplifica uma Internet com mais de uma classe. No exemplo, h
duas redes de classe B, uma de classe A e uma de classe C.

11.8 Endereos Especiais


Alm de cada computador ter seu endereo, conveniente que exista um endereo que
possa ser usado por todos os computadores de uma rede, ou por um grupo de computadores
(podendo estar um em cada rede distinta); um endereo desse tipo dito reservado. Endereos
reservados nunca so usados por hosts na rede.
11.8.1 Endereos de Rede
conveniente ter um endereo que possa ser usado por todos os computadores de uma
rede. O protocolo de IP impede que um host use um endereo que contenha apenas zeros como
bits de sufixo, pois este um endereo relativo rede. Por exemplo, se uma rede tem prefixo
128.211, ento o endereo 128.211.0.0 usado como endereo dessa rede. importante
ressaltar que, apesar do endereo de rede existir, um pacote nunca pode deve usar esse endereo
como destino.

83/223

11.8.2 Endereo de Transferncia Direta


Algumas vezes conveniente enviar uma cpia de um pacote para todos os hosts de
determinada rede. Para fazer com que essa transferncia seja fcil, o IP define um endereo de
transferncia direta para cada rede fsica. Quando um pacote enviado por transferncia direta,
uma simples cpia do pacote viaja atravs da Internet at que ele encontre a rede especificada.
O pacote ento entregue a todos os hosts da rede. O endereo para transferncia direta pe 1
para todos os bits do sufixo, ao contrrio do endereo de rede. Se a rede tiver um hardware que
suporta uma transferncia direta, o pacote transmitido diretamente para todos os hosts; caso a
rede no tenha um hardware de suporte, preciso que um software faa a distribuio para cada
host na rede.
11.8.3 Endereo de Transferncia Limitada
Trata-se de uma transferncia em uma rede local (LAN); informalmente, diz-se que a
transferncia limita-se a um nico segmento. A transferncia limitada usada pelo computador
quando ele ainda sabe qual o IP da rede (isso ocorre quando um computador est sendo
iniciado).
11.8.4 IP de um Host
Um computador precisa conhecer seu endereo de IP para poder enviar e receber
pacotes. A pilha TCP/IP contm protocolos que podem ser usados para obter o endereo de IP
automaticamente quando o computador iniciado.
11.8.5 Endereo de Loopback
O IP define um endereo que usado para testar os aplicativos de rede, este o
endereo de loopback. O IP reserva na classe A, prefixo 127 para loopback; se um host usa o
prefixo 127 ele invisvel para a rede. Por conveno, programadores costumam usar o
endereo 127.0.0.1 para fazer o teste de loopback. Durante um teste nenhum pacote pode ser
enviado pelo host, conseqentemente, o endereo de loopback nunca viaja pela rede.

11.9 Resumo dos Endereos Especiais

Os endereos especiais so reservados e nunca devem ser usados por hosts; cada
endereo especial tem um uso determinado, por exemplo, um endereo facilita o envio de um
pacote em massa.

84/223

11.10 Roteadores e o Princpio de Endereamento de IP


Alm de marcar cada host na Internet, o IP especifica que os roteadores tambm devem
ter endereos IP. De fato, cada roteador deve receber no mnimo dois endereos IP; para
entender o motivo, dois fatos importantes so destacados:

O roteador tem conexes com vrias redes (no mnimo duas);


Cada endereo IP contm um prefixo que identifica a rede;

Como o roteador est ligado a duas redes, um nico endereo IP no suficiente. O


esquema IP no roteador pode explicado pelo princpio fundamental: um endereo IP no
identifica um computador especfico. No entanto, cada endereo IP identifica a conexo entre
um computador e uma rede. Um computador com conexo em vrias redes (um roteador) deve
receber um IP para cada conexo.

O IP no requer que o mesmo sufixo seja dado para todas as interfaces do roteador.

11.11 Multi-Homed Hosts


A pergunta a ser respondida : um host pode se conectar a mais de uma rede? A
resposta sim! E o procedimento recebe o nome de multi-homed. O multi-homed , na verdade,
usado para melhorar o desempenho, ou seja, conectar vrias redes. Ele faz com que a passagem
do pacote pelo roteador no seja necessria caso o roteador esteja congestionado; ou seja, o
multi-homed uma rota alternativa para os pacotes. Do mesmo modo que o roteador, o multihomed tambm precisa de mais de um endereo de IP.

85/223

Captulo 12 Mapeando um IP para um Endereo Fsico


12.1 Introduo
Esse captulo descreve trs mecanismos que so utilizados para realizar o mapeamento
dos endereos em uma rede utilizando o protocolo IP para ilustrar cada caso. O primeiro
mecanismo utilizado no hardware de rede e consiste em uma tabela que contm todas as
relaes de endereos dos hosts na rede. O segundo mtodo utiliza funes matemticas para
realizar a traduo. O terceiro mecanismo o mais interessante, porque usa a comunicao entre
dois computadores atravs da rede para determinar os endereos.

12.2 Protocolo de Endereamento e Entrega de Pacotes


Quando um aplicativo gera dados para serem enviados atravs da Internet, o software
encapsula os dados em um pacote, o qual contm o endereo do destinatrio. O software em
cada host e o roteador usam este endereo para definir qual ser o prximo passo para o pacote.
Uma vez que esse passo definido, o software transfere o pacote atravs da rede para o host ou
roteador selecionado.
Assim, o software lida com o endereo IP quando est enviando pacotes. Tanto o
endereo do prximo passo ou pulo, e o endereo do destinatrio, so endereos IP.
Infelizmente, este protocolo de endereos no pode ser usado quando se transmite pacotes
atravs de uma rede fsica, pois o hardware no entende o endereamento IP. Ao contrrio, um
pacote enviado na rede deve usar o formato de pacote de hardware, o frame; e todos os
endereos devem ser endereos de hardware.

12.3 Mapeamento de Endereos


A traduo do endereo IP de um computador para o equivalente endereo de hardware
deste computador conhecida como Address Resolution, ou mapeamento de endereo. Um
computador pode determinar o endereo fsico de outro computador, apenas se estes
computadores esto ligados na mesma rede fsica um computador nunca determina o endereo
fsico de um computador que esteja em uma rede remota.

Dizemos que o mapeamento de endereos sempre restrito a uma nica rede. Na figura
acima, se um aplicativo no host A envia uma mensagem para um aplicativo no host F, o qual
est em uma rede remota; o software em A no determina o endereo do host F. Em invs disso,
o software em A primeiro determina que o pacote primeiro passe pelo roteador R1. O software
em A, ento, determina o endereo de R1, e envia o pacote para o roteador. O software em R1
determina que o pacote deva alcanar R2; e, portanto, determina o endereo de R2 e envia o
pacote. Finalmente, R2 recebe o pacote, descobre que o destinatrio F est ligado diretamente a
sua rede, e ento determina o endereo de F, finalmente entregando o pacote a F.

86/223

Resumindo:
O mapeamento entre um endereo IP e o endereo fsico ou de hardware chamado de
mapeamento de endereos (Address Resolution). Um host ou roteador utiliza o mapeamento de
endereos quando precisa enviar um pacote para outro computador no mesmo enlace fsico. Um
computador nunca determina o endereo de um computador em uma rede remota.

12.4 Tcnicas de Mapeamento de Endereos


Os algoritmos de mapeamento de endereos podem ser divididos em trs categorias
bsicas:

Busca em tabelas. Os endereos ou mapeamentos so salvos em uma tabela


memria, na qual o computador busca quando precisa determinar o endereo.
Computao de forma fixa. O endereo IP designado para um computador
escolhido com cuidado, assim o endereo de hardware do computador pode ser
obtido usando funes booleanas e operaes aritmticas.
Troca de mensagens. Computadores trocam mensagens pela rede para definir
um endereo. Um computador envia uma mensagem que requisita o endereo, e
outro computador responde com um mensagem que contm a informao
requisitada.

12.5 Mapeamento de Endereos com Busca em Tabelas


As tabelas de endereos requerem uma estrutura de dados que contm informaes
sobre os endereos IP e de hardware. A tabela consiste em um vetor. Cada entrada no vetor
contm um par (P, H), onde P o endereo de IP e H o equivalente endereo de hardware. A
figura abaixo ilustra o mtodo:

Para cada rede fsica, uma tabela de mapeamento de endereos utilizada. Como
conseqncia, todos os endereos IP em uma tabela tm o mesmo prefixo.
A grande vantagem da tabela a generalidade uma tabela pode armazenar os
endereos para um conjunto de computadores na rede. Em particular, um endereo IP pode ser
mapeado para um endereo de hardware arbitrrio. Quando se tem o endereo N (IP) do
prximo salto, o software procura na tabela at que encontre uma entrada com endereo N
correspondente. O software, ento, extrai o endereo de hardware de entrada na tabela.
Para redes com grande nmero de hosts, uma busca seqencial requer excessivo uso de
tempo de processamento de CPU. Nesses casos, o software pode utilizar duas implementaes
padres para melhorar a eficincia computacional: o hashing ou o direct indexing.
Hashing uma tcnica de estrutura de dados, com vrios propsitos, e conhecida por
muitos programadores. J o Direct Indexing um pouco mais eficiente, mas menos geral. Em
particular, o Direct Indexing possvel apenas em casos que o endereo IP determinado dentre
um conjunto compacto. Para utilizar o Direct Indexing, o software mantm um vetor
87/223

unidimensional de endereos de hardware, e utiliza o sufixo do IP do host para indexar o vetor.


A figura abaixo ilustra a tcnica.

12.6 Mapeamento de Endereos com Computao de Forma


Fixa
Este mtodo utiliza funes matemticas para mapear o endereo IP para o endereo de
hardware. Se a relao entre o endereo IP e o correspondente endereo de hardware for direta,
o mapeamento requer apenas poucas operaes aritmticas.
Como exemplo, suponha que uma rede configurvel foi determinada como Classe C,
com o endereo de rede 220.123.5.0. Assim que os computadores so adicionados rede, cada
computador tem seu sufixo do endereo IP determinado, e igual ao endereo de hardware do
mesmo. O primeiro host a se conectar tem o endereo IP 220.123.5.1 e o endereo de hardware
1. O segundo host tem endereo IP 220.123.5.2 e endereo de hardware 2. Os sufixos no
precisam ser seqenciais: se um roteador ligado rede, este tem endereo IP 220.123.5.101, e
logo endereo de hardware 101. Fornecendo o endereo IP de qualquer computador na rede, o
endereo de hardware do computador pode ser determinado facilmente, por uma operao
booleana AND E lgico :
Hardware_address = ip_address & 0xff
Esta frmula trivial para um programa, assim no requer uma tabela de valores, sendo
computacionalmente mais eficiente.

12.7 Mapeamento de Endereos com Troca de Mensagens


Os mtodos de mapeamento de endereos descritos acima podem ser computados
utilizando apenas um computador em cada passo. As instrues e dados necessrios para
encontrar o endereo so mantidos no sistema operacional do computador. Uma alternativa para
a computao local um acesso distribudo, no qual um computador que necessite determinar o
endereo de outro computador envia uma mensagem atravs da rede e recebe uma resposta. Esta
mensagem leva uma requisio que especifica o endereo IP, e a resposta leva o correspondente
endereo de hardware.
Quando essa mensagem de requisio de endereos deve ser enviada? A maioria dos
sistemas escolhe um entre dois possveis mtodos. No primeiro mtodo, a rede tem um ou mais
servidores que tem a funo de responder a essas requisies de endereos. Quando um host
precisa do endereo, a mensagem enviada para um dos servidores, o qual enviar uma
resposta. O host pode enviar a mensagem para cada servidor em seqncia at que receba uma
resposta, ou enviar em broadcast a requisio para todos servidores.
88/223

Em um segundo mtodo, cada computador na rede participa no mapeamento de


endereos, concordando em responder requisio para seu endereo. Quando um host precisa
de um endereo, ele envia uma requisio em broadcast na rede. Todos os host recebem a
requisio e examinam o endereo requisitado. Se a requisio for igual ao endereo do
computador, este enviar uma resposta com seu endereo diretamente para o host que precisa do
endereo.
A vantagem do primeiro mtodo a centralizao. Como pouco servidores lidam com
todas as requisies de endereos, o controle, configurao e gerenciamento das requisies
ficam mais fceis. A vantagem do segundo mtodo a distribuio computacional. Os
servidores podem ser caros, adicionando tambm custos adicionais de hardware (ex: memria
extra); os servidores tm manuteno cara, pois as informaes dos endereos IP e de hardware
tm quer ser armazenados no servidor devem ser atualizadas quando novos computadores
entram na rede ou quando endereos de hardware mudam. Fazer com que cada computador
responda com seu endereo diretamente, eliminam-se completamente os servidores.

12.8 Protocolo de Mapeamento de Endereos


O protocolo TCP/IP pode utilizar qualquer um dos trs mtodos de mapeamento de
endereos. O mtodo da Busca em Tabelas usado para determinar endereos em uma WAN. O
mtodo computacional utilizado em redes configurveis, e a troca de mensagens utilizada
em uma LAN que tem endereamento esttico.
Para garantir que todos os computadores concordem com mesmo formato e no
significado das mensagens utilizadas para o mapeamento dos endereos, o protocolo TCP/IP
inclui o Address Resolution Protocol (ARP). O padro ARP define dois tipos bsicos de
mensagens: uma requisio e uma resposta. A mensagem de requisio contm o endereo IP e
requer o endereo de hardware; a resposta contm ambos os endereos IP enviados na
requisio e o endereo de hardware requerido.

12.9 Entrega da Mensagem ARP


O padro ARP especifica exatamente como as mensagens ARP devem ser enviadas
atravs de uma rede. O protocolo especifica que a mensagem deve ser enviada em broadcast
para todos os computadores na rede. Cada computador recebe a mensagem e examina o
endereo IP. O computador mencionado na requisio envia a resposta; todos outros
computadores processam e descartam a requisio, sem enviar resposta alguma.
Quando um computador envia uma resposta ARP, essa resposta no enviada em
broadcast. Em vez disso, enviada diretamente para o computador que solicitou a requisio. A
figura a seguir ilustra o processo descrito.

89/223

12.10 Formato da mensagem ARP


Mesmo que o protocolo ARP contenha exatamente a especificao da mensagem ARP,
o padro no define um formato fixo que deve ser usado em todas as comunicaes. Os
projetistas do ARP notaram que no poderiam escolher um tamanho fixo para o campo de
endereo de hardware, porque novas tecnologias de rede poderiam ser inventadas, tendo
endereo de hardware maior que o projetado. Conseqentemente, os projetistas incluram um
campo fixed-size no inicio da mensagem ARP para especificar o tamanho do endereo de
hardware que ser usado.
Para aumentar a generalidade do ARP, os projetistas incluram um campo tamanho de
endereo tambm para o endereo IP. Assim, o ARP no se restringe ao protocolo IP ou a um
endereo de hardware especfico.
A figura abaixo ilustra o formato da mensagem ARP quando utilizada com o
protocolo de endereos IP e o protocolo de endereo de hardware Ethernet.

Cada linha na figura corresponde a 32 bits na mensagem ARP. Os dois primeiros


campos de 16 bits contm o valor que especificam o tipo de endereamento de hardware e o
protocolo que esto sendo usados. Por exemplo, o campo HARDWARE ADDRESS TYPE
contm 1 quando a mensagem ARP utilizada com a Ethernet; e o campo PROTOCOL
ADDRESS TYPE contm 0x0800 quando a mensagem ARP utilizada com o IP.
90/223

O segundo par de campos, HADDR LEN e PADDR LEN especificam o nmero de


octetos no endereo de hardware e de protocolos. O campo OPERATION especifica se uma
mensagem de requisio (valor 1) ou de resposta (valor 2).

12.11 Enviando a Mensagem ARP


Quando um computador envia uma mensagem ARP, a mensagem ARP transportada
pelo enlace fsico da rede. Esta mensagem tratada como um dado o hardware de rede no
entende o formato da mensagem ARP e no examina o contedo dos seus campos individuais.

12.12 Identificando a Mensagem ARP


O campo type field no cabealho de um frame especifica que o frame contm uma
mensagem ARP. Para a Ethernet, por exemplo, quando o campo type field tem o valor 0x806,
este frame ser composto de uma mensagem ARP. Assim, desta maneira que um host
identifica que a mensagem recebida uma mensagem ARP.

91/223

Captulo 13 Datagramas IP e Encaminhamento de


Datagramas
13.1 Introduo
Os captulos anteriores descreveram a arquitetura da Internet, o endereamento da
Internet, e o protocolo de mapeamento de endereos da Internet com os endereos fsicos. Esse
captulo discute o servio fundamental da comunicao na Internet. Descreve o formato dos
pacotes que so enviados atravs da rede, e discute como os roteadores processam e
encaminham os pacotes de dados. Nos prximos captulos a discusso estendida, considerando
os roteadores e hardwares na transmisso de pacotes.

13.2 Servio no Orientado para Conexo


O objetivo da rede interligada proporcionar que um programa rodando em um
computador possa enviar dados para um outro programa rodando em outro computador. Na
Internet, os programas de aplicao no tm conhecimento da estrutura fsica da rede eles
podem enviar e receber dados sem conhecer os detalhes da rede local em que esto conectados,
da rede remota de destino, ou ainda, da interconexo entre elas.
Programadores precisam decidir quais servios de comunicao oferecidos na Internet
sero usados na entrega eficiente de pacotes. Em particular, os programadores precisam decidir
entre oferecer aos programas um servio orientado para conexo ou um servio no orientado
para conexo, ou talvez, ambas.
A pilha TCP/IP permite incluir tais servios de comunicao. Por opo, geralmente
escolhem-se o servio fundamental de entrega sem conexo e, adicionalmente, tem-se a
confiabilidade do servio com conexo, utilizando-se da estrutura de servio sem conexo.

13.3 Pacotes Virtuais


Os servios no orientados para a conexo uma extenso da troca de pacotes o
servio permite que um host transmita pacotes de dados individuais atravs da Internet. Cada
pacote viaja independentemente e contm informao que identifica o contedo desejado.
Como um pacote circula pela Internet? Em geral, a resposta que um roteador
encaminha cada pacote de uma rede para outra. Um host de origem cria um pacote, com o
endereo de destino no cabealho do pacote, e ento envia o pacote para o roteador mais
prximo. Quando um roteador recebe um pacote, ele usa o endereo de destino para selecionar o
prximo roteador no caminho para o destino, e ento o transmite. Eventualmente, o pacote
alcana um roteador que pode entregar o pacote a seu destino final.
Qual o formato de um pacote usado na Internet? Infelizmente, o formato convencional
de hardware, os frames, no pode ser utilizado na Internet. Para entender o porqu, lembre-se de
que um roteador pode conectar redes heterogneas. O roteador no pode transferir uma cpia de
um frame de um tipo de rede para outro, pois o formato dos frame so diferentes. Mais
importante, o roteador no pode simplesmente reformatar o cabealho do frame, porque as duas
redes podem utilizar formatos de endereos diferentes (por exemplo, o endereamento de um
frame recebido, pode no fazer sentido algum para outra rede).
Para superar essa heterogeneidade, o protocolo da Internet define um formato de pacote
de Internet que independente do hardware utilizado. O resultado um pacote universal e
virtual, que pode ser transmitido intacto atravs dos diversos hardwares. O termo virtual quer
dizer que o protocolo gera e trata com os pacotes da Internet o hardware no entende ou
reconhece o formato desse pacote da Internet. O termo universal quer dizer que cada host ou
roteador em uma Internet contm o protocolo que entende os pacotes que circulam pela Internet.
92/223

13.4 O Datagrama IP
O protocolo TCP/IP usa o nome datagrama IP para se referir aos pacotes da camada da
Internet. Surpreendentemente, um datagrama IP apresenta sempre um mesmo formato. O
datagrama comea com um cabealho, seguido de uma rea de dados.
A quantidade de dados em um datagrama no fixa. O host que envia escolhe o quanto
de dado que mais apropriado para seu propsito em particular. Por exemplo, uma aplicao
que transmite caracteres atravs da Internet pode colocar cada caracter em um datagrama
diferente, enquanto que uma aplicao que transfere grandes arquivos pode enviar datagramas
maiores.
Na verso atual do IP (verso 4), um datagrama pode conter um nico byte ou at 64kB,
incluindo o cabealho. Na maioria dos datagramas, o cabealho muito menor que a rea de
dados. Para entender o porqu necessrio examinar o custo da transmisso de dados. Como o
cabealho de um frame usado na camada fsica, um cabealho do datagrama representa perda
enquanto a rede ocupada transferindo cabealhos, no poder transferir os dados do usurio.
Como o tamanho do datagrama fixo, enviar grandes datagramas resulta em mais bytes de
dados enviados por unidade de tempo (por exemplo, maior largura de banda).
Similar ao cabealho de um frame, o cabealho de um datagrama contm informao
para o roteamento do mesmo atravs da Internet. Por exemplo, o cabealho contm o endereo
do computador que enviou o datagrama, assim como o endereo do computador de destino. O
endereo presente no cabealho de um datagrama difere do endereo usado no cabealho do
frame um datagrama contm um endereo IP, enquanto um frame contm um endereo de
hardware.

13.5 Encaminhando um Datagrama IP


Dizemos que um datagrama atravessa a Internet seguindo um caminho desde a origem,
passando atravs dos roteadores, at seu destino final. Cada roteador ao longo do caminho
recebe o datagrama, extrai o endereo de destino do cabealho, e usa esse endereo para
determinar o prximo salto para o qual o datagrama dever ser enviado. O roteador, ento,
encaminha o datagrama para o prximo salto, que pode ser o destino final ou um prximo
roteador.
Para fazer uma escolha eficiente do prximo salto e tornar a computao compreensvel,
cada roteador IP mantm uma tabela de roteamento. A tabela de roteamento deve ser
inicializada com o roteador, e deve ser atualizada se a topologia mudar ou se algum hardware
falhar.
Conceitualmente, a tabela de roteamento possui vrias entradas, sendo que cada uma
especifica um destino e um prximo salto utilizado para alcanar tal destino.

Destino

Prximo salto

Rede 1

Roteador 1

Rede 2

Entrega direta

Rede 3

Entrega direta

Rede 4

Roteador 3

93/223

Como a figura anterior mostra, o roteador R2 conecta-se diretamente s redes 2 e 3. Por


isso, R2 pode entregar um datagrama diretamente para qualquer destino dentro dessas duas
redes. Quando um datagrama destinado para a rede 4, por exemplo, R2 o enviar para o
roteador R3.
Todos os destinos listados em uma tabela de roteamento constituem uma rede, e no um
host individual. Tal distino importante, porque uma Internet pode conter 1000 vezes mais
hosts do que redes. Por isso, utilizar redes como destino mantm as tabelas de roteamento
menores.

13.6 Endereos IP e Entradas das Tabelas de Roteamento


Na prtica, uma tabela de roteamento um pouco mais complexa do que foi ilustrada
anteriormente. Primeiro, o campo destino em cada entrada contm o prefixo de rede da rede de
destino. Segundo, existe um campo adicional em cada entrada que contm a mscara de subrede que especifica quais bits do endereo de destino correspondem ao prefixo de rede.
Terceiro, um endereo IP utilizado quando o prximo salto um roteador. A figura abaixo
mostra como uma tabela de roteamento deve ser.

40.0.0.8

30.0.0.7
30.0.0.0

40.0.0.0
40.0.0.7

128.1.0.9
128.1.0.0

128.1.0.8

192.4.10.0
192.4.10.9

Destino

Mscara

Prximo salto

30.0.0.0

255.0.0.0

40.0.0.7

40.0.0.0

255.0.0.0

Entrega direta

128.1.0.0

255.255.0.0

Entrega direta

192.4.10.0

255.255.255.0

128.1.0.9

Podemos observar que as duas primeiras redes tm um prefixo classe A; a terceira rede
tem um prefixo classe B e a quarta rede possui um prefixo classe C. A cada roteador foram
designados dois endereos IP, um para cada interface. Por exemplo, o roteador que conecta a
rede 30.0.0.0 rede 40.0.0.0 foi designado com os endereos 30.0.0.7 e 40.0.0.7. Embora ambas
as interfaces do roteador tenham recebido o mesmo sufixo de host, o IP no requer essa
uniformidade um administrador de rede livre para designar diferentes valores para cada
interface.

13.7 O Campo Mscara e Encaminhamento de Datagramas


O processo que utiliza a tabela de roteamento para selecionar o prximo salto para um
dado datagrama chamado roteamento ou encaminhamento. O campo mscara em uma entrada
de uma tabela de roteamento usado para extrair a parte da rede de um endereo durante a
procura. Para entender como a mscara utilizada, imagine que a um software de roteamento
94/223

dado um datagrama para ser encaminhado. Assuma tambm que o datagrama possui um
endereo IP D. O software de roteamento deve encontrar uma entrada na tabela de roteamento
que especifique o prximo salto para D. Para isso, o software examina cada entrada na tabela
usando a mscara para extrair o prefixo do endereo D e comparar o resultado com o campo
destino da mesma entrada. Se os dois forem iguais, o datagrama ser encaminhado para o
prximo salto daquela entrada.
A mscara torna a extrao do prefixo eficiente o software faz a operao booleana
and (&) entre a mscara e o endereo de destino do datagrama, D. Sendo assim, para examinar a
entrada i, pode-se expressar:
se ( (mscara[i] & D) = Ddestino[i] )encaminhar para o prximo salto[i]);
Como exemplo, considere um datagrama com endereo de destino 192.4.10.3, e assuma
que esse mesmo datagrama chegue ao roteador que possui a tabela de roteamento apresentada
anteriormente. E assuma ainda que o software procure pelas entradas em ordem. A primeira
entrada falharia, pois 255.0.0.0 & 192.4.10.3 no igual a 30.0.0.0. Aps rejeitar a segunda e a
terceira entradas da tabela, o software de roteamento escolheria o prximo salto 128.1.0.9, pois:
255.255.255.0 & 192.4.10.3 = 192.4.10.0

13.8 Destino e Endereos do Prximo Salto


Qual a relao entre um endereo de destino de um cabealho de um datagrama e o
endereo do prximo salto para o qual o datagrama encaminhado? O campo Endereo IP de
Destino em um datagrama possui o endereo de destino final. Quando um roteador recebe um
datagrama, ele extrai o endereo de destino, D, e o utiliza para calcular o endereo do prximo
roteador para o qual o datagrama deve ser enviado, N. Embora o datagrama seja enviado
diretamente para o endereo N, em seu cabealho ainda estar o endereo de destino D.
Todas as rotas so calculadas atravs dos endereos IP. Depois de calculado o endereo
do prximo salto, N, o IP utiliza o mapeamento entre endereos para traduzir N para um
endereo de hardware equivalente para a transmisso. No prximo captulo, iremos aprender
como o datagrama enviado atravs da rede fsica.

13.9 Entrega a Qualquer Custo


Alm da especificao do formato dos datagramas da Internet, o IP define a semntica
de comunicao, e usa o termo A Qualquer Custo para descrever o servio que oferece. Em
essncia, o padro especifica que embora o IP faa uma tentativa de entrega a qualquer custo de
cada datagrama, o IP no garante que ele lidar com problemas que surjam:

duplicao de datagrama
entregas atrasadas ou fora de ordem
dados corrompidos
perda de datagramas

Camadas adicionais de protocolos so necessrias para lidar com cada um desses


problemas.
Pode parecer estranho para o IP apresentar esses erros. Entretanto, h uma razo
importante: cada camada do protocolo responsvel por certos aspectos da comunicao, e o IP
no lida com esses problemas. E mais, como a estrutura fsica das redes pode causar esses
problemas, qualquer software que utilize o IP deve ter a responsabilidade de solucionar tais
problemas.

95/223

13.10 Formato do cabealho IP


A figura abaixo mostra os campos de um cabealho de um datagrama IP, incluindo o
Endereo IP de Origem, que contm o endereo da Internet da origem, o Endereo IP de
Destino, que contm o endereo da Internet do destinatrio, e o campo Tipo, que especifica o
tipo de dado transmitido.
0
Verso

Cabec. Tam.

16

Tipo do serv.

Identificao
Tempo de vida

19

24

31

Tamanho Total
Flags

Tipo

Offset do Fragmento
Checksum do cabealho

Endereo IP de Origem
Endereo IP de Destino
Opes do IP (pode ser omitido)

Preenchimento

Dados
.
.
.
Cada campo em um cabealho de um datagrama IP tem um tamanho fixo. O datagrama
comea com um nmero de 4 bits da verso do protocolo (a verso atual a 4) e 4 bits do
tamanho do cabealho, que especifica o nmero de grupos de 32 bits no cabealho. O campo
Tipo de Servio contm um valor que especifica se a origem prefere que o datagrama viaje
atravs de uma rota com um mnimo de atraso ou com uma maior largura de banda: um roteador
que tenha mltiplas rotas para o destino pode usar esse valor para escolher a rota. O campo
Tamanho Total contm um nmero inteiro de 16 bits que especifica o nmero total de bytes em
um datagrama, incluindo o cabealho e a rea de dados. Posteriormente, os campos
Identificao, Flag e Offset do Fragmento sero mais detalhados.
O campo Tempo de Vida usado para evitar que um datagrama circule para sempre em
um caminho que contenha um loop; esse tipo de caminho pode ocorrer quando o software no
funciona corretamente ou quando um administrador configura erroneamente um roteador. A
origem inicializa esse campo com um nmero inteiro e positivo entre 1 e 255. Cada roteador no
caminho decrementa de uma unidade esse nmero. Se esse contador chegar a zero, o datagrama
descartado e uma mensagem de erro enviada de volta para a origem.
O campo Checksum do Cabealho assegura que os bits do cabealho no foram
modificados em trnsito. Um host de origem calcula a soma dos complementos de 1 de todas as
quantidades de 16 bits presentes no cabealho, excluindo o prprio campo de checksum, e ento
guarda essa soma no campo Checksum do Cabealho. Um host receptor calcula a mesma soma
de quantidades de 16 bits, incluindo o campo de checksum. Se o checksum estiver correto, o
resultado ser 0 (matematicamente, o complemento de 1 um aditivo inverso). Por isso,
somando um valor 1 ao seu complemento produz-se o valor 0.
Para manter os cabealhos dos datagramas os menores possveis, o IP define um
conjunto de Opes que podem estar presentes, se necessrio. Quando um datagrama IP no
carrega tais opes, o campo Tamanho do Cabealho contm o valor 5, e o cabealho termina
depois do campo Endereo de IP de Destino. Devido ao tamanho do cabealho ser especificado
por mltiplos de 32 bits, se o campo Opes no terminar em um limite de 32 bits, o campo
Preenchimento conter bits 0 para fazer com o cabealho tenha um mltiplo de 32 bits.
96/223

Captulo 14 Encapsulamento IP, Fragmentao e


Agrupamento

14.1 Introduo
No captulo anterior descrevemos um formato de um datagrama IP e discutimos a
informao em uma tabela de roteamento, que utilizada para selecionar o prximo salto a cada
passo ao longo do caminho at o destino do datagrama. Esse captulo conclui a discusso sobre
o IP, descrevendo a transmisso dos datagramas em detalhes. Mostrando como um host ou um
roteador envia um datagrama atravs da rede fsica, e como os roteadores lidam com o problema
de envio de grandes datagramas.

14.2 Transmisso de Datagramas e Frames


Quando um host ou um roteador tratam com um datagrama, o IP seleciona primeiro o
prximo salto para o qual o datagrama ser enviado, N, e ento transmite o datagrama pela rede
fsica para N. Infelizmente, o hardware de rede no entende o formato do datagrama ou do
endereamento de Internet. Em vez disso, cada tecnologia de hardware define um formato de
frame e um esquema de endereamento fsico; o hardware s aceita e entrega pacotes que
tenham o formato especfico de frame e um esquema de endereamento de hardware especfico.
Mais importante ainda, como a Internet pode conter tecnologias de rede heterogneas, o formato
do frame necessrio para atravessar uma rede pode diferir do formato de frame necessrio para
atravessar a rede anterior.

14.3 Encapsulamento
Como pode um datagrama ser transmitido atravs de uma rede fsica que no entende o
formato do datagrama? A resposta est na tecnologia chamada encapsulamento. Quando um
datagrama IP encapsulado em um frame, o datagrama inteiro colocado na rea destinada aos
dados, dentro de um frame. O hardware de rede trata o frame que contm o datagrama
exatamente da mesma maneira que qualquer outro frame. Na verdade, o hardware no examina
ou modifica o contedo da rea de dados de um frame. A figura abaixo ilustra esse conceito.

Cabealho IP

Cabealho do Frame

rea de dados do IP

rea de dados do Frame

Quando um receptor se a rea de dados de um frame recebido contm um datagrama IP


ou outro tipo de dado? A origem e o receptor devem concordaar quanto ao valor usado no
campo Tipo do cabealho do frame. Quando um datagrama colocado em um frame, a origem
preenche o campo Tipo do frame com o nmero especial reservado para o IP. Quando um frame
chega com o nmero especial no seu campo Tipo, o receptor sabe que a rea de dados contm
um datagrama IP.
Um frame que carregue um datagrama IP deve ter um endereo de destino como em um
frame normal. Para isso, alm de colocar o datagrama IP na rea de dados do frame, o
97/223

encapsulamento requer que a origem fornea um endereo fsico do prximo computador para o
qual o datagrama deve ser enviado. Para calcular o endereo apropriado, um software no
computador de origem deve realizar o mapeamento entre endereos como descrito
anterirormente. O mapeamento traduz o endereo IP do prximo salto em um endereo de
hardware equivalente, o qual ento utilizado como o endereo de destino no cabealho do
frame.

14.4 Transmisso Atravs da Internet


O encapsulamento aplicado a uma transmisso por vez. Depois que a origem seleciona
o prximo salto, ela encapsula o datagrama em um frame e transmite o resultado pela rede fsica
at o prximo salto. Quando um frame alcana o prximo salto, o software receptor remove o
datagrama IP e descarta o frame. Se o datagrama precisar ser encaminhado atravs de outra
rede, um novo frame ser criado. A figura abaixo ilustra como um datagrama quando est
encapsulado, e quando desencapsulado, medida que ele caminha do host de origem at host
de destino atravs de trs redes diferentes - com dois roteadores. Cada rede pode utilizar
tecnologias de hardware diferentes, implicando que o formato dos frames ir diferir.

Como a figura mostra, hosts e roteadores guardam o datagrama na memria sem os


cabealhos adicionais. Quando um datagrama passa atravs de uma rede fsica, o datagrama
encapsulado de acordo com a caracterstica daquela rede. O tamanho do cabealho do frame que
aparecer antes do datagrama depende da tecnologia da rede. Por exemplo, se a rede 1 uma
Ethernet, o cabealho do frame 1 ser um cabealho Ethernet. Similarmente, se a rede 2 for uma
FDDI Ring, o cabealho do frame 2 ser um cabealho FDDI.
importante observar que cabealhos de frames no so acumulados ao longo da
viagem pela Internet. Antes de um datagrama ser transmitido atravs de uma dada rede, o
datagrama encapsulado, o que normalmente significa que um cabealho de frame ser
adicionado. Quando um frame chega ao prximo salto, o datagrama removido do frame antes
de ser encaminhado e encapsulado em um novo frame. Dessa forma, quando um datagrama
alcana seu destino final, o frame que carrega o datagrama descartado e o datagrama aparece
exatamente com o mesmo tamanho que foi originalmente enviado.

98/223

14.5 MTU, Tamanho do Datagrama e Encapsulamento


Cada tecnologia de hardware especifica uma quantidade mxima de dados que um
frame pode carregar. Esse limite conhecido como Unidade Mxima de Transmisso (MTU).
No existem excees quanto ao limite da MTU o hardware da rede no projetado para
aceitar ou transferir frames que carreguem mais dados que a MTU permita. Por isso, um
datagrama deve ser menor ou igual MTU da rede ou no poder ser encapsulado para a
transmisso.
Em uma Internet que contenha redes heterogneas, restries de MTU podem causar um
problema. Em particular, devido a um roteador se conectar a redes com valores diferentes de
MTU, um roteador pode receber um datagrama de uma das redes que no pode ser enviado
atravs de outra. A figura abaixo ilustra um roteador interconectando duas redes com valores de
MTU diferentes.
H1

H2

Rede 1
MTU=1500

Rede 2
MTU=1000

Na figura, o host 2 (H2) est ligado a uma rede que tem uma MTU de 1000. Ento, cada
datagrama que H2 transmitir deve ter 1000 bytes ou menos. Entretanto, devido ao host 1 (H1)
estar ligado a uma rede que tenha uma MTU de 1500 bytes, H1 poder transmitir datagramas
que contenham at 1500 bytes. Se H1 enviar um datagrama de 1500 bytes para H2, o roteador
(R) receber o datagrama, mas no ser capaz de enviar atravs da Rede 2.
Um roteador IP usa a tcnica conhecida por Fragmentao para resolver o problema das
MTUs heterogneas. Quando um datagrama maior que a MTU da rede pela qual ele deve ser
enviado, o roteador divide o datagrama em pedaos menores, chamados fragmentos, e envia
cada fragmento independentemente.
Surpreendentemente, um fragmento tem o mesmo formato que os outros datagramas
um bit no campo FLAGS do cabealho indica quando um datagrama um fragmento ou um
datagrama completo. Outros campos do cabealho so preenchidos com a informao que ser
utilizada para reunir os fragmentos e reproduzir o datagrama original. Em particular, o campo
Offset do Fragmento no cabealho de um fragmento especifica em qual posio esse fragmento
est localizado no datagrama original.
Para fragmentar um datagrama para transmisso atravs da rede, um roteador deve
utilizar a MTU da rede e o tamanho de cabealho do datagrama para calcular o mximo de
dados que podero ser enviados em cada fragmento; e o nmero de fragmentos que sero
necessrios. Ento, o roteador cria os fragmentos. Ele comea copiando o cabealho original no
incio de cada fragmento, e ento modifica os campos individuais. Por exemplo, o roteador
atribui o valor 1 ao bit apropriado no campo FLAGS para indicar que aquele datagrama um
fragmento. Finalmente, o roteador copia os dados apropriados do datagrama original para cada
fragmento e os transmite. A figura abaixo ilustra o processo.
Cabealho IP

Cab.
IP 1

Dados
1

rea de dados do datagrama original

Cab.
IP 2

Dados
2

Cab.
IP 3

Dados
3
99/223

14.6 Agrupamento
O processo de criar uma cpia do datagrama original a partir dos fragmentos chamado
de agrupamento. Como cada fragmento comea com uma cpia do cabealho do datagrama
original, todos os fragmentos tm o mesmo endereo de destino, como o datagrama original do
qual eles derivam. Alm disso, o fragmento que carrega o pedao final de dados atribui o valor
1 a um bit adicional no cabealho. Dessa forma, o receptor que ir fazer o agrupamento pode
determinar quando todos os fragmentos chegaram com sucesso.
Compreensivamente, o protocolo IP especifica que o host do destino final deve reunir os
fragmentos. Por exemplo, considere a Internet da figura abaixo:
H1

H2
R1

Rede 1
MTU=1500

R2

Rede 2
MTU=1000

Rede 3
MTU=1500

Na figura, se o host H1 enviar um datagrama de 1500 bytes para o host H2, o roteador R1
dividir o datagrama em dois fragmentos, que sero encaminhados para o roteador R2. O
roteador R2 no ir reunir os fragmentos. Em vez disso, R2 utiliza o endereo de destino de cada
fragmento para encaminh-lo. O host de destino, H2, coleta os fragmentos e os rene para
reproduzir o datagrama original.
Como o destino final o responsvel por reunir os fragmentos, tem-se duas vantagens
principais. Primeira, isso reduz a quantidade de processamento de informao nos roteadores.
Quando um datagrama encaminhado, o roteador no precisa saber quando um datagrama um
fragmento. Segunda, isso permite que as rotas mudem dinamicamente. Se um roteador
intermedirio rene os fragmentos, todos os fragmentos precisariam alcanar tal roteador.
Adiando o agrupamento at o destino final, o IP fica livre para transmitir alguns fragmentos do
datagrama atravs de uma rota diferente da dos demais fragmentos.

14.7 Identificando um Datagrama


Lembre-se de que o IP no garante a entrega. Sendo assim, fragmentos individuais
podem ser perdidos ou chegar fora de ordem. Mais importante que isso, se a origem enviar
mltiplos datagramas para um dado destino, os fragmentos dos datagramas podem chegar em
uma ordem arbitrria.
Como o IP rene fragmentos que chegam fora de ordem? O host de origem coloca um
nmero identificador nico no campo Identificao de cada datagrama que enviado. Quando
um roteador fragmenta um datagrama, esse roteador copia o nmero de identificao em cada
fragmento. Um host receptor utiliza esse nmero de identificao e o endereo IP de origem em
um fragmento que chega para determinar a qual datagrama ele pertence. Alm disso, o campo
Offset do Fragmento diz ao host receptor como ordenar os fragmentos dentro de um dado
datagrama.

100/223

14.8 Perda de Fragmento


Como o IP no garante a entrega dos datagramas se uma rede fsica perde pacotes, um
datagrama encapsulado ou um fragmento podem ser perdidos. Quando todos os fragmentos de
um datagrama chegam, o datagrama pode ser reorganizado. Entretanto, um problema aparece
quando um ou mais fragmentos do datagrama chegam, e alguns fragmentos esto atrasados ou
foram perdidos. Embora o datagrama no possa ser reunido, o host receptor deve salvar os
fragmentos no caso de aqueles fragmentos que esto faltando estejam apenas atrasados.
O host receptor no pode manter tais fragmentos arbitrariamente por muito tempo,
porque os fragmentos ocupam espao no buffer. Para evitar o esgotamento da memria, o IP
especifica um tempo mximo para manter os fragmentos. Quando o primeiro fragmento de um
dado datagrama chega, o host receptor inicia um contador. Se todos os fragmentos de um
mesmo datagrama chegarem antes do contador expirar, o host receptor cancela o contador e
rene o datagrama. Entretanto, se o contador expirar antes de todos os fragmentos chegarem, o
host receptor descarta aqueles fragmentos que j haviam chegado.
O resultado do contador o tudo-ou-nada: ou todos os fragmentos chegam e o IP rene
o datagrama, ou o IP descarta o datagrama inteiro. Em particular, no existe mecanismo para o
host receptor dizer ao host de origem quais os fragmentos chegou. Isso faz sentido, porque o
host de origem no sabe sobre a fragmentao. Alm disso, se o host de origem retransmitir o
datagrama, as rotas podem ser diferentes, o que significa que a retransmisso no segue
necessariamente os mesmos roteadores. Portanto, no h garantia que um datagrama
retransmitido v ser fragmentado da mesma maneira que o original.

14.9 Fragmentando um Fragmento


Depois de realizar uma fragmentao, um roteador encaminha cada fragmento para seu
destino. O que acontece se um fragmento eventualmente alcance outra rede que tenha uma
MTU menor ainda? O esquema de fragmentao foi planejado cuidadosamente para tornar
possvel a posterior fragmentao de um fragmento. Outro roteador ao longo do caminho divide
o fragmento em fragmentos menores. Em uma Internet m projetada, onde as redes so
arranjadas em seqncia decrescente de MTUs, cada roteador ao longo do caminho deve
realizar uma posterior fragmentao de cada fragmento.
O IP no distingue entre fragmentos originais e subfragmentos. Em particular, o host
receptor no sabe quando um fragmento foi resultado da fragmentao de um datagrama em um
roteador ou de vrios roteadores, fragmentando os fragmentos. A vantagem de fazer com que
todos os fragmentos sejam iguais que o host receptor realiza a reorganizao do datagrama
original sem primeiro reorganizar os subfragmentos. Desse modo, economiza-se tempo de CPU,
e reduz a quantidade de informao necessria nos cabealhos de cada fragmento.

101/223

Captulo 15 O IP do futuro (IPv6)

15.1 Introduo
Em captulos anteriores foi discutida a verso atual do Internet Protocol (IP). O captulo
14 descreve como um datagrama IP encapsulado em uma rede de comutao de pacotes e
como ele enviado atravs da rede fsica interconectada.
Este captulo concentra-se no futuro do IP. O captulo comea analisando as limitaes
e qualidades da atual verso do IP, e assim considera uma nova verso do IP, que o IETF props
para substituir a atual verso.

15.2 O Sucesso do IP
A verso atual do IP tem um sucesso considervel. Este sucesso foi possvel por lidar
com redes heterogneas, mudanas drsticas na tecnologia de hardware e um crescimento
extremo em escala. Para lidar com redes heterogneas, o padro IP define um pacote com
formato uniforme (o datagrama IP) e um mecanismo de transmisso de pacotes. O IP tambm
define um conjunto de endereos, permitindo que aplicaes em camadas superiores da rede se
comuniquem atravs da rede heterognea, sem conhecimento das diferenas entre os
endereamentos de hardware utilizados nas camadas inferiores. O crescimento em escala pode
ser notado com a expanso atual da Internet.
A verso atual tambm acomoda as mudanas nas tecnologias de hardware. O projeto
original continua se dando bem com as vrias geraes de tecnologias de hardware criadas
desde ento. O IP agora usado em redes que operam com velocidade muito mais alta que
quela das iniciais de projeto.

15.3 A Motivao da Mudana


O primeiro motivo para mudar tem como raiz o tamanho limitado do campo de
endereos. Os projetistas decidiram usar 32 bits para o endereo IP, porque fazendo isso
garantiam que a Internet contasse com mais de um milho de endereos possveis. Porm, com
o crescimento exponencial da Internet global, onde se dobra o tamanho em menos de um ano, os
32 bits usados tornaram-se insuficientes. Assim, com essa taxa de crescimento, cada um dos
endereos ser preenchido rapidamente, sem sobrar nenhum endereo livre no havendo
possibilidades de crescimento. Logo, endereos maiores so necessrios para acomodar o
crescimento atual da Internet.
Mais motivaes surgem das novas aplicaes criadas na Internet. Por exemplo,
aplicaes que fornecem udio e vdeo precisam entregar os dados em intervalos regulares. Para
manter estas informaes fluindo atravs da Internet, sem interrupo, o IP deve evitar as
mudanas freqente de rotas. O cabealho do IP atual contm um campo que pode ser utilizado
como requisio de um tipo de servio, mas o protocolo no define um tipo de servio que pode
ser utilizado para entrega em tempo real de udio e vdeo.
Novas aplicaes esto sendo desenvolvidas e precisam de um endereamento mais
complexo e um roteamento mais rpido e eficiente. Assim, a nova verso do IP precisa incluir
mecanismos que tornem este endereamento e roteamento possveis.

102/223

15.4 Nome e Nmero de Verso


Quando um protocolo especfico definido, o grupo que realizou o trabalho precisa
distinguir este protocolo dos demais protocolos. Ficou decido a utilizao de um nmero de
verso no cabealho do protocolo. A verso mais recente do protocolo IP a verso 6,
contrariando a maioria dos pesquisadores, que esperavam que a prxima verso fosse a 5.
Porm, a verso 5 j vinha sendo utilizada em um protocolo experimental chamado ST.
Conseqentemente, a nova verso do IP recebeu o nmero 6 como seu nmero de verso oficial,
e o protocolo se tornaram conhecido como IPv6.

15.5 Caracterizao dos Atributos do IPv6


O IPv6 contm vrios dos atributos que tornaram o IPv4 um sucesso. Como no IPv4, no
IPv6 cada datagrama contm um endereo de destino e cada datagrama encaminhado
independentemente. Como no IPv4, no cabealho do datagrama temos o mximo nmero de ns
(saltos) que o datagrama pode ser repassado at ser finalmente descartado.
Mesmo mantendo todos os conceitos da verso anterior, o IPv6 modifica todos os
detalhes. Por exemplo, o IPv6 utiliza um campo de endereamento maior e um formato
totalmente novo de cabealho. O IPv6 utiliza uma srie de cabealhos de tamanho definidos, ao
invs de apenas um cabealho com a varivel tamanho dentro de um campo. Os novos atributos
do IPv6 podem ser agrupados em cinco grupos principais:

Tamanho de Endereo. Em vez de 32 bits, cada campo de endereo do IPv6


contm 128 bits. Resultando em um campo de endereos maior que ir
acomodar por dcadas o crescimento da Internet.

Formato do Cabealho. O datagrama IPv6 completamente diferente do


cabealho do IPv4. Quase todos os campos no cabealho foram modificados ou
substitudos.

Cabealhos de Extenso. Diferente do IPv4, o qual usa um nico formato de


cabealho para todos os datagramas, o IPv6 codifica a informao em
cabealhos separados. O datagrama do IPv6 consiste em um cabealho base,
seguido por zero ou mais cabealhos de extenso, seguidos por dados.

Suporte para udio e Vdeo. O IPv6 inclui um mecanismo que permite ao


remetente e ao destinatrio estabelecerem um caminho de alta qualidade atravs
da rede e associar os datagramas a esse caminho. Embora o mecanismo tenha
sido desenvolvido para aplicaes de udio e vdeo, que necessitam de alta
qualidade e desempenho, o mecanismo tambm pode ser utilizado para associar
os datagramas ao caminho com o menor custo possvel.

Protocolo Extensvel. Diferentemente do IPv4, o IPv6 no especifica todos os


atributos possveis no protocolo. Os projetistas desenvolveram um sistema que
permite ao emissor adicionar informaes ao datagrama. O esquema de
extenso torna o IPv6 mais flexvel que o IPv4, e significa que novas
caractersticas podem ser adicionadas, caso o projetista assim o quiser.

103/223

15.6 Formato do Datagrama do IPv6


A figura abaixo ilustra um datagrama IPv6, que comea com um cabealho base, que
seguido por zero ou cabealhos estendidos, e dados.

Embora a figura ilustre a estrutura de um datagrama geral, os campos na figura no


esto desenhados em escala. Em particular, algumas extenses so maiores que o cabealho
base, enquanto outras so menores. Alm disso, em muitos datagramas, o tamanho da rea de
dados muito maior que a rea dos cabealhos.

15.7 Formato do Cabealho Base do IPv6


Embora este seja duas vezes maior que o cabealho do IPv4, o cabealho base do IPv6
contm uma quantidade menor de informaes. A figura a seguir ilustra o formato.

Como a figura mostra, a maioria do espao preenchida com os dois campos de


endereos que identificam o emissor e o receptor. Como no IPv4, o campo SOURCE
ADDRESS identifica o emissor, e o campo DESTINATION ADDRESS identifica o destinatrio.
Cada endereo ocupa dezesseis octetos, quatro vezes mais que no IPv4.
O campo VERS identifica o protocolo como verso 6. O campo PRIORITY especifica a
classe de prioridade para o roteamento. O campo PAYLOAD LENGTH especifica apenas o
tamanho dos dados que esto sendo transportados; o tamanho do cabealho no includo. O
campo HOP LIMIT corresponde no IPv4 ao campo TIME-TO-LIVE.
104/223

O IPv6 interpreta o HOP LIMIT estritamente, ou seja, o datagrama ser eliminado se o


HOP LIMIT atinge zero antes que os dados cheguem ao destinatrio.
O campo FLOW LABEL dever ser utilizado com novas aplicaes que necessitem de
qualidade garantida. O campo ento utilizado para associar o datagrama a um caminho
particular de roteamento. Para enviar em tempo real udio e vdeo atravs da Internet, o emissor
requer da rede um caminho com delay menor que 100 milissegundos. Quando este caminho
determinado, o sistema de rede retorna um identificador que o emissor utiliza em cada
datagrama, que ser enviado por esse caminho. Os roteadores utilizam o valor do campo FLOW
LABEL para encaminhar o datagrama atravs do caminho pr-determinado.
O campo NEXT HEADER utilizado para especificar que tipo de informao vem aps
o cabealho atual. A figura abaixo ilustra o conceito.

15.8 Como o IPv6 Lida com Mltiplos Cabealhos


Como o padro Ipv6 especifica um nico valor para cada tipo de cabealho possvel,
nunca haver ambigidade na interpretao da informao no campo NEXT HEADER. O
receptor usa o campo NEXT HEADER em cada cabealho para determinar o que se segue. Se o
valor no campo corresponde ao tipo usado por dados, por exemplo, o receptor passa o
datagrama para um mdulo de software que lidar com dados.
Como o IPv6 sabe exatamente quando um cabealho comea ou termina? Alguns tipos
de cabealhos tm tamanho fixo. Por exemplo, o cabealho base tem o tamanho exato de 40
octetos. Para mover para o item que segue o cabealho base, o IPv6 simplesmente soma 40
octetos ao endereo do cabealho base.
Alguns cabealhos de extenso no tm um tamanho fixo. Nestes casos, o cabealho
dever conter informaes suficientes para o IPv6 determinar onde termina o cabealho. Por
exemplo, a figura a seguir ilustra a forma geral de um cabealho IPv6 que contm uma
informao, similar ao IPv4.

Quando um datagrama composto, o emissor armazena o tamanho do cabealho de


opes no campo HEADER LEN. Quando o receptor encontra um cabealho de opo, este usa
o campo HEADER LEN para determinar a localizao exata do prximo item, e o campo NEXT
HEADER determina o tipo.

105/223

15.9 Fragmentao e o Path MTU


Embora a fragmentao no IPv6 lembre a fragmentao no IPv4, os detalhes so
diferentes. No IPv6 no so includos campos de informao de fragmentao no cabealho
base. Ao invs disso, no IPv6 estes so colocados separadamente como cabealhos de extenso,
com o nome de cabealhos de fragmentao. A presena do cabealho base identifica o
datagrama como fragmentado. A figura abaixo ilustra o conceito.

Como a figura mostra cada fragmento menor que o datagrama original. Como no
IPv4, o tamanho do fragmento escolhido para ter um tamanho mximo de transmisso por
unidade (MTU, maximum transmission unit) da rede para onde o fragmento dever ser enviado.
Assim, o fragmento final pode ser menor que os outros, porque representa o que sobrou aps
vrios fragmentos de tamanho mximo (MTU) terem sido extrados do datagrama original.
Alm disso, no IPv6, o host emissor responsvel pela fragmentao. Isto , os hosts
devero escolher o menor tamanho de datagrama que no ir necessitar de fragmentao; os
roteadores pelo caminho que receberem um datagrama grande, no iro fragmentar o datagrama.
O host dever determinar a MTU de cada rede no caminho at o destinatrio, e escolher,
ento, o menor tamanho de datagrama. A MTU mnima de um caminho entre emissor e receptor
conhecido como path MTU, e o processo de descoberta do path MTU conhecido como path
MTU discovery. Em geral, o processo path MTU discovery iterativo. O host envia uma
seqncia com vrios tamanhos de datagramas para o destinatrio e verifica quais chegaram
com erro. Uma vez que um datagrama pequeno o suficiente para passar sem ser fragmentado,
o host escolhe o tamanho deste datagrama como o tamanho de path MTU.

15.10 O Propsito dos Mltiplos Cabealhos


As duas principais razes para existir mltiplos cabealhos so: economia e capacidade
de upgrades. Entender o porqu da economia simples: dividindo as funcionalidades do
datagrama em cabealhos separados, economiza-se espao. Ter cabealhos separados no IPv6
torna possvel definir um conjunto de propriedades sem requerer em cada cabealho um espao
para cada propriedade. Como a maioria dos datagramas necessita de apenas alguns cabealhos,
so evitados campos desnecessrios, economizando um espao considervel. Alm disso,
datagramas menores levam menos tempo para serem transmitidos. Assim, reduzindo o tamanho
do datagrama tambm reduzido o consumo de largura de banda (bandwidth).
106/223

Para entender a capacidade de upgrades, considere a adio de novas caractersticas ao


protocolo. Um protocolo como IPv4, que utiliza um cabealho com formato fixo, para se incluir
mudanas, o cabealho dever ser projetado novamente para, etno, acomodar os campos
necessrios para as novas alteraes. J no IPv6, os cabealhos continuam inalterados. Apenas
um novo tipo para o campo NEXT HEADER definido, bem como o formato deste novo
cabealho.
A vantagem de se propor uma nova funcionalidade para o cabealho tambm conta com
a propriedade de se fazer o experimento antes de mudar todos os computadores na Internet. Por
exemplo, suponha que os donos de dois computadores desejam testar uma nova tcnica de
criptografia em datagramas. Ambos devem concordar nos detalhes sobre o cabealho de
criptografia experimental. O emissor adiciona este novo cabealho, e o receptor o interpreta. Se
o cabealho aparecer aps o cabealho utilizado para o roteamento, os roteadores na rede iro
passar o datagrama sem entender o contedo deste cabealho. Assim que as propriedades do
novo cabealho se mostrarem interessantes, estas podem ser incorporadas definitivamente.

15.11 Endereamento no IPv6


Como no IPv4, no IPv6 destinado um nico endereo para cada conexo entre o
computador e a rede fsica. Assim, se um computador se conecta a trs redes fsicas, o
computador recebe trs endereos. No IPv6 cada endereo separado em um prefixo que
identifica a rede e um sufixo que identifica o computador em particular na rede.
Mesmo adotando a mesma aproximao para os endereos, o endereamento no IPv6 se
distingue, e muito, do endereamento no IPv4. Primeiro todos os detalhes do endereo so
diferentes. Em particular, os endereos no tm classes definidas. Ao invs disso, a fronteira
entre o prefixo e sufixo pode estar em qualquer local do endereo e no pode ser determinado a
partir de um endereo sozinho. Assim, o tamanho do prefixo dever ser associado a cada
endereo, permitindo ao software descobrir onde o prefixo acaba. Depois, o IPv6 define um
conjunto de endereos especiais, que difere completamente do conjunto de endereos especiais
do IPv4. Em particular, o IPv6 no inclui um endereo para broadcasting em uma determinada
rede, ao invs disso cada endereo IPv6 se enquadra em um dos trs tipos bsicos abaixo:
Unicast: o endereo corresponde a um nico computador. O datagrama
enviado para o mesmo encaminhado pelo caminho mais curto at o computador.
Multicast: o endereo corresponde a um grupo de computadores,
mesmo estando em vrias localizaes; a associao ao grupo pode ser alterada a
qualquer momento. Quando um datagrama enviado para o endereo, o IPv6 entrega
uma cpia do datagrama para cada membro do grupo.
Anycast: o endereo corresponde ao grupo de computadores que
compartilham o prefixo do endereo. O datagrama enviado para o endereo
encaminhado pelo caminho mais curto e entregue exatamente a um nico computador
(computador mais prximo do emissor).

107/223

15.12 Notao Hexadecimal do IPv6


O endereo de 128 bits ir acomodar o crescimento da Internet, porm escrever este
endereo pode se tornar difcil e complicado. Por exemplo, considere um nmero de 128 bits,
escrito na notao decimal com ponto:
105.220.136.100.255.255.255.255.0.0.18.128.140.10.255.255
Para ajudar a reduzir o nmero de caracteres do endereo, os projetistas do IPv6
propuseram o uso de uma notao compacta, conhecida como colon hexadecimal notation
(colon hex), na qual cada grupo de 16 bits escrito em hexadecimal com dois pontos separando
os grupos. Por exemplo, quando o nmero acima escrito nessa notao temos:
69DC:8864:FFFF:FFFF:0:1280:8C0A:FFFF
Como o exemplo ilustra, a notao colon hex requer uma menor quantidade de
caracteres para expressar o endereo. Uma otimizao adicional, conhecida como zero
compression, tambm reduz o tamanho. A compresso do zero substitui a seqncia de zeros
por dois pontos. Vejamos o exemplo abaixo:
FF0C:0:0:0:0:0:0:B1
Pode ser escrito como:
FF0C::B1
Como o endereo IPv6 tem uma maior quantidade de espaos, a compresso do zero
uma ferramenta essencial, pois muitos projetistas esperam o endereo IPv6 com um conjunto de
zeros. Em particular, isso ocorre porque os projetistas mapearam todos os endereos IPv4
existentes e os transformaram em IPv6, ou seja, qualquer endereo IPv6 que comece com 96
zeros, contm o endereo IPv4 nos ltimos 32 bits.

108/223

Captulo 16 Mecanismo de Informao de Erro (ICMP)

16.1 Introduo
Nos captulos anteriores apresentou-se o servio de entrega de datagramas a qualquer
custo que o Protocolo da Internet prov. Definiu-se o formato do datagrama IP, explicou-se
como as tabelas de roteamento so utilizadas para selecionar o prximo salto para o
encaminhamento do datagrama, e mostrou-se como os datagramas so encapsulados para
transmisso. Este captulo examina um protocolo de informao de erro integrado com o IP. Os
erros bsicos que podem ser informados, e explica como e quando essas mensagens so
enviadas.
Embora a pretenso original fosse prover um modo de a origem entender o porqu de
datagramas no serem entregues, pesquisadores encontraram maneiras criativas de utilizar o
sistema de mensagens de controle. Em particular, ferramentas foram criadas para colher
informao sobre a Internet atravs do envio de datagramas que gerassem mensagens de erro. O
captulo examina algumas ferramentas e tcnicas que utilizam mensagens de erro para recolher
tais informaes.

16.2 Semnticas: A Qualquer Custo e Deteco de Erro


Dizemos que o IP define uma comunicao a qualquer custo, onde cada datagrama pode
ser perdido, duplicado, atrasado, ou entregue fora de ordem. Isso pode parecer que um servio a
qualquer custo no precise de qualquer deteco de erro. Entretanto, importante perceber que
o servio a qualquer custo no negligente o IP se esfora para evitar erros e para reportar tais
problemas quando ocorrerem.
J vimos um exemplo de deteco de erro no IP: o checksum do cabealho, que
utilizado para detectar erros de transmisso. Quando um host cria um datagrama IP, ele inclui
um checksum de todo o cabealho. Quando um datagrama recebido, o checksum verificado
para assegurar que o cabealho chegou intacto. Para verificar o checksum, o host receptor
recalcula o checksum incluindo o valor do campo Checksum do Cabealho. Se um bit do
cabealho IP foi danificado durante a transmisso atravs da rede fsica, o receptor ir descobrir
que o checksum no resultar em zero. Depois de modificar os campos do cabealho (por
exemplo, decremento do campo Tempo de Vida), um roteador deve recalcular o checksum antes
de encaminhar o datagrama para o prximo salto.
A ao tomada em resposta a um erro de checksum direta: o datagrama deve ser
descartado imediatamente, sem nenhum processamento posterior. O host receptor no pode
confiar em nenhum dos campos do cabealho do datagrama, porque o receptor no sabe quais
bits foram alterados. Em particular, o host receptor no pode enviar uma mensagem de erro de
volta para o computador que o enviou, pois o receptor no pode confirmar o endereo de origem
do cabealho. Da mesma forma, o host receptor no pode encaminhar um datagrama danificado,
porque o receptor no pode confirmar o endereo de destino do cabealho. Por isso, o host
receptor no tem outra opo, a no ser descartar o datagrama danificado.

16.3 Protocolo de Mensagem de Controle de Erro


Problemas menos srios do que os erros de transmisso resultam em condies de erro
que podem ser reportadas. Por exemplo, suponha que alguns caminhos fsicos da Internet
falhem, fazendo com que a Internet seja particionada em duas redes distintas sem nenhum
caminho que as interligue. Um datagrama enviado por um host de uma das redes para um host
na outra rede no poder ser entregue.
109/223

A pilha TCP/IP inclui um protocolo que o IP utiliza para enviar mensagens de erro
quando condies adversas, como a descrita anteriormente, ocorrem: o Protocolo de Mensagens
de Controle da Internet (ICMP). O protocolo requerido em uma implementao padro do IP.
Veremos que os dois protocolos so co-dependentes. O IP utiliza o ICMP quando envia
mensagens de erro, e o ICMP utiliza o IP para transportar essas mensagens.
A lista a seguir e a tabela mostram as mensagens do ICMP, que incluem o erro e a
mensagem de informao. Aps analisar alguns exemplos, veremos como elas podem ser
utilizadas.
Exemplos de erros que incluem mensagens ICMP:

Source Quench: Um roteador envia uma mensagem Source Quench sempre que ele
recebe tantos datagramas que o seu espao disponvel de buffer se esgota. Um roteador
que tenha temporariamente acabado seu espao de buffer deve descartar os datagramas
que chegam. Quando ele descarta um datagrama, o roteador envia uma mensagem
Source Quench ao host que criou tal datagrama. Quando um host recebe uma mensagem
Source Quench, o host obrigado a reduzir a taxa na qual ele est transmitindo.

Time Exceeded: Uma mensagem Time Exceeded enviada em dois casos. Sempre que
um roteador reduz o campo Tempo de Vida de um datagrama a zero, o roteador descarta
o datagrama e envia uma mensagem Time Exceeded. Fora isso, uma mensagem Time
Exceeded enviada a um host se o tempo de agrupamento dos fragmentos expirar antes
que todos os demais fragmentos de um datagrama cheguem.

Destination Unreachable: Sempre que um roteador determina que um datagrama no


possa ser entregue a seu destino final, ele envia uma mensagem Destination
Unreachable ao host que criou tal datagrama. A mensagem especifica tanto quanto o
host de destino est inalcanvel ou se a rede onde ele se encontra est inalcanvel. Em
outras palavras, a mensagem de erro distingue entre a situao em que a rede inteira est
desconectada da Internet (por exemplo, devido a um roteador que falhou); e o caso de
apenas um host em particular estar desconectado (por exemplo, devido a um host
desligado).

Redirect: Quando um host cria um datagrama destinado a uma rede remota, o host envia
o datagrama a um roteador, que encaminha o datagrama ao seu destino. Se o roteador
determinar que o host tenha enviado o datagrama incorretamente, pois deveria ser
enviado para um roteador diferente, o roteador envia uma mensagem Redirect, fazendo
com que o host mude sua rota. Uma mensagem Redirect pode especificar ainda a
mudana para um host especfico ou para uma rede; a ltima opo a mais comum.

Parameter Problem: Um dos parmetros especificado no datagrama est incorreto.


Fora as mensagens de erro, o ICMP define mensagens informativas, como:

Echo Request/Reply: Uma mensagem de Echo Request pode ser enviada a qualquer
computador. Em resposta a essa mensagem de Echo Request, o ICMP obrigado a
enviar uma mensagem ICMP de Echo Reply. A resposta carrega os mesmos dados que o
requerimento.

Address Mask Request/Reply: Um host transmite a todos os host de sua rede uma
mensagem Address Mask Request quando inicializado, e os roteadores que recebem o
requerimento enviam uma mensagem Address Mask Reply, que contm a mscara de
sub-rede de 32 bits que est sendo utilizada por aquela rede.

110/223

Tipo

Nome

Echo Reply

No atribudo

No atribudo

Destination Unreachable

Source Quench

Redirect

Alternate Host Address

No atribudo

Echo

Router Advertising

10

Router Selection

11

Time Exceeded

12

Parameter Problem

13

Timestamp

14

Timestamp Reply

15

Information Request

16

Information Reply

17

Address Mask Request

18

Address Mask Reply

19

Reservado (para Segurana)

20-29

Reservado (para Experimentos de Robustez)

30

Traceroute

31

Datagram Conversion Error

32

Mobile Host Redirect

33

IPv6 Where-Are-You

34

IPv6 I-Am-Here

35

Mobile Registration Request

36

Mobile Registration Reply

37-255

Reservado
111/223

16.4 Transporte da Mensagem ICMP


O ICMP utiliza o IP para transportar cada mensagem de erro. Quando um roteador tem
uma mensagem ICMP para enviar, ele cria um datagrama e encapsula a mensagem ICMP dentro
do datagrama. Isso quer dizer, a mensagem ICMP colocada na rea de dados do datagrama IP.
O datagrama ento encaminhado normalmente, com todo o datagrama encapsulado para a
transmisso pela rede. A figura abaixo ilustra os dois nveis de encapsulamento.
Cabealho ICMP

Cabealho IP

Cabealho do Frame

rea de dados ICMP

rea de dados do IP

rea de dados do Frame

Para onde uma mensagem ICMP deve ser enviada? Mensagens ICMP so sempre
criadas em resposta a um datagrama, ou quando o datagrama encontra algum problema (por
exemplo, um roteador acha que o destino especificado no datagrama est inalcanvel); ou
quando o datagrama carrega uma solicitao ICMP para o qual um roteador cria uma resposta.
Em ambos os casos, o roteador manda uma mensagem ICMP de volta origem do datagrama.
Enviar a mensagem de volta a origem direto, porque cada datagrama carrega o
endereo IP de sua origem no cabealho. O roteador extrai o endereo da origem do cabealho
do datagrama que chegou e coloca esse endereo no campo Destino do cabealho do datagrama
que carrega a mensagem ICMP.
Datagramas que carregam mensagens ICMP no tem nenhuma prioridade especial
eles so encaminhados como qualquer outro datagrama, com uma pequena exceo. Se o
datagrama que carrega uma mensagem de erro ICMP causar um erro, nenhuma mensagem de
erro enviada. A razo clara: os projetistas queriam evitar que Internet se tornasse
congestionada carregando mensagens de erro em cima de mensagens de erros.

16.5 Utilizando Mensagens ICMP para Testar Alcanabilidade


O captulo 2 descreve o programa ping que testa se um determinado destino pode ser
alcanado ou no. Agora que j vimos o ICMP, podemos entender exatamente como o ping
opera. O ping utiliza as mensagens ICMP de Echo Request/Reply. Quando solicitado, o ping
envia um datagrama IP que contm uma mensagem de Echo Request para um destino
especfico. Depois de enviar a solicitao, ele aguarda por uma resposta durante um perodo
pequeno de tempo. Se a resposta no chegar, o ping retransmite a solicitao. Se a resposta no
chegar para as retransmisses (ou se uma mensagem ICMP Unreachable Destination chegar), o
ping declara que a mquina remota no est alcanvel.
O ICMP em uma mquina remota responde mensagem de Echo Request. De acordo
com o protocolo, sempre que uma Echo Request chega, o ICMP deve mandar uma mensagem
de Echo Reply.

112/223

16.6 Utilizando ICMP para Traar uma Rota


Dissemos que o campo Tempo de Vida no cabealho de uma datagrama utilizado para
prevenir erros de roteamento. Para evitar que um datagrama entre em um loop infinito, cada
roteador deve decrementar o contador Tempo de Vida no cabealho. Se o contador chegar em
zero, o roteador o descarta e envia uma mensagem ICMP Time Exceeded de volta a sua origem.
Mensagens ICMP so utilizadas pela ferramenta Traceroute quando ela constri uma
lista de todos os roteadores ao longo do caminho at um dado destino. O Traceroute estipula o
valor do Tempo de Vida do primeiro datagrama em 1 antes de envi-lo. O primeiro roteador que
recebe o datagrama decrementa o tempo de vida, descarta o datagrama, e envia de volta uma
mensagem ICMP Time Exceeded. Devido mensagem ICMP viajar em um datagrama IP, o
Traceroute pode extrair o endereo IP de origem e dizer o endereo do primeiro roteador ao
longo do caminho at o destino.
Depois de descobrir o endereo do primeiro roteador, o Traceroute envia um datagrama
com o Tempo de Vida igual a 2. O primeiro roteador decrementa o contador e encaminha o
datagrama: o segundo roteador descarta o datagrama e envia uma mensagem de erro.
Similarmente, uma vez que ele tenha recebido a mensagem de erro do roteador que est a uma
distncia de 2, o Traceroute envia outro datagrama com Tempo de Vida igual a 3, depois 4 e
assim por diante.
O Traceroute deve ainda lidar com outros detalhes. Devido ao IP utilizar a entrega a
qualquer custo, os datagramas podem ser perdidos, duplicados ou entregues fora de ordem. Com
isso, o Traceroute deve estar preparado para receber respostas duplicadas e para retransmitir
datagramas que foram perdidos. Escolher um tempo d de espera pode ser difcil, porque o
Traceroute no pode saber quanto tempo deve aguardar por uma resposta o Traceroute
permite que o usurio decida sobre esse tempo.
O Traceroute enfrenta outro problema: as rotas podem mudar dinamicamente. Se as
rotas mudam entre duas possibilidades, a segunda possibilidade pode ter um caminho maior ou
menor que o caminho da primeira. Mais importante que isso, a seqncia de roteadores que o
Traceroute encontrou pode no corresponder a um caminho vlido atravs da Internet. Por isso,
o Traceroute mais til em uma Internet onde as rotas sejam relativamente estveis.
O Traceroute tambm precisa lidar com a situao onde o Tempo de Vida grande o
bastante para alcanar o seu destino. Para determinar quando um datagrama teve sucesso em
atingir seu destino, o Traceroute envia um datagrama para o host de destino que dever
responder. Embora ele possa enviar uma mensagem ICMP de Echo Request, ele no o faz. Ao
invs disso, o Traceroute utiliza uma mensagem ICMP do tipo 30, ou usa o UDP (User
Datagram Protocol), um protocolo rpido que permite que aplicaes enviem e recebam
mensagens individuais. Quando usa o UDP, o Traceroute envia um datagrama UDP para um
programa no existente na mquina de destino. Quando essa mensagem chega para um
programa no existente, o ICMP envia uma mensagem de Destination Unreachable. Por isso,
cada vez que o Traceroute envia um datagrama, ou ele recebe uma mensagem Time Exceeded
de um roteador ao longo do caminho ou uma mensagem ICMP de Destination Unreachable do
computador de destino.

16.7 Utilizando ICMP para Determinar a MTU do Caminho


Em um roteador, o IP fragmenta qualquer datagrama que maior que a MTU da rede
pela qual o mesmo est sendo transmitido. Embora a fragmentao solucione o problema de
redes heterogneas, a fragmentao freqentemente reduz o desempenho. Um roteador utiliza
memria e tempo de processamento para construir fragmentos. Similarmente, o host de destino
utiliza memria e tempo de processamento para coletar os fragmentos e reuni-los em um
datagrama completo. Em algumas aplicaes, a fragmentao pode ser evitada se o host de
origem escolher um tamanho de datagrama menor. Por exemplo, uma aplicao de transferncia
de arquivos pode enviar qualquer quantidade de dados por datagrama.
113/223

Se a aplicao escolhesse um tamanho de datagrama menor ou igual a menor MTU das


redes ao longo do caminho at o destino, nenhum roteador precisaria fragmentar o datagrama.
Tecnicamente, a menor MTU ao longo do caminho entre a fonte e o destino conhecida
como MTU do caminho. claro que, se as rotas mudam (por exemplo, o caminho muda), a
MTU do caminho pode mudar tambm. Entretanto, em muitas partes da Internet, as rotas
tendem a permanecer estveis por dias ou semanas. Nesses casos, faz sentido um computador
determinar a MTU do caminho e criar datagramas suficientemente pequenos.
Que mecanismo um host pode utilizar para determinar a MTU do caminho? A resposta
est em uma mensagem de erro ICMP e o que causar o envio da mensagem de erro. A
mensagem de erro consiste em uma mensagem ICMP que relata que a fragmentao foi
necessria, mas no permitida, e a tcnica para fazer isso um bit do campo Flags no cabealho
IP, que especifica que o datagrama no deve ser fragmentado. Quando um roteador determina
que um datagrama deva ser fragmentado, o roteador examina tal bit no cabealho para verificar
se a fragmentao permitida. Se esse bit for igual a 1, o roteador no realiza a fragmentao.
Caso contrrio, o roteador envia uma mensagem de erro ICMP de volta fonte e descarta o
datagrama.
Para determinar a MTU do caminho, o IP no host envia uma seqncia de tentativas,
onde cada tentativa consiste em um datagrama que tem o bit que previne a fragmentao igual a
1. Se o datagrama maior que a MTU de uma rede ao longo do caminho, o roteador conectado
a essa rede descartar o datagrama e enviar a mensagem ICMP apropriada ao host. O host pode
ento enviar uma tentativa menor at que uma obtenha sucesso. Como no Traceroute, o host
deve estar preparado para retransmitir tentativas que no tenham tido resposta.

114/223

Captulo 17 TCP: Servio de Transporte Confivel


17.1 Introduo
Nos captulos anteriores foram descritos o servio de entrega de pacotes provido pelo IP
e o protocolo utilizado para reportar erros. Este captulo examina o TCP, o principal protocolo
utilizado acompanhando o IP, e explica como o protocolo fornece transporte confivel.
O TCP alcana aparentemente uma tarefa impossvel: utiliza um servio de datagramas
no confivel oferecido pelo IP quando envia dados para outro computador, mas fornece uma
entrega de dados confivel para os aplicativos. O TCP tende a compensar a perda ou o delay na
Internet em uma transferncia de dados eficiente, e isto feito sem sobrecarregar o meio de
transmisso e roteadores.

17.2 A necessidade de um Transporte Confivel


Para permitir que os programadores sigam as tcnicas convencionais quando criam
aplicativos para a Internet, o software na Internet deve seguir ter a mesma semntica que os
sistemas computacionais convencionais. Isto , o software deve garantir rapidez e transporte
confivel. Os dados devem ser entregues exatamente na mesma ordem de envio e no devem
existir perda ou duplicao.

17.3 O Protocolo de Controle de Transmisso (TCP)


Confiana a responsabilidade do protocolo de transmisso: aplicativos interagem com
o servio de transporte para enviar e receber dados. No conjunto TCP/IP, o Protocolo de
Controle de Transmisso (TCP) concede o servio de transporte confivel. O TCP
extraordinrio, porque resolve um problema difcil, e nenhum outro protocolo de propsito geral
provou que funciona to bem. Conseqentemente, a maioria dos aplicativos para Internet foram
construdos para utilizar o TCP.

17.4 O Servio que o TCP Fornece aos Aplicativos


Do ponto de vista dos aplicativos, o TCP fornece sete funes principais:

Conexo Orientada. O TCP fornece servio de conexo orientada, ou seja, um


aplicativo primeiro solicita uma abertura de conexo com o destinatrio, e ento
utiliza a conexo para transferir os dados.

Comunicao Ponto-a-ponto. Cada conexo TCP tem exatamente dois pontos


terminais.

Confiana Completa. O TCP garante que os dados enviados atravs da conexo


sero entregues exatamente como foram enviados, sem perder nenhum dado ou
qualquer mudana de ordem.

Comunicao Full Duplex. A conexo TCP permite enviar dados em ambas as


direes e permite que cada programa aplicativo envie dados a qualquer
115/223

momento. O TCP pode armazenar o dado que sa e entra em ambas s direes,


tornando possvel para um aplicativo enviar dados e continuar a computao,
enquanto os dados so transferidos.

Interface Corrente. O TCP fornece uma interface corrente na qual o aplicativo


envia uma seqncia contnua de octetos atravs da conexo. Isto , o TCP no
prov a notao de registros, e no garante que os dados sejam entregues ao
aplicativo destinatrio nos mesmos pedaos que foram transferidos do
aplicativo emissor.

Inicializao de Conexo Segura. O TCP requer que os dois aplicativos criem


uma conexo e ambos concordem com a nova conexo TCP criada.

timo Fim de Conexo. Um programa pode abrir uma conexo, enviar dados
quando necessitar, e ento requisitar que a conexo seja finalizada. O TCP
garante a entrega de todos os dados antes de fechar a conexo TCP.

17.5 Servio Ponto-a-Ponto e Datagramas


O TCP chamado de Protocolo Ponto-a-Ponto (End-To-End Protocol), porque fornece
conexo direta de um aplicativo em um computador para um aplicativo em um computador
remoto. Os aplicativos podem requisitar que o TCP crie uma conexo, envie e recebam dados, e
depois fechem a conexo.
A conexo feita pelo TCP chamada de conexo virtual, porque so mantidas por
software. Realmente, o sistema base da Internet no fornece suporte de hardware ou software s
conexes. Em vez disso, o TCP modula nas duas mquinas uma troca de mensagens para
simular a iluso de uma conexo.
O TCP utiliza o IP para transmitir as mensagens. Cada mensagem TCP encapsulada
em um datagrama IP e enviada na rede. Quando o datagrama chega ao host destinatrio, o IP
passa o contedo ao TCP. Note que, embora o TCP utilize o IP para transmitir as mensagens, o
IP no l ou interpreta o contedo da mensagem. Assim o TCP trata o IP como um sistema de
comunicao que conecta dois pontos finais de uma conexo, e o IP trata cada mensagem TCP
como dados a serem transferidos.
A figura a seguir contm um exemplo de conexo entre dois hosts e um roteador,
ilustrando a relao entre TCP e IP.

116/223

17.6 Confiabilidade
Um protocolo de transporte como o TCP deve ser projetado cuidadosamente para
garantir confiabilidade. Os principais problemas numa rede de comutao de pacotes
justamente a entrega no confivel devido ao projeto bsico do sistema de comunicao e a
inicializao do computador. Considere uma situao na quais dois computadores formam uma
conexo, transferem dados e fecham a conexo. Aps isso, abrem uma nova conexo. Como
cada mensagem pode ser perdida, duplicada, atrasada ou entregue fora de ordem, mensagens
ainda da primeira conexo aberta podem ser duplicadas e a cpia entregue tarde o bastante para
a segunda conexo j estar formada. Mensagens no podem ser ambguas, ou o protocolo ir
aceitar as mensagens duplicadas da conexo antiga e permitir que interfiram na nova conexo
aberta.
Quando o sistema de um computador reiniciado este um srio desafio para o
protocolo TCP. Imagine a situao onde dois aplicativos estabelecem a conexo e, ento, um
computador reinicia. Embora o protocolo no computador que reinicia tenha conhecimento da
conexo, o software no computador que no reiniciou considera a conexo vlida. Mais
importante, pacotes duplicados, que esto atrasados, se tornam um desafio; pois o protocolo tem
que ser hbil para rejeitar os pacotes antes de o computador reiniciar.

17.7 Perda de Pacotes e Retransmisso


Uma das tcnicas mais importantes do TCP a retransmisso. Quando o TCP envia
algum dado, o emissor compensa a perda de pacotes utilizando o esquema de retransmisso.
Ambos os lados de uma comunicao participam. Quando o TCP recebe o dado, este envia uma
mensagem de acknowledgment (reconhecimento) ao emissor. No momento em que o emissor
envia um dado, o TCP inicia um timer. Se o timer expirar antes da mensagem de
acknowledgment (ACK) chegar, o emissor retransmite os dados. A figura abaixo ilustra a
retransmisso de pacote pelo TCP.

A retransmisso pelo TCP a chave para o sucesso do mesmo, pois lida com
comunicaes atravs de redes arbitrrias e permite que mltiplos aplicativos se comuniquem ao
mesmo tempo. A questo : quanto tempo o TCP deve esperar antes de retransmitir?
117/223

Mensagens de acknowledgment de um computador em uma rede local so esperadas em


poucos milissegundos. Esperar muito tempo por uma mensagem de acknowledgment deixa a
rede ociosa e no maximiza a taxa de transferncia. Assim, em uma rede local, o TCP no
dever esperar muito tempo antes de retransmitir. Porm, retransmitir aps poucos
milissegundos no funciona bem em uma conexo a longa distncia (p.e. via satlite), pois o
trfego desnecessrio consumiria toda a largura de banda e diminuiria a taxa de transferncia.
O TCP encontra mais um desafio ao ter que distinguir entre destinatrios remotos ou
locais: uma exploso de datagramas pode causar congestionamento, que causa delays em
transmisses atravs do caminho. De fato, o tempo total necessrio para enviar uma mensagem
e receber o acknowledgment pode aumentar ou diminuir em magnitude da ordem de
milissegundos.

17.8

Retransmisso Adaptativa

Antes de o protocolo TCP ser inventado, os protocolos de transporte usavam um valor


fixo de delay para retransmisso o projetista do protocolo ou administrador da rede escolhia
um valor que fosse grande o suficiente para o delay esperado. Projetistas que trabalhavam no
TCP perceberam que um valor fixo de tempo no operaria bem na Internet. Logo, eles
escolheram por tornar a retransmisso dno TCP adaptativa. Isto , o TCP monitora o delay em
cada conexo, e adapta o timer de retransmisso para acomodar as mudanas nas condies da
rede.
O TCP estima o tempo de delay (round-trip delay) para cada conexo ativa, medindo o
tempo necessrio para obter uma resposta. A toda hora este envia uma mensagem e espera a
resposta da mesma. O TCP grava o tempo de envio e recebimento da resposta, subtrai o tempo
do envio, e assim tem-se uma estimativa do delay da conexo. Ao mesmo tempo em que o TCP
envia pacotes e recebe mensagens de acknowledgment, o TCP gera uma seqncia de
estimativas de tempo de delay, e utiliza uma funo estatstica para gerar a mdia de tempos de
sobrecarregamento. Alm do tempo de sobrecarregamento, o TCP armazena uma estimativa de
variao, e utiliza uma combinao linear para estimar a mdia e a variao, como valores para
retransmisso.
Usando a ajuda a variao o TCP reage rapidamente quando o delay aumenta devido a
uma exploso de pacotes. Usando o tempo de sobrecarregamento, o TCP reinicia o tempo de
retransmisso, se o delay retorna a um valor menor aps a exploso de pacotes. Quando o delay
permanece constante, o TCP ajusta o tempo de sada de retransmisso para um valor um pouco
maior que a mdia do tempo de resposta. Quando o delay comea a variar, o TCP ajusta o
tempo de retransmisso para um valor maior que a mdia do recebimento de mensagens de
acknowledgment.

17.9 Comparao de Tempos de Retransmisso


Para entender como a retransmisso adaptativa ajuda o TCP a maximizar o rendimento
em cada conexo, considere o caso de perda de pacotes em duas conexes que tm tempos de
respostas diferentes. A figura a seguir ilustra o trfego em cada conexo.

118/223

Como a figura mostra, o TCP configura o tempo de retransmisso para ser um pouco
maior que a mdia dos tempos de resposta. Se o delay grande, o TCP utiliza um tempo grande
de retransmisso; se o delay pequeno, o TCP utiliza um tempo pequeno de retransmisso. A
meta esperar um tempo suficiente para determinar se um pacote se perdeu ou no, sem esperar
mais tempo do que o necessrio.

17.10 Buffers e Controle de Fluxo


O TCP utiliza um mecanismo conhecido como janela (window) para controlar o fluxo
de dados. Quando uma conexo estabelecida, cada ponto da conexo aloca um buffer para
armazenar os dados que chegam, e envia uma mensagem para a outra ponta dizendo qual o
tamanho do buffer que a mesma alocou. Com a chegada dos dados, o receptor envia a
mensagem de acknowledgment, que tambm especifica o tamanho restante de buffer. O espao
total disponvel no buffer chamado de janela (window) e a notificao que especifica o
tamanho chamado de aviso de janela (window advertisement). O receptor envia o aviso de
janela com cada acknowledgment.
Se o aplicativo que recebe os dados pode ler os dados na mesma rapidez com que
chegam, o receptor ir enviar um aviso de janela positivo com cada acknowledgment. Porm, se
o emissor operar mais rpido que o receptor, os dados que chegam acabaro completando todo
espao de buffer, e o receptor ir enviar uma mensagem de aviso conhecida como zero window.
Quando o emissor recebe a mensagem de aviso zero window, o mesmo deve parar de enviar
dados at que receba uma mensagem de janela positiva. A figura a seguir ilustra os avisos de
janela.

119/223

17.11 Three-Way Handshake


Para garantir que as conexes estejam estabelecidas ou realmente finalizadas, o TCP
utiliza o 3-way handshake, no qual temos trs mensagens trocadas. Os cientistas provaram que a
troca das trs mensagens necessria e suficiente para evitar comunicaes ambguas, apesar da
perda de pacotes, duplicao e delay.
O TCP utiliza o termo syncronization segment (SYN segment) para descrever as
mensagens do three-way handshake que criam conexo; e o termo FIN segment (abreviao
para finish) para descrever a mensagem do three-way handshake que finaliza uma conexo. A
figura abaixo ilustra o three-way handshake usado para finalizar uma conexo.

Uma parte do three-way handshake usado para criar uma conexo requer que cada
ponto da conexo gere uma seqncia aleatria de 32 bits. Se um aplicativo tenta estabelecer
uma nova conexo aps o computador reiniciar, o TCP ir escolher uma nova seqncia
aleatria de 32 bits. Como cada nova conexo recebe esta seqncia aleatria, um par de
120/223

aplicativos que use o TCP pode fechar a conexo, estabelecer uma nova conexo e no ter
interferncia de pacotes duplicados ou de delay.

17.12 Controle de Congestionamento


Na maioria das redes modernas, a perda de pacotes (ou delay extremo) tem com causa
mais freqente o congestionamento, ao invs das falhas de hardware. Os protocolos de
transporte que retransmitem em excesso podem aumentar o problema de congestionamento ao
adicionar cpias de mensagens na rede. Se o congestionamento aciona retransmisses, o sistema
pode alcanar um estado de colapso de congestionamento, anlogo a um engarrafamento em
uma estrada. Para evitar o problema, o TCP utiliza a perda de pacotes como medida de
congestionamento, e responde pela diminuio da taxa no momento que retransmite os dados.
Quando uma mensagem se perde, o TCP comea o controle de congestionamento. Ao
invs de retransmitir dados suficientes para encher o buffer do receptor, o TCP comea
enviando uma nica mensagem contendo dados. Se o acknowledgement chega sem perdas, o
TCP dobra a quantia de dados a serem enviados e envia duas mensagens adicionais. Se o
acknowledgement de ambas as mensagens chegar, o TCP envia quatro mensagens, e assim por
diante. O crescimento exponencial continua at que o TCP esteja enviando metade do tamanho
da janela do receptor.
O controle de congestionamento do TCP responde bem ao aumento de trfego na rede.
Por recuar rapidamente, o TCP hbil em aliviar o congestionamento. Mais importante, por
causa disso, evita-se retransmisses adicionais que congestionariam a rede, e o esquema de
controle ajuda, ento, na preveno do colapso de congestionamento.

17.13 Formato do Segmento TCP


O TCP utiliza um nico formato para todas as mensagens, incluindo mensagens de
dados, acknowledgements e mensagens de three-way handshake usadas para criar e terminar
uma conexo. No TCP usamos o termo segmento para referir a uma mensagem. A figura abaixo
apresenta o formato do segmento.

Para entender o formato do segmento TCP, necessrio lembrar que a conexo TCP
tem dois pontos finais e dois fluxos de dados, um em cada direo. Se os aplicativos em cada
ponto enviam dados simultaneamente, o TCP pode enviar um nico segmento contendo o
acknowledgement para os dados que chegam; o aviso de janela, que especifica o tamanho
adicional de buffer disponvel para os dados que chegaro, e os dados que esto de sada.
121/223

Assim, alguns campos no segmento referem-se aos dados que seguem na direo direta,
enquanto outros campos se referem aos dados que viajam na direo oposta.
Quando o computador envia um segmento, os campos ACKNOWLEDGMENT
NUMBER e WINDOW se referem aos dados que chegam: o ACKNOWLEDGMENT NUMBER
especifica a seqncia de nmeros dos dados que so recebidos, e WINDOW especifica o quanto
de espao est disponvel no buffer para receber dados. O campo SEQUENCE NUMBER se
refere aos dados que so enviados. Ele d uma seqncia numrica para os dados que esto
sendo transportados no segmento. O receptor utiliza a seqncia de nmeros para reordenar os
segmentos que chegam fora da ordem e para computar o nmero do acknowledgement. O
campo DESTINATION PORT identifica qual aplicativo no computador receptor dever receber
os dados, enquanto o campo SOURCE PORT identifica a porta especfica do aplicativo que
enviou os dados. Finalmente, o campo CHECKSUM contm a soma dos bits, abrangendo o
cabealho e os dados.

122/223

Captulo 18 Interao Cliente-Servidor

18.1 Introduo
Este captulo inicia em um novo assunto e foca principalmente nas aplicaes de rede.
Captulos e sees anteriores forneceram um embasamento geral e necessrio para entender
como aas aplicaes utilizam as redes. Explicaram o hardware usado em LANs e WANs,
mostraram como redes heterogneas podem se interconectar, e examinaram os protocolos
usados para tornar possvel o transporte confivel atravs da Internet. A combinao de
hardwares de rede e protocolos resulta em uma infra-estrutura de comunicao com um
propsito geral que permite que os programas de aplicao em um par arbitrrio de
computadores possam se comunicar. Em todo o captulo vamos assumir que tal infra-estrutura
est pronta e preparada. Em particular, assumiremos que o protocolo e a informao de
roteamento necessria esto disponveis em todos os computadores (por exemplo, todos os
computadores esto conectados a redes que estejam funcionando).
Os captulos dessa seo focam nos servios de alto nvel disponveis na Internet e em
softwares de aplicao que fornecem tais servios. O texto explica os princpios, as tcnicas, e a
interface de programao utilizada para se produzir as aplicaes de rede, assim como a
estrutura do software. Muitos captulos contm exemplos de aplicaes populares. Alm da
caracterizao do servio que a aplicao fornece, cada captulo descreve a estrutura do
software e mostra como a aplicao usa a comunicao virtual da rede.
Este captulo apresenta ainda o conceito fundamental que forma a base para todas as
aplicaes de rede: a Interao Cliente-Servidor. O captulo examina o modelo Cliente-Servidor
bsico e descreve como a necessidade da interao Cliente-Servidor aparece, e de que maneira
os protocolos de rede operam nessa arquitetura. Captulos futuros expandiram a discusso,
mostrando como as aplicaes utilizam o paradigma Cliente-Servidor.

18.2 As Funcionalidades que o Software de Aplicao Fornece


Embora as conexes de fsicas das redes e os protocolos de comunicao sejam
obrigatrios para a comunicao atravs da Internet, a funcionalidade mais interessante e til
provida pelo software de aplicao. As aplicaes fornecem os servios de alto nvel os quais
so utilizados pelo usurio, e determinam como os usurios enxergam as capacidades da
Internet. Por exemplo, softwares de aplicao tornam possvel a troca de mensagens eletrnicas,
a visualizao de arquivos de informao, ou a transferncia de uma cpia de um arquivo entre
computadores.
Aplicaes determinam o formato no qual a informao mostrada e os mecanismos
que os usurios tm para selecionar ou acessar essas informaes. Mais importante ainda, que
as aplicaes definem nomes simblicos usados para identificar tanto fontes fsicas, como
abstratas disponveis na rede. Por exemplo, softwares de aplicao definem nomes para
computadores e dispositivos I/O, como as impressoras, assim como definem nomes para itens
abstratos como arquivos, caixas de entrada eletrnicas e bancos de dados. Tais nomes
simblicos possibilitam aos usurios especificar ou encontrar informaes ou servios sem ter
de entender ou lembrar os endereos de baixo nvel usados pelo protocolo base. De fato, a
maioria dos usurios da Internet acessa remotamente computadores pelo nome um usurio
nunca precisa saber o endereo IP de um computador. Similarmente, um usurio pode acessar
um servio pelo nome sem ter de conhecer o nmero interno utilizado pelo protocolo para
identific-lo. Softwares de aplicao lidam com os detalhes da traduo dos nomes simblicos
para os valores numricos equivalentes automaticamente.

123/223

18.3 As Funcionalidades Providas pela Internet


A Internet prov uma infra-estrutura geral de comunicao sem especificar quais
servios oferecer, quais computadores iro rodar tais servios, como a disponibilidade dos
servios se tornaro conhecidas, ou como os servios sero utilizados essas questes so
deixadas para a aplicao e para os usurios. De fato, a Internet muito parecida com um
sistema telefnico. Mesmo que ela promova a habilidade de se comunicar, a Internet no
especifica como os computadores interagem ou o que tais computadores fazem com o servio de
comunicao.
Uma Internet como um sistema telefnico com um outro aspecto interessante
protocolos no sabem quando iniciar um contato, ou quando aceitar uma tentativa de
comunicao de um computador remoto. Ao invs disso, como no servio telefnico, a
comunicao atravs da Internet requer um par de programas para auxiliar a conexo remota.
Uma aplicao em um dos computadores tenta se comunicar com uma aplicao em outro
computador (anlogo ao se fazer uma ligao telefnica), e uma aplicao no outro computador
responde ao pedido.

18.4 Fazendo Contato


Apesar das similaridades entre a comunicao via Internet e as ligaes telefnicas, h
uma diferena importante entre o modo como duas aplicaes usam a Internet e o modo como
duas pessoas usam o sistema telefnico. A diferena que o protocolo no possui um
mecanismo anlogo campainha do telefone no existe um modo do protocolo informar
aplicao de que uma tentativa de comunicao tenha chegado, e tambm no h um modo da
aplicao concordar em aceitar mensagens arbitrrias.
Se no dado sinal algum, como uma aplicao pode saber quando uma tentativa de
comunicao chegou? A resposta est em um mtodo de interao que difere do modelo
telefnico. Ao invs de esperar por uma mensagem arbitrria chegar, uma aplicao que
aguarda a comunicao deve interagir com o protocolo antes que a fonte externa tente se
comunicar. A aplicao informa ao protocolo local que um tipo especfico de mensagem
esperado, e ento a aplicao aguarda. Quando uma mensagem que chega exatamente
compatvel com a especificao da aplicao, o protocolo repassa a mensagem para aquela
aplicao. claro que ambas as aplicaes envolvidas em uma comunicao no podem esperar
pela chegada de uma mensagem uma aplicao deve iniciar a interao, enquanto a outra
espera passivamente.

18.5 O Paradigma Cliente-Servidor


O paradigma da disposio de um programa de aplicao em aguardar passivamente por
outra aplicao o incio da comunicao utiliza tanto o processamento distribudo do
computador, que recebeu o nome: Paradigma de Interao Cliente-Servidor.
Os termos cliente e servidor referem-se a duas aplicaes envolvidas em uma
comunicao. A aplicao que ativamente inicia o contato chamada de cliente, enquanto que a
aplicao que espera passivamente pelo contato chamada de servidor.

18.6 Caractersticas de Clientes e de Servidores


Embora existam pequenas variaes, a maior parte das interaes Cliente-Servidor tem
as mesmas caractersticas gerais. Em geral, um software cliente um programa de aplicao
arbitrrio que se torna cliente temporariamente quando o acesso remoto necessrio, mas
tambm executa outros processos localmente. Pode-se elencar algumas caractersticas do
processo cliente:
124/223

iniciada diretamente por um usurio, que executa apenas uma seo por vez;
roda localmente em um computador pessoal do usurio;
inicia efetivamente o contato com um servidor;
pode acessar quantos servios forem necessrios, mas contata efetivamente com o
acesso a um servidor por vez;
no requer hardware especial ou sistema operacional sofisticado.
J um servidor:

um programa especialmente dedicado a prover um servio, mas lidar com mltiplos


clientes remotos ao mesmo tempo;
iniciado automaticamente na inicializao do sistema, e continua a ser executado em
vrias sees;
roda em um computador compartilhado com mltiplos acessos simultneos (por
exemplo, contrrio a um computador pessoal de um usurio);
espera passivamente pelo contato de clientes remotos arbitrrios;
aceita contato de clientes arbitrrios, mas oferece um servio especfico;
requer hardware de alto desempenho e de um sistema operacional sofisticado.

18.7 Programas Servidores e Computadores da Classe de


Servidores
O termo servidor pode causar confuso algumas vezes. Formalmente, o termo se refere
a um programa que espera passivamente por comunicao, e no especificamente do
computador no qual est rodando. Entretanto, quando um computador dedicado a um ou mais
programas servidores, o prprio computador s vezes (erroneamente) chamado de servidor.
Vendedores de hardware contribuem para essa confuso, porque eles classificam computadores
que tem CPUs rpidas, grandes memrias e sistemas operacionais poderosos como mquinas
servidoras.
Aderimos terminologia cientfica correta e usamos o termo servidor para nos
referirmos aos programas e no aos computadores. O termo computadores da classe de
servidores refere-se a computadores poderosos usados para rodar um software servidor.

18.8 Pedidos, Respostas e Direo do Fluxo de Dados


A informao pode passar em uma ou ambas as direes entre um cliente e um servidor.
Tipicamente, um cliente envia um pedido ao servidor, e o servidor retorna uma resposta ao
cliente. Em alguns casos, o cliente envia uma srie de pedidos e o servidor emite uma srie de
respostas (por exemplo, um cliente de banco de dados pode permitir que um usurio procure por
mais de um item por vez). Em outros casos, o servidor envia dados continuamente sem qualquer
pedido assim que um cliente contate tal servidor, ele comea a enviar os dados (por exemplo,
um servidor de servios metereolgicos pode enviar continuamente informaes do tempo,
temperatura e presso atmosfricas atualizadas).
importante entender que os\servidores podem aceitar informaes que chegam, assim
como entregar informao. Por exemplo, a maioria dos servidores de arquivos configurada
para exportar um conjunto de arquivos aos clientes. Isto , um cliente envia um pedido que
contm o nome do arquivo e o servidor responde enviando uma cpia do arquivo. Mas um
servidor de arquivos pode tambm ser configurado para importar arquivos (por exemplo, para
permitir que um cliente envie a cpia de um arquivo, o qual o servidor aceita e guarda no disco).

125/223

18.9 Protocolos de Transporte e Interao Cliente-Servidor


Como a maioria dos programas de aplicao, o cliente e o servidor usam o protocolo de
transporte para se comunicar. Por exemplo, a figura abaixo ilustra um cliente e um servidor
utilizando a pilha TCP/IP:

Cliente

Servidor

Transporte

Transporte

Internet

Internet

Interface de rede

Interface de rede
Internet

Como a figura mostra, aplicaes do cliente ou do servidor interagem diretamente com


um protocolo da camada de transporte para estabelecer a comunicao e para enviar e receber
mensagens individuais. Por isso, um computador precisa da pilha completa dos protocolos para
rodar tanto um cliente como um servidor.

18.10 Mltiplos Servios num Computador


Um sistema computacional suficientemente robusto pode atender vrios clientes e e
atuarem como servidores ao mesmo tempo. Duas potencialidades so requeridas. Primeira, o
computador deve ter recursos de hardware suficientes (por exemplo, um processador rpido e
muita memria). Segundo, o computador deve ter um sistema operacional que permita que
mltiplos programas de aplicao possam ser executados simultaneamente (por exemplo, o
sistema UNIX ou Windows). Nesses sistemas, um programa servidor roda para cada servio
oferecido. Por exemplo, um nico computador pode rodar um pedido de solicitao de arquivo
ou executar um programa Web. A figura ilustra um arranjo possvel.

126/223

Cliente1

Servidor1

Servidor2

Cliente2

Transporte

Transporte

Transporte

Internet

Internet

Internet

Interface rede

Interface rede

Interface rede

Internet

A figura ilustra clientes em dois computadores acessando dois programas servidores


(um terceiro computador). Embora o computador possa operar como mltiplos servidores, o
computador precisa de uma s conexo fsica com a Internet.
Permitindo que um computador opere com mltiplos servidores til, pois o hardware
pode ser compartilhado entre os mltiplos servios. Condensando vrios servidores em um
maior tambm ajuda a reduzir as despesas com o sistema de administrao, porque isso resulta
em menos sistemas computacionais para se administrar. Mais importante, a experincia mostra
que a demanda por um servidor freqentemente espordica um dado servidor pode
permanecer sem atividade por longos perodos de tempo. Um servidor sem atividade no utiliza
a CPU do computador enquanto espera pela chegada de um pedido. Por isso, se a demanda por
servios baixa, condensar servidores em um nico computador pode reduzir dramaticamente
os custos, sem reduzir o desempenho significativamente.

18.11 Identificando um Servio Particular


Protocolos de transporte fornecem o mecanismo que permite a um cliente especificar
qual servio desejado. O mecanismo destina a cada servio um identificador nico e requer a
ambos, o servidor e o cliente, o uso de tal identificador. Quando o servidor inicia uma execuo,
ele registra no protocolo local especificando o identificador para aquele servio que ele oferece.
Quando um cliente contata um servidor remoto, o cliente especifica o identificador do servio
desejado. O protocolo de transporte na mquina cliente envia o identificador mquina
servidora quando faz um pedido. O protocolo de transporte na mquina servidora usa o
identificador para determinar qual programa dever lidar com aquele pedido.
Como exemplo de identificao de servio, considere o Protocolo de Controle de
Transporte (TCP) j descrito. O TCP usa valores inteiros de 16 bits, conhecidos como Nmeros
de Porta do Protocolo, para identificar servios e designa um nico nmero de porta para cada
servio. Um servidor especifica o nmero da porta para o servio oferecido e ento espera
passivamente pela comunicao. O cliente especifica o nmero da porta do servio desejado
quando envia o requerimento. Ento, o TCP presente, no computador servidor usa o nmero da
porta na mensagem para determinar qual servidor deve receber aquele pedido.

18.12 Mltiplas Cpias de um Servidor para um s Servio


Tecnicamente, um sistema computacional que permita que mltiplos programas de
aplicao sejam executados ao mesmo tempo suportam a concorrncia (Concurrency) e um
programa que tenha mais de um controle de thread chamado de Programa Concurrency.
127/223

Concurrency fundamental no modelo cliente-servidor, porque um servidor concorrente


oferece servio a mltiplos clientes ao mesmo tempo, ou seja, nenhum cliente tem que esperar
outro cliente terminar de usar um mesmo servio.
Para entender como o servio simultneo importante, considere o que acontece se um
servio requer um tempo significativo para atender cada pedido. Por exemplo, um servio de
transferncia de arquivos permite que um cliente obtenha uma cpia de um arquivo remoto: o
cliente envia o nome do arquivo no pedido e o servidor retorna uma cpia do mesmo. Se o
cliente pedir um arquivo pequeno, o servidor pode envi-lo por inteiro em alguns
milissegundos. Entretanto, um servidor pode precisar de muitos minutos para transferir um
arquivo que contenha um conjunto de imagens digitais de alta resoluo.
Se um servidor de arquivos lidar com um pedido por vez, todos os clientes devem
esperar, enquanto o servidor transfere arquivos para um deles. Em contra partida, um servidor
concorrente pode lidar com mltiplos clientes simultaneamente. Quando um pedido chega, o
servidor designa uma thread que possa execut-lo concorrentemente a outras threads j
existentes. Em essncia, uma cpia em separado do servidor lida com cada pedido. Por isso,
pedidos pequenos podem ser atendidos rapidamente, sem ter que esperar pelo trmino de
pedidos mais longos.

18.13 Criao Dinmica do Servidor


A maioria dos servidores concorrentes opera dinamicamente. O servidor cria uma nova
thread para cada pedido que chega. De fato, o programa do servidor construdo em duas
partes: uma aceita os pedidos e cria uma nova thread para o mesmo, e outra, que consiste no
cdigo que lida com cada pedido individualmente. Quando um servidor comea a execuo,
somente a primeira parte executada. Isto , a thread principal do servidor espera pela chegada
de um pedido. Quando um pedido chega, a thread principal cria uma nova thread de servio para
lidar com o mesmo. A thread de servio lida com o pedido e ento fechada. Enquanto isso, a
thread principal mantm o servidor ativo depois de criar uma thread para lidar com um
pedido, a thread principal espera pela chegada de outro pedido.

18.14 Protocolos de Transporte e Comunicao No Ambgua


Se mltiplas cpias de um servidor existem, como um cliente pode interagir com a
cpia correta? E mais ainda, como um pedido pode ser transmitido para a cpia correta do
servidor? A resposta para estas questes est no mtodo que o protocolo de transporte utiliza
para identificar um servidor. Dissemos que a cada servio designado um identificador nico, e
que cada pedido de um cliente inclui um identificador de servio, tornando possvel para o
protocolo de transporte presente no computador do servidor associar um pedido com o servidor
correto. Na prtica, a maioria dos protocolos de transporte designa cada cliente com um
identificador nico e exige que o cliente inclua esse identificador quando fizer um pedido. O
protocolo de transporte presente no computador servidor usa tanto o identificador do cliente
como o do servidor para escolher a cpia do servidor que foi criada para lidar com aquele
cliente.
Como exemplo, considere os identificadores utilizados em uma comunicao TCP. O
TCP requer que cada cliente escolha um nmero de porta local que no esteja designada para
outro servio. Quando ele envia um segmento TCP, o cliente deve colocar o seu nmero de
porta local no campo Porta de Origem e o nmero de porta do servidor no campo Porta de
Destino. No computador servidor, o TCP usa a combinao dos nmeros de porta de origem e
de destino (como os endereos IP do cliente e do servidor) para identificar uma comunicao
particular. Por isso, mensagens podem chegar de dois ou mais cliente para um mesmo servio
sem causar problemas. O TCP transmite cada segmento para a cpia do servidor que tenha
concordado em atender o cliente.

128/223

18.15 Conexo-Orientada e Transporte Sem Conexo


Protocolos de transporte suportam duas formas bsicas de comunicao: com conexo
orientada ou sem conexo. Para utilizar um protocolo de transporte com conexo, as duas
aplicaes devem estabelecer uma conexo e ento enviar os dados atravs da conexo. Por
exemplo, o TCP prov uma interface de conexo orientada para as aplicaes. Quando elas
usam o TCP, a aplicao deve primeiramente requisitar ao TCP a abertura de uma conexo com
outra aplicao. Uma vez estabelecida a conexo, as duas aplicaes podem trocar dados.
Quando as aplicaes terminam a comunicao, a conexo deve ser fechada.
A alternativa para a comunicao com conexo orientada a interface sem conexo, que
permite que uma aplicao envie uma mensagem para qualquer destino a qualquer hora. Quando
se utiliza um protocolo de transporte sem conexo, a aplicao de origem deve especificar o
destino de cada mensagem que envia. Por exemplo, na pilha de protocolos TCP/IP, o User
Datagram Protocol (UDP) prov transporte sem conexo. Uma aplicao que utiliza o UDP
pode enviar uma seqncia de mensagens, onde cada mensagem enviada a um destino
diferente.
Clientes e servidores usam tanto protocolos de conexo orientada quanto protocolos
sem conexo para se comunicar. Quando utilizam transporte com conexo orientada, o cliente
primeiramente estabelece uma conexo com um servidor especfico. A conexo ento se
mantm estvel, enquanto o cliente envia pedidos e recebe respostas. Quando ele termina de
usar o servio, o cliente fecha a conexo.
Clientes e servidores que usam protocolos sem conexo trocam mensagens individuais.
Por exemplo, muitos servios que usam transporte sem conexo requerem um cliente para
mandar cada pedido em uma nica mensagem e um servidor para retornar cada resposta em
mensagens individuais.

18.16 Um Servio Atravs de Vrios Protocolos


Servidores no precisam escolher entre transporte com ou sem conexo; possvel
oferecer ambos. Isto , o mesmo servio pode estar disponvel atravs de dois ou mais
protocolos de transporte, deixando a escolha do tipo de transporte para o cliente fazer.
Permitindo o uso de vrios protocolos de transporte, aumenta-se a flexibilidade por tornaar o
servio disponvel a clientes que no tem acesso a um protocolo de transporte em particular.
Existem duas implementaes possveis de servidores multi-protocolos. A primeira
implementao direta: dois servidores existem para o mesmo servio. Um servidor utiliza
transporte sem conexo, enquanto o outro usa transporte com conexo orientada. A segunda
implementao mais complexa: um s programa do servidor interage com dois ou mais
protocolos de transporte ao mesmo tempo. O servidor aceita pedidos de qualquer tipo de
protocolo suportado e utiliza o protocolo do pedido para enviar a resposta.

129/223

18.17 Interaes Complexas Cliente-Servidor


Algumas das funcionalidades mais interessantes e teis das aplicaes entre cliente e
servidor surgem de interaes arbitrrias entre os clientes e os servidores. Em particular,
importante destacar:

uma aplicao cliente no est restrita ao acesso apenas a um nico servio. Uma s
aplicao pode primeiramente se tornar cliente de um servio e depois se tornar cliente
de outro. O cliente contata um servidor diferente (talvez at em um computador
diferente) para cada servio;

uma aplicao no est restrita ao acesso a um nico servidor para um dado servio. Em
alguns servios, cada servidor fornece informaes diferentes s informaes de outros
servidores rodando em outros computadores. Por exemplo, um servidor de datas pode
prover hora certa e data do computador onde ele est rodando. Um servidor em um
computador em um fuso horrio diferente fornecer uma resposta diferente. Em outros
servios, todos os servidores podem fornecer a mesma informao. Nesses casos, um
cliente pode enviar um pedido para vrios servidores para aumentar a performance o
cliente utiliza a informao enviada pelo servidor que responder primeiro;

Um servidor no est restrito a executar interaes alm daquelas de cliente-servidor


um servidor de um servio pode se tornar cliente de outro. Por exemplo, um servidor de
arquivos, que precise da hora que um arquivo foi acessado, pode se tornar cliente de um
servidor de horrios. Isto , enquanto ele est lidando com um pedido de um arquivo, o
servidor de arquivos envia um pedido ao servidor de horrios, espera a resposta e,
ento, continua a lidar com o pedido do arquivo.

18.18 Interaes e Dependncias Circulares


claro, servidores devem ser planejados cuidadosamente para evitar dependncias
circulares. Para entender os problemas que podem aparecer, considere um servidor de arquivos
que utilize um servidor de horrios para obter o horrio atual sempre que um arquivo seja
acessado. Uma dependncia circular pode ocorrer se o servidor de horrio tambm utilizar o
servidor de arquivos. Por exemplo, suponha que um programador seja chamado para modificar
o servidor de horrios para que ele mantenha um registro de cada pedido. Se o programador
escolher o servidor de horrios como um cliente do servidor de arquivos, um ciclo pode
aparecer: o servidor de arquivos se torna cliente do servidor de horrios, o qual se torna cliente
do servidor de arquivos e assim por diante. O resultado um desastre anlogo a um loop infinito
dentro de um programa.
Embora dependncias entre pares de servidores possam ser facilmente vistas e evitadas,
um conjunto grande de dependncias pode no ser to bvio. Imagine um ciclo de dependncias
que inclua uma dzia de servidores, cada um operando em um computador diferente. Se cada
servidor for mantido por um programador diferente, as dependncias entre eles podem ser
difceis de identificar.

130/223

Captulo 19 A Interface Socket


19.1 Introduo
Este captulo fornece detalhes adicionais sobre a interao cliente-servidor, explicando a
interface entre o aplicativo e o protocolo. O captulo explica como um aplicativo utiliza o
protocolo para se comunicar, e mostra um exemplo de um conjunto de procedimentos que o
aplicativo utiliza para se tornar cliente ou servidor para contatar um destinatrio ou transferir
dados.

19.2 Application Program Interface


Os aplicativos no cliente e no servidor utilizam os protocolos de transporte para se
comunicarem. Quando h interao com o protocolo, o aplicativo dever especificar os detalhes
do lado cliente e do lado servidor. Adicionalmente, os aplicativos que se comunicam devem
especificar tambm detalhes de quais dados o emissor vai enviar; e o receptor deve especificar
onde os dados recebidos devem ser armazenados.
A interface que o aplicativo utiliza quando interage com o protocolo de transporte
conhecida como Application Program Interface (API). O API define um conjunto de operaes
que o aplicativo pode realizar quando interage com o protocolo. Assim, o API determina qual
funcionalidade est disponvel para o aplicativo, bem como a dificuldade de criao do
programa no uso dessa funcionalidade.
A maioria dos sistemas de programao define o API como um conjunto de
procedimentos que o aplicativo pode chamar e os argumentos que cada procedimento exige.
Usualmente, o API contm procedimentos separados para cada operao bsica. Por exemplo, o
API pode ter um procedimento que utilizado para estabelecer a comunicao e outro
procedimento para enviar os dados.

19.3 O Socket API


Um protocolo de comunicao no especifica um API para os aplicativos interagirem
com os protocolos. Ao invs disso, o protocolo especifica as operaes gerais que devem ser
fornecidas, e permite que cada sistema operacional defina um API especfico usado para realizar
as operaes. Assim, os protocolos podem sugerir uma operao necessria para permitir ao
aplicativo enviar dados, e o API especifica o nome exato da funo e o tipo de cada argumento.
Embora o padro para criao de protocolos permita que os projetistas do sistema
operacional escolham um API, muitos adotaram o Socket API. O Socket API disponvel para
vrios sistemas operacionais, incluindo sistemas utilizados em computadores pessoais
(Windows), bem como para vrios sistemas UNIX (como o Solaris da Sun Microsystems).
O socket API originou-se como parte do sistema operacional BSD UNIX. O trabalho foi
apoiado por uma concesso governamental, sobre a qual a Universidade da Califrnia, em
Berkeley, desenvolveu e distribuiu uma verso do UNIX que continha os protocolos de ligao
TCP/IP. Muitos vendedores de computadores portaram o sistema BSD nos hardwares, e usaram
isto como produto bsico do sistema operacional. Assim, o Socket API se tornou de fato o
padro da indstria.

131/223

19.4 Sockets and Socket Libraries


Com o uso maior dos sockets (Socket API), os fornecedores de outros sistemas
operacionais decidiram adicionar o socket API aos seus sistemas. Em muitos casos, ao invs de
modificarem os seus sistemas operacionais, os fornecedores criaram a socket library, que
fornece o socket API.
Do ponto de vista do programador, a socket library fornece a mesma semntica de
implementao de sockets no sistema operacional. O programa chama os procedimentos do
socket, que so ou supridos pelos procedimentos do sistema operacional ou pela biblioteca de
rotinas. Assim, um aplicativo que usa socket pode ser copiado para um novo computador,
compilado, carregar a biblioteca de socket do computador e, ento, ser executado o cdigo
base no precisa ser mudado quando se altera o programa de um computador para outro.
A socket library tem uma implementao completamente diferente do socket API
nativo, suprido pelo sistema operacional. Diferentemente das rotinas do socket nativo, o cdigo
dos procedimentos da socket library so ligados dentro do aplicativo e reside no espao de
endereos do aplicativo. Quando o aplicativo chama um procedimento da socket library, o
controle passa para a biblioteca, e a rotina reveza em turno uma ou mais chamadas s funes
bsicas do sistema operacional para alcanar o efeito desejado. Funes fornecidas pelo sistema
operacional bsico no precisam se parecer totalmente com o socket API rotinas na socket
library escondem o sistema operacional nativo do aplicativo e apresentam apenas a interface
socket.

19.5 Comunicao Socket e UNIX I/O


Como os sockets foram originalmente desenvolvidos como parte do sistema
operacional UNIX, os sockets utilizam muitos conceitos encontrados em outras partes do
UNIX. Em particular, os sockets foram integrados com o I/O. Assim, para entender os sockets
precisamos entender as facilidades do UNIX I/O.
O UNIX utiliza o paradigma abri-ler-escrever-fechar (open-read-write-close) para
todos os I/O. Por exemplo, um aplicativo deve primeiro chamar a rotina open para acessar o
arquivo. O aplicativo ento utiliza read ou write para ler os dados ou armazenar dados no
arquivo. Finalmente, o aplicativo usa a rotina close para especificar que j acabou de usar o
arquivo.
Quando o aplicativo abre um arquivo ou componente, a rotina open retorna um
descriptor, um pequeno nmero inteiro que identifica o arquivo; o aplicativo deve especificar o
descriptor quando requisitar a transferncia de dados. Por exemplo, se um aplicativo utiliza o
open para acessar um arquivo chamado foobar, o procedimento de abrir o arquivo retorna o
descriptor 4. Na subseqente ao write, que especifica o descriptor 4, ir escrever dados em
foobar; ou seja, o nome do arquivo no aparece na rotina write.

19.6 Sockets, Descritores e Network I/O


Antes de um aplicativo utilizar os protocolos para se comunicarem, o aplicativo deve
requisitar ao sistema operacional a criao de um socket que ser utilizado na comunicao. O
sistema ir retornar um pequeno nmero inteiro, o descriptor que ir identificar o socket. O
aplicativo ento passa o descriptor como argumento quando chama os procedimentos para
transferir os dados atravs da rede; o aplicativo no necessita especificar detalhes sobre o
destinatrio remoto cada vez que for transferir dados.
Em uma implementao UNIX, os sockets so completamente integrados com os outros
dispositivos I/O. O sistema operacional fornece um conjunto nico de descritores para os
arquivos, componentes, processos internos e comunicao em rede. Como resultado,
procedimentos como read e write so completamente gerais um aplicativo pode utilizar o
132/223

mesmo procedimento para enviar dados para outro programa, arquivo, ou atravs da rede. Na
terminologia atual, o descritor representa um objeto, e o procedimento write representa o
mtodo aplicado ao objeto.
A vantagem principal deste sistema a flexibilidade: um nico aplicativo para gravar os
dados pode transferir dados para um local arbitrrio. Se o aplicativo recebe um descritor que
corresponde a um componente, o aplicativo ir enviar dados ao componente. Se o aplicativo
recebe um descritor que corresponde a um arquivo, o aplicativo ir armazenar dados no arquivo.
Se o aplicativo recebe um descritor que corresponde a um socket, o aplicativo enviar dados
atravs da rede para um computador remoto.

19.7 Parmetros e o Socket API


A programao de sockets difere do sistema convencional I/O porque um aplicativo
deve especificar vrios detalhes para usar o socket. Por exemplo, um aplicativo deve escolher
um protocolo de transporte em particular, fornecer o endereo de protocolo de um computador
remoto, e especificar quando o aplicativo cliente ou servidor. Para acomodar todos os
detalhes, cada socket tem muitos parmetros e opes o aplicativo pode fornecer valores para
todos eles.
Como as opes e parmetros so representados no API? Para evitar que uma nica
funo do socket tenha parmetros separados para cada opo, os projetistas do socket
decidiram definir o API com muitas funes. Em essncia, um aplicativo cria o socket e ento
chama as funes para especificar em detalhes como o socket ser usado. A vantagem que a
maioria das funes tem trs ou menos parmetros; a desvantagem que o programador deve
lembrar de chamar vrias funes quando usa o socket. As prximas sees apresentam o
conceito.

19.8 Procedimentos do Socket API


19.8.1 O Procedimento Socket
O procedimento socket cria um socket e retorna um descritor inteiro:
descriptor = socket(protofamily,type,protocol)
O argumento protofamily especifica a famlia do protocolo que ser usada com o socket.
Por exemplo, o valor PF_INET usado para especificar o protocolo TCP/IP, e PF_DECnet
usado para especificar o protocolo Digital Equipment Corporation.
O argumento type especifica o tipo de comunicao que o socket utiliza. Os dois tipos
mais comuns so as transferncias por conexo-orientada (especificada com o valor
SOCK_STREAM); e a transferncia de mensagem sem conexo orientada (especificada com o
valor SOCK_DGRAM).
O argumento protocol especifica um protocolo de transporte particular usado com o
socket. Tendo o argumento protocol junto ao argumento type, permite que um nico protocolo
adicione dois ou mais protocolos que forneam o mesmo servio. claro, os valores utilizados
no argumento protocol dependem da famlia do mesmo. Por exemplo, embora o protocolo
TCP/IP inclua o protocolo TCP, o protocolo AppleTalk no o contm.

133/223

19.8.2 O Procedimento Close


O procedimento close ordena ao sistema para encerrar o uso do socket. A forma :
close(socket)
onde socket o descritor referente ao socket que ser fechado. Se o socket usado um
protocolo de conexo orientada, o close fecha a conexo antes de fechar o socket. Fechando um
socket imediatamente o uso do mesmo finalizado e o descritor liberado, impedindo o
aplicativo de enviar mais dados; e o protocolo de transporte no ir aceitar mais mensagens
enviadas diretamente ao socket, impedindo o socket de receber mais dados.
19.8.3 O Procedimento Bind
Quando o socket criado, este no tem nem um endereo local nem um endereo
remoto. O servidor utiliza o procedimento bind que fornece um nmero de porta do protocolo
no qual o servidor ir aguardar pelo contato. O bind leva trs argumentos:
bind(socket,localaddr,addrlen)
O argumento socket o descritor do socket que foi criado anteriormente, e que no
esteja limitado; a chamada uma requisio para o socket ser designado para um nmero de
porta do protocolo. O argumento localaddr a estrutura que especifica o endereo local que
ser designado ao socket; e o argumento addrlen um inteiro que especfica o comprimento do
endereo. Como os sockets podem ser usados com protocolos arbitrrios, o formato do endereo
depende do protocolo a ser utilizado. O socket API define uma forma genrica para representar
endereos, e ento solicita que cada famlia de protocolo especifique como a forma geral do
endereo do protocolo.
O formato genrico de se representar um endereo definido com a estrutura sockaddr.
Embora vrias verses fossem liberadas, o ultimo cdigo Berkeley define a estrutura sockaddr
tendo trs campos:
struct sockaddr{
u_char sa_len;
u_char sa_family;
char
sa_data[14];
};

/*tamanho total do endereo*/


/* famlia do endereo */
/* o prprio endereo*/

O campo sa_len consiste em um nico octeto que especifica o tamanho do endereo. O


campo sa_family especifica a que famlia o endereo pertence ( o smbolo constante AF_INET
usado para representar o TCP/IP por exemplo). Finalmente, o campo sa_data contm o
endereo.
Cada famlia de protocolo define o formato exato do endereo no campo sa_data da
estrutura sockaddr. Por exemplo, o protocolo TCP/IP utiliza a estrutura sockaddr_in para definir
o endereo:
struct sockaddr_in{
u_char sin_len;
u_char sin_family;
u_short sin_port;
struct in_addr sin_addr;
char
sin_zero[8]
};

/*tamanho total do endereo*/


/* famlia do endereo */
/* nmero da porta do protocolo*/
/* endereo IP do computador*/
/* no usado - configurado p/ zero*/

134/223

Os dois primeiros campos da estrutura o sockaddr_in correspondem exatamente aos


dois primeiros campos da estrutura genrica sockaddr. Os ltimos trs campos definem
exatamente a forma de endereos que o protocolo TCP/IP espera. Cada endereo identifica
ambos, o computador e o aplicativo em particular no computador. O campo sin_addr contm o
endereo IP do computador, e o campo sin_port contm o nmero da porta do protocolo
referente ao aplicativo. Embora o TCP/IP precise de seis octetos para armazenar um endereo
completo, a estrutura genrica sockaddr reserva catorze octetos. Assim, o campo final na
estrutura sockaddr_in define um campo de oito octetos com zeros.
O servidor chama a rotina bind para especificar o nmero da porta que o servidor ir
aceitar o contato. Porm, junto com o nmero da porta, a estrutura sockaddr_in contm tambm
um campo para o endereo IP. Como o servidor pode escolher o endereo IP quando especifica
o endereo, em um host multi-homed isso pode causar problemas, ou seja, pois vrios endereos
significar que o servidor dever aceitar apenas requisies enviadas por um endereo
especifico. Para permitir que o host opere no modo multi-homed, o socket API inclui uma
constante simblica especial, INADDR_ANY, que permite ao servidor usar uma porta especifica
no endereo especifico IP do computador.
19.8.4 O Procedimento Listen
Aps especificar a porta, o servidor deve instruir o sistema operacional para colocar o
socket no modo passivo, ento ele ir esperar a conexo dos clientes. Para fazer isso, o servidor
chama o procedimento listen, o qual toma dois argumentos:
listen(socket,queusize)
O argumento socket o descritor do socket que foi criado e amarrado a um endereo
local, e o argumento queusize especifica o comprimento da requisio de fila do socket.
O sistema operacional constri requisies de filas separadas para cada socket.
Inicialmente, a fila est vazia. Com a chegada das requisies vindas dos clientes, cada uma
colocada na fila; quando o servidor pede uma resposta da requisio vinda do socket, o sistema
retorna a prxima da fila e assim por diante. Se a fila estiver cheia quando a requisio chega, a
mesma rejeitada. Ter uma fila de requisies, permite ao sistema segurar novas requisies
que chegam enquanto o servidor est ocupado lidando com uma requisio anterior. Os
parmetros permitem que cada servidor escolha o tamanho mximo de fila que apropriado
para o servio esperado.
19.8.5 O Procedimento Accept
Todos servidores comeam chamando o processo socket para criar um socket e bind
para especificar o nmero de porta do protocolo. Aps executar as duas chamadas, o servidor
que usa protocolo de transporte com conexo no orientada est pronto para aceitar mensagens.
J, se o servidor usa protocolo de transporte com conexo orientada, necessrio que o servidor
chame o processo listen para configurar o socket no modo passivo e, ento, aceitar a conexo
requisitada. Uma vez que a conexo for aceita, o servidor pode utilizar a mesma para se
comunicar com um cliente. Aps terminar a comunicao, o servidor fecha a conexo.
O servidor que utiliza o protocolo de transporte com conexo orientada deve chamar o
procedimento accept para aceitar a prxima conexo requisitada. Se a requisio est presente
na fila, o accept tem retorno imediato; se a requisio no tiver chegado, o sistema bloqueia o
servidor at que o cliente forme uma conexo. A chamada accept tem a seguinte forma:
newsock=accept(socket,caddress,caddresslen)
O argumento socket o descritor do socket que foi criado e amarrado a uma porta
especifica do protocolo. O argumento caddress o endereo da estrutura do tipo sockaddr, e
caddresslen um ponteiro para um inteiro.
135/223

O accept preenche os campos do argumento caddress com o endereo do cliente que


formou a conexo, e configura caddresslen para o tamanho do endereo. Finalmente, o accept
cria um novo socket para a conexo, e retorna o descritor para o sistema. O servidor usa o novo
socket para comunicar com o cliente e, ento, fecha o socket quando tiver acabado. No
intervalo, o socket original do servidor mantm-se inalterado aps ter terminado a
comunicao com o cliente, o servidor usa o socket original para aceitar novas conexes de um
cliente.
19.8.6 O Procedimento Connect
Os clientes utilizam o processo connect para estabelecer uma conexo com um servidor
especfico. A forma :
connect(socket,saddress,saddresslen)
O argumento socket o descritor do socket no cliente, utilizado para a conexo. O
argumento saddress a estrutura sockaddr que especifica o endereo do servidor e o nmero da
porta do protocolo. O argumento saddresslen especifica o tamanho do endereo do servidor,
medido em octetos.
Quando o protocolo de transporte com conexo orientada, o connect inicializa a
conexo de transporte de nvel com o servidor especfico. Em essncia, o connect o
procedimento que o cliente usa para conectar ao servidor que estiver utilizando o procedimento
accept.
Quando o cliente utiliza protocolo de transporte com conexo no orientada, este pode
tambm utilizar o connect. De qualquer forma, utilizar o connect no inicia uma conexo ou faz
com que pacotes passem pela rede. O connect meramente marca o socket como connected, e
grava o endereo do servidor.
Para entender o porqu da utilizao do connect em um protocolo de conexo no
orientada, s lembrar que protocolos de conexo no orientada requerem que o emissor
especifique o endereo de destinatrio em cada mensagem. Em muitos aplicativos, todas as
mensagens vo para o mesmo destinatrio. Nestes casos, o socket conectado fornece o endereo
apenas uma vez, ao invs de especificar o endereo em cada mensagem.
19.8.7 Os Procedimentos Send, Sendto e Sendmsg
Os clientes e servidores necessitam ambos de enviar informaes. Usualmente, o cliente
envia uma requisio, e o servidor envia uma resposta. Se o socket est conectado, o
procedimento send pode ser utilizado para transferir dados. O Send tem quatro argumentos:
send(socket,data,length,flags)
O argumento socket o descritor do socket usado, o argumento data o endereo de
memria dos dados que sero utilizados, o argumento length um inteiro que especifica o
nmero de octetos dos dados, e o argumento flags contm os bits que solicitam opes
especiais.
Os procedimentos sendto e sendmsg permitem ao cliente ou servidor enviar uma
mensagem com um socket que esteja desconectado; ambos solicitam ao emissor que o mesmo
especifique o destinatrio. Sendto leva o endereo do destinatrio como um argumento. Este tem
a seguinte forma:
sendto(socket,data,length,flags,destaddress,addresslen)

136/223

Os quatro primeiros argumentos correspondem aos quatro argumentos do procedimento


send. Os dois argumentos finais especificam o endereo do destinatrio e o tamanho do
endereo. A forma do endereo no argumento destaddress a estrutura sockaddr
(especificamente, a estrutura sockaddr_in, quando usado com TCP/IP).
O procedimento sendmsg realiza a mesma operao do sendto, mas abrevia o argumento
ao definir uma estrutura. A lista menor de argumentos pode fazer com que programas que
utilizem o sendmsg tenha maior facilidade de leitura:
sendmsg(socket,msgstruct,flags)
O argumento msgstruct uma estrutura que contm informaes sobre o endereo do
destinatrio, o tamanho do endereo, a mensagem a ser enviada e o tamanho da mensagem.
struct
struct
struct
int
struct
int
};

msgstruct{
sockaddr
*m_saddr;
datavec *m_dvec;
m_dvlength;
access
*m_rights;
m_alength;

Os detalhes da estrutura no so importantes devem ser vistos como uma maneira de


combinar vrios argumentos em uma nica estrutura. A maioria dos aplicativos usa apenas os
trs campos, os quais especificam o endereo de protocolo e uma lista de itens dos dados que
abrangem a mensagem.
19.8.8 Os Procedimentos Recv, Recvfrom e Recvmsg
O cliente e servidor necessitam ambos de receber dados enviados um para o outro. O
socket API fornece vrios processos que podem ser utilizados. Por exemplo, um aplicativo pode
utilizar o processo recv para receber dados de um socket conectado. O processo tem a seguinte
forma:
recv(socket,buffer,length,flags)
O argumento socket o descritor do socket nos quais os dados so recebidos. O
argumento buffer especifica o endereo na memria no qual a mensagem deve ser armazenada,
e o argumento length especifica o tamanho do buffer. Finalmente, o argumento flags permite ao
sistema controlar detalhes, como fazer uma cpia exata da mensagem sem retirar a mesma do
socket.
Se o socket no se encontra conectado, este pode ser utilizado para receber mensagens
de um conjunto de clientes arbitrrios. Nestes casos, o sistema retorna o endereo do emissor
com a mensagem. Aplicativos usam o processo recvfrom para receber a mensagem e o endereo
do emissor.
recvfrom(socket,buffer,length,flags,sndraddr,saddrlen)
Os primeiros quatro argumentos correspondem aos argumentos do processo recv; os
dois argumentos adicionais, sndraddr e saddrlen, so utilizados para armazenar o endereo IP
do emissor. O argumento sndraddr um ponteiro para a estrutura sockaddr, no qual o sistema
grava o endereo do emissor, e o argumento saddrlen um ponteiro para um inteiro que o
sistema usa para gravar o tamanho do endereo. O processo recvfrom grava o endereo do
emisssor exatamente no mesmo formato que o processo sendto espera. Assim, se um aplicativo
usa recvfrom para receber uma mensagem, enviar uma resposta fcil o aplicativo
simplesmente usa a gravao do endereo como destinatrio para a resposta.
137/223

O socket API inclui um processo de entrada anlogo ao processo de envio sendmsg. O


procedimento recvmsg opera da mesma maneira que o recvfrom, mas necessita de menos
argumentos. Este tem a seguinte forma:
recvmsg(socket,msgstruct,flags)
Onde o argumento msgstruct fornece o endereo da estrutura que suporta o endereo da
mensagem recebida, bem como a localizao do endereo IP do emissor. O argumento
msgstruct gravado pelo processo recvmsg tem exatamente o mesmo formato da estrutura
requisitada pelo processo sendmsg. Assim, os dois processos trabalham muito bem para receber
uma mensagem e enviar uma resposta.

19.9 Lendo e Escrevendo com Sockets


Foi dito que o socket API foi originalmente projetado para ser uma parte do UNIX, o
qual usa read e write para I/O. Conseqentemente, o socket tambm permite aos aplicativos
utilizarem read e write para transferir dados. Como no send e recv no h argumentos que
permitam ao emissor especificar o destino, os processos read e write tem trs argumentos: o
socket descritor, a localizao do buffer na memria utilizado para armazenar os dados, e o
tamanho do buffer de memria. Assim, o read e write devem ser usados com sockets
conectados.
A maior vantagem de se usar o read e o write a generalizao um aplicativo pode ser
criado para transferir dados para um descritor sem saber se o descritor corresponde a um
arquivo ou socket. Assim, os programadores podem usar um arquivo no disco local para testar a
funo de cliente ou de servidor antes de tentar a comunicao atravs da rede.

19.10 Sockets, Processos e Heranas


Como vrios servidores so coexistentes, o socket API projetado para trabalhar com
programas coexistentes. Embora os detalhes envolvam o sistema operacional, as
implementaes do socket API seguem o princpio de que cada novo processo em execuo
criado e herda uma cpia de todos os sockets abertos pelo processo que o criou.
Para entender como os servidores usam as heranas de socket, importante saber que os
sockets utilizam um mecanismo chamado contagem de referncia. Quando o socket criado
pela primeira vez, o sistema configura a contagem de referncia para 1; o socket existe enquanto
a contagem de referencia permanece positiva. Quando o programa cria um processo adicional, o
sistema fornece o processo com a lista de todos os sockets que o aplicativo pertence, e
incrementa a contagem de referncia com o valor 1. Quando o processo chama a rotina close
para o socket, o sistema faz um decremento de 1 da contagem de referncia, e remove o socket
da lista de processos.
O processo principal de um aplicativo cria um socket que o servidor usa para aceitar as
conexes. Quando um pedido de conexo chega, o sistema cria um novo socket para a conexo.
Imediatamente aps o processo principal criar o processo auxiliar para lidar com a nova
conexo, ambos os processos tm acesso ao antigo e ao novo socket, e a contagem de referncia
assume o valor 2. De qualquer forma, o processo principal no ir usar o novo socket, e o
processo auxiliar no ir utilizar o socket original. Ento, o processo principal usa a rotina close
para o novo socket, e o processo auxiliar utiliza a rotina close para o socket original, reduzindo
a contagem de referncia para 1.
Aps o processo de servio ter acabado, este ir chamar a rotina close no novo socket,
reduzindo a contagem de referncia para zero e apagando assim o novo socket.

138/223

Captulo 20 Exemplo Cliente - Servidor


20.1 Introduo
O captulo anterior descreveu o socket API, incluindo os processos individuais que
podem ser usados, os argumentos usados em cada processo e as operaes que os processos
realizam. Este captulo continua a explicao do socket API examinando um cliente e um
servidor simples que utilizam o socket para se comunicarem. Embora isto no ilustre todas as
possibilidades de projeto de clientes e servidores, o cdigo exemplo ilustra a seqncia das
chamadas dos processos, e mostra a diferena entre a utilizao em um cliente e em um
servidor.

20.2 Comunicao com Conexo Orientada


Para realizar uma comunicao, o cliente e servidor devero selecionar o protocolo de
transporte que ir suportar o servio de conexo orientada ou de conexo no orientada.
Servios com conexo no orientada permitem ao aplicativo enviar mensagens para um
destinatrio arbitrrio a qualquer momento; o destinatrio no precisa concordar em aceitar a
mensagem antes de a transmisso ocorrer. J no servio de conexo orientada, necessrio que
os dois aplicativos estabeleam uma conexo antes de enviar dados. Para estabelecer a conexo,
os aplicativos interagem com o protocolo de transporte no computador local, e os dois mdulos
do protocolo de transporte trocam mensagens via rede. Aps os dois lados aceitarem que a
conexo foi estabelecida, os aplicativos podem enviar dados.

20.3 Um exemplo de Servio


Um exemplo de cliente e servidor ir ajudar a esclarecer muitos detalhes da interao
com conexo orientada, e mostrar como o software para o servio de conexo orientada usa o
socket. Para manter o tamanho do programa pequeno e focar nas chamadas do socket, foi
escolhido um servio trivial: o servidor mantm uma contagem do nmero de clientes que
acessaram o servio e relata a contagem quando o cliente contata o servidor.
Para simplificar a implementao, o servio projetado para usar a tabela ASCII. O
cliente forma a conexo com o servidor e espera a resposta. Quando a requisio de conexo
chega, o servidor cria uma mensagem no formato ASCII, e envia a mensagem atravs da
conexo e, ento, fecha a conexo. O cliente mostra a mensagem recebida e, ento, fecha a tela.
Por exemplo, na dcima vez que o cliente conecta ao servidor, o cliente ir receber e
imprimir a seguinte mensagem:

This server has been contacted 10 times.

20.4 Argumentos das Linhas de Comandos deste Exemplo de


Programa
O exemplo do servidor leva apenas um argumento para a linha de comando, o nmero
da porta no qual o protocolo ir aceitar a requisio. O argumento opcional; se nenhum
nmero de porta especificado, o cdigo usar a porta 5193.
139/223

No exemplo do cliente temos dois argumentos para aslinhas de comando; o nome do


host no qual ir se conectar com o servidor e o nmero da porta de protocolo usada. Ambos os
argumentos so opcionais. Se nenhum nmero de porta de protocolo designado, o cliente
usar a porta 5193. Se nenhum argumento especificado, o cliente utiliza a porta padro e o
nome de host como localhost.

20.5 Seqncia de Processos no Socket


A figura abaixo ilustra a seqncia de chamadas de processos no socket que o servidor e
cliente utilizam para a comunicao.

Como a figura mostra, o servidor utiliza sete processos do socket, e o cliente utiliza seis.
O cliente comea chamando a biblioteca de procedimentos gethostbyname para converter o
nome do computador para um endereo IP e getprotoname para converter o nome do protocolo
para binrios internos, usados no processo do socket. O cliente ento utiliza o processo socket
para criar o socket e connect para conectar o socket ao servidor. Uma vez que a conexo
estabelecida, o cliente utiliza repetidamente o processo recv para receber os dados que o
servidor envia. Finalmente, aps todos os dados serem transferidos, o cliente usa a rotina close
para fechar o socket.
O servidor tambm utiliza getprotobyname para gerar os binrios internos que
identificam o protocolo antes de usar o socket para criar o socket. Uma vez que o socket foi
criado, o servidor utiliza bind para especificar a porta do protocolo para o socket, e listen para
ativar o modo passivo. O servidor ento entra em um loop infinito no qual chama accept para
aceitar as prximas requisies de conexo, usa ento send para enviar uma mensagem para o
cliente, e close para fechar a nova conexo. Aps fechar a conexo, o servidor chama a rotina
accept para aceitar as prximas novas conexes.

140/223

20.6 Exemplo de Cdigo Cliente


/* client.c exemplo de programa para cliente que utiliza o TCP*/
#ifndef unix
#define WIN32
#include <windows.h>
#include <winsock.h>
#else
#define closesocket close
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#endif
#include <stdio.h>
#include <string.h>
#define PROTOPORT 5193
extern int erro;
char localhost[] = localhost;
main(argc, argv)
int
argc;
char *argv[];
{
struct hostent
*ptrh;
struct protoent
*ptrp;
struct sockaddr_in sad;
int
sd;
int
port;
char *host;
int
n;
char buf[1000];
#ifdef WIN32
WSDATA wsaData;
WSAStartup(0x0101, &wsaData);
#endif
memset((char *)&sad,0,sizeof(sad));
sad.sin_family = AF_INET;
if (argc>2) {
port = atoi(argv[2]);
}else {
port = PROTOPORT
}
if (port>0)
sad.sin_port = htons((u_short)port);
else{
fprint(stderr, *bad port number %s/n,argv[2]);
}

141/223

if (argc >1) {
host = argv[1];
} else {
host = localhost;
}
ptrh = gethostbyname (host);
if ( ((char *) ptrh) == NULL) {
fprint (stderr, invalid host : %s\n, host);
exit(1);
}
memcpy(&sad.sin_addr, ptrh->h_addr, ptrh->h_length);
if ( ((int) (ptrp = getprotobyname(tcp))) = = 0 ) {
fprintf(stderr, cannot map \tcp\ to protocol number);
exit(1);
}
sd = socket (PF_INET, SOCK_STREAM, ptrp->p_proto);
if (sd<0) {
fprintf(stderr, socket creation failed\n);
exit(1);
}
if (connect(sd, (struct sockaddr *)&sad, sizeof(sad))<0) {
fprintf(stderr, connect failed\n);
exit(1);
}
n = recv(sd, buf , sizeof(buf), 0);
while (n>0) {
write(1,buf,n);
n=recv(sd, buf, sizeof(buf), 0) ;
}
closesocket(sd);
exit(0)
}

142/223

20.7 Exemplo de Cdigo Servidor


#ifndef unix
#define WIN32
#include <windows.h>
#include <winsock.h>
#else
#define closesocket close
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#endif
#include <stdio.h>
#include <string.h>
#define PROTOPORT 5193
#define QLEN
6
int

visits

=0;

main(argc, argv)
int
argc;
char *argv[];
{
struct hostent
struct protoent
struct sockaddr_in
struct sockaddr_in
int
sd, sd2;
int
port;
int
alen;
char buf[1000];

*ptrh;
*ptrp;
sad;
cad;

#ifdef WIN32
WSDATA wsaData;
WSAStartup(0x0101, &wsaData);
#endif
memset((char *)&sad,0,sizeof(sad));
sad.sin_family = AF_INET;
sad.sin_addr.s_addr = INADDR_ANY;
if(argc>1) {
port = atoi (argv[1]);
} else {
port = PROTOPORT
}
if (port >0)
sad.sin_port = htons((u_short)port);
else {
fprintf(stderr, bad port numer %s\n,argv[1]);
exit(1);
}
143/223

sd= socket(PF_INET, SOCK_STREAM, ptrp->p_proto);


if (sd<0) {
fprintf(stderr, socket creation failed\n);
exit(1);
}
if ( bind (sd, (struct sockaddr *)&sad, sizeof (sad)) < 0 ) {
fprintf(stderr, bind failed \n);
exit (1);
}
if (listen(sd, QLEN) <0 ) {
fprintf(stderr, listen failed\n);
exit (1);
}
while (1) {
alen = sizeof(cad);
if (( sd2 = accept (sd, (struct sockaddr *)&cad, &alen)) <0) {
fprintf(stderr, accept failed\n);
exit (1);
}
visits++;
sprintf( buf, This server has been contacted %d
times%s\n,visits, visits = = 1?.:s.);
send(sd2,buf,strlen(buf), 0);
closesocket (sd2);
}
}

20.8 Servio Stream e Mltiplas Chamadas Recv


Embora o servidor faa apenas uma chamada send para enviar os dados, o cdigo do
cliente interage para receber os dados. Durante cada interao, o cdigo cliente utiliza o recv
para obter os dados, as interaes param quando o cliente recebe uma mensagem que sinaliza o
fim do arquivo.
Na maioria dos casos, o TCP no servidor ir colocar toda mensagem em um nico
segmento TCP, e ento transmitir o segmento atravs do TCP/IP em um datagrama IP. De
qualquer maneira, o TCP no garante que os dados sero enviados em um nico segmento, e
no garante tambm que cada chamada recv ir retornar exatamente a mesma quantidade de
dados que o servidor enviou com a chamada send. Ao invs disso, o TCP apenas acerta que os
dados chegaro ordenados e cada chamada recv retorna um ou mais octetos de dados.
Conseqentemente, o programa que chama recv deve estar preparado para fazer repetidas
chamadas at que todos os dados sejam extrados.

144/223

20.9 Processos do Socket e Bloqueios


A maioria dos processos no socket API so sincronizados ou bloqueados, da mesma
forma que a maioria das chamadas I/O. Isto , quando um programa usa um processo socket, o
programa suspende a computao at que o processo esteja completo. No h tempo limite para
a suspenso a operao pode demorar um tempo arbitrrio.
Para entender como clientes e servidores usam processos de bloqueio, primeiro
considere o servidor. Aps criar o socket, configurar uma porta e configurar o socket no modo
passivo, o servidor usa o processo accept. Se um cliente j estiver requisitado uma conexo
antes do servidor chamar o accept, a chamada ser retornada imediatamente. Se o servidor
alcana o accept antes que o cliente faa o pedido de conexo, o servidor estar suspenso at
que a requisio chegue. De fato, o servidor gasta a maioria do tempo suspenso na rotina accept.
O cliente tambm pode ser bloqueado quando faz algumas chamadas no socket. Por
exemplo, algumas implementaes de biblioteca como gethostbyname enviam uma mensagem
atravs da rede, logo espera uma resposta. Nestes casos, o cliente se mantm suspenso at que a
resposta chegue. Similarmente, a chamada connect bloqueia at que o TCP possa realizar o
three way handshake para estabelecer a conexo.
A suspenso mais importante a que acontece durante a transmisso de dados. Aps a
conexo ser estabelecida, o cliente usa o processo recv. Se nenhum dado for recebido na
conexo, o cliente fica suspenso. Assim, se o servidor tem uma fila de requisies de conexes,
o cliente permanece suspenso at que o servidor envie dados.

20.10 Tamanho do Cdigo e Relatrio de Erros


Como cada exemplo de programa tem um tamanho considervel, a maioria do tamanho
atribuda aos comentrios. Por exemplo, remover linhas em branco e comentrios pode reduzir
o programa em at 40 %.
Muitas linhas de cdigo checam erros. Em adio verificao de valores especificados
pelos argumentos das linhas de comando, o cdigo checa o valor do retorno de cada
procedimento, para ter certeza que a operao obteve sucesso. Erros no so esperados, ento,
quando estes acontecem, o programador j configurou o programa para mostrar uma pequena
mensagem de erro e ser finalizado. Temos,portanto, 15 % do cdigo para verificar erros.

20.11 Usando o Exemplo Cliente com Outro Servio


Embora o exemplo de servio parea trivial, tanto o cliente e o servidor podem ser
utilizados com outros servios. Por exemplo, o TCP/IP define o servio DAYTIME para exibir
data e horrio. O DAYTIME utiliza o mesmo paradigma de interao que nosso exemplo o
cliente realiza uma conexo ao servidor DAYTIME e ento mostra a informao enviada pelo
servidor.
Para usar o exemplo do cliente com o servio DAYTIME, o programa cliente deve
chamar dois argumentos, especificar o host no qual o DAYTIME est sendo executado, e outro
argumento referente ao nmero da porta para o servio DAYTIME, porta 13. Por exemplo, se o
cdigo do cliente compilado e o resultado colocado no arquivo executvel com nome client,
este pode ser usado para contatar o servio DAYTIME em computadores em todo mundo.
$ client localhost 13
Mon Aug 17 20:58:08 2006
$ client sbforums.co.jp 13
Tue Aug 18 10:57:46 2006
$ client xx.lcs.mit.edu 13
Mon Aug 17 21:58:08 2006
145/223

20.12 Utilizando Outro Cliente para Testar o Servidor


O exemplo de servidor pode ser testado separadamente do cliente. Para fazer isso,
podemos usar o programa cliente Telnet para contatar o servidor. O programa Telnet requer dois
argumentos: o nome do computador no qual o servidor executado e o nmero da porta do
protocolo no servidor. Por exemplo, a seguinte sada resultado do uso do Telnet para conectar
ao servidor exemplo.
$ telnet xx.yy.nonexist.com 5193
Trying. . .
Connected to xx.yy.nonexist.com 5193
Escape character is ^].
This server has been contacted 4 times.
Connection closed by foreign host.
Embora a sada contenha cinco linhas, apenas quatro foram emitidas pelo servidor; as
outras vem do programa cliente Telnet.

146/223

Captulo 21 O Domain Name System

21.1 Introduo
Foi descrito nos captulos passados que a cada computador designado um Endereo de
Protocolo da Internet, o IP, que aparece em cada datagrama IP enviado pelo computador.
Embora os endereos IP sejam fundamentais para a pilha TCP/IP, qualquer pessoa que tenha
utilizado a Internet sabe que os usurios no precisam lembrar ou fornecer um endereo IP. Os
computadores so tambm designados por nomes simblicos; e os softwares de aplicao
permitem ao usurio entrar com um dos nomes simblicos quando estiver especificando
determinado computador. Por exemplo, quando se especifica um destino para uma mensagem
de correio eletrnico, o usurio escreve um cabelhao que identifica o receptor para o qual a
mensagem dever ser entregue e o nome simblico do computador de destino. Similarmente, o
nome de um computador inserido em um janela quando o usurio especifica um site na World
WideWeb.
Embora nomes simblicos sejam convenientes aos homens, eles so inconvenientes
para os computadores. Devido forma binria de um endereo IP, mais compacta que os nomes
simblicos, ela requer menos computao para ser manipulada (por exemplo, na comparao
com outro nome). Alm disso, um endereo IP ocupa menos espao de memria e requer menos
tempo para ser transmitido atravs da rede do que um nome. Assim, embora softwares de
aplicao permitam que os usurios entrem nomes simblicos, os protocolos da camada de rede
precisam de endereos IP uma aplicao deve traduzir cada nome para um endereo IP
equivalente antes de us-lo para a comunicao. Na maioria dos casos, a traduo feita
automaticamente e os resultados no so revelados ao usurio o endereo IP mantido na
memria e s utilizado para enviar ou receber datagramas.
O software que traduz os nomes simblicos dos computadores em endereos de Internet
equivalentes provem um exemplo interessante de interao Cliente-Servidor. O banco de dados
de nomes no mantido em um s computador. Ao invs disso, as informaes sobre os nomes
so distribudas ao longo de um grande conjunto de potenciais servidores, localizados por toda a
Internet. Sempre que um programa de aplicao precisa traduzir um nome, a aplicao se torna
cliente do sistema de nomenclatura. O cliente envia uma mensagem de pedido para o servidor
de nomes, o qual encontra o endereo correspondente e envia uma mensagem de resposta. Se
ele no puder responder a um pedido, o servidor de nomes se torna temporariamente cliente de
outro servidor de nomes, at que um servidor seja encontrado e responda ao pedido.
Esse captulo descreve a hierarquia de traduo, a organizao dos servidores de nomes
e os detalhes da interao Cliente-Servidor entre eles. O captulo tambm explica como o
caching melhora a eficincia do sistema de nomenclatura e torna possvel o funcionamento de
um sistema distribudo em larga escala.

21.2 Estrutura de Nomes de Computadores


O esquema de nomenclatura usado na Internet chamado de Domain Name System
(DNS). Resumidamente, cada nome de um computador consiste em uma seqncia de
segmentos alfas-numricos separados por pontos. Por exemplo, um computador em um
departamento de Cincias da Computao na Universidade de Purdue tem o nome de domnio:
mordred.cs.purdue.edu. E um computador do Departamento de Engenharia da Universidade de
Bucknell tem o nome de domnio: www.eg.bucknell.edu.
Nomes de domnio so hierrquicos, com a parte mais significantiva do nome direita.
O segmento mais a esquerda do nome (mordred e www nos exemplo dados) o nome de um
computador individual.
147/223

Os outros segmentos em um nome de domnio identificam o grupo ao qual pertence


aquele nome. Por exemplo, o segmento purdue e bucknell, cada um, fornece o nome de uma
universidade.
Quantos segmentos um nome tem e como eles so designados? A resposta que alm
de especificar como os segmentos mais importantes so escolhidos, o DNS no especifica um
nmero exato de segmentos em cada nome ou o que cada um desses segmentos representa. Ao
invs disso, cada organizao pode escolher quantos segmentos usar para os computadores
dentro da organizao e o que aqueles segmentos representam.
O DNS no especifica valores para o segmento mais significativo, o qual chamado de
nvel nximo do DNS. A tabela abaixo lista os domnios nvel nximo.
Nomes de Domnio

Designado para

com

organizaes comerciais

edu

instituies educacionais

gov

organizaes governamentais

mil

grupos militares

net

major network support center

org

organizaes e outras que no mencionadas

arpa

domnio arpa temporrio (ainda usado)

int

organizaes internacionais

cdigo do pas

um pas

Mais sete domnios de nvel nximo foram propostos em 1997, para posteriormente
dividir o espao do nome e eliminar o excesso de nomes que tem o domnio comercial. Os
nomes propostos foram firm, store, web, arts, rec, info e nom. Arts e Rec seriam propostos para
acomodar organizaes como museus de arte e web sites de recreao; Nom foi proposto para
permitir que pessoas registrassem seus prprios nomes. Por muitas outras razes, entretanto, os
novos nomes no receberam aprovao oficial.
Quando uma organizao quer participar do DNS, a organizao deve registrar um
nome dentro de um domnio de nvel mximo. A maioria das organizaes escolhe registrar-se
sob o domnio com. Por exemplo, a corporao nomeada Foobar poderia pedir para designar o
domnio foobar sob o domnio de nvel nximo com. Se o pedido fosse aprovado, a autoridade
da Internet responsvel pelos nomes de domnio designaria Corporao Foobar o domnio:
foobar.com.
Uma vez que um domnio tenha sido designado a uma organizao, o sufixo reservado
organizao nenhuma outra organizao designar esse mesmo sufixo para seu nome. Por
exemplo, uma vez que foobar.com tenha sido designado, outra organizao chamada Foobar
poderia solicitar o domnio foobar.edu ou foobar.org, mas no o domnio foobar.com.

148/223

21.3 Estrutura Geogrfica


Alm da estrutura organizacional habitual, o DNS permite que organizaes usem um
registro geogrfico. Por exemplo, a Corporation For National Research Initiatives registrou o
domnio: cnri.reston.va.us. Porque a corporao est localizada na cidade de Reston, Virgnia,
nos Estados Unidos. Por isso, nomes de computadores na corporao terminam em .us ao invs
de .com.
Alguns pases adotaram uma combinao de nomes de domnios geogrficos e
organizacionais. Por exemplo, universidades no Reino Unido registram-se sob o domnio:
ac.uk; onde ac uma abreviao para acadmico, e uk o cdigo oficial de pases para o Reino
Unido.

21.4 Nomes de Domnios Dentro de uma Organizao


Uma vez que uma organizao tenha um domnio particular, a organizao pode decidir
como introduzir estruturas hierrquicas adicionais. Uma organizao pequena no pode escolher
hierarquias adicionais, enquanto que grandes organizaes podem escolher vrios nveis. Por
exemplo, se a corporao Foobar for pequena, ela pode decidir que todos os nomes tenham a
forma: computador.foobar.com; onde computador denota o nome designado a cada
computador. Entretanto, se Foobar grande o suficiente para ter vrias localizaes, um nvel
da hierarquia de domnio pode ser usada para denotar a localizao, resultando em nomes de
domnio da forma: computador.localizao.foobar.com.
Finalmente, se a Foobar tiver vrias divises em cada localizao, um nvel da
hierarquia de nomes de domnio pode ser usada para distinguir essas vrias divises, resultando
em nomes da forma: computador.diviso.localizao.foobar.com.
Devido aos nomes de domnio serem conceitos lgicos, eles no precisam se adequar s
localizaes fsicas. Por exemplo, Foobar pode possuir plantas em 5 localizaes, com cada uma
delas contendo computadores em duas divises. A empresa poderia designar seus nomes de
domnio por diviso, ao invs de designar por localizao. Como resultado, o nome no conter
a localizao do computador: computador.diviso.foobar.com.
A liberdade da escolha da hierarquia da nomenclatura se estende aos grupos dentro da
organizao. Conseqentemente, dois computadores em uma dada organizao podem ter um
nmero diferente de segmentos em seu nome de domnio. Por exemplo, suponha que uma
grande diviso da Corporao Foobar faa doces, enquanto que uma pequena diviso faa
sopas. Devido a ltima ser pequena, seu nomes de domnio podem ser da forma:
computador.soap.foobar.com.
A diviso de doces pode adicionar mais um nvel hierarquia do domnio para
distinguir as suas vrias subdivises que fazem cada tipo de doce:
computador.subdiviso.doces.foobar.com.

21.5 O Modelo Cliente-Servidor do DNS


Uma das principais caractersticas do DNS sua autonomia o sistema foi projetado de
modo a permitir que cada organizao designe nomes aos seus computadores ou mude tais
nomes sem se reportar a uma autoridade central. A hierarquia da nomenclatura ajuda a alcanar
essa autonomia, permitindo s organizaes controlar todos os nomes com um sufixo particular.
Devido a isso, a Universidade de Purdue livre para criar ou mudar qualquer nome que termine
com purdue.edu, enquanto que a IBM livre para criar ou mudar nomes que terminem com
ibm.com.
149/223

Alm da hierarquia de nomenclatura, o DNS usa as interaes Cliente-Servidor para dar


assistncia autonomia. Em essncia, o sistema inteiro de nomenclaturas opera como um banco
de dados grande e distribudo. A maioria das organizaes que tem conexo com a Internet roda
um servidor de nomes de domnio. Cada servidor contm informaes que conecta ele a outros
servidores de nomes de domnio; o grande conjunto de servidores resultante funciona como um
banco de dados de nomes grande e coordenado.
Sempre que uma aplicao precisa traduzir um nome em um endereo IP, a aplicao se
torna cliente do sistema de nomenclaturas. O cliente coloca o nome a ser traduzido em uma
mensagem de pedido DNS e a envia ao servidor DNS. O servidor extrai o nome do pedido, o
traduz para um endereo IP equivalente e retorna o endereo resultante aplicao em uma
mensagem de resposta.

21.6 A Hierarquia de Servidores DNS


Os servidores DNS so organizados em uma hierarquia que compatvel com a
hierarquia de nomenclaturas, com cada um sendo autoridade como parte da hierarquia de
nomenclaturas. Um Servidor Raiz ocupa o topo da hierarquia, e a autoridade para os domnios
de nvel mximo (por exemplo, .com). Embora ele no contenha todos os nomes de domnio
possveis, um servidor raiz contm informao sobre como alcanar outros servidores. Por
exemplo, embora ele no conhea os nomes dos computadores da Corporao IBM, um servidor
raiz sabe como alcanar um servidor que lide com pedidos para ibm.com. Similarmente, um
servidor raiz sabe como alcanar o servidor que lide com os pedidos para purdue.edu.
Embora a hierarquia dos servidores DNS siga a hierarquia de nomenclaturas, a estrutura
no idntica. Uma corporao pode escolher entre colocar todos os seus nomes de domnio em
um s servidor ou pode rodar em vrios servidores. Por exemplo, a corporao Foobar poderia
alocar sua hierarquia de nomenclatura em dois servidores, sendo um para a linha de doces e
outro para a linha de sopas.
Como pde ser percebido no exemplo, os servidores no esto restritos a lidar com
apenas um nvel na hierarquia dos nomes de domnio, nem mesmo solicitados a conter vrios
nveis.

21.7 Arquiteturas de Servidores


Como uma arquitetura de um Servidor de Nomes de Domnio deveria ser escolhida? Em
particular, quando que uma organizao precisa de mais de um servidor? Em geral, a arquitetura
na qual uma organizao utiliza apenas um servidor simples uma organizao pequena pode
minimizar os custos colocando toda a sua informao sobre nomes de domnio em um s
servidor.
Organizaes maiores usualmente acham que apenas um servidor central no
suficiente por duas razes. Primeira, um nico servidor e o computador no qual ele roda no
podem lidar com pedidos arbitrrios em alta velocidade. Segunda, grandes organizaes
freqentemente encontram dificuldades em administrar um banco de dados central. O problema
especialmente grave, porque a maioria dos softwares de DNS no prov atualizaes
automticas um humano deve fornecer as mudanas e adicionar tais alteraes no banco de
dados manualmente. Devido a isso, o grupo de pessoas que responsvel por administrar o
servidor central da organizao deve ser coordenado para assegurar que apenas um
administrador faa as mudanas em um dado tempo. Se a organizao utilizar vrios servidores,
cada grupo pode administrar o servidor, que a autoridade de seus computadores. Mais
importante ainda, cada grupo pode fazer mudanas em seu servidor de banco de dados sem uma
coordenao centralizada.

150/223

21.8 Localidade de Referncia e Mltiplos Servidores


O princpio da Localidade de Referncia j discutido aplica-se ao DNS e ajuda a
explicar como vrios servidores funcionam bem. O DNS segue o princpio da localidade de
referncia de duas maneiras. Primeiro, os usurios tendem a procurar os nomes de
computadores locais mais freqentemente que nomes de computadores remotos. Segundo, um
usurio tende a procurar pelo mesmo grupo de nomes de domnio repetidamente.
Ter vrios servidores dentro de uma organizao funciona vem, porque um servidor
pode ser colocado dentro de cada grupo. O servidor local a autoridade para os nomes dos
computadores de dentro daquele grupo. Devido ao DNS obedecer ao princpio da localidade de
referncia, o servidor local pode lidar com a maioria dos pedidos. Por isso, alm da facilidade
de administrao, mltiplos servidores ajudam a balancear o trfego, reduzindo assim os
problemas de conteno que um servidor central pode causar.

21.9 Links entre Servidores


Embora o DNS permita o uso de vrios servidores, uma hierarquia de domnios no
pode ser dividida em servidores de forma arbitrria. A regra : um servidor responsvel por
um dado sufixo.
Servidores DNS esto ligados, tornando possvel a um cliente encontrar o servidor
correto apenas seguindo os links. Em particular, cada servidor configurado para saber a
localizao dos servidores das subpartes da hierarquia. Por exemplo, o servidor para .com deve
saber a localizao do servidor para foobar.com e assim por diante.

21.10 Resoluo de Nomes


A traduo de um nome de domnio para um endereo IP equivalente chamada
Resoluo de Nomes, e se diz que um nome foi resolvido para um endereo. Softwares que
fazem tal traduo so chamados de Softwares Solucionadores de Nomes (ou apenas
Solucionadores).
Muitos sistemas operacionais provem softwares solucionadores de nomes como uma
biblioteca de rotinas que uma aplicao pode chamar.
Como os softwares solucionadores funcionam? Cada solucionador configurado com o
endereo de um servidor de nomes de domnios. Para se tornar um cliente do servidor DNS, o
solucionador coloca o nome em uma mensagem de pedido DNS e a envia ao servidor local. O
solucionador ento aguarda a mensagem de resposta DNS do servidor que conter a resposta.
Embora um cliente possa escolher entre o transporte UDP ou TCP, quando estiver se
comunicando com um servidor DNS, a maioria dos solucionadores so configurados para
utilizar UDP, porque ele requer menos cabealhos para um nico pedido.
Quando um pedido especifica um nome do qual o servidor responsvel, ele responde
ao pedido diretamente. Isto , o servidor procura o nome em sua base de dados local e envia a
resposta ao solucionador. Entretanto, quando um pedido chega com um nome fora do conjunto
do qual aquele servidor responsvel, existiro mais interaes cliente-servidor. O servidor
temporariamente se torna cliente de outro servidor de nomes. Quando um segundo servidor
retorna a resposta, o servidor original envia uma cpia da mesma de volta ao solucionador que
enviou o pedido.
Como que um servidor DNS sabe qual outro servidor DNS responsvel por um dado
nome? Ele no sabe. Entretanto, cada servidor sabe o endereo de um servidor raiz. Saber a
localizao de um servidor raiz suficiente, pois o nome pode ser traduzido a partir da. Por
exemplo, suponha que um site remoto (por exemplo, de uma universidade) envie um pedido
para o seu servidor local, L, com o nome: venus.walnut.candy.foobar.com.

151/223

O servidor L no responsvel por esse nome, ento ele atua como cliente de outros
servidores. Em um primeiro passo, o servidor L envia um pedido ao servidor raiz. O servidor
raiz no responsvel por esse nome, mas a resposta dele fornece a localizao do servidor
responsvel pela foobar.com.
Quando o servidor L recebe a resposta do servidor raiz, ele contata o servidor da
foobar.com. Embora ele no seja responsvel pelos nomes da subdiviso walnut, esse servidor
principal da Foobar sabe a localizao do servidor para tal subdiviso. Por isso, ele retorna uma
resposta para informar o servidor L. Finalmente, o servidor L contata o servidor que
responsvel pelos nomes com a forma: computador.walnut.candy.foobar.com.
O servidor responsvel envia uma resposta (chamada Authoritative Answer) ao servidor
L, com o endereo IP para aquele nome ou com a indicao que aquele nome no existe.
Esse processo de procura atravs da hierarquia dos servidores, a fim de encontrar o
servidor que responsvel por um nome, chamado de Pesquisa de Resoluo Repetitiva e
utilizada somente quando um servidor precisa traduzir um nome. Os solucionadores, os quais as
aplicaes chamam, sempre requerem uma Pesquisa de Resoluo Recursiva. Isto , ele requer
a traduo completa a resposta para um pedido recursivo o endereo IP procurado ou uma
instruo do servidor responsvel que tal nome no existe.

21.11 Otimizao do Desempenho do DNS


Medies mostram que o DNS como descrito acima , infelizmente, ineficiente. Sem
otimizaes, o trfego em um servidor raiz seria intolervel, pois os servidores raiz receberiam
um pedido toda vez que algum mencionasse o nome de um computador remoto. Alm disso, o
princpio de localizao sugere que um dado computador emitir o mesmo pedido
repetidamente se um usurio fornecer o nome de um computador remoto, provvel que o
usurio procure por ele mais vezes.
Existem duas otimizaes primrias usadas no sistema DNS: Rplicas e Caching. Cada
servidor raiz deve ser replicado; muitas cpias do servidor existem ao redor do mundo. Quando
um novo site se junta Internet, ele configura seu servidor DNS local com uma lista de
servidores raiz. O servidor do site utiliza o servidor que est respondendo mais rapidamente. Na
prtica, o servidor geograficamente mais prximo responde melhor.
O caching DNS mais importante do que as rplicas de um servidor, porque afeta mais
o sistema. Cada servidor mantm um cache de nomes. Sempre que ele procura por um nome
novo, o servidor copia o link para o mesmo em seu cache. Antes de contatar outro servidor para
pedir a localizao de um nome, o servidor checa o seu cache. Se o cache contiver a resposta, o
servidor o utiliza para gerar uma resposta.
O caching funciona bem porque a traduo de nomes mostra uma forte tendncia em
direo da localidade de referncia temporal. Isto , em um dado dia, um usurio provavelmente
procurar o mesmo nome repetidamente. Por exemplo, se um usurio manda um e-mail para um
endereo, o usurio provavelmente receber uma resposta do mesmo endereo e assim por
diante. Quando uma aplicao procura por um nome pela primeira vez, o servidor DNS local
guarda o link para o mesmo em seu cache. O servidor pode ento responder a pedidos
subseqentes, retornando o link de seu cache, ao invs de contatar o servidor responsvel
novamente.

21.12 Tipos de Entradas no DNS


Cada entrada em um banco de dados DNS consiste em trs itens: o nome de domnio, o
tipo de registro e um valor. O tipo de registro especifica como o valor deve ser interpretado.
Mais importante ainda, um pedido enviado para um servidor DNS especifica o nome de
domnio e o tipo; o servidor s retorna um link que seja compatvel com o tipo enviado no
pedido.
152/223

Analisemos o tipo usado entre um nome de domnio e um endereo IP equivalente. O


DNS classifica essa ligao de tipo A (o A vem de address). Ligaes tipo A so comuns,
porque elas so utilizadas na maioria das aplicaes. Por exemplo, quando um usurio fornece o
nome de um computador a um programa de aplicao como o FTP, ping ou um browser da
Internet, ele requer uma ligao do tipo A.
Alm do tipo A, o DNS suporta vrios outros tipos. Um tipo popular o MX (abreviao
de Mail eXchanger), o qual utilizado para traduzir um nome de computador encontrado em um
endereo de e-mail para um endereo IP. O software de e-mail especifica o tipo MX quando ele
envia um pedido a um servidor DNS. A resposta que o servidor retorna compatvel com o tipo
enviado no pedido. Por isso, um sistema de e-mail receber uma resposta compatvel com o tipo
MX.

21.13 Apelidos Utilizando o Tipo CNAME


Outro tipo, o CNAME, especialmente til. Entradas CNAME so anlogas a um atalho
de programa em um sistema de arquivos a entrada fornece um apelido para outra entrada
DNS. Para entender o quanto os apelidos so teis, suponha que a corporao Foobar tenha dois
computadores chamados hobbes.foobar.com e calvin.foobar.com. E ainda, suponha que a
Foobar rode um servidor Web e queira seguir a conveno de utilizar o nome www para o
computador que roda o servidor Web da organizao. Embora a organizao possa renomear um
deles (por exemplo, o computador hobbes), existe uma soluo muito mais simples: a
organizao cria uma entrada CNAME para www.foobar.com que aponta para o computador
hobbes, que se tornar o servidor Web. Sempre que for enviado um pedido para
www.foobar.com, o servidor responder com o endereo do computador hobbes.
O uso de apelidos especialmente conveniente porque ele permite a uma organizao
mudar um computador utilizado para um servio particular sem mudar os nomes ou endereos
dos mesmos. Por exemplo, a corporao Foobar pode mover seu servidor Web do computador
hobbes para o computador calvin, movendo o servidor e modificando o registro CNAME no
servidor DNS ambos os computadores retm seus nomes e endereos IPs originais.

21.14 Uma Conseqncia Importante dos Tipos Mltiplos


O sistema de tipos no DNS conveniente, porque ele permite a um administrador
utilizar um nico nome para diversos propsitos (por exemplo, direcionar o trfego da Web para
um computador, enquanto envia e-mail para um computador diferente). Entretanto, usurios so
,s vezes, surpreendidos com a conseqncia de ter tipos especficos para pedidos DNS um
nome que funciona com uma aplicao pode no funcionar com outra. Por exemplo, pode ser
possvel enviar e-mail a um computador, enquanto que a tentativa de comunicao com mesmo
usando um programa como ping ou traceroute resulta em uma mensagem de que aquele
computador no existe. A aparente inconsistncia ocorre porque o tipo DNS requerido pelo email difere do tipo requerido por outras aplicaes. Se o banco de dados do domnio contiver
um registro do tipo MX para o nome dado, um pedido do sistema de e-mail obter resposta.
Entretanto, se o banco de dados no contiver um registro do tipo A para o mesmo nome, um
pedido de um programa como o ping resultar em uma resposta negativa.
O sistema de tipos usados pelo DNS pode produzir resultados inesperados porque
algumas aplicaes esto configuradas para utilizar vrios tipos. Por exemplo, os solucionadores
utilizados em alguns programas de e-mail tentam dois tipos quando traduzem um nome.
Primeiro, ele tenta enviando ao servidor um pedido tipo MX. Se o servidor responder
negativamente, ele tenta ento um pedido tipo A. O esquema pode ajudar em situaes em que
uma organizao especifica um registro tipo A em seu banco de dados de domnios para um
dado nome, mas falha em especificar tambm um registro do tipo MX para o mesmo nome.

153/223

21.15 Abreviaes e o DNS


Devido ao fato de os usurios tenderem a utilizar nomes para computadores locais mais
freqentemente do que para computadores remotos, as abreviaes de nomes locais so
convenientes. Por exemplo, a corporao Foobar pode permitir aos usurios emitir o sufixo
foobar.com quando entrar com um nome de domnio.
Servidores de nomes de domnio no entendem abreviaes um servidor s responde a
nomes completos. Para lidar com abreviaes, solucionadores so configurados para tentar um
conjunto de sufixos. Por exemplo, cada solucionador dentro da corporao Foobar pode ser
programado para procurar um nome duas vezes: uma sem mudanas e uma com o sufixo
foobar.com agregado. O esquema de sufixo permite que ambos os nomes locais e remotos sejam
tratados da mesma maneira. Atribuindo um nome vlido de um computador remoto, o servidor
DNS retornar uma resposta vlida, a qual o solucionador utilizar. Entretanto, dado um nome
local abreviado, o servidor DNS retornar uma mensagem de erro (porque tal nome no existe).
O solucionador pode ento tentar agregar cada um dos sufixos.
Usualmente, cada computador contm um software solucionador que todas as
aplicaes naquele computador utilizam. Devido ao fato de que as abreviaes so tratadas pelo
solucionador de nomes, o conjunto de abreviaes permitidas em cada computador pode diferir.

154/223

Captulo 22 Descrio do Correio Eletrnico e


Transferncias
22.1 Introduo
Este captulo continua a discusso da programao cliente e servidor examinando uma
das aplicaes mais utilizadas: o correio eletrnico, ou simplesmente e-mail.
O captulo desta seo define o modelo de interao entre cliente e servidor, formando a
base para toda a computao distribuda. So discutidos os conceitos fundamentais, bem como o
socket API, que os programas cliente e servidor utilizam para interagirem.

22.2 O Paradigma do E-mail


Originalmente, o e-mail foi projetado como extenso direta das tradicionais notas de
escritrio. Isto , o sistema original foi construdo para permitir que uma pessoa se comunique
com outra pessoa: um indivduo cria uma mensagem e especifica outros indivduos como
receptores. O software de e-mail transmite uma cpia da mensagem para cada destinatrio.
Os sistemas de e-mail evoluram desde o projeto original, e so automatizados para
permitirem interaes complexas. Em particular, como um programa de computador pode
responder uma mensagem de e-mail e enviar uma resposta, o e-mail pode ser utilizado de vrias
maneiras. Por exemplo, uma companhia pode estabelecer um programa para responder
automaticamente todas as requisies de informaes que chegam num e-mail; o usurio envia
uma requisio ao programa e recebe a informao desejada na resposta.

22.3 Caixas de E-mail e Endereos


O sistema de e-mail utiliza muitos termos e conceitos do ambiente tradicional dos
escritrios. Antes de o e-mail ser enviado para um individuo, o emissor deve determinar uma
caixa eletrnica de mensagens (electronic mailbox), ou caixa de e-mail. A caixa consiste em
uma rea passiva de armazenamento. Como a caixa postal convencional, a caixa de e-mail
privada as permisses so configuradas para permitir ao software adicionar as mensagens que
chegam caixa, mas no permite ningum, exceto o dono, examinar e remover mensagens. Na
maioria dos casos, a caixa de e-mail associada com uma conta. Assim, o indivduo que possuir
mltiplas contas pode ter vrias caixas de e-mail.
Cada caixa de e-mail designada com um nico endereo de correio eletrnico
(endereo de e-mail); quando algum envia uma nota, usado o endereo de e-mail para
especificar o destinatrio. Um endereo de e-mail completo contm duas partes, a segunda
especifica um computador e a primeira, a caixa de mensagem neste computador:
mailbox@computer.
Mailbox a string que denota a caixa de e-mail e computer a string que define o
computador onde a caixa de e-mail est localizada.
A diviso do endereo de e-mail em duas partes importante porque alcana duas
metas. Primeiro, a diviso permite que cada sistema determine identificadores de caixa de emails independentes. Segundo, a diviso permite que usurios em sistemas de computadores
arbitrrios troquem mensagens. O software de e-mail no emissor usa a segunda parte para
determinar qual computador contatar, e o computador receptor utiliza a primeira parte para
determinar em qual caixa de e-mail a mensagem ser depositada. Assim a primeira parte
interpretada localmente.
155/223

Qual o formato usado na primeira parte do endereo? A resposta depende do software


de e-mail disponvel no computador, bem como o sistema operacional que est sendo usado.
Alguns sistemas de software permitem ao administrador do sistema escolher o nome das caixas
de mensagens; enquanto que outros sistemas permitem ao usurio escolher o identificador da
caixa de mensagem, geralmente, sendo o mesmo do login do usurio. Por exemplo, o endereo
de e-mail do empregado Joo Queiroz lvares na companhia Foobar pode ser:
joao_q_alvares@foobar.com.

22.4 Formato da Mensagem de E-mail


A mensagem de e-mail tem um formato simples. A mensagem consiste em um texto
ASCII que separado em duas partes por uma linha em branco. A primeira parte, chamada
cabealho, contm informaes sobre a mensagem: o emissor, os destinatrios, a data de envio
da mensagem, e o formato da mesma. A segunda parte chamada de corpo e contm o texto da
mensagem.
Embora o corpo da mensagem possaser um texto arbitrrio, o cabealho segue uma
forma normalizada que o software de e-mail usa quando envia ou recebe uma mensagem. Cada
linha do cabealho comea com uma palavra chave seguida por dois pontos e informao
adicional. A palavra chave diz ao software de e-mail como interpretar o restante da linha.
Algumas palavras chave so requisitadas em cada cabealho de e-mail; outras so
opcionais. Por exemplo, cada cabealho deve ter a linha que comea com a palavra chave To e
especificar a lista de destinatrios. O restante do cabealho da linha To contm a lista de um ou
mais endereos de e-mail, onde cada endereo corresponde a um destinatrio. O software de email coloca a linha que inicia o cabealho com a palavra chave From, seguida pelo endereo de
e-mail do emissor da mensagem, no cabealho de cada mensagem.
Se o software de e-mail no entende a linha de cabealho, o software passa por esta
linha sem fazer alteraes. Assim, aplicativos que usam mensagens de e-mail para comunicao
podem adicionar linhas ao cabealho da mensagem para controlar o processamento. Mais
importante, o desenvolvedor do software pode construir o software que utiliza linhas do
cabealho para adicionar funcionalidades se a mensagem que chega contm uma linha
especial de cabealho, o software sabe que a mensagem foi criada por uma determinada
companhia.

22.5 Extenses do E-mail com Mltiplos Propsitos


O sistema original de e-mail foi projetado para lidar apenas com texto. O corpo da
mensagem de e-mail era restrito a apenas caracteres ASCII e no poderiam conter bytes
arbitrrios.
Pesquisadores acharam o sistema de e-mail til, assim inventaram esquemas para
permitir que o e-mail fosse usado para enviar quaisquer tipos de dados. Em geral, todos os
esquemas codificam os dados na forma de texto, que podem ser enviados na mensagem de email. Uma vez que chegue, o corpo da mensagem deve ser extrado e convertido, formando um
cdigo binrio.
Para ajudar a coordenao e unificar os vrios esquemas que foram inventados para
codificar dados binrios, o IETF criou o MIME, o Multipurpose Internet Mail Extensions. O
MIME no impe uma nica norma para codificar dados. Ao invs disso, o MIME permite ao
emissor e receptor escolherem um formato de codificao conveniente. Quando o MIME
usado, o emissor adiciona linhas ao cabealho para especificar que a mensagem segue o formato
MIME, bem como adiciona linhas no corpo do texto para especificar o tipo de dados e o tipo de
codificao. Alm de permitir ao emissor e receptor escolherem a codificao, o MIME permite
ao emissor dividir a mensagem em vrias partes e especificar a codificao de cada parte,
156/223

independentemente. Assim, com o MIME, o usurio pode enviar um texto e anexar imagens.
Quando o receptor visualiza a mensagem, o sistema de e-mail mostra a mensagem de texto e
pergunta ao usurio como lidar com a imagem. Quando o usurio decide como lidar com o
anexo, o software MIME decodifica automaticamente o anexo.
Para alcanar transparncia na codificao e decodificao, o MIME adiciona duas
linhas no cabealho do e-mail: uma declara que o MIME foi usado para criar a mensagem; e
outra especifica como a informao MIME est disposta no corpo do texto. Por exemplo, as
linhas de cabealho abaixo:
MIME-Version: 1.0
Content-Type: Multipart/Mixed; Boundary=Mime_separator
Estas linhas especificam que a mensagem foi composta usando a verso 1.0 do MIME, e
que a linha que contm Mime_separator ir aparecer no corpo antes de cada parte da
mensagem. Quando o MIME usado para enviar uma mensagem padro de texto, a segunda
linha se torna:
Content-Type: text/plain
A vantagem principal do MIME a flexibilidade no h um padro especifico ou um
esquema nico de codificao que todos os emissores e receptores devem usar. Ao invs disso,
o MIME permite que novos sistemas sejam criados a qualquer momento. O emissor e receptor
podem usar um sistema convencional de e-mail para comunicar, fornecido pelo acordo no
esquema de codificao e um nome nico para o mesmo. Alm dissso, o MIME no especifica
um valor para ser usado ao separar as partes da mensagem ou uma maneira de nomear o sistema
de codificao usado. O emissor pode escolher qualquer separador, desde que este no aparea
no corpo do texto; o receptor usa ento a informao no cabealho para determinar como
decodificar a mensagem.
O MIME compatvel com sistemas de e-mail antigos. Em particular, um sistema de email que transfere a mensagem no precisa entender a codificao utilizada no corpo do texto
ou na linha do cabealho MIME a mensagem tratada exatamente como qualquer outra
mensagem de e-mail. O sistema de e-mail transfere a mensagem sem interpretar as linhas do
cabealho e trata o corpo do texto como um nico bloco de texto.

22.6 E-mail e Aplicativos


Como os programas computacionais podem processar e-mail, a distribuio e
processamento de e-mails diferem das tradicionais notas de escritrio. Em particular, possvel
configurar um endereo de e-mail para corresponder a um programa, ao invs de uma caixa de
mensagens no disco rgido. Quando um e-mail chega, este destinado para o endereo, e o
sistema de e-mail envia uma cpia ao programa especificado, em vez de fazer uma cpia em
disco.
Permitir que um programa envie e receba e-mails torna possvel inventar maneiras
interessantes de interao. Por exemplo, considere um aplicativo que permita ao usurio obter
informaes de um banco de dados. O usurio cria uma requisio em uma mensagem de email, e envia a mensagem ao programa. O programa extrai a requisio da mensagem, acha a
resposta no banco de dados e envia um e-mail com a resposta.

157/223

22.7 Transferncia de E-mail


Aps o usurio compor uma mensagem de e-mail e especificar todos os destinatrios, o
software de e-mail transfere uma cpia da mensagem para cada destino. Na maioria dos
sistemas, duas peas separadas do software so necessrias. O usurio interage com a interface
de e-mail do programa quando compe ou l as mensagens. O sistema base do e-mail
chamado de transferncia de e-mail e lida com os detalhes de enviar uma cpia da mensagem
para um computador remoto. Quando o usurio acaba de compor uma mensagem e a envia, a
interface de e-mail coloca a mensagem em uma fila para que a transferncia de e-mail lide com
a mesma.
O programa de transferncia de e-mail espera as mensagens serem colocadas em sua
fila, e ento transfere uma cpia da mensagem para cada destinatrio. Enviar uma cpia da
mensagem para o computador local trivial, pois o programa de transferncia pode adicionar a
mensagem caixa de mensagens do usurio. J enviar uma cpia para um computador remoto
mais complexo. O programa de transferncia de e-mail se torna um cliente que conecta ao
servidor no computador remoto. O cliente envia a mensagem para o servidor, o qual passa uma
cpia da mensagem para a caixa de mensagens do destinatrio. A figura abaixo ilustra a
interao.

22.8 Simple Mail Transfer Protocol


Quando um programa de transferncia de e-mail se conecta ao servidor no computador
remoto, este forma uma conexo TCP atravs da qual se comunicam. Uma vez que a conexo
formada, os dois protocolos seguem o Simple Mail Transfer Protocol (SMTP), que permite ao
emissor se identificar, especificar o receptor e transferir a mensagem de e-mail.
Embora a transmisso de e-mails parea simples, o SMTP lida com muitos detalhes. Por
exemplo, o SMTP necessita de entrega confivel o emissor deve manter uma cpia da
mensagem at que o computador remoto tenha armazenado a mensagem em um local no
voltil. Alm do mais, o SMTP permite ao emissor perguntar se determinada caixa de
mensagem existe no computador remoto.

22.9 Otimizao de Mltiplos Destinatrio num Computador


A figura na seo 22.7 mostra uma mensagem de e-mail sendo enviada para uma nica
caixa de mensagens no computador remoto. Quando existem vrios destinatrios no mesmo
computador remoto, os programas de transferncia so otimizados para lidar com todos estes
destinatrios ao mesmo tempo. Isto feito criando apenas uma conexo no servidor, e so
158/223

especificados ento todos os destinatrios, transferindo apenas uma cpia da mensagem. O


servidor recebe apenas uma cpia da mensagem e a transfere a todos os destinatrios.
Esta otimizao importante por duas razes. Primeiro, ela diminui drasticamente o
consumo de banda para enviar uma mensagem de e-mail. Segundo, a otimizao reduz o delay
necessrio para todos os usurios receberem uma cpia da mensagem usurios que tenham
caixa de mensagem no mesmo servidor iro receber a mensagem aproximadamente ao mesmo
tempo. Mais importante, caso ocorra uma falha entre o cliente e o servidor, ou todos os
destinatrios a recebe ou nenhum destinatrio a recebe.

22.10 Listas e Remetentes de E-mails


Como os programas computacionais podem processar mensagens de e-mail, estes
podem ser manipulados para remeter mensagens. Por exemplo, muitos sistemas de e-mail
incluem um mail exploder ou mail fowarder, isto , um programa que pode remeter cpias de
mensagens. O exploder usa um banco de dados para determinar como lidar com a mensagem.
Normalmente chamada de lista de e-mails, cada entrada no banco de dados um conjunto de
endereos de e-mails.
Quando um e-mail chega, o exploder examina o destinatrio. Se o endereo do
destinatrio corresponder a uma lista no banco de dados, o exploder repassa uma cpia da
mensagem para cada endereo na lista.
Os exploders tornam possvel que um grande grupo de pessoas se comuniquem via email, sem que o emissor especifique todos os destinatrios. Para enviar a mensagem para todo o
grupo, a mensagem enviada para a lista de endereos. O exploder recebe a mensagem e passa
uma cpia da mensagem para cada membro da lista. Para receber um e-mail enviado pelo grupo,
o indivduo deve requisitar que seu endereo seja includo na lista de endereos.

22.11 Mail Gateways


Um exploder de e-mail pode operar em qualquer computador, repassando mensagens de
e-mail para uma lista grande de endereos, porm isso requer um tempo de processamento
significativo. Assim, muitas organizaes no permitem exploders ou listas de endereos muito
grandes em computadores convencionais. Ao invs disso, a organizao seleciona um pequeno
grupo de computadores para executar o exploder e repassar mensagens. O computador dedicado
a processar o e-mail normalmente chamado de mail gateway, email gateway ou e-mail relay.
A figura abaixo ilustra o processo de interao quando um usurio envia uma
mensagem a uma lista de e-mail ou a um e-mail gateway.

Como a figura mostra, a mensagem passa atravs da Internet no mnimo duas vezes.
Inicialmente uma nica cpia enviada do computador emissor ao e-mail gateway.
159/223

Aps este consultar o banco de dados das listas de endereos, o exploder gera uma
requisio para enviar cpias da mensagem. Um programa de transferncia de e-mail no
computador do gateway envia cada cpia da mensagem atravs da Internet para os
computadores destinatrios, onde um servidor armazena a mensagem na caixa de mensagem do
destinatrio.

22.12 Transmisso de E-mail e Endereos de E-mail


Como o endereo de e-mail do usurio engloba o nome do computador do usurio, uma
organizao que tem vrios computadores pode ter uma variedade de endereos de e-mail. Por
exemplo, considere o nome dos computadores para a hipottica Corporao Foobar. Se cada
endereo de e-mail de um empregado engloba o nome do computador deles, os endereos de email de dois empregados sero diferenciados: smith@venus.walnut.candy.foobar.com e
s_johnson@susie.soap.foobar.com .
Saber o endereo de e-mail de um empregado no ir ajudar algum a adivinhar o
endereo de e-mail de outro empregado.Para evitar confuso e tornar o endereo de e-mail para
todos empregados uniforme, a organizao pode escolher executar um e-mail gateway, e assinar
todos os endereos relativos ao gateway. Por exemplo, se a Corporao Foobar nomear seu
computador de gateway como: foobar.com, a corporao pode designar cada endereo de e-mail
dos empregados como: empregado@foobar.com. Onde empregado a string escolhida para
designar um nico empregado.
Como cada endereo tem o nome do gateway, a mensagem enviada para o empregado
na Corporao Foobar ir chegar ao computador gateway. O banco de dados no gateway deve
conter a entrada para cada empregado especificando qual a caixa de mensagem do mesmo em
um computador especifico da corporao. Mais importante, o banco de dados no gateway
permite endereos internos e externos diferentes endereos de e-mail externos podem ser
independentes dos usados por sistemas particulares. Por exemplo, se o empregado John T. Doe
usa o computador: bubbles.soap.foobar.com; e tem o nmero de 7 dgitos 8456311 designado
como identificador da caixa de mensagem, a entrada no gateway ser:
Lista
john_t_doe

Contedo
8456311@bubbles.soap.foobar.com

Alm de tornar os endereos de e-mails uniformes para toda a corporao, o gateway


permite uma flexibilidade maior. Como ningum fora da corporao conhece o computador
especfico de um empregado ou o identificador da caixa de mensagem de um empregado, a
corporao pode mover um empregado ou mudar o nome do computador do mesmo sem trocar
o endereo de e-mail do empregado.

22.13 Acesso Caixa de Mensagens


Em qual computador a caixa de mensagens deve ser instalada? Dada a opo de
escolha, a maioria dos usurios prefere ter a caixa de mensagens localizada no computador mais
utilizado pelos mesmos.
Infelizmente, as caixas de mensagens no podem ser instaladas em todos os sistemas
computacionais. Para entender o porqu, considere como a transferncia de e-mail funciona. A
caixa de mensagens apenas uma rea de memria em um disco; programas remotos no
acessam a caixa de mensagens diretamente. Ao invs disso, cada sistema computacional que
tenha uma caixa de mensagem deve executar um servidor de e-mail para aceitar as mensagens
160/223

que chegam e armazen-las na caixa de mensagens correta. Em sistemas computacionais


poderosos, o servidor de e-mail opera no plano de fundo, permitindo ao usurio executar outros
aplicativos ao mesmo tempo. Para permitir que mltiplos clientes enviem e-mails ao mesmo
tempo, a maioria dos servidores faz um arranjo para executar vrias cpias do programa
servidor ao mesmo tempo.
Uma caixa de mensagens no pode ser instalada em um computador, a no ser que o
mesmo execute um servidor de e-mail. Por exemplo, um computador que no tem memria
suficiente, no tem um sistema operacional que permita ao servidor ser executado no plano de
fundo, ou no tem capacidade suficiente de CPU, no pode ser um servidor. Mais importante,
esperado que os servidores sejam executados continuamente um computador que permanea
desligado ou desconectado da Internet por perodos extensos de tempo no ser eficiente como
servidor de e-mail. Assim, um computador pessoal no usualmente escolhido para executar
um servidor de e-mail.
Usar um computador separado para o e-mail pode ser inconveniente. Por exemplo,
algum que use um computador pessoal em seu escritrio ir achar incmodo mover-se at
outro computador para apenas ler um e-mail. Para evitar este problema, os protocolos TCP/IP
incluem um protocolo que fornece acesso caixa de mensagens. O protocolo permite caixa de
mensagem de um usurio residir em um computador que executa o servidor de e-mail, e
tambm permite ao usurio acessar itens na caixa de mensagem de outro computador.
Conhecido como Post Office Protocol (POP), o protocolo requer que um servidor
adicional seja executado no computador com a caixa de mensagens. O servidor adicional usa o
protocolo POP. O usurio executa um software de e-mail que se torna o cliente do servidor POP
para acessar o contedo da caixa de mensagens. A figura abaixo ilustra o uso do POP.

Como a figura mostra, o computador que tem a caixa de mensagens deve executar dois
servidores. O servidor convencional de e-mail aceita as mensagens de e-mail e as armazena na
caixa de mensagens correta. O e-mail pode ir tanto na direo do emissor original ou do
gateway de e-mail. E o servidor POP permite ao usurio em um computador remoto acessar a
caixa de mensagens.
Ambos os servidores, o de e-mail e o POP, se comunicam atravs da Internet, porm
temos grandes diferenas. Primeiro, o servidor de e-mail utiliza o protocolo SMTP, enquanto
que o servidor POP utiliza o protocolo POP. Segundo, o servidor de e-mail aceita uma
mensagem de um emissor arbitrrio, enquanto que o servidor POP permite apenas o usurio
acessar sua caixa de mensagens aps o mesmo fazer uma autenticao com senha. Terceiro, o
servidor de e-mail pode transferir apenas mensagens de e-mail; enquanto o servidor POP pode
fornecer informaes sobre o contedo da caixa de mensagens.

22.14 Conexo Dial-up e POP


Embora a figura da seo 22.13 mostre um cliente acessando o servidor POP atravs da
Internet, o POP especialmente popular com os usurios que utilizam conexes dial-up de
telefone. Nestes casos, o computador com a caixa de mensagens permanece conectado
Internet, como a figura mostra, porm o computador do usurio no precisa estar
161/223

permanentemente conectado Internet. Ou seja, para receber um e-mail o usurio simplesmente


forma uma conexo dial-up entre o modem e seu telefone com o computador com a caixa de
mensagens; ou para outro computador conectado Internet. Uma vez conectado a um
computador na Internet, o usurio executa o cliente POP para conectar ao servidor e acessar o email.

162/223

Captulo 23 Transferncia de arquivos e Acesso


Remoto de arquivos

23.1 Introduo
Os captulos anteriores definiram o paradigma cliente-servidor e deram um exemplo de
uma aplicao de rede. Este captulo apresenta outro exemplo que permite transferir cpias de
um arquivo de um computador para outro. Alm da discusso sobre a interface de transferncia
de arquivos, o captulo considera o acesso aos arquivos e explica como o software utilizado usa
o paradigma cliente-servidor.

23.2 Transferncia de Dados e Processamento Distribudo


Antes das redes, a transferncia de dados de um computador para outro requeria o uso
de mdias magnticas como fitas e discos. Os dados eram escritos no meio magntico por uma
aplicao em um dos computadores e esse meio era fisicamente movido at o outro computador.
Para atravessar longas distncias, a mdia era transportada (por exemplo, pelo correio). As redes
de computadores reduziram substancialmente esse delay e tornaram possvel uma nova forma de
computao, na qual dois programas em dois ou mais computadores, cooperam na execuo da
computao. A sada de um programa se torna a entrada de outro.
A maior desvantagem da comunicao direta atravs de programas que ela requer
coordenao entre as aplicaes dos vrios computadores, e tal coordenao pode ser difcil. Os
administradores devem garantir que os computadores estejam rodando e que as aplicaes
estejam prontas ao mesmo tempo. Alm disso, para executar com maior eficincia, os
administradores devem prevenir que outros programas nos computadores utilizem grandes
quantidades de processamento da CPU, de espao da memria ou de largura de banda da rede.
Uma segunda desvantagem da comunicao direta est na inabilidade de recuperao
diante de falhas. Se algum computador ou programa falha, a computao inteira deve ser
recomeada desde o incio. Pois nenhum resultado intermedirio salvo, e tais falhas podem ser
especialmente onerosas se elas ocorrem tardiamente durante longa fase de computao (por
exemplo, depois de vrias horas de processamento).

23.3 Salvando Resultados Intermedirios


Programadores e administradores observaram que uma simples tcnica pode superar
ambas as desvantagens da comunicao direta. Ao invs de enviar dados atravs da rede, assim
que ela gerada, cada aplicao guarda os resultados intermedirios em arquivos no disco. Isto
, uma aplicao l as entradas de um arquivo no disco, processa-as e escreve as sadas em um
arquivo. Os dados so transferidos de um arquivo de sada de um computador para um arquivo
de entrada de outro.
As vantagens da utilizao de arquivos intermedirios so evidentes. Primeiro, devido
aos dados serem salvos a cada passo do processamento, um administrador pode recuperar o
mesmo depois de uma falha, sem ter que refazer os passos j processados. Segundo, isso
permite aos administradores agendar cada passo do processo independentemente, e a soluo do
arquivo intermedirio elimina a maioria dos problemas de logstica, presente quando so
utilizados vrios computadores simultaneamente. Se todos os computadores se conectam em
uma rede compartilhada, usando arquivos intermedirios, possvel evitar que todos os passos
do processamento disputem faixas de largura banda da rede.

163/223

23.4 Generalizao da Transferncia de Arquivos


Assim que as aplicaes de rede comearam a utilizar os arquivos intermedirios,
programadores escreviam cdigos que transferiam arquivos completos de um computador para
outro. Devido aos passos requeridos para transferncia de um arquivo para uma aplicao serem
similares aos passos requeridos para transferncia de um arquivo para outro, os programadores
duplicaram o cdigo; fazendo apenas pequenas modificaes em nomes de arquivos ou no
modo como os dados eram representados. Comeou, ento, a parecer que uma s aplicao
geral poderia ser criada para trabalhar com muitas aplicaes. O problema se tornou conhecido
como problema de transferncia de arquivos, e o software que movia dados arbitrrios de um
computador para outro ficou conhecido como software de transferncia de arquivos.
Para ser til, os softwares de transferncia de arquivos deviam ser genricos e flexveis.
Deviam permitir a transferncia de arquivos arbitrrios e acomodar diversos tipos de arquivos.
Devido ao fato de a Internet se conectar a diferentes tipos de sistemas, os softwares de
transferncia de arquivos devem adaptar-se s diferenas entre as maneiras como os sistemas
armazenam seus arquivos. Por exemplo, cada sistema operacional tem regras sobre nomes de
arquivos um nome que vlido para um sistema pode ser no vlido para outro. Alm disso,
devido maioria dos sistemas operacionais utilizarem as contas de login para definir a posse do
arquivo, o dono em um sistema operacional pode no ter uma conta correspondente no outro
computador. Finalmente, os softwares de transferncia de arquivos devem adaptar-se a outras
pequenas diferenas na representao dos arquivos; informaes sobre o tipo e mecanismos de
proteo dos arquivos.

23.5 Interatividade e Conjunto de Paradigmas da Transferncia


Alguns sistemas de transferncia de arquivos usavam acesso batch, similar ao usado
para transferncia de e-mail. Um usurio abre um programa que o permite formar um pedido,
que especifica detalhes como o computador remoto a contatar e os arquivos a serem
transmitidos. O programa, ento, coloca o pedido em uma fila e comea um processo de
transferncia. O programa de transferncia contata um servidor em uma maquina remota e
transfere os arquivos especificados. Se a mquina remota ou a rede estiverem indisponveis, o
programa de transferncia automaticamente tenta refazer a transmisso mais tarde. Quando a
transferncia estiver completa, o programa de transferncia avisa o usurio.
Transferncia batch mais til quando a probabilidade de conseguir acesso ao
computador remoto pequena ou o tempo necessrio para a transferncia grande. Por
exemplo, a transferncia batch funcionou muito bem no incio, porque as primeiras redes no
eram confiveis; no era estranho que uma rede no estivesse funcionando. A transferncia
batch tambm funciona bem quando um grande arquivo deve ser enviado por uma conexo com
pequena largura de banda. Em tais circunstncias, um programa de transferncia batch lida com
a transferncia automaticamente, sem que o usurio precise esperar. O programa de
transferncia tenta contato com a mquina remota periodicamente. Quando a comunicao
bem sucedida, o programa espera pela transferncia do arquivo por completo e termina a
comunicao.
A transferncia batch tem desvantagens tambm. Em situaes onde redes e
computadores permanecem disponveis a maior parte do tempo, a transferncia interativa mais
conveniente. O usurio recebe a informao continuamente, assim que o programa de
transferncia contata o servidor no computador remoto, e transfere o arquivo requerido. Por
exemplo, o usurio descobre imediatamente se o nome da mquina remota contm um erro.
Similarmente, um usurio toma conhecimento rapidamente sobre um nome de arquivo incorreto
ou de um pedido que foi negado, porque a proteo do arquivo remoto no permite a
transferncia. Finalmente, um usurio notificado imediatamente quando a transferncia estiver
completa.
Um servio de transferncia de arquivo pode oferecer as vantagens de ambas as
abordagens de transferncias batch e interativa.
164/223

Para tal, o servio deve prover uma interface que permita tanto um usurio humano ou
um programa utiliz-lo-no. Para operar interativamente, o usurio humano abre o programa,
entra com um pedido e espera pela resposta. Para operar no modo batch, um programa de
transferncia administra a fila de pedidos. Quando ele lida com um pedido, o programa de
transferncia passa o pedido para o servio e espera pelo trmino da transferncia.

23.6 O Protocolo de Transferncia de Arquivos (FTP)


A maioria dos servios de transferncia de arquivos pela Internet usa o File Transfer
Protocol (FTP). Um protocolo de propsito geral, o FTP lida com muitos conceitos discutidos
anteriormente. O FTP permite transferir arquivos arbitrrios e inclui um mecanismo que permite
aos arquivos pertencerem a algum usurio e terem restries de acesso. Mais importante ainda,
ele esconde os detalhes dos sistemas do computador individual. O FTP acomoda
heterogeneidade ele pode ser usado para transferir uma cpia de um arquivo entre dois
computadores quaisquer.
O FTP est entre os protocolos de aplicao mais antigos ainda usados na Internet.
Originalmente definido como parte dos protocolos ARPANET, o FTP veio antes do TCP e do
IP. Assim que a pilha TCP/IP foi criada, uma nova verso do FTP foi desenvolvida para
trabalhar com os novos protocolos da Internet.
O FTP est entre as aplicaes mais utilizadas. Anteriormente na histria da Internet,
datagramas transferindo arquivos tomava aproximadamente um tero de todo o trfego da
Internet; o trfego gerado por servios como e-mail e DNS no chegavam nem perto de exceder
o que era gerado pelo FTP.

23.7 Modelo Geral do FTP e Interface com o Usurio


O FTP projetado para permitir o uso interativo ou batch. A maioria dos usurios
executa o FTP interativamente eles rodam um cliente FTP que estabelece a comunicao com
o servidor especificado para transferir os arquivos. Entretanto, alguns softwares executam o FTP
automaticamente, sem que o usurio tenha que interagir com um cliente FTP. Por exemplo, uma
interface MIME para e-mails pode extrair e seguir uma referncia FTP. Quando ela executa o
FTP, um programa lida com todos os detalhes. O programa interage com o FTP e, ento,
informa ao usurio se a operao foi bem sucedida ou no; o programa esconde completamente
a interface FTP do usurio.
Quando um usurio interage interativamente com o FTP, o usurio comunica-se com
uma interface atravs de comandos. O FTP executa um prompt no qual o usurio responde
atravs da insero do comando. O FTP executa tal comando e lana outro prompt.
O FTP tem comandos que permitem ao usurio especificar um computador remoto,
prover autorizao, descobrir se arquivos remotos esto disponveis e requerer a transferncia de
um ou mais arquivos. Alguns comandos FTP requerem pouco ou nenhum tempo para execuo,
enquanto que outros podem levar um tempo significativo; por exemplo, pode levar muitos
segundos para transferir a cpia de um arquivo grande.

23.8 Comandos FTP


Embora o padro do protocolo FTP especifique como o software de FTP em um
computador interage com o software de FTP de outro, ele no especifica a interface com o
usurio. Conseqentemente, a interface disponvel ao usurio pode variar de uma
implementao de FTP para outra. Para ajudar a manter a similaridade entre os produtos, muitos
fabricantes tm escolhido adotar a interface que primeiro apareceu em uma verso anterior do
FTP, escrita para o sistema BSD UNIX. A interface BSD para o FTP suporta mais de 50
comandos individuais.
165/223

Segue abaixo a lista dos nomes dos comandos FTP:

cr

macdef

proxy

sendport

delete

mdelete

put

status

account

debug

mdir

pwd

struct

append

dir

mget

quit

sunique

ascii

disconnect

mkdir

quote

tenex

bell

form

mls

Recv

trace

binary

get

mode

remotehelp

type

bye

glob

mput

rename

user

case

hash

nmap

reset

verbose

cd

help

ntrans

rmdir

cdup

lcd

open

runique

close

ls

prompt

send

A lista de comandos pode parecer grande demais para um iniciante por duas razes.
Primeira, a interface BSD contm opes que so raramente implementadas (por exemplo, o
comando proxy que permite comunicao simultnea com dois sites remotos). Segunda, a
interface prov muitas opes que lidam com detalhes antigos, alguns dos quais se tornaram
irrelevantes. Por exemplo, quando a interface foi definida, j existia uma verso do FTP para um
sistema operacional chamado TENEX. Entretanto, devido representao usada pelo TENEX
diferir da representao de arquivos usada pelo UNIX, foi introduzido um esquema para traduzir
uma representao para outra, e para isso foi criado o comando tenex, o qual executava tal
traduo. Hoje em dia, outros sistemas operacionais tm tomado o lugar do TENEX, fazendo
com que esse comando se tornasse inutilizado.
Similarmente, antigos sistemas computacionais implementavam o carriage control,
colocando um caracter extra no incio de cada linha do arquivo de texto, para especificar o
espaamento da impressora. Existem muitos padres de carriage control. Quando a interface
BSD foi projetada, opes foram includas a fim de permitir ao usurio especificar que um
arquivo particular inclusse o carriage control. A inteno era ter uma traduo do FTP entre os
diferentes padres de carriage control. Devido aos arquivos serem agora armazenados raramente
com carriage control, somente alguns fabricantes projetaram essa opo.
O FTP tambm acomoda diversas representaes de arquivos de texto. Por exemplo,
alguns sistemas operacionais usam um nico caracter de preenchimento de linha para separar as
linhas de um texto. Outros sistemas usam uma seqncia de dois caracteres que consiste em um
carriage return, seguido por um preenchimento de linha. O comando cr permite ao usurio
especificar qual representao uma mquina remota usa, tornando possvel ao FTP traduzir as
representaes local e remota.
Uma forma final de complexidade aparece porque a interface BSD tambm inclui
apelidos (por exemplo, muitos nomes para a mesma funo). Por exemplo, ambos os comandos
close ou disconnect podem ser utilizados para terminar uma conexo com um computador
remoto. Similarmente, bye e quit podem ser utilizados para sair do programa FTP e help e ?
podem ser utilizados para obter uma lista dos comandos disponveis.
166/223

23.9 Conexes, Autorizaes e Permisses de Arquivos


Felizmente, a maioria dos usurios precisa apenas de alguns comandos FTP para
transferir um arquivo. Aps iniciar o programa FTP, o usurio deve inserir o comando open
antes de qualquer arquivo a ser transferido. Esse comando precisa que o usurio fornea um
nome de domnio de um computador remoto para ento formar uma conexo TCP com o
computador.
Conhecida como Conexo de Controle, a conexo TCP a uma mquina remota usada
para enviar os comandos. Por exemplo, uma vez que uma conexo tenha sido aberta, o FTP
requer do usurio o fornecimento da autorizao para o computador remoto. Para tal, o usurio
deve entrar o nome de login e a senha: a maioria das verses do FTP lana um prompt para cada
um. O nome de login, o qual deve ser correspondente a uma conta vlida no computador
remoto, determina quais arquivos podem ser acessados. Se o usurio FTP fornecer o nome de
login smith, ele ter a mesma permisso de acesso aos arquivos que algum que entre
diretamente no computador remoto com o mesmo login.
Depois de abrir uma conexo de controle e obter autorizao, o usurio pode transferir
arquivos. A conexo de controle permanece aberta pelo tempo que for necessrio. Quando o
usurio termina de acessar um computador, ele deve entrar com o comando close, para terminar
a conexo de controle. Fechar a conexo de controle no termina o uso do programa FTP o
usurio pode abrir uma nova conexo de controle com outro computador.

23.10 Acesso Annimo de Arquivos


Embora o uso de nomes de login e senhas possam ajudar a manter a segurana dos
arquivos de acessos no autorizados, tal autorizao pode tambm ser inconveniente. Em
particular, pedir que cada usurio tenha um nome de login e senha vlidos torna difcil permitir
acessos arbitrrios. Por exemplo, suponha que uma corporao encontre um problema em um
dos programas que vende. Ela pode criar um arquivo de mudanas e torn-lo disponvel para
qualquer pessoa.
Para permitir o acesso arbitrrio, muitos sites seguem a conveno de estabelecer uma
conta especial usada pelo FTP. A conta, a qual tem o nome de login annimo, permite a um
usurio arbitrrio acesso mnimo aos arquivos. Sistemas mais antigos usavam a senha guest para
o acesso annimo. Verses mais recentes do FTP freqentemente pedem que o usurio envie o
seu endereo de e-mail como sua senha, possibilitando ao programa FTP remoto enviar ao email do usurio quaisquer problemas que ocorram. Em ambos os casos, o termo FTP annimo
usado para descrever o processo de obteno de acesso com o nome de login annimo.

23.11 Transferncia de Arquivos em Ambas as Direes


Interessantemente, o FTP permite a transferncia de arquivos em ambas as direes.
Depois que um usurio estabelece a conexo com o computador remoto, ele pode obter uma
cpia de um arquivo remoto ou transferir a cpia de um arquivo local para a mquina remota.
claro que, tais transferncias esto sujeitas s permisses de acesso o computador remoto pode
estar configurado para proibir a criao de novos arquivos ou mudanas nos arquivos j
existentes; e o computador local com as restries convencionais de acesso para cada usurio.
O usurio entra com o comando get ou mget para resgatar uma cpia de um arquivo
remoto. O comando get, mais freqentemente utilizado, lida com a transferncia de um s
arquivo por vez. O get requer do usurio a especificao do nome do arquivo remoto a ser
copiado; o usurio pode entrar um segundo nome se o arquivo local no qual a cpia deva ser
colocada tiver um nome diferente do arquivo remoto. Se o usurio no fornecer o nome do
arquivo remoto na linha em que colocar o comando, o FTP exige do usurio a solicitao de
nome.
167/223

Uma vez que ele sabe o nome do arquivo, o FTP executa a transferncia e informa ao
usurio quando ela estiver completa. O comando mget permite ao usurio o pedido de vrios
arquivos ao mesmo pedido. O usurio especifica uma lista de arquivos remotos e o FTP
transfere cada arquivo para o computador do usurio.
Para transferir uma cpia de um arquivo local para o computador remoto, o usurio
entra o comando put, send ou mput. Put e send so dois nomes para o mesmo comando que
transfere um s arquivo. Assim como com o get, o usurio deve entrar o nome de um arquivo no
computador local e pode tambm entrar um nome de arquivo diferente para usar no computador
remoto. Se nenhum nome de arquivo estiver presente na mesma linha de comando, o FTP
solicita-o ao usurio. O comando mput anlogo ao mget ele permite ao usurio pedir a
transferncia de vrios arquivos com um s comando. O usurio especifica uma lista de
arquivos e o FTP transfere cada um.

23.12 Expanso por Caracter Curinga em Nomes de Arquivos


Para facilitar aos usurios a especificao de um conjunto de arquivos, o FTP permite
que o sistema do computador remoto execute uma expanso de nomes de arquivos tradicional.
O usurio entra com uma abreviao, a qual o FTP expande para produzir um nome de arquivo
vlido. Nas abreviaes, o caracter curinga toma o lugar de zero ou mais caracteres. Muitos
sistemas operacionais utilizam o asterisco (*) como caracter curinga. Em tais sistemas, a
abreviao: li*, encontraria todos os arquivos que comeam com o prefixo li. Alm disso, se o
computador remoto tiver os seis arquivos: dark, light,lone,crab,link,tuft.
O FTP expandiria a abreviao li* para dois nomes: light e link. A expanso de nomes
de arquivos pode ser especialmente til com os comandos mget e mput, porque a expanso torna
possvel a especificao de um grande conjunto de arquivos sem ter que entrar cada nome de
arquivo explicitamente.

23.13 Traduo de Nomes de Arquivos


Devido ao FTP poder ser usado entre sistemas operacionais diferentes, o software deve
acomodar as diferenas entre a sintaxe dos nomes de arquivos. Por exemplo, alguns sistemas
operacionais limitam os nomes de arquivos a letras maisculas, enquanto outros permitem uma
mistura de letras minsculas e maisculas. Similarmente, alguns sistemas operacionais
permitem que o nome do arquivo contenha at 128 caracteres, enquanto que outros restringem
os nomes a 8 ou menos caracteres.
As diferenas entre os nomes de arquivos podem ser especialmente importantes quando
usados com abreviaes (por exemplo, em um comando mget ou mput). Em tais comandos, o
usurio pode especificar uma abreviao que o FTP expande em uma lista de arquivos.
Infelizmente, o nome de arquivo que vlido em um computador pode ser ilegal em outro.
Para lidar com as incompatibilidades ao longo dos sistemas operacionais, a interface
BSD para o FTP permite que o usurio defina regras que especifiquem como traduzir um nome
de arquivo quando o mesmo for transferido para um novo sistema operacional. Dessa forma, o
usurio pode especificar que o FTP traduza cada letra minscula para a sua maiscula
equivalente.

23.14 Mudando de Diretrio e Listando o Contedo


Muitos computadores tm um sistema hierrquico de arquivos que posiciona cada
arquivo dentro de um diretrio ou pasta. A hierarquia existe porque um diretrio pode conter
outros diretrios, assim como arquivos. O FTP suporta um sistema hierrquico de arquivos
incluindo o conceito de diretrio atual a qualquer momento, os pontos local e remoto de uma
conexo de controle esto cada um em um diretrio especfico.
168/223

Todos os nomes de arquivos so interpretados no diretrio atual e todas as


transferncias de arquivos afetam o diretrio atual. O comando pwd pode ser usado para
encontrar o nome do diretrio remoto.
Os comandos cd e cdup permitem ao usurio controlar o diretrio que o FTP est
usando no computador remoto. O comando cd muda para um diretrio especfico; um nome de
diretrio vlido deve ser fornecido na linha de comando. O comando cdup muda para um
diretrio superior (por exemplo, move um nvel para cima na hierarquia). O cdup conveniente
porque o nome necessrio para se referir a um diretrio superior pode no ser bvio. Por
exemplo, o sistema UNIX usa o nome .. para se referir ao diretrio superior do diretrio atual.
Para determinar um conjunto de arquivos disponveis em um dado diretrio no
computador remoto, o usurio pode entrar com o comando ls. Ele produz uma lista dos nomes
de arquivos, mas no diz nada sobre o tipo ou contedo de cada arquivo. Por isso, um usurio
no pode determinar quando que um dado nome se refere a um arquivo de texto, a uma imagem
grfica ou outro diretrio.

23.15 Tipos de Arquivos e Modos de Transferncia


Embora as representaes de arquivos utilizadas por dois sistemas operacionais possam
diferir, o FTP no tenta lidar com todas as representaes possveis. Ao invs disso, o FTP
define dois tipos bsicos de transferncia que englobam a maioria dos arquivos: textual e
binria. O usurio deve selecionar o tipo de transferncia, que permanece o mesmo durante toda
a transferncia do arquivo.
A transferncia textual utilizada para arquivos de texto bsicos. Um arquivo de texto
contm uma seqncia de caracteres separados com linhas. A maioria dos sistemas operacionais
utiliza um conjunto de caracteres ASCII ou EBCDIC para representar os caracteres em um
arquivo de texto. O usurio, que conhece o conjunto de caracteres usado pelo computador
remoto, pode usar o comando ASCII ou EBCDIC para especificar a transferncia textual e usa o
FTP para traduzir entre os conjuntos de caracteres dos computadores local e remoto quando
copiando um arquivo.
A nica alternativa para a transferncia textual no FTP a transferncia binria, a qual
deve ser usada para todos os arquivos que no sejam texto. Por exemplo, um arquivo de udio,
uma imagem grfica ou uma matriz de nmeros de ponto flutuante devem ser transferidos no
modo binrio. O usurio deve colocar o comando binary para colocar o FTP em modo binrio.
O FTP no interpreta o contedo de um arquivo transferido no modo binrio e no
traduz entre uma representao e outra. Ao invs disso, a transferncia binria simplesmente
produz uma cpia os bits de um arquivo so reproduzidos sem mudanas. Infelizmente, uma
transferncia binria pode no produzir o resultado esperado. Por exemplo, considere um
arquivo de nmeros de ponto flutuante de 32 bits. No modo binrio, o FTP copiar os bits do
arquivo de um computador para outro sem mudanas. Mas se as representaes de ponto
flutuante usadas pelos computadores diferir, os computadores interpretaro os valores no
arquivo diferentemente.

23.16 Verbose Output


Toda sada do FTP comea com um nmero de trs dgitos que identifica a mensagem.
Por exemplo, o FTP coloca 226 no comeo de uma mensagem que informa ao usurio que a
transferncia foi completada. Similarmente, o FTP remoto coloca 221 no comeo de mensagens
que confirmam um pedido de fechamento de conexo de controle.
O usurio pode escolher entre o FTP fornecer mensagens com informaes (modo
verbose) ou omitir tais mensagens e exibir apenas os resultados (modo silencioso). Por exemplo,
no modo verbose, o FTP calcula e mostra o nmero total de bytes de uma transferncia, o tempo
necessrio para a sua concluso e o nmero de bytes transferidos por segundo. Para controlar o
modo, o usurio entra o comando verbose.
169/223

Tal comando como uma chave que reverte o modo toda vez que executado. Por isso,
ao entrar o comando verbose uma vez, o modo verbose desligado, e ao entr-lo mais uma vez,
o modo verbose ligado mais uma vez.

23.17 Interaes Cliente-Servidor no FTP


Como outras aplicaes de rede, o FTP utiliza o paradigma cliente-servidor. O usurio
roda uma aplicao FTP local, a qual interpreta seus comandos. Quando o usurio entra com o
comando open e especifica um computador remoto, a aplicao local se torna um cliente FTP
que utiliza o TCP para estabelecer uma conexo de controle com um servidor FTP em um
computador especfico. O cliente e o servidor usam o protocolo FTP quando esto se
comunicando atravs da conexo de controle. Isto , o cliente no transmite os caracteres
digitados diretamente para o servidor. Ao invs disso, quando o usurio entra um comando, o
cliente interpreta o comando. Se o comando precisar de interao com o servidor, o cliente
forma um pedido usando o protocolo FTP e o envia ao servidor. O servidor usa o protocolo FTP
quando envia a resposta.

23.18 Conexes de Controle e de Dados


O FTP usa uma conexo de controle apenas para enviar comandos e receber respostas.
Quando ele transfere um arquivo, no envia os dados pela conexo de controle. Ao invs disso,
o cliente e o servidor estabelecem uma conexo de dados, separada para cada transferncia de
arquivo, e a utiliza para enviar um arquivo e ento a fecha. Se o usurio comea uma nova
transferncia, o cliente e o servidor estabelecem uma nova conexo. Para evitar conflitos entre
as duas conexes, o FTP utiliza nmeros de portas diferentes para cada uma.
Embora as conexes de dados apaream e desapaream freqentemente, a conexo de
controle permanece por toda a sesso. Por isso, enquanto uma transferncia est ocorrendo, o
cliente e o servidor tm duas conexes abertas: a de controle e a de dados (para a transferncia).
Uma vez que a transferncia estiver completa, o cliente e o servidor fecham a conexo de dados
e continuam a utilizar a conexo de controle.

23.19 Conexes de Dados e Fim de Arquivo


A utilizao de conexes separadas para a transferncia e para o controle tem diversas
vantagens. Primeira, esse esquema mantm os protocolos mais simples e torna a implementao
mais fcil dados de um arquivo nunca sero confundidos com comandos FTP. Segunda,
devido conexo de controle se manter por toda a sesso, ela pode ser utilizada durante a
transferncia (por exemplo, um usurio pode enviar um pedido para abortar a transferncia).
Terceira, o cliente e o servidor podem usar uma condio de fim de arquivo na conexo de
dados para informar outra parte quando todos os dados foram recebidos.
Utilizar a condio de fim de arquivo para terminar a transferncia importante, porque
permite que o arquivo mude de tamanho durante a transferncia. Por exemplo, considere o caso
onde uma aplicao est escrevendo em um arquivo no computador servidor, enquanto o FTP
est enviando uma cpia de um arquivo para o cliente. Devido transferncia do arquivo ser
feita em uma conexo diferente, o servidor no precisa dizer ao cliente o tamanho do arquivo.
Ao invs disso, o servidor abre uma conexo, l os dados do arquivo e os envia atravs da nova
conexo. Quando o servidor chega ao fim do arquivo, ele fecha a conexo de dados, fazendo
com que o cliente receba uma condio de fim de arquivo. Devido ao servidor no dizer ao
cliente quantos dados esperar, o arquivo pode aumentar durante a transferncia sem causar
problemas.

170/223

23.20 Protocolo de Transferncia de Arquivos Trivial


Os protocolos da Internet incluem um segundo servio de transferncia de arquivos
conhecido por TFTP, o Protocolo de Transferncia de Arquivos Trivial. O TFTP difere do FTP
em muitas maneiras. Primeira, a comunicao entre um cliente e um servidor TFTP usa UDP ao
invs do TCP. Segunda, o TFTP s suporta transferncia de arquivos. Isto , o TFTP no
suporta interao e no possui um grande conjunto de comandos. Mais importante ainda, o
TFTP no permite ao usurio listar os arquivos de um diretrio ou perguntar a um servidor
quais os nomes dos arquivos disponveis. Terceira, o TFTP no tem autorizao. O cliente no
precisa enviar um nome de login e senha; o arquivo pode ser transferido apenas se suas
permisses permitirem acesso global.
Embora o TFTP seja menos poderoso que o FTP, ele tem duas vantagens. Primeira, o
TFTP pode ser usado em ambientes onde o UDP est disponvel, mas o TCP no. Segundo, o
cdigo para o TFTP requer menos memria que o cdigo para o FTP. Embora essas vantagens
no sejam importantes em computadores de propsito geral, ele pode ser importante em um
computador pequeno ou em um dispositivo de hardware de propsito especfico.
O TFTP especialmente til para a inicializao de um dispositivo de hardware que no
tenha um disco onde armazenar o software de sistema. Tudo o que o dispositivo precisa de
uma conexo com a rede e uma pequena quantidade de memria Read-Only (ROM), na qual o
TFTP, o UDP e o IP estejam configurados. Quando ele ligado, o dispositivo executa o cdigo
na ROM, o qual envia um broadcast de um pedido TFTP para a rede local. O servidor TFTP na
rede configurado para responder ao pedido, enviando um arquivo que contenha o programa
binrio a ser executado. O dispositivo recebe o arquivo, o carrega em sua memria e comea a
executar o programa.
O boot atravs da rede adiciona flexibilidade e reduz custos. Como um servidor
separado pode existir para cada rede, um servidor pode ser configurado para suprir a verso de
software que est configurado para aquela rede. O custo reduzido, porque o software pode ser
mudado sem ter que mudar o hardware. Por exemplo, o fabricante pode soltar uma nova verso
do software para o dispositivo, sem alterar o hardware ou ter que instalar uma nova ROM.

23.21 Sistema de Arquivos de Rede


Embora ele seja til, a transferncia de arquivos no tima para todas as transferncias
de dados. Para entender o porqu, considere uma aplicao rodando no computador A que
precisa adicionar uma mensagem de uma linha a um arquivo no computador B. Antes que a
mensagem possa ser anexada, um servio de transferncia de arquivo requer que o arquivo
inteiro seja transferido do computador B para o computador A. Ento, o arquivo atualizado deve
ser transferido de A de volta para o B. Transferir um arquivo grande de um computador para
outro duas vezes introduz grandes delays e consome largura de banda da rede. Mais importante
ainda, a transferncia desnecessria, porque o contedo do arquivo nunca sero utilizados no
computador A.
Para acomodar aplicaes que s precisam ler ou escrever parte de um arquivo, o
TCP/IP inclui o servio de acesso a arquivos. Diferente de um servio de transferncia de
arquivos, o servio de acesso a arquivos permite que um cliente remoto copie ou mude
pequenos pedaos sem ter que copiar o arquivo inteiro.
O mecanismo de acesso a arquivos usado com o TCP/IP conhecido como Network
File System (NFS). O NFS permite que uma aplicao abra um arquivo remoto, mova-se para
uma posio especfica dentro dele e leia ou escreva dados comeando dessa posio. Por
exemplo, para adicionar dados a um arquivo usando NFS, uma aplicao vai para o fim do
arquivo e escreve os dados. O software NFS cliente envia os dados para o servidor onde o
arquivo guardado com um pedido de escrita de dados para ele. O servidor atualiza o arquivo e
envia uma mensagem. Apenas os dados que esto sendo lidos ou escritos viajam atravs da
rede: uma pequena quantidade de dados pode ser adicionada a um grande arquivo sem que o
arquivo inteiro seja copiado.
171/223

Alm da reduo de largura banda da rede, o esquema de acesso a arquivos usado pelo
NFS permite acesso compartilhado a arquivos. Um arquivo que est em um servidor NFS pode
ser acessado por vrios clientes. Para impedir que outros clientes interfiram com atualizaes, o
NFS permite que um cliente trave o arquivo. Quando ele termina de fazer as modificaes,
destrava o arquivo, permitindo o acesso dos demais.
A interface para o NFS diferente da interface para o FTP. Ao invs de criar uma
aplicao cliente separada, o NFS integrado em um sistema de arquivos de computador. Tal
integrao possvel porque o NFS prov as operaes convencionais de arquivos como abrir,
ler e escrever. Para configurar o NFS, um diretrio especial criado no sistema de arquivos do
computador, e associado a um computador remoto. Quando um programa de aplicao realiza
uma operao em um arquivo nesse diretrio, o software NFS cliente utiliza a rede para realizla em um arquivo no sistema de arquivos remoto. Por isso, uma vez que o NFS tenha sido
instalado e configurado, o sistema de arquivos do computador conter diretrios que
correspondem a sistemas de arquivos remotos qualquer operao realizada em um arquivo
dentro de um diretrio especial ocorre no arquivo remoto correspondente. A principal vantagem
em tal esquema a flexibilidade: qualquer programa de aplicao pode ser usado em um
arquivo remoto, porque a aplicao precisa apenas realizar operaes padro de arquivos.

172/223

Captulo 24 Pginas da World Wide Web e Navegao

24.1 Introduo
Captulos anteriores mostraram exemplos de servios de rede providos por programas
de aplicao. Os captulos descreveram as funes de clientes e de servidores, e mostraram
como cada servio usa o paradigma cliente-servidor. Esse captulo continua a discusso
considerando a World Wide Web e o Web Browsing interativo.
Depois de descrever o modelo de hipertexto e o conceito geral da Web, o captulo
examina a estrutura do software do browser. Mostra como o browser reage a uma seleo do
usurio, tornando-se um cliente e contatando o servidor para obter a informao e, ento,
disponibiliz-la ao usurio. O captulo tambm explica como um URL colocado em um
documento e descreve como um browser usa um URL para determinar qual protocolo utilizar e
qual servidor contatar.

24.2 Interface de Browser


A World Wide Web (WWW) um localizao onde se encontra informaes em larga
escala e on-line, as quais podem ser procuradas por usurios atravs de um programa de
aplicao interativo chamado browser. A maioria dos browsers tem uma interface point and
click o browser mostra a informao em uma tela de computador e permite que o usurio
navegue com o mouse. A informao disponibilizada inclui texto e grfico. Ainda mais,
algumas das informaes na tela so destacadas para indicar que um item selecionvel.
Quando o usurio posiciona o cursor sobre um item selecionvel e clica, o browser mostra
novas informaes correspondentes ao item selecionado.

24.3 Hipertexto e Hipermdia


Tecnicamente, a Web um sistema de hipermdia distribuda que suporta acesso
interativo. O sistema de hipermdia prov uma extenso direta do sistema tradicional de
hipertexto. Em ambos os sistemas, a informao armazenada como um conjunto de
documentos. Alm da informao bsica, o documento pode conter ponteiros para outros
documentos nesse conjunto. Cada ponteiro associado a um item selecionvel que permite que
o usurio selecione o item e siga o ponteiro at o documento relacionado. A diferena entre o
hipertexto e a hipermdia est no contedo do documento: documento de hipertexto contm
apenas informao textual, enquanto que documentos de hipermdia podem conter
representaes adicionais de informao, incluindo grficos ou imagens fotogrficas
digitalizadas.
A diferena entre um sistema de hipermdia distribudo e um no distribudo
significativo. Em um sistema no distribudo, a informao fica dentro de um nico
computador, usualmente em um mesmo disco. Devido a um grande conjunto de documentos
estarem disponveis localmente, links entre eles podem ser checados para verificarem
consistncias entre as partes. Isto , um sistema de hipermdia no distribudo pode garantir que
todos os links so vlidos e consistentes.
Ao contrrio, a Web distribui documentos ao longo de um grande conjunto de
computadores. Alm disso, um administrador de um sistema pode escolher entre adicionar,
remover, mudar ou renomear um documento em um computador sem notificar outros sites.
Conseqentemente, links entre documentos Web no so sempre consistentes. Por exemplo,
suponha que um documento D1 em um computador C1 contenha um link para um documento
173/223

D2 em um computador C2. Se o administrador responsvel pelo computador C2 resolver excluir


o documento D2, o link em C1 se tornar invlido.

24.4 Representao de Documentos


Um documento de hipermdia disponvel na Web chamado de pgina: a pgina
principal de uma organizao ou de uma pessoa conhecida como homepage. Devido pgina
conter muitos itens, o formato deve ser definido cuidadosamente para que o browser possa
interpretar os diversos tipos de contedo. Em particular, um browser deve ser capaz de
distinguir entre textos arbitrrios, grficos e links para outras pginas. Mais importante, o autor
da pgina deve ser capaz de descrever o layout geral do documento (por exemplo, a ordem em
que os itens so apresentados).
Cada pgina da Web que contenha um documento de hipermdia utiliza um padro de
representao. Conhecido como HyperText Markup Language (HTML), o padro permite a um
autor designar as linhas principais para o layout da pgina e especificar o contedo da pgina.
O HTML uma linguagem de marcao de hipertexto porque ela no inclui instrues
de formatao detalhadas. Por exemplo, embora a HTML contenha extenses que permitam ao
autor especificar o tamanho e fonte do texto ou a largura da linha, a maioria dos autores prefere
especificar apenas um nvel de importncia como um nmero de 1 a 6. O browser escolhe a
fonte e mostra um tamanho apropriado para cada nvel. Similarmente, o HTML no especifica
exatamente como um browser marca um item como selecionvel alguns browsers sublinham
itens selecionveis, outros os mostram com uma cor diferente e alguns usam de ambos.

24.5 Formato e Representao HTML


Cada documento HTML dividido em duas partes principais: um cabealho seguido de
um corpo. O cabealho contm detalhes sobre o documento, enquanto que o corpo contm a
maioria da informao. Por exemplo, o cabealho contm o ttulo de um documento a maioria
dos browsers utiliza o ttulo como um texto, que permite ao usurio saber qual pgina est sendo
visitada.
Resumidamente, cada documento HTML representado como um arquivo de texto que
contm sinalizadores ao longo do texto com outras informaes. Como na maioria das
linguagens de programao, espaos em branco (por exemplo, linhas extras e caracteres em
branco) podem ser inseridos em um documento para tornar sua fonte legvel; eles no tem efeito
algum sobre a verso formatada que o browser mostra.
Os sinalizadores do HTML fornecem estrutura ao documento assim como dicas de
formatao. Alguns sinalizadores especificam uma ao que ocorre imediatamente (por
exemplo, mover para uma nova linha da pgina); o sinalizador colocado exatamente onde a
ao deve ocorrer. Outros sinalizadores so usados para especificar uma operao de
formatao que aplicada a todo o texto que segue esse sinalizador. Tais sinalizadores ocorrem
aos pares, com um sinalizador inicial e um final que comea e termina a ao, respectivamente.
Um sinalizador usado para especificar uma ao imediata, ou para iniciar uma operao
de formatao, deve ser escrito com o nome do sinalizador envolto pelos sinais de menor que e
maior que, como segue:
<TAGNAME>
O sinalizador correspondente usado para terminar uma operao comea com uma
seqncia de dois sinais: o sinal de menor que e a barra, e termina com o sinal de maior que, a
seguir.
</TAGNAME>
174/223

Por exemplo, um documento HTML comea com o sinalizador <HTML>. O par de


sinalizadores <HEAD> e </HEAD> limitam o espao para o cabealho, enquanto que o par de
sinalizadores <BODY> e </BODY> limitam o espao para o corpo. No cabealho, os
sinalizadores <TITLE> e </TITLE> limitam o texto que forma o ttulo do documento. Abaixo
veremos a formatao bsica de um documento HTML.
<HTML>
<HEAD>
<TITLE>
Texto que forma o ttulo do documento
</TITLE>
</HEAD>
<BODY>
Corpo do texto colocado aqui
</BODY>
</HTML>
No documento, cada sinalizador aparece em uma nova linha e a tabulao usada para
mostrar a estrutura. Entretanto, tais convenes so apenas importantes para que outras pessoas
posso ler esse documento um browser ignora todo o tipo de espaamento. Por isso, o
documento HTML apresentado equivalente a:
<HTML><HEAD><TITLE> Texto que forma o ttulo
do documento </TITLE></HEAD><BODY> Corpo do
texto colocado aqui </BODY></HTML>

24.6 Exemplo de Sinalizadores de Formatao HTML


Devido ao fato de o documento HTML ser armazenado em um arquivo de texto, o
documento deve conter sinalizadores explcitos que especificam como o texto deveria ser
mostrado. Por exemplo, o sinalizador <BR> instrui um browser a introduzir uma quebra de
linha. Isto , quando ele encontrar um <BR> no texto fonte, o browser move para o incio da
prxima linha na pgina. Por exemplo, seja a seguinte linha de programao HTML:
Ol.<BR>Isto um exemplo<BR>de HTML.
Ela far com que um browser gere:
Ol.
Isto um exemplo
de HTML.
Uma seqncia de duas quebras deixa uma linha em branco. Por isso:
Ol.<BR><BR>Isto mostra<BR>o espaamento HTML.
Resulta no seguinte texto:
Ol.
Isto mostra
o espaamento HTML.
175/223

24.7 Ttulos
O HTML inclui seis pares de sinalizadores que podem ser usados para mostrar ttulos na
pgina. Um sinalizador que tem a forma <Hi> marca o incio de um ttulo nvel i e um
sinalizador que tem a forma </Hi> marca o fim. Por exemplo, o texto do ttulo de nvel mais
importante deve estar entre os sinalizadores <H1></H1>. Os browsers normalmente mostram o
texto de um ttulo tipo 1 no maior tamanho de letra, o ttulo de nvel 2 um pouco menor, e assim
por diante. Por isso, quando para um browser o seguinte cdigo:
Ol.<BR><H1> Isto Um Ttulo</H1><BR>De volta ao normal.
O browser ir escolher um tamanho grande para o ttulo:
Ol
Isto Um Ttulo
De volta ao normal.

24.8 Listas
Alm do ttulo, o HTML permite que um documento contenha listas. O modo mais
simples a lista sem ordenao, a qual o browser ir apenas mostrar sem fazer qualquer tipo de
ordenao. Na especificao HTML, os sinalizadores <UL></UL> envolvem toda a lista, e cada
item da lista deve comear com o sinalizador <LI>. Usualmente, um browser coloca um ponto
na frente de cada item. Na maioria dos browsers, o cdigo fonte:
Aqui est uma lista com 5 nomes:
<UL>
<LI> Scott
<LI> Sharon
<LI> Jan
<LI> Stacey
<LI> Rebecca
</UL>
Esse texto vem depois da lista.
Produziria o texto seguinte:
Aqui est uma lista com 5 nomes:
Scott
Sharon
Jan
Stacey
Rebecca
Esse texto vem depois da lista.

176/223

24.9 Imagens Grficas numa Pgina da Web


Se um documento HTML um arquivo de texto, como uma pgina da Web pode conter
informaes no textuais? Em geral, informaes no textuais, como imagens grficas ou fotos
digitais no so inseridas diretamente em um documento HTML. Ao invs disso, os dados
ficam em um local separado e o documento contm uma referncia aos mesmos. Quando o
browser encontra tal referncia, ele vai at o local especificado, obtm uma cpia da imagem e a
insere na pgina apresentada.
O HTML usa o sinalizador IMG para codificar a referncia a uma imagem externa. Por
exemplo, o sinalizador:
<IMG SRC=fred_photo.gif>
Especifica que o arquivo fred_photo.gif contm uma imagem que o browser dever
inserir no documento.
Arquivos listados em um sinalizador IMG diferem dos arquivos usados para guardar as
pginas Web. Arquivos de imagens no so guardados como arquivos de texto, e no seguem o
formato HTML. Ao invs disso, cada arquivo de imagem contm dados binrios que
correspondem a uma imagem, e o arquivo armazenado em graphics interchange format (gif).
Devido aos arquivos de imagem no inclurem qualquer informao de formatao, o
sinalizador IMG inclui parmetros adicionais, que podem ser usados para sugerir o
posicionamento. Em particular, quando uma imagem aparece com outros itens (por exemplo,
texto ou outras imagens), a palavra ALIGN pode ser usada para especificar entre o topo, o meio
e o fundo da imagem, que deveria ficar alinhada com outros itens na mesma linha. Por exemplo,
o cdigo abaixo:
Aqui est uma figura. <IMG SRC=fred_photo.gif ALIGN=middle>
O browser alinha o meio da imagem com o texto:
Posio da figura
Aqui est uma figura.

24.10 Identificando uma Pgina


Quando um usurio abre um browser, ele deve especificar uma pgina inicial para ver.
Identificar a pgina complicado por vrias razes. Primeira, a Web inclui muitos
computadores e a pgina pode residir em qualquer um deles. Segunda, um dado computador
pode conter vrias pginas; e a cada uma deve ser dado um nome nico. Terceira, a Web
suporta muitas representaes de documentos, por isso o browser deve saber qual delas a pgina
utiliza (por exemplo, entre o nome que se refere a um documento HTML e aquele que se refere
a uma imagem armazenada em formato binrio). Quarta, devido Web ser integrada com outras
aplicaes, um browser deve saber qual protocolo usar para acessar cada pgina.
Um formato sinttico foi inventado que incorpora toda a informao necessria para
especificar um item remoto. A forma sinttica codifica a informao em uma seqncia de
caracteres conhecida como Uniform Resource Locator (URL). O formato geral do URL :
Protocolo://nome_do_computador:porta/nome_do_documento

177/223

Onde o protocolo o nome do protocolo utilizado para acessar o documento, o


nome_do_computador o nome de domnio do computador onde o documento reside; :porta
um nmero de porta de protocolo (opcional) e o nome_do_documento o nome do documento
em um computador especfico. Por exemplo, o URL:
http://www.netbook.cs.purdue.edu/cs363/index.html
Especifica o protocolo http, o computador chamado www.netbook.cs.purdue.edu e o
arquivo chamado cs363/index.html.
Como o exemplo mostrou, o URL contm a informao que o browser precisa para
exibir a pgina. O browser utiliza os caracteres de separao dois pontos (:) e barra (/) para
dividir o URL em trs partes: o protocolo, o nome do computador e o nome do documento. O
browser utiliza ento a informao para acessar o documento especificado.

24.11 Links em Hipertextos de um Documento para Outro


Embora o HTML inclua muitas opes usadas para descrever o contedo e o formato do
documento, a opo que distingue o HTML das linguagens convencionais de formatao de
documento a sua habilidade de incluir referncias de hipertexto. Cada referncia de hipertexto
um ponto passivo para outro documento. Diferente da referncia IMG, a qual faz com que o
browser adquira informao externa imediatamente, uma referncia de hipertexto no causa
nenhuma ao imediata. Ao invs disso, o browser torna-a um item selecionvel quando o
documento for mostrado. Se o usurio selecionar o item, o browser segue a referncia, encontra
o documento ao qual ela se refere e substitui o contedo atual pelo novo documento.
O HTML permite que qualquer item seja referenciado por uma referncia de hipertexto.
Por isso, uma s palavra, uma frase, um pargrafo inteiro ou uma imagem pode se referir a outro
documento. Se uma imagem inteira designada como referncia de hipertexto, o usurio pode
selecionar a referncia clicando em qualquer ponto da mesma. Similarmente, se um pargrafo
inteiro for designado como referncia de hipertexto, clicar em qualquer caracter do mesmo faz
com que o browser siga a referncia.
O mecanismo usado pelo HTML para especificar uma referncia de hipertexto
chamado de ncora. Para permitir que textos arbitrrios e grficos sejam includos em uma
mesma referncia, o HTML utiliza os sinalizadores <A e </A>, como limitadores da referncia;
todos os itens entre eles so parte da ncora. O sinalizador <A inclui informao que especifica
um URL; se o usurio selecionar a referncia, o browser usa o URL para obter o documento.
Por exemplo, o cdigo abaixo:
Esse um livro publicado pela
<A HREF= http://www.prenhall.com >
Prentice Hall, </A> uma das
maiores editoras de livros de computao.
Contm uma ncora que se refere ao URL http://www.prenhall.com. Quando exibida na
tela, o cdigo fornecer:
Esse um livro publicado pela Prentice Hall, uma das maiores
editoras de livros de computao.
O exemplo mostra uma conveno que muitos browsers utilizam para indicar um texto
que selecionvel: o texto ancorado exibido sublinhado. Apenas as palavras Prentice Hall so
sublinhadas, porque as outras no esto ancoradas.
Tudo entre os dois sinalizadores, comeo e trmino da ncora, so partes do item
selecionvel. A entrada em uma ncora pode incluir texto, sinalizadores que especifiquem
alguma formatao ou imagens grficas.
178/223

Por isso, um documento HTML pode conter uma imagem ou um cone que corresponda
a um link de hipertexto, assim como uma seqncia de palavras.

24.12 Interao Cliente-Servidor


Como outras aplicaes de rede, a visualizao do browser utiliza o paradigma clienteservidor. Quando um URL de um documento fornecido, o browser se torna cliente, que
contata no servidor do computador especificado, o URL para pedir o documento. Finalmente, o
browser disponibiliza o documento para o usurio.
Diferente das aplicaes de rede que mantm uma conexo estabelecida entre o cliente e
o servidor, a conexo entre o browser da Web e um servidor tem uma durao curta. O browser
estabelece a conexo, envia o pedido e recebe o item desejado, ou uma mensagem de que ele
no existe. Assim que o documento ou imagem tenha sido transferido, a conexo fechada; o
cliente no permanece conectado ao servidor.
Terminar as conexes rapidamente funciona muito bem na maioria dos casos, porque a
navegao na Web no exibe muita localidade. O usurio pode acessar uma pgina da Web em
um computador e ento imediatamente seguir um link para outra pgina em outro computador.
Entretanto, terminar as conexes de maneira to abrupta pode introduzir trfego desnecessrio
em casos onde o browser deve retornar ao mesmo servidor para pegar vrios documentos. Por
exemplo, considere uma pgina que contenha referncias para vrias imagens, todas as quais
residem no mesmo computador que o da pgina. Quando um usurio acessa a pgina, seu
browser abre uma conexo, obtm a pgina e fecha a conexo. Quando ele precisa mostrar uma
figura (por exemplo, quando encontra um sinalizador <IMG> na pgina), o browser deve abrir
uma nova conexo com o servidor para obter uma cpia dela.

24.13 Transporte de Documentos Web e HTTP


Quando um browser interage com um servidor Web, os dois programas seguem o
HyperText Transport Protocol (HTTP). A princpio, o HTTP direto: ele permite que o browser
pea um item especfico, o qual o servidor retorna. Para garantir que clientes e servidores
possam interoperar sem ambigidade, o HTTP define o formato exato dos pedidos enviados do
browser para o servidor, assim como o formato das respostas que o servidor retorna.

24.14 Arquitetura do Browser


Os browsers Web tm uma estrutura mais complexa que os servidores Web. Um
servidor realiza aes diretas repetidamente: o servidor espera o browser abrir uma conexo e
pedir uma determinada pgina. O servidor ento envia uma cpia do item requerido, fecha a
conexo e espera pela prxima conexo. O browser lida com a maioria dos detalhes do acesso
ao documento e a sua exibio. Conseqentemente, o browser contm vrios componentes de
grandes de software que trabalham juntos para fornecer a iluso de um servio sem unio.

179/223

A figura abaixo ilustra a organizao conceitual de um browser.

Conceitualmente, o browser consiste em um conjunto de clientes, um conjunto de


intrpretes e um controlador que os administra. O controlador forma a pea central do browser.
Ele interpreta tanto os cliques do mouse, quanto as entradas do teclado e atende a outros
componentes para realizar operaes especificadas pelo usurio. Por exemplo, quando um
usurio entra um URL ou clica em uma referncia de hipertexto, o controlador chama o cliente
para obter o documento desejado no servidor remoto em que ele reside; e um intrprete para
mostr-lo ao usurio.
Cada browser deve conter um intrprete do HTML para exibir os documentos. Outros
intrpretes so opcionais. A entrada para um intrprete do HTML consiste em um documento
que est em conformidade com a sintaxe HTML; a sada consiste em uma verso formatada do
documento no monitor do usurio. O intrprete lida com os detalhes do layout, traduzindo as
especificaes do HTML em comandos, que so apropriados para o monitor do usurio. Por
exemplo, se ele encontra um sinalizador de ttulo no documento, o intrprete muda o tamanho
do texto usado para exibi-lo. Similarmente, se ele encontra um sinalizador de quebra de linha, o
intrprete comea a exibio do documento em uma nova linha.
Uma das funes mais importantes em um intrprete HTML envolve os itens
selecionveis. O intrprete deve guardar informao sobre a relao entre as posies no
monitor e os itens ancorados no documento HTML. Quando o usurio seleciona um item com o
mouse, o browser usa a posio do cursor e a informao armazenada para aquela posio para
determinar o item que o usurio selecionou.

24.15 Clientes Opcionais


Alm do cliente e do intrprete HTML, o browser pode conter componentes que tornam
o browser capaz de executar tarefas adicionais. Por exemplo, muitos browsers incluem um
cliente FTP que usado para acessar servios de transferncia de arquivos. Alguns browsers
tambm contm um software cliente de e-mail, que permite ao browser enviar e receber
mensagens de e-mail.
Como um usurio pode acessar um servio como o FTP de dentro do browser? A
resposta que um usurio no pode abrir tais servios explicitamente e nem interagir com
softwares clientes convencionais. Ao invs disso, o browser abre o servio automaticamente e o
usurio executa a tarefa necessria.
180/223

Se o browser for bem desenvolvido, ele esconde todos os detalhes do usurio, que pode
no estar ciente de que um servio opcional foi executado. Por exemplo, uma transferncia de
arquivo pode estar associada a um item selecionvel na tela. Quando o usurio seleciona o item,
o browser usa o cliente FTP para obter uma cpia do arquivo.
Como uma transferncia de arquivo pode ser especificada em uma pgina da Web?
Lembre-se de que o primeiro campo num URL especifica o protocolo. O controlador usa o
campo para determinar qual o cliente a ser chamado. Por exemplo, se a URL especificar o
HTTP, o controlador chama o cliente HTTP. Similarmente, o URL:
ftp://ftp.cs.purdue.edu/pub/comer/netbook/client.c
Especifica que o browser deve usar anonimamente o FTP para obter o arquivo
pub/comer/netbook/client.c do computador ftp.cs.purdue.edu.
Um URL que especifique o FTP pode ser colocado em uma ncora HTML to
facilmente como um URL que especifique o HTTP. Por exemplo, o cdigo HTML abaixo:
A maioria dos exemplos nesse texto est disponvel
on-line. O cdigo fonte de
<A HREF=ftp://ftp.cs.purdue.edu/pub/comer/netbook/
client.c>
um exemplo de programa cliente
</A>
ou o cdigo de
<A HREF=ftp://ftp.cs.purdue.edu/pub/comer/netbook/
server.c>
um exemplo de programa servidor
</A>
esto disponveis.
Faz com que o browser mostre duas sentenas, parte das quais ser selecionvel:
A maioria dos exemplos nesse texto est disponvel on-line. O cdigo fonte de um
exemplo de programa cliente ou o cdigo de um exemplo de programa servidor esto
disponveis.
Se o usurio selecionar o primeiro segmento sublinhado, o browser usa o cliente FTP
para obter uma cpia do arquivo client.c; clicando no segundo segmento faz com que o browser
retorne o arquivo server.c. Depois de retornar uma cpia do arquivo, o browser verifica o
contedo e exibe o resultado.

24.16 Armazenamento em Cache nos Browsers Web


A dinmica do contato cliente-servidor em browsers Web diferente da dinmica em
muitas aplicaes j descritas. Tem duas razes. Primeira, devido aos usurios tenderem a ver
pginas da Web de fora de sua rede local, os browsers Web tendem a referenciar pginas
remotas mais freqentemente que pginas locais. Segunda, devido aos usurios no procurarem
a mesma informao repetidamente, eles no tendem a repetir os acessos dia aps dia.
Devido navegao via browser produzir uma referncia de localidade diferente das
outras aplicaes, as tcnicas usadas pelo browser para otimizar o processamento difere de
outras aplicaes. Em particular, nem os browsers ou servidores Web so otimizados para a sua
localidade fsica. Ainda mais, os browsers empregam tcnicas no usuais para lidar com
localidades de referncia temporais.
Como outras aplicaes, os browsers usam um cache para melhorar o acesso a
documentos.
181/223

O browser coloca uma cpia de cada item que ele obtm em um cache no disco local.
Quando um usurio seleciona um item, o browser verifica o cache do disco antes de tentar obter
uma nova cpia. Se o cache contiver o item, o browser obtm a cpia do cache sem usar a rede.
Manter itens em um cache pode melhorar o desempenho drasticamente um browser
pode ler um item do cache sem ter que esperar pelos delays da rede. Esse armazenamento
especialmente importante para usurios que possuem conexes de rede lentas. Por exemplo,
considere um usurio que se conecte Internet por uma conexo discada. Embora um modem
rpido possa transferir dados a uma taxa terica de 56Kbps, a taxa efetiva pode ser
substancialmente menor se a conexo possuir rudos indesejados. Em tais velocidades, obter um
item grande atravs da Internet pode levar muito mais tempo do que obt-lo do cache do disco
local. De fato, o acesso local pode parecer instantneo, quando comparado ao acesso Internet.
Sem contar com a grande melhoria na velocidade de acesso. Reter itens em cache por longos
perodos nem sempre desejvel. Primeiro, um cache pode ocupar muito espao em disco. Por
exemplo, suponha que um usurio visite 10 pginas, com 5 figuras grandes em cada uma delas.
O browser armazenar os documentos da pgina mais todas as 50 figuras no cache do disco
local. Segundo, a melhoria no desempenho s ocorre quando um usurio decide ver o mesmo
item de novo. Infelizmente, usurios freqentemente navegam pela rede porque esto
procurando informao; quando a informao encontrada, o usurio pra de navegar. Por
exemplo, um usurio que v 10 pginas, pode decidir que 9 delas no contm nada de
interessante. Por isso, manter cpias de tais pginas em cache no melhorar o desempenho,
porque o usurio nunca retornar quelas pginas. De fato, em tais situaes, o armazenamento
no cache diminui o desempenho, porque o browser leva tempo para armazenar os itens no disco
desnecessariamente.
Para ajudar os usurios a controlar o modo como o browser lida com o cache, a maioria
deles permite que o usurio ajuste a poltica de armazenamento. O usurio pode ajustar um
tempo limite de armazenamento e, ento, o browser remove os itens do cache depois que o
tempo limite expira. Os browsers normalmente mantm um cache durante uma sesso
particular. O usurio que no quer que os itens permaneam no cache depois de terminada uma
sesso e iniciada outra, pode solicitar um tempo de armazenamento igual a zero. Em tais casos,
um browser remove o cache sempre que o usurio termina uma sesso.

182/223

Captulo 25 RPC e Middleware

25.1 Introduo
Os captulos anteriores descreveram aplicaes especficas, que usam o modelo clienteservidor para se comunicarem atravs da rede, e mecanismos como o CGI que programadores
usam para construir sistemas cliente-servidor. Esse captulo continua a discusso sobre as
ferramentas que ajudam os programadores a criar sistemas cliente-servidor.

25.2 Programando Clientes e Servidores


Qualquer programador que tenha construdo um software cliente-servidor sabe que tal
programao difcil. Alm das tarefas usuais, os programadores que criam os softwares
clientes e servidores devem lidar com as complexas questes da comunicao entre ambos.
Embora muitas das funes necessrias sejam fornecidas por um API padro como interface de
soquete, os programadores ainda enfrentam um desafio. A chamada do soquete requer que o
programador especifique muitos detalhes de baixo nvel como nomes, endereos, protocolos e
portas. Ainda mais importantes, pequenos erros de cdig, que podem facilmente passar
despercebidos quando o programa testado, causam grandes problemas quando o programa
roda em larga escala.
Programadores que desenvolvem softwares clientes e servidores perceberam que vrios
programas freqentemente seguiam a mesma estrutura geral, e repetiam muitos dos mesmos
detalhes. Isto , a maioria dos sistemas cliente-servidor seguia alguns passos bsicos. Ainda
mais, devido s implementaes tenderem a usarem os mesmos API padres (por exemplo, a
interface de soquetes), muito do cdigo detalhado encontrado em um programa era replicado
para outros. Por exemplo, todos os programas clientes que usam transporte por conexo
orientada devem criar um soquete, especificar o endereo do servidor final, abrir uma conexo
com o mesmo, enviar pedidos, receber respostas e fechar a conexo quando a interao for
completada.
Para evitar que o mesmo cdigo seja escrito repetidamente, e para produzir um cdigo
que seja correto e eficiente, programadores usam ferramentas automticas na construo de
softwares clientes e servidores. Uma ferramenta um software que gera tudo ou parte de um
programa computacional. A ferramenta aceita descries de alto nvel de servios oferecidos e
produzem automaticamente grande parte do cdigo necessrio. A ferramenta no pode eliminar
toda a programao um programador deve fornecer o cdigo que desempenhe as funes do
servio particular. Entretanto, a ferramenta pode lidar com os detalhes da comunicao. Como
resultado, o cdigo conter poucos erros.

25.3 Paradigma de Chamada de Rotinas Remotas


Uma das primeiras facilidades que foram criadas para ajudar os programadores a
escrever softwares cliente-servidor conhecida genericamente como mecanismo de chamada de
procedimento remoto, o Remote Procedure Call (RPC). A idia do RPC veio da observao de
que a maioria dos programadores familiarizada com as chamadas de rotinas como uma
construo estrutural. Quando os programadores constrem um grande programa, eles comeam
dividindo-o em grandes pedaos. A diviso mais usada das linguagens de programao
disponveis conhecida como rotina; um programador comea associando uma rotina com cada
um dos grandes pedaos do projeto do software.
Quando desenvolve um programa, o programador usa as rotinas para manter o cdigo
administrvel. Ao invs de definir uma rotina grande e nica que executa muitas tarefas, o
183/223

programador divide as tarefas em vrios conjuntos e usa as rotinas menores para lidar com cada
um deles. Se as tarefas resultantes precisarem de quantidades substanciais de cdigo, o
programador subdivide a tarefa e usa sub-rotinas para realizar cada uma das subtarefas. Por isso,
a forma geral de um programa consiste em uma hierarquia de chamadas de rotinas.
A hierarquia de rotinas de um programa pode ser representada em um grafo direcional,
em que cada n representa um rotina, e a ligao direcionada de um n X para um n Y,
significa que a rotina X contm uma chamada para a rotina Y. A representao grfica
conhecida como grfico de chamadas de rotinas. A figura abaixo mostra um exemplo:

Programa Principal

Rotina A

Rotina D

Rotina B

Rotina C

Rotina E

Rotina F

Na figura, o programa principal chama trs rotinas, A, B e C. A rotina A chama a rotina


D e a rotina C chama duas outras rotinas, E e F.
Outro aspecto de chamadas de rotinas convencionais importante quando
considerarmos chamadas remotas: parmetros. Para tornar uma rotina geral e habilitar uma dada
rotina a resolver um conjunto de tarefas relacionadas, cada rotina parametrizada a definio
dada com um conjunto de parmetros formais. Quando a rotina chamada, quem a chama
deve fornecer argumentos, que correspondem aos parmetros formais.
Devido s rotinas parametrizadas terem funcionado to bem como uma abstrao da
programao, pesquisadores examinaram maneiras de usar a abstrao de rotinas para construir
clientes e servidores.
A premissa da pesquisa era: Se um programador seguir o mesmo paradigma de
chamada de rotinas usado para construir programas convencionais quando estiver construindo
softwares clientes e servidores, o programador achar a tarefa mais fcil e cometer menos
erros.
Para seguir tal premissa, pesquisadores tm investigado maneiras de fazer com que a
programao de clientes e servidores seja o mais parecido possvel da programao
convencional. Infelizmente, a maioria das linguagens de programao desenvolvida para
produzir cdigo para um nico computador. Nem a linguagem ou mesmo o compilador so
feitos para um ambiente distribudo o cdigo que gerado restringe o fluxo de controle e a
transmisso de parmetros ao espao de um nico endereo.
Poucos pesquisadores tm investigado modificaes na linguagem que incluam
facilidades para o desenvolvimento cliente-servidor. Por exemplo, o Modula-3 e o Java Remote
Method Invocation (Java RMI) ambos apresentam facilidades que permitem a um programa
chamar rotinas em outros computadores. E ainda, ambos tm facilidades que sincronizam os
processamentos de mquinas separadas para assegurar resultados consistentes.
A maior parte da pesquisa sobre essas facilidades que suportam a programao clienteservidor tem evitado modificaes diretas nas linguagens de programao, definindo um
conjunto de ferramentas que programadores podem utilizar para construir programas
distribudos. Em particular, as ferramentas disponveis aceitam especificaes de programas de
alto nvel, a insero de cdigo necessrio para a comunicao em rede e automaticamente
traduz o cdigo resultante para produzir os programas clientes e servidores. A abordagem
baseada em conjunto de ferramentas hoje o mais aceito.
184/223

25.4 O Paradigma RPC


Quando usam o RPC, a ateno dos programadores no est focada em uma rede de
computadores ou em protocolos de comunicao. Ao invs disso, o programador encorajado a
pensar sobre o problema a ser resolvido. Isto , o programador no comea pensando em dois
programas separados. O programador comea imaginando como o problema ser resolvido por
um programa convencional rodando em um s computador. O programador desenvolve e
constri o programa usando chamadas de rotinas como a estrutura bsica.
Uma vez que um programador tenha construdo um programa convencional para
solucionar um problema local, o programador ento considera como dividir o programa em duas
partes. Na essncia, o programador deve particionar o grfico de chamadas em duas partes. A
parte que contm o programa principal e as rotinas que ele chama se torna o cliente, enquanto
que as rotinas remanescentes se tornam o servidor. Quando seleciona o conjunto de rotinas que
formaram o cliente e o conjunto que compreender o servidor, o programador deve considerar
os dados os dados globais que cada rotina se refere devem estar localizados no mesmo
computador que a tal rotina.
O desenho abaixo exemplifica uma maneira de dividir o programa do exemplo anterior
em duas partes.

Programa Principal

cliente

Rotina A

Rotina D

Rotina B

servidor

Rotina C

Rotina E

Rotina F

Na figura, o cliente consiste no programa principal mais as rotinas A e D. O servidor


consiste nas rotinas B, C, E e F. Outras divises do grfico de chamadas so possveis; no
podemos dizer atravs da figura porque o programador fez a escolha observada. Por exemplo, as
rotinas A e D podem estar no programa cliente, porque elas lidam com interaes com o usurio
ou podem estar agrupadas com o programa principal; porque elas se referem s variveis globais
no programa principal.
O RPC estende o mecanismo de chamada de rotinas para permitir que uma rotina no
cliente chame uma rotina atravs da rede no servidor. Isto , quando tal chamada ocorre, a
thread de controle aparece para transmitir atravs da rede desde o cliente at o servidor; quando
a rotina chamada responde, a thread de controle aparece novamente para transmitir desde o
servidor at o cliente.
Depois de decidir quais rotinas ficaro no servidor e quais ficaro no cliente, o
programador est pronto para utilizar a ferramenta RPC. Para faz-lo, o programador cria uma
especificao que descreve o conjunto de rotinas que sero remotas (por exemplo, o conjunto de
rotinas que formam o servidor). Para cada rotina remota, o programador deve especificar os
tipos de seus parmetros. A ferramenta cria cdigos que lidam com a comunicao necessria.

185/223

25.5 Stubs de Comunicao


Uma thread de controle no pode pular de um programa em um computador para uma
rotina em outro. Ao invs disso, ela usa a interao cliente-servidor. Quando um cliente chama
uma rotina remota, ele usa os protocolos convencionais para enviar a mensagem de pedido
atravs da rede para o servidor. O pedido identifica uma rotina a ser executada. Quando o
programa remoto (por exemplo, o servidor) recebe um pedido de um cliente, ele executa a rotina
especificada e, ento, envia o resultado de volta para o cliente.
Obviamente, softwares extras devem ser adicionados a cada uma das partes do
programa para implementar a interao. O software extra no lado do cliente lida com os detalhes
de enviar uma mensagem atravs da rede e de esperar uma resposta. O software extra no
servidor lida com os detalhes de receber mensagens de pedido, chamar a rotina especificada e
enviar uma resposta.
Tecnicamente, cada pedao de software adicionado conhecido como um stub de
comunicao ou proxy (a traduo literal de proxy substituto). Os dois stubs, um no cliente e
um no servidor, lidam com todos os detalhes da comunicao. Alm disso, os stubs so
construdos para se encaixarem no programa existente; o restante do programa, simplesmente
utiliza as chamadas de rotinas, como se todas as rotinas fossem locais. Se a chamada feita para
uma rotina no local, o stub de comunicao intercepta-a, encontra os valores dos argumentos
(conhecido como organizao dos argumentos) e envia a mensagem atravs da rede para o stub
de comunicao no servidor. O stub de comunicao no servidor utiliza o mecanismo
convencional de chamada de rotinas para executar a rotina especificada; e envia o resultado de
volta para o stub do cliente. Quando o stub do cliente recebe a resposta, ele retorna o resultado
para o seu requisitante exatamente como se fosse uma rotina local retornando o seu resultado. A
figura abaixo mostra como os stubs de comunicao so adicionados aos lados cliente e servidor
de um programa.

Programa Principal

Procedimento B

Programa
Principal

Stub servidor
para o B

Stub cliente
para o B

Procedimento B

O exemplo da seo 25.4 mostrou a chamada da rotina no programa original antes dos
stubs do RPC terem sido adicionados. Quando a rotina principal chama a rotina B, os
argumentos que ela transmite devem concordar exatamente com o formato dos parmetros de B.
Isto , a chamada deve conter o nmero correto de argumentos; e o tipo de cada argumento deve
combinar com o tipo declarado para o parmetro.
J o exemplo desta seo, figura acima, mostra os stubs de comunicao, que devem ser
adicionados ao programa quando ele dividido em cliente e servidor. importante entender que
as interfaces da rotina no exemplo acima usam o mesmo nmero e tipo de argumentos que a
interface original da figura da seo 25.4. Por isso, a chamada da rotina principal para o stub
cliente e a chamada do stub servidor para a rotina B utilizam a mesma interface que uma
chamada convencional da rotina principal para a B. Mais importante, os stubs cliente podem
receber o mesmo nome da rotina que eles esto substituindo. Como resultado disso, o cdigo do
programa original no precisa ser modificado.
186/223

25.6 Representao de Dados Externos


Sistemas computacionais no usam a mesma representao interna de dados. Por
exemplo, alguns computadores guardam o byte mais significativo de um nmero inteiro no
endereo mais baixo; outros guardam o byte menos significativo no menor endereo. Por isso,
quando clientes e servidores enviam valores inteiros entre computadores heterogneos, eles
devem concordar nos detalhes entre cliente e servidor na converso ou representao enviada
atravs da rede.
O termo representao de dados externos refere-se forma dos dados que so enviados
atravs da rede. Alm de definir uma interface de linguagem, a tecnologia de chamada de rotina
remota define uma representao de dados externos. Alguns sistemas negociam a representao
os stubs cliente e servidor trocam mensagens para determinar qual a representao cada um
usar, e o que precisar ser traduzido. Muitos sistemas escolhem outra abordagem, na qual a
representao externa fixa. Nesses casos, quem envia sempre converte da representao local
para a externa, e quem recebe sempre converte da representao externa para a local.

25.7 Middleware e Middleware com Orientao a Objeto


Revisando, a ferramenta pode ajudar o programador a construir um programa que usa a
chamada de rotina remota. O programador especifica um conjunto de rotinas que sero remotas
atravs de detalhes da interface (por exemplo, nmero e tipo de argumentos). Para isso, o
programador utiliza a ferramenta de Interface Definition Language ou Interface Description
Language (IDL). A ferramenta l as especificaes IDL e gera os stubs cliente e servidor
necessrios. O programador ento compila e une os dois programas separados. Os stubs
servidores so combinados com as rotinas remotas para formar o programa servidor. Os stubs
clientes so combinados com o programa principal e com as rotinas locais para formar o
programa cliente.
Uma variedade de ferramentas comerciais tem sido desenvolvida para ajudar os
programadores a construir softwares cliente-servidor atravs do paradigma descrito acima. Tais
ferramentas so chamadas genericamente de middleware, porque fornecem softwares que se
encaixam entre um programa de aplicao convencional e os softwares de rede.
Nos anos 90, as pesquisas sobre linguagem de programao mudaram o foco do
paradigma de rotinas para o paradigma da orientao a objetos. Como resultado, a maioria das
novas linguagens de programao so linguagens com orientao a objeto. A facilidade
estrutural bsica em uma linguagem com orientao a objeto chamado objeto, que consiste em
itens de dados mais um conjunto de operaes para tais itens, as quais so chamadas de
mtodos. O mecanismo bsico de controle em uma linguagem com orientao a objeto a
execuo de mtodos. Em resposta s mudanas nas linguagens, desenvolvedores esto criando
novos sistemas de middleware que estendem a execuo de mtodos atravs dos computadores,
do mesmo modo que a chamada de rotinas remotas estendeu a chamada de rotinas. Tais
sistemas so conhecidos como sistemas de objetos distribudos. As prximas sees descrevem
brevemente muitos middlewares e tecnologias de middlewares com orientao a objeto
largamente utilizados.
25.7.1 ONC RPC
Um dos primeiros mecanismos RPC que atingiram aceitao geral foi desenvolvido pela
Sun Microsystems, Incorporated. Formalmente conhecido por Open Network Computing
Remote Procedure Call (ONC RPC), essa tecnologia freqentemente conhecida como Sun
RPC. Em adio especificao de uma IDL e um formato de mensagem que os stubs cliente e
servidor usam para se comunicar, o ONC RPC inclui um padro de representao de dados
conhecida por eXternal Data Representation (XDR).
187/223

Finalmente, como a maioria das outras tecnologias RPC, o ONC RPC usa os protocolos
TCP/IP e permite que o programador escolha entre o transporte UDP ou TCP.
25.7.2 DCE RPC
O The Open Group definiu o Distributed Computing Environment (DCE), o qual
composto de muitos componentes e ferramentas que so designadas para trabalharem juntas. O
DCE inclui sua prpria tecnologia de chamada de rotinas remotas, que freqentemente
chamada de DCE/RPC e sua prpria IDL, a qual difere das outras em pequenos detalhes. O
DCE/RPC tambm permite que um cliente acesse mais de um servidor (por exemplo, algumas
rotinas remotas podem estar localizadas em um servidor, enquanto que outras rotinas podem
estar em outro). Em todos os casos, o DCE/RPC pode usar os protocolos TCP/IP, com a escolha
pelo programador entre o transporte por UDP ou TCP.
25.7.3 MSRPC
A Microsoft Corporation definiu sua prpria tecnologia de chamada de rotinas remotas,
a Microsoft Remote Procedure Call (MSRPC). Devido MSRPC ter sido derivada da
DCE/RPC, ela compartilha os mesmos conceitos centrais e a estrutura geral de programa.
Entretanto, a MSRPC difere em alguns pequenos detalhes. Ela define sua prpria IDL e tem seu
prprio protocolo que os stubs cliente e servidor usam para se comunicarem.
25.7.4 CORBA
Talvez o middleware com orientao a objeto mais conhecido o chamado Common
Object Request Broker Architecture (CORBA). O CORBA permite que um objeto inteiro seja
colocado no servidor e estende a execuo de mtodos usando a mesma abordagem geral
descrita anteriormente. Existe uma diferena, porque os proxies so instanciados em tempo real
como os outros objetos. Quando um programa recebe uma referncia de um objeto remoto, um
proxy local criado, que corresponde ao objeto criado. Quando o programa executa um mtodo
daquele objeto, o controle passa para o proxy local. O proxy ento envia uma mensagem atravs
da rede para o servidor, o qual executa o mtodo especificado e retorna os resultados. Por isso, o
CORBA faz com que a execuo de mtodos para objetos locais e remotos paream idnticos.
Alm de focar objetos em vez de rotinas, o CORBA difere das tecnologias RPC
convencionais porque ele mais dinmico. Nas tecnologias RPC convencionais, o programador
utiliza uma ferramenta para criar rotinas de stub quando constri o programa. No CORBA, o
software cria um proxy em tempo real quando necessrio (por exemplo, quando o mtodo
executado em um objeto remoto para o qual no existe proxy).
25.7.5 MSRPC2
A Microsoft desenvolveu uma segunda gerao do MSRPC chamado MSRPC2. A
Microsoft freqentemente utiliza o nome Object RPC (ORPC) ao invs de MSRPC2, porque a
segunda verso representa uma mudana mais significativa do que uma simples reviso. Ela
estende os conceitos do MSRPC para fornecer mais suporte aos objetos. As idias no MSRPC2
so derivadas de muitas fontes, incluindo a pesquisa feita pela Digital Equipment Corporation
usando o Modula-3.
25.7.6 COM/DCOM
Em outro esforo, a Microsoft Corporation tambm produziu o COM e o DCOM, os
quais so tecnologias com orientao a objeto. O Component Object Model (COM) uma
estrutura de software com orientao a objeto que foi definido em 1994. O padro define uma
interface binria entre os componentes em um dado computador, algumas vezes sendo referido
188/223

como um esquema de empacotamento. Com o COM, todos os objetos tinham nomes globais
nicos e todas as referncias de objetos usavam o esquema global.
Definido em 1998, o Distributed COM (DCOM) estendeu o COM criando um protocolo
de nvel de aplicao para as chamadas de rotinas remotas com orientao a objeto. O DCOM, o
qual foi proposto pela IETF como padro para a Internet, utiliza o ORPC para transporte. Como
o ORPC foi derivado do DCE/RPC, o DCOM usa exatamente o mesmo formato de pacote e
semntica para execuo remota, que o DCE/RPC utiliza para chamadas de rotinas remotas.

189/223

Captulo 26 Tecnologia CGI para Documentos


Dinmicos Web
26.1 Introduo
Este captulo continua a discusso do software do navegador, explicando duas formas
alternativas dos documentos Web, e examina uma forma em detalhes. Diferente dos documentos
HTML discutidos anteriormente, esta alternativa fornece aos programas o controle do contedo
de um documento dinamicamente. Em um grupo, o servidor Web executa um programa auxiliar
para criar documentos quando a requisio chega do navegador. Em outro grupo, o servidor
fornece ao navegador um programa. O navegador executa o programa localmente, e permite ao
programa exibir informaes, interagir com o usurio, e se tornar cliente de outros servios de
rede.
Este captulo descreve duas alternativas do modelo de documentos, e resume as
vantagens e desvantagens de cada um. O captulo se concentra em um dos dois modelos,
explicando como o servidor pode usar aplicativos para gerar documentos dinamicamente. Alm
do mais, o captulo discute o conceito de informao de estado, e mostra como a informao de
estado pode ser codificada em um documento criado dinamicamente.

26.2 Trs Tipos Bsicos de Documentos Web


O captulo anterior descreveu a pgina Web como um simples documento de texto
armazenado em um arquivo. Em geral, todo documento Web pode ser agrupado em trs
categorias gerais:

Esttico. Um documento da Web esttico reside em um arquivo associado com


servidor Web. O autor do documento esttico determina o contedo do arquivo
no tempo que este gravado. Como o contedo no muda a cada requisio do
documento esttico, o resultado sempre a mesma resposta.

Dinmico. Um documento dinmico no existe em uma forma pr-determinada.


Ao invs disso, o documento dinmico criado pelo servidor Web quando o
navegador faz a requisio do documento. Quando a requisio chega, o
servidor Web executa um aplicativo para criar o documento dinmico. O
servidor retorna a sada do programa como resposta ao navegador que
requisitou o documento. Como um documento novo criado a cada requisio,
o contedo do documento dinmico pode variar de uma requisio para outra.

Ativo. Um documento ativo no especificado completamente no servidor. O


documento ativo consiste em um programa que entende como computar e
mostrar valores. Quando o navegador requisita o documento ativo, o servidor
retorna a cpia do programa que o navegador deve executar localmente.
Quando este executado, o programa do documento ativo interage com o
usurio e muda as exibies continuamente. Assim, o contedo de um
documento ativo nunca fixo eles podem mudar continuamente desde que o
usurio permita que o programa possa ser executado.

190/223

26.3 As Vantagens
Documento

Desvantagens

de

Cada

Tipo

de

A vantagem principal de um documento esttico a simplicidade, a confiabilidade, e o


desempenho. Como estes contm especificaes de formatao fixas, o documento esttico
pode ser criado por algum que no saiba criar um programa de computador. Mais importante,
aps ser criado e testado completamente, o documento permanece vlido indefinidamente.
Finalmente, o navegador pode exibir um documento esttico rapidamente, e pode armazenar
uma cpia do documento no disco rgido para aumentar a velocidade de requisio do
documento em uma prxima requisio.
A desvantagem principal do documento esttico a falta de flexibilidade o documento
deve ser revisado quando as informaes mudam. Alm disso, as mudanas consomem tempo,
pois necessitam de algum para editar o arquivo. Assim, o documento esttico no usado para
reportar informaes que mudam com freqncia.
A vantagem do documento dinmico a habilidade de reportar a informao corrente.
Por exemplo, o documento dinmico pode ser usado para exibir informaes como condies
climticas momentneas e a disponibilidade de ingressos para um concerto. Quando o
navegador requisita a informao, o servidor executa um aplicativo para acessar as informaes
necessrias e criar o documento. O servidor ento envia o documento ao navegador.
Os documentos dinmicos geram grande responsabilidade no servidor, o navegador tem
a mesma interao obtendo uma pgina dinmica, bem como aquela necessria para obter uma
imagem esttica. De fato, do ponto de vista do navegador, a pgina esttica indistinguvel de
uma pgina dinmica. Como as pginas estticas e dinmicas usam o HTML, o navegador no
sabe quando o servidor extrai a pgina do disco rgido, ou obtm a pgina dinamicamente de um
programa.
As desvantagens principais do documento dinmico so os custos altos e a falta de
habilidade ao exibir as informaes. Como o documento esttico, o documento dinmico no
muda aps o navegador salvar uma cpia. Assim, a informao do documento dinmico comea
a envelhecer aps ser enviada ao navegador. Por exemplo, considere um documento dinmico
que exiba preos de estoque. Como os preos variam continuamente, o documento se torna
obsoleto enquanto o usurio est navegando por seus contedos.
O documento dinmico tem maior custo para ser criado e acessado do que um
documento esttico. Os custos pessoais de criao de um documento dinmico so maiores,
porque o criador da pagina Web dinmica deve saber desenvolver um programa de computador.
Alm disso, o programa deve ser criado com cuidado e testado exaustivamente para se ter
certeza que a resposta valida.
Em adio aos custos de criao do documento dinmico, os custos de hardware
crescem para os documentos dinmicos, pois um sistema computacional poderoso necessrio
para operar o servidor. Finalmente, o documento dinmico tem uma velocidade de resposta um
pouco maior do que a de um documento esttico, pois o servidor necessita de tempo adicional
para executar o aplicativo que cria o documento. Embora o documento dinmico seja criado
quando a requisio feita, a informao pode envelhecer rapidamente.
A vantagem principal do documento ativo a capacidade de modificar a informao
continuamente, diferente do documento dinmico. Por exemplo, somente o documento ativo
pode modificar a exibio to rapidamente para mostrar uma imagem animada. Mais
importante, o documento ativo pode acessar fontes de informaes diretamente, e assim
atualizar a exibio continuamente. Por exemplo, o documento ativo que exibe preos de
estoque, pode receber informaes continuas do estoque e modificar a exibio sem ao
nenhuma do usurio.
As desvantagens principais do documento ativo so os custos adicionais para a criao e
execuo deste documento e a carncia de segurana. Primeiro, o documento ativo requer para
sua exibio o uso de navegadores sofisticados e um sistema computacional poderoso para
executar o navegador. Segundo, criar um documento ativo que esteja correto requer mais
191/223

habilidade na programao, resultando em documentos mais difceis de serem testados. Em


particular, como o documento ativo executado em um computador arbitrrio ao invs do
servidor, o programa deve ser criado para evitar dependncia de componentes, disponveis em
um sistema e que no esto disponveis em outros sistemas. Finalmente, o documento ativo
um risco potencial de segurana, porque o documento pode exportar e importar informaes.

26.4 Implementao de Documentos Dinmicos


Como a responsabilidade de criao do documento dinmico do servidor Web que
gerencia o documento, as mudanas requeridas para suportar documentos dinmicos afetam
apenas estes servidores. Na prtica, as mudanas envolvem extenses o servidor que gerencia
documentos dinmicos tambm contm o cdigo para lidar com documentos estticos.
Para o servidor convencional lidar com documentos dinmicos, trs adies so
necessrias. Primeiro, o programa do servidor deve ser estendido at que seja capaz de executar
um aplicativo separado, que ir criar o documento a cada vez que uma requisio chegue. O
servidor deve ser programado para capturar a resposta do aplicativo e retornar o documento ao
navegador. Segundo, o aplicativo separado deve ser escrito para cada documento dinmico.
Terceiro, o servidor deve ser configurado para que saiba quais URLs correspondem a
documentos dinmicos e quais pertencem a documentos estticos. Para cada documento
dinmico, a configurao deve especificar qual aplicativo ir gerar o documento.
Cada requisio contm um URL correspondente a um documento esttico ou dinmico.
O servidor usa a informao configurada e o URL em cada requisio para determinar como
proceder. Se a informao configurada especifica que o URL corresponde a um documento
esttico, o servidor fornece o documento da maneira usual. Se o URL corresponde a um
documento dinmico, o servidor determina o aplicativo que ir gerar o documento, executa o
aplicativo, e usa a resposta do programa como documento a ser retornado ao navegador.

26.5 O Padro CGI


A tecnologia usada largamente para construir documentos Web dinmicos conhecida
como Common Gateway Interface (CGI). Originalmente desenvolvida pelo National Center for
Supercomputer Applications (NCSA), para uso do servidor Web NCSA, o padro CGI
especifica como o servidor interage com o aplicativo que implementa o documento dinmico.
Este aplicativo chamado de programa CGI.
O CGI fornece linhas gerais de guia, e permite ao programador escolher a maioria dos
detalhes. Por exemplo, o CGI no especifica uma linguagem de programao particular. Ao
invs disso, o padro permite ao programador escolher a linguagem e usar diferentes linguagens
para diferentes documentos dinmicos. Assim, o programador pode escolher a linguagem
apropriada para cada documento.

26.6 Resposta de um Programa CGI


Na prtica, a resposta de um programa CGI no restrita ao HTML o padro permite
que os aplicativos CGI criem tipos de documentos arbitrrios. Por exemplo, em adio ao
HTML, o programa CGI pode gerar um texto comum ou uma imagem digital. Para distinguir
dentro da variedade dos tipos de documentos, o padro permite ao programa CGI colocar um
cabealho na resposta. O cabealho consiste em um texto que descreve o tipo do documento.
Os cabealhos gerados pelo programa CGI seguem o mesmo formato geral dos
cabealhos do servidor Web usados ao enviar um documento ao navegador: o cabealho
192/223

consiste em uma ou mais linhas de texto e uma linha em branco. Cada linha do cabealho
especifica informaes sobre o documento e a representao de dados.
Aps o executar o programa CGI, o servidor examina o cabealho antes de retornar o
documento ao navegador que criou a requisio. Assim, quando necessrio, o programa CGI
pode usar o cabealho para se comunicar com o servidor. Por exemplo, o cabealho que consiste
da linha:
Content-type: text/html
Seguido de uma linha em branco, especifica que a resposta um documento HTML.
O cabealho da resposta de um programa CGI tambm pode ser usado para especificar
que o documento est em uma nova localizao. A tcnica conhecida como redirecionamento.
Por exemplo, suponha que o programa CGI associado com o seguinte URL:
http://someserver/cgi+bin/foo
E necessita referir-se s requisies que chegam ao documento associado com o URL:
http://someserver/new/bar.txt
O programa CGI pode gerar duas linhas de resposta:
Location: /new/bar.txt
<linha em branco>
Quando o servidor detecta a diretiva Location no cabealho, o mesmo ir responder
como se o navegador tivesse requisitado o documento /new/bar.txt (ao invs de cgi+bin/foo)
com o URL:
http://someserver/new/bar.txt

26.7 Exemplo de um Programa CGI


Abaixo temos o cdigo fonte de um programa CGI trivial escrito na linguagem shell
UNIX. Quando executado, o programa cria um documento de texto comum que contm a data e
hora atuais.
#!/bin/sh
echo Content-type: text/plain
echo
echo This document was created on `date`.

Os scripts shell podem ser difceis de entender. Na essncia, o shell um interpretador


de comandos o script shell contm comandos no mesmo formato que o usurio segue ao entrar
com comandos no teclado. Exceto a primeira linha, o shell ignora linhas em branco ou linhas
que comeam com o smbolo #. No exemplo, linhas que contm o smbolo # so usadas para
comentrios. As outras linhas contm um comando vlido. A primeira palavra de uma linha o
nome do comando; palavras subseqentes formam o argumento do comando.
O nico comando usado no exemplo echo. Cada chamada do echo gera uma linha de
resposta. Quando executado, o script invoca trs vezes o comando echo. Assim, o script ir
gerar exatamente trs linhas de resposta.
193/223

Quando invocado sem argumentos, o echo cria uma linha em branco de resposta. De
outra maneira, o echo escreve exatamente uma cpia de seus argumentos. Por exemplo, o
comando:
echo smord hplar
Gera uma linha de sada que contm as duas palavras:
smord hplar
O nico item no usual no script exemplo a construo date. O shell interpreta as
aspas graves como requisio de execuo do programa date e substitui o mesmo na sada.
Assim, antes de invocar o echo pela terceira vez, o shell substitui a string date pela data e hora
atuais. Como resultado, a terceira invocao de echo gera uma linha de resposta que contm a
data atual. Por exemplo, se o script executado em 3 de Junho de 1999, s 14 horas, 39 minutos
e 37 segundos, o script ir gerar a seguinte resposta:
Content-type: text/plain
This document was created on Thu Jun 3 14:19:37 EST 1999
O servidor que capaz de executar um programa CGI deve ser configurado antes de
executar o script. A configurao especifica o URL que o servidor usa para localizar o script.
Quando o navegador contata o servidor e requisita o URL especifico, o servidor executa o
programa. Quando o navegador recebe o documento, este ir exibir a seguinte linha ao usurio:
This document was created on Thu Jun 3 14:19:37 EST 1999
Diferente do documento esttico, o contedo do documento dinmico muda a cada vez
que o usurio instrui o navegador a recarregar o documento. Isto porque o navegador no
armazena um documento dinmico, a requisio para recarregar o documento faz com que o
navegador contate o servidor. O servidor executa o programa CGI, o qual cria um novo
documento com a data e hora atuais. Assim, o usurio v a mudana de contedo do documento
a cada vez que requisita a pgina.

26.8 Parmetros e Variveis Globais


A norma permite que o programa CGI seja parametrizado. Isto , o servidor pode passar
argumentos ao programa CGI quando o programa executado. A parametrizao importante,
porque permite a um nico programa CGI lidar com um conjunto de documentos dinmicos,
que diferem apenas em pequenos detalhes. Mais importante, os valores dos parmetros podem
ser fornecidos pelo navegador. Para fazer isso, o navegador adiciona informaes ao URL.
Quando a requisio chega, o servidor divide o URL da requisio em duas partes: um prefixo,
que especifica o documento em particular; e o sufixo, que contm informaes adicionais. Se o
prefixo do URL corresponde ao programa CGI, o servidor executa o mesmo e passa o sufixo do
URL como argumento.
Sintaticamente, a marca de pontuao (?) no URL separa o prefixo do sufixo. Tudo
antes da marca (?) o prefixo, o qual especifica o documento. O servidor utiliza sua informao
configurada para determinar como mapear o prefixo em um programa CGI. Quando este
executa o programa CGI, o servidor passa o argumento ao programa, que corresponde aos
caracteres no URL aps a marca (?).
Como o sistema foi projetado para ser executado em sistemas operacionais UNIX e
Windows, o padro CGI segue uma conveno no muito usual para passar os argumentos ao
programa CGI.
194/223

Ao invs de usar a linha de comando, o servidor passa a informao nas variveis


globais do UNIX, e ento executa o programa CGI. O programa CGI herda uma cpia das
variveis globais, das quais extrai os valores.
O servidor passa os valores para as outras variveis globais, para que o programa CGI
possa usar. A tabela a seguir lista alguns exemplos de variveis globais CGI e seus significados.

26.9 Informao de Estado


O servidor executa o programa CGI cada vez que uma requisio chegue associada ao
URL requerido. Alm disso, como o servidor no mantm nenhum histrico de requisies, o
servidor no pode contar ao programa CGI as requisies anteriores do mesmo usurio. No
entanto, o histrico til porque permite ao programa CGI participar de uma conversao. Por
exemplo, o histrico de interaes anteriores evita que o usurio responda questes
repetidamente quando apresentada requisies adicionais. Para fornecer um dilogo no
repetitivo, o programa CGI deve salvar as informaes entre as requisies.
A informao que um programa salva entre as requisies chamada de informaes de
estado (state information). Na prtica, os programas de documentos dinmicos usam dois
modos para salvar informaes; a escolha determinada pelo espao de tempo que a informao
deve ser armazenada. O primeiro mtodo usado para as informaes que devem ser gravadas
atravs das requisies do navegador. O programa de documento dinmico usa armazenamento
de longo perodo no computador servidor, como o disco rgido. O segundo mtodo usado para
informaes que devem ser mantidas enquanto o navegador est sendo executado. O programa
de documento dinmico codifica essas informaes no URL que aparece no documento. A
prxima seo contm exemplos que ajudam a exemplificar o conceito.

26.10 O Script CGI com Informao de Estado de Longo Termo


O script CGI apresentado abaixo ilustra dois conceitos que so discutidos. Primeiro, o
script ilustra como o servidor utiliza as variveis globais para passar argumentos ao programa
CGI. Segundo, o script mostra como o programa de documento dinmico pode armazenar
informaes de estado de longo termo em um arquivo.
O exemplo de script armazena uma cpia do endereo IP dos computadores que
estiveram em contato. Quando a requisio chega, o script analisa o endereo IP do navegador e
gera um documento. O documento conta se a primeira requisio que chegou daquele
computador.
#!/bin/sh
FILE=ipaddrs
echo Content-type: text/plain
echo
if grep -s $REMOTE_ADDR $FILE
then

> /dev/null 2>&1

195/223

echo Computer $REMOTE_ADDR has requested this URL


previously.
else
echo $REMOTE_ADDR >> $FILE
echo This is the first contact from computer
$REMOTE_ADDR.
fi

Embora muitos detalhes sintticos faam com que o script parea complexo, sua
operao direta. Na essncia, o script mantm a lista de endereos IP em um arquivo local
chamado ipaddrs. Quando executado, o script procura o arquivo para o endereo de IP do
navegador. Se for encontrado, o script reporta que ele j foi contatado pelo navegador do
computador anteriormente; se no, o script adiciona o endereo IP do navegador ao arquivo, e
reporta que o contato foi o primeiro feito pelo navegador do computador.
O script usa a varivel global REMOTE_ADDR para obter o endereo IP do computador
que est executando o navegador que solicitou a requisio. Na linguagem shell, as variveis
so referenciadas com o smbolo dlar ($) frente do nome da varivel. Assim, a string
$REMOTE_ADDR substituda pelo valor da varivel REMOTE_ADDR.
O corpo principal do script consiste em um nico enunciado if-then-else. A instruo
usa o comando grep para determinar se o endereo IP do navegador aparece no arquivo ipaddrs.
O resultado da busca determina que o script siga o comando then ou siga o comando else, partes
do enunciado if. Se o endereo encontrado, o script emite uma mensagem de que a requisio
no a primeira. Se o endereo no est presente, o script adiciona o endereo ao arquivo, e
ento emite uma mensagem que aquele o primeiro contato.
Quando executado, o script gera trs linhas de resposta. Duas linhas de cabealho,
seguidas por uma nica linha de texto. A linha de texto contm o endereo IP do computador e
conta se alguma requisio foi feita anteriormente. Por exemplo, a primeira vez que o
computador 128.10.2.26 requisita o documento, o usurio receber a seguinte linha de resposta:
This is the first contact from computer 128.10.2.26
As requisies subseqentes para o documento, feitas pelo mesmo computador
produziria:
Computer 128.10.2.26 has requested this URL previously.

26.11 O script CGI com Informao de Estado de Curto Termo


Para entender como a informao de estado pode ser codificada no URL, relembre que
o texto aps a marca (?) nao URL passado ao programa de documento dinmico como
argumento. Como o programa de documento dinmico cria uma cpia do documento solicitado,
cada chamada do programa pode produzir um documento que contm um conjunto de URLs.
Em particular, qualquer texto que o programa colocar aps a marca de questo (?) no URL se
tornar o argumento, se o usurio selecionar o URL.
Como exemplo, considere o programa CGI mostrado a seguir:
#!/bin/sh
echo Content-type: text/html
echo
N=$QUERY_STRING
echo "<HTML>"
196/223

case "x$N" in
x)

N=1
echo "This is the initial page.<BR><BR>"
;;

x[0-9]*)
N=`expr $N + 1`
echo "You have refreshed this page $N times.<BR><BR>"
;;
*)

echo "The URL you used is invalid.</HTML>"


exit 0
;;

esac
echo "<A HREF=\"http://$SERVER_NAME$SCRIPT_NAME?$N\">"
echo "Click here to refresh the page.</A></HTML>"

O script descrito mais complexo que o exemplo anterior. Primeiro, o script emite um
documento HTML ao invs de um texto comum. Segundo, o script usa a varivel global
QUERY_STRING para determinar quando o servidor passou um argumento ao script. Terceiro,
o script concatena as variveis SERVER_NAME e SCRIPT_NAME para obter o URL do script, e
adiciona o marca de questo (?) e conta a varivel N. Quarto, o script usa um enunciado case
para escolher dentre trs possibilidades: a string do argumento est vazia, a string do argumento
contm um inteiro, ou a string do argumento contm algo mais. Em dois casos, o script emite a
resposta apropriada; no ultimo caso, o script reporta que o URL invalido.
Para entender como o script passa a informao de estado, assuma que o servidor
www.nonexist.com tenha sido configurado para que o script corresponda ao caminho /cgi/ex4.
Quando o usurio executa o URL: http://www.nonexist.com/cgi/ex4
O script ir gerar seis linhas de resposta:
Content-type: text/html
<HTML>
This is initial page. <BR><BR>
<A HREF = http://www.nonexist.com/cgi/ex4?1>
Click here to refresh the page. </A> </HTML>
Como o cabealho especifica que o documento do tipo HTML, o navegador ir
interpretar os comandos HTML e exibir trs linhas de resposta.
This is the initial page.
Click here to refresh the page.
Embora isto no aparea na tela do usurio, a informao de estado est embutida no
URL do documento. Para ver a informao de estado, olhe para o URL na verso HTML do
documento. Os dois ltimos caracteres, ?1, codificam a informao sobre o nmero de vezes
que a pgina foi atualizada. Se o usurio clicar na segunda sentena, o navegador ir requisitar o
seguinte URL: http://www.nonexist.com/cgi/ex4?1.

197/223

Quando executado, o script ir descobrir que QUERY_STRING contm 1. Assim, o


script ir gerar seis linhas de resposta:
Content-type: text/html
<HTML>
You have displayed this page 2 times. <BR><BR>
<A HREF = http://www.nonexist.com/cgi/ex4?2>
Click here to refresh the page. </A> </HTML>
Quando o navegador exibir o documento, a tela ir mudar e mostrar a seguinte
mensagem:
You have displayed this page 2 times.
Click here to refresh the page.
Note que o novo documento tem o argumento ?2 embutido no URL. Assim, se o
usurio clicar na segunda sentena novamente, o navegador mostrar que a pgina foi exibida 3
vezes.
importante saber que o programa de documento dinmico no sabe quantas vezes que
a pagina foi atualizada o programa meramente reporta o que o argumento especifica. Por
exemplo, se o usurio manualmente entrar com o URL: http://www.nonexist.com/cgi/ex4?5693
O script ir reportar incorretamente que a pgina foi mostrada 5694 vezes.

26.12 Formulrio e Interaes


A noo de embutir a informao de estado no URL se tornou generalizada e estendida.
O HTML permite ao servidor declarar que o documento um formulrio que contm um ou
mais itens que o usurio deve fornecer. Para cada item, o formulrio especifica um nome para o
item. Quando o usurio seleciona um hyperlink no formulrio, o navegador adiciona um
argumento string ao URL, que contm cada um dos itens nomeados. Assim, o programa
dinmico pode obter valores que o usurio fornea.
Por exemplo, suponha o formulrio que contenha trs itens chamados AA, BB, e CC, e
suponha que o usurio forneceu os valores yes, no e maybe. Quando coletado no URL, o
navegador cria a string:
?AA=yes, BB=no, CC= maybe
A qual adicionada aoURL especificado.

198/223

Captulo 27 Tecnologia Java para Documentos Ativos


Web
27.1 Introduo
Este captulo considera o terceiro tipo de documento Web: o ativo. O captulo descreve
a motivao para documentos ativos, explica os conceitos bsicos, e compara a aproximao
dos documentos ativos tecnologia de um servidor usada para atualizaes contnuas. Em
adio, o captulo descreve os passos de traduo usados para preparar e carregar um
documento ativo, e mostra como o navegador estendido antes de poder executar um
documento ativo. Finalmente, o captulo considera a tecnologia Java que usada para criar e
executar um documento ativo. O mesmo caracteriza a linguagem Java e apresenta um simples
exemplo de aplicativo Java.

27.2 Uma maneira precoce de Atualizaes Contnuas


Quando o http e os navegadores Web foram projetados, se tornou claro que os
documentos dinmicos no iriam satisfazer a todos os propsitos. Em particular, como a
informao contida em um documento dinmico fixa quando o documento criado, o
documento dinmico no pode atualizar informaes na tela de exibio quando as informaes
mudam e no pode modificar imagens grficas para prover uma animao.
Duas tcnicas foram inventadas para permitir atualizaes contnuas na tela do usurio.
A primeira tcnica passa a responsabilidade ao servidor. Chamada de server push, o mecanismo
requer que o servidor gere e envie novas cpias do documento periodicamente. Na essncia, o
servidor deve executar um aplicativo associado com o documento dinmico continuadamente.
Quando este executado, o programa gera uma resposta on-line, a qual o servidor envia para
o navegador exibir. Do ponto de vista do usurio, o contedo da pgina continua mudando
enquanto est sendo visualizada.
Embora este mtodo fornea a habilidade de mudar as informaes continuamente, o
server push tem duas desvantagens: causa sobrecarga no servidor e introduz delay. Para
entender como a sobrecarga significante, observe que o servidor deve satisfazer muitos
clientes. Quando o usurio visualiza uma pgina que requer server push, o servidor deve
executar um programa de documento ativo associado com a pgina. Se muitos clientes
requisitam documentos que utilizam o server push, o servidor deve executar vrios aplicativos
ao mesmo tempo. Mais importante, como os contedos do documento dinmico podem
depender da fonte da requisio, o servidor deve executar cpias separadas do documento
dinmico, para cada requisio.
O delay causado pelos limites disponveis na CPU e a largura de banda da rede.
Quando N aplicativos so executados ao mesmo tempo em um computador, cada programa
recebe no mximo 1/N da capacidade de processamento da CPU. Assim, o restante de CPU
disponvel para os aplicativos cai rapidamente com o crescimento do nmero de requisies. Se
muitos navegadores visualizam estes documentos simultaneamente, a CPU no servidor ter uma
sobrecarga, e as atualizaes ficaro defasadas.
Largura de banda limitada pode introduzir tambm atrasos. O server push requisita que
cada navegador mantenha uma conexo TCP ativa, atravs da qual o servidor envia as
atualizaes continuamente. Infelizmente, a maioria dos computadores que so servidores tem
apenas uma conexo de Internet por onde os dados devero passar. Se muitos aplicativos tentam
enviar dados, a rede pode ter um engarrafamento.
199/223

Para introduzir igualdade, o sistema operacional requisita que os aplicativos revezem no


envio de pacotes. Como resultado, um aplicativo individual experimenta um atraso ao esperar o
acesso rede.

27.3 Documentos Ativos e Sobrecarga no Servidor


A utilizao de documentos ativos a segunda tcnica usada para fornecer atualizaes
contnuas de informao ao cliente, sendo uma maneira que evita sobrecargas no servidor. Ao
invs de requisitar computaes de atualizaes contnuas no servidor para vrios clientes, o
documento ativo aproxima a computao mvel ao navegador. Quando o navegador requisita
um documento ativo, o servidor retorna uma cpia do programa e o navegador o executa
localmente. Uma vez que o servidor fornece a cpia do documento, este no tem
responsabilidades futuras de execuo e atualizaes o navegador lida com toda computao
localmente. Assim, diferentemente do server push, o documento ativo no requisita que o
servidor use grandes quantidades de tempo destinadas ao processamento. Alm do que, como o
mtodo no requisita que o servidor transmita atualizaes continuamente, o documento ativo
no usa muito da largura de banda.
Um documento ativo pode introduzir menos sobrecarga ao servidor do que o documento
dinmico. Para entender como, importante notar trs fatos. Primeiro, para propsitos de
transporte, o navegador e servidor tratam o documento ativo como um documento esttico.
Cada documento ativo reside em um arquivo no servidor. O contedo de um documento ativo
no muda, a menos que o programador revise o documento. Assim, diferente do documento
dinmico, o navegador pode armazenar em cache uma cpia do documento ativo. Segundo, o
documento ativo no contm todo o software o navegador que executa um documento ativo
contm o software de suporte. Terceiro, o documento ativo pode ser traduzido para uma
representao compactada, que tem tamanho menor que o documento dinmico. Assim, de
vrios pontos de vista, tais como armazenamento, acesso e transporte os documentos ativos
podem ser executados com mais eficincia.

27.4 Representao e Traduo de um Documento Ativo


Qual representao deve ser usada para um documento ativo? A resposta complexa.
Como o documento ativo um programa que especifica como computar e exibir informaes,
muitas representaes so possveis. Alm disso, nenhuma representao nica tima para
todos os propsitos vrias representaes so necessrias. Por exemplo, quando o
programador cria um programa de computador, o programador precisa de uma forma que possa
ser entendida e facilmente manipulada pelos usurios. Para alcanar maior velocidade de
execuo, o hardware requer que o programa seja armazenado na forma binria. Finalmente,
uma representao compactada minimiza o delay e minimiza o consumo de largura de banda,
necessria para transferir o programa via Internet.
Para satisfazer todos os requerimentos, a tecnologia de documento ativo usa a mesma
aproximao geral para a representao do programa, como um programa convencional de
linguagem: a traduo. Em particular, a maioria dos sistemas de documentos ativos define
mltiplas representaes, onde cada representao otimizada para um propsito. O software
ento criado e pode traduzir automaticamente dentre vrias representaes. Assim, o
programador pode definir e editar o documento usando uma forma, enquanto o navegador que
executa o documento pode utilizar outra forma.

200/223

A figura abaixo ilustra trs representaes comuns de documentos ativos, e mostra as


tradues de uma forma outra.

Como a figura mostra, um documento ativo comea com uma source representation. A
source representation contm declaraes para os dados locais e algoritmos de implementao
usados para computar e exibir informaes. Em adio, a source representation permite ao
programador inserir comentrios que ajudem os usurios a entenderem o programa. De fato,
como a source representation de um documento ativo similar a source representation de
programas de computador, o programador pode usar ferramentas convencionais de
programao, como editores de texto para criar e mudar a fonte de um documento ativo.
Embora algumas tecnologias de documento ativo obriguem que o navegador aceite e
intrprete um documento source, a maioria dos sistemas fornece uma otimizao para grandes
documentos: o compilador usado para traduzir um documento com source representation para
a binary representation, similar a representao de objeto usado em programas convencionais.
Na binary representation, cada declarao executvel representada na forma binria, e
identificadores no programa so substitudos por marcas binrias. Tambm como um arquivo
objeto convencional, a representao binria inclui uma tabela de smbolos, que grava as
relaes entre nomes na representao fonte e localizaes na representao binria.
Aps o navegador obter uma cpia do documento ativo na forma binria, o software no
navegador traduz o documento para o executable representation, e carrega o programa
resultante dentro da memria do navegador. A traduo similar aos passos finais que um
sistema operacional realiza quando carrega um programa na forma de objeto. O navegador deve
resolver as diferenas que permaneceram e deve conectar o programa biblioteca de rotinas e as
funes do sistema. Uma vez que a conexo esteja completa, a tabela de smbolos no mais
necessria todo o documento foi traduzido para valores binrios.

27.5 Tecnologia Java


Desenvolvida pela Sun Microsystems, Java o nome de uma tecnologia especfica
usada para criar e executar documentos ativos. O Java utiliza o termo applet para descrever um
documento ativo e distinguir documentos ativos de programas computacionais convencionais. A
tecnologia Java inclui trs componentes chaves relacionados ao applets:

Linguagem de Programao. O Java inclui uma nova linguagem de


programao que pode ser usada como linguagem fonte para programas de
computador e para Java applets.

201/223

Ambiente de Tempo de Execuo. O sistema Java define um ambiente de tempo


de execuo que fornece as facilidades necessrias para executar um programa
Java.

Biblioteca de Classes. Para tornar os applets fceis de escrever, o Java fornece


uma grande biblioteca que contm softwares para realizarem muitas das tarefas
que o applet realiza.

Na prtica, isso pode tornar a distino entre os componentes difcil, pois estes so
projetados para trabalharem juntos. Por exemplo, a linguagem contm atributos que dependem
do suporte de tempo de execuo, e a biblioteca contm o software que fornece a interface que
facilita o ambiente de tempo de execuo. As prximas sees caracterizam cada componente
separadamente; sees frente explicam as relaes entre eles.

27.6 A Linguagem de Programao Java


Quando o programador cria um documento ativo, o programador escreve o programa na
linguagem fonte. Ao invs de contar com uma linguagem existente, a tecnologia Java define
uma nova linguagem de programao que tenta tornar a escrita e leitura de programas fontes
convenientes aos applets. Formalmente, a linguagem chamada de Java Programming
Language; informalmente, os programadores utilizam a abreviatura Java.

27.6.1 Caractersticas da Linguagem


A linguagem Java pode ser caracterizada como:

Alto Nvel. Como a maioria das linguagens de programao,o Java


classificado como uma de linguagem de programao de alto nvel, pois
projetada para esconder detalhes de hardware e tornar fcil a computao
expressa pelo programador.

Propsitos Gerais. Embora a linguagem fosse originalmente projetada como


uma ferramenta para escrever applets, a linguagem teve capacidade suficiente
para se tornar til em outras aplicaes. Mais importante, no existem
limitaes que impeam a linguagem Java de ser usada em programas.

Similaridade ao C++. A linguagem Java descende da linguagem de


programao C++. Assim, semelhanas sintticas e semnticas existem entre as
duas linguagens.

Orientada a Objeto. Como em outras linguagens orientadas a objeto, o Java


requer que o programador defina um conjunto de objetos e cada objeto contenha
dados bem como mtodos para operar os dados.

Dinmica. A instncia de um objeto criada dinamicamente no tempo de


execuo. Alm disso, o Java permite alguns atrasos de ligaes at no tempo
de execuo.

Fortemente Classificada em Tipos. No Java, cada item de dados declarado


com um tipo, e a linguagem probe que operaes sejam aplicadas aos dados
que tem tipos diferentes dos especificados para a operao.
202/223

Checagem de Digitao Esttica. No Java, a checagem dos dados digitados no


ocorre no tempo de execuo. A checagem de compatibilidade de todos os itens
no programa determinada quando o programa compilado.

Concorrncia. O Java permite ao programa ter vrios processos de controle; os


processos so executados simultaneamente.

27.6.2 Similaridades ao C++


O Java sofre uma forte semelhana com o C++; a linguagem mantm as mesmas
construes semnticas do C++, bem como muito da sintaxe. Por exemplo, a maioria das
declaraes encontrada no C++. Em adio, o mecanismo de tipos no Java usa hierarquia de
classes.
As diferenas bsicas entre Java e C++ ocorrem porque os projetistas desejaram tornar a
programao mais fcil e os programas mais confiveis. Conseqentemente, o Java teve que
reduzir alguma das complexidades do C++. Em particular, o Java omite caractersticas de
linguagem que so pouco usadas, facilmente ms compreendidas ou que tendam a erros. Por
exemplo, o Java no tem operador de sobre-carregamento, mltiplas heranas, ou coero
automtica extensiva de dados. Em alguns casos, o Java mantm caractersticas do C++, mas
restringe o uso das mesmas.

27.7 O Ambiente de Tempo de Execuo no Java


A tecnologia Java define um ambiente de tempo de execuo no qual os programas Java
so executados. O ambiente de tempo de execuo caracterizado por:

Execuo Interpretativa. Embora o programa Java possa ser compilado em um


cdigo para um computador especfico, os projetistas planejaram que a
linguagem fosse usada com um intrprete. Isto , diferente dos compiladores
tradicionais, que traduzem o programa fonte para o programa binrio, objeto
para uma arquitetura especfica; o compilador Java traduz o programa Java para
uma representao binria independente, chamada Java bytecode
representation. Um programa chamado intrpreter l a representao bytecode
e interpreta as instrues.

Automatic Garbage Collection. O gerenciamento de memria no Java difere


dramaticamente do gerenciamento de memria usado em linguagens como o C
e o C++. Ao invs de requisitar que o programa chame os procedimentos como
malloc e free para alocar e liberar memria, o sistema de tempo de execuo
Java fornece o automatic garbage collection. Isto , o programa pode depender
do sistema de tempo de execuo para achar e exigir uma memria que no est
sendo usada. Na essncia, quando um programa descarta todas referncias ao
objeto, o garbage collector exige que o objeto seja liberado da memria.

Execuo de Mltiplos Processos. O sistema de tempo de execuo Java


fornece suporte para processos concorrentes serem executados. Na essncia, o
sistema de tempo de execuo contm partes do sistema operacional que
trabalham agendando e fazendo trocas. Quando h trocas no processamento
entre processos ativos, o sistema permite que todos os processos prossigam.

203/223

Acesso Internet. O sistema de tempo de execuo Java contm uma biblioteca


socket que os programas usam para acessar Internet. Em particular, o
programa Java pode se tornar um cliente o programa pode usar o TCP ou
UDP para contatar um servidor remoto.

Suporte Grfico. Como o applet necessita de controle na exibio grfica, o


sistema de tempo de execuo contm mecanismos bsicos que permitem ao
programa Java criarem janelas na tela que contenham texto ou grficos.

A linguagem Java e o sistema de tempo de execuo so projetados para fazer o Java


independente do hardware do computador. Por exemplo, a linguagem no contm nenhum
atributo de implementao definida. Ao invs disso, o manual de referncia da linguagem define
o significado de cada operador e instruo sem ambigidade. Adicionalmente, a representao
bytecode independente do sistema computacional base. Conseqentemente, uma vez que um
programa Java seja compilado na representao bytecode, o programa produz exatamente a
mesma resposta em qualquer computador.
Usar uma mquina de representao binria independente e um intrprete, torna os
programas Java portveis atravs de varias arquiteturas de computadores. Considere um
programa Java compilado em um computador com processador Pentium, armazenado em um
servidor Web que usa processador Sparc, e executado em um computador que usa o processador
Alfa. A mesma representao bytecode resultar se o programa compilado pelo compilador
Java que executado em outra arquitetura. Similarmente, a mesma ter-se- a mesma resposta se
o compilador executado em outro computador.
Manter o applet independente do sistema bsico de hardware essencial por trs razes.
Primeiro, na Internet os usurios tm vrios tipos de computadores. A independncia entre
mquinas permite ao navegador ser executado em uma qualquer marca de computador, fazer
download e executar uma cpia do documento ativo. Segundo, a independncia de mquinas
garante que o documento ir produzir a resposta correta em todos navegadores. Terceiro, a
independncia de mquinas reduz drasticamente os custos de criao do documento, porque o
programador pode construir e testar uma verso do documento ativo ao invs de construir uma
verso para cada tipo de computador.

27.8 A Biblioteca Java


O terceiro componente da tecnologia Java a biblioteca de definies de classe.
A biblioteca extensa contm dzias de definies de classes com aproximadamente
2000 mtodos individuais. Mais importante, a biblioteca de classes contm classes que
transpe uma variedade de necessidades. Por exemplo, a biblioteca contm classes para:

Manipulao Grfica. As rotinas de manipulao grfica na


biblioteca permitem ao programa Java ter controle preciso dos
contedos e aparncia da tela do usurio.

Rede I/O de Baixo Nvel. A biblioteca contm classes que fornecem


acesso ao nvel do socket I/O com facilidade no sistema de tempo
de execuo. O programa Java pode usar as facilidades da rede de
baixo nvel I/O para enviar e receber datagramas UDP, ou abrir
uma conexo TCP para enviar e receber streams de dados.

204/223

Interao com Servidor Web. O applet talvez precise de acesso a


documentos estticos ou dinmicos ou at de outros applets. Por
exemplo, um applet pode seguir um URL para retomar e exibir um
documento esttico. A biblioteca contm classe para lidar com estes
casos.

Acesso ao Sistema de Tempo de Execuo. A biblioteca Java


contm classes que o applet pode usar para acessar facilidades no
ambiente de tempo de execuo. Por exemplo, um programa sendo
executado pode requisitar a criao de um processo.

Arquivos I/O. O applet usa as facilidades do arquivo I/O para


manipular arquivos no computador local. O arquivo I/O usado por
programas que salvam informaes de estado de longo termo.

Estruturas de Dados Tradicionais. A biblioteca contm classes que


definem estruturas de dados tradicionais. Por exemplo, o programa
pode usar a classe dictionary para criar uma estrutura de dados
eficiente para armazenar itens para devoluo futura.

Captura de Eventos. Eventos ocorrem quando o usurio aperta ou


solta o boto do mouse ou tecla no teclado. A biblioteca contm
classes que permite ao programa Java capturar e lidar com estes
eventos.

Lidar com Excees. Quando uma condio inesperada ou um erro


acontece em um programa Java, o ambiente de tempo de execuo
levanta um exception. A biblioteca Java contm um conjunto de
classes que tornam a exceo fcil de lidar.

27.9 O Conjunto de Ferramentas Grficas


O ambiente de tempo de execuo fornece facilidades que permite ao applet
manipular a tela do usurio, e a biblioteca Java contm o software que permite uma
interface grfica de alto nvel. Juntos, o suporte grfico de tempo de execuo e
biblioteca grfica so conhecidos como graphics tollkit, este conjunto de ferramentas
grficas no Java chamado de Abstract Window Toolkit (AWT). So duas as razes
porque o Java necessita de um conjunto de ferramentas grficas. Primeiro, o propsito
central de um applet a exibio complexa o applet usado quando uma exibio
esttica inadequada. Segundo, o programa que controla uma exibio grfica deve
especificar muitos detalhes. Por exemplo, quando o programa Java precisa exibir um
novo item ao usurio, o programa deve escolher entre exibir em uma subrea na janela
existente ou criar uma nova janela independente. Se a nova janela criada, o programa
deve especificar um cabealho para a janela, o tamanho da janela, as cores a serem
usadas, detalhes de onde colocar a janela e quando a janela tem uma barra de rolagem.
O AWT no especifica um estilo particular de grficos ou nvel de interao. Ao
invs disso, o conjunto de ferramentas de classes tanto para o nvel baixo ou nvel alto
de manipulao; o programador pode escolher se gerencia os detalhes ou chama os
mtodos do conjunto de ferramentas para fazer isso. Por exemplo, o conjunto de
ferramentas no precisa ditar a forma da janela. Juntos, o conjunto inclui classes de
baixo nvel para criar um painel retangular em branco na tela, desenhar linhas e
polgonos, ou capturar teclas e eventos do mouse que ocorrem no painel.
205/223

Por outro lado, o conjunto inclui classes de alto nvel que fornecem uma janela
completa, com cabealho, bordas e barras verticais e horizontais. O programador pode
escolher quando usar a janela estilizada fornecida ou programar os detalhes.
O programador deve escolher entre as facilidades de alto nvel ou de baixo nvel
para interagir com o usurio. Por exemplo, um applet pode usar classes de alto nvel do
conjunto de ferramentas para criar botes, menus pull-down, ou caixas de dilogo na
tela. Alternativamente, o applet pode criar estes itens usando o conjunto de ferramentas
de baixo nvel de classes para desenhar linhas, especificar sombras, e controlar a fonte
usada no texto exibido.
Como o applet pode necessitar de interaes com documentos estticos, o
conjunto de ferramentas fornece classes que realizam a navegao Web convencional.
Por exemplo, dado um URL, o applet pode usar o conjunto de ferramentas de classes
para buscar e exibir um documento HTML esttico, buscar e exibir uma imagem, ou um
clipe de udio.

27.10 Usando os Grficos Java em um Computador Particular


Como o AWT projetado para ser independente de uma marca especifica de
hardware e de um sistema grfico, a tecnologia Java no necessita usar o display de
hardware diretamente. Ao invs disso, o Java pode executar em cima dos sistemas
convencionais de janelas. Por exemplo, se um usurio executa um navegador no
computador que usa o Sistema de Janela X, o applet Java usa o X para criar e manipular
a janela na exibio. Se outro usurio executa outro sistema diferente de janela, o applet
ira usar aquele sistema de janela do usurio para criar e manipular exibies.
Como o applet Java pode trabalhar com mltiplos sistemas de janela? A
resposta reside em um mapeamento importa construdo dentro do sistema de tempo de
execuo e um conjunto de funes intermedirias. O sistema de tempo de execuo
Java contm um software intermedirio de camada. Cada funo intermediada pela
camada, que usa o sistema de janela do computador para programar uma operao
grfica Java especifica. Antes de o applet executar, o ambiente de tempo de execuo
estabelece um mapeamento entre cada mtodo grfico Java e a funo intermediaria
apropriada. Quando o applet requisita uma operao do AWT, o controle passa para um
mtodo na biblioteca Java. A biblioteca de mtodos ento repassa o controle para a
funo intermediaria apropriada, a qual usa o sistema de janelas do sistema para
fornecer a operao. O conceito conhecido como factory.
A vantagem de usar uma camada intermediria de software so a portabilidade e
generalizao. Como as funes intermedirias usam o sistema de janelas do
computador, apenas uma verso da biblioteca AWT necessria a biblioteca no
contm cdigos relacionados a hardwares grficos especficos. Como a ligao entre os
mtodos grficos Java e o sistema de software das janelas do computador estabelecido
pelo sistema de tempo de execuo, o applet Java porttil. A desvantagem principal
a impreciso que chega devido a interpretaes das operaes pela camada
intermediaria de software. Como resultado, o programa Java executado em dois
computadores no produz sempre dois resultados idnticos.

27.11 Intrpretes Java e Navegadores


Lembre que o navegador pode conter um ou mais intrpretes. O navegador
convencional contm um intrprete HTML usado para exibir documentos estticos ou
dinmicos. O navegador que executa o Java contm dois: um intrprete HTML e um
intrprete adicional para os applets.
206/223

O intrprete Java um programa complexo. O corao do intrprete um


simples loop que simula o computador. O intrprete mantm um instruction pointer que
iniciado no comeo do applet. A cada iterao, o intrprete busca o cdigo bytecode
encontrado no endereo no instruction pointer. O intrprete ento decodifica a instruo
e realiza a operao especfica. Por exemplo, se o intrprete acha o bytecode add e dois
operando inteiros, o intrprete adiciona os dois inteiros, atualiza o instruction pointer, e
continua com a prxima iterao.
Em adio ao decodificador de instrues bsicas, o intrprete Java deve incluir
suporte ao ambiente de tempo de execuo. Isto , o intrprete Java deve ser hbil para
exibir grficos na tela do usurio, acessar a Internet, e realizar I/O. O intrprete tambm
deve ser projetado para permitir que um applet use as facilidades no navegador, que
recuperam e mostram documentos estticos e dinmicos. Assim, o intrprete Java em
um navegador deve ser hbil para comunicar com o cliente http do navegador e com o
intrprete HTML.

27.12 Compilando um Programa Java


O applet Java deve ser compilado e armazenado em um servidor Web, assim o
navegador pode fazer o download e executar o applet. A tecnologia Java inclui um
compilador chamado javac. O programador executa o javac para compilar o programa
fonte Java para a representao bytecode Java.
A entrada para o javac programa fonte Java. O nome do arquivo de entrada
deve terminar com o sufixo .java. O Javac verifica se o programa sintaticamente
correto, traduz o programa para a representao bytecode, e coloca a sada em um
arquivo com o sufixo .class.
O programa Java consiste em uma seqncia de declaraes. Um item que
declarado public exportado para ser disponvel em outros applets; um item que
declarado private no exportado e no pode ser referenciado externamente. O arquivo
fonte deve conter exatamente uma classe pblica, a qual deve usar o mesmo nome do
prefixo do arquivo fonte. Isto , a classe pblica no arquivo zzz.java deve ser nomeada
zzz. Assim, o arquivo que contm o bytecode compilado da classe zzz tem o nome
zzz.class.

207/223

27.13 Um Exemplo de Applet


O cdigo a seguir contm um simples exemplo de applet para ilustrar conceitos
bsicos. O applet comea com a seqncia de declaraes import. Cada declarao
import direciona o compilador a usar um conjunto de classes da biblioteca Java.

Cada enunciado import contm o molde que especifica o conjunto de classes a


serem importadas. No molde, a maioria dos caracteres representa um encontro literal;
um asterisco, *, usado para denotar uma combinao de caracteres que seja o mesmo
que uma string arbitrria. Assim, o enunciado:
import java.applet.*;
Especifica que o compilador deve importar todas as classes cujo o nome
comeam com a string java.applet
No exemplo de applet, os dois enunciados import so usados para importar o
padro Applet e Abstract Window Toolkit classes. Como resultado, o applet ter acesso
aos mtodos que criam o ambiente applet e os mtodos para manipular exibies.
O exemplo applet define uma subclasse do tipo Applet chamada clickcount. Em
adio aos mtodos que a classe herda do Applet, a classe clickcount redefine dois
mtodos: init e action.
Quando o navegador chama a referncia ao applet, o Java cria uma nova
instncia do objeto clickcount. O Clickcount define dois itens de dados: um inteiro
chamado count e um Textfiel chamado f. Como parte da criao, o sistema de tempo de
execuo invoca o mtodo init. Este mtodo realiza vrios passos de iniciao. Aps
configurar count para zero, init usa o operador new para criar a instncia do objeto
Button, e chama add para adicionar o boto janela do applet. Finalmente, init usa new
para criar a instncia de um Textfield e design-lo a varivel f; usa o mtodo
setEdittable para tornar o texto em f apenas de leitura, e add para associar f janela do
applet.
A figura a seguir ilustra como o display ir aparecer aps init ter adicionado
dois itens grficos janela do applet.

208/223

O corao do exemplo o mtodo action. Se o boto nomeado Click Here


selecionado, o applet incrementa o valor da varivel count e muda a exibio. Para fazer
isso, o applet invoca o mtodo setText, o qual substitui a mensagem em f. Assim, cada
vez que o usurio clicar no boto, o display muda. A figura abaixo mostra como o
display ser aps o usurio clicar uma vez no boto.

Do ponto de vista do usurio, o exemplo de applet parece operar similiarmente


ao script CGI apresentado. Do ponto de vista de implementao, os dois operam de
maneira um pouco diferente. Diferente do script CGI, o applet mantm a informao de
estado localmente. Assim, o exemplo do applet no contata o servidor antes de atualizar
a tela.

27.14 Chamando um Applet


Dois mtodos so usados para chamar o applet. Primeiro, o usurio pode
fornecer ao URL do applet em um navegador que entende Java. Quando o navegador
contata o servidor especificado no URL, o servidor ir informar ao navegador que o
documento um applet Java. Segundo, um documento HTML que contm o applet tag
que se refere ao applet. Quando o navegador encontrar a etiqueta, o navegador contata o
servidor para obter uma cpia do applet.
Na forma mais simples, o applet tag especifica a localizao do arquivo .class
que ser copiado e executado. Por exemplo, suponha que o servidor Web na mquina
www.nonexist.edu armazene o arquivo bbb.class no diretrio example. O URL para o
applet :
http://www.nonexist.edu/example/bbb.class
O applet tag que especifica a localizao contm dois itens: o codebase, que
especifica a localizao do servidor e o caminho, e o code que fornece o nome do
arquivo class. Por exemplo, o applet tag abaixo:
<applet codebase=www.nonexist.edu/example/ code= bbb.class>
209/223

Contm a mesma informao que o URL anterior. O navegador que encontrar a


ltima etiqueta ir contatar o servidor, obter uma cpia do arquivo class, criar uma
instncia da classe bbb, e chamar o mtodo init.

27.15 Exemplo da Interao com o Navegador


Um applet pode interagir com o cliente HTTP e com o intrprete HTML em um
navegador. O applet usa o cliente HTTP do navegador para receber documentos e o
intrprete HTML do navegador para mostrar as informaes da pgina. O applet na
mostrado abaixo ilustra o conceito.

Como o exemplo mostra, o Java fornece bibliotecas de alto nvel que


simplificam a interao entre um applet e o navegador. Para usar esses instrumentos, o
applet comea com trs enunciados import. Juntamente ao Applet e ao Abstract
Window Toolkit,o applet importa o java.net.* , o qual contm definies de classes
relacionadas rede.
As operaes do applet so diretas. Quando o navegador inicia o applet, o
navegador cria uma instncia da classe button, e ento chama o mtodo init. O init cria
dois objetos botes, e utiliza o mtodo add para adicionar ambos ao display do applet.
210/223

Um boto nomeado Ying, enquanto o outro nomeado Yang. Uma vez que o init est
completo, a tela aparece igual figura abaixo.

O cdigo que interage com o navegador pode ser encontrado no mtodo action.
Quando o usurio clica no boto Ying, o mtodo action realiza trs tarefas. Primeiro, o
enunciado if checa qual dos botes foram clicados. Segundo, o applet retorna o applet
correto. Por exemplo, se o usurio clicar no boto nomeado Ying, o applet ir invocar:
new URL(http://www.nonexist.com/ying)
Requisitando ao cliente HTTP do navegador que ele consiga uma cpia do
documento associado com http://www.nonexist.com/ying. A operao new cria um
objeto local para armazenar o documento. Terceiro, o cdigo Java:
getAppleContext().showDocument
Requisita ao intrprete HTML que exiba o documento na tela do usurio. O
navegador ir substituir a exibio atual com o novo documento; o usurio deve clicar
no boto voltar no navegador para retornar ao applet.

27.16 Erros e Tratamento com Excees


No Java, todos os erros produzem excees; um applet requisitado para lidar
com essas excees explicitamente. Por exemplo, o applet na figura usa o objeto URL
para requisitar que o cliente HTTP acesse um documento. Se o URL est incorreto, a
rede est com problemas, ou o servidor est indisponvel, a invocao ir resultar em
uma exceo.
O exemplo de applet utiliza a construo try-catch para lidar com excees. A
sintaxe :
try { S } catch { E } { H }
Onde, se a exceo E ocorre enquanto est sendo executado S, invoque H. No
cdigo exemplo, E a varivel ex declarada para ser do tipo exception, e quem ir lidar
com as excees no especificado; logo todas as excees sero ignoradas. Assim, o
exemplo simples ignora erros, e fora o usurio a clicar em um boto para repetir a
operao.

211/223

27.17 Alternativas e Variaes


Vrias alternativas existem para a tecnologia Java descrita neste captulo. Por
exemplo, uma variao conhecida como JavaScript usada por applets pequenos que
no contm cdigos grandes ou complexos. Ao invs de compilar o applet para
representao bytecode, o JavaScript fornece uma linguagem de script, e faz com que o
navegador leia e interprete o script na sua forma fonte. Mais importante, o JavaScript
pode ser integrado junto com HTML uma pgina HTML pode ter uma funo
JavaScript que fornea uma simples interao com o usurio. Por exemplo, uma funo
JavaScript pode requisitar ao usurio que entre com uma informao, e ento a
informao verificada antes de comear a comunicao com o servidor.
A variao JavaScript tem tanto vantagens quanto desvantagens. As principais
vantagens so a simplicidade e a facilidade de uso. Um pequeno script pode estar
embutido em uma pgina. Como o script no necessita ser compilado, as mesmas
ferramentas podem ser usadas para criar um script como pgina ordinria Web. A
desvantagem principal a velocidade e o ajuste de escala da aplicao como a
representao fonte menos compacta que a representao bytecode, transportar um
programa fonte demora mais tempo. Alm do mais, o script demora mais tempo para ser
interpretado do que um programa na representao bytecode.
Outras variaes permitem ao programador escrever o applet em uma
linguagem diferente do Java Programming Language. Por exemplo, o sistema
AdaMagic consiste em um compilador Ada que foi adaptado para produzir
representao bytecode Java. O compilador aceita programas escritos na Ada
Programming Language, e produz sadas compatveis com o ambiente de tempo de
execuo Java.
Outras companhias tambm exploraram alternativas tecnolgicas. Por exemplo,
o Lucent Bell Laboratories desenvolveu uma tecnologia de documento ativo chamado
Inferno. Embora o Inferno seja conceitualmente similar ao Java, os detalhes diferem
dramaticamente.

212/223

Captulo 28 Administrao de Rede (SNMP)


28.1 Introduo
Os captulos anteriores descreveram uma variedade de aplicaes que usam a Internet.
Cada captulo examina a estrutura de software para um s servio e mostra como um cliente e
um servidor interagem.
Esse captulo expande nosso estudo sobre aplicaes de rede considerando softwares de
aplicao que administram o uso para medir ou controlar redes. Depois de explanar porque que
a administrao de redes importante e difcil, o captulo descreve como o software de
administrao de rede opera e as funcionalidades que ele prov. Finalmente, o captulo
considera um exemplo especfico de um protocolo de administrao de rede e explica como o
software para tal protocolo opera.

28.2 Administrando uma Internet


Um administrador de rede uma pessoa responsvel por monitorar e controlar os
sistemas de hardware e software que compreendem uma Internet. Um administrador trabalha
para detectar e corrigir problemas que tornam a comunicao ineficiente ou impossvel e para
eliminar condies que produziro o problema novamente. Devido a ambas as falhas de
hardware e de software poderem causar problemas, um administrador de rede deve monitorar
ambos.
A administrao de uma rede pode ser difcil por duas razes. Primeira, a maioria das
Internets heterognea. Isto , a Internet contm componentes de hardware e de software
produzidos por vrias empresas. Pequenos erros de um vendedor podem ocasionar
incompatibilidade de componentes. Segunda, a maioria das Internets grande. Em particular, a
Internet global abrange muitos sites em diversos pases ao redor do mundo. Detectar a causa de
um problema de comunicao pode ser especialmente difcil, se o problema ocorre entre dois
computadores em dois lugares.
Interessantemente, falhas que causam a maioria dos piores problemas so
freqentemente as mais simples de diagnosticar. Por exemplo, se o cabo coaxial em uma
Ethernet cortado ou o switch de uma LAN desligado, os computadores conectados a essa
LAN no sero capazes de enviar ou receber pacotes. Devido ao dano afetar a todos os
computadores em uma rede, o administrador pode localizar a fonte da falha rpida e
eficientemente. Similarmente, o administrador pode tambm detectar falhas catastrficas em um
software, como uma rota invlida, o que faria com que um roteador descartasse todos os pacotes
para um dado destino.
Em contraste com isso, falhas intermitentes ou parciais, freqentemente geram um
desafio difcil. Por exemplo, imagine um dispositivo de interface de rede que corrompe bits sem
uma freqncia fixa ou um roteador que erra a rota de poucos pacotes e redireciona muitos
outros corretamente. No caso de uma falha de interface intermitente, o checksum ou o CRC em
um frame podem ser suficientes para esconder esse problema o receptor descarta o frame
corrompido e quem o enviou deve eventualmente retransmiti-lo. Por isso, da perspectiva de um
usurio, a rede parece operar corretamente porque os dados eventualmente passam atravs do
sistema.
Por isso que, devido aos protocolos acomodarem a perda de pacotes, as falhas
intermitentes do hardware ou do software podem ser dificilmente detectadas e isoladas.

213/223

28.3 O Perigo de Falhas Ocultas


Infelizmente, embora elas permaneam ocultas, falhas intermitentes podem afetar o
desempenho da rede. Cada retransmisso usa largura de banda da rede que poderia ser usada
para enviar novos dados. Mais importante, as falhas em hardware freqentemente se tornam
piores com o passar do tempo, porque o hardware se deteriora. Com o aumento da freqncia
dos erros, mais pacotes devem ser retransmitidos. Devido s retransmisses diminurem a taxa
de transferncia e aumentarem o delay, o desempenho geral da rede diminui.
Em redes compartilhadas, a falha associada a um computador pode afetar os outros. Por
exemplo, suponha que a interface comece a falhar em um computador anexado a uma Ethernet.
Devido falha do hardware corromper alguns pacotes que o computador envia, o computador
eventualmente os retransmitir. Enquanto a rede utilizada para retransmisso, outros
computadores devem esperar para enviar seus pacotes. Por isso, cada retransmisso reduz a
largura de banda disponvel para todos os computadores.

28.4 Software de Administrao de Rede


Como um administrador de redes pode encontrar problemas e isolar suas causas? A
resposta est no software de administrao de rede que permite que o administrador monitore e
controle os componentes da rede. Por exemplo, o software de administrao de rede permite que
o administrador interrogue dispositivos como computadores, roteadores, switches e bridges para
determinar seu status e obter as estatsticas sobre as redes as quais eles esto anexados. O
software ainda permite que o administrador controle tais dispositivos mudando rotas e
configurando as interfaces de rede.

28.5 Clientes, Servidores, Administradores e Agentes


Surpreendentemente, a administrao de rede no definida como parte dos protocolos
de transporte ou de Internet. Ao invs disso, os protocolos que um administrador de rede utiliza
para monitorar e controlar os dispositivos de rede opera no nvel de aplicao. Isto , quando um
administrador precisa interagir com um dispositivo de hardware especfico, o software de
administrao segue o modelo convencional cliente-servidor: um programa de aplicao no
computador do administrador age como um cliente e a aplicao no dispositivo de rede age
como um servidor. O cliente no computador do administrador usa os protocolos de transporte
convencionais (por exemplo, TCP ou UDP) para estabelecer comunicao com o servidor. Os
dois ento trocam pedidos e respostas de acordo com o protocolo de administrao.
Para evitar confuso entre os programas de aplicao que o usurio executa e aplicaes
que so reservadas para os administradores de rede, os sistemas de administrao de rede evitam
os termos cliente e servidor. Ao invs disso, a aplicao cliente que roda no computador do
administrador chamada de um administrador e a aplicao que roda em um dispositivo de
rede chamada de um agente.
Pode parecer estranho que redes e protocolos de transporte convencionais sejam
utilizados para a administrao da rede. Afinal de contas, falhas nos protocolos ou no hardware
utilizado podem impedir pacotes de viajar de/ou para um dispositivo, tornando impossvel o
controle de um dispositivo, enquanto falhas estiverem ocorrendo. Na prtica, entretanto, usar
um protocolo de aplicao para a administrao da rede funciona bem por dois motivos.
Primeiro, em casos onde uma falha do hardware impede a comunicao, o nvel do protocolo
no importa o administrador pode se comunicar com aqueles componentes que permanecem
operando e utiliza sucessos e falhas para ajudar a localizar o problema. Segundo, usar
protocolos de transporte convencionais significa que os pacotes de um administrador estaro
sujeitos s mesmas condies do trfego normal. Por isso, se o delay for grande, o
administrador descobrir imediatamente.

214/223

28.6 Protocolo de Administrao de Rede Simples


O protocolo padro utilizado para administrar uma Internet conhecido como Simple
Network Management Protocol (SNMP). O protocolo SNMP define exatamente como que um
administrador se comunica com um agente. Por exemplo, o SNMP define o formato dos pedidos
que um administrador envia para um agente e o formato das respostas que um agente retorna.
Em adio, o SNMP define o significado exato para cada pedido e resposta possveis. Em
particular, o SNMP especifica que uma mensagem SNMP codificada utilizando um padro
conhecido como Abstract Syntax Notation.1 (ASN.1).
Embora todos os detalhes da codificao ASN.1 estejam alm do escopo desse texto,
um exemplo simples ajudar a explicar a codificao: considere o envio de um valor inteiro
entre um agente e um administrador. Para acomodar grandes valores sem gastar espao em cada
transferncia, o ASN.1 utiliza a combinao do tamanho e do valor para cada objeto a ser
transferido. Por exemplo, um valor inteiro entre 0 e 255 podem ser transferidos em um s octeto
(1 byte). Valores inteiros dentro da faixa entre 256 e 65535 requerem dois octetos, enquanto que
nmeros maiores requerem trs ou mais octetos. Para codificar um inteiro, o ASN.1 envia um
par de valores, o tamanho, L, seguido de L octetos que contm o valor inteiro. Para permitir a
codificao de valores inteiros grandes e arbitrrios, o ASN.1 permite tambm que o tamanho
ocupe mais de um octeto; tamanhos estendidos normalmente no so necessrios para valores
inteiros usados com o SNMP. A tabela abaixo mostra alguns exemplos numricos.

Inteiro em
decimal

Equivalente em
hexadecimal

Octeto de
tamanho

Octetos de valor
(em hexa)

27

1B

01

1B

792

318

02

03 18

24567

5FF7

02

5F F7

190345

2E789

03

02 E7 89

28.7 Paradigma Fetch-Store


O protocolo SNMP no define um grande conjunto de comandos. Ao invs disso, o
protocolo utiliza o paradigma Fetch-Store no qual existem duas operaes bsicas: fetch,
utilizada para obter um valor em um dispositivo, e store, utilizado para determinar um valor em
um dispositivo. Cada objeto que pode ser lido ou escrito recebe um nome nico; um comando
que determina uma operao fetch ou store deve especificar o nome do objeto.
Deveria ser bvio que operaes fetch fossem utilizadas para monitorar um dispositivo
ou obter o seu estado: a um conjunto de estados de um dispositivo deve ser definido e ser dado
um nome. Para obter informaes sobre o estado, um administrador l o valor associado quele
dado objeto. Por exemplo, um objeto pode ser definido para contar o nmero de frames que um
dispositivo descarta devido a checksums incorretos. O software deve ser programado para
incrementar o contador sempre que um erro de checksum for detectado. Um administrador pode
utilizar o SNMP para obter o valor associado com o contador para determinar sempre que erros
de checksum ocorrem.
Utilizando o paradigma fetch-store para controlar um dispositivo, pode no parecer to
bvio; operaes de controle so definidas para transformar o efeito da escrita em um objeto.
Por exemplo, o SNMP no inclui comandos separados de reset do contador de erros de
checksum ou para reiniciar um dispositivo.
215/223

Nesse caso do contador de erros de checksum, escrever um zero no objeto intuitivo


porque isso reinicia o contador para zero. Para operaes como a reiniciar um dispositivo,
entretanto, um agente SNMP deve ser programado para interpretar o pedido de escrita e para
executar a seqncia correta de operaes para alcanar o efeito desejado. Por isso, o SNMP
pode definir um objeto de reiniciao e especificar que a escrita de um zero nele produza uma
reiniciao do sistema. Na prtica, entretanto, a maioria dos sistemas no tem um contador de
reiniciao o software no agente deve checar explicitamente para uma operao de escrita que
especifique o objeto de reiniciao, e deve ento executar uma seqncia de passos para a
reiniciao do sistema.

28.8 O MIB e Nomes de Objetos


Cada objeto para o qual o SNMP tem acesso deve ser definido e receber um nome
nico. Mais ainda, ambos os programas administrador e agente devem concordar nos nomes e
significados das operaes de fetch e store. Coletivamente, um conjunto de todos os objetos que
o SNMP pode acessar conhecido como Management Information Base (MIB).
De fato, o SNMP no define uma MIB. Ao invs disso, o padro SNMP s especifica o
formato da mensagem e descreve como as mensagens so codificadas; um padro separado
especifica as variveis MIB com o significado de operaes fetch e store para cada varivel.
Objetos em uma MIB so definidos com o esquema de nomenclatura ASN.1, o qual
nomeia cada objeto com um prefixo longo que garante ao nome sua unicidade. Por exemplo, um
nmero inteiro que conta o nmero de datagramas IP que um dispositivo recebeu pode ser
chamado: iso.org.dod.Internet.mgmt.mib.ip.ipInReceives.
Quando o nome do objeto representado em uma mensagem SNMP, para cada parte do
nome designado um nmero inteiro. Por isso, em uma mensagem SNMP, o nome do
ipInReceives ser: 1.3.6.1.2.1.4.3

28.9 A Variedade de Variveis MIB


Devido ao SNMP no especificar um conjunto de variveis MIB, o desenvolvimento
flexvel. Novas variveis MIB podem ser definidas e padronizadas se necessrias, sem mudar o
protocolo base. Mais importante, a separao do protocolo de comunicao da definio de
objetos permite que grupos de pessoas definam as variveis MIB necessrias. Por exemplo,
quando um novo protocolo projetado, o grupo que o criou pode tambm definir variveis MIB
que sero usadas para monitorar e controlar o software dele. Similarmente, quando um grupo
cria um novo dispositivo de hardware, esse grupo pode especificar variveis MIB usadas para
monitorar e control-lo.
Como os principais desenvolvedores desejavam, muitos conjuntos de variveis MIB
tm sido criados. Por exemplo, existem variveis MIB que correspondem aos protocolos UDP,
TCP, IP e ARP, assim como as variveis MIB para hardware de rede como Ethernet, Token
Ring e FDDI. Adicionalmente, grupos tm definido MIBs para dispositivos de hardware como
bridges, switches e impressoras.

28.10 Variveis MIB que Correspondem a Vetores


Em adio s variveis mais simples como os nmeros inteiros que correspondem aos
contadores, uma MIB pode incluir variveis que correspondem a tabelas ou vetores. Tais
definies so teis, porque elas correspondem implementao de informao em um sistema
operacional. Por exemplo, considere uma tabela de roteamento IP. Na maioria das
implementaes, a tabela de roteamento pode ser vista como um vetor de entradas, onde cada
entrada contm um endereo de destino e o prximo salto utilizado para alcan-lo.
Diferente das linguagens de programao convencionais, o ASN.1 no inclui uma
operao de indexao.
216/223

Ao invs disso, referncias indexadas esto implcitas quem envia deve saber que o
objeto referido uma tabela e deve anexar a informao de indexao no nome dele. Por
exemplo, a varivel MIB:
Prefixo MIB padro.ip.TabelaRoteamentoIP
Corresponde a uma tabela de roteamento IP, da qual cada entrada possui vrios campos.
Conceitualmente, uma tabela indexada pelo endereo IP de destino. Para obter o valor de um
campo em particular dentro de uma entrada, o administrador especifica o nome na forma:
Prefixo MIB padro.ip.TabelaRoteamentoIP.EntradaRotaIP.campo.endIPdest
Onde o campo corresponde a um dos campos vlidos em uma entrada e o endIPdest
um endereo IP de 8 bytes que usado para indexar. Por exemplo, o campo ProxSaltoRotaIP
corresponde ao prximo salto de uma entrada. Quando se converte a representao para
nmeros inteiros, o pedido de prximo salto fica assim: 1.3.6.1.2.1.4.21.1.7.destino
Onde 1.3.6.1.2.1 o prefixo MIB padro, 4 o cdigo para ip, 21 o cdigo para
TabelaRoteamentoIP, 1 o cdigo para EntradaRotaIP, 7 o cdigo para o campo
ProxSaltoRotaIP e o destino o valor numrico do endereo IP do destino.

217/223

Captulo 29 Segurana de Rede

29.1 Introduo
Nos captulos anteriores foi descrito como os sistemas de hardwares e softwares de rede
operam. Tambm foi explicado como aplicaes cliente e servidor usavam os equipamentos de
rede para se comunicarem. Este captulo considera o importante aspecto da segurana da rede. O
captulo caracteriza os problemas de segurana, descreve os nveis de segurana que os usurios
esperam de um sistema de rede e explica tcnicas bsicas utilizadas para melhorar a segurana
da rede.

29.2 Redes Seguras e Polticas de Segurana


O que a rede segura? Uma Internet pode ser segura? Embora seja atrativo o conceito
de uma rede segura para a maioria dos usurios, redes no podem ser simplesmente
classificadas como segura ou no segura porque o termo no absoluto cada organizao
define o nvel de acesso que permitido ou negado. Por exemplo, algumas organizaes
guardam dados que so valiosos. Tais organizaes definem uma rede segura como um sistema
que previne de pessoas externas de acessarem os computadores internos. Outras organizaes
precisam tornar a informao disponvel para as pessoas de fora, mas impedi-las de alter-las.
Tais organizaes podem definir uma rede segura como uma que permita acesso arbitrrio aos
dados, mas inclua mecanismos que impeam mudanas no autorizadas. Outros grupos focam
em manter a comunicao privada: eles definem uma rede segura como sendo uma na qual
nenhuma outra pessoa, a no ser o destinatrio desejado, possa interceptar e ler uma mensagem.
Finalmente, muitas organizaes grandes precisam de uma definio complexa de segurana,
que permita acesso a dados ou servios especficos que a empresa escolha, enquanto impede o
acesso ou modificao de dados e servios importantes que so mantidos em privacidade.
Devido a no existncia de uma definio absoluta para rede segura, o primeiro passo
que uma empresa deve tomar para alcanar um sistema de segurana definir as polticas de
segurana prpria. A poltica no especifica como alcanar a proteo. Ao invs disso, ela diz
claramente e sem ambigidades os itens que sero protegidos.
A definio de uma poltica de segurana de rede complexa. A primeira complexidade
vem do fato de que uma poltica de segurana de rede no pode ser diferente da poltica de
segurana dos sistemas computacionais anexados rede. Em particular, definir uma poltica
para dados que viajam atravs de uma rede no garante que eles estaro seguros. Por exemplo,
considere que os dados guardados em um arquivo podem ser lidos. A segurana de rede no
pode prevenir de que usurios no autorizados, que tenham contas nesse computador, de
obterem uma cpia desses dados. Por isso, para ser eficiente, uma poltica de segurana deve ser
aplicada a todo o momento. A poltica deve abranger os dados guardados em disco, os dados
comunicados atravs de uma linha telefnica com um modem dial-up, as informaes impressas
em papel, os dados transportados em mdia porttil como disquetes e os dados comunicados
pela rede local de computadores.
Avaliar os custos e benefcios de vrias polticas de segurana tambm adiciona
complexidade. Em particular, uma poltica de segurana no pode ser definida a no ser que a
empresa entenda o valor de sua informao. Em muitos casos, o valor da informao difcil de
ser estimado. Considere, por exemplo, um banco de dados de folha de pagamento simples, que
contenha um registro de cada empregado, suas horas trabalhadas e seu salrio por hora. O
aspecto de valor mais fcil de avaliar o custo de recuperao. Isto , calcular o tempo da mo
de obra necessria para recriar ou verificar o contedo do banco de dados (por exemplo, de
recuperar os dados de um arquivo ou realizar o trabalho necessrio para coletar essa
informao).
218/223

Um segundo aspecto de valor est nas perdas financeiras que uma organizao pode
sofrer se a informao estiver incorreta. Por exemplo, se uma pessoa no autorizada aumentar o
salrio por hora em um banco de dados da folha de pagamento, a companhia pode ter custos no
esperados, pois os empregados receberiam dinheiro a mais. Um terceiro aspecto de valor est
nos custos indiretos que podem ocorrer de violaes na segurana. Por exemplo, se as
informaes da folha de pagamento se tornarem pblicas, competidores podem escolher
contratar trabalhadores, o que resulta em custos de contratao e treinamento de substitutos,
assim como o aumento de salrio necessrio para manter outros empregados.

29.3 Aspectos da Segurana


Definir uma poltica de segurana tambm complicado, porque cada organizao deve
decidir quais aspectos de proteo so os mais importantes e deve manter uma boa relao
segurana versus facilidade de uso. Por exemplo, uma empresa pode considerar:
Integridade de dados. A integridade se refere proteo da troca de dados: Os dados
que chegam para algum so exatamente os mesmos dados que foram enviados?
Disponibilidade dos Dados. Disponibilidade se refere proteo contra a interrupo de
um servio: Os dados continuam acessveis para os usurios legtimos?
Confiabilidade e Privacidade dos Dados. Confiabilidade e privacidade se referem
proteo contra observadores no autorizados ou coleta ilegal de dados: Os dados esto
protegidos contra acesso no autorizado?

29.4 Responsabilidade e Controle


Muitas empresas descobrem que elas no podem desenvolver uma poltica de
segurana, porque ela no tem controle de como a responsabilidade pela informao est
distribuda ou controlada. O assunto sobre responsabilidade tem muitos aspectos a serem
considerados:
Contabilidade. A contabilidade se refere como um registro de auditoria mantido: Qual
grupo responsvel por cada item de dados? Como o grupo mantm registros de acesso e
modificaes?
Autorizao. A autorizao se refere responsabilidade por cada item de informao e
como ela delegada para outros: Quem responsvel onde a informao reside e como uma
pessoa responsvel aprova acessos e mudanas?
O ponto crtico por debaixo da contabilidade e da autorizao o controle uma
organizao deve controlar o acesso informao, analogamente ao modo como ela controla o
acesso aos seus recursos fsicos como escritrios, equipamentos e suprimentos.

29.5 Mecanismos de Integridade


Discutiu-se anteriormente tcnicas usadas para assegurar a integridade dos dados contra
danos acidentais: paridade de bits, checksums e cyclic redundancy checks (CRCs). Para utilizar
tais tcnicas, quem envia calcula um valor inteiro e pequeno como uma funo dos dados em
um pacote. O receptor recalcula a funo atravs dos dados que chegaram e compara o resultado
com o valor que quem enviou calculou.
219/223

Um checksum ou CRC no podem garantir absolutamente a integridade dos dados por


duas razes. Primeira, se o mau funcionamento do hardware mudar, o valor de um checksum,
assim como o valor dos dados, possvel que o checksum alterado seja vlido para os dados
alterados. Segundo, se mudanas nos dados forem resultantes de um ataque planejado, o
atacante pode criar um checksum vlido para os dados alterados.
Muitos mecanismos tm sido utilizados para garantir a integridade de mensagens contra
mudanas intencionais. Em geral, os mtodos codificam os dados transmitidos com um message
authentication code (MAC) que o atacante no possa quebrar ou forjar. Esquemas de
codificao tpicos usam mecanismos de hashing para criptografia. Por exemplo, um esquema
de hashing para criptografia usa uma chave secreta, conhecida apenas por quem envia e por
quem recebe. Quando quem envia codifica a mensagem, a funo hash para criptografia utiliza a
chave secreta para embaralhar a posio dos bytes dentro da mensagem, e assim codificar os
dados. Apenas o receptor pode desembaralhar os dados: um atacante, que no tem a chave
secreta, no pode decodificar a mensagem sem introduzir erros. Por isso, o receptor sabe que
qualquer mensagem que pode ser decodificada corretamente autntica.

29.6 Controle de Acesso e Senhas


Muitos sistemas operacionais utilizam o sistema de senhas para controlar o acesso aos
recursos. Cada usurio tem uma senha, a qual mantida em segredo. Quando o usurio precisa
acessar recursos protegidos, ele tem que fornecer sua senha.
Um simples esquema de senha funciona bem para sistemas operacionais convencionais,
porque o sistema no revela a senha para outros. Em uma rede, entretanto, um mecanismo
simples de senha est susceptvel a roubo. Se um usurio em uma localizao, envia sua senha
atravs da rede para um computador em outra localizao, qualquer um que grampeie a rede
pode obter uma cpia da senha. Observar mensagens em uma rede especialmente fcil quando
os pacotes viajam atravs de uma LAN, porque muitas tecnologias de LAN permitem que uma
estao anexada rede capture uma cpia de todo o trfego. Em tais situaes, passos adicionais
devem ser tomados para prevenir que a senha seja reusada.

29.7 Encriptao e Privacidade


Para assegurar que o contedo de uma mensagem permanea confidencial, mesmo com
tentativas de interceptao, ela deve ser encriptada. Na essncia, a encriptao embaralha os
bits de uma mensagem de tal maneira que apenas o seu receptor consiga desembaralh-la.
Algum que intercepte uma cpia da mensagem encriptada no ser capaz de extrair suas
informaes.
Existem muitas tecnologias de encriptao. Em algumas tecnologias, quem envia e
quem recebe devem ter uma cpia de uma chave de encriptao, a qual mantida em segredo.
Quem envia utiliza a chave para produzir a mensagem encriptada, a qual ento enviada atravs
da rede. O receptor utiliza a chave para decodificar a mensagem encriptada. Isto , a funo
encriptar tem dois argumentos: a chave, K e a mensagem a ser encriptada, M. A funo produz
uma verso encriptada da mensagem, E.

E = encriptar (K , M)

A funo decriptar reverte o processo, a fim de obter a mensagem original:

M = decriptar (K , E)

Matematicamente, decriptar o inverso de encriptar:

M = decriptar (K , encriptar (K , M))


220/223

29.8 Encriptao por Chave Pblica


Em muitos esquemas de encriptao, a chave deve se mantida em segredo para evitar
comprometer a segurana. Uma tcnica de encriptao interessante designa para cada usurio
um par de chaves. Uma delas, chamada de chave privada, mantida em segredo, enquanto que
a outra, que se chama chave pblica, publicada junto com o nome do usurio; ento todo
mundo sabe o seu valor. A funo de encriptao tem a propriedade matemtica de que a
mensagem encriptada com a chave pblica no pode ser facilmente decriptada, exceto com a
chave privada; e a mensagem encriptada com a chave privada no pode ser decriptada exceto
com a chave pblica.
As relaes entre a encriptao e a decriptao com as duas chaves podem ser expressas
matematicamente. Denotemos a mensagem por M, a chave pblica do usurio 1 por pub-u1 e a
chave privada do usurio 1 por prv-u1. Ento:
M = decriptar (pub-u1, encriptar (prv-u1 , M )), e
M = decriptar (prv-u1, encriptar (pub-u1 , M ))
Revelar a chave pblica seguro, porque as funes usadas para encriptar e decriptar
tm uma propriedade de s uma via. Isto , dizer a qualquer um a chave pblica no permite
que a pessoa forje uma mensagem que parea estar encriptada com a chave privada.
A encriptao por chave pblica pode ser utilizada para garantir a confidencialidade.
Quem envia a mensagem e deseja que ela permanea em sigilo utiliza a chave pblica do
receptor para encriptar a mensagem. Obter uma cpia da mensagem quando ela passar pela rede
no permite que algum leia seu contedo, porque a decriptao requer a chave privada do
receptor. Por isso, esse esquema assegura que os dados permaneam confidenciais, pois apenas
o receptor pode decriptar a mensagem.

29.9 Autenticao com Assinaturas Digitais


Um mecanismo de encriptao pode tambm ser utilizado para autenticar quem est
enviando uma mensagem. Essa tcnica conhecida como assinatura digital. Para assinar uma
mensagem, quem a envia encripta a mensagem usando uma chave conhecida apenas por essa
pessoa. O receptor utiliza a funo inversa para decriptar a mensagem. O receptor sabe quem
enviou a mensagem porque apenas quem enviou a mensagem tem a chave necessria para
realizar a encriptao. Para assegurar que as mensagens encriptadas no sero copiadas e
reenviadas mais tarde, a mensagem original pode conter um tempo e data em que a mensagem
foi criada.
Considere como um sistema de chave pblica pode ser usado para prover uma
assinatura digital. Para assinar uma mensagem, o usurio encripta a mensagem usando sua
chave privada. Para verificar a sua assinatura, o receptor verifica a sua chave pblica e a utiliza
para decriptar a mensagem. Devido ao usurio conhecer a chave privada, apenas o usurio pode
encriptar uma mensagem que pode ser decodificada com sua chave pblica.
Interessantemente, dois nveis de encriptao podem ser utilizados para garantir que a
mensagem seja autntica e privada. Primeiro, a mensagem assinada atravs da utilizao da
chave privada do usurio que a envia para encript-la. Segundo, a mensagem encriptada
encriptada novamente usando a chave pblica do seu receptor. Matematicamente, a dupla
encriptao pode ser expressa assim:
X = encriptar(pub-u2 , encriptar(prv-u1 , M))

221/223

Onde M a mensagem original, X a mensagem duplamente encriptada, prv-u1 a


chave privada do usurio que envia a mensagem e pub-u2 a chave pblica do seu receptor.
Quando ela recebida, o processo de decriptao o reverso do processo de
encriptao. Primeiro, o receptor utiliza a sua chave privada para decriptar a mensagem. A
decriptao remove um nvel de encriptao, mas ainda deixa a mensagem digitalmente
assinada. Segundo, o receptor usa a chave pblica de quem enviou a mensagem para decript-la
novamente. O processo pode ser expresso como:
M = decriptar(pub-u1 , decriptar(prv-u2 , X))
Onde X a mensagem que viajou pela rede, M a mensagem original, prv-u2 a chave
privada do receptor e pub-u1 a chave pblica de quem a enviou.
Se uma mensagem com sentido resultar da dupla decriptao, verdade que a
mensagem era confidencial e autntica. A mensagem deve alcanar o seu receptor desejado,
pois somente ele tem a chave privada correta, necessria para remover a primeira encriptao. A
mensagem deve ter sido autenticada, porque apenas quem a enviou tem a chave privada
necessria para encript-la, para que a sua chave pblica decript-a corretamente.

29.10 Filtragem de Pacotes


Para prevenir que cada computador em uma rede acesse arbitrariamente computadores
ou servios, muitos sites utilizam a tcnica conhecida como filtragem de pacotes. Como ilustra
a figura abaixo, um filtro de pacotes um programa que opera em um roteador. O filtro consiste
em um software que pode impedir que pacotes passem pelo roteador de uma rede para outra. O
administrador deve configurar o filtro de pacotes para especificar quais pacotes podem passar
pelo roteador e quais devem ser bloqueados.
128.10.0.0

192.5.48.0
Roteador

Filtragem de pacotes no roteador


O filtro de pacotes opera examinando campos no cabealho de cada pacote. O filtro
pode ser configurado para especificar quais campos do cabealho sero examinados e como
interpretar seus valores. Para controlar quais computadores em uma rede podem se comunicar
com computadores em outra, um administrador especifica que o filtro deve examinar os campos
origem e destino no cabealho de cada pacote. Na figura, para prevenir que o computador com
endereo IP 192.5.48.27 na rede da direita se comunique com qualquer computador da rede da
esquerda, o administrador deve especificar que o filtro bloqueie todos os pacotes com o
endereo de origem igual a 192.5.48.27. Similarmente, para evitar que um computador com o
endereo 128.10.0.32 na rede da esquerda de receber qualquer pacote da rede da direita, o
administrador especifica que o filtro bloqueie todos os pacotes cujo o endereo destino seja
igual a 128.10.0.32.
Alm de utilizar os endereos de origem e destino, um filtro de pacotes pode examinar o
protocolo em um pacote ou o servio de nvel mais alto ao qual o pacote corresponde. A
habilidade de bloquear pacotes seletivamente para um servio em particular significa que o
administrador pode evitar trfego para um s servio, enquanto permite o trfego para outros.
Por exemplo, um administrador pode configurar um filtro de pacotes para bloquear todos os
222/223

pacotes que carregam comunicao da World Wide Web, enquanto permite pacotes que
carregam trfego de e-mail.
Um mecanismo de filtro de pacotes permite que um administrador especifique
combinaes complexas de endereos de origem e destino, e servios. Tipicamente, o software
de filtro de pacotes permite que o administrador especifique combinaes booleanas de origem,
destino e tipo de servio. Por isso, um administrador pode controlar o acesso a servios
especficos em computadores especficos. Por exemplo, o administrador pode escolher bloquear
todo o trfego destinado para o servio FTP no computador 128.10.2.14, todo o trfego da
World Wide Web que deixa o computador 192.5.48.33 e todo o e-mail do computador
192.5.48.34. O filtro bloqueia apenas as combinaes especificadas o filtro deixa passar o
trfego destinado para outros computadores e trfego para outros servios nos computadores
especificados.

29.11 Conceito de Firewall da Internet


Um filtro de pacotes muito utilizado para proteger computadores de uma organizao
e redes do trfego no desejado da Internet. A figura abaixo mostra o filtro colocado em um
roteador que conecta a organizao ao resto da Internet:

Rede da empresa

Internet

Filtro de pacotes
que protege a
organizao

Um filtro de pacotes configurado para proteger uma organizao contra o trfego do


resto da Internet chamado de firewall da Internet; o termo vem do limite fsico prova de
fogo colocado entre duas estruturas para evitar que o fogo passe entre elas. Como um firewall
convencional, um firewall da Internet feito para evitar que os problemas na Internet se
espalhem pelos computadores da organizao.
Os firewalls so as ferramentas de segurana mais importantes usadas para lidar com
conexes de rede entre duas organizaes que no confiam uma na outra. Ao colocar um
firewall em cada conexo com rede externa, uma organizao estabelece um permetro de
segurana, que evita que pessoas de fora interfiram nos computadores da rede interna. Em
particular, limitando o acesso a um conjunto pequeno de computadores, um firewall pode
prevenir que pessoas de fora vejam todos os computadores em uma organizao, inundando as
redes da empresa com trfego no desejado ou atacando um computador, enviando uma
seqncia de datagramas IP que se sabe causam o mau funcionamento do sistema
computacional (por exemplo, derrubando-o).
Um firewall pode reduzir o custo da segurana. Sem o firewall para prevenir acesso,
pessoas de fora podem enviar pacotes para computadores arbitrrios dentro da empresa.
Conseqentemente, para prover segurana, uma organizao deve tonar todos os computadores
seguros. Com o firewall, entretanto, um administrador pode restringir a entrada de pacotes a um
pequeno grupo de computadores. No caso mais extremo, o conjunto pode conter apenas um
computador. Embora tal conjunto de computadores precise estar seguro, os outros computadores
da empresa nem sempre precisam. Dessa forma, a organizao pode economizar dinheiro
porque mais barato instalar um firewall do que tornar todos os sistemas operacionais seguros.
223/223

Vous aimerez peut-être aussi