Apostila (Versão 2.10)

Transcrição

Apostila (Versão 2.10)
Apostila de Fundamentos de
Redes de Computadores
Versão 2.10
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Índice Analítico
Índice Analítico ....................................................................................................2
Índice de Figuras dos Capítulos ........................................................................ 10
Índice de Figuras dos Apêndices ....................................................................... 14
Índice de Equações ............................................................................................ 15
Índice de Tabelas dos Capítulos ........................................................................ 16
Capítulo 1 Comunicação de Dados ................................................................. 17
1.1
Conceitos básicos de Transmissão de dados ............................................................................. 17
1.1.1 Sinais .................................................................................................................................... 17
1.1.1.1 Sinais Analógicos e Digitais ......................................................................................... 17
1.1.1.1.1
1.1.1.1.2
Sinais Analógicos .............................................................................................................. 17
Sinais Digitais ................................................................................................................... 17
1.1.2 Formas de Onda ................................................................................................................... 18
1.1.2.1 Amplitude ..................................................................................................................... 18
1.1.2.2 Frequência .................................................................................................................... 18
1.1.2.3 Fase .............................................................................................................................. 19
1.1.3 Taxa de Transmissão Máxima de um Canal ......................................................................... 21
1.1.3.1 Teorema de Nyquist...................................................................................................... 21
1.1.4 Fontes de Distorção de Sinais em Transmissão .................................................................... 22
1.1.4.1 Ruídos .......................................................................................................................... 22
1.1.4.1.1
1.1.4.1.2
1.1.4.1.3
1.1.4.1.4
1.1.4.1.5
Ruído Térmico .................................................................................................................. 22
Ruído de Intermodulação ................................................................................................... 22
Ruído de Crosstalk (Linha Cruzada) .................................................................................. 22
Ruído Impulsivo ................................................................................................................ 23
Lei de Shannon .................................................................................................................. 23
1.1.4.2 Atenuações ................................................................................................................... 23
1.1.4.3 Ecos .............................................................................................................................. 23
1.1.5 Técnicas de Modulação ........................................................................................................ 24
1.1.5.1 Modulação Analógica ................................................................................................... 24
1.1.5.1.1
1.1.5.1.2
1.1.5.1.3
Modulação por Amplitude (AM) ....................................................................................... 24
Modulação por Frequência (FM) ....................................................................................... 25
Modulação por Fase (PM) ................................................................................................. 25
1.1.5.2 Modulação Digital ........................................................................................................ 25
1.1.5.2.1
1.1.5.2.2
1.1.5.2.3
Modulação por Deslocamento de Amplitude (ASK) .......................................................... 25
Modulação por Deslocamento de Frequência (FSK) .......................................................... 26
Modulação por Deslocamento de Fase (PSK) .................................................................... 26
1.1.6 Comutação ........................................................................................................................... 26
1.1.6.1 Circuitos ....................................................................................................................... 26
1.1.6.2 Mensagens .................................................................................................................... 28
1.1.6.3 Pacotes .......................................................................................................................... 28
1.1.6.3.1
1.1.6.3.2
Comutação de Pacotes – Circuito Virtual ........................................................................... 29
Comutação de Pacotes – Datagrama ................................................................................. 29
1.1.6.4 Células .......................................................................................................................... 30
2
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
1.1.7 Forma de Comunicação ........................................................................................................ 30
1.1.8 Multiplexação ....................................................................................................................... 30
1.1.8.1 Multiplexação na Frequência ........................................................................................ 31
1.1.8.2 Multiplexação no Tempo .............................................................................................. 33
1.1.8.2.1
1.1.8.2.2
TDM Síncrono .................................................................................................................. 33
TDM Assíncrono ............................................................................................................... 34
1.1.8.3 Características do FDM e do TDM ............................................................................... 35
1.1.8.4 Sistemas em Banda Larga e em Banda Básica .............................................................. 35
1.1.8.4.1
1.1.8.4.2
Sinalização em Banda Básica ............................................................................................ 36
Sinalização em Banda Larga .............................................................................................. 36
1.1.9 Digitalização de um Sinal pela Técnica PCM ...................................................................... 36
1.1.10 Codificação e Transmissão de Sinais Digitais em Banda Básica .......................................... 37
1.1.10.1 Transmissão Assíncrona ............................................................................................. 38
1.1.10.2 Transmissão Síncrona ................................................................................................. 40
1.1.10.2.1
1.1.10.2.2
Codificação Manchester .................................................................................................. 41
Codificação Manchester Diferencial ................................................................................ 43
1.1.11 Técnicas de Detecção de Erros ............................................................................................. 44
1.1.11.1 Paridade ...................................................................................................................... 45
1.1.11.2 CRC ............................................................................................................................ 45
Capítulo 2 Meios de Transmissão e Topologia de Redes ............................... 48
2.1
Meios de Transmissão ............................................................................................................... 48
2.1.1 Fios de cobre ........................................................................................................................ 48
2.1.1.1 Cabo de Par Trançado ................................................................................................... 48
2.1.1.2 Cabo Coaxial ................................................................................................................ 49
2.1.2 Fibras de Vidro ..................................................................................................................... 50
2.1.3 Rádio .................................................................................................................................... 50
2.1.4 Satélites ................................................................................................................................ 50
2.1.4.1 Satélites Geossíncronos ou Geoestacionários ............................................................... 51
2.1.4.2 Satélites de Baixa Órbita da Terra ................................................................................ 51
2.1.4.3 Arrays de Satélites de Baixa Órbita da Terra ................................................................ 52
2.1.5 Microondas........................................................................................................................... 52
2.1.6 Infravermelho ....................................................................................................................... 53
2.1.7 Luz de Laser......................................................................................................................... 53
2.2
Classificação de Redes .............................................................................................................. 53
2.3
Topologia de Redes Locais (LAN) ........................................................................................... 54
2.3.1 Estrela .................................................................................................................................. 54
2.3.2 Anel ...................................................................................................................................... 54
2.3.3 Barramento ........................................................................................................................... 55
Capítulo 3 Modelo OSI .................................................................................... 56
3.1
Tipos de Serviços OSI............................................................................................................... 58
3.1.1 Serviço Orientado a Conexão ............................................................................................... 58
3.1.2 Serviço não Orientado a Conexão ........................................................................................ 59
3.2
OSI Hoje ................................................................................................................................... 59
Capítulo 4 Dispositivos de Conectividade....................................................... 61
4.1
Placas de Rede (NIC – Network Interface Card) ...................................................................... 61
4.2
Modems ..................................................................................................................................... 61
4.3
Repetidores ............................................................................................................................... 61
3
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
4.4
Hubs (Concentradores) ............................................................................................................. 61
4.5
Bridges (Pontes) ........................................................................................................................ 62
4.6
Switches (Comutadores) ............................................................................................................ 63
4.7
Gateways................................................................................................................................... 64
4.8
Roteadores ................................................................................................................................ 65
4.9
Access Point (Ponto de Acesso – AP) ....................................................................................... 65
Capítulo 5 Método de Acesso ao Meio ............................................................ 66
5.1
Método de Acesso ao Meio ....................................................................................................... 66
5.1.1 CSMA .................................................................................................................................. 66
5.1.1.1 CSMA/CD .................................................................................................................... 66
5.1.1.2 CSMA/CA .................................................................................................................... 68
5.1.2 Token Passing (Passagem de Token) .................................................................................... 70
5.2
Arquitetura ................................................................................................................................ 72
5.2.1 Ethernet ................................................................................................................................ 72
5.2.1.1 O Algoritmo de Recuo Binário Exponencial ................................................................ 74
5.2.2 Token Ring ........................................................................................................................... 74
5.2.3 Wireless (Redes sem Fio) ..................................................................................................... 75
Capítulo 6 Tecnologias para conexão digital de longa distância ................... 79
6.1
X.25 .......................................................................................................................................... 79
6.2
Frame Relay (FR) ..................................................................................................................... 79
6.3
ATM ......................................................................................................................................... 79
6.3.1 Circuitos Virtuais do ATM ................................................................................................... 80
6.4
ISDN ......................................................................................................................................... 80
6.5
xDSL......................................................................................................................................... 81
6.5.1 Outras Tecnologias de DSL .................................................................................................. 83
6.6
Cable Modem............................................................................................................................ 84
Capítulo 7 Arquitetura TCP/IP ...................................................................... 86
7.1
A Motivação para Ligação Inter-redes ...................................................................................... 86
7.2
O Conceito de Serviço Universal .............................................................................................. 86
7.3
Serviço Universal em um Mundo Heterogêneo ......................................................................... 86
7.4
Ligação Inter-redes ................................................................................................................... 87
7.5
Conexão de Rede Física com Roteadores.................................................................................. 87
7.6
Arquitetura de Inter-rede ........................................................................................................... 87
7.7
Obtendo Serviço Universal ....................................................................................................... 88
7.8
Uma Rede Virtual ..................................................................................................................... 88
7.9
Protocolos para Ligação Inter-redes .......................................................................................... 89
7.10
Arquitetura TCP/IP ................................................................................................................... 89
7.11
Divisão em Camadas do Protocolo TCP/IP ............................................................................... 90
4
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
7.12 Endereços para a Inter-rede Virtual ........................................................................................... 91
7.12.1 O Esquema de Endereços IP ................................................................................................. 92
7.12.2 A Hierarquia de Endereços IP .............................................................................................. 92
7.12.3 Classes de Endereços IP ....................................................................................................... 92
7.12.4 Computando a Classe de um Endereço................................................................................. 93
7.12.5 Notação Decimal Pontilhada ................................................................................................ 94
7.12.6 Classes e Notação Decimal Pontilhada ................................................................................. 94
7.12.7 Autoridade para Endereços................................................................................................... 95
7.12.8 Um Exemplo de Endereçamento IP ...................................................................................... 95
7.12.9 Endereços IP Especiais ......................................................................................................... 96
7.12.9.1 Endereço de Rede ....................................................................................................... 96
7.12.9.2 Endereço de Broadcast Direcionado........................................................................... 96
7.12.9.3 Endereço de Broadcast Limitado................................................................................ 97
7.12.9.4 Endereço deste Computador ....................................................................................... 97
7.12.9.5 Endereço de Loopback................................................................................................ 97
7.12.9.6 Resumo de Endereços IP Especiais ............................................................................ 98
7.12.10 Divisão do Espaço de Endereçamento ............................................................................. 98
7.12.11 Roteadores e o Princípio de Endereçamento IP................................................................ 98
7.12.12 Host Multi-Homed ........................................................................................................... 99
7.12.13 Sub-redes ......................................................................................................................... 99
7.13 Técnicas para Resolução de Endereços ................................................................................... 102
7.13.1 O Problema da Tradução de Endereço ............................................................................... 102
7.13.2 Dois Tipos de Endereços Físicos ........................................................................................ 102
7.13.3 Tradução por Mapeamento Direto ...................................................................................... 102
7.13.4 Tradução por Vínculo Dinâmico ........................................................................................ 103
7.13.5 O Cache de Tradução de Endereço .................................................................................... 104
7.13.6 Timeout de Cache ARP ...................................................................................................... 104
7.13.7 Funcionamento do ARP ..................................................................................................... 105
7.13.7.1 Envio de um Datagrama dentro da mesma rede ....................................................... 105
7.13.7.2 Envio de um Datagrama para um nó que está fora da rede ...................................... 106
7.13.8 Refinamentos do ARP ........................................................................................................ 108
7.13.9 Relacionamento do ARP com outros Protocolos ................................................................ 108
7.13.10 Implementação do ARP ................................................................................................. 108
7.13.11 Encapsulamento e Identificação do ARP ....................................................................... 109
7.13.12 Formato do Protocolo ARP ............................................................................................ 110
7.13.13 Revalidação Automática de Cache ARP ........................................................................ 111
7.13.14 Reverse Address Resolution (RARP) ............................................................................. 111
7.14 Entrega de Datagramas Sem Conexão.................................................................................... 112
7.14.1 Sistema de Entrega sem Conexão ....................................................................................... 112
7.14.2 Finalidade do Internet Protocol (IP) ................................................................................... 112
7.14.3 O Datagrama IPv4 ............................................................................................................. 112
7.14.4 Formato do Datagrama ...................................................................................................... 113
7.14.5 Encapsulamento de Datagramas IP.................................................................................... 113
7.14.6 Tamanho do Datagrama, MTU da rede e Fragmentação ................................................... 114
7.14.7 Remontagem de Fragmentos .............................................................................................. 116
7.14.8 Controle de Fragmentação .................................................................................................. 116
7.14.9 Time to Live (TTL) ............................................................................................................. 117
7.15 Encaminhamento de Datagramas ........................................................................................... 118
7.15.1 Encaminhamento em uma Inter-rede .................................................................................. 118
7.15.2 Entrega Direta e Indireta .................................................................................................... 119
7.15.3 Entrega de Datagrama por uma Única Rede ...................................................................... 120
7.15.4 Entrega Indireta .................................................................................................................. 120
7.15.5 Encaminhamento IP controlado por Tabela ........................................................................ 120
5
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
7.15.6 Encaminhamento do Próximo Salto ................................................................................... 121
7.15.7 Rotas Default...................................................................................................................... 122
7.15.8 Rotas Específicas do Host .................................................................................................. 123
7.15.9 O Algoritmo de Encaminhamento IP ................................................................................. 123
7.15.10 Encaminhamento com Endereços IP .............................................................................. 123
7.15.11 Tratando de Datagramas que Chegam ........................................................................... 125
7.16 IPv6 ......................................................................................................................................... 126
7.16.1 Por que Mudar? .................................................................................................................. 126
7.16.2 Além do IPv4 ..................................................................................................................... 126
7.16.3 A Estrada para uma Nova Versão do IP ............................................................................. 127
7.16.4 O Nome do Próximo IP ...................................................................................................... 127
7.16.5 Características do IPv6 ....................................................................................................... 127
7.16.6 Forma Geral de um Datagrama IPv6 ................................................................................. 128
7.16.6.1 Formato de Cabeçalho Básico do IPv6 ..................................................................... 128
7.16.6.2 Cabeçalhos de Extensão do IPv6 .............................................................................. 130
7.16.7 Analisando um Datagrama IPv6 ........................................................................................ 130
7.16.8 Fragmentação e Remontagem do IPv6 ............................................................................... 130
7.16.9 A Conseqüência da Fragmentação de fim-a-fim................................................................. 131
7.16.10 Roteamento de Origem IPv6 .......................................................................................... 131
7.16.11 Opções do IPv6 .............................................................................................................. 132
7.16.12 Tamanho do Espaço de Endereços do IPv6 ................................................................... 133
7.16.13 Notação Hexadecimal de dois pontos do IPv6 ............................................................... 133
7.16.14 Endereços IPv4 Embutidos e Transição ......................................................................... 134
7.16.15 Endereços Não-Especificados e de Loopback ................................................................ 135
7.16.16 Estrutura de Endereço Unicast ....................................................................................... 135
7.17 ICMP ...................................................................................................................................... 135
7.17.1 O Internet Control Message Protocol ................................................................................ 136
7.17.2 Relato de erro versus correção de erro................................................................................ 136
7.17.3 Entrega de mensagem ICMP .............................................................................................. 137
7.17.4 Formato de mensagem ICMP ............................................................................................. 138
7.17.5 Teste de alcance e status do destino (ping) ......................................................................... 139
7.17.6 Requisição de eco e formato de mensagem de resposta ...................................................... 140
7.17.7 Relatos de destinos inalcançáveis ....................................................................................... 140
7.17.8 Controle de congestionamento e fluxo de datagramas ........................................................ 141
7.17.9 Formato de extinção de origem .......................................................................................... 142
7.17.10 Requisições de mudança de rota dos roteadores............................................................. 142
7.17.11 Detectando rotas circulares ou excessivamente longas .................................................. 144
7.17.12 Relatando outros problemas ........................................................................................... 144
7.17.13 Sincronismo de clock e estimativa de tempo de trânsito ................................................ 145
7.17.14 Mensagens ICMP mais antigas e não mais necessárias .................................................. 146
7.18 UDP ........................................................................................................................................ 146
7.18.1 Identificando o destino final ............................................................................................... 147
7.18.2 O User Datagram Protocol ................................................................................................ 147
7.18.3 Formato de mensagens UDP .............................................................................................. 148
7.18.4 Pseudocabeçalho UDP ....................................................................................................... 149
7.18.5 Encapsulamento e camadas de protocolos UDP ................................................................. 149
7.18.6 Camadas e o cálculo de checksum do UDP ........................................................................ 151
7.18.7 Multiplexação, demultiplexação e portas UDP................................................................... 151
7.18.8 Números de porta UDP reservados e disponíveis ............................................................... 152
7.19 TCP ......................................................................................................................................... 153
7.19.1 A necessidade de entrega de fluxo...................................................................................... 153
7.19.2 Propriedades do serviço de entrega confiável ..................................................................... 154
7.19.3 Fornecendo confiabilidade ................................................................................................. 155
6
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
7.19.4 A idéia por trás das janelas deslizantes ............................................................................... 157
7.19.5 O Transmission Control Protocol ...................................................................................... 158
7.19.6 Portas, conexões e extremidades ........................................................................................ 159
7.19.7 Aberturas passivas e ativas ................................................................................................. 160
7.19.8 Segmentos, fluxos e números de sequência ........................................................................ 161
7.19.9 Tamanho de janela variável e controle de fluxo ................................................................. 162
7.19.10 Formato do segmento TCP ............................................................................................ 162
7.19.11 Dados fora de faixa ........................................................................................................ 164
7.19.12 Opções do TCP .............................................................................................................. 164
7.19.12.1 Opção de tamanho máximo do segmento ............................................................... 164
7.19.12.2 Opção de janela móvel ............................................................................................ 165
7.19.12.3 Opção de estampa de tempo ................................................................................... 166
7.19.13 Cálculo do checksum TCP ............................................................................................. 166
7.19.14 Estabelecendo uma conexão TCP .................................................................................. 167
7.19.15 Números de sequência iniciais ....................................................................................... 167
7.19.16 Fechando uma conexão TCP .......................................................................................... 168
7.19.17 Reinício da conexão TCP ............................................................................................... 169
7.19.18 Números de porta TCP reservados ................................................................................. 169
7.19.19 Desempenho do TCP ..................................................................................................... 170
Capítulo 8 Serviços e Tecnologias Web ........................................................ 172
8.1
Atribuição Dinâmica de Endereços ......................................................................................... 172
8.1.1 BOOTP .............................................................................................................................. 172
8.1.2 DHCP ................................................................................................................................. 172
8.1.2.1 Usando IP para determinar um endereço IP ................................................................ 173
8.1.2.2 A política de retransmissão do DHCP ........................................................................ 174
8.1.2.3 O formato de mensagem DHCP ................................................................................. 174
8.1.2.4 A necessidade da configuração dinâmica ................................................................... 176
8.1.2.5 Conceito de aluguel do DHCP .................................................................................... 177
8.2
NAT ........................................................................................................................................ 177
8.2.1 Criação da tabela de tradução NAT .................................................................................... 177
8.2.2 NAT multiendereço ............................................................................................................ 178
8.2.3 NAT mapeado em porta ..................................................................................................... 179
8.2.4 Interação entre NAT e ICMP.............................................................................................. 180
8.2.5 Interação entre NAT e aplicações ....................................................................................... 180
8.2.6 NAT na presença de fragmentação ..................................................................................... 181
8.2.7 Domínios de endereço conceituais ..................................................................................... 181
8.2.8 Slirp e Iptables.................................................................................................................... 181
8.3
DNS ........................................................................................................................................ 182
8.3.1 Nomes para máquinas ........................................................................................................ 182
8.3.2 Espaço de nomes plano ...................................................................................................... 183
8.3.3 Nomes hierárquicos ............................................................................................................ 183
8.3.4 Delegação de autoridade para nomes.................................................................................. 184
8.3.5 Autoridade de subconjunto ................................................................................................. 184
8.3.6 Internet Domain Names ...................................................................................................... 185
8.3.7 Domínios de nível superior ................................................................................................ 186
8.3.8 Sintaxe e tipo de nome ....................................................................................................... 187
8.3.9 Mapeando nomes de domínio para endereços .................................................................... 188
8.3.10 Tradução de nome de domínio ........................................................................................... 190
8.3.11 Tradução eficiente .............................................................................................................. 190
8.3.12 Caching: a chave para a eficiência...................................................................................... 191
8.4
Correio Eletrônico ................................................................................................................... 192
7
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
8.4.1 Nomes e aliases da caixa de correio ................................................................................... 193
8.4.2 Expansão de alias e encaminhamento de correio ................................................................ 193
8.4.3 Padrões do TCP/IP para serviço de correio eletrônico ........................................................ 194
8.4.4 Simple Mail Transfer Protocol (SMTP) ............................................................................. 195
8.4.5 Recuperação de correio e protocolos de manipulação de caixa de correio ......................... 196
8.4.5.1 Post Office Protocol.................................................................................................... 197
8.4.5.2 Internet Message Access Protocol .............................................................................. 197
8.5
FTP ......................................................................................................................................... 198
8.5.1 Recursos do FTP ................................................................................................................ 198
8.5.2 Modelo de processo do FTP ............................................................................................... 198
8.5.3 Números de porta TCP e conexões de dados ...................................................................... 199
8.5.4 A visão do usuário do FTP ................................................................................................. 200
8.5.5 FTP anônimo ...................................................................................................................... 200
8.6
World Wide Web – HTTP ...................................................................................................... 200
8.6.1 Descrição Geral do HTTP. ................................................................................................. 201
8.6.2 Conexões não persistentes e conexões persistentes ............................................................ 203
8.6.2.1 Conexões não persistentes .......................................................................................... 203
8.6.2.2 Conexões Persistentes ................................................................................................. 204
8.6.3 Formato da mensagem HTTP ............................................................................................. 205
8.6.3.1 Mensagem de requisição HTTP .................................................................................. 205
8.6.3.2 Mensagem de resposta HTTP ..................................................................................... 207
8.6.4 Interação usuário/servidor: autenticação e cookies ............................................................. 209
8.6.4.1 Autenticação ............................................................................................................... 209
8.6.4.2 Cookies ....................................................................................................................... 210
8.6.5 O GET condicional............................................................................................................. 210
8.6.6 Web Caches ........................................................................................................................ 212
Capítulo 9 Segurança em Redes .................................................................... 216
9.1
O que é segurança na rede? ..................................................................................................... 216
9.1.1 Comunicação Segura .......................................................................................................... 216
9.1.2 Considerações sobre segurança de rede na Internet ............................................................ 217
9.2
Princípios da criptografia ........................................................................................................ 219
9.2.1 Criptografia de chaves simétricas ....................................................................................... 220
9.2.2 Criptografia de chaves públicas .......................................................................................... 222
9.3
Autenticação: quem é você? .................................................................................................... 224
9.3.1 Protocolo de autenticação PA 1.0 ....................................................................................... 224
9.3.2 Protocolo de autenticação PA 2.0 ....................................................................................... 225
9.3.3 Protocolo de autenticação PA 3.0 ....................................................................................... 225
9.3.4 Protocolo de autenticação PA 3.1 ....................................................................................... 226
9.3.5 Protocolo de autenticação PA 4.0 ....................................................................................... 226
9.3.6 Protocolo de autenticação PA 5.0 ....................................................................................... 227
9.4
Integridade .............................................................................................................................. 229
9.4.1 Geração de assinaturas digitais ........................................................................................... 230
9.4.2 Resumo de mensagem ........................................................................................................ 231
9.4.3 Algoritmos de função de hash ............................................................................................ 233
9.5
Distribuição de chaves e certificação ...................................................................................... 234
9.5.1 KDC (central de distribuição de chaves) ............................................................................ 235
9.5.2 Kerberos ............................................................................................................................. 236
9.5.3 Certificação de chaves públicas .......................................................................................... 237
9.6
E-mail seguro .......................................................................................................................... 240
8
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
9.6.1 Princípios de segurança para e-mail ................................................................................... 240
9.6.2 PGP (privacidade razoável) ................................................................................................ 243
9.7
Comércio pela Internet ............................................................................................................ 244
9.7.1 Comércio pela Internet usando SSL ................................................................................... 245
9.7.1.1 Como a SSL funciona ................................................................................................. 246
9.7.1.2 A SSL em ação ........................................................................................................... 248
9.7.1.3 As limitações no comércio pela internet ..................................................................... 248
9.7.2 Comércio pela Internet usando SET ................................................................................... 249
9.7.2.1 Estágios de uma compra ............................................................................................. 250
9.8
Segurança na camada de rede: o IPsec .................................................................................... 251
9.8.1 AH (protocolo de autenticação de cabeçalho) .................................................................... 252
9.8.2 ESP (protocolo de segurança de encapsulamento da carga útil) ......................................... 254
9.8.3 O AS e a administração de chaves ...................................................................................... 254
Apêndice A Série de Fourier ......................................................................... 255
A.1 Exemplo 1: Cálculo dos Coeficientes de Fourier de um Sinal NRZ ........................................ 257
A.1.1 Cálculo do a 0 .................................................................................................................... 257
A.1.2 Cálculo do a n .................................................................................................................... 258
A.1.3 Cálculo do bn ..................................................................................................................... 259
A.1.4 Gráficos do Exemplo 1 ....................................................................................................... 260
A.2 Exemplo 2: Cálculo dos Coeficientes de Fourier de um Sinal Manchester ............................. 268
A.2.1 Cálculo do a 0 .................................................................................................................... 269
A.2.2 Cálculo do a n .................................................................................................................... 269
A.2.3 Cálculo do bn ..................................................................................................................... 271
A.2.4 Gráficos do Exemplo 2 ....................................................................................................... 272
A.3
Como Integrar Funções Seno e Cosseno ................................................................................. 281
Apêndice B Cálculo relacionado à Órbita de Satélites ................................ 282
Apêndice C Técnicas de Criptografia ........................................................... 285
C.1
DES (padrão para criptografia de dados) ................................................................................ 285
C.2 RSA ........................................................................................................................................ 286
C.2.1 Porque o RSA funciona? .................................................................................................... 288
Bibliografia ....................................................................................................... 291
9
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Índice de Figuras dos Capítulos
Figura 1.1 – Sinal Analógico. ....................................................................................................... 17
Figura 1.2 – Sinal Digital. ............................................................................................................ 18
Figura 1.3 – Visualização de Duas Ondas de Frequências Diferentes. ........................................ 19
Figura 1.4 – Representação do Seno e Cosseno no Círculo Trigonométrico. .............................. 19
Figura 1.5 – Senoide em Função do Tempo. ................................................................................ 20
Figura 1.6 – Cossenoide em Função do Tempo. .......................................................................... 20
Figura 1.7 – Senoide em Função da Fase. .................................................................................... 21
Figura 1.8 – Cossenoide em Função da Fase. .............................................................................. 21
Figura 1.9 – Exemplo de Modulação Analógica. ......................................................................... 24
Figura 1.10 – Exemplo de Modulação Digital. ............................................................................ 25
Figura 1.11 – Comutação de Circuito........................................................................................... 26
Figura 1.12 – Comutação por Circuito ao Longo do Tempo. ...................................................... 27
Figura 1.13 – Comutação por Mensagem ao Longo do Tempo. .................................................. 28
Figura 1.14 – Comutação por Pacote. .......................................................................................... 29
Figura 1.15 – Comutação por Pacote ao Longo do Tempo. ......................................................... 30
Figura 1.16 – Desperdício de Banda Passante do Meio Físico. ................................................... 31
Figura 1.17 – Multiplexação na Frequência (FDM). .................................................................... 31
Figura 1.18 – Exemplo de Multiplexação na Frequência de três Sinais de Voz. ......................... 32
Figura 1.19 – Transmissão em uma Linha Multiplexada na Frequência. .................................... 32
Figura 1.20 – TDM Síncrono. ...................................................................................................... 33
Figura 1.21 – Desperdício de Capacidade com TDM Síncrono. .................................................. 34
Figura 1.22 – TDM Assíncrono.................................................................................................... 35
Figura 1.23 – Digitalização de um Sinal (PCM). ......................................................................... 37
Figura 1.24 – Codificação NRZ. .................................................................................................. 38
Figura 1.25 – Recuperação de um Sinal NRZ. ............................................................................. 38
Figura 1.26 – Exemplo de Transmissão Assíncrona. ................................................................... 39
Figura 1.27 – Exemplo de Transmissão e Recepção Assíncrona. ................................................ 40
Figura 1.28 – Codificação Manchester......................................................................................... 41
Figura 1.29 – Exemplo de Codificação Manchester. ................................................................... 42
Figura 1.30 – Recuperação do Período do Clock Através do Preâmbulo. ................................... 42
Figura 1.31 – Exemplo de Transmissão Manchester. .................................................................. 43
Figura 1.32 – Exemplo de Codificação Manchester Diferencial. ................................................ 43
Figura 1.33 – Criação do FCS usando a Técnica CRC no Transmissor....................................... 46
Figura 1.34 – Verificação dos Dados Usando a Técnica CRC feita no Receptor. ....................... 47
Figura 2.1 – Par Trançado. ........................................................................................................... 49
Figura 2.2 – Cabo Coaxial. ........................................................................................................... 49
Figura 2.3 – Comunicação Via Satélite. ....................................................................................... 51
Figura 2.4 – Array de Satélites. .................................................................................................... 52
Figura 2.5 – Topologia em Estrela. .............................................................................................. 54
Figura 2.6 – Topologia em Anel................................................................................................... 55
Figura 2.7 – Topologia de Barramento......................................................................................... 55
Figura 3.1 – Modelo OSI em Camadas. ....................................................................................... 58
Figura 4.1 – Conexão de dois segmentos por uma Bridge. .......................................................... 62
Figura 4.2 – Montagem da Tabela de Mapeamento de uma Bridge. ........................................... 63
Figura 4.3 – Esquema Lógico de um Switch. ............................................................................... 64
Figura 5.1 – Funcionamento do CSMA/CD. ................................................................................ 67
10
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura 5.2 – Exemplo de Comunicação Sem Fio. ........................................................................ 68
Figura 5.3 – Transmissão de A para B. ........................................................................................ 68
Figura 5.4 – Colisão entre A e C. ................................................................................................. 69
Figura 5.5 – Sinal de Controle para B. ......................................................................................... 69
Figura 5.6 – Resposta de B ao Sinal de Controle de A. ............................................................... 70
Figura 5.7 – Região Reservada para a Comunicação de A com B. .............................................. 70
Figura 5.8 – Funcionamento do Token Passing. .......................................................................... 71
Figura 5.9 – Formato de Quadros DIX. ........................................................................................ 72
Figura 5.10 – Rede Sem Fio com uma Estação-Base (AP). ......................................................... 76
Figura 5.11 – Rede Sem Fio Ad Hoc. .......................................................................................... 76
Figura 5.12 – Uma Rede 802.11 de Várias Células. .................................................................... 77
Figura 7.1 – Duas redes físicas conectadas por um roteador. ...................................................... 87
Figura 7.2 – Uma inter-rede formada usando três roteadores. ..................................................... 87
Figura 7.3 – O conceito de inter-rede. .......................................................................................... 89
Figura 7.4 – As camadas do modelo de referência TCP/IP. ......................................................... 90
Figura 7.5 – Divisão em Classes do endereçamento IP................................................................ 93
Figura 7.6 – Uma inter-rede de exemplo privado com endereços IP atribuídos aos hosts........... 96
Figura 7.7 – Um exemplo de endereços IP atribuídos a dois roteadores. .................................... 99
Figura 7.8 – Uma rede de campus consistindo em LANs para vários departamentos. .............. 100
Figura 7.9 – Uma rede da classe B dividida em 64 sub-redes. ................................................... 101
Figura 7.10 – O protocolo ARP. ................................................................................................. 104
Figura 7.11 – Cada nó em uma LAN tem um endereço IP e um endereço MAC. ..................... 106
Figura 7.12 – Duas LANs interconectadas por um roteador. ..................................................... 107
Figura 7.13 – Uma mensagem ARP encapsulada em um frame de rede física. ......................... 110
Figura 7.14 – Formato de uma Mensagem ARP/RARP para o padrão Ethernet. ...................... 110
Figura 7.15 – Formato Geral de um Datagrama IP. .................................................................. 113
Figura 7.16 – Formato de um Datagrama IP. ............................................................................ 113
Figura 7.17 – O encapsulamento de um datagrama IP em um frame. ........................................ 114
Figura 7.18 – Um exemplo de necessidade de fragmentação. ................................................... 115
Figura 7.19 – Exemplo de Fragmentação de um Datagrama. ................................................... 116
Figura 7.20 – Um exemplo de um host singly-homed que precisa encaminhar datagramas. .... 119
Figura 7.21 – Uma internet de exemplo com 4 redes e 3 roteadores. ........................................ 122
Figura 7.22 – O IP e a tabela de roteamento residem acima do limite de endereço. .................. 124
Figura 7.23 – Formato Geral de um Datagrama IPv6. .............................................................. 128
Figura 7.24 – O Formato do Cabeçalho Básico do IPv6 de 40 octetos. ..................................... 129
Figura 7.25 – Três Datagramas IPv6. ........................................................................................ 130
Figura 7.26 – O Formato de um Cabeçalho de Extensão de Fragmento. ................................... 131
Figura 7.27 – O Formato de um Cabeçalho de Roteamento IPv6. ............................................. 132
Figura 7.28 – O Formato de um Cabeçalho de Extensão de Opção IPv6. ................................. 132
Figura 7.29 – A Codificação de uma Opção Individual em um Cabeçalho de Extensão IPv6. . 132
Figura 7.30 – Codificação de um Endereço IPv4 em um Endereço IPv6. ................................. 134
Figura 7.31 – A Divisão de um Endereço de Unicast IPv6 em Três Partes. .............................. 135
Figura 7.32 – Dois níveis de encapsulamento ICMP. ................................................................ 137
Figura 7.33 – Formato de uma mensagem de requisição ou resposta de eco do ICMP. ............ 140
Figura 7.34 – Formato da mensagem de destino inalcançável do ICMP. .................................. 140
Figura 7.35 – Formato da mensagem de extinção de origem ICMP. ......................................... 142
Figura 7.36 – Mensagens de redirecionamento ICMP. .............................................................. 143
Figura 7.37 – Formato da mensagem de redirecionamento ICMP. ............................................ 143
Figura 7.38 – Formato da mensagem de tempo excedido do ICMP. ......................................... 144
Figura 7.39 – Formato da mensagem de problema de parâmetro do ICMP............................... 145
11
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura 7.40 – Formato da mensagem de requisição ou resp. de estampa de tempo do ICMP. .. 145
Figura 7.41 – O formato dos campos em um datagrama UDP. .................................................. 148
Figura 7.42 – Os 12 octetos do pseudocabeçalho para o cálculo do checksum. ........................ 149
Figura 7.43 – As camadas conceituais do UDP entre programas aplicativos e o IP. ................. 150
Figura 7.44 – Um datagrama UDP encapsulado em um datagrama IP. ..................................... 150
Figura 7.45 – Exemplo de demultiplexação de uma camada acima do IP. ................................ 152
Figura 7.46 – Um protocolo usando confirmação positiva com retransmissão. ........................ 156
Figura 7.47 – Timeout e retransmissão que ocorre quando um pacote é perdido. ..................... 156
Figura 7.48 – Um protocolo de janela deslizante com oito pacotes na janela............................ 157
Figura 7.49 – Um exemplo de três pacotes transmitidos usando a janela deslizante. ................ 158
Figura 7.50 – A disposição conceitual em camadas do UDP e TCP acima do IP...................... 159
Figura 7.51 – Um exemplo da janela deslizante do TCP. .......................................................... 161
Figura 7.52 – O formato de um segmento TCP com um cabeçalho TCP seguido por dados. ... 163
Figura 7.53 – O formato do pseudo cabeçalho usado pelo TCP. ............................................... 166
Figura 7.54 – A sequência de mensagens em um handshake de três vias. ................................. 167
Figura 7.55 – O handshake de três vias modificado usado para fechar conexões...................... 169
Figura 8.1 – Formato de uma mensagem DHCP. ....................................................................... 175
Figura 8.2 – Formato do campo FLAGs de 16 bits do DHCP. .................................................. 175
Figura 8.3 – O uso de um NAT por um pequeno ISP. ............................................................... 178
Figura 8.4 – Uma pequena parte da hierarquia de nome de domínio da Internet. ..................... 187
Figura 8.5 – A organização conceitual dos servidores de nome de domínio. ............................ 189
Figura 8.6 – Uma organização realista de servidores para a Hierarquia de nomes. ................... 189
Figura 8.7 – Componentes conceituais de uma sistema de correio eletrônico. .......................... 192
Figura 8.8 – Uma extensão do sistema de correio da Figura 8.7................................................ 193
Figura 8.9 – Exemplo de transferência SMTP de Alpha.edu para Beta.gov. ............................. 196
Figura 8.10 – Um cliente e um servidor FTP com conexões TCP entre eles. ............................ 199
Figura 8.11 – Comportamento de requisição-resposta do HTTP. .............................................. 202
Figura 8.12 – Formato geral de uma mensagem de requisição. ................................................. 206
Figura 8.13 – Formato geral de uma mensagem de resposta. .................................................... 208
Figura 8.14 – Clientes requisitando objetos por meio de um Web Cache. ................................ 213
Figura 8.15 – Gargalo entre uma rede institucional e a Internet. ............................................... 214
Figura 8.16 – Adição de um cache à rede institucional. ............................................................. 215
Figura 9.1 – Remetente, destinatário e intruso (Alice, Bob e Trudy). ....................................... 217
Figura 9.2 – Analisador de Pacotes. ........................................................................................... 218
Figura 9.3 – Componentes Criptográficos.................................................................................. 219
Figura 9.4 – Uma cifra monoalfabética. ..................................................................................... 221
Figura 9.5 – Uma cifra de Vigenere usando duas cifras de César. ............................................. 222
Figura 9.6 – Criptografia de chaves públicas. ............................................................................ 223
Figura 9.7 – Protocolo PA 1.0 e um cenário de falha. ............................................................... 224
Figura 9.8 – Protocolo PA 2.0 e um cenário de falha. ............................................................... 225
Figura 9.9 – Protocolo PA 3.0 e um cenário de falha. ............................................................... 226
Figura 9.10 – Protocolo PA 4.0 e um cenário de falha............................................................... 227
Figura 9.11 – Protocolo PA 5.0 trabalhando corretamente. ....................................................... 228
Figura 9.12 – Falha de segurança no protocolo PA 5.0.............................................................. 228
Figura 9.13 – Um ataque do homem do meio. ........................................................................... 229
Figura 9.14 – Criação de uma assinatura digital para um documento........................................ 230
Figura 9.15 – Funções de hash são usadas para criar resumos de mensagem. ........................... 232
Figura 9.16 – Envio de uma mensagem assinada digitalmente. ................................................. 232
Figura 9.17 – Verificação da integridade de uma mensagem assinada. ..................................... 233
Figura 9.18 – Mensagem inicial e mensagem fraudulenta têm a mesma soma de verificação. . 234
12
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura 9.19 – Estabelecimento de uma chave de sessão única usando uma KDC. .................... 235
Figura 9.20 – Trudy se passa por Bob usando a criptografia de chaves públicas. ..................... 238
Figura 9.21 – Bob obtém um certificado de uma CA................................................................. 239
Figura 9.22 – Alice usa uma chave de sessão simétrica KS. ...................................................... 242
Figura 9.23 – Uso de funções de hash e assinaturas digitais...................................................... 242
Figura 9.24 – Alice usa várias técnicas para enviar uma mensagem. ........................................ 243
Figura 9.25 – Mensagem PGP assinada. .................................................................................... 244
Figura 9.26 – Mensagem PGP secreta. ....................................................................................... 244
Figura 9.27 – Visão de alto nível da fase de mútua apresentação SSL. ..................................... 247
Figura 9.28 – Posição do cabeçalho AH no datagrama IP. ........................................................ 253
Figura 9.29 – Campos ESP no datagrama IP. ............................................................................ 254
13
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Índice de Figuras dos Apêndices
Figura A-1 – Exemplo 1: Sinal NRZ. ......................................................................................... 257
Figura A-2 – Sinal Original. ....................................................................................................... 261
Figura A-3 – 10 Harmônicos de Fourier. ................................................................................... 261
Figura A-4 – Primeiro Harmônico de Fourier. ........................................................................... 262
Figura A-5 – Somatório dos 2 primeiros Harmônico de Fourier. .............................................. 262
Figura A-6 – Somatório dos 3 primeiros Harmônico de Fourier. .............................................. 263
Figura A-7 – Somatório dos 4 primeiros Harmônico de Fourier. .............................................. 263
Figura A-8 – Somatório dos 5 primeiros Harmônico de Fourier. .............................................. 264
Figura A-9 – Somatório dos 6 primeiros Harmônico de Fourier. .............................................. 264
Figura A-10 – Somatório dos 7 primeiros Harmônico de Fourier. ............................................ 265
Figura A-11 – Somatório dos 8 primeiros Harmônico de Fourier. ............................................ 265
Figura A-12 – Somatório dos 9 primeiros Harmônico de Fourier. ............................................ 266
Figura A-13 – Somatório dos 10 primeiros Harmônico de Fourier. .......................................... 266
Figura A-14 – Amplitude de Média Quadrática de cada Harmônico de Fourier. ...................... 267
Figura A-15 – Exemplo 2: Sinal Manchester. ............................................................................ 268
Figura A-16 – Sinal Original. ..................................................................................................... 273
Figura A-17 – 13 Harmônicos de Fourier. ................................................................................. 273
Figura A-18 – Primeiro Harmônico de Fourier. ......................................................................... 274
Figura A-19 – Somatório dos 2 primeiros Harmônico de Fourier. ............................................ 274
Figura A-20 – Somatório dos 3 primeiros Harmônico de Fourier. ............................................ 275
Figura A-21 – Somatório dos 4 primeiros Harmônico de Fourier. ............................................ 275
Figura A-22 – Somatório dos 5 primeiros Harmônico de Fourier. ............................................ 276
Figura A-23 – Somatório dos 6 primeiros Harmônico de Fourier. ............................................ 276
Figura A-24 – Somatório dos 7 primeiros Harmônico de Fourier. ............................................ 277
Figura A-25 – Somatório dos 8 primeiros Harmônico de Fourier. ............................................ 277
Figura A-26 – Somatório dos 9 primeiros Harmônico de Fourier. ............................................ 278
Figura A-27 – Somatório dos 10 primeiros Harmônico de Fourier. .......................................... 278
Figura A-28 – Somatório dos 11 primeiros Harmônico de Fourier. .......................................... 279
Figura A-29 – Somatório dos 12 primeiros Harmônico de Fourier. .......................................... 279
Figura A-30 – Somatório dos 13 primeiros Harmônico de Fourier. .......................................... 280
Figura A-31 – Amplitude de Média Quadrática de cada Harmônico de Fourier. ...................... 280
Figura B-1 – Órbita de um Satélite............................................................................................. 282
Figura C-1 – Operação básica do DES. ...................................................................................... 286
Figura C-2 – Criptografia de chaves públicas. ........................................................................... 287
14
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Índice de Equações
Equação A-1 – Forma Geral da Série de Fourier. ...................................................................... 256
Equação A-2 – Coeficientes da Série de Fourier........................................................................ 256
Equação A-3 – Amplitude de Média Quadrática de cada Harmônico de Fourier. ..................... 256
Equação A-4 – Função Representante do Sinal NRZ. ............................................................... 257
Equação A-5 – Coeficiente a0 do Sinal NRZ. ............................................................................ 258
Equação A-6 – Coeficiente an do Sinal NRZ. ............................................................................ 259
Equação A-7 – Coeficiente bn do Sinal NRZ. ............................................................................ 259
Equação A-8 – Série de Fourier Completa para o Sinal NRZ. ................................................... 260
Equação A-9 – Função Representante do Sinal Manchester. ..................................................... 268
Equação A-10 – Coeficiente a0 do Sinal Manchester................................................................. 269
Equação A-11 – Coeficiente an do Sinal Manchester................................................................. 270
Equação A-12 – Coeficiente bn do Sinal Manchester. ............................................................... 272
Equação A-13 – Série de Fourier Completa para o Sinal Manchester. ...................................... 272
Equação B-1 – Velocidade Angular do Satélite. ........................................................................ 283
Equação B-2 – Raio do Satélite. ................................................................................................. 283
Equação B-3 – Velocidade Linear do Satélite............................................................................ 283
Equação B-4 – Altura do Satélite em Relação à Superfície da Terra. ........................................ 283
Equação B-5 – Condição Necessária para Órbitas Geoestacionárias. ........................................ 283
Equação B-6 – Velocidade Angular da Terra............................................................................. 284
Equação B-7 – Velocidade Angular do Satélite para Órbitas Geoestacionárias. ....................... 284
Equação B-8 – Massa da Terra................................................................................................... 284
Equação B-9 – Raio da Terra. .................................................................................................... 284
Equação B-10 – Constante Gravitacional Universal (G). .......................................................... 284
Equação B-11 – Altura do Satélite para uma Órbita Geoestacionária. ...................................... 284
15
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Índice de Tabelas dos Capítulos
Tabela 3.1 – Funcionalidades das Camadas do Modelo OSI. ...................................................... 57
Tabela 7.1 – Relação dos primeiros 4 bits com a classe de um endereço IP. ............................... 94
Tabela 7.2 – Exemplos de Endereços IP em Binário e Notação Decimal Pontilhada.................. 94
Tabela 7.3 – Faixa de Valores do Primeiro Octeto para as Classes IP. ........................................ 95
Tabela 7.4 – Resumo das formas de endereços IP especiais. ....................................................... 98
Tabela 7.5 – Total de Redes e Hosts em cada Classe Primária. ................................................... 98
Tabela 7.6 – Significado do Campo TIPO. ................................................................................ 133
Tabela 7.7 – Valores do campo TYPE de uma mensagem ICMP.............................................. 139
Tabela 7.8 – Valores possíveis para o campo CÓDIGO. ........................................................... 141
Tabela 7.9 – Valor do campo CÓDIGO para uma mensagem de redirecionamento. ................ 144
Tabela 7.10 – Valor do campo CÓDIGO para um tempo excedido. ......................................... 144
Tabela 7.11 – Exemplos de portas UDP atualmente atribuídas. ................................................ 153
Tabela 7.12 – Bits do campo BITS DE CÓDIGO no cabeçalho TCP. ...................................... 163
Tabela 7.13 – Exemplos de números de porta TCP. .................................................................. 171
Tabela 8.1 – Um exemplo de uma tabela de tradução usada pelo NAPT. ................................. 179
Tabela 8.2 – Os domínios de Internet de nível superior e seus significados.............................. 186
Tabela 9.1 – Campos selecionados de um certificado de chave pública X.509 e RFC 1422..... 239
16
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Comunicação de Dados
1.1
Conceitos básicos de Transmissão de dados
1.1.1
Sinais
Sinais são ondas que se propagam através de meios físicos diversos ou até mesmo pelo
ar. O uso de ondas para transmitir sinais remonta a eras bastante antigas. Em 1863, James
Maxwell, um professor de física da Universidade de Cambridge, demonstrou teoricamente a
existência de ondas eletromagnéticas. Em 1887, Henrich Hertz descobriu as ondas de rádio
e sua origem eletromagnética. Daí para a transmissão dos sinais foi rápido, pois em 1895
Giuglielmo Marconi inventou o rádio, transmitindo sinais através de ondas.
1.1.1.1
Sinais Analógicos e Digitais
A natureza é intrinsecamente analógica. Imagens e sons apenas podem ser
entendidos e produzidos pelo ser humano em forma analógica, uma vez que os aparelhos
auditivo e vocal produzem sinais contínuos no tempo. A vantagem dos sinais digitais
consiste na possibilidade da introdução de códigos redundantes (adicionais) para
controle de erros e também a possibilidade de compactação sem perda da qualidade do
sinal, capacidades impossíveis em sinais analógicos. Vamos entender a diferença entre
um sinal analógico e um sinal digital.
1.1.1.1.1 Sinais Analógicos
Possuem variação contínua no tempo, ou seja, seu universo de valores é
infinito, por poder ser dimensionado através de um número de casas decimais maior
ou menor de acordo com o equipamento utilizado.
Observe na Figura 1.1. Qualquer instante de tempo que deseje amostrar
possuirá um valor diferente do instante de tempo anterior e do posterior. Outro
detalhe é que este valor poderá ser medido como 1 Hz, 1,01 Hz, 1,0100001 Hz ou
qualquer número de casas decimais, conferindo a sua característica “contínua”.
Figura 1.1 – Sinal Analógico.
1.1.1.1.2 Sinais Digitais
A Figura 1.2 mostra um sinal digital. Possuem um conjunto finito de valores,
que pode variar de acordo com o número de bits que se use para codificar cada
17
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
amostra, mas ainda assim sempre será finito. No princípio da transmissão de dados,
a cada instante de tempo se transmitia apenas um bit, e a taxa de transmissão dos
modens era medida em bauds. Os modens atuais possuem a capacidade de codificar
mais de um bit por intervalo de tempo (dibit, tribit, etc), então usamos atualmente
para caracterizar a taxa de transmissão simplesmente bps (bits por segundo) e seus
múltiplos (Kbps, Mbps, Gbps, Tbps, Pbps, ...).
Figura 1.2 – Sinal Digital.
1.1.2
Formas de Onda
Um sinal normalmente é representado por uma forma de onda. Como as ondas são
oscilatórias, elas possuem três características básicas: amplitude, frequência e fase.
1.1.2.1
Amplitude
A amplitude representa a altura da onda desde o eixo representativo do zero até o
seu ponto mais alto. Dependendo da origem do sinal, ela pode estar associada a diversas
características, por exemplo: no caso de sinais sonoros, a amplitude está relacionada com
o volume do som; no caso de sinais luminosos, ela está associada a intensidade com que
a luz é transmitida; etc.
1.1.2.2
Frequência
Devido a natureza oscilatória das ondas, ela acaba possuindo ciclos. Um ciclo é
toda variação feita pela onda a partir de um determinado ponto até ela retornar ao mesmo
ponto de forma que a sequência seguinte seja uma repetição da anterior. A medida de
frequência é justamente a quantidade de ciclos que a onda realiza em um determinado
período de tempo, exemplo: 10 ciclos a cada minuto, 50 ciclos por hora, etc. Quando a
unidade de tempo representada para medir a quantidade de ciclos for o segundo (ciclos
por segundo), utiliza-se uma unidade especial denominada Hertz (Hz), logo, se a
frequência for por exemplo 500 Hz, significa que a onda realiza 500 ciclos a cada
segundo. Quando a frequência se torna muito grande, é comum utilizar seus múltiplos,
como por exemplo: KHz, MHz, GHz, THz, etc. A Figura 1.3 mostra um exemplo de
duas ondas com frequências diferentes.
18
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura 1.3 – Visualização de Duas Ondas de Frequências Diferentes.
1.1.2.3
Fase
O círculo trigonométrico possui alguns eixos especiais onde dois destes eixos são
muito utilizados para a geração de ondas. São os eixos horizontal e vertical que
representam os valores do cosseno e do seno respectivamente.
Trabalhando com este círculo trigonométrico, que por definição possui raio de
valor 1, ao se representar um vetor radial de tamanho unitário cujo ângulo com o eixo
horizontal é , poderemos fazer duas projeções: uma no eixo horizontal (eixo x) e neste
caso o valor da projeção é chamado de cosseno de , e a projeção no eixo vertical (eixo
y) onde neste caso o seu valor é chamado de seno de .
Como o raio do círculo tem valor unitário, os valores destas projeções
(independente se for feita no eixo horizontal ou vertical) terá valores variando entre 1
(maior valor) e -1 (menor valor).
A Figura 1.4 ilustra um exemplo de seno e cosseno de um ângulo  no valor de
30º. Repare que a diferença entre o seno e o cosseno é que o seno começa do valor 0 e
o cosseno começa do valor 1.
Figura 1.4 – Representação do Seno e Cosseno no Círculo Trigonométrico.
Se variarmos continuamente este ângulo no tempo e fizermos um gráfico
representando os valores do seno ou do cosseno deste ângulo, teremos a representação
de uma onda denominada senoidal (no caso do seno) e cossenoidal (no caso do cosseno).
A Figura 1.5 representa uma onda senoidal variando em função do tempo. A frequência
19
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
utilizada no exemplo é de 1 Hz ou seja, 1 ciclo a cada segundo. A Figura 1.6 representa
uma cossenoide em função do tempo também com frequência de 1 Hz.
Figura 1.5 – Senoide em Função do Tempo.
Figura 1.6 – Cossenoide em Função do Tempo.
Neste tipo de onda, temos um ciclo de repetição que ocorre a cada 360º ou 2π
radianos. Sendo que neste caso a amplitude máxima é de 1, já que o valor do raio é
unitário, e a frequência é a quantidade de voltas completas que este vetor realiza no
círculo por unidade de tempo. Se for necessário representar uma amplitude maior do
que 1, é só multiplicar a função seno ou cosseno pela amplitude desejada, como por
exemplo: f ( )  A.sen( ) ou f ( )  A. cos( ) , onde A representa a amplitude
desejada. A Figura 1.7 representa o gráfico da função seno e a Figura 1.8 o gráfico da
função cosseno em relação ao ângulo .
O ângulo que o vetor faz em relação ao eixo horizontal é chamado de fase. Sendo
assim, quando representarmos a onda em função da fase, teremos os valores do seno e
do cosseno em relação a este ângulo.
Resumindo, a fase é o valor do ângulo formado por este vetor. Se o vetor se
movimenta continuamente no tempo, teremos a fase variando continuamente também.
20
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura 1.7 – Senoide em Função da Fase.
Figura 1.8 – Cossenoide em Função da Fase.
1.1.3
Taxa de Transmissão Máxima de um Canal
Em 1928, H. Nyquist formulou uma equação que define a taxa de transmissão máxima
para um canal de banda passante limitada e imune a ruídos. Como veremos mais adiante,
distorções podem ocorrer durante a transmissão de um sinal por um meio físico devido a
fatores como atenuação, ruídos, etc. Alguns anos mais tarde, em 1948, Claude Shannon
estendeu os resultados de Nyquist para o caso de um canal sujeito a ruído térmico.
1.1.3.1
Teorema de Nyquist
Nyquist provou que, se um sinal arbitrário é transmitido através de um canal de
largura de banda B Hz, o sinal resultante da filtragem pode ser completamente
reconstruído pelo receptor através da amostragem do sinal transmitido, a uma frequência
igual a no mínimo 2B vezes por segundo. Nyquist demonstrou que esta é a frequência
mínima de amostragem necessária e, ao mesmo tempo, amostrar esse sinal a uma
frequência maior que 2B é inútil, já que as frequências componentes que seriam
recuperadas por tal amostragem já não existem no sinal devido à filtragem do canal.
Para sinais digitais, isso corresponde a dizer que o número de transições de um nível de
amplitude para outro no sinal original não pode ser maior do que 2B vezes por segundo.
A quantidade de transições de amplitudes é chamada de baud. Em outras palavras,
através de um canal de largura de banda igual a B Hz, pode-se transmitir um sinal digital
de no máximo 2B bauds. Como 1 baud  log2 L bps (onde L é o número de níveis
21
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
utilizados na codificação), então a capacidade D do canal na ausência de ruído é dada
por:
D  2B log2 L bps
Essa é a fórmula obtida por Nyquist para a capacidade máxima de um canal dada
a sua banda passante, na ausência de ruído.
1.1.4
Fontes de Distorção de Sinais em Transmissão
Além dos efeitos de distorção dos sinais transmitidos oriundos da banda passante
limitada do meio físico, outros fatores causarão distorções nos sinais durante a transmissão.
Entre eles encontramos: os ruídos presentes durante a transmissão, a atenuação e os ecos.
Passemos a analisar cada um desses fatores, seus principais efeitos e a forma de contornálos.
1.1.4.1
Ruídos
Em qualquer transmissão, o sinal recebido consiste no sinal transmitido
modificado por várias distorções inseridas durante a transmissão devido à interferência
de sinais indesejáveis denominados ruídos. O ruído é um dos maiores limitantes do
desempenho de sistemas de comunicação.
A quantidade de ruído presente numa transmissão é medida em termos da razão
entre a potência do sinal e a potência do ruído, denominado relação sinal-ruído. Se
representarmos a potência do sinal por S e a potência do ruído por N, a relação sinalruído é dada por S/N. É muito comum utilizar-se, ao invés desta razão diretamente, o
valor 10 log10 (S/N) . O resultado obtido é uma medida da relação sinal-ruído em uma
unidade denominada decibel (dB). Uma relação de 10 corresponde a 10 dB; uma relação
de 100 corresponde a 20 dB; uma relação de 1.000 corresponde a 30 dB e assim por
diante.
Ruídos podem ser classificados em quatro tipos: ruído térmico, ruído de
intermodulação, crosstalk (linha cruzada) e ruído impulsivo.
1.1.4.1.1 Ruído Térmico
O ruído térmico é uniformemente distribuído em todas as frequências do
espectro (sendo por isso frequentemente citado como ruído branco) e sua
quantidade é função da temperatura.
1.1.4.1.2 Ruído de Intermodulação
Quando sinais de diferentes frequências compartilham um mesmo meio
físico, pode-se obter um ruído denominado de ruído de intermodulação. A
intermodulação pode causar a produção de sinais em uma faixa de frequências, que
poderão perturbar a transmissão de outro sinal naquela mesma faixa. Este mau
funcionamento acontece devido a defeitos em componentes do sistema ou devido a
sinais com potência muito alta.
1.1.4.1.3 Ruído de Crosstalk (Linha Cruzada)
Crosstalk é um ruído bastante comum em sistemas telefônicos. Quem de nós
ainda não teve a experiência de ser perturbado, durante uma conversação telefônica,
por uma conversação travada por terceiros? É o fenômeno que comumente
chamamos de “linha cruzada”. Este efeito é provocado por uma interferência
indesejável entre condutores próximos que induzem sinais entre si.
22
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
1.1.4.1.4 Ruído Impulsivo
Os tipos de ruído descritos até aqui tem magnitudes e características
previsíveis de forma que é possível projetar sistemas de comunicação que se
ajustem a essas características. O ruído impulsivo, porém, é não contínuo e consiste
em pulsos irregulares e com grandes amplitudes, sendo de prevenção difícil. Tais
ruídos podem ser provocados por diversas fontes, incluindo distúrbios elétricos
externos, falhas nos equipamentos etc.
O ruído impulsivo é, em geral, pouco danoso em uma transmissão analógica.
Em transmissões de voz, por exemplo, pequenos intervalos onde o sinal é
corrompido não chegam a prejudicar a inteligibilidade dos interlocutores. Na
transmissão digital, o ruído impulsivo é a maior causa de erros de comunicação.
1.1.4.1.5 Lei de Shannon
Vinte anos depois de Nyquist, Shannon provou, também matematicamente,
que um canal tem uma capacidade máxima limitada. A parte mais interessante de
seu trabalho discute canais na presença de ruído térmico.
O principal resultado de Shannon (conhecido como a Lei de Shannon) afirma
que a capacidade máxima Dmax de um canal em bits por segundo (bps) cuja largura
de banda é B Hz, e cuja relação sinal-ruído é S/N, é dada por:
D max  B log2 1  S/N 
Um canal de 3.000 Hz (3 KHz), por exemplo, com uma relação sinal-ruído
de 30 dB (parâmetros típicos de uma linha telefônica) não poderá, em hipótese
alguma, transmitir a uma taxa maior do que 30.000 bps (30 Kbps), não importando
quantos níveis de sinal se utilizem ou qual a frequência de sinalização. É importante
notar que este é um limite máximo teórico, e que, na prática, é difícil até mesmo se
aproximar deste valor. Muito embora vários esquemas tenham sido propostos, a lei
de Shannon constitui-se um limite máximo intransponível.
1.1.4.2
Atenuações
A potência de um sinal cai com a distância, em qualquer meio físico. Essa
atenuação é, em geral, logarítmica e por isso é geralmente expressa em um número
constante em decibéis por unidade de comprimento. A atenuação se dá devido a perdas
de energia por calor e por irradiação. Em ambos os casos, quanto maiores as frequências
transmitidas, maiores as perdas. A distorção por atenuação é um problema facilmente
contornado em transmissão digital através da colocação de repetidores que podem
regenerar totalmente o sinal original, desde que a atenuação não ultrapasse um
determinado valor máximo. Para tanto, o espaçamento dos repetidores não deve exceder
um determinado limite, que varia de acordo com a característica de atenuação do meio
físico utilizado.
1.1.4.3
Ecos
Ecos em linhas de transmissão causam efeitos similares ao ruído. Toda vez que
há uma mudança de impedância (resistência oferecida aos sinais oscilatórios) numa
linha, sinais serão refletidos e voltarão por esta linha, podendo corromper os sinais que
estão sendo transmitidos.
Precauções para que a impedância de uma linha de transmissão não seja alterada
podem ser tomadas para evitar a reflexão dos sinais. A utilização de terminadores e
transceptores de alta impedância é um exemplo para evitar o eco em redes em barra.
23
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Em sistemas telefônicos, os ecos podem ser bastante desagradáveis quando
percebidos em intervalos maiores que dezenas de milissegundos. Nesses sistemas é
comum a utilização de canceladores de eco nos pontos onde é inevitável a alteração da
impedância.
1.1.5
Técnicas de Modulação
Todas as técnicas de modulação envolvem o deslocamento do sinal original, doravante
denominado sinal modulador ou modulante, de sua faixa de frequências original para uma
outra faixa. O valor desse deslocamento corresponde à frequência de uma onda denominada
portadora. Toda onda possui três características básicas explicadas anteriormente:
amplitude, frequência e fase. Quando se modula uma portadora, uma destas características
será modificada em função do sinal para que o destinatário possa, através da verificação da
característica usada na modulação, recuperar o sinal original.
O sinal modulador pode ser do tipo Analógico ou Digital levando a duas categorias de
modulação: a modulação analógica e a modulação digital.
1.1.5.1
Modulação Analógica
A modulação é chamada de analógica quando o sinal modulador for do tipo
analógico. Existem três técnicas básicas de modulação analógica, como mostra a
Figura 1.9.

Modulação por Amplitude (Amplitude Modulation – AM);

Modulação por Frequência (Frequency Modulation – FM);

Modulação por Fase (Phase Modulation – PM).
Figura 1.9 – Exemplo de Modulação Analógica.
1.1.5.1.1 Modulação por Amplitude (AM)
Na modulação por amplitude, a portadora terá a sua amplitude sendo
modificada em função do sinal modulador. Neste caso, quando o sinal modulador
aumenta em amplitude, a portadora também aumentará e quando o sinal modulador
diminuir de amplitude, a amplitude da portadora também será diminuída. Um
cuidado importante a ser tomado é quanto a amplitude mínima da portadora. Se ela
ficar inferior a capacidade do receptor em identificá-la, o sinal será perdido.
24
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
1.1.5.1.2 Modulação por Frequência (FM)
Na modulação por frequência, a portadora terá a sua frequência variando em
função do sinal modulador. Quando o sinal modulador aumenta em amplitude, a
frequência da portadora será aumentada e quando o sinal diminuir de amplitude a
frequência da portadora será diminuída. A aparência da portadora modulada fica
semelhante a um efeito de sanfona. Tal como no caso anterior, o aparelho receptor
analisará a variação na frequência da portadora e assim reproduzirá o sinal original.
1.1.5.1.3 Modulação por Fase (PM)
Na modulação por fase, a portadora terá a variação da sua fase modificada em
função do sinal modulador. Conforme o sinal vai aumentando de amplitude, a
velocidade com que a fase varia também aumenta, enquanto que quando o sinal
diminui em amplitude, a velocidade com que a fase varia também é reduzida. Neste
caso a portadora modulada também possui a aparência do efeito sanfona, mas a
forma como este efeito é aplicado torna a onda modulada por fase diferente da onda
modulada por frequência. O aparelho receptor, verificando a variação na
velocidade com que a fase varia, ele é capaz de recuperar o sinal original.
1.1.5.2
Modulação Digital
No caso específico do sinal modulador ser um sinal digital, utilizam-se as mesmas
técnicas apresentadas anteriormente, só que neste caso mudam-se as denominações.

Modulação por Deslocamento de Amplitude (Amplitude Shift Keying –
ASK);

Modulação por Deslocamento de Frequência (Frequency Shift Keying –
FSK);

Modulação por Deslocamento de Fase (Phase Shift Keying – PSK).
A Figura 1.10 mostra um exemplo de modulação digital.
Figura 1.10 – Exemplo de Modulação Digital.
1.1.5.2.1 Modulação por Deslocamento de Amplitude (ASK)
Na técnica ASK, a amplitude do sinal resultante da modulação varia de
acordo com a amplitude do sinal que se quer modular, mantendo-se a frequência da
onda portadora constante. Diferente da modulação analógica, só existirão duas
25
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
amplitudes. Uma referente à modulação do valor um e outra referente ao valor zero.
No caso do valor zero, a amplitude é reduzida a ponto de não haver mais a
portadora, sendo visto como silêncio na transmissão.
1.1.5.2.2 Modulação por Deslocamento de Frequência (FSK)
Na técnica FSK, mantém-se a amplitude da portadora constante. O que varia
é a frequência de acordo com o sinal transmitido. Semelhante a técnica anterior, só
existirão duas frequências diferentes. Um referente à modulação do valor um e
outra referente à modulação do valor zero.
1.1.5.2.3 Modulação por Deslocamento de Fase (PSK)
Na técnica PSK, a transmissão do sinal é identificada por modificações na
fase da onda transmitida. A amplitude e a frequência da onda portadora são
mantidas constantes. No exemplo da Figura 1.10, quando existe a alternância entre
o bit 0 e o bit 1, a fase da portadora é deslocada de 180º.
1.1.6
Comutação
Comutação é a tradução literal de switching, que em português significa “chavear”.
Esse chaveamento é a decisão sobre que caminho despachar a unidade de informação. Essa
função pode ser realizada por comutadores (switches), como os Ethernet e ATM, ou, num
nível mais alto, por roteadores. Esses últimos, na verdade, são chamados de roteadores
porque executam uma estratégia qualquer para a escolha da rota a ser usada para despachar
o pacote, para em seguida comutá-lo através da rede. A função de comutação em uma rede
também se refere à alocação de recursos para a transmissão pelos diversos dispositivos
conectados. A seguir, serão apresentadas as técnicas de comutação existentes.
1.1.6.1
Circuitos
A comunicação via comutação de circuitos pressupõe a existência de um caminho
dedicado entre as estações comunicantes. É usada nas comunicações telefônicas, por
exemplo. A Figura 1.11 ilustra uma comunicação via circuitos chaveados (comutados).
No estabelecimento da conexão, um circuito é destinado para existir durante toda a
comunicação, esteja ela usando o meio ou não. Esse circuito só é desfeito após o
procedimento de desconexão.
Figura 1.11 – Comutação de Circuito.
A Figura 1.12 ilustra a progressão da comunicação entre duas estações. No
estabelecimento da conexão, uma mensagem de controle é enviada ao destino.
Conforme ela vai sendo roteada, um caminho vai sendo alocado. Quando ela atinge seu
destino, uma mensagem de controle de confirmação é enviada pelo destino, já usando o
canal alocado, sem processamento nos nós intermediários. A comunicação entre as
26
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
estações então é possível, até que uma delas encerre a conexão. A mensagem de
desconexão vai provocando a liberação do circuito nos nós intermediários.
Figura 1.12 – Comutação por Circuito ao Longo do Tempo.
Problemas: como o caminho fica dedicado às estações, mesmo que o tráfego não
seja constante e contínuo, há grande desperdício da capacidade de transmissão do meio.
Isso é visível quando usamos a linha telefônica com modens dial-up para acessar
Internet. Pagamos um valor de acordo com o tempo de utilização, e não pelos bytes
transmitidos e recebidos, porque o circuito estabelecido estará à nossa disposição
durante toda a conexão, independentemente de o usarmos ou não.
Obs.: o caminho entre origem e destino pode ser:

Um caminho físico, com enlaces físicos;

Uma sucessão de canais de frequência alocados em cada enlace (FDM);

Uma sucessão de canais de tempo alocados em cada enlace (TDM Síncrono),
ou seja, a técnica de comutação não implica diretamente em uma ou outra
técnica de multiplexação.
A comutação de circuitos é bastante utilizada em sistemas telefônicos com certas
vantagens, porque o tráfego de voz é tipicamente constante e contínuo. Os PBXs usam
esse sistema.
Nos primeiros sistemas o chaveamento era manual; depois, com os relés, passou a
ser automática; posteriormente, passaram a ser multiplexadas na frequência, e mais
recentemente, com a introdução das centrais digitais, multiplexados no tempo. Mais
adiante veremos estas técnicas de multiplexação.
Como conclusões, temos que o retardo é determinístico, pois o meio não é
compartilhado, facilitando a recuperação do sinal. Mas o uso inadequado do meio pode
provocar indisponibilidade de recursos para o estabelecimento dos circuitos. É mais
adequado para tráfego contínuo, como voz, mas péssimo para o tráfego de dados
27
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
(rajadas), porque não há como exceder o limite do canal para a transmissão de um pico
de transmissão, havendo o desperdício durante os períodos de silêncio.
1.1.6.2
Mensagens
Em função das características inadequadas da comutação de circuitos para o
tráfego de dados, surgiu a comutação de mensagens, ilustrado na Figura 1.13. Na
comutação de mensagens, não é necessário o estabelecimento de um caminho dedicado,
mas passa a ser necessário um esquema de endereçamento, para que a mensagem possa
ser roteada. Este é o sistema store-and-forward (primeiro armazenar para depois
encaminhar). Somente após o completo armazenamento local da mensagem é que a
mesma será despachada para o próximo nó de comutação.
Obs.: esse caminho pode se encontrar ocupado recebendo outras mensagens, e
ainda outras mensagens podem estar aguardando para serem transmitidas, sendo
necessário o estabelecimento de uma fila, tipicamente FIFO (first IN, first OUT).
O aproveitamento das linhas é maior, já que os canais podem ser plenamente
compartilhados por várias mensagens ao longo do tempo. As mensagens são sempre
transmitidas sob demanda.
Quando o tráfego se torna muito intenso, diferentemente de uma rede de
comutação por circuitos, onde a conexão é recusada, na comutação por mensagens a
mesma é sempre aceita e colocada em uma fila para retransmissão ao próximo nó.
Observe que há um gap (intervalo) entre as mensagens. Isso simboliza o retardo
provocado pela inserção da mensagem em uma fila, mais o tempo de processamento, ou
seja, de escolha de rota.
O ganho a considerar aqui é a economia de meios com os possíveis atrasos na
entrega das mensagens, em relação à comutação por circuitos.
Figura 1.13 – Comutação por Mensagem ao Longo do Tempo.
1.1.6.3
Pacotes
Para otimizar o esquema da comutação de mensagens, criou-se a comutação de
pacotes, cuja diferença básica é que as mensagens são divididas em pedaços de tamanho
ainda variável (como nas mensagens), porém com um limite máximo definido (pacotes).
28
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
A Figura 1.14 mostra um exemplo de comutação por pacote enquanto que a Figura 1.15
mostra como acontece ao longo do tempo. Pacotes de uma mesma mensagem podem
estar simultaneamente trafegando numa rede, e ainda por cima possivelmente por
caminhos diferentes (na modalidade datagrama), sendo muito comum a recepção dos
mesmos desordenados. Isso reduz sobremaneira o atraso da rede de comutação de
mensagens, além de exigir menor capacidade de armazenamento (memória) dos nós
intermediários. Também facilita a recuperação de erros pela retransmissão apenas do
pacote danificado, ao invés de toda a mensagem. Pode ser do tipo circuito virtual ou
datagrama, em função do estabelecimento ou não de uma determinada rota para
transmissão dos pacotes.
Figura 1.14 – Comutação por Pacote.
1.1.6.3.1 Comutação de Pacotes – Circuito Virtual
A modalidade de Comutação por Pacotes através de circuitos virtuais é
parecida com a Comutação por Circuitos comum, com a diferença fundamental de
que o meio pode (e normalmente é) compartilhado. O que não muda é a rota. Os
pacotes, neste caso, sempre chegam na sequência em que foram enviados. Nesse
caso, há o overhead (sobrecarga) das mensagens de controle para estabelecimento
da rota e seu desestabelecimento posterior. A vantagem é o compartilhamento do
meio, com alocação de recursos em cada nó de comutação.
1.1.6.3.2 Comutação de Pacotes – Datagrama
Na modalidade datagrama, há a grande vantagem de reduzir o overhead para
estabelecer rotas prévias, além de possibilitar um maior volume de dados de uma
mesma transmissão simultaneamente, pois permite a presença de vários pacotes no
meio de transmissão, já que os pacotes podem trafegar por caminhos diferentes.
Devido a isso, são necessárias informações de controle no cabeçalho para o
roteamento particularizado de cada datagrama nos vários nós de comutação, além
de um mecanismo de reordenação de pacotes no destino, já que devido a
possibilidade dos datagramas percorrerem caminhos diferentes, eles poderão
chegar fora de ordem.
29
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura 1.15 – Comutação por Pacote ao Longo do Tempo.
1.1.6.4
Células
A comutação de células é um caso particular da comutação de pacotes, modalidade
circuitos, onde todos os pacotes possuem tamanhos fixos (53 bytes). Seu tamanho
diminuto permite grande velocidade na comutação, e o fato de ser fixo permite que as
verificações de erro sejam feitas por hardware, com velocidades muito superiores ao
convencional. A tecnologia ATM, que será vista adiante, implementa a comutação de
células. Backbones de alta velocidade vem implementando essa técnica, capaz de
oferecer taxas de 155 Mbps a 10 Gbps, sem a necessidade de grandes alterações de
arquitetura, como ocorre no padrão Ethernet, por exemplo.
1.1.7
Forma de Comunicação
A comunicação por um determinado meio pode acontecer de três formas diferente:
simplex, half-duplex e full-duplex.
1.1.8

Simplex: neste tipo de comunicação, o meio permite a veiculação da
informação em apenas um único sentido como por exemplo, as
transmissões de TV, Rádio e alguns pagers.

Half-Duplex: neste tipo de comunicação, o meio permite a
veiculação da informação nos dois sentidos, porém, elas não
podem ocorrer simultaneamente. Exemplo: Walktalk.

Full-Duplex: neste tipo de comunicação, o meio permite a
veiculação da informação nos dois sentidos simultaneamente,
como por exemplo, ligações telefônicas.
Multiplexação
Sempre que a banda passante de um meio físico for maior ou igual à banda passante
necessária para um sinal, podemos utilizar este meio para a transmissão do sinal. Na prática,
a banda passante necessária para um sinal é, em geral, bem menor do que a banda passante
dos meios físicos disponíveis, como mostra a Figura 1.16.
30
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura 1.16 – Desperdício de Banda Passante do Meio Físico.
A pergunta natural a se fazer neste momento é: não seria possível aproveitar a banda
extra disponível para a transmissão de outros sinais? Vamos supor a existência de três sinais
(C0, C1 e C2) com a banda passante necessária indicada na Figura 1.17, não seria possível
transmiti-los simultaneamente através de um mesmo meio físico como mostrado nesta
mesma figura? A resposta a essa pergunta é sim, e a técnica que permite a transmissão de
mais de um sinal em um mesmo meio físico é denominada multiplexação. Existem duas
formas básicas de multiplexação:

Multiplexação na Frequência (Frequency Division Multiplexing – FDM);

Multiplexação no Tempo (Time Division Multiplexing – TDM).
Figura 1.17 – Multiplexação na Frequência (FDM).
1.1.8.1
Multiplexação na Frequência
Em primeiro lugar, se passarmos um filtro em cada um dos sinais da Figura 1.17
de forma a preservar somente a faixa relativa à banda passante necessária de cada um
deles, teremos dado o primeiro passo para alojar esses três sinais na forma desejada, sem
que um sinal interfira no outro. O passo seguinte é deslocar a faixa de frequências
original do segundo e do terceiro sinal de forma que eles passem a ocupar as três faixas
disjuntas, sem sobreposição. Como vimos anteriormente, a técnica de modulação
permite esse deslocamento de frequência. Dessa forma, os três sinais podem ser
transmitidos no meio físico, cada um deles ocupando uma banda ou canal distinto com
tamanho necessário para a sua transmissão. Como os sinais foram previamente filtrados
de acordo com a sua banda passante necessária, a informação de cada um deles está
preservada e contida naquela faixa de frequência na qual está sendo transmitido e em
nenhuma outra.
Considere o exemplo ilustrado na Figura 1.18. Nessa figura, estão representados
três sinais de voz através de seus espectros. Um dos sinais foi modulado para a
frequência de 4 KHz à 8 KHz e um outro foi modulado para a frequência de 8 KHz à
12 KHz. Os sinais são passados por filtros de forma a impedir que existam componentes
em outras frequências que não a faixa a eles reservadas, faixas estas de tamanho igual a
31
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
4 KHz. Note que mencionamos anteriormente que a banda passante necessária para um
sinal de voz tem uma largura de 3 KHz, portanto, 4 KHz é mais do que suficiente para
a transmissão desses sinais. Após terem sido filtrados, esses sinais podem trafegar
simultaneamente pelo meio físico.
Figura 1.18 – Exemplo de Multiplexação na Frequência de três Sinais de Voz.
Um receptor que deseje recuperar um dos sinais transmitidos numa linha
multiplexada na frequência, deverá conhecer a faixa de frequências que está sendo
utilizada para a sua transmissão. Dessa forma, ele poderá deslocar o sinal recebido de
forma a fazer o sinal desejado ocupar novamente a sua faixa original (de 0 a n Hz). O
sinal demodulado pode a seguir ser filtrado para conter somente o sinal original. A
Figura 1.19 ilustra o processo de transmissão em uma linha multiplexada na frequência.
Equipamentos capazes de realizar modulações e demodulações de sinais são
denominados MODEMs (MOduladores/DEModuladores).
Figura 1.19 – Transmissão em uma Linha Multiplexada na Frequência.
32
Apostila de Fundamentos de Redes de Computadores
1.1.8.2
Prof: Ricardo Quintão
Multiplexação no Tempo
A Multiplexação por divisão do tempo se beneficia do fato de que a capacidade
(em bits por segundo) do meio de transmissão, em muitos casos, excede a taxa média de
geração de bits das estações conectadas ao meio físico. Quando isso ocorre, vários sinais
podem ser transportados por um único caminho físico, intercalando-se porções de cada
sinal no tempo. A multiplexação no tempo pode ser classificada em síncrona ou
assíncrona.
1.1.8.2.1 TDM Síncrono
No TDM síncrono (ou simplesmente TDM), o domínio do tempo é dividido
em intervalos de tamanho fixo T chamados frames; cada frame é subdividido em N
subintervalos {t1, t2, ..., tn} denominados slots ou segmentos que formam uma
partição dos frames que, por sua vez, formam uma partição do tempo infinito, como
mostra a Figura 1.20.
Figura 1.20 – TDM Síncrono.
Denomina-se canal, ao conjunto de todos os slots, um em cada frame,
identificados por uma determinada posição fixa dentro desses frames. Por exemplo,
o canal 3 é forma pelo terceiro slot de cada frame. Canais podem ser alocados a
estações que desejem transmitir. Cada estação deverá esperar o slot correspondente
dentro de cada frame, quando então poderá transmitir durante o tempo daquele slot,
utilizando a taxa de transmissão máxima suportada pelo meio físico.
Da mesma forma que alocamos canais de frequências em redes utilizando
FDM, em redes que utilizam TDM, os canais devem ser alocados às diferentes
fontes de transmissão ou estações. Se a alocação de um determinado canal é fixa
durante todo o tempo e preestabelecida antes do funcionamento da rede, então temse um canal dedicado.
Canais também podem ser alocados e desalocados dinamicamente durante o
funcionamento da rede. Nesse caso, esses canais são denominados canais
chaveados, de forma análoga à nossa definição para redes em banda larga. Uma
estação, ao alocar um canal chaveado, pode transmitir neste canal pelo tempo que
desejar. Quando não desejar mais o monopólio do canal, a estação o devolve à
controladora do sistema, que agora pode alocá-lo a outras estações. Este esquema
de alocação é sempre utilizado quer o canal seja ponto a ponto ou multiponto.
No TDM síncrono com canais chaveados, quando um canal é alocado,
estabelece-se uma conexão que permanece dedicada à estação transmissora até o
momento em que ela resolva desfazê-la. Essa forma de chaveamento é denominada
chaveamento de circuitos, como foi visto na Seção 1.1.6.1. Note que quando uma
estação que alocou um canal não estiver transmitindo (ou a taxa de transmissão for
33
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
menor do que a taxa assegurada pelo canal), tem-se um desperdício de capacidade
do meio físico, já que o canal alocado não pode ser utilizado por qualquer outra
estação até o momento da desconexão como mostra a Figura 1.21.
Figura 1.21 – Desperdício de Capacidade com TDM Síncrono.
1.1.8.2.2 TDM Assíncrono
Uma alternativa ao TDM síncrono que procura eliminar o desperdício da
capacidade existente nesse esquema é o TDM assíncrono (também conhecido por
TDM estatístico ou STDM – Statistical TDM). Nesse esquema, não há alocação
de canal nem estabelecimento de conexão. Parcelas de tempo são alocadas
dinamicamente de acordo com a demanda das estações. Nenhuma capacidade é
desperdiçada, pois o tempo não utilizado está sempre disponível caso alguma
estação gere tráfego e deseje utilizar o canal de transmissão. Em compensação, no
TDM assíncrono, cada unidade de informação transmitida deve sempre conter um
cabeçalho com os endereços de origem e de destino como mostra a Figura 1.22. No
TDM síncrono, cada canal já identifica o transmissor. Em canais ponto a ponto
com TDM síncrono, esse cabeçalho é totalmente desnecessário já que o receptor
também é identificado pela conexão.
34
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura 1.22 – TDM Assíncrono.
Não havendo a noção de conexão dedicada, o canal é sempre compartilhado
no tempo por todas as estações a ele conectadas, sendo o acesso definido como
assíncrono.
1.1.8.3
Características do FDM e do TDM
Como vimos na Multiplexação por Divisão de Frequência (FDM), a utilização da
modulação é necessária para deslocar os sinais originais para outra faixa de frequência.
A filtragem dos sinais permite o compartilhamento do mesmo meio físico sem que um
sinal interfira nas faixas de frequências adjacentes que carregam outros sinais. Os
resultados da modulação de sinais foram apresentados na Figura 1.9 e na Figura 1.10.
Nota-se que os sinais digitais são transformados em sinais analógicos e, por esse motivo,
é comum associarmos os sistemas de banda larga à transmissão analógica.
Já em esquemas que utilizam Multiplexação por Divisão do Tempo (TDM), os
sinais são transmitidos em banda básica, sendo portanto, sinais digitais. Assim, associase TDM à transmissão digital.
Como já havíamos mencionado, a transmissão digital oferece vantagens sobre a
analógica principalmente no que diz respeito à recuperação dos sinais na presença de
ruídos. Sinais, em transmissão digital podem ser regenerados através de repetidores que
não propagam ruídos. Além disso, é possível implementar esquemas de detecção e
correção de erros que estudaremos mais adiante.
1.1.8.4
Sistemas em Banda Larga e em Banda Básica
As técnicas de transmissão estão diretamente relacionadas com as técnicas de
multiplexação. Duas técnicas de transmissão são as mais empregadas: a sinalização em
banda básica e a sinalização em banda larga.
35
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
1.1.8.4.1 Sinalização em Banda Básica
Na sinalização em banda básica, o sinal é simplesmente colocado na rede sem
se usar qualquer tipo de modulação, aparecendo diretamente na rede e não como
deslocamento de frequência, fase ou amplitude de uma portadora de alta frequência.
A sinalização em banda básica vem sendo adotada nos projetos de redes por
não necessitar de modems e por possibilitar a transmissão em alta velocidade, sendo
utilizada a técnica de multiplexação TDM. Para transmissões a longas distâncias,
certas precauções devem ser tomadas. A técnica também não é adequada a circuitos
que estão sujeitos a ruídos, interferências e erros aleatórios. No ambiente restrito
das redes locais, contudo, a sinalização em banda básica, em geral, é adequada.
1.1.8.4.2 Sinalização em Banda Larga
Ao contrário da sinalização em banda básica, na qual toda a banda de
frequência do meio é utilizada para produzir o sinal, a sinalização em banda larga
realiza a multiplexação em frequência (FDM). Com essa multiplexação, o espectro
de frequências do meio é dividido em vários canais, cada um podendo suportar
diferentes tráfegos.
A sinalização em banda larga é geralmente utilizada em redes locais em barra.
Sua utilização numa topologia em anel é problemática, pois exigiria que cada
repetidor fosse capaz de receber e retransmitir dados nos múltiplos canais. O custo
de dispositivos para a realização desta tarefa tornaria a rede inviável.
1.1.9
Digitalização de um Sinal pela Técnica PCM
Nas seções anteriores, examinamos a codificação de informações digitais por sinais
analógicos através de processos que denominamos de modulação. Essa técnica é necessária
quando desejamos empregar multiplexação na frequência (FDM) em redes em banda larga,
ou quando necessitamos ajustar a faixa de frequências do sinal para transmissão em um canal
específico com características próprias (como é o caso da transmissão de dados via linhas
telefônicas).
Fora os casos citados anteriormente, a transmissão digital é, em geral, mais vantajosa
do que a analógica devido, principalmente, à possibilidade de restaurarmos o sinal original
mesmo na presença de falhas ou ruídos no sistema. A transmissão digital vem substituindo
a analógica sempre que possível, inclusive na própria rede telefônica, com a instalação de
novas centrais e cabos de fibra óptica.
A informação de voz é originalmente analógica. Para utilizarmos as vantagens da
transmissão digital, devemos codificá-la em um sinal digital antes da transmissão. Os
dispositivos capazes de codificar informações analógicas em sinais digitais são denominados
CODECs (CODer/DECoder). Nesta seção examinaremos a principal técnica utilizada por
CODECs, denominada PCM (Pulse Code Modulation – Modulação por Código de Pulso).
A técnica PCM é baseada no teorema de Nyquist (ou teorema da amostragem)
apresentado na Seção 1.1.3.1. O teorema assegura que uma taxa de amostragem duas vezes
superior que a largura de banda do sinal (B) é suficiente para recuperar este sinal. Utilizando
uma taxa de amostragem maior ou igual a 2B, o sinal original deve ser amostrado e, a cada
amostra, deve-se associar um valor proporcional à amplitude do sinal naquele ponto. Este
processo é conhecido como PAM (Pulse Amplitude Modulation – Modulação por Amplitude
de Pulso).
36
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
A partir dos pulsos PAM, podemos produzir os pulsos PCM através de um processo
conhecido como quantização, onde cada amostra PAM é aproximada a um inteiro de n bits.
No exemplo da Figura 1.23, escolhemos n  3 , dando origem a oito níveis (23). A saída
PCM corresponde ao resultado dessa quantização.
Podemos calcular, a partir desse processo, a taxa gerada pela transmissão de
informações analógicas através de sinais digitais. Considere o caso de sinais de voz, por
exemplo. Se assumirmos que a banda passante necessária desses sinais tem largura igual a
4.000 Hz (4 KHz), a taxa de amostragem de Nyquist é, neste caso, igual a 8.000 amostras por
segundo. Se escolhermos essa taxa e codificarmos cada amostra com oito bits, a taxa gerada
será 8.000  8  64 Kbps .
Figura 1.23 – Digitalização de um Sinal (PCM).
1.1.10 Codificação e Transmissão de Sinais Digitais em Banda Básica
A codificação de sinais em banda básica mais conhecida é denominada codificação
NRZ (Non Return to Zero), onde há a presença de dois níveis de tensão ou corrente, cada
qual representando um dos dois símbolos digitais (0 ou 1). Temos utilizado até agora, em
nossos exemplos, esse tipo de codificação, por se tratar do mais simples. Já observamos que,
37
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
neste esquema, definimos um intervalo de sinalização, durante o qual o sinal permanece
inalterado de forma a caracterizar o bit transmitido, como mostra a Figura 1.24. O receptor
deve procurar amostrar o sinal recebido no meio deste intervalo, onde o sinal já se encontra
estável, de forma a reconhecer o nível de tensão ou corrente correto, e recuperar a informação,
como mostra a Figura 1.25.
Figura 1.24 – Codificação NRZ.
Para uma amostragem correta, receptor e transmissor precisam ter seus clocks
(relógios) sincronizados em frequência e fase. As diferenças de fase e frequência entre os
clocks do transmissor e do receptor são, em geral, difíceis de resolver. O problema da
frequência envolve a utilização de osciladores com frequências idênticas que, na prática, são
difíceis de conseguir.
Figura 1.25 – Recuperação de um Sinal NRZ.
A diferença de fase envolve outros fatores ainda mais incontroláveis, como por
exemplo, o instante em que são disparados os circuitos osciladores de transmissão e recepção.
Podem-se adotar duas estratégias básicas para lidar com esse problema de sincronismo dos
clocks, que determinam as duas formas básicas de transmissão: a transmissão assíncrona e a
transmissão síncrona.
1.1.10.1 Transmissão Assíncrona
Na transmissão assíncrona, admite-se que a referência de tempo de transmissor e
receptor não é única, apenas próxima, e tenta-se lidar com essas diferenças. A técnica
de codificação de dados utilizada nesta solução é usualmente a NRZ e para que haja o
sincronismo nas fases do clock do transmissor e do receptor, no início de uma
transmissão de dados é enviado um sinal de início (start bit) e logo em seguida enviado
o sinal com os dados. Como existe a diferença na frequência, o sincronismo não poderá
ser mantido por muito tempo, levando a uma limitação no tamanho dos dados enviados
que variam de 5 a 8 bits. Ao final desta sequência, é enviado um sinal de parada (stop
bit) para indicar ao receptor que pare o seu clock e aguarde uma nova transmissão através
de um start bit como mostra a Figura 1.26.
38
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura 1.26 – Exemplo de Transmissão Assíncrona.
Detalhando um pouco mais o funcionamento da transmissão assíncrona, no
receptor utiliza-se um oscilador com uma frequência múltipla, digamos n vezes maior
que a frequência do oscilador do transmissor. Sendo fr e ft as frequências dos clocks de
recepção e transmissão, e Tr e Tt os respectivos períodos de cada clock, podemos
escrever:
f r  nf t
Como temos a relação entre frequência e período dada por: T 
1
, podemos
F
escrever que:
Tr 
1
fr
Tr 
1
nf t
Como f t 
Tr 
1
1
n
Tt
Tr 
Tt
n
1
temos que:
Tt
Detectado o início de uma recepção, a amostragem se fará depois de passados n 2
pulsos de clock do receptor. Admitindo que a frequência de oscilação do receptor tenha
um erro de precisão, esta não será maior do que uma fração de um período, ou seja, a
defasagem que pode ser introduzida não ultrapassa o intervalo Tt n , podendo essa
defasagem ser, teoricamente, reduzida o quanto se queira, bastando para isso
aumentarmos o valor de n.
Note, porém, que mesmo pequenas defasagens, após um intervalo grande de
transmissão, irão se acumular provocando o afastamento do instante de amostragem do
centro do intervalo de sinalização, se fr não for exatamente igual a nft. Por esse motivo,
a transmissão assíncrona é orientada à transmissão de caracteres que são pequenas
unidades de dados que variam, em geral, entre 5 e 8 bits, como foi comentado
anteriormente, de forma a não permitir longas sequências de bits.
39
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Para o funcionamento correto da recepção, precisamos de um mecanismo que
permita a detecção precisa do início da recepção de um caracter, uma vez que não
queremos aí introduzir um erro de fase. De posse desse mecanismo, a cada caracter
teremos anulado toda a defasagem que por ventura tenha se acumulado no caracter
anterior, pois começamos a marcar novamente o meio dos bits, a partir do início do
primeiro bit do caracter corrente. Por esse motivo, a transmissão assíncrona será
caracterizada pela transmissão de caracteres delimitados por bits especiais denominados
start bit e stop bit, conforme mostra a Figura 1.26.
O start bit marca o início da transmissão de um caracter. O start bit deve sempre
apresentar uma transição inicial de 1 para 0 de forma a marcar bem a sua presença e
permitir o disparo da contagem no oscilador de recepção, que deve contar n 2 pulsos
para chegar ao instante de amostragem. Após o start bit, segue-se o caracter, e mais um
bit opcional de paridade utilizado em determinados esquemas de detecção de erros que
será apresentado na Seção 1.1.11.1. Por fim, um stop bit é colocado para marcar o fim
do caracter, permitindo que o receptor tenha um intervalo de tempo para ter acesso ao
seu registro de recepção, e também para garantir a transição no início do próximo start
bit do caracter seguinte, caso este seja transmitido logo a seguir. A Figura 1.27 ilustra
todo este funcionamento considerando um n  2 .
Figura 1.27 – Exemplo de Transmissão e Recepção Assíncrona.
Podemos notar que, como o início de um caracter é bem delimitado, caracteres
podem ser transmitidos espaçados entre si de forma aleatória. Não há a necessidade de
transmitir um após o outro, já que a detecção correta do início de um caracter é o
suficiente para garantir o funcionamento correto dos osciladores durante a transmissão
e recepção desse caracter.
1.1.10.2 Transmissão Síncrona
Na transmissão síncrona, procura-se garantir a existência de uma referência
“única” de tempo para o transmissor e receptor durante cada transmissão. Existem dois
modos de realizarmos essa tarefa.
O primeiro, o mais simples, consiste em enviar em um canal separado dos dados,
o clock do circuito transmissor. Se cuidados forem tomados de forma que os dados
transmitidos sofram exatamente os mesmos retardos que o clock do circuito transmissor,
esse clock poderá ser usado pelo circuito receptor como a base para a amostragem correta
40
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
dos dados recebidos. A técnica de codificação de dados utilizada nesta solução é, em
geral, a NRZ.
A solução apresentada no parágrafo anterior, embora teoricamente simples,
apresenta alguns problemas práticos. O primeiro deles é a necessidade de dois canais
de transmissão (um para os dados e outro para o clock), com toda a duplicação dos
circuitos de transmissão correspondentes, aumentando em muito o custo de transmissão.
Outro problema é a exigência dos circuitos apresentarem os mesmos retardos de
transmissão. De forma análoga, os meios de transmissão utilizados devem ser
perfeitamente idênticos de forma a apresentar o mesmo retardo de propagação. Uma
pequena variação no comprimento do meio poderia impossibilitar qualquer
comunicação. Enfim, qualquer variação de retardos poderia ocasionar a amostragem
incorreta de dados no receptor. Esse problema será tanto mais crítico quanto maiores
forem as velocidades de transmissão empregadas e as distâncias envolvidas.
O segundo modo de se realizar uma transmissão síncrona consiste em enviar dados
e informações de sincronismo que permitam recuperar o clock, juntos em um mesmo
canal, utilizando alguma técnica de codificação. Ao receptor cabe separar esses dois
sinais e, a partir do clock recuperado, realizar a amostragem dos dados. Essa alternativa
evita o problema contido na primeira solução, ou seja, a necessidade de dois canais, com
os problemas que daí advêm.
São várias as técnicas de codificação usuais em redes de computadores para a
transmissão conjunta de dados e informações de sincronismo em um mesmo canal.
Todas elas baseiam-se no fato de garantirmos a existência de transições em qualquer que
seja o padrão de bits transmitidos. Também em todas as técnicas há a necessidade do
envio de informações de sincronismo antes do início da transmissão. A seguir vamos
exemplificar duas dessas técnicas, utilizadas nos padrões IEEE 802: a codificação
Manchester e a codificação Manchester Diferencial.
1.1.10.2.1 Codificação Manchester
A codificação Manchester, é nada mais nada menos que a modulação em fase
dos dados e clock. Essa técnica tem todas as vantagens da utilização de apenas um
canal de transmissão. Conforme podemos ver na Figura 1.28, na codificação
Manchester uma transição positiva representa o bit 1 e uma transição negativa
representa o bit 0. Como cada bit possui uma transição, o sinal carrega seu próprio
pulso de clock. A Figura 1.29 mostra um exemplo de transmissão utilizando a
codificação Manchester.
Figura 1.28 – Codificação Manchester.
41
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura 1.29 – Exemplo de Codificação Manchester.
Na codificação Manchester, toda transmissão de bits 0 e 1 implica em
transições no sinal, mas nem toda transição representa um bit. Note, por exemplo,
na Figura 1.29, a transição que aparece ao final do bit 0 quando o bit seguinte
também é 0. O fato de que nem toda transição representa um bit dificulta a
separação dos dados e o sincronismo no sinal transmitido. Se, no entanto,
transmitirmos antes de cada pacote de dados um preâmbulo de 0s e 1s se alternando,
todas as transições desse preâmbulo serão significativas e a partir delas será
possível recuperar o clock, que daí em diante será simplesmente ajustado em fase
com as próximas transições existentes no meio de cada bit transmitido. Recuperado
o clock, a recuperação dos dados é trivial, pois agora sabemos quais transições
carregam informações e quais não carregam. A Figura 1.30 mostra como é possível
descobrir o período do clock original (T) a partir do preâmbulo.
Figura 1.30 – Recuperação do Período do Clock Através do Preâmbulo.
A Figura 1.31 mostra a separação dos dados e clock no sinal recebido. A
lógica é simples. A partir de cada transição válida, esperamos 3 4 do período de
sinalização e amostramos o sinal recebido. A amostragem ocorrerá na descida do
ciclo do clock recuperado. O preâmbulo garante que o algoritmo começa sempre
de uma transição válida. O sinal amostrado é exatamente o inverso do sinal
transmitido. Note na Figura 1.31 que os bits do sinal recuperado são o inverso do
valor do sinal amostrado na descida do clock recuperado. No sinal recuperado está
faltando um bit no começo (bit 0), porque não consideramos a existência do
preâmbulo neste exemplo. Em uma transmissão real, o preâmbulo não só levaria a
recuperação do período do clock original (T) como também evitaria a perda do
primeiro bit de dados da transmissão.
42
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura 1.31 – Exemplo de Transmissão Manchester.
1.1.10.2.2 Codificação Manchester Diferencial
A codificação Manchester Diferencial é derivada da codificação Manchester.
Conforme podemos ver na Figura 1.32, como na codificação Manchester, cada bit
é representado por duas metades, tendo a segunda metade a polaridade inversa da
primeira, isto é, existe sempre uma transição no meio do bit. Um bit 0 é
representado por uma transição no começo (mudança de polaridade) da sua
transmissão, enquanto que o bit 1 é representado por nenhuma transição (mesma
polaridade) no começo da sua transmissão.
Figura 1.32 – Exemplo de Codificação Manchester Diferencial.
A separação dos sinais (dados e sincronismos) é realizada de modo similar à
codificação Manchester apresentada na Seção 1.1.10.2.1.
43
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Além das vantagens provenientes da utilização de um só cabo, as codificações
Manchester, diferencial ou não, trazem intrinsecamente o seu próprio esquema de
detecção de erro. Cada bit Manchester válido tem uma transição no meio. Se um
ruído causar a inversão de alguma metade deste bit, a ausência de transição vai
representar um dado Manchester inválido. Apenas o evento improvável da inversão
das duas metades da célula criaria um erro não detectável, mas a probabilidade deste
fenômeno ocorrer são ínfimas.
É interessante notarmos que, na codificação Manchester, diferencial ou não,
os bits são representados por mudança de polaridade do sinal. Sinais que não
mudam de polaridade também existem, embora não sejam utilizados para
representação de informação propriamente dita, mas sim para funções especiais.
Um símbolo carregado por um período de sinalização que não muda de polaridade
mantendo o nível baixo é denominado bit J. O símbolo que não muda de
polaridade, porém mantém o nível alto é denominado bit K. Os bits J e K nunca
aparecem nos dados transmitidos, mas podem ser utilizados para funções de
delimitação de pacotes.
O preâmbulo, como vimos, serve para ajudar a separação dos dados e clock
na codificação Manchester. Ele tem, contudo, outras funções além desta, utilizadas
em todas as técnicas de codificação apresentadas. Nas redes locais que não usam
Multiplexação em Frequência, a ausência de transmissão é indicada pela ausência
de sinal no meio. Se um dispositivo fosse iniciar a transmissão com o começo de
seus dados, provavelmente os dispositivos receptores perderiam os primeiros bits,
pois precisam de um tempo finito para ajustarem os seus clocks internos à
frequência e/ou fase do transmissor. Esta é mais uma razão para a existência do
preâmbulo. Se o receptor perder um pedaço do preâmbulo, ele ainda será capaz de
reconhecer o seu final pelo aparecimento de alguma sequência particular, e a partir
daí, receber os dados corretamente. Notemos que em sistemas onde há transmissões
ininterruptas de pacote de dados, a necessidade de preâmbulo verifica-se apenas
para a iniciação do sistema. Uma vez iniciado, não há mais necessidade de envio
de preâmbulo, a não ser para uma nova iniciação.
Uma outra característica a ser explorada na codificação Manchester é que a
ausência de transmissão pode ser detectada pela simples ausência de transições no
meio.
1.1.11 Técnicas de Detecção de Erros
Apresentamos na Seção 1.1.4, vários fenômenos que podem causar erros de
transmissão, como os ruídos. Na impossibilidade de eliminar totalmente esses fenômenos,
sistemas de comunicação devem ser projetados de forma a possibilitar a recuperação da
informação perdida. O primeiro passo para qualquer esquema de tratamento de erros é a sua
detecção. Reconhecer que um quadro foi recebido com erro irá permitir que se tomem as
providências necessárias, que poderão variar de acordo com as necessidades das aplicações
e com as características dos dados transmitidos. Nesta seção abordaremos apenas as técnicas
para a sua detecção.
Todos os métodos de detecção de erros são baseados na inserção de bits extras na
informação transmitida. Esses bits consistem em informações redundantes, isto é, que podem
ser obtidas a partir da informação original. Esses bits são computados pelo transmissor
através de algum algoritmo que tem como entrada os bits originais a serem transmitidos.
Após computar esses bits, o transmissor os acrescenta aos bits de informação propriamente
dita, para então prosseguir com a transmissão do quadro. Quando o quadro é recebido, o
44
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
receptor, conhecendo o algoritmo utilizado pelo transmissor, pode recomputar os bits de
redundância e compará-los com os respectivos bits recebidos no quadro. Se eles forem
diferentes, detectou-se a presença de um erro.
Vários algoritmos para geração de bits de redundância já foram propostos e podem ser
encontrados nas literaturas. Iremos apresentar resumidamente duas das principais técnicas
conhecidas pelos nomes de Paridade e CRC (Cyclic Redundancy Checks – Checagem de
Redundância Cíclica).
1.1.11.1 Paridade
A forma mais simples de redundância para detecção de erros já foi mencionada
anteriormente quando apresentamos a transmissão assíncrona na Seção 1.1.10.1,
consistindo na inserção de um bit de paridade ao final de cada caracter de um quadro.
O valor desse bit é escolhido de forma a deixar todos os caracteres com um número par
de bits 1 (paridade par) ou com um número ímpar de bits 1 (paridade ímpar).
Tipicamente, em transmissões assíncronas, costuma-se utilizar a paridade par. Se o
transmissor desejar, por exemplo, transmitir o caracter “1110001”, utilizando paridade
ímpar, ele acrescentará um bit 1 ao final do caracter, de forma que a sequência resultante
terá um número ímpar de bits 1 (no caso, 5 bits 1), ficando “11100011”. O receptor,
examinando o caracter recebido, deverá sempre encontrar um número de bits 1 ímpar,
caso em que assumirá que a transmissão foi efetuada com sucesso. Caso contrário,
houve algum erro durante a transmissão que ocasionou a inversão de um ou mais bits.
Se a paridade fosse par, teria sido acrescentado o bit 0, de forma que continuaria
existindo um total par de bits 1 (no caso, 4 bits 1).
Note que, caso um número par de bits tenha sido invertido, o receptor não será
capaz de perceber a existência de erro, pois a paridade ainda estará correta.
1.1.11.2 CRC
Como vimos anteriormente, o esquema de paridade é muito restrito, sendo pouco
eficiente na detecção de erros. Esquemas de melhor eficiência já foram propostos,
dentre eles o CRC.
Nesse esquema, um quadro de k bits, é representado por um polinômio D(X).
Como exemplo, o quadro “1101011011” onde k  10 é representado pelo polinômio
D( X )  X 9  X 8  X 6  X 4  X 3  X  1 . A ordem do polinômio D(X) será k  1 .
No transmissor é gerado um polinômio temporário L(X), formado pela
concatenação dos dados com uma quantidade n de zeros, onde n representa a ordem do
polinômio gerador G(X). Em seguida, o polinômio temporário L(X) é dividido em
módulo 2 pelo polinômio gerador G(X). Após esta divisão, obteremos um resto r(X),
cuja ordem será inferior à ordem do polinômio gerador G(X) representado aqui por n.
Por último, o polinômio temporário L(X), será subtraído do resto da divisão r(X) criando
o polinômio que será transmitido T(X). Este polinômio a ser transmitido é formado pelo
dado concatenado ao resto, onde os n bits extras acrescentados à direita dos dados são
chamados de FCS (Frame Check Sequence – Sequência de checagem de Quadro). Na
Figura 1.33 temos um exemplo da geração de uma transmissão usando como técnica de
detecção de erro o CRC.
45
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Quadro  1101011011  D( X )  X 9  X 8  X 6  X 4  X 3  X  1
Polinômio Gerador  10011  G ( X )  X 4  X  1 (ordem 4  n  4 )
L(X) = 11010110110000
Realizando a divisão em módulo 2 de L(X) por G(X).
Realizando a subtração em módulo 2 de L(X) por r(X) resultando no T(X).
Figura 1.33 – Criação do FCS usando a Técnica CRC no Transmissor.
Sempre que é subtraído do dividendo o resto obtido pela divisão, o resultado é,
obrigatoriamente, um múltiplo do divisor. Sendo assim, após a subtração do polinômio
L(X) por r(X), gerando o polinômio T(X), este polinômio será divisível por G(X).
Todos os equipamentos que receberem o polinômio T(X) poderão realizar a sua
verificação realizando a sua divisão por G(X) e verificando se o resto é igual a zero,
como mostra a Figura 1.34. Se for, considera-se que não houve alteração na transmissão
e então pode-se dar continuidade ao seu processamento. No caso de nós intermediários,
realizar a retransmissão. No caso do destinatário, realizar a retirada do FCS e então
encaminhar o dado para as camadas superiores da hierarquia de transporte.
46
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura 1.34 – Verificação dos Dados Usando a Técnica CRC feita no Receptor.
Alguns polinômios geradores são largamente utilizados e padronizados. Como
exemplo, temos os seguintes:
CRC  12  X 12  X 11  X 3  X 2  X  1
CRC  16  X 16  X 15  X 2  1
CRC  CCITT  X 16  X 12  X 5  1
CRC  32  X 32  X 26  X 23  X 22  X 16  X 12  X 11  X 10  X 8  X 7  X 5  X 4  X 2  X  1
O esquema baseado em CRC-12 é utilizado em sequências de caracteres de seis
bits gerando FCS de 12 bits. Tanto o CRC-16 quanto o CRC-CCITT são populares para
sequências de caracteres de oito bits, na Europa e EUA, respectivamente, ambos
resultam em FCS de 16 bits. O CRC-32 foi o escolhido pelo comitê IEEE-802 para ser
utilizado em redes locais, gerando FCS de 32 bits.
47
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Meios de Transmissão e Topologia de Redes
No nível mais baixo, toda a comunicação entre computadores envolve codificar dados em uma
forma de energia e enviar essa energia através de um meio de transmissão. Por exemplo, a corrente
elétrica pode ser usada para transferir dados através de um fio, ou as ondas de rádio podem ser usadas
para carregar dados através do ar. Uma vez que os dispositivos de hardware conectados a um
computador executam a codificação e a decodificação dos dados, os programadores e os usuários não
precisam conhecer os detalhes da transmissão de dados. Entretanto, já que um papel principal do
software de comunicação é tratar os erros e as falhas que surgem no hardware subjacente, compreender
tal software requer o conhecimento de alguns conceitos básicos sobre transmissão de dados.
Nesta seção abordaremos os principais meios de transmissão de dados e as topologias de redes,
isto é, a forma como os equipamentos serão conectados uns aos outros.
2.1
Meios de Transmissão
2.1.1
Fios de cobre
As redes de computadores convencionais usam fios como o meio primário para
conectar computadores porque o fio é barato e fácil de instalar. Embora os fios possam ser
feitos de vários tipos de metais, muitas redes usam o cobre porque sua baixa resistência à
corrente elétrica significa que os sinais podem viajar mais longe. Assim, os profissionais de
rede usam às vezes o termo cobre como sinônimo de fio.
O tipo de fiação usado em redes de computadores é escolhido para minimizar a
interferência. A interferência surge porque um sinal elétrico que viaja através de um fio age
como uma estação de rádio em miniatura. O fio emite um pouco de energia eletromagnética,
que pode viajar através do ar. Além disso, sempre que encontra um outro fio, uma onda
eletromagnética gera uma corrente elétrica pequena no fio. A quantidade de corrente gerada
depende da força da onda eletromagnética e da posição física do fio. Geralmente, os fios não
chegam perto o suficiente para fazer da interferência um problema. Por exemplo, se dois fios
estão dispostos próximos um do outro em um ângulo reto e um sinal passa através de um dos
fios, a corrente gerada no outro é quase indetectável. Entretanto, quando dois fios são
colocados juntos em paralelo, um sinal forte enviado em um fio gerará um sinal similar no
outro. Já que os computadores não podem distinguir entre sinais gerados acidentalmente e
as transmissões normais, a corrente gerada pode ser forte o bastante para transtornar ou
impedir um comunicação normal. Infelizmente, o problema da interferência é sério porque
os fios que compreendem uma rede de dados são freqüentemente colocados em paralelo com
muitos outros fios. Por exemplo, os fios de um computador podem encontrar-se ao lado dos
fios de outros computadores ou dos fios para outras redes.
Para minimizar a interferência, as redes usam um de dois tipos básicos de fiação: Par
Trançado ou Cabo Coaxial.
2.1.1.1
Cabo de Par Trançado
A fiação trançada do par é usada também por sistemas de telefonia. O termo se
deve ao fato de que cada fio é revestido com um material isolador, e então um par dos
fios é torcido, tal como mostra a Figura 2.1.
48
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura 2.1 – Par Trançado.
As torções simples mudam as propriedades elétricas do fio e ajudam o mesmo a
se tornar apropriado para o uso em uma rede. Em primeiro lugar, uma vez que limitam
a energia eletromagnética que o fio emite, as torções ajudam a impedir que as correntes
elétricas no fio irradiem energia que interfere com os outros fios. Em segundo, já que
fazem o par dos fios menos suscetível à energia eletromagnética, as torções ajudam a
impedir que os sinais em outros fios interfiram com o par.
2.1.1.2
Cabo Coaxial
O segundo tipo de fiação de cobre usado nas redes é o cabo coaxial, o mesmo tipo
de fiação usado para a TV a cabo. O coaxial fornece ainda maior proteção contra
interferência do que o par trançado. Em vez de trançar fios um ao redor do outro para
limitar a interferência, um cabo coaxial consiste em um único fio cercado por um
protetor de metal mais pesado tal como ilustrado na Figura 2.2.
Figura 2.2 – Cabo Coaxial.
O protetor de metal pesado em um cabo coaxial forma um cilindro flexível em
torno do fio interno que fornece uma barreira à irradiação eletromagnética. A barreira
isola o fio interno de duas maneiras: protege o fio da energia eletromagnética entrante
que poderia causar a interferência e evita que sinais no fio interno irradiem energia
eletromagnética que poderia afetar outros fios. Uma vez que cerca o centro do fio
uniformemente em todos os lados, o protetor em um cabo coaxial é especialmente eficaz.
O cabo pode ser colocado em paralelo com outros cabos ou dobrado e torcido em torno
dos cantos. O protetor permanece sempre no lugar.
A idéia de usar um protetor para proteger os fios foi aplicada também ao par
trançado. Um cabo par trançado protegido consiste em um par de fios cercado por um
protetor de metal. Cada fio é revestido com um material isolante, de forma que o metal
em um fio não toque o metal em outro. O protetor forma meramente uma barreira que
49
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
impede que a irradiação eletromagnética entre ou escape. A proteção adicional
fornecida pelo cabeamento com cabo coaxial ou par trançado protegido é
freqüentemente usada quando os fios de uma rede passam perto de equipamentos que
geram campos elétricos ou magnéticos fortes (por exemplo: um ar condicionado de
grande porte).
2.1.2
Fibras de Vidro
As redes de computadores usam também fibras de vidro flexíveis para transmitir dados.
Conhecido como fibra óptica, o meio usa a luz para transportar dados. A fibra de vidro em
miniatura é revestida de plástico que permite que a fibra se dobre sem quebrar. Um
transmissor em uma extremidade de uma fibra usa um diodo emissor de luz (light emitting
diode, LED) ou um laser para enviar pulsos de luz pela fibra. Um receptor no extremo oposto
usa um transistor sensível à luz para detectar os pulsos.
As fibras ópticas têm quatro vantagens principais sobre fios. Em primeiro lugar, como
usam luz, as fibras ópticas não causam interferência elétrica em outros cabos nem são
suscetíveis à interferência elétrica. Em segundo lugar, como as fibras de vidro podem ser
fabricadas para refletir a maioria da luz interna, uma fibra pode carregar um pulso de luz
muito mais longe do que um fio de cobre pode carregar um sinal. Em terceiro lugar, já que
a luz pode codificar mais informação do que sinais elétricos, uma fibra óptica pode carregar
mais informação do que um fio. Em quarto lugar, ao contrário da eletricidade, que requer
sempre um par de fios conectado em um circuito completo, a luz pode viajar de um
computador a outro sobre uma única fibra.
Apesar de suas vantagens, as fibras ópticas têm algumas desvantagens. Primeiramente,
a instalação de uma fibra requer um equipamento especial que faça o polimento das
extremidades para permitir que a luz passe completamente. Em segundo lugar, se uma fibra
quebrar dentro do revestimento plástico, encontrar onde ocorreu o problema é difícil. Em
terceiro lugar, reparar uma fibra quebrada é difícil porque um equipamento especial é
necessário para juntar duas fibras de modo que a luz possa passar através da junção.
2.1.3
Rádio
Além de seus usos para transmissão pública dos programas de rádio e de televisão e
para uma comunicação privada com dispositivos como telefones portáteis, podem ser usadas
radiações eletromagnéticas para transmitir dados de computador. Informalmente, diz-se que
uma rede que usa ondas de rádio eletromagnéticas opera na frequência de rádio, e as
transmissões são chamadas de transmissões RF. Ao contrário das redes que usam fios ou
fibras ópticas, as redes que usam transmissão de RF não requerem uma conexão física direta
entre computadores. Em vez disso, cada computador participante está conectado a uma
antena, que pode tanto transmitir como receber RF.
2.1.4
Satélites
Embora as transmissões de rádio não se curvem de acordo com a superfície da terra, a
tecnologia RF pode ser combinada com satélites para fornecer comunicação através de
distâncias mais longas. Por exemplo, a Figura 2.3 ilustra como um satélite de comunicações
na órbita em torno da terra pode fornecer uma conexão de rede através de um oceano. O
satélite contem um transponder que consiste em um receptor de rádio e um transmissor. O
transponder aceita uma transmissão de rádio entrante, amplifica-a e transmite o sinal
amplificado para a terra em um ângulo ligeiramente diferente do que chegou. Uma estação
terrestre em um lado do oceano transmite um sinal ao satélite, que o envia então a uma estação
no outro lado. Devido ao fato de ser caro colocar um satélite de comunicações em órbita, um
único satélite contém geralmente os múltiplos transponders que operam independentemente
50
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
(tipicamente seis a doze). Cada transponder usa uma frequência de rádio diferente (isto é,
canal), possibilitando que comunicações múltiplas prossigam simultaneamente. Além disso,
como um único canal do satélite pode ser compartilhado, ele pode servir a muitos clientes.
Figura 2.3 – Comunicação Via Satélite.
2.1.4.1
Satélites Geossíncronos ou Geoestacionários
Os satélites de comunicação podem ser agrupados em categorias de acordo com a
altura em que orbitam. O tipo mais fácil de entender é conhecido como satélites
geossíncronos ou geoestacionários. O nome se deve ao fato de que um satélite
geossíncrono é colocado em uma órbita que seja sincronizada exatamente com a rotação
da terra. Tal órbita é classificada como uma órbita geoestacionária da terra
(Geostacionary Earth Orbit – GEO) porque, quando visto da terra, o satélite parece
permanecer exatamente no mesmo ponto no céu o tempo todo. Por exemplo, um satélite
geoestacionário em órbita circular acima do equador, sobre o Oceano Atlântico, pode
ser usado para repassar transmissões entre Europa e América do Norte a qualquer hora,
porque permanece acima do mesmo ponto sobre o oceano.
As leis da física determinam a distância exata da terra na qual um satélite deve
orbitar para permanecer sincronizado com a rotação da terra. A distância necessária para
a órbita geossíncrona é aproximadamente 35.800 quilômetros. Os engenheiros às vezes
se referem à distância como a órbita elevada da terra. No Apêndice B é mostrado o
cálculo da órbita de um satélite.
É interessante perceber que há uma quantidade limitada de “espaço” disponível na
órbita geossíncrona acima do equador, porque os satélites de comunicação que usam
uma mesma frequência devem ser separados um do outro para evitar a interferência. A
separação mínima depende do poder dos transmissores, mas requer geralmente uma
separação angular entre 4º e 8º. Assim, o círculo inteiro de 360º acima do equador pode
acomodar somente 45 a 90 satélites.
2.1.4.2
Satélites de Baixa Órbita da Terra
Uma segunda categoria de satélites de comunicação opera no que é chamada de
Órbita Baixa da Terra (Low Earth Orbit, LEO), o que significa que orbitam algumas
centenas de quilômetros acima da terra (normalmente 320 a 645 quilômetros). A
principal desvantagem de uma órbita de baixa altitude se encontra na velocidade em que
um satélite deve viajar. Como seus períodos de rotação são mais rápidos do que a
rotação da terra, os satélites em órbitas mais baixas não permanecem estacionários acima
de um único ponto na superfície da terra. Em vez disso, um observador que esteja na
terra e que olhe para cima através de um telescópio vê tais satélites moverem-se através
51
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
do céu. De fato, um único satélite pode completar uma órbita inteira em
aproximadamente 1,5 horas.
Do ponto de vista de um provedor de comunicações, ter um satélite que não
aparenta permanecer estacionário causa problemas. Em primeiro lugar, o satélite pode
ser usado somente durante o tempo em que sua órbita passa entre duas estações
terrestres. Em segundo lugar, a utilização máxima requer sistemas complexos de
controle que se movam continuamente de forma que as estações terrestres apontem
diretamente para o satélite.
2.1.4.3
Arrays de Satélites de Baixa Órbita da Terra
Foi inventado um esquema interessante que permite uma comunicação contínua
através de satélites em órbita baixa. Em vez de focalizar em um satélite, o esquema
requer que uma companhia de comunicação lance um conjunto de satélites em órbitas
baixas da terra como mostra a Figura 2.4. Embora um dado satélite orbite rapidamente,
o conjunto de órbitas é escolhido de modo que em cada ponto na terra exista ao menos
um satélite acima a qualquer momento (são necessários sessenta e seis satélites para
fornecer serviço sobre a superfície inteira da terra). Do ponto de vista de um observador
na terra, parece que um satélite emerge de um ponto no horizonte, voa em cima, e então
desaparece em um pondo do horizonte oposto. A chave do esquema se encontra no
conjunto de órbitas que garante que ao menos um satélite esteja disponível em qualquer
momento.
Figura 2.4 – Array de Satélites.
Além dos transponders usados para comunicação com as estações da terra, um
array de satélites de órbita baixa contém equipamento de rádio usado para comunicarse com outros satélites no array. Enquanto se movem através de suas órbitas, os satélites
se comunicam um com o outro e concordam no encaminhamento de dados. Por
exemplo, suponha que, em um dado momento, um satélite viajando sobre a Europa
receba uma transmissão de uma estação terrestre na Alemanha, destinada para um local
dos Estados Unidos. O satélite receptor poderia repassar uma transmissão a um outro
satélite, que a repassaria a um terceiro que pode alcançar uma estação terrestre nos
Estados Unidos próxima ao destino. Com o passar do tempo, os satélites vão adiante e
os novos satélites tomam seu lugar, significam que uma transmissão mais tarde da
Alemanha para os Estados Unidos poderia ter que atravessar três outros satélites no
array.
2.1.5
Microondas
A radiação eletromagnética além da faixa de frequência usada por rádio e televisão
pode ser usada também para transportar informações. Em particular, muitas empresas de
52
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
telefonia interurbana usam transmissões de microonda para carregar conversas telefônicas.
Umas poucas empresas de grande porte instalaram também sistemas de comunicação de
microonda como parte do sistema de rede da empresa.
Embora as microondas sejam meramente uma versão das ondas de rádio com
frequência mais elevada, elas se comportam de maneira diferente. Em vez de transmitir em
todas as direções, uma transmissão de microonda pode ser apontada em uma única direção,
impedindo que outros interceptem o sinal. Além disso, a transmissão de microondas pode
carregar mais informações do que transmissões de RF de frequência mais baixa. Entretanto,
já que as microondas não podem penetrar em estruturas de metal, a transmissão de
microondas trabalha melhor quando há um trajeto desobstruído entre o transmissor e o
receptor. Como consequência, a maioria das instalações baseadas em microondas consiste
em duas torres que são mais altas do que os edifícios e a vegetação circundantes, cada uma
com um transmissor de microondas apontado diretamente para um receptor de microondas
no outro.
2.1.6
Infravermelho
Os controles remotos sem-fio usados com dispositivos tais como televisões e aparelhos
de som comunicam-se através de transmissões em infravermelho. O infravermelho é
limitado a uma área pequena (por exemplo, uma única sala) e exige geralmente que o
transmissor esteja apontando para o receptor. O hardware infravermelho é barato se
comparado a outros mecanismos, não requer uma antena.
As redes de computadores podem usar a tecnologia infravermelha para a transmissão
de dados. Por exemplo, é possível equipar uma sala grande com uma única conexão
infravermelha que forneça acesso à rede a todos os computadores na sala. Os computadores
podem permanecer em contato com a rede enquanto são movidos dentro da sala. As redes
de infravermelho são especialmente convenientes para computadores pequenos e portáteis
porque o infravermelho oferece as vantagens de comunicação sem-fio sem necessitar do uso
de antenas. Assim, um computador portátil que use infravermelho pode ter todo o hardware
de comunicação embutido.
2.1.7
Luz de Laser
Já mencionamos que a luz pode ser usada para comunicação através de fibras ópticas.
Um feixe de luz pode também ser usado para carregar dados através do ar. Como um sistema
de comunicação de microondas, uma comunicação que use luz consiste em dois locais, um
que possua um transmissor e um outro que possua um receptor. O equipamento de
comunicação é montado em uma posição fixa, frequentemente em uma torre, e alinhado de
forma que o transmissor em uma posição envie seu feixe de luz diretamente ao receptor na
outra. O transmissor usa um laser para gerar o feixe de luz porque um feixe de laser coerente
permanecerá focalizado sobre uma longa distância.
Como uma transmissão de microondas, a luz de um laser deve viajar em uma linha reta
e não deve ser obstruída. Infelizmente, um feixe de laser não pode penetrar na vegetação ou
em condições climáticas como neve e névoa. Assim, a transmissão via laser tem uso
limitado.
2.2
Classificação de Redes
Como foi visto, dependendo do volume de tráfego e do alcance que se necessita realizar
uma comunicação, precisa-se escolher o meio adequado para realizar esta transferência. Não
pode-se esquecer também dos fatores que podem interferir no sinal durante a comunicação.
Devido a isso, as redes são classificadas de acordo com a sua abrangência, como vemos abaixo:
53
Apostila de Fundamentos de Redes de Computadores
2.3
Prof: Ricardo Quintão

LAN: abreviatura de Local Area Network, que significa Rede de Área Local É uma
rede que tem como característica principal o alcance do porte de uma
empresa. Limitando-se a uma distância da ordem de poucos quilômetros (2,5
Km para redes Ethernet)

MAN: abreviatura de Metropolitan Area Network, que significa Rede de Área
Metropolitana. Esta rede tem como característica básica o alcance em uma
área do porte de uma cidade.

WAN: abreviatura de Wide Area Network, que significa Rede Geograficamente
distribuída. Possui como característica a interligação de longas distâncias,
como estados, países e continentes.
Topologia de Redes Locais (LAN)
Já que muitas tecnologias de LAN têm sido inventadas, é importante conhecer como as
tecnologias específicas são semelhantes e como elas diferem. Para ajudar a entender as
semelhanças, cada rede é classificada em uma categoria de acordo com a sua topologia ou forma
geral. Esta seção descreve as três topologias usadas mais frequentemente com LANs.
2.3.1
Estrela
Uma rede usa uma topologia de estrela se todos os computadores se prendem a um
ponto central. A Figura 2.5 ilustra o conceito.
Figura 2.5 – Topologia em Estrela.
Uma vez que uma rede em forma de estrela se assemelha a uma roda, o centro de uma
rede em estrela é chamado de centralizador. Um centralizador típico consiste em um
dispositivo eletrônico que aceita dados de um computador remetente e os encaminha para o
computador de destino. No Capítulo 4 descreveremos alguns equipamentos que podem
realizar o trabalho de centralizador.
A Figura 2.5 mostra uma rede de estrela idealizada. Na prática, as redes em estrela têm
raramente uma forma simétrica em que o centralizador esteja localizado a uma distância igual
de todos os computadores. Em vez disso, frequentemente um centralizador reside em uma
localização separada dos computadores acoplados a ele. Por exemplo, os computadores
podem residir em escritórios individuais, enquanto o centralizador reside em uma localização
acessível para o pessoal responsável pela administração da rede.
2.3.2
Anel
Na topologia em anel, os computadores são organizados de forma que sejam
conectados em um loop fechado. Um cabo conecta o primeiro computador a um segundo
computador, outro cabo conecta o segundo computador a um terceiro, e assim por diante, até
que um cabo conecte o computador final de volta ao primeiro. O nome anel surge porque
54
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
alguém pode imaginar os computadores e os cabos que os conectam organizados em um
círculo tal como mostra a Figura 2.6.
Figura 2.6 – Topologia em Anel.
É importante entender que o anel, assim como a topologia em estrela, refere-se a
conexões lógicas entre computadores, não orientação física. Os computadores e as conexões
em uma rede em anel não precisam ser organizados em um círculo. Em vez disso, o cabo
entre um par de computadores em uma rede em anel pode seguir um corredor ou subir
verticalmente de um andar de um edifício para outro. Além disso, se um computador está
longe de outros do anel, os dois cabos que conectam o computador distante podem seguir o
mesmo caminho físico.
2.3.3
Barramento
Uma rede que usa uma topologia de barramento normalmente consiste em um único
cabo longo ao qual computadores se acoplam. Qualquer computador acoplado a um
barramento pode enviar um sinal através do cabo, e todos os computadores receberão o sinal.
A Figura 2.7 ilustra a topologia. Como todos os computadores ligados pelo cabo podem
detectar um sinal elétrico, qualquer computador pode enviar dados a qualquer outro
computador. Naturalmente, os computadores acoplados a uma rede de barramento devem se
coordenar para assegurar que somente um computador envia um sinal a cada momento para
evitar o caos.
Figura 2.7 – Topologia de Barramento.
55
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Modelo OSI
Quando as redes começaram a ser desenvolvidas, questões de interoperabilidade e projeto
começaram a surgir. Visando a essas questões e visando também acomodar a interconexão de redes
proprietárias e heterogêneas, a ISO desenvolveu em 1974 uma arquitetura e modelo de referência para
servir como base para atividades futuras de padronização de redes. O modelo resultante foi chamado
formalmente de modelo de referencia OSI (Open Systems Interconnect – Interconexões de Sistemas
Abertos). O modelo OSI apresenta um conjunto detalhado de padrões para descrever uma rede. Ele
forma um arcabouço conceitual para o desenvolvimento de padrões para protocolos de redes.
Uma das características mais interessantes do modelo OSI é a definição e codificação formal do
conceito de arquitetura de rede em camadas. São utilizadas camadas descritivas operacionalmente bemdefinidas que descrevem o que acontece em cada estágio no processamento de dados a serem
transmitidos. Esse conceito de camadas é extremamente importante, uma vez que as redes são sistemas
não-triviais. Em função da natureza complexa de uma rede, é extremamente difícil projetar uma
arquitetura que:

Tenha alto grau de conectividade;

Seja confiável;

Seja fácil de implementar, usar e modificar.
As camadas ajudam a reduzir esta complexidade. Organizando as funções de uma rede em uma
série de camadas hierárquicas, o projeto de uma rede é bastante simplificado. Por exemplo, uma
abordagem baseada em camadas possibilita que as funções e serviços de uma camada sejam
completamente independentes e isolados das outras camadas.
Com isso, podemos alterar os recursos de uma camada sem mudar significativamente a arquitetura
como um todo. À medida que novas tecnologias vão surgindo para uma nova camada, elas podem ser
implementadas sem afetar as demais camadas. Teoricamente, uma camada pode ser completamente
removida, alterada e reinserida sem afetar as outras camadas acima ou abaixo dela. As camadas em
redes são similares à programação modular. Assim como os programas grandes de computador são
quebrados em módulos de programa independentes e separados, as camadas subdividem uma
arquitetura de rede em componentes independentes e separados. Cada uma delas é responsável por um
conjunto específico de funções e serviços. Protocolos específicos definem os serviços e a maneira como
esses serviços são disponibilizados.
As camadas do modelo OSI são (de cima para baixo, iniciando pela camada 7 (a mais alta) e indo
até a camada 1 (a mais baixa): aplicação, apresentação, sessão, transporte, rede, enlace de dados e física.
Cada camada é composta de duas partes: definição de serviços, que define o tipo de serviços oferecidos
pela camada, e especificação de protocolo, que detalha as regras que governam a implementação de um
serviço específico em particular. As camadas mais baixas oferecem serviços para as camadas mais
altas. Geralmente, essas camadas definem os recursos de comunicação necessários para que ocorra a
comunicação entre dois dispositivos quaisquer. A Figura 3.1 apresenta o modelo OSI e a Tabela 3.1
mostra a finalidade de cada camada.
56
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Funcionalidades das Camadas do Modelo OSI
Camadas
Funcionalidades


Aplicação (7)


Apresentação (6)










Sessão (5)






Transporte (4)
Rede (3)
Enlace (2)
Física (1)


















Consiste de protocolos que definem as aplicações específicas orientadas para usuários, como correio
eletrônico, transferência de arquivos e terminal virtual.
Alguns exemplos são: FTAM (File Transfer, Access and Management) para manipular arquivos
remotamente; X.400 (para correio eletrônico) e CMIP (Common Management Information Protocol)
para gerenciamento de rede.
Acrescenta um cabeçalho durante a transmissão dos dados para que a camada de aplicação da
máquina de destino saiba o que fazer.
Retira o cabeçalho durante uma recepção colocada pela máquina de origem para transmitir os dados
ao aplicativo.
Trata de formatos de dados, traduções e conversões de código.
Cuida da sintaxe e semântica dos dados transmitidos.
Codifica mensagens em formatos adequados para transmissão eletrônica.
Compressão e criptografia dos dados efetuados nessa camada.
Recebe mensagens da camada de aplicação, formata essas mensagens e as transmite para a camada
de sessão.
Na prática essa camada é frequentemente incorporada na camada de aplicação.
Acrescenta um cabeçalho durante a transmissão dos dados para que a camada de apresentação da
máquina de destino saiba o que fazer.
Retira o cabeçalho durante uma recepção colocada pela máquina de origem para transmitir.
Trata da coordenação entre processos de comunicação entre os nós.
Responsável pelas regras de diálogo (por exemplo, verificar se uma conexão permite comunicação
em half duplex ou full duplex), pela sincronização do fluxo de dados e pelo restabelecimento da
conexão em caso de falha.
Alguns exemplos são o AppleTalk Data Stream Protocol para transferência confiável de dados entre
dois nós, o NetBEUI (uma extensão do NetBIOS) e o Printer Access Protocol para acessar uma
impressora PostScript em uma rede AppleTalk.
Usa a camada de apresentação acima dela e a camada de transporte abaixo dela.
Acrescenta um cabeçalho durante a transmissão dos dados para que a camada de sessão da máquina
de destino saiba o que fazer.
Retira o cabeçalho durante uma recepção colocada pela máquina de origem para transmitir.
Trata da entrega de dados sem erros.
Aceita dados da camada de sessão, quebra os dados em pacotes menores, se necessário, passa os
pacotes para a camada de rede e garante que eles cheguem ao destino completos e corretos.
Acrescenta um cabeçalho durante a transmissão dos dados para que a camada de transporte da
máquina de destino saiba o que fazer.
Retira o cabeçalho durante uma recepção colocada pela máquina de origem para transmitir.
Responsável pela rota entre redes para que os dados sejam entregues na rede de destino.
Resolve todos os problemas inerentes à transmissão de dados entre redes heterogêneas.
As mensagens formatadas são denominadas pacotes.
Acrescenta um cabeçalho e um fecho durante a transmissão dos dados para que a camada de rede da
máquina de destino saiba o que fazer.
Retira o cabeçalho e o fecho durante uma recepção colocada pela máquina de origem para transmitir.
Responsável pela transferência de dados entre pontos de uma mesma rede.
Trata de detecção de erros, “enquadramento” e controle de fluxo.
Resolve problemas relativos a quadros danificados, perdidos ou duplicados.
As mensagens formatadas são denominadas quadros em vez de pacotes.
Acrescenta um cabeçalho e um fecho durante a transmissão dos dados para que a camada de enlace
da máquina de destino saiba o que fazer.
Retira o cabeçalho e o fecho durante uma recepção colocada pela máquina de origem para transmitir.
Responsável por transmitir bits através de uma ligação; transporta energia.
Aceita quadros da camada de enlace de dados e traduz os bits em sinais do meio físico abaixo dela.
Cuida de questões como o tipo de cabo em uso, o tipo de conector (ou seja, a interface) que liga um
dispositivo a um meio e o esquema de sinalização.
Acrescenta um cabeçalho e um fecho durante a transmissão dos dados para que a camada de física
da máquina de destino saiba o que fazer.
Retira o cabeçalho e o fecho durante uma recepção colocada pela máquina de origem para transmitir.
Tabela 3.1 – Funcionalidades das Camadas do Modelo OSI.
57
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura 3.1 – Modelo OSI em Camadas.
3.1
Tipos de Serviços OSI
Há dois tipos diferentes de serviços oferecidos pelas camadas OSI:

Orientados a conexão.

Não orientados a conexão.
Algumas camadas também incluem multiplexação como um serviço adicional, mas isso não
necessariamente cruza todas as camadas da arquitetura. Os serviços ficam disponíveis nos
SAPs (Service Access Points – Pontos de Acesso a Serviços), tendo cada SAP um endereço
correspondente.
3.1.1
Serviço Orientado a Conexão
Esse tipo de serviço sugere que antes da transferência de dados uma ligação física (ou
virtual) se estabeleça entre nós de emissão e recepção. Essa ligação permanece efetiva
durante toda a sessão. Quando a sessão se completa, a ligação é removida. As características
de um serviço orientado a conexão incluem:

Desperdício de largura de banda, uma vez que a ligação permanece mesmo
durante intervalos da transmissão;

Alto risco potencial de “prender” a rede, pois há sempre a possibilidade de uma
ligação não ser concluída;

Garantia de chegada sequencial dos pacotes ao nó de destino (aspecto positivo).
O sistema telefônico é um exemplo de serviço orientado a conexão. Você estabelece
uma conexão (disca uma número) e, uma vez feita a conexão, transfere dados pelo circuito
(começa a falar). A comunicação ocorre na sequência apropriada (as palavras e sentenças
são recebidas na ordem correta). No final da transferência a conexão é liberada (o telefone é
desligado liberando o circuito). Observe as questões de desperdício de largura de banda e de
“prender” a rede. Se uma conexão telefônica é efetuada, mas ninguém fala, a largura de
banda é desperdiçada porque o circuito fica estabelecido sem que ninguém o utilize. Alguém
58
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
tentando contatar esse aparelho durante esse período de silêncio ouviria um sinal de ocupado
– uma conexão “presa”.
3.1.2
Serviço não Orientado a Conexão
Esse tipo de serviço é diferente do serviço orientado por conexão, pois nenhuma ligação
física se estabelece entre os nós emissor e receptor antes da transmissão dos dados. Em vez
disso, uma mensagem é quebrada em pacotes e encaminhada pela rede. Cada pacote é
independente dos outros pacotes, que carregam partes da mensagem e, portanto, precisam
carregar um endereço de destino.
Os pacotes podem chegar fora de ordem. Imagine uma agencia de correios como um
provedor de serviços não orientado a conexão. Se você envia a alguém cinco cartas separadas
e enumeradas de 1 a 5, precisa colocar o endereço de recebimento em cada uma delas. Uma
vez remetidas, as cartas não seguirão necessariamente a mesma rota de entrega, e é possível
que sejam recebidas fora de sequência (por exemplo, a carta 3 é recebida antes da carta 2).
Um serviço não orientado a conexão pode ser confiável ou não-confiável. Um serviço nãoconfiável não requer aviso do recebimento dos dados provenientes do receptor para o
emissor. Isso se chama serviço de datagramas como foi visto na Seção 1.1.6.3.2. Um serviço
confiável requer uma confirmação de recebimento. Isso equivale a comparar um serviço de
remessa “regular” com uma remessa registrada com aviso de recebimento.
Um dos melhores e mais práticos exemplos desses serviços é a Internet. Vamos ilustrar
os dois serviços enviando uma mensagem pela Internet. Antes de fazer isso, entretanto,
precisamos de um pouco de metodologia de endereçamento.
Para enviar uma mensagem de um nó a outro pela Internet, três endereços diferentes
são necessários. O primeiro é o endereço de hardware, que identifica de forma única cada
nó. Endereços de hardware são fornecidos pela camada de enlace de dados. O segundo é o
endereço de rede, que identifica a rede à qual o nó está conectado. No TCP/IP, esse é
chamado de endereço de internet ou endereço IP (Internet Protocol). Endereços de rede
operam na camada de rede. Cada nó da rede que faz parte da Internet tem um endereço IP
único. O terceiro endereço é o endereço da porta, que identifica de forma única uma
aplicação específica de usuário, como correio eletrônico. Todas as aplicações de rede têm
identificadores correspondentes denominados número de porta.
Para enviar uma mensagem de um nó a outro, uma mensagem é primeiramente criada
na camada de aplicação. Ela passa pelos formatos necessários enquanto desce pelas camadas.
Quando a mensagem atinge a camada de rede, um endereço de rede é alocado para ela. Esse
endereço de rede identifica a rede específica onde está conectado o nó de destino. A camada
de rede determina o caminho que a mensagem deve seguir para atingir o nó de destino. Ela
também encapsula os pacotes como datagramas IP e os passa à camada de enlace de dados.
Na camada de enlace de dados, o endereço de hardware do nó de destino é adicionado a cada
pacote. Esse endereço identifica de forma única a localização do nó de destino na rede atual.
A camada de enlace de dados, dentre outras tarefas, coloca o pacote na forma de quadros,
que são semelhantes aos pacotes, mas existem em níveis mais baixos, e verifica a integridade
de cada quadro. Os quadros são então passados para a camada física, que os coloca no meio
de transmissão.
3.2
OSI Hoje
Do início até meados dos anos 90, a literatura sobre redes estava repleta de artigos
apresentando as vantagens e virtudes do modelo OSI. Muitos administradores de redes
desenvolveram estratégias para migrar suas redes para o modelo OSI, e alguns chegaram a
professar que todas as redes deveriam dar suporte a um único protocolo: OSI. Até mesmo o
59
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
governo dos Estados Unidos adotou o OSI ao estabelecer o perfil GOSIP (Government OSI
Profile), determinando que todas as organizações governamentais deveriam adquirir produtos
compatíveis com OSI a partir de 1992. apesar de tudo isso, o OSI nunca emergiu como “o”
protocolo de redes, em particular nos Estados Unidos. Aparentemente o modelo OSI foi
atropelado pelo TCP/IP, que serve como suíte de protocolos da Internet. Em 1995, o GOSIP foi
modificado para incluir o TCP/IP como uma suíte de protocolos aceitável para GOSIP, e hoje,
embora os protocolos OSI estejam em uso, sua presença é pálida se comparada com a do TCP/IP.
Hoje, os usos mais notáveis do OSI como implementação de suíte de protocolos estão na Rede de
Transportes Aéreos mundial e em redes de interoperação entre companhias de fornecimento de
energia elétrica. Diversas razões (naturalmente que especulativas) pelas quais o modelo OSI
nunca se materializou como “o” protocolo de redes são apresentadas a seguir.

Desenvolvimento de Padrões: TCP/IP e OSI são diferentes quanto à forma como
seus padrões são desenvolvidos e testados. Sendo uma organização formal para
padrões internacionais, a ISO possui uma inércia1 considerável, e o processo de
desenvolver padrões é difícil. Desde seu desenvolvimento inicial, o OSI foi
projetado para fazer tudo e segundo uma estratégia de cima para baixo.
Contrastando com essa abordagem, o TCP/IP dá suporte a um processo aberto de
participação dos usuários para preparar seus padrões. O desenvolvimento ou
modificação de protocolos TCP/IP são feitos quando necessário. Além disso,
pesquisas, desenvolvimento e testes dos protocolos podem ser efetuados em uma
rede em produção; o procedimento ocorre através de documentos de requisição de
comentários (RFC) e a distribuição dos padrões TCP/IP é gratuita. Em contraste, os
protocolos OSI têm direitos autorais e taxas de aquisição.

Esnobismo: A política do TCP/IP foi dirigida para equipamentos conectados nos
Estados Unidos – especificamente organizações acadêmicas, de pesquisas,
governamentais e militares. O modelo OSI, por outro lado, foi produto de um corpo
internacional de padronizações (ISO). Consequentemente, muitos usuários na
Europa encaravam o TCP/IP como um padrão específico dos Estados Unidos e
queriam adotar o OSI. Nos Estados Unidos, entretanto, os usuários não queriam
algo “diferente” e ficaram com o TCP/IP.

Versatilidade e Robustez: Comparado ao modelo OSI, o TCP/IP é simples, tem uma
longa história (mais de 25 anos), é não-proprietário, foi desenvolvido com base em
uma abordagem pragmática e vai ao encontro das necessidades de uma população
diversificada que incluía pesquisadores, educadores e pessoas de negócios.
Algumas pessoas, como por exemplo, Vint Cerf, considerado um dos pais da
Internet e que professa que se tenha “IP sobre tudo”, considera o TCP/IP a
linguagem universal das redes.

A Internet: O TCP/IP está totalmente vinculado à Internet.
Não obstante, o modelo OSI teve um impacto amplo nas redes, inclusive no TCP/IP.
Embora sua aceitabilidade tenha diminuído consideravelmente durante a segunda metade dos anos
90, o modelo OSI continua a fornecer um padrão detalhado para descrever uma rede. É com essa
perspectiva que a comunidade de projeto de redes continua a considerar o modelo OSI como
estrutura conceitual teórica para o desenvolvimento de redes e suas arquiteturas.
1
Termo da física que indica a dificuldade de um objeto entrar em movimento. Neste caso se relaciona com a demora em
realizar um determinado serviço.
60
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Dispositivos de Conectividade
Ao montar uma rede, alguns dispositivos são necessários para realizar a transferência dos dados
da máquina de origem com a máquina de destino. Abaixo seguem os dispositivos de conectividade
mais comuns para permitir a comunicação entre máquinas.
4.1
Placas de Rede (NIC – Network Interface Card)
As placas de redes são os dispositivos que conectam o computador ao meio físico
responsável pela transferência dos dados. Ela possui uma identificação que será utilizada para
reconhecer se os dados que estão trafegando pelo meio são para ela ou não. Este endereço é
normalmente composto por 48 bits, sendo que os 24 bits mais significativos são escolhidos por
um órgão internacional de forma que não existam endereços repetidos. Já os 24 bits menos
significativos serão atribuídos pelo fabricante do equipamento. Cabe a este fabricante não utilizar
números repetidos. Esta identificação é conhecida como endereço MAC (Media Access Control
– Acesso de Controle ao Meio). Este equipamento trabalha na camada de enlace do modelo OSI.
4.2
Modems
Os Modems possuem uma finalidade semelhante a da placa de rede, sendo que neste caso,
ele irá conectar o computador ao sistema telefônico. Para isso, ele utiliza uma portadora de
frequência audível, pois o sistema de telefonia foi feito para a transmissão de voz. Em função dos
dados a serem transmitidos, a portadora é modulada, garantindo que os dados não serão “barrados”
pelo sistema de telefonia. Esta é a função moduladora.
Quando os dados chegam ao modem, ele efetua o processo inverso, retirando os bits da
portadora modulada que está chegando. Esta é a função demoduladora. Este mecanismo já foi
comentado na Seção 1.1.8.1. Este equipamento trabalha na camada física do modelo OSI.
4.3
Repetidores
Os repetidores, que nos sistemas digitais também possuem a capacidade de regenerar o sinal,
tem como finalidade inserir mais energia no sinal de um determinado meio para que ele possa
percorrer distâncias maiores. Por exemplo: vamos supor que um determinado cabo de rede possui
um grau de atenuação do sinal permitindo que ele seja transmitido com a certeza de ser
interpretado corretamente apenas por uma distância de 500 metros. Se precisarmos colocar um
equipamento em uma distância superior a essa, será necessária a inserção de um repetidor para
que o sinal seja realimentado e então consiga chegar até o seu destino. Não existe um limite na
quantidade de repetidores que podem ser colocados, logo o alcance de uma rede pode ser qualquer
um, porém, dependendo do método utilizado para o acesso ao meio, determinados limites podem
ser estabelecidos, como será visto no CSMA/CD na Seção 5.1.1.1. Este equipamento trabalha na
camada física do modelo OSI.
4.4
Hubs (Concentradores)
Os hubs possuem a finalidade de interligar diversas máquinas. Ele tem a capacidade de
regenerar o sinal antes de enviar aos equipamentos. A característica mais importante do hub diz
respeito a forma como o sinal é distribuído. Ele funciona como um unificador de equipamentos,
tendo um comportamento semelhante ao de uma rede de barramento. Todo sinal enviado em uma
de suas portas é replicado em todas as outras portas, inclusive na porta que foi feito o envio, para
61
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
que o protocolo CSMA/CD que será visto na Seção 5.1.1.1 possa ser capaz de escutar e verificar
se houve ou não uma colisão. Este dispositivo trabalha na camada física do modelo OSI.
4.5
Bridges (Pontes)
Como um repetidor, uma bridge é um dispositivo eletrônico que conecta dois segmentos de
LAN. Diferentemente de um repetidor, porém, uma bridge manipula quadros completos e usa a
mesma interface de rede que um computador convencional. A bridge escuta o tráfego em cada
segmento usando o modo promíscuo. Quando a bridge recebe um quadro de um segmento, ela
verifica se o quadro chegou intacto, por exemplo, se não houve nenhuma interferência elétrica na
LAN durante a transmissão, e então encaminha uma cópia do quadro para o outro segmento se
necessário. Deste modo, dois segmentos de LAN conectados por uma bridge se comportam como
uma LAN única. Um computador conectado a qualquer um dos segmentos pode enviar um quadro
para qualquer outro computador conectado a um dos dois segmentos. Como cada segmento
suporta conexões de rede padrão e usa o formato de quadro padrão, os computadores não sabem
se eles estão conectados a uma LAN ou a uma LAN com bridge. A Figura 4.1 ilustra o conceito.
Figura 4.1 – Conexão de dois segmentos por uma Bridge.
As bridges se tornaram mais populares que os repetidores porque ajudam a isolar problemas.
Se dois segmentos são conectados por um repetidor e um raio causa uma interferência elétrica em
um deles, o repetidor propagará a interferência para o outro segmento. Em contraste, se a
interferência acontecer em um de dois segmentos conectados por uma bridge, a bridge recebe um
quadro incorretamente formado, que é simplesmente descartado pela bridge, do mesmo modo que
um computador convencional descartaria um quadro com erro. Semelhantemente, uma bridge
não encaminha uma colisão de um segmento para outro. Deste modo, a bridge evita que eventuais
problemas em um segmento afetem o outro.
A maioria das bridges faz mais do que encaminhar uma cópia de cada quadro de uma LAN
para outra. De fato, uma bridge típica consiste em um computador convencional com uma CPU,
memória e duas interfaces de rede. Uma bridge é dedicada a uma única tarefa e não executa
software aplicativo. Em vez disso, a CPU executa um programa contido na sua ROM. A função
mais valiosa que uma bridge executa é a filtragem de quadros. Uma bridge não encaminha um
quadro a menos que seja necessário. Em particular, se um computador acoplado a um segmento
envia um quadro para um computador no mesmo segmento, a bridge não precisa encaminhar uma
cópia do quadro para o outro segmento. Claro, se a LAN suportar broadcast ou multicast, a bridge
deve encaminhar uma cópia de cada quadro broadcast ou multicast para fazer a LAN estendida
operar como uma grande LAN única.
Para determinar se um quadro deve ser encaminhado, uma bridge usa o endereço físico
(MAC address) encontrado no cabeçalho do quadro. A bridge sabe a localização de cada
computador acoplado às LANs que ela conecta. Quando um quadro chega em um segmento, ela
extrai e verifica o endereço de destino. Se o computador de destino está acoplado ao segmento
através do qual o quadro chegou, então o destino e a bridge receberam a mesma transmissão e
esta descarta o quadro sem encaminhar uma cópia. Se o destino não se situa no mesmo segmento
através do qual o quadro chegou, a bridge envia uma cópia do quadro ao outro segmento.
62
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Como uma bridge pode saber quais computadores estão acoplados a quais segmentos? A
maioria das bridges é chamada de adaptativa ou bridges que aprendem (learning bridges) porque
elas aprendem as localizações de computadores automaticamente. Para fazer isso, a bridge escuta
em modo promíscuo os segmentos ligados por ela e forma uma lista de computadores acoplados
a cada segmento. Quando um quadro chega, a bridge executa duas computações. Primeiro, a
bridge extrai o endereço físico de origem do cabeçalho do quadro e acrescenta o endereço à sua
lista de computadores acoplados ao segmento. Segundo, ela extrai o endereço físico de destino
do quadro e usa o endereço para determinar se o quadro deve ser encaminhado. Deste modo,
todas as bridges acopladas a um segmento aprendem que um computador está presente assim que
o computador transmite um quadro. A Figura 4.2 mostra como a bridge da Figura 4.1 pode
aprender as localizações dos computadores.
Evento
Bridge inicializada
U envia para V
V envia para U
Z faz broadcast
Y envia para V
Y envia para X
X envia para W
W envia para Z
Lista do Segmento 1
-------------------------U
U, V
U, V
U, V
U, V
U, V
U, V, W
Lista do Segmento 2
---------------------------------------------------------------------------Z
Z, Y
Z, Y
Z, Y, X
Z, Y, X
Figura 4.2 – Montagem da Tabela de Mapeamento de uma Bridge.
Após cada computador acoplado a um segmento de uma LAN unida por bridges ter enviado
um quadro, as bridges que conectam os segmentos aprendem a localização dos computadores e
usam as informações para filtrarem quadros. Como resultado, o comportamento de uma rede
unida por bridges ligadas por um longo tempo restringe quadros para os mínimos segmentos
necessários.
Obviamente, no momento que a bridge é inicializada, ela não sabe quais computadores estão
acoplados a cada segmento de LAN. Deste modo, uma bridge encaminha quadros destinados a
um computador até que ela determine a localização do computador. De fato, se um computador
não enviasse quaisquer quadros, uma bridge não poderia detectar sua localização e encaminharia
quadros desnecessariamente. Felizmente, os computadores normalmente não permanecem
silenciosos. Um sistema de computador que inclui software de rede normalmente emite pelo
menos um quadro quando o sistema é inicializado. Além disso, a comunicação entre
computadores é normalmente bidirecional, um computador que recebe um quadro normalmente
envia uma resposta. Portanto, as bridges normalmente aprendem as localizações rapidamente.
Como as bridges necessitam analisar o endereço físico de destino, ela trabalha na camada
de enlace do modelo OSI.
4.6
Switches (Comutadores)
O conceito de ligação por bridges ajuda a explicar um mecanismo que está ganhando
popularidade, comutação (switching). Em geral, uma tecnologia de rede é chamada comutada
(switched) se o hardware inclui um dispositivo eletrônico que conecta um ou mais computadores
e permite que eles enviem e recebam dados. Mais especificamente, uma LAN comutada consiste
em um único dispositivo eletrônico que transfere quadros entre muitos computadores.
Fisicamente, um switch se assemelha a um hub. O hub consiste em uma única caixa com
múltiplas portas, cada uma ligada a um único computador. A diferença entre um hub e um switch
surge do modo como os dispositivos operam: um hub simula um meio compartilhado único,
63
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
enquanto que um switch simula uma LAN unida através de bridges com um computador por
segmento. A Figura 4.3 mostra as conexões conceituais dentro de um switch1.
Figura 4.3 – Esquema Lógico de um Switch.
Não é de se surpreender que a vantagem principal de se usar uma LAN comutada em vez
de um hub é a mesma de se usar uma LAN unida por bridges em vez de um segmento único:
paralelismo. Como um hub simula um segmento único compartilhado por todos os computadores,
no máximo dois computadores podem se comunicar através de um hub em um determinado
tempo. Deste modo, a máxima largura de banda possível de um sistema de hub é T, a taxa em
que um único computador pode enviar dados através de um segmento de LAN. Em uma LAN
comutada, entretanto, cada computador tem um segmento de LAN simulado para si próprio. O
segmento está ocupado apenas quando um quadro estiver sendo transferido de/para o computador.
Como resultado, até metade dos computadores conectados a um switch pode estar enviando dados
ao mesmo tempo, desde que cada um deles esteja enviando para um dos computadores que não
está ocupado enviando dados. Deste modo, a largura de banda máxima possível de um switch é
T n
, onde T é a taxa em que um determinado computador pode transmitir dados e n é o número
2
total de computadores conectados ao switch.
Tal como as bridges, os switches necessitam analisar o endereço físico de destino, tendo
então que trabalhar na camada de enlace do modelo OSI.
4.7
Gateways
Um Gateway, ou porta de ligação, é uma máquina intermediária geralmente destinada a
interligar redes, separar domínios de colisão, ou mesmo traduzir protocolos. Cabe ao gateway
traduzir e adaptar os pacotes originários da rede local para que estes possam atingir o destinatário,
mas também traduzir as respostas e devolvê-las ao par local da comunicação. Assim, é freqüente
1
Na prática, um switch não é construído por bridges independentes. Em vez disso, um switch contém processadores e uma
interconexão central (por exemplo, um cross-bar eletrônico). Um processador examina o endereço de um quadro recebido
e então usa a interconexão central para transferir o quadro para a porta de saída correta.
64
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
a utilização de protocolos de tradução de endereços, como o NAT — que é das implementações
de gateway mais simples.
Quando um pacote precisa ser enviado, ele é analisado pela camada de redes da origem.
Esta camada se encarrega de verificar se o endereço de destino pertence a mesma rede da máquina
de origem ou a uma rede diferente. No caso de pertencer a mesma rede, o pacote é transferido
para a camada de enlace que se encarrega de identificar a máquina de destino. Caso o destino
pertença a outra rede, este pacote será entregue a camada de enlace com ordens para encaminhálo ao gateway, que se encarregará de transmiti-lo e adequá-lo a rede destino.
Devido a possibilidade de adequação de protocolos em geral, o gateway pode trabalhar em
qualquer camada a partir da camada de redes inclusive.
4.8
Roteadores
Roteador ou router ou encaminhador é um equipamento usado para fazer a comunicação
entre diferentes redes de computadores, tal como um gateway. Este equipamento provê a
comunicação entre computadores distantes entre si e até mesmo com protocolos de comunicação
diferentes.
Roteadores são dispositivos que operam na camada de redes do modelo OSI. A principal
característica dos roteadores é selecionar a porta mais apropriada para repassar os pacotes
recebidos. Ou seja, encaminhar os pacotes para a melhor rota disponível para um determinado
destino.
Os roteadores inicializam e fazem a manutenção de tabelas de rotas executando processos
e protocolos de atualização de rotas, especificando os endereços e domínios de roteamento,
atribuindo e controlando métricas de roteamento. O administrador pode fazer a configuração
estática das rotas para a propagação dos pacotes ou através de processos dinâmicos executando
nas redes. Os roteadores passam adiante os pacotes baseando-se nas informações contidas na
tabela de roteamento. O problema da configuração das rotas estáticas é que, toda vez que houver
alteração na rede que possa vir a afetar essa rota, o administrador deve refazer a configuração
manualmente. Já o conhecimento de rotas dinâmicas é diferente. Depois que o administrador
fizer a configuração através de comandos para iniciar o roteamento dinâmico, o conhecimento das
rotas será automaticamente atualizado sempre que novas informações forem recebidas através da
rede. Essa atualização é feita através da troca de conhecimento entre os roteadores da rede.
4.9
Access Point (Ponto de Acesso – AP)
O Ponto de Acesso – AP é um equipamento que disponibiliza um sinal eletromagnético para
que diversos aparelhos possam acessá-lo sem a necessidade de uma ligação física entre eles. Ele
cria uma bolha de alcance possibilitando a comunicação sem fio (wireless).
Este equipamento pode trabalhar até a camada de redes, oferecendo o recurso de roteamento.
Caso existam diversos APs trabalhando no mesmo local, ou, parte da bolha de um AP está
interferindo na bolha de outro AP, é necessário configurar os APs para trabalharem em canais
diferentes, isto é, freqüências diferentes, para que não haja a destruição dos seus sinais. Para que
um equipamento acesse um AP, ele precisa, antes de mais nada, ter uma placa wireless e em
seguida configurá-la para trabalhar no mesmo canal do AP que se queira contactar. Os diversos
dispositivos que estão utilizando o mesmo AP, e com isso o mesmo canal, terão as suas
transmissões multiplexadas no tempo para que todos tenham condições de utilizar o meio.
65
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Método de Acesso ao Meio
Quando possuímos diversos equipamentos ligados através de um meio de comunicação e
desejamos que estes equipamentos se comuniquem entre si, deve-se utilizar algum método para acessar
este meio de comunicação de forma que todos consigam, talvez não ao mesmo tempo, transferir as suas
informações sem que uma máquina destrua a informação da outra.
Neste Capítulo comentaremos alguns métodos utilizados para o acesso ao meio e as arquiteturas
que implementam tais métodos.
5.1
Método de Acesso ao Meio
5.1.1
CSMA
Considerando uma rede local, onde as máquinas podem escutar se existe alguma
portadora no meio de transmissão, isto é, se alguma outra máquina está fazendo uso do meio
para transmitir dados, é possível estruturar um método onde, antes de uma máquina realizar
a sua transmissão, ela verifica se existe alguma outra transmitindo, analisando o meio para
saber se existe alguma portadora. Este protocolo é conhecido por CSMA (Carrier Sense
Multiple Access – Acesso Múltiplo por Detecção de Portadora). Existem algumas variações
deste método, porém nos restringiremos ao CSMA/CD e ao CSMA/CA.
5.1.1.1
CSMA/CD
O protocolo CSMA puro, embora ele verifique se o meio está livre antes de realizar
a transferência dos dados, devido ao retardo oferecido pela propagação do sinal no meio,
existe a possibilidade de uma outra máquina, que também pretende transmitir, ao
verificar o mesmo meio descobrir que ele se encontra livre. Esta segunda máquina pode
ter detectado o meio livre porque o sinal transmitido pela primeira ainda não havia
chegado até ela. Neste caso, esta segunda máquina começará a realizar a transferência
dos seus dados. Em determinado momento, o sinal da primeira máquina se misturará ao
sinal da segunda, levando à perda das duas informações. A este fenômeno dá-se o nome
de colisão.
O protocolo CSMA/CD utiliza uma técnica para detectar a ocorrência de colisão.
A sigla CSMA/CD significa: Carrier Sense Multiple Access with Collision Detection –
Acesso Múltiplo por Detecção de Portadora com Detecção de Colisão. O método
utilizado implica em, durante a transmissão, a máquina transmissora capta o sinal do
meio e verifica se está igual ao que ela está transmitindo. Caso haja alguma mudança,
seja pela incidência de algum ruído, ou a tentativa de uma outra máquina em transmitir
durante a transmissão atual, ocorrerá uma colisão, danificando as informações sendo
transmitidas, sendo necessária a paralisação de ambas as transmissões e então tentar
retransmiti-las.
No caso da colisão, temos que considerar o tempo que o sinal leva para percorrer
o cabo inteiro (t). O pior caso será quando a máquina de uma extremidade começa uma
transmissão e quando o sinal está quase chegando na máquina da extremidade oposta,
esta começa a transmitir, gerando uma colisão logo a seguir. Esta última máquina
detecta quase que instantaneamente a colisão, porém a primeira máquina a iniciar a
transmissão só perceberá que houve colisão quando o sinal adulterado chegar até ela,
isto é, percorrer todo o cabo consumindo o tempo t. Sendo assim, para que tenhamos a
66
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
garantia de que qualquer máquina seja capaz de detectar uma colisão, ela precisa
permanecer transmitindo, e com isso escutando o meio, por um período de tempo de 2t,
que é o tempo do sinal chegar até a máquina da extremidade oposta mais o tempo da
colisão chegar até a máquina de origem. A Figura 5.1 ilustra este procedimento.
Figura 5.1 – Funcionamento do CSMA/CD.
Considerando que durante a transmissão o equipamento precisa ficar escutando o
meio para detectar a colisão, esta transmissão deverá ser do tipo half-duplex, já que o
equipamento está ocupado transmitindo e escutando o próprio sinal. Com a evolução
das redes, existe uma tendência da implementação do modelo full-duplex, que neste
caso, encerraria a existência de colisões.
67
Apostila de Fundamentos de Redes de Computadores
5.1.1.2
Prof: Ricardo Quintão
CSMA/CA
Existe um conjunto de tecnologias de rede sem-fio que usam uma forma
modificada de CSMA/CD. Em vez de transmitir sinais através de um cabo, o hardware
de rede sem-fio usa antenas para transmitir sinais de RF através do ar, que outros
computadores recebem. Os dispositivos usam freqüências de 900 MHz para permitir
que sejam enviados dados a 2 Mbps. Como outras tecnologias de rede, as redes sem-fio
usam compartilhamento. Isto é, todos os computadores que participam em uma
determinada rede sem-fio são configurados para usar uma mesma freqüência de rádio.
Deste modo, eles devem se alternar no envio de pacotes.
Uma diferença entre o modo como redes cabeadas e sem-fio administram
compartilhamento surge por causa da forma com que as transmissões sem-fio se
propagam. Embora a energia eletromagnética se irradie em todas as direções, os
transmissores de rede sem-fio usam pouca energia, o que significa que uma transmissão
tem energia suficiente somente para viajar uma distância pequena. Além disso,
obstruções metálicas podem bloquear o sinal. Deste modo, as unidades sem-fio
localizadas em pontos bem distantes ou atrás de obstruções não receberão as
transmissões de outro.
A falta de comunicação completa significa que as redes sem-fio não podem usar o
mesmo mecanismo de CSMA/CD. Para entender por quê, considere três computadores
com hardware de rede sem-fio posicionados longe um do outro como mostra a
Figura 5.2.
Figura 5.2 – Exemplo de Comunicação Sem Fio.
Na figura, os dois computadores de fora (A e C) estão muito longe um do outro
para receberem suas transmissões. Em tais situações, escuta de portadora e detecção de
colisões não bastam. Por exemplo, suponha que o computador A esteja enviando um
pacote para o computador B como mostra a Figura 5.3. Já que o computador C não pode
receber a transmissão, ele poderia realizar uma transmissão, resultando em uma colisão
como mostra a Figura 5.4. Semelhantemente, se ambos os computadores A e C
transmitissem um quadro ao mesmo tempo, somente o computador B poderá detectar
uma colisão.
Figura 5.3 – Transmissão de A para B.
68
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura 5.4 – Colisão entre A e C.
Para assegurar que eles compartilham os meios de transmissão corretamente, as
redes sem-fio usam um esquema modificado conhecido como CSMA/CA (Carrier
Sense Multiple Access with Collision Avoidance – Acesso Múltiplo por Detecção de
Portadora com Prevenção de Colisão). Em vez de depender de todos os outros
computadores para receberem todas as transmissões, o CSMA/CA usado com redes
sem-fio ativa uma breve transmissão para o receptor pretendido antes de transmitir um
pacote. Por exemplo, suponha que o computador A da Figura 5.2 precisa enviar um
quadro para o computador B. Antes de enviar o quadro, o computador A primeiro
transmite uma breve mensagem de controle indicando a intenção de transmitir um
quadro como mostra a Figura 5.5.
Figura 5.5 – Sinal de Controle para B.
Quando o computador B recebe a mensagem de controle, ele responde enviando
outra mensagem de controle para indicar que está pronto para receber uma transmissão.
Quando o computador A receber a resposta de seu receptor pretendido, ele começa a
transmissão do quadro.
A vantagem de esperar por uma resposta do recipiente se torna clara se for
lembrada daquela transmissão assimétrica. A Figura 5.6, mostra que embora o
computador C não receba a transmissão do computador A, ele recebe a transmissão do
computador B. Deste modo, uma vez que o computador B envia uma resposta, todos os
computadores dentro do alcance de sua antena esperarão pela transmissão de um pacote
(ainda que não possam receber a transmissão).
69
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura 5.6 – Resposta de B ao Sinal de Controle de A.
Com a transmissão destes dois sinais de controle, cria-se uma região do espaço
onde apenas as máquinas A e B podem transmitir, garantindo que não haverá colisão na
transmissão dos quadros de dados. A Figura 5.7 mostra a região reservada.
Figura 5.7 – Região Reservada para a Comunicação de A com B.
Colisões de mensagens de controle podem acontecer quando se estiver usando
CSMA/CA, mas elas podem ser tratadas facilmente. Na Figura 5.2, por exemplo, se
ambos os computadores A e C geram um pacote para o computador B exatamente ao
mesmo tempo, cada um deles envia uma mensagem de controle. As mensagens de
controle chegarão ao computador B simultaneamente, causando uma colisão. Quando
tais colisões acontecerem, as estações remetentes aplicam o backoff exponencial
aleatório antes de reenviar as mensagens de controle. Como as mensagens de controle
são muito menores que os quadros de dados, a probabilidade de uma segunda colisão é
muito mais baixa do que com o CSMA/CD. Mais cedo ou mais tarde, uma das duas
mensagens de controle chegará intacta, e o computador B transmitirá uma resposta.
5.1.2
Token Passing (Passagem de Token)
Foi dito que uma rede usando uma topologia em anel conecta computadores em um
loop. A maioria das redes que empregam a topologia em anel usa também um mecanismo
de acesso ao meio conhecido como Token Ring (Passagem de Token), e as redes resultantes
são conhecidas como Redes em Anel de Passagem de Token (Token Passing Ring Networks),
abreviadas como Token Ring. Uma rede Token Ring opera como um meio único,
70
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
compartilhado. Quando um computador precisa enviar dados, o computador deve esperar
uma permissão antes de poder acessar a rede. Uma vez que ele obtém permissão, o
computador remetente tem completo controle do anel, logo, nenhuma outra transmissão
acontece simultaneamente. Quando o computador remetente transmite um quadro, os bits
passam do remetente para o próximo computador, então para o próximo e assim por diante,
até que os bits passem completamente em torno do anel e voltem ao remetente. A Figura 5.8
ilustra o conceito onde o computador A é o remetente, logo ele retém o Token e então
transmite um pacote de dados cujo destinatário é o computador E.
Figura 5.8 – Funcionamento do Token Passing.
Como mostra a Figura 5.8, todas as estações exceto o remetente encaminham adiante
bits em torno do anel. Deste modo, para verificar que nenhum erro de transmissão ocorreu,
um remetente pode comparar os dados sendo recebidos com os dados sendo enviados. Outras
estações monitoram todas as transmissões. Se um quadro é destinado a um dado computador,
aquele computador faz uma cópia do quadro à medida que os bits passam pelo anel.
71
Apostila de Fundamentos de Redes de Computadores
5.2
Prof: Ricardo Quintão
Arquitetura
5.2.1
Ethernet
A estrutura original de quadros DIX (DEC, Intel, Xerox) é mostrada na Figura 5.9.
Cada quadro começa com um Preâmbulo de 8 bytes, cada um contendo o padrão de bits
10101010. A codificação Manchester desse padrão produz uma onda quadrada de 10 MHz
durante 6,4 µs, a fim de permitir a sincronização entre o clock do receptor e o clock do
transmissor, como foi explicado na Seção 1.1.10.2.1 na Figura 1.30. Eles devem permanecer
sincronizados durante todo o restante do quadro, usando a codificação Manchester para
controlar os limites de bits.
Figura 5.9 – Formato de Quadros DIX.
O quadro contém dois endereços, um para o destino e um para a origem. O padrão
permite endereços de 2 e de 6 bytes, mas os parâmetros definidos para o padrão de banda
básica de 10 Mbps usam somente os endereços de 6 bytes. O bit de alta ordem do endereço
de destino é 0 para endereços comuns e 1 para endereços de grupo. Os endereços de grupos
permitem que diversas estações escutem um único endereço. Quando um quadro é enviado
para um endereço de grupo, todas as estações do grupo recebem. A transmissão para um
grupo de estações é chamada de multidifusão (multicast). O endereço que consiste em todos
os bits 1 é reservado para difusão (broadcast). Um quadro contendo todos os bits 1 no campo
destino é aceito por todas as estações da rede. A diferença entre multicast e broadcast é
importante o bastante para ser repetida. Um quadro de multicast é transmitido para um grupo
selecionado de estações na Ethernet. O multicast é mais seletivo, mas envolve o
gerenciamento de grupos. O broadcast é menos seletivo, fazendo com que todas as máquinas
da rede recebam o quadro e com isso, não requer qualquer gerenciamento de grupos.
Outra característica interessante do endereçamento é o uso do bit 46 (adjacente ao bit
de mais alta ordem) para distinguir endereços locais de endereços globais. Os endereços
locais são atribuídos pelo administrador da rede e não têm significado fora da rede local. Os
endereços globais, ao contrário, são atribuídos pelo IEEE para assegurar que duas estações
de qualquer lugar do mundo nunca tenham o mesmo endereço global. Com os 46 bits
restantes disponíveis, pode-se gerar 2 46 endereços globais, isto é, 70.368.744.177.664 (cerca
de 70 trilhões) endereços globais. A idéia é que qualquer estação possa endereçar
exclusivamente qualquer outra estação, fornecendo apenas o número de 48 bits correto. Cabe
à camada da rede descobrir como localizar o destino.
Em seguida, vem o campo Tipo, que informa ao receptor o que fazer com o quadro.
Vários protocolos da camada de rede podem estar em uso ao mesmo tempo na mesma
máquina, assim, ao chegar um quadro Ethernet, o kernel tem de saber a qual deles deve
entregar o quadro.
Depois, vêm os dados, com até 1.500 bytes. Esse limite foi escolhido de forma um
tanto arbitrária na época em que o padrão DIX foi esculpido em pedra, principalmente com
base no fato de que um transceiver precisa ter memória RAM suficiente para guardar um
quadro inteiro e, em 1978, a RAM tinha um custo muito alto. Um limite superior significaria
mais RAM e, conseqüentemente, um transceiver mais caro.
Além de haver um comprimento máximo de quadro, também existe um comprimento
mínimo. Embora um campo de dados de 0 byte às vezes seja útil, ele causa um problema.
Como o padrão Ethernet utiliza o CSMA/CD como método de acesso ao meio, quando se
72
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
detecta uma colisão, um transceiver trunca o quadro atual, o que significa que bits perdidos
e fragmentados de quadros aparecem a todo instante no cabo. Para tornar mais fácil a
distinção entre quadros válidos e lixo, o padrão Ethernet exige que os quadros válidos tenham
pelo menos 64 bytes de extensão, do endereço de destino até o campo de CRC, incluindo
ambos. Se a parte de dados de um quadro for menor que 46 bytes, o campo Preenchimento
será usado para preencher o quadro até o tamanho mínimo.
Outro (e mais importante) motivo para a existência de um quadro de comprimento
mínimo é impedir que uma estação conclua a transmissão de um quadro curto antes que tenha
passado o tempo mínimo necessário para detectar a ocorrência de uma colisão. Este tempo
é definido como duas vezes o tempo de propagação do sinal da máquina de um extremo do
cabo até a máquina do extremo oposto, como foi visto na Seção 5.1.1.1, quando falamos do
CSMA/CD.
Para que o sistema de detecção de colisão funcione, deve-se estabelecer um limite de
comprimento da rede de forma que o tempo máximo de propagação do sinal de uma
extremidade a outra seja estabelecido. De acordo com o padrão 802.3, o barramento deveria
ter um comprimento máximo de 2.500 metros, contendo 5 seções de cabo coaxial grosso do
tipo 10 base 5 conectados por 4 repetidores. Ao medir o tempo de propagação do sinal de
uma extremidade a outra obteve-se 25 µs, logo o tempo de ida e volta será de 50 µs.
Utilizando uma taxa de transmissão de 10 Mbps, o tamanho do quadro pode ser calculado
através da seguinte fórmula:. Quadro  Taxa  Tempo , sendo assim, obteremos como
tamanho
mínimo
para
um
quadro
Ethernet
o
valor
de
6
6
Quadro  10  10  50  10  500 bits , onde foi arredondado para 512 bits, ou seja
64 bytes. Foi daí que surgiu a limitação comentada anteriormente de que o quadro Ethernet
não poderia ter menos do que 64 bytes entre o endereço de destino e o CRC.
Com o melhoramento das tecnologias e aumentando o tráfego na rede, houve a
necessidade de investir no aumento na taxa de transmissão. Uma primeira evolução foi
passar a taxa de 10 Mbps para 100 Mbps que foi denominada de Fast Ethernet. Ao
multiplicarmos a taxa por 10, o tamanho mínimo do quadro passara para 640 bytes. Isso
causaria problemas de compatibilidade com a Ethernet original de 10 Mbps. Como nesta
época o uso de barramento era reduzido e começou-se a utilizar a topologia de tipo estrela
onde os computadores eram ligados a um equipamento central através de cabos de par
trançado, uma alternativa para manter a compatibilidade era manter o tamanho do quadro em
64 bytes, porém diminuindo o tamanho da rede em 10 vezes, levando a uma distância máxima
entre os equipamentos de 250 metros. Em se tratando de uma rede local, este tamanho
resolvia a maioria dos casos.
Algum tempo depois veio a rede Ethernet com 1 Gbps conhecida como Gigabit
Ethernet. Neste caso, para manter a padronização inicial de quadros com 64 bytes o tamanho
máximo entre as máquinas deve ser de 25 metros. Esta restrição se vê necessária para que o
mecanismo de detecção de colisão funcione corretamente, porém, se usarmos uma forma de
conexão entre máquinas que não ofereça o risco de colisão, pode-se aumentar o tamanho do
cabo, pois mesmo passando a não ser capaz de detectar colisões, esta detecção não seria
necessária. Uma forma de tornar desnecessária a detecção da colisão é fazer a ligação direta
de um equipamento a outro, não havendo o compartilhamento do meio que os conecte. Desta
forma, sem compartilhamento, não haverá como uma terceira máquina provocar uma colisão
e ainda possibilita a comunicação full-duplex. Com o barateamento e a popularização dos
switches, que são equipamentos de interconexão que possibilitam a ligação direta de dois
equipamentos, a rede Gigabit Ethernet pode ser implementada utilizando-se cabos superiores
73
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
a 25 metros entre as máquinas e mantendo o padrão de 64 bytes para o tamanho mínimo dos
quadros.
5.2.1.1
O Algoritmo de Recuo Binário Exponencial
Vejamos agora como é feita a randomização quando ocorre uma colisão. Depois
de uma colisão ser detectada, o tempo é dividido em slots discretos, cuja duração é igual
ao pior tempo de propagação do sinal de ida e volta no meio. No caso do padrão
Ethernet, o tempo de duração do slot foi definido como sendo de 51,2 µs, já que o quadro
foi arredondado para um tamanho mínimo de 512 bits (64 bytes), como foi mencionado
na seção anterior.
Depois da primeira colisão, cada estação espera 0 ou 1 tempo de slot antes de
tentar novamente. Se duas estações colidirem e selecionarem o mesmo número
aleatório, elas colidirão novamente. Depois da segunda colisão, cada uma seleciona ao
acaso 0, 1, 2 ou 3 e aguarda esse número de tempos de slot. Se ocorrer uma terceira
colisão, cuja probabilidade é de 25%, na próxima vez o número de slots que a estação
deverá esperar será escolhido ao acaso no intervalo de 0 a 2 3  1 .
Em geral, depois de i colisões, é escolhido um número aleatório entre 0 e 2 i  1 ,
e esse número de slots será ignorado. Entretanto, após terem sido alcançadas 10
colisões, o intervalo de randomização será congelado em um máximo de 1.023 slots.
Depois de 16 colisões, o controlador desiste e informa o erro ao computador. Qualquer
recuperação adicional caberá às camadas superiores.
Esse algoritmo, chamado de recuo binário exponencial, foi escolhido para se
adaptar dinamicamente ao número de estações que estão tentando transmitir. Se o
intervalo de escolha do número aleatório para todas as colisões fosse 1.023, a chance de
duas estações colidirem uma segunda vez seria desprezível, mas o tempo de espera
médio depois de uma colisão seria de centenas de períodos de slot, introduzindo um
retardo significativo. Por outro lado, se cada estação sempre esperasse durante 0 ou 1
slot, e se 100 estações tentassem transmitir ao mesmo tempo, elas colidiriam repetidas
vezes até que 99 delas escolhessem 1 e a estação restante escolhesse 0. Isso poderia
levar anos. Aumentando-se exponencialmente o intervalo de randomização à medida
que ocorre um número cada vez maior de colisões consecutivas, o algoritmo assegura
um baixo retardo quando apenas algumas estações colidem, mas também garante que a
colisão será resolvida em um intervalo de tempo razoável quando muitas estações
colidirem. A restrição do recuo a 1.023 impede que o limite cresça demais.
Como descrevemos até agora, o CSMA/CD não fornece nenhuma confirmação.
Como a simples ausência de colisões não garante que os bits não foram adulterados por
picos de ruído no cabo, para obter uma comunicação confiável, o destino deve conferir
o CRC e, se ele estiver correto, deve transmitir um quadro de confirmação para a origem.
Normalmente, essa confirmação seria apenas outro quadro no que se refere ao protocolo,
e teria de disputar o tempo do canal, assim como qualquer outro quadro de dados.
Contudo, uma simples modificação no algoritmo de disputa permitiria uma confirmação
mais rápida da recepção do quadro. Seria necessário apenas reservar o primeiro slot de
disputa após cada transmissão bem sucedida para a estação de destino. Infelizmente, o
padrão não oferece essa possibilidade.
5.2.2
Token Ring
Como um remetente obtém permissão para transmitir em um Token Ring?
Diferentemente da Ethernet, uma transmissão de Token Ring não conta com CSMA/CD. Em
74
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
vez disso, o hardware de Token Ring coordena entre todos os computadores conectados para
assegurar que a permissão seja passada a cada computador um de cada vez. A coordenação
usa uma mensagem especial reservada chamada Token. O Token é um padrão de bits que
difere de quadros de dados normais. Para assegurar que dados normais não possam ser
interpretados como um Token, algumas tecnologias de Token Ring usam bit stuffing1 para
mudar temporariamente ocorrências do Token em dados para transmissão no anel. Mais
importante, o hardware de Token assegura que existe exatamente um Token em uma rede de
Token Ring.
Essencialmente, um Token dá uma permissão ao computador para enviar um quadro.
Desse modo, antes de poder enviar um quadro, um computador deve esperar pelo Token
chegar. Quando um Token chegar, o computador remove temporariamente o Token do anel
e usa o anel para transmitir dados. Embora possa ter mais de um quadro esperando para ser
enviado, o computador envia apenas um quadro e então transmite o Token. Diferentemente
de quadros de dados, que giram completamente em torno do anel enquanto estão sendo
enviados, o Token viaja de um computador diretamente para outro adjacente, que pode então
usar a rede para enviar um quadro.
Se todos os computadores em uma rede de Token Ring têm dados para enviar, o
esquema de Token Ring garante que eles irão se alternar, com cada computador enviando um
quadro antes de passar o Token. Note que o esquema garante acesso justo: com a passagem
do Token pelo anel, cada computador tem uma oportunidade para usar a rede. Se um
determinado computador não tem dados para enviar quando ele recebe o Token, o hardware
de interface meramente passa o Token adiante sem atraso. No caso extremo em que nenhuma
estação tem dados para transmitir, o Token circula continuamente, com cada estação
recebendo o Token e então passando o mesmo imediatamente para o próximo computador.
O tempo exigido para um Token fazer uma viagem completa ao redor de um anel de
computadores ociosos é extremamente breve (por exemplo, um milissegundo). Este tempo
breve é possível por duas razões. Primeiro, porque o Token é pequeno e pode ser transmitido
rapidamente através de um único fio. Segundo, o Token é manipulado pelo hardware em
anel, o que significa que a velocidade não depende da CPU do computador.
5.2.3
Wireless (Redes sem Fio)
Quase na mesma época em que surgiram os notebooks, muitas pessoas sonhavam com
o dia em que entrariam em um escritório e magicamente seu notebook se conectaria à
Internet. Em conseqüência disso, diversos grupos começaram a trabalhar para descobrir
maneiras de alcançar esse objetivo. A abordagem mais prática é equipar o escritório e os
notebooks com transmissores e receptores de rádio de ondas curtas para permitir a
comunicação entre eles. Esse trabalho levou rapidamente à comercialização de redes semfio por várias empresas.
O problema era encontrar duas delas que fossem compatíveis. Essa proliferação de
padrões significa que um computador equipado com um rádio da marca X não funcionaria
em uma sala equipada com uma estação-base da marca Y. Finalmente, a indústria decidiu
que um padrão de rede sem-fio poderia ser uma boa idéia, e assim o comitê do IEEE que
padronizou as redes com fio recebeu a tarefa de elaborar um padrão de redes sem-fio. O
padrão recebeu o nome 802.11. Um apelido comum para ele é WiFi. Trata-se de um padrão
importante e que merece respeito, e assim vamos chamá-lo por seu nome correto, 802.11.
1
Técnica utilizada para camuflar seqüências de bits especiais de forma que não sejam interpretados erroneamente pelo
sistema de transmissão.
75
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
O padrão proposto tinha de funcionar em dois modos:

Na presença de uma estação base;

Na ausência de uma estação base.
No primeiro caso, toda a comunicação deveria passar pela estação-base, chamada de
access point – AP (ponto de acesso) na terminologia do 802.11. Este padrão está ilustrado
na Figura 5.10. No outro caso, os computadores simplesmente transmitiriam diretamente uns
para os outros. Agora, esse modo costuma ser chamado interligação de redes ad hoc. Um
exemplo típico é de duas ou mais pessoas juntas em uma sala não equipada com uma rede
sem-fio, fazendo seus computadores se comunicarem diretamente. Este padrão está ilustrado
na Figura 5.11.
Figura 5.10 – Rede Sem Fio com uma Estação-Base (AP).
Figura 5.11 – Rede Sem Fio Ad Hoc.
A primeira decisão foi a mais fácil: como denominá-lo. Todos os outros padrões de
redes tinham números como 802.1, 802.2, 802.3, até 802.10; assim, o padrão de redes sem
fio recebeu a denominação 802.11. O resto era mais difícil.
Em particular, alguns dos muitos desafios que tinham de ser enfrentados eram:

Descobrir uma banda de freqüências adequada que estivesse disponível, de
preferência em todo o mundo;

Lidar com o fato de que os sinais de rádio têm um alcance finito;

Assegurar que a privacidade dos usuários seria mantida;

Levar em conta a duração limitada da bateria;

Considerar a segurança humana (as ondas de rádio causam câncer);

Compreender as implicações da mobilidade dos computadores;
76
Apostila de Fundamentos de Redes de Computadores

Prof: Ricardo Quintão
Construir um sistema com largura de banda suficiente para ser economicamente
viável
Na época em que o processo de padronização começou (meados da década de 1990), a
Ethernet já havia dominado o mercado de redes locais, e assim o comitê decidiu tornar o
802.11 compatível com a Ethernet acima da camada de enlace. Em particular, deve ser
possível enviar um pacote IP pela rede sem-fio, do mesmo modo que um computador
conectado envia um pacote IP pela Ethernet. Apesar disso, existem várias diferenças
inerentes em relação à Ethernet na camada física e na camada de enlace de dados, e essas
diferenças tinham de ser tratadas pelo padrão.
Em primeiro lugar, um computador na Ethernet sempre escuta o meio antes de
transmitir. Somente se o meio estiver ocioso o computador inicia a transmissão. No caso
das redes sem-fio, essa idéia não funciona muito bem, como foi visto na Seção 5.1.1.2.
O segundo problema que tinha de ser resolvido era a possibilidade de objetos sólidos
refletirem o sinal de rádio, de forma que o sinal pudesse ser recebido várias vezes (ao longo
de diversos caminhos). Essa interferência resulta naquilo que se denomina atenuação
multiponto.
O terceiro problema é que grande parte do software não está ciente da mobilidade. Por
exemplo, muitos processadores de testos tem uma lista de impressoras que os usuários podem
escolher para imprimir um arquivo. Quando o computador no qual o processador de textos
funciona é levado para um novo ambiente, a lista de impressoras se torna inválida.
O quarto problema é que, se um notebook for afastado da estação-base (AP) que ele
está utilizando e entrar na faixa de alcance de uma estação base diferente, será necessário
alguma forma de transferência. Embora ocorra com telefones celulares, esse problema não
acontece com a Ethernet e precisa ser resolvido. Tipicamente, a rede prevista consiste em
várias células, cada uma com sua própria estação-base, e com as estações-base conectadas
pela Ethernet, como mostra a Figura 5.12. Visto do exterior, o sistema inteiro deve ser
semelhante a uma única Ethernet. A conexão entre o sistema 802.11 e o mundo exterior é
chamado portal.
Figura 5.12 – Uma Rede 802.11 de Várias Células.
Após algum trabalho, o comitê apresentou um padrão em 1997 que tratou dessas e de
outras questões. A rede sem-fio que ele descreveu funcionava a 1 Mbps ou 2 Mbps. Quase
imediatamente, as pessoas reclamaram que ela era muito lenta, e assim começou o trabalho
em padrões mais rápidos. Uma divisão se desenvolveu dentro do comitê, resultando em dois
novos padrões publicados em 1999. O padrão 802.11a utiliza uma faixa de freqüência mais
77
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
larga e funciona em velocidades de 54 Mbps. O padrão 802.11b utiliza a mesma faixa de
freqüências que o 802.11, mas emprega uma técnica de modulação diferente para alcançar
11 Mbps. Algumas pessoas vêem esse fato como algo psicologicamente importante, tendo
em vista que 11 Mbps é mais rápido que a Ethernet fisicamente conectada original. É
provável que o padrão original de 1 Mbps, o 802.11, desapareça rapidamente, mas ainda não
está claro qual dos novos padrões ocupará seu lugar.
Para tornar a questão ainda mais complicada do que já era, o comitê 802 apresentou
ainda outra variante, o 802.11g, que utiliza a técnica de modulação do 802.11a, mas emprega
a faixa de freqüências do 802.11b.
Não há dúvida que o 802.11 causará uma revolução na computação e no acesso à
Internet. Aeroportos, estações de trem, hotéis, centros comerciais e universidades estão
instalando rapidamente essas redes. Até mesmo as lojas de cibercafés estão instalando o
802.11, para que os yuppies reunidos possam navegar pela Web enquanto apreciam sua
bebida. É provável que o 802.11 faça pela Internet o que os notebooks fizeram pela
computação: torná-la móvel.
78
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Tecnologias para conexão digital de longa distância
6.1
X.25
A rede X.25 foi a primeira rede pública de dados. Ela foi desenvolvida na década de 1970,
em uma época na qual o serviço de telefonia era um monopólio em todos os lugares, e a empresa
de telefonia em cada país esperava que houvesse uma única rede de dados por país, a dela. Para
usar a X.25, primeiro um computador estabelecia uma conexão com o computador remoto, isto é,
fazia uma chamada telefônica. Essa conexão recebia um número de conexão que seria usado em
pacotes de transferência de dados (porque várias conexões poderiam estar abertas ao mesmo
tempo). Os pacotes de dados eram muito simples, consistindo em um cabeçalho de 3 bytes e até
128 bytes de dados. O cabeçalho tinha um número de conexão de 12 bits, um número de sequência
de pacote, um número de confirmação e alguns bits variados. As redes X.25 operaram por cerca
de uma década com relativo sucesso.
6.2
Frame Relay (FR)
Na década de 1980, as redes X.25 foram substituídas em grande parte por um novo tipo de
rede chamado frame relay. A essência do frame relay é o fato de ser uma rede orientada a conexão
sem controle de erros e nenhum controle de fluxo. Por se tratar de uma rede orientada a conexões,
os pacotes eram entregues em ordem (quando eram entregues). Nas propriedades de entrega em
ordem, nenhum controle de erros e nenhum controle de fluxo tornavam o frame relay semelhante
a uma LAN de área extensa. Sua aplicação mais importante é a interconexão de LANs instaladas
em vários escritórios de uma empresa. O frame relay pode trabalhar com PVCs (Permanent
Virtual Circuits – Circuitos Virtuais Permanentes) ou SVCs (Switched Virtual Circuits – Circuitos
Virtuais Chaveados).
6.3
ATM
Outra rede orientada a conexões, e muito mais importante, é o ATM (Asynchronous
Transfer Mode – Modo de Transferência Assíncrona). O nome um pouco estranho é explicado
pelo fato de, no sistema de telefonia, a maioria das transmissões ser síncrona, mas não o ATM.
O ATM foi projetado no início da década de 1990 e lançado em meio a uma agitação
verdadeiramente incrível. O ATM prometia resolver todos os problemas de redes e
telecomunicações do mundo, mesclando voz, dados, televisão a cabo, telex e todos os outros
meios de comunicação em um único sistema integrado que poderia fazer tudo para todos. Isso
não aconteceu. Em grande parte, os problemas eram semelhantes aos que descrevemos antes em
relação ao OSI, isto é, momento, tecnologia, implementação e política ruins. Tendo simplesmente
derrubado as empresas de telefonia no primeiro round, muitas pessoas na comunidade da Internet
viram no ATM a sequência da luta da Internet contra as empresas de telecomunicações. Porém,
isso não era verdade e, desse momento em diante, até mesmo os fanáticos por datagramas
concluíram que a qualidade de serviço da Internet deixava muito a desejar. Para encurtar a
história, o ATM teve muito mais sucesso que o OSI, e agora, é amplamente utilizado dentro do
sistema de telefonia para mover pacotes IP. Por ser utilizada principalmente pelas operadoras
para transporte interno, muitas vezes os usuários não percebem sua existência, mas, sem dúvida,
ele estará vivo e muito bem.
79
Apostila de Fundamentos de Redes de Computadores
6.3.1
Prof: Ricardo Quintão
Circuitos Virtuais do ATM
Tendo em vista que as redes ATM são orientadas a conexões, o envio de dados exige
primeiro o envio de um pacote para reconfigurar a conexão. À medida que o pacote de
configuração passa pela sub-rede, todos os roteadores no caminho inserem uma entrada em
suas tabelas internas registrando a existência da conexão e reservando os recursos necessários
para ela. Com freqüência, as conexões são chamadas de circuitos virtuais, em uma analogia
com os circuitos físicos utilizados no sistema telefonia. A maioria das redes ATM também
admite circuitos virtuais permanentes, que são conexões permanentes entre duas máquinas
(distantes). Eles são semelhantes a linhas dedicadas no universo da telefonia. Cada conexão,
temporária ou permanente, tem um identificador de conexão exclusivo.
Uma vez estabelecida uma conexão, um ou outro lado pode iniciar a transmissão de
dados. A idéia básica por trás do ATM é transmitir todas as informações em pequenos
pacotes de tamanho fixo chamados células. As células têm 53 bytes, dos quais 5 bytes
formam o cabeçalho e 48 bytes são a carga útil. Uma parte do cabeçalho é o identificador da
conexão, e assim, as máquinas transmissoras e receptoras e todos os roteadores
intermediários podem saber quais células pertencem a cada conexão. Essa informação
permite que cada roteador saiba como rotear cada célula de entrada. O roteamento de células
é feito em hardware, em alta velocidade. De fato, o principal argumento para se ter células
de tamanho fixo é a facilidade para construir roteadores de hardware capazes de tratar células
curtas de comprimento fixo. Pacotes IP de comprimento variável têm de ser roteados por
software, um processo mais lento. Outra vantagem do ATM é a possibilidade de configurar
o hardware para copiar uma célula de entrada em várias linhas de saída, uma propriedade
necessária para manipular um programa de televisão que esteja sendo transmitido por difusão
a muitos receptores. Por fim, células pequenas não bloqueiam nenhuma linha por muito
tempo, o que torna mais fácil garantir a qualidade de serviço.
Todas as células seguem a mesma rota até o destino. A entrega de células não é
garantida, mas sua ordem sim. Se as células 1 e 2 forem enviadas nessa ordem, se ambas
chegarem, elas chegarão nessa ordem, nunca 2 antes de 1. Porém, uma delas ou ambas podem
se perder no caminho. Cabe aos níveis de protocolos mais altos recuperar células perdidas.
Observe que, embora essa garantia não seja perfeita, é melhor que a garantia oferecida pela
Internet. Lá, os pacotes não só podem se perder, mas também podem ser entregues fora de
ordem. Em contraste, o ATM garante nunca entregar células fora de ordem.
As redes ATM são organizadas como WANs tradicionais, com linhas e roteadores. As
velocidades mais comuns para redes ATM são 155 Mbps e 622 Mbps, embora sejam
admitidas velocidades mais altas. A velocidade de 155 Mbps foi escolhida por possibilitar a
transmissão de imagens de televisão de alta definição. A escolha de exatamente 155,52 Mbps
se deu por uma questão de compatibilidade com o sistema de transmissão SONET da AT&T.
A velocidade de 622 Mbps foi escolhida para permitir que quatro canais de 155 Mbps
pudessem ser enviados através dela.
6.4
ISDN
Um dos primeiros esforços para se fornecer serviços digitais de larga escala para os
assinantes foi lançado pelas companhias telefônicas sob o nome de ISDN (Integrated Services
Digital Network – Rede Digital de Serviços Integrados). O ISDN fornece voz e dados
digitalizados para assinantes através do cabeamento de loop local convencional. Isto é, o ISDN
usa o mesmo tipo de cabeamento de cobre de par trançado que o sistema telefônico analógico.
Do ponto de vista de um assinante, o ISDN oferece três canais digitais separados,
designados B, B e D (normalmente escritos 2B+D). Os dois canais B, que operam cada um em
80
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
uma velocidade de 64 Kbps, são para o transporte de voz digitalizada, dados ou vídeo
comprimido; o canal D, que opera a 16 Kbps, serve como um canal de controle1. Em geral, um
assinante usa o canal D para solicitar serviços que são então providos através dos canais B, por
exemplo, fazer um telefonema que usa voz digital. O assinante também usa o canal D para
administrar uma sessão que está em andamento ou para terminar uma sessão. Finalmente, os dois
canais B podem ser combinados ou unidos para se produzir um único canal com uma taxa de
dados efetiva de 128 Kbps.
Os canais 2B+D são conhecidos como ISDN Basic Rate Interface (BRI). De fato, o ISDN
usa uma forma de multiplexação por divisão de tempo para fornecer a ilusão de múltiplos canais
de dados viajando através de um único par de fios.
Quando as companhias telefônicas definiram primeiramente o ISDN muitos anos atrás,
64 Kbps parecia rápido se comparado a modems dial-up, que operavam a menos que 10 Kbps.
As companhias telefônicas esperavam que os clientes usassem o ISDN para as comunicações
digitais locais e de longa distancia de forma análoga ao modo que eles usam o sistema telefônico
de voz. Com o passar dos anos, porém, os modems dial-up melhoraram, e foram inventadas
tecnologias alternativas que forneceram taxas de dados altas através do loop local com custo
baixo. Consequentemente, o ISDN agora é uma alternativa cara que oferece pequena largura de
banda.
6.5
xDSL
Um dos tipos mais impressionantes da nova tecnologia para fornecimento de serviços
digitais através de loop local é conhecido como DSL (Digital Subscriber Line – Linha Digital de
Assinante). De fato, existem diversas variantes. Como os nomes diferem pela primeira palavra,
o conjunto é coletivamente chamado através da sigla xDSL.
A tecnologia de xDSL que talvez seja a mais interessante é conhecida com ADSL
(Asymmetric Digital Subscriber Line – Linha Digital de Assinante Assimétrica). Do ponto de
vista de um assinante, o ADSL fornece a habilidade de se enviar e receber informações digitais
em alta velocidade. Como o nome indica, entretanto, o serviço é assimétrico. No caso do ADSL,
a assimetria deriva da taxa de transferência. A largura de banda disponível é dividida para se
tornar a taxa de transferência em uma direção muito mais alta do que na outra.
Para entender a motivação para a assimetria, pense sobre como uma pessoa média usa a
Internet. A maioria do tráfego é gerada quando a pessoa navega pela Web ou faz download de
arquivos. Em ambos os casos, o tráfego que o indivíduo envia para a Internet consiste em
pequenas solicitações, por exemplo, alguns bytes de dados. Porém, o tráfego que flui de volta da
Internet para o usuário pode conter milhões de bytes de dados, por exemplo, imagens
digitalizadas. Para distinguir as duas direções, os profissionais usam o termo downstream para se
referir a dados fluindo para o usuário, e upstream para se referir a dados fluindo a partir do usuário.
O loop do assinante pode ser otimizado para tráfego assimétrico se estiver alocando a largura de
banda de maneira a fornecer uma taxa de transferência mais alta para downstream.
Do ponto de vista do usuário, a otimização oferece a vantagem de permitir que as páginas
da Web sejam mostradas mais depressa do que uma solução simétrica permitiria. Claro, a
assimetria torna o ADSL impróprio para conexões que enviam mais dados do que recebem. Por
exemplo, um negócio que tem um catálogo on-line disponível para clientes não se beneficiaria do
ADSL porque o negócio tenderia a enviar mais dados do que recebe.
1
Embora o usuário tenha um total de 144 Kbps disponível, o sistema subjacente opera a 160 Kbps; os 16 Kbps restantes são
consumidos por sincronização e enquadramento.
81
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Quão rápido o ADSL pode operar? A taxa máxima de downstream atinge um valor
espantoso de 6,144 Mbps, e a taxa máxima upstream atinge 640 Kbps.
Embora as taxas de dados sejam surpreendentemente altas, o aspecto mais surpreendente do
ADSL advém do cabeamento físico através do qual ele alcança tais taxas de dados e o modo que
ele usa esse cabeamento. O ADSL não exige quaisquer mudanças no cabeamento de loop local
porque é projetado para correr sobre o mesmo cabeamento de par trançado que foi originalmente
instalado para o serviço telefônico analógico. Além disso, o ADSL não interrompe o loop local,
ele pode executar simultaneamente através dos mesmos fios que o serviço telefônico padrão.
Desse modo, o ADSL tem uma vantagem econômica óbvia: as companhias telefônicas podem
usá-lo para prover serviço digital de alta velocidade sem recabear o loop local.
Como o ADSL alcança taxas altas de dados sobre par trançado? Os pesquisadores primeiro
observaram que um esquema como o ADSL poderia ser possível porque muitos loops locais
acomodam sinais em frequências mais altas do que aquelas usadas pelo sistema telefônico. A
solução ADSL é complexa porque não há dois loops locais com características idênticas. Em vez
disso, a habilidade de transportar sinais depende da distância, do tipo de cabeamento usado e do
nível de interferência elétrica. Desse modo, os projetistas não podiam escolher um conjunto
particular de frequências portadora ou técnicas de modulação que funcionariam em todos os casos.
Por exemplo, considere dois assinantes que vivem em partes diferentes de uma cidade. Se a linha
telefônica que está indo ao primeiro assinante passa próxima a uma estação de rádio comercial, o
sinal da estação causará interferência na frequência que a estação usa. Se o segundo assinante
não vive próximo à mesma estação de rádio, a frequência que a estação de rádio usa pode
funcionar bem para dados naquela linha do assinante. Porém, a segunda linha pode sofrer
interferência em outra frequência.
Para acomodar as diferenças em características de loop local, o ADSL é adaptativa. Ou
seja, quando os modems ADSL são ligados, eles examinam a linha entre eles para descobrir suas
características, e então concordam em se comunicar usando técnicas que são ótimas para a linha.
Em particular, o ADSL usa um esquema conhecido como modulação DMT (Discrete Multi
Tone – Multi Tom Discreto), que combina multiplexação por divisão de freqüência e técnicas de
multiplexação inversa.
A multiplexação por divisão de frequência no DMT é implementada dividindo-se a largura
de banda em 286 frequências separadas ou subcanais1, com 255 frequências usadas para
transmissão downstream de dados, 31 usadas para transmissão upstream de dados e 2 usadas para
informações de controle. Conceitualmente, existe um “modem” separado executando em cada
subcanal, que tem sua própria portadora modulada. As portadoras são espaçadas em intervalos
de 4,1325 KHz para evitar que os sinais interfiram um com o outro. Além disso, para garantir
que suas transmissões não interfiram com sinais de telefonia analógica, o ADSL evita usar a
largura de banda abaixo de 4 KHz. Quando o ADSL inicia, ambas as pontas examinam as
frequências disponíveis para determinar que sinais passam e que sinais experimentam
interferência. Além de selecionar as frequências, as duas pontas avaliam a qualidade do sinal em
cada frequência e usam a qualidade para selecionar um esquema de modulação. Se uma
frequência em particular tem uma relação sinal-ruído alta, o ADSL seleciona um esquema de
modulação que codifica muitos bits por baud. Se a qualidade em uma determinada frequência é
baixa, o ADSL seleciona um esquema de modulação que codifica menos bits por baud.
1
A terminologia surge porque a capacidade de uma conexão ADSL pode ser dividida em canais de 1,544 Mbps conectados
cada um a um circuito T1.
82
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
O resultado da adaptação é uma tecnologia robusta que pode se adaptar a várias condições
de linha automaticamente. Do ponto de vista de um usuário, a adaptação tem uma propriedade
interessante: o ADSL não garante uma taxa de dados. Em vez disso, o ADSL pode garantir
somente que fará tanto quanto as condições da linha permitirem que suas técnicas operem. Deste
modo, a taxa downstream varia de 32 Kbps a 6,4 Mbps e a taxa upstream varia de 32 Kbps a
640 Kbps.
6.5.1
Outras Tecnologias de DSL
Além do ADSL, foram desenvolvidas outras tecnologias DSL. Cada uma usa a largura
de banda para alcançar uma meta ligeiramente diferente. Deste modo, cada uma apresenta
vantagens para alguns aplicativos. Por exemplo, a SDSL (Symmetric Digital Subscriber
Line – Linha Digital de Assinante Simétrica) fornece taxas de bits simétricas em ambas as
direções. Como descrito anteriormente, a maioria dos indivíduos que usam redes de
computadores seguem um padrão assimétrico de uso. Diversas companhias pequenas
seguem o mesmo padrão. Elas geralmente usam a rede para obter informações. Porém, as
empresas que fornecem informações para outras tendem a ter exatamente a assimetria oposta,
exportam mais dados que importam. Infelizmente, poucas companhias telefônicas oferecem
ADSL com direções de assimetria invertida. Deste modo, as empresas que exportam
informações podem preferir o SDSL. Além disso, como o SDSL usa um esquema de
codificação diferente do ADSL, o SDSL pode operar através de loops locais para os quais o
ADSL é impróprio. Deste modo, algumas companhias telefônicas escolhem oferecer serviço
de SDSL em vez de ADSL.
Outro serviço de DSL é conhecido como HDSL (High-Rate Digital Subscriber
Line – Linha Digital de Assinante de Taxa Alta). O HDSL fornece uma taxa de bits DS1 (ou
seja, 1,544 Mbps) nas duas direções. Uma das desvantagens do HDSL é uma limitação de
distância em loops locais. Outra desvantagem advém dos requisitos de cabeamento.
Diferente do ADSL, que usa um único par trançado, o HDSL exige dois pares trançados
independentes. Para superar a desvantagem de cabeamento, uma variante conhecida como
HDSL2 foi proposta e executa sobre dois fios1.
Uma das vantagens do HDSL advém de sua tolerância a modificações no loop local
feitas para o sistema telefônico. Em particular, o HDSL pode ser usado em um loop que
inclui uma bridge tap telefônica (algumas tecnologias de DSL não podem). Além disso,
como sua taxa de transferência é compatível com um circuito T1, mover dados entre um
circuito T1 e HDSL é simples.
Outra vantagem do HDSL surge da sua habilidade de tolerar falhas graciosamente. A
tecnologia foi projetada de forma que se um dos dois pares trançados falha, os modems não
falham completamente, mas, em vez disso, continuam a operar a uma metade da taxa máxima
de transferência. O modo de falha graciosa é especialmente atrativo para as empresas porque
é freqüentemente melhor ter uma conexão lenta do que nenhuma conexão.
Outra variante do DSL que foi estudada pode fornecer throughput muito mais alto.
Conhecida como VDSL (Very-high bit rate Digital Subscriber Line – Linha Digital de
Assinante de Taxa muito alta), a tecnologia pode alcançar uma taxa de dados de até 52 Mbps.
Alternativas que oferecem 13 Mbps e 26 Mbps foram também investigadas.
Embora tais taxas altas possam ser alcançadas através de um par trançado de cobre, o
VDSL não pode ser usado no cabeamento existente entre a Estação Central e os assinantes
1
Como o tráfego upstream e downstream compartilham um único par de fios, o HDSL2 é às vezes chamado de SHDSL.
83
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
telefônicos porque as distâncias são muito longas. Então, a VDSL exige pontos de
concentração intermediários, com fibra óptica conectando os pontos de concentração de volta
para a Estação Central. Em terminologia VDSL, um ponto de concentração é chamado de
ONU (Optical Network Unit – Unidade de Rede Óptica). Como as versões de VDSL com
taxas de dados inferiores correm sobre cobre através de distâncias mais longas, elas não
exigem que pontos de concentração fiquem tão perto do assinante. Desse modo, taxas de
dados mais baixas exigem menos pontos de concentração para cobrir uma dada área
geográfica.
6.6
Cable Modem
As Seções 6.4 e 6.5 examinaram tecnologias que entregam informações digitais através do
cabeamento de par trançado que forma o loop local do sistema telefônico analógico. Esta Seção
considera o uso de um esquema de cabeamento alternativo que pode entregar taxas de bit muito
mais altas.
A motivação primária para considerar alternativas para o loop local telefônico advém das
limitações inerentes. O problema principal reside nas características elétricas do cabeamento de
par trançado. Embora as tecnologias como ADSL possam alcançar taxas de bit muito mais altas
que modems dial-up, o cabeamento impõe um limite máximo na rapidez em que os dados podem
ser transferidos. Além disso, a falta de proteção torna o cabeamento suscetível à interferência, o
que pode degradar substancialmente o desempenho para alguns assinantes.
Em um esforço para superar as limitações do cabeamento de par trançado, os pesquisadores
investigaram tecnologias com e sem-fio para o uso no loop local. Uma tecnologia alternativa
distingue-se como particularmente atraente porque oferece velocidade mais alta do que o
cabeamento telefônico, é menos suscetível à interferência eletromagnética e não exige uma infraestrutura completamente nova: televisão a cabo1. Além disso, muitas áreas residenciais já têm
instalação de TV a cabo disponível.
Um sistema de TV a cabo tem quase todas as facilidades necessárias para o envio de
informações digitais downstream em alta velocidade. O meio consiste em cabo coaxial, que tem
alta capacidade e é imune à interferência eletromagnética, e no hardware de sistema de cabo que
usa sinalização de banda larga (ou seja, multiplexação por divisão de freqüência) para transmitir
múltiplos canais de televisão simultaneamente. Mais importante, como os sistemas de cabo são
projetados para transportar mais sinais de televisão do que aqueles que estão atualmente
disponíveis, o hardware tem largura de banda ociosa (ou seja, canais) que pode ser usada para
enviar dados. As vantagens têm sido suficientes para estimular a pesquisa.
Em teoria, é possível estender um sistema de cabo para enviar informações digitais
downstream usando multiplexação de divisão de frequência. Para fazer isso, é necessário um par
de modems de cabo (cable modem) para cada assinante. Um modem reside na central da TV a
cabo e o outro no site do assinante. Ambos os modems de um dado par devem estar sintonizados
para operar na mesma frequência portadora, que é multiplexada no cabo junto a sinais de televisão.
Os dados passados ao modem na central da TV a cabo são codificados na portadora, que é então
difundida através do cabo para todos os assinantes. Um modem equivalente na localização do
assinante escolhe o sinal de portadora, extrai as informações digitais codificadas e passa a
informação resultante ao computador do assinante.
Na prática, porém, mesmo a grande largura de banda disponível em sistemas de TV a cabo
não é suficiente para tratar de um esquema de multiplexação por divisão de frequência que se
1
Formalmente, a tecnologia é conhecida como Community Antenna TeleVision (CATV).
84
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
estenda a cada usuário. Para entender por quê, considere o número de assinantes e lembre-se de
que as frequências da portadora devem ser separadas uma das outras para evitar interferência. Em
uma grande área metropolitana, um único provedor de cabo pode ter milhões de assinantes,
impossibilitando que se aloque uma frequência portadora separada para cada assinante. Como
resultado, o esquema de multiplexação de divisão de frequência não é escalável.
Os engenheiros têm explorado várias formas de se tratar do problema da multiplexação
downstream de sinais. Uma solução é uma forma de multiplexação por divisão de tempo. Em
vez de designar uma frequência única para cada assinante, a empresa de cabo usa uma frequência
para um conjunto de assinantes. Além disso, um endereço é associado a cada assinante. O modem
de um assinante escuta a frequência designada para os pacotes que são recebidos. Antes de aceitar
um pacote, o dispositivo verifica se o endereço de destino combina com o endereço designado
para o assinante. Essencialmente, a porção de dados do sistema de hardware de cabo se assemelha
a um conjunto de LANs compartilhadas, ao contrário de um conjunto de links ponto a ponto.
Do ponto de vista de um assinante, o compartilhamento da largura de banda com outros
assinantes pode ser uma desvantagem. Embora os modems de cabo possam entregar até 36 Mbps,
a taxa de dados efetiva disponível para cada estação individual varia com o passar do tempo. Se
N assinantes compartilham uma única frequência, a capacidade disponível para um assinante
individual pode chegar a 1/N.
85
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Arquitetura TCP/IP
7.1
A Motivação para Ligação Inter-redes
Cada tecnologia de rede é projetada para satisfazer um conjunto específico de restrições.
Por exemplo, as tecnologias de LAN são projetadas para fornecer comunicação de alta velocidade
através de pequenas distâncias, enquanto que as tecnologias de WAN são projetadas para fornecer
comunicação através de áreas geograficamente distantes, consequentemente, não há uma única
tecnologia de rede que seja a melhor para todas as necessidades.
Uma organização grande, com requisitos de redes diversos, precisa de múltiplas redes
físicas. Mais importante, se a organização escolhe o tipo de rede que é melhor para cada tarefa, a
organização terá vários tipos de redes. Por exemplo, uma tecnologia de LAN como Ethernet
poderia ser a melhor solução por conectar vários computadores em um escritório, mas um serviço
de Frame Relay poderia ser usado para interconectar computadores em uma cidade.
7.2
O Conceito de Serviço Universal
O principal problema com múltiplas redes deveria ser óbvio: um computador acoplado a
uma determinada rede pode se comunicar somente com outros computadores acoplados à mesma
rede. O problema se tornou evidente nos anos 70 quando grandes organizações começaram a
adquirir múltiplas redes. Cada rede na organização formou uma ilha. Em muitas instalações
iniciais, cada computador estava acoplado a uma única rede e os funcionários tinham que escolher
um computador apropriado para cada tarefa. Isto é, um funcionário recebia acesso a múltiplas
telas e teclados, e era forçado a se mover de um computador a outro para enviar uma mensagem
através da rede apropriada.
Os usuários não ficam satisfeitos nem são produtivos quando têm que usar um computador
separado para cada rede. Conseqüentemente, a maioria dos sistemas de comunicação modernos
permite a comunicação entre quaisquer dois computadores de maneira análoga a um sistema
telefônico que fornece comunicação entre quaisquer dois telefones. Conhecido como serviço
universal, o conceito é uma parte fundamental da área de redes. Com o serviço universal, um
usuário em qualquer computador em qualquer parte de uma organização pode enviar mensagens
ou dados para qualquer outro usuário. Além disso, um usuário não precisa mudar de sistema de
computador quando muda tarefas – todas as informações estão disponíveis para todos os
computadores. Como resultado, os usuários são mais produtivos.
7.3
Serviço Universal em um Mundo Heterogêneo
O serviço universal significa que uma organização precisa adotar uma única tecnologia de
rede, ou é possível ter serviço universal através de múltiplas redes que múltiplas tecnologias? É
sabido que incompatibilidades elétricas impossibilitam a formação de uma grande rede apenas se
interconectando os fios de duas redes. Além disso, técnicas de extensão como ligação com
bridges não podem ser usadas com tecnologias de rede heterogêneas porque tecnologias diferentes
usam formatos de pacote e esquemas de endereçamento incompatíveis. Deste modo, um quadro
criado para uma tecnologia de rede não pode ser transmitido em uma rede que usa uma tecnologia
diferente.
86
Apostila de Fundamentos de Redes de Computadores
7.4
Prof: Ricardo Quintão
Ligação Inter-redes
Apesar das incompatibilidades entre tecnologias de rede, os pesquisadores inventaram um
esquema que fornece serviço universal entre redes heterogêneas. O esquema, chamado ligação
inter-redes, utiliza hardware e software. Os sistemas de hardware adicionais são usados para
interconectar um conjunto de redes físicas. O software em todos os computadores acoplados,
então, fornece serviço universal. O sistema que resulta das redes físicas conectadas é conhecido
como uma inter-rede (internet).
A ligação inter-redes é bastante geral. Em particular, uma inter-rede não é restrita em
tamanho. Existem inter-redes que contêm algumas redes e existem inter-redes que contêm
milhares de redes. Semelhantemente, o número de computadores acoplados a cada rede em uma
inter-rede pode variar. Algumas redes não têm nenhum computador acoplado, enquanto outras
têm centenas.
7.5
Conexão de Rede Física com Roteadores
O componente básico de hardware usado para conectar redes heterogêneas é um roteador.
Fisicamente, os roteadores se assemelham a bridges. Cada roteador é um computador de
propósito específico dedicado à tarefa de interconectar redes. Como uma bridge, um roteador tem
um processador e memória convencional, como também uma interface de E/S separada para cada
rede que conecta. A rede trata uma conexão com um roteador da mesma forma que uma conexão
com qualquer outro computador. A Figura 7.1 mostra que a conexão física de redes com um
roteador é direta.
Figura 7.1 – Duas redes físicas conectadas por um roteador.
A Figura 7.1 usa uma nuvem para representar cada rede em vez de uma linha ou um círculo
porque as conexões de roteadores não são restritas a uma determinada tecnologia de rede. Um
roteador pode conectar duas LANs, uma LAN e uma WAN, ou duas WANs. Além disso, quando
um roteador conectar duas redes na mesma categoria geral, as redes não precisam usar a mesma
tecnologia. Por exemplo, um roteador pode conectar uma LAN Ethernet com uma LAN FDDI
(fibra óptica). Deste modo, cada nuvem representa uma tecnologia de rede arbitrária.
7.6
Arquitetura de Inter-rede
Os roteadores possibilitam a uma organização escolher tecnologias de rede apropriadas para
cada necessidade e usar roteadores para conectar todas as redes em uma única inter-rede. Por
exemplo, a Figura 7.2 mostra como podem ser usados três roteadores para se conectar quatro redes
físicas arbitrárias em uma inter-rede.
Figura 7.2 – Uma inter-rede formada usando três roteadores.
Embora a Figura 7.2 mostre cada roteador com exatamente duas conexões, os roteadores
comerciais podem conectar mais de duas redes. Deste modo, um único roteador poderia conectar
87
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
todas as quatro redes em nosso exemplo. Porém, uma organização raramente usa um único
roteador para conectar todas as suas redes. Existem duas razões:

Como a CPU e a memória em um roteador são usadas para processar cada pacote, o
processador em um roteador é insuficiente para tratar do tráfego que passa entre um
número arbitrário de redes;

Redundância melhora a confiabilidade da inter-rede. O software de protocolo
continuamente monitora as conexões entre redes e instrui os roteadores para enviar
tráfego através de caminhos alternativos quando uma rede ou roteador falha.
Deste modo, ao planejar uma inter-rede, uma organização deve escolher um projeto que vá
ao encontro das suas necessidades em relação à confiabilidade, à capacidade e ao custo. Em
particular, os detalhes exatos da topologia de inter-rede frequentemente dependem da largura de
banda das redes físicas, do tráfego esperado, dos requisitos de confiabilidade da organização e do
custo do hardware de roteador disponível.
7.7
Obtendo Serviço Universal
A meta da ligação inter-redes é o serviço universal através de redes heterogêneas. Para
fornecer serviço universal entre todos os computadores em uma inter-rede, os roteadores devem
concordar em encaminhar informações de uma origem em uma rede para um destino especificado
em outra. A tarefa é complexa porque formatos de quadros e esquemas de endereçamento usados
pelas redes subjacentes podem diferir. Como resultado, é necessário software de protocolo em
computadores e roteadores para possibilitar o serviço universal.
7.8
Uma Rede Virtual
Em geral, o software de inter-rede fornece a ilusão de um único sistema integrado de
comunicação ao qual muitos computadores são acoplados. O sistema oferece serviço universal:
a cada computador é atribuído um endereço, e qualquer computador pode enviar um pacote para
qualquer outro computador. Além disso, o software de protocolo de inter-rede esconde os detalhes
de conexão de rede física, endereços físicos e informações de roteamento. Nem usuários nem
programas aplicativos estão cientes das redes físicas subjacentes ou dos roteadores que as
conectam.
Dizemos que uma inter-rede é um sistema de rede virtual porque o sistema de comunicações
é uma abstração. Isto é, embora uma combinação de hardware e software forneça a ilusão de um
sistema de rede uniforme, tal rede não existe. A Figura 7.3 mostra o conceito de rede virtual como
também uma estrutura física correspondente.
88
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura 7.3 – O conceito de inter-rede.
7.9
Protocolos para Ligação Inter-redes
Embora muitos protocolos têm sido adaptados para o uso em inter-redes, um pacote
distingue-se como o mais extensamente usado para a ligação inter-redes. O pacote é formalmente
conhecido como Os Protocolos de Internet TCP/IP (TCP – Transfer Control Protocol; IP –
Internet Protocol). A maioria dos profissionais de redes se refere a eles simplesmente como
TCP/IP.
O TCP/IP foi o primeiro conjunto de protocolos desenvolvido para o uso em uma inter-rede.
De fato, os pesquisadores que inventaram o TCP/IP desenvolveram também a arquitetura de interrede descrita anteriormente neste capítulo. O trabalho com TCP/IP começou nos anos 70,
aproximadamente ao mesmo tempo em que as redes locais estavam sendo desenvolvidas. O
exército dos EUA fundamentou boa parte da pesquisa em TCP/IP e a ligação inter-redes através
da ARPA (Advanced Research Projects Agency). O exército estava entre as primeiras
organizações a ter múltiplas redes físicas. Consequentemente, o exército foi um dos primeiros a
perceber a necessidade do serviço universal. Pela metade dos anos 80, a National Science
Foundation e outras agências do governo dos EUA estavam financiando o desenvolvimento do
TCP/IP e uma grande inter-rede que seria usada para testar protocolos.
7.10 Arquitetura TCP/IP
A pesquisa em protocolos de ligação inter-redes e TCP/IP produziu resultados drásticos. A
ligação inter-redes se tornou uma das idéias mais importantes na área moderna de redes. De fato,
a tecnologia de inter-rede revolucionou a comunicação entre computadores. A maioria das
grandes organizações já usa ligação inter-redes como mecanismo primário de comunicação entre
computadores. Organizações menores e os próprios indivíduos estão começando a fazer o mesmo.
Mais importante, além de inter-redes privadas, a tecnologia de TCP/IP possibilitou uma inter-rede
89
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
global (Internet) que alcança mais de 36 milhões de computadores em escolas, organizações
comerciais e sites governamentais e militares em mais de 107 países em todo mundo.
A demanda mundial para produtos de ligação inter-redes afetou a maioria das empresas que
vendem tecnologias de rede. A competição aumentou porque foram criadas novas empresas para
vender o hardware e software necessário para a ligação inter-redes. Além disso, muitas empresas
modificaram seus projetos de protocolo para acomodar a ligação inter-redes. Em particular, a
maioria dos protocolos de rede foram originalmente projetados para funcionar com uma
tecnologia de rede e uma rede física de cada vez. Para fornecer capacidade de ligação inter-redes,
as empresas estenderam os projetos de duas maneiras: os protocolos foram adaptados para
funcionar com muitas tecnologias de rede e foram acrescentadas novas características que
permitem aos protocolos transferir dados através de uma inter-rede.
7.11 Divisão em Camadas do Protocolo TCP/IP
O modelo OSI de referência de 7 camadas visto no Capítulo 3 foi criado antes de a ligação
inter-redes ser inventada. Consequentemente, o modelo não contém uma camada para protocolos
de inter-rede. Além disso, o modelo de referência de 7 camadas dedica uma camada inteira a
protocolos de sessão, que se tornaram muito menos importantes à medida que os sistemas de
computadores mudaram de grandes sistemas de tempo compartilhado para workstations pessoais.
Como resultado, os pesquisadores que desenvolveram o TCP/IP inventaram um novo modelo em
camadas.
O modelo de camadas do TCP/IP, que é também chamado de Modelo de Camadas Interredes ou o Modelo de Referência de Inter-redes contém cinco ou quatro camadas dependendo do
autor, como mostra a Figura 7.4.
Camada 5
Camada 4
Camada 3
Camada 2
Camada 1
Aplicação
Transporte
Internet (Rede)
Interface de
Rede
Física
Camada 4
Camada 3
Camada 2
Aplicação
Transporte
Internet (Rede)
Camada 1
Enlace
Figura 7.4 – As camadas do modelo de referência TCP/IP.
Quatro das camadas no modelo de referência TCP/IP correspondem a uma ou mais camadas
no modelo de referência OSI. Porém, o modelo OSI não tem nenhuma camada de Inter-rede.
Abaixo é feito um resumo do propósito de cada camada.
Camada 1: Física
A Camada 1 corresponde ao hardware de rede básico da mesma maneira que
na Camada 1 no modelo de referência OSI de 7 camadas.
Camada 2: Interface de Rede
Os protocolos da Camada 2 especificam como organizar dados em quadros e
como um computador transmite quadros através de uma rede, semelhantemente
aos protocolos da Camada 2 no modelo de referência OSI.
Camada 3: Inter-rede
Os protocolos da Camada 3 especificam o formato dos pacotes enviados
através de uma inter-rede como também os mecanismos usados para
encaminhar pacotes a partir de um computador através de um ou mais
roteadores até um destino final.
90
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Camada 4: Transporte
Os protocolos da Camada 4, como a Camada 4 no modelo OSI, especificam
como assegurar transferência confiável.
Camada 5: Aplicação
A Camada 5 corresponde às camadas 6 e 7 no modelo OSI. Cada protocolo da
Camada 5 especifica como um aplicativo usa uma inter-rede.
O TCP/IP define o termo computador host para se referir a qualquer sistema de computador
que esteja conectado a uma inter-rede e execute aplicativos. Um host pode ser tão pequeno quanto
um computador pessoal ou tão grande quanto um mainframe. Além disso, a CPU de um host
pode ser lenta ou rápida, a memória pode ser grande ou pequena, e a rede a qual um host se conecta
pode operar em alta ou baixa velocidade. Os protocolos do TCP/IP possibilitam que qualquer par
de hosts se comunique, apesar das diferenças de hardware.
Ambos os hosts e roteadores precisam de software de protocolo TCP/IP. Porém, os
roteadores não usam protocolos de todas as camadas. Em particular, um roteador não precisa dos
protocolos da Camada 5 para aplicativos como transferência de arquivos porque roteadores não
executam tais aplicativos1.
7.12 Endereços para a Inter-rede Virtual
A meta da ligação inter-redes é fornecer um sistema de comunicação integrado. Para obter
essa meta, o software de protocolo de inter-rede deve esconder os detalhes de redes físicas e
oferecer as facilidades de uma grande rede virtual. A inter-rede virtual opera bastante como
qualquer outra rede, permitindo aos computadores enviar e receber pacotes de informações. A
diferença principal entre uma inter-rede e uma rede física é que uma inter-rede é somente uma
abstração imaginada por seus projetistas e criada completamente por software. Os projetistas têm
a liberdade para escolher endereços, formatos de pacote e técnicas de entrega independentes dos
detalhes do hardware físico.
O endereçamento é um componente crítico da abstração de inter-rede. Para dar a aparência
de um sistema único uniforme, todos os computadores devem usar um esquema de endereçamento
uniforme, e cada endereço deve ser único. Infelizmente, não bastam endereços físicos de rede,
porque uma inter-rede pode incluir múltiplas tecnologias de rede, e cada tecnologia define seu
próprio formato de endereço. Deste modo, os endereços usados por duas tecnologias podem ser
incompatíveis pois possuem tamanhos ou formatos diferentes.
Para garantir o endereçamento uniforme para todos os hosts, o software de protocolo define
um esquema de endereçamento que é independente dos endereços físicos subjacentes. Embora
um esquema de endereçamento de inter-rede seja uma abstração criada por software, são usados
endereços de protocolo como destino de inter-rede virtual analogamente à forma com que os
endereços de hardware são usados como destino em uma rede física. Para enviar um pacote
através de uma inter-rede, o remetente coloca o endereço de destino do protocolo no pacote e
passa o pacote para o software de protocolo para entrega. O software usa o endereço de destino
do protocolo quando encaminha o pacote através da inter-rede para o computador de destino.
O endereçamento uniforme ajuda a criar a ilusão de uma grande rede integrada porque
esconde os detalhes sobre os endereços de rede física subjacente. Dois programas aplicativos
podem se comunicar sem saber o endereço de hardware do outro. A ilusão é tão completa que
alguns usuários ficam surpresos ao saber que endereços de protocolo são fornecidos via software
1
Alguns roteadores, na verdade, rodam aplicativos que permitem a um gerente administrar o roteador remotamente (por
exemplo, mudar a configuração ou corrigir problemas).
91
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
e não são parte do sistema do computador. Interessantemente, aprenderemos que muitas camadas
de software de protocolo usam também endereços de protocolo.
7.12.1 O Esquema de Endereços IP
Na pilha de protocolos TCP/IP, o endereçamento é especificado pelo Protocolo de
Internet (IP). O padrão IP especifica que a cada host é atribuído um número de 32 bits único
conhecido como endereço de Protocolo de Internet do host, que é frequentemente abreviado
como endereço IP, ou endereço de Internet. Cada pacote enviado através de uma inter-rede
contém o endereço IP de 32 bits do remetente (origem) como também o receptor pretendido
(destino). Deste modo, para transmitir informações através de uma inter-rede TCP/IP, um
computador deve conhecer o endereço IP do computador remoto para o qual as informações
estão sendo enviadas.
7.12.2 A Hierarquia de Endereços IP
Conceitualmente, cada endereço IP de 32 bits é dividido em duas partes: prefixo e
sufixo; a hierarquia de dois níveis é projetada para fazer uso eficiente de roteamento. O
prefixo do endereço identifica a rede física ao qual o computador está acoplado, enquanto o
sufixo identifica um computador naquela rede. Isto é, a cada rede física em uma inter-rede é
atribuído um valor único conhecido como número de rede (network number). O número de
rede aparece como um prefixo no endereço de cada computador acoplado à rede. Além disso,
a cada computador em uma determinada rede física é atribuído um sufixo de endereço único.
Embora não possa ser atribuído a duas redes o mesmo número de rede, e dois
computadores na mesma rede não possam ser designados com o mesmo sufixo, um valor de
sufixo pode ser usado em mais de uma rede. Por exemplo, se uma inter-rede contém três
redes, elas poderiam ser designadas com números de rede 1, 2 e 3. Três computadores
acoplados à rede 1 podem ser designados com os sufixos 1, 3 e 5, enquanto três computadores
acoplados à rede 2 podem ser designados com os sufixos 1, 2 e 3.
A hierarquia de endereços IP garante duas propriedades importantes:

A cada computador é atribuído um endereço único (isto é, um único endereço nunca
é atribuído a mais de um computador);

Embora as designações de números de rede devam ser coordenadas globalmente, os
sufixos podem ser atribuídos localmente sem coordenação global.
A primeira propriedade é garantida porque um endereço completo contém prefixo e
sufixo, que são atribuídos para assegurar a unicidade. Se dois computadores estão acoplados
a redes físicas diferentes, seus endereços têm prefixos diferentes. Se dois computadores estão
acoplados à mesma rede física, seus endereços têm sufixos diferentes.
7.12.3 Classes de Endereços IP
Uma vez que os projetistas do IP escolheram um tamanho para endereços IP e
decidiram dividir cada endereço em duas partes, eles tiveram que determinar quantos bits
colocar em cada parte. O prefixo precisa de bits suficientes para permitir que um número de
rede único seja atribuído a cada rede física em uma inter-rede. O sufixo precisa de bits
suficientes para permitir que a cada computador acoplado a uma rede seja atribuído um sufixo
único. Nenhuma escolha simples foi possível porque acrescentar bits a uma parte significa
subtrair bits da outra. Escolher um prefixo grande acomoda muitas redes, mas limita o
tamanho de cada rede; escolher um sufixo grande significa que cada rede física pode conter
muitos computadores, mas limita o número de redes.
92
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Como uma inter-rede pode incluir tecnologias de rede arbitrárias, uma inter-rede
poderia ser construída de algumas redes físicas grandes, enquanto outras poderiam consistir
em muitas redes pequenas. Mais importante, uma única inter-rede pode conter uma mistura
de redes grandes e pequenas. Consequentemente, os projetistas escolheram um esquema de
endereçamento que é um meio-termo para acomodar uma combinação de redes grandes e
pequenas. O esquema divide o espaço de endereçamento IP em três classes primárias, onde
cada classe tem um prefixo e um sufixo de tamanhos diferentes.
Os primeiros quatro bits de um endereço determinam a classe a que o endereço pertence
e especificam como o restante do endereço é dividido em prefixo e sufixo. A Figura 7.5
mostra as cinco classes de endereços, os bits iniciais usados para identificar cada classe e a
divisão em prefixo e sufixo. A figura segue a convenção usada nos protocolos TCP/IP de
numerar bits da esquerda para a direita e usando zero para o primeiro bit.
Bits 
0
Classe A
0
Classe B
1
0
Classe C
1
1
0
Classe A
1
1
1
0
Classe D
1
1
1
1
1
2
3
8
1
6
Prefixo
2
4
3
1
Sufixo
Prefixo
Sufixo
Prefixo
Sufixo
Endereço Multicast
Reservado para uso futuro
Figura 7.5 – Divisão em Classes do endereçamento IP.
As classes A, B e C são chamadas de classes primárias porque são usadas para
endereços de hosts. A classe D é usada para multicasting, que permite a entrega a um
conjunto de computadores1. Para usar IP multicasting, um conjunto de hosts deve concordar
em compartilhar um endereço multicast. Uma vez que o grupo multicast foi estabelecido,
uma cópia de qualquer pacote enviado para o endereço multicast será entregue para cada host
no conjunto.
Como mostra a Figura 7.5, as classes primárias usam limites de octeto para dividir um
endereço em prefixo e sufixo. A classe A coloca a divisão entre o primeiro e o segundo
octetos. A classe B coloca o limite entre o segundo e o terceiro octetos, e a classe C coloca
o limite entre o terceiro e o quarto octetos.
7.12.4 Computando a Classe de um Endereço
O software IP computa a classe do endereço de destino sempre que recebe um pacote.
Como a computação é frequentemente repetida, ela de ser eficiente. Os endereços IP são
chamados de auto-identificadores porque a classe de um endereço pode ser computada a
partir do endereço propriamente dito.
Parte da motivação para se usar bits iniciais para denotar uma classe de endereço em
vez de usar uma faixa de valores advém de considerações computacionais: usar bits pode
diminuir o tempo de computação. Em particular, alguns computadores podem examinar bits
mais rapidamente do que podem comparar inteiros. Por exemplo, em um computador que
inclui instruções booleanas and, deslocamento (shift) e pesquisa de índice, quatro bits de
endereço podem ser extraídos e usados como um índice em uma tabela para determinar a
classe de endereço. A Tabela 7.1 mostra o conteúdo de uma tabela usada na computação.
1
IP multicasting é análogo ao multicasting por hardware. Em ambos os casos, os endereços multicast são opcionais, e
mesmo quando um computador participa em um multicast, ele sempre retém seu endereço individual.
93
Apostila de Fundamentos de Redes de Computadores
Primeiros Quatro
Bits do Endereço
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Índice da Tabela
(em decimal)
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Prof: Ricardo Quintão
Classe do
endereço
A
A
A
A
A
A
A
A
B
B
B
B
C
C
D
E
Tabela 7.1 – Relação dos primeiros 4 bits com a classe de um endereço IP.
7.12.5 Notação Decimal Pontilhada
Embora os endereços IP sejam números de 32 bits, os usuários raramente entram ou
lêem os valores em binário. Em vez disso, quando está interagindo com um usuário, o
software usa uma notação que é mais conveniente para as pessoas entenderem. Chamada de
notação decimal pontilhada (dotted decimal notation), a forma expressa cada seção de 8 bits
de um número de 32 bits como um valor decimal e usa pontos para separar as seções. A
Tabela 7.2 mostra alguns exemplos de números binários e as formas decimais pontilhadas
equivalentes.
Número Binário de 32 bits
10000001.00110100.00000110.00000000
11000000.00000101.00110000.00000011
00001010.00000010.00000000.00100101
10000000.00001010.00000010.00000011
10000000.10000000.11111111.00000000
Notação Decimal Pontilhada Equivalente
129.52.6.0
192.5.48.3
10.2.0.37
128.10.2.3
128.128.255.0
Tabela 7.2 – Exemplos de Endereços IP em Binário e Notação Decimal Pontilhada.
A notação decimal pontilhada trata cada octeto como um inteiro binário sem sinal.
Como mostra o exemplo final na figura, o menor valor possível, 0 (zero), acontece quando
todos os bits de um octeto são zero, e o maior valor possível, 255, acontece quando todos os
bits de um octeto são um. Deste modo, os endereços em notação decimal pontilhada variam
de 0.0.0.0 à 255.255.255.255.
7.12.6 Classes e Notação Decimal Pontilhada
A notação decimal pontilhada trabalha bem com endereços IP porque o IP usa limites
de octeto para separar um endereço em prefixo e sufixo. Em um endereço classe A, os
últimos três octetos correspondem a um sufixo de host. Semelhantemente, os endereços
classe B têm dois octetos de sufixo de host, e os endereços de classe C tem um octeto.
94
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Infelizmente, como a notação decimal pontilhada não mostra os bits individuais de um
endereço, a classe deve ser reconhecida a partir do valor decimal do primeiro octeto. A
Tabela 7.3 mostra o alcance decimal de valores para cada classe.
Classe
A
B
C
D
E
Faixa de Valores
Binário
Decimal
0000 0000 até 0111 1111 0 até 127
1000 0000 até 1011 1111 128 até 191
1100 0000 até 1101 1111 192 até 223
1110 0000 até 1110 1111 224 até 239
1111 0000 até 1111 1111 240 até 255
Tabela 7.3 – Faixa de Valores do Primeiro Octeto para as Classes IP.
7.12.7 Autoridade para Endereços
Na inter-rede como um todo, cada prefixo de rede deve ser único. Para as redes
conectadas à Internet global, uma organização obtém números de rede da empresa de
comunicação que fornece conexões de Internet. Tais empresas são chamadas de ISPs
(Internet Service Providers – Provedores de Serviço de Internet). Provedores de Serviço de
Internet coordenam com uma organização central, a IANA (Internet Assigned Number
Authority – Autoridade para Designação de Números de Internet), para assegurar que cada
prefixo de rede seja único ao longo de toda a Internet.
Para uma inter-rede privada, a escolha de prefixo de rede pode ser feita pela
organização. Para assegurar que cada prefixo seja único, um grupo que constrói uma interrede privada deve decidir como coordenar números de rede. Freqüentemente, um único
administrador da rede atribui prefixos a todas as redes na inter-rede da empresa para assegurar
que os números não sejam duplicados.
7.12.8 Um Exemplo de Endereçamento IP
Um exemplo elucidará as idéias e explicará como os endereços são atribuídos na
prática. Considere uma organização que escolhe formar uma inter-rede TCP/IP privada que
consiste em quatro redes físicas. A organização deve comprar roteadores para interconectar
as quatro redes e então deve atribuir endereços IP. Para começar, a organização escolhe um
prefixo único para cada rede.
Ao designar um prefixo de rede, um número deve ser escolhido das classes A, B ou C.
A escolha depende do tamanho da rede física. Normalmente, redes são endereços de classe
C atribuídos, a menos que uma classe B seja necessária. A classe A é raramente justificada
porque poucas redes contêm mais de 65534 hosts. Para redes conectadas à Internet global,
um provedor de serviços faz a escolha. Para redes em uma inter-rede privada, o
administrador de rede local seleciona a classe.
Considere o exemplo de uma inter-rede privada descrita acima. O administrador de
rede estima o tamanho final de cada rede física e utiliza aquele tamanho para escolher um
prefixo. Se a organização espera uma rede pequena, duas redes de tamanho médio e uma
rede extremamente grande, o administrador poderia escolher atribuir um prefixo de classe C
(por exemplo: 192.5.48), dois prefixos de classe B (por exemplo: 128.10 e 128.211) e um
prefixo de classe A (por exemplo: 10). A Figura 7.6 ilustra uma inter-rede com quatro redes
físicas às quais foram atribuídos estes prefixos e mostra alguns exemplos de endereços IP
atribuídos aos hosts.
95
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura 7.6 – Uma inter-rede de exemplo privado com endereços IP atribuídos aos hosts.
Como mostra a figura, o endereço IP atribuído a um host sempre começa com o prefixo
que foi atribuído à rede física do host. Os sufixos, que são atribuídos pelo administrador de
rede local, podem ser números arbitrários. No exemplo, aos dois hosts conectados à rede
com prefixos 128.10 foram atribuídos sufixos 1 e 2. Embora muitos administradores
prefiram atribuir sufixos consecutivos, o IP não exige que um administrador assim o faça.
As atribuições de exemplos na figura mostram que os sufixos podem ser valores arbitrários
como 37 ou 85.
7.12.9 Endereços IP Especiais
Além de atribuir um endereço a cada computador, é conveniente ter endereços que
podem ser usados para denotar redes ou conjuntos de computadores. O IP define um conjunto
de formas de endereço especial que é reservado. Isto é, endereços especiais nunca são
atribuídos a hosts. Essa seção descreve a sintaxe e a semântica de cada forma de endereço
especial.
7.12.9.1 Endereço de Rede
Uma das motivações para definir formas de endereço especial pode ser vista na
Figura 7.6. É conveniente ter um endereço que possa ser usado para denotar o prefixo
atribuído a uma determinada rede. O IP reserva um endereço de host zero e o usa para
denotar uma rede. Deste modo, o endereço 128.211.0.0 denota a rede à qual foi atribuído
o prefixo de classe B 128.211.
O endereço de rede se refere à rede propriamente dita e não aos computadores de
host acoplados àquela rede. Deste modo, o endereço de rede nunca deveria aparecer em
um pacote.
7.12.9.2 Endereço de Broadcast Direcionado
Às vezes, é conveniente enviar uma cópia de um pacote para todos os hosts em
uma rede física. Para facilitar o broadcasting, o IP define um endereço de broadcast
dirigido para cada rede física. Quando um pacote é enviado para um endereço de
broadcast dirigido de uma rede, uma única cópia do pacote viaja através da inter-rede
até que ele alcance a rede especificada. O pacote é então entregue a todos os hosts na
rede.
96
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
O endereço de broadcast dirigido para uma rede é formado somando-se ao prefixo
de rede um sufixo que consiste em todos os bits 1. Para assegurar que cada rede possa
ter broadcast dirigido, o IP reserva o endereço de host que contém todos os bits 1. Um
administrador não deve atribuir a um computador específico o endereço de host com
tudo em zero ou tudo em um ou, caso contrário, o software pode não funcionar
corretamente.
Se um hardware de rede suporta broadcast, um broadcast dirigido será entregue
usando a capacidade de broadcast do hardware. Em tais casos, uma transmissão do
pacote alcançará todos os computadores na rede. Quando um broadcast dirigido for
enviado para uma rede que não tem suporte de hardware para broadcast, o software
deve enviar uma cópia separada do pacote para cada host na rede.
7.12.9.3 Endereço de Broadcast Limitado
O termo broadcast limitado se refere a um broadcast em uma rede física local.
Informalmente, dizemos que o broadcast é limitado a um “único fio”. O broadcast
limitado é usado durante a partida do sistema por um computador que ainda não sabe o
seu número de rede.
O IP reserva o endereço que consiste em todos os bits 1 para se referir ao broadcast
limitado. Deste modo, o IP irá transmitir um broadcast através da rede local qualquer
pacote enviado para o endereço que tenho todos os bits 1.
7.12.9.4 Endereço deste Computador
Um computador precisa saber seu endereço IP para enviar ou receber pacotes de
inter-rede porque cada pacote contém o endereço da origem e do destino. O conjunto
de protocolos TCP/IP contém protocolos que um computador pode usar para obter seu
endereço IP automaticamente quando o computador realiza o boot. Interessantemente,
os protocolos de inicialização (startup) usam IP para se comunicar. Ao usar tais
protocolos de inicialização, um computador não pode fornecer um endereço IP de
origem correto. Para tratar de tais casos, o IP reserva o endereço que consiste em todos
os bits zero para significar este computador.
7.12.9.5 Endereço de Loopback
O IP define um endereço de loopback usado para testar aplicativos de rede. Os
programadores frequentemente usam o teste de loopback para depuração preliminar
depois de ser criado um aplicativo de rede. Para executar um teste de loopback, um
programador deve ter dois programas aplicativos que planejam se comunicar através de
uma rede. Cada aplicativo inclui o código necessário para interagir com o software de
protocolo TCP/IP. Em vez de executar cada programa em um computador separado, o
programador executa ambos os programas em um único computador e os instrui para
usar um endereço de loopback IP ao se comunicar. Quando um aplicativo envia dados
para outro, os dados descem a pilha de protocolos até o software IP, que os encaminha
para cima através da pilha de protocolos até o segundo programa. Deste modo, o
programador pode testar rapidamente a lógica do programa sem precisar de dois
computadores e sem enviar pacotes através de uma rede.
O IP reserva o prefixo 127 de rede classe A para usar como loopback. O endereço
de host usado com 127 é irrelevante. Todos os endereços de host são tratados da mesma
forma. Por convenção, os programadores usam frequentemente o número de host 1,
tornando 127.0.0.1 a forma mais popular de loopback.
97
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Durante o teste de loopback, nenhum pacote deixa o computador. O software IP
encaminha pacotes de um programa aplicativo a outro. Consequentemente, o endereço
de loopback nunca aparece em um pacote que viaja através de uma rede.
7.12.9.6 Resumo de Endereços IP Especiais
A Tabela 7.4 resume as formas de endereço IP especiais. Dissemos que os
endereços especiais são reservados e nunca deveriam ser atribuídos a hosts. Além disso,
cada endereço especial é restrito para certos usos. Por exemplo, um endereço de
broadcast nunca deve aparecer como um endereço de origem, e o endereço com todos
os bits em zero não deve ser usado depois de um host completar o procedimento de
inicialização e obter um endereço IP.
Prefixo
Tudo em 0
Rede
Rede
Tudo em 1
127
Sufixo
Tudo em 0
Tudo em 0
Tudo em 1
Tudo em 1
Qualquer valor
Tipo de endereço
Este computador
Rede
Broadcast Dirigido
Broadcast Limitado
Loopback
Propósito
Usado durante o bootstrap
Identifica uma rede
Broadcast em rede específica
Broadcast na rede local
Testes
Tabela 7.4 – Resumo das formas de endereços IP especiais.
7.12.10 Divisão do Espaço de Endereçamento
O esquema de classe IP não divide o espaço de endereçamento de 32 bits em classes
de tamanho igual, e as classes não contêm o mesmo número de redes. Por exemplo, a metade
de todos os endereços IP (aqueles endereços em que o primeiro bit é zero) pertence à classe
A. Surpreendentemente, a classe A pode conter somente 128 redes porque o primeiro bit de
um endereço classe A deve ser zero e o prefixo ocupa um octeto. Deste modo, apenas sete
bits permanecem disponíveis para numerar as redes classe A. A Tabela 7.5 resume o número
máximo de redes disponíveis em cada classe e o número máximo de hosts por rede.
Como mostra a Tabela 7.5, o número de bits alocados a um prefixo ou sufixo determina
a quantidade de redes e de hosts únicos que podem ser atribuídos. Para calcular o total de
redes, eleva-se 2 ao total de bits do número de rede, isto é, TRedes  2 r , onde r é o total de bits
do número da rede. Para calcular o total de hosts disponíveis na rede, devemos realizar o
mesmo cálculo, só que com o total de bits referente ao host. Neste caso em especial, devese subtrair 2 ao total encontrado, pois temos dois endereços reservados em uma rede. O
endereço de rede e o endereço de broadcast. Sendo assim, o cálculo fica: THosts  2 h  2 ,
onde h representa o total de bits de host.
Classe
A
B
C
Bits no Prefixo
Total de Redes Bits no Sufixo Total de Hosts
7
128
24
16.777.214
14
16.384
16
65.534
21
2.097.152
8
254
Tabela 7.5 – Total de Redes e Hosts em cada Classe Primária.
7.12.11 Roteadores e o Princípio de Endereçamento IP
Além de designar um endereço de inter-rede para cada host, o IP especifica que os
roteadores deveriam ter endereços IP atribuídos também. De fato, cada roteador é designado
com dois ou mais endereços IP. Para entender por que, recorde dois fatos:

Um roteador tem conexões com múltiplas redes físicas;
98
Apostila de Fundamentos de Redes de Computadores

Prof: Ricardo Quintão
Cada endereço IP contém um prefixo que especifica uma rede física.
Deste modo, um único endereço IP não basta para um roteador, porque cada roteador
se conecta a múltiplas redes. O esquema IP pode ser explicado por um princípio fundamental:
um endereço IP não identifica um computador específico. Em vez disso, cada endereço IP
identifica uma conexão entre um computador e uma rede. Um computador com múltiplas
conexões de rede (por exemplo, um roteador) deve ser designado com um endereço IP para
cada conexão.
A Figura 7.7 ilustra a idéia em um exemplo que mostra endereços IP atribuídos a dois
roteadores que conectam três redes.
Figura 7.7 – Um exemplo de endereços IP atribuídos a dois roteadores.
O IP não exige que o mesmo sufixo seja atribuído a todas as interfaces de um roteador.
Na figura, por exemplo, o roteador conectando a Ethernet e a Token Ring tem sufixos 99.5
(conexão com a Ethernet) e 2 (conexão com a Token Ring). Porém, o IP não previne o uso
do mesmo sufixo em todas as conexões. Deste modo, o exemplo mostra que o administrador
escolheu usar o mesmo sufixo, 17, para ambas as interfaces do roteador que conecta a rede
de Token Ring com a WAN. Por uma questão prática, usar o mesmo sufixo pode ajudar as
pessoas que administram a inter-rede, porque um único número é mais fácil de lembrar.
7.12.12 Host Multi-Homed
Um host pode ter múltiplas conexões de rede? Sim. Um computador de host que
conecta múltiplas redes é chamado de multi-homed. Homing múltiplo é às vezes usado para
aumentar a confiabilidade. Se uma rede falha, o host pode ainda alcançar a inter-rede através
da segunda conexão. Alternativamente, homing múltiplo é usado para aumentar o
desempenho. Conexões com múltiplas redes podem possibilitar o envio de tráfego
diretamente e evitar roteadores, que estão às vezes congestionados. Como um roteador, um
host multi-homed tem múltiplos endereços de protocolo, um para cada conexão de rede.
7.12.13 Sub-redes
Como vimos, todos os hosts de uma rede devem ter o mesmo número de rede. Essa
propriedade do endereçamento IP poderá causar problemas à medida que as redes crescem.
Por exemplo, imagine uma universidade que começou com uma rede da classe B usada pelo
departamento de ciência da computação para os computadores em sua Ethernet. Um ano
mais tarde, o departamento de engenharia elétrica quis entrar na Internet, e assim comprou
um repetidor para estender a rede Ethernet do departamento de ciência da computação até
seu edifício. Com o tempo, muitos outros departamentos adquiriram computadores, e o
99
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
limite de quatro repetidores por rede Ethernet logo foi alcançado. Tornou-se necessária uma
organização diferente.
Seria difícil obter um segundo endereço de rede, pois os endereços de rede são escassos,
e a universidade já tinha endereços suficientes para 65.534 hosts. O problema é a regra
segundo a qual um único endereço da classe A, B ou C se refere a uma rede, e não a um
conjunto de LANs. À medida que mais e mais organizações se encontravam nessa situação,
era feita uma pequena mudança no sistema de endereçamento para lidar com ela.
A solução para esses problemas é permitir que uma rede seja dividida em diversas
partes para uso interno, mas externamente continue a funcionar como uma única rede. Hoje,
uma rede de campus típica seria semelhante à da Figura 7.8, com um roteador principal
conectado a um ISP ou a uma rede regional e numerosas redes Ethernet espalhadas pelo
campus em diferentes departamentos. Cada uma das redes Ethernet tem seu próprio roteador
conectado ao roteador principal (possivelmente por meio de uma LAN de backbone, mas a
natureza da conexão entre roteadores não é relevante nesse caso). Na literatura sobre
Internet, as partes da rede (nesse caso, redes Ethernet) são chamadas de sub-redes.
Figura 7.8 – Uma rede de campus consistindo em LANs para vários departamentos.
Quando um pacote entra no roteador principal, como este sabe para qual sub-rede
(Ethernet) deve entregar o pacote? Uma alternativa seria uma tabela com 65.534 entradas
no roteador principal, informando que roteador usar para cada host do campus. Essa ideia
funcionaria, mas iria exigir uma tabela muito grande no roteador principal e um grande
volume de manutenção manual, à medida que os hosts fossem acrescentados, movidos ou
retirados de serviço.
Em vez disso, foi criado um esquema diferente. Basicamente, em vez de ter um único
endereço da classe B com 14 bits para indicar o número da rede e 16 bits para indicar o
número do host, alguns bits são retirados do número do host para criar um número de subrede. Por exemplo, se a universidade tivesse 35 departamentos, ela poderia usar um número
de sub-rede de 6 bits e um número de host de 10 bits, permitindo até 64 redes Ethernet, cada
uma com o máximo de 1.022 hosts. Essa divisão poderia ser alterada mais tarde, caso ela se
mostrasse incorreta.
Para implementar a divisão em sub-redes, o roteador principal precisa de uma máscara
de sub-rede que indique a divisão entre o número de rede + sub-rede e o host, como mostra
a Figura 7.9. As máscaras de sub-redes também são escritas em notação decimal pontilhada,
com a inclusão de uma barra vertical seguida pelo número de bits na parte de rede + subrede. No exemplo da Figura 7.9, a máscara de sub-rede pode ser escrita como 255.255.252.0.
Uma notação alternativa é /22 para indicar que a máscara de sub-rede tem 22 bits.
100
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura 7.9 – Uma rede da classe B dividida em 64 sub-redes.
Fora da rede, a divisão em sub-redes não é visível, assim, a alocação de uma nova subrede não exige a intervenção do IANA ou a mudança de quaisquer bancos de dados externos.
Nesse exemplo, a primeira sub-rede pode usar os endereços IP a partir de 130.50.4.1, a
segunda sub-rede pode se iniciar em 130.50.8.1, a terceira sub-rede pode começar em
130.50.12.1 e assim por diante. Para ver por que as sub-redes estão sendo contadas de quatro
em quatro, observe que os endereços binários correspondentes são:
Sub-rede 1: 10000010.00110010.000001|00.00000001 130.50.4.1
Sub-rede 2: 10000010.00110010.000010|00.00000001  130.50.8.1
Sub-rede 3: 10000010.00110010.000011|00.00000001  130.50.12.1
Aqui a barra vertical ( | ) mostra o limite entre o número da sub-rede e o número de
host. À sua esquerda está o número de sub-rede de 6 bits; à sua direita está o número de host
de 10 bits.
Para ver como as sub-redes funcionam, é necessário explicar como os pacotes IP são
processados em um roteador. Cada roteador tem uma tabela que lista algum número de
endereços IP (rede, 0) e uma série de endereços IP (esta rede ou host). O primeiro tipo
informa como chegar a redes distantes. O segundo, como chegar a hosts locais. Associadas
a essa tabela estão a interface de rede usada para alcançar o destino e algumas outras
informações.
Quando um pacote IP é recebido, seu endereço de destino é procurado na tabela de
roteamento. Se o destino for uma rede distante, o pacote será encaminhado para o próximo
roteador da interface fornecida na tabela. Caso o destino seja um host local (por exemplo,
na LAN do roteador), o pacote será enviado para um roteador predefinido que tenha tabelas
maiores. Esse algoritmo significa que cada roteador só precisa controlar as outras redes e
hosts locais, deixando de lado os pares (rede, host), o que reduz muito o tamanho da tabela
de roteamento.
Quando a divisão em sub-redes é introduzida, as tabelas de roteamento são alteradas
acrescentando-se entradas da forma (rede, sub-rede, 0) e (esta rede, esta sub-rede, host).
Sendo assim, um roteador da sub-rede k sabe como alcançar todas as outras sub-redes, e
também como chegar a todos os hosts da sub-rede k. Ele não precisa saber detalhes sobre os
hosts de outras sub-redes. Na realidade, a única modificação é fazer com que cada roteador
seja submetido a um AND booleano com a máscara de sub-rede, a fim de eliminar o número
do host e pesquisar o endereço resultante em suas tabelas (depois de determinar qual é a
classe da rede). Por exemplo, um pacote endereçado a 130.50.15.6 recebido no roteador
principal passa pela operação AND booleana com a máscara de sub-rede 255.255.252.0 para
gerar o endereço 130.50.12.0. Esse endereço é usado para acessar as tabelas de roteamento
com a finalidade de descobrir que linha de entrada usar para chegar ao roteador
correspondente à sub-rede 3. Desse modo, a divisão em sub-redes reduz o espaço na tabela
do roteador, criando uma hierarquia de três níveis que consiste em rede, sub-rede e host.
101
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
7.13 Técnicas para Resolução de Endereços
Anteriormente foi visto o esquema de endereço do TCP/IP (onde cada host recebe um
endereço de 32 bits) e também foi visto que uma inter-rede se comporta como uma rede virtual,
usando apenas os endereços atribuídos ao enviar e receber pacotes. Também foi visto
anteriormente que duas máquinas em uma determinada rede física só podem se comunicar se
conhecerem o endereço físico uma da outra, com exceção dos casos de broadcasting. O que não
foi mencionado é como um host ou um roteador mapeia um endereço IP para o endereço físico
correto quando precisa enviar um pacote por uma rede física. Veremos agora como este
mapeamento é implementado para os dois esquemas de endereço físico de rede mais comuns.
7.13.1 O Problema da Tradução de Endereço
Considere duas máquinas A e B que se conectam à mesma rede física. Cada uma possui
um endereço IP atribuído IA e IB e um endereço físico FA e FB. Por fim, a comunicação
precisa ser executada pelas redes físicas usando qualquer esquema de endereço físico que o
hardware da rede subjacente fornece. Nosso objetivo, porém, é idealizar o software que
esconde os endereços físicos e permite que programas de alto nível trabalhem apenas com
endereços IP. Por exemplo, considere que a máquina A precise enviar um datagrama à
máquina B pela rede física à qual ambas se conectam, mas A só conhece o endereço IP de B,
IB. Surge a pergunta: como A mapeia o endereço IP de B (IB) no endereço físico de B (FB)?
O mapeamento de endereços precisa ser realizado a cada passo ao longo do caminho
desde a origem até o destino final. Em particular, surgem dois casos. Primeiro, no último
passo da entrega de um datagrama, o datagrama precisa ser enviado por uma rede física até
o destino final. O computador que envia o datagrama precisa mapear o endereço IP do
destino final para o endereço físico do destino antes que a transmissão seja possível. Em
segundo lugar, em qualquer ponto ao longo do caminho da origem ao destino, fora o passo
final, o datagrama precisa ser enviado a um roteador intermediário. Assim, o emissor precisa
mapear o endereço IP do roteador intermediário para o endereço físico.
O problema de mapear os endereços de alto nível em endereços físicos é conhecido
como problema de resolução e foi resolvido de várias maneiras. Alguns pacotes de
protocolos mantêm tabelas em cada máquina, contendo pares de endereços de alto nível e
físicos. Outros protocolos resolvem o problema codificando endereços físicos em endereços
de alto nível. O uso de qualquer uma das técnicas de forma exclusiva torna o endereçamento
de alto nível, no mínimo, desajeitado. Aqui serão discutidas duas técnicas para tradução de
endereços usados pelos protocolos TCP/IP, e mostra quando cada uma é apropriada.
7.13.2 Dois Tipos de Endereços Físicos
Existem dois tipos básicos de endereços físicos: endereços grandes e fixos, como
aqueles usados com Ethernet, e endereços pequenos e facilmente configurados. O TCP/IP
pode acomodar cada um, mas a popularidade da Ethernet significa que a maior parte de todo
o hardware de rede atualmente utiliza endereços grandes. Portanto, consideraremos os
endereços pequenos rapidamente, concentrando-se nos endereços grandes.
7.13.3 Tradução por Mapeamento Direto
Considere o hardware de rede que usa inteiros pequenos e configuráveis, como
endereços físicos. Sempre que um novo computador é acrescentado a essa rede, o
administrador do sistema escolhe um endereço físico e configura a placa de interface de rede
do computador. A única regra importante é que dois computadores não podem ter o mesmo
endereço. Para tornar a atribuição fácil e segura, um administrador normalmente atribui
102
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
endereços sequencialmente: o primeiro computador na rede recebe o endereço 1, o segundo
computador recebe o endereço 2, e assim por diante.
A chave para fazer a tradução de endereço funcionar com esse hardware de rede está
na observação de que, enquanto alguém tem a liberdade de escolher os endereços IP e físico,
os endereços podem ser selecionados de modo que partes deles sejam idênticas. Em
particular, o endereço IP de um computador pode ter uma parte hostid igual ao endereço
físico. Por exemplo, suponha que o prefixo para uma rede seja 192.5.48.0 com o prefixo de
rede ocupando os três primeiros octetos. O primeiro computador na rede recebe endereço
físico 1 e endereço IP 192.5.48.1, o segundo computador recebe o endereço físico 2 e o
endereço IP 192.5.48.2, e assim por diante. Essencialmente, cada endereço IP na rede
codifica o endereço físico do computador no octeto de baixa ordem.
Se o endereço IP codifica o endereço físico, a tradução de endereço é trivial. No
exemplo anterior, se o software receber o endereço IP de um computador na rede (por
exemplo, 192.5.48.3), o endereço físico correspondente pode ser calculado extraindo o octeto
de baixa ordem. Dizemos que a tradução é realizada pelo mapeamento direto. Por exigir
apenas algumas instruções de máquina, o mapeamento de exemplo é computacionalmente
eficaz e não envolve referências a dados externos. Finalmente, novos computadores podem
ser acrescentados à rede sem alterar as atribuições existentes ou propagar informações para
computadores existentes.
Matematicamente, mapeamento direto significa selecionar uma função f que mapeia
endereços IP para endereços físicos, e resolver o endereço IP IA significa calcular FA  f (I A )
.
Embora seja possível escolher mapeamentos diferentes desse exemplo, queremos que
o cálculo de f seja eficiente, e queremos que as escolhas sejam fáceis para um humano
entender. Assim, é preferível um esquema em que o relacionamento entre o endereço IP e o
endereço físico seja óbvio.
7.13.4 Tradução por Vínculo Dinâmico
Embora eficiente, o mapeamento direto não pode ser usado para tecnologias de
hardware que utilizam o endereçamento Ethernet. Para ver por que, lembre-se de que cada
placa de rede Ethernet recebe um endereço físico de 48 bits quando o dispositivo é fabricado.
Como consequência, quando o hardware falha e exige que uma interface Ethernet seja
substituída, o endereço físico da máquina muda. Além do mais, como o endereço Ethernet
tem 48 bits de extensão, não há esperança de que possa ser codificado em um endereço IP de
32 bits1.
Os projetistas dos protocolos TCP/IP descobriram uma solução criativa para o
problema de tradução de endereço para redes como Ethernet, que possuem capacidade de
broadcast. A solução permite que novos hosts ou roteadores sejam acrescentados à rede sem
recompilar o código, e não exige a manutenção de um banco de dados centralizado. Para
evitar a manutenção de um banco de dados centralizado, os projetistas escolheram usar um
protocolo de baixo nível para vincular endereços dinamicamente. Chamado de ARP
(Address Resolution Protocol – Protocolo de Resolução de Endereços), o protocolo oferece
um mecanismo que é razoavelmente eficiente e fácil de manter.
1
Como o mapeamento direto é mais conveniente e eficaz do que o vínculo dinâmico, a próxima geração do IP (IPv6) está
sendo projetada para permitir que endereços físicos de 48 bits sejam codificados em endereços IP.
103
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Como mostra a Figura 7.10, a idéia por trás da tradução dinâmica com ARP é simples:
Quando o host A quer traduzir o endereço IP IB, ele envia por broadcast um pacote especial
que pede ao host com endereço IP IB para responder com seu endereço físico, FB. Todos os
hosts, incluindo B, recebem a requisição, mas somente o host B reconhece seu endereço IP e
envia uma resposta que contém seu endereço físico. Quando A recebe a resposta, ele usa o
endereço físico para enviar o pacote de inter-rede diretamente para B.
Figura 7.10 – O protocolo ARP.
7.13.5 O Cache de Tradução de Endereço
Pode parecer tolice que, para A enviar um pacote para B, ele primeiro envia um
broadcast que atinge B. Ou então pode parecer ainda mais tolice que A transmita por
broadcast a pergunta “como posso alcançar você?” em vez de apenas transmitir o pacote que
deseja entregar. Mas existe um motivo importante para a troca. O broadcasting é muito
mais dispendioso de ser usado toda vez que uma máquina precisa transmitir um pacote para
outra, pois cada máquina na rede precisa receber e processar o pacote broadcast.
7.13.6 Timeout de Cache ARP
Para reduzir os custos de comunicação, os computadores que utilizam ARP mantêm
um cache de vínculos de IP para cada endereço físico adquirido. Ou seja, sempre que um
computador enviar uma requisição ARP e receber uma resposta ARP, ele salva o endereço
IP e a informação do endereço físico correspondente em seu cache para pesquisas sucessivas.
Ao transmitir um pacote, um computador sempre examina seu cache em busca de um vínculo
antes de enviar uma requisição ARP. Se ele encontrar o vínculo desejado em seu cache ARP,
o computador não precisa transmitir um broadcast na rede. Assim, quando dois
computadores em uma rede se comunicam, eles começam com uma requisição (request) e
resposta (reply) ARP, e depois transferem repetidamente os pacotes sem usar ARP para cada
um. A experiência mostra que, como a maior parte da comunicação da rede envolve mais de
uma transferência de pacote, até mesmo um cache pequeno é proveitoso.
O cache ARP oferece um exemplo de estado flexível, uma técnica normalmente usada
nos protocolos de rede. O nome descreve uma situação em que a informação pode se tornar
“velha” sem aviso. No caso do ARP, considere dois computadores, A e B, ambos conectados
a uma rede Ethernet. Considere que A tenha enviado uma requisição ARP e B tenha
respondido. Além disso, considere que, depois da troca, B falhe. O computador A não
receberá qualquer notificação da falha. Além do mais, por já ter a informação de vínculo de
endereço para B em seu cache ARP, o computador A continuará a enviar pacotes para B. O
104
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
hardware Ethernet não fornece indicação de que B não está mais on-line, pois a Ethernet não
tem entrega garantida. Assim, A não tem como saber quando as informações em seu cache
ARP se tornaram incorretas.
Para acomodar o estado flexível, a responsabilidade pela exatidão se encontra com o
proprietário da informação. Normalmente, os protocolos que implementam estado flexível
utilizam timers, com a informação de estado sendo excluída quando o timer expira. Por
exemplo, sempre que a informação de vínculo é colocada em um cache ARP, o protocolo
exige que um timer seja definido, com tempo limite (timeout) típico de 20 minutos. Quando
o timer expira, a informação precisa ser removida. Depois da remoção, existem duas
possibilidades: se nenhum outro pacote for enviado ao destino, nada ocorrerá. Se um pacote
tiver de ser enviado ao destino e não houver um vínculo presente no cache, o computador
seguirá o procedimento normal de transmitir uma requisição ARP por broadcast e obter o
vínculo. Se o destino ainda for alcançável, o vínculo novamente será colocado no cache
ARP. Se não, o emissor descobrirá que o destino está off-line.
O uso do estado flexível no ARP tem vantagens e desvantagens. A principal vantagem
surge pela autonomia. Primeiro, um computador pode determinar quando a informação em
seu cache ARP deve ser invalidada, independente dos outros computadores. Segundo, um
emissor não precisa da comunicação bem sucedida com o receptor ou um terceiro para
determinar que um vínculo se tornou inválido. Se um destino não responder a uma requisição
ARP, o emissor declarará o destino como parado. Terceiro, o esquema não conta com o
hardware da rede para fornecer transferência confiável. A principal desvantagem do estado
flexível surge pelo retardo. Se o intervalo do timer for de N segundos, um emissor não
detectará que um receptor falhou antes que se passem N segundos.
7.13.7 Funcionamento do ARP
7.13.7.1 Envio de um Datagrama dentro da mesma rede
Vamos supor que o nó 222.222.222.220 da Figura 7.11 queira enviar um
datagrama que tem endereço IP para outro nó daquela rede. O nó remetente precisa
obter o endereço de rede do nó de destino, dado o endereço IP daquele mesmo nó. Essa
tarefa é fácil se a tabela ARP do nó remetente tiver um registro para esse nó de destino.
E se a tabela ARP não tiver o registro do destinatário? Em particular, suponha que o nó
222.222.222.220 queira enviar um datagrama para o nó 222.222.222.222. Nesse caso,
o nó remetente usa o protocolo ARP para converter o endereço. De início, ele monta
um pacote especial chamado pacote ARP. Um pacote ARP tem diversos campos,
incluindo os endereços IP e físico de envio e de recepção, como veremos na
Seção 7.13.12.
105
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura 7.11 – Cada nó em uma LAN tem um endereço IP e um endereço MAC.
Voltando ao exemplo, o nó 222.222.222.220 passa um pacote de consulta ARP ao
adaptador de rede juntamente com uma indicação de que o adaptador deveria enviar o
pacote ao endereço de broadcast da rede, ou seja, FF–FF–FF–FF–FF–FF. O adaptador
encapsula o pacote ARP em um frame de enlace, usa o endereço de broadcast como
endereço de destino do frame e transmite o frame para dentro da rede. O frame que
contém a consulta ARP é recebido por todos os outros adaptadores da rede, e, por causa
do endereço de broadcast, cada adaptador passa o pacote ARP que está dentro do frame
para seu próprio hospedeiro. Cada nó verifica se seu endereço IP combina com o
endereço IP de destino no pacote ARP. O único nó que atende a essa condição devolve
um pacote ARP de resposta ao nó que fez a consulta, com o mapeamento desejado. O
nó que fez a consulta (222.222.222.220) pode, então, atualizar sua tabela ARP e enviar
seu datagrama IP.
O protocolo ARP apresenta algumas características interessantes. Em primeiro
lugar, a mensagem de consulta ARP é enviada dentro de um frame broadcast, ao passo
que a mensagem de resposta ARP é enviada dentro de um frame padrão unicast. Antes
de continuar a leitura, é bom que você pense por que isso acontece. Em segundo lugar,
o ARP é do tipo plug and play, isto é, uma tabela de nós ARP é construída
automaticamente, ela não tem de ser configurada por um administrador de sistemas. E,
se um nó for desligado da rede, seu registro poderá ser apagado da tabela.
7.13.7.2 Envio de um Datagrama para um nó que está fora da rede
Já deve estar claro agora como o ARP opera quando um nó quer enviar um
datagrama a um outro nó na mesma rede. Mas vamos examinar uma situação mais
complicada, em que um nó de uma rede quer enviar um datagrama de camada de rede
para um nó que esta fora da rede. A Figura 7.12 mostra uma rede virtual simples
constituída de duas redes interconectadas por um roteador.
106
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura 7.12 – Duas LANs interconectadas por um roteador.
Há diversos pontos interessantes a notar nesta figura. Primeiramente, há dois tipos
de nós: host e roteadores. Cada host tem exatamente um endereço IP e um adaptador.
Mas, como discutimos na Seção 7.12.11, um roteador tem um endereço IP para cada
uma de suas interfaces. Cada interface de roteador também tem seu próprio módulo
ARP (dentro do roteador) e seu próprio adaptador. Como o roteador da Figura 7.12 tem
duas interfaces, ele apresenta dois endereços IP, dois módulos ARP e dois adaptadores.
É claro que cada adaptador da rede tem seu próprio endereço físico.
Note também que todas as interfaces conectadas à rede 1 têm endereços no formato
111.111.111.xxx e que todas as interfaces conectadas à rede 2 têm o formato
222.222.222.xxx. Assim, nesse exemplo, os três primeiros octetos do endereço IP
especificam a rede, enquanto o último octeto indica host específico da rede.
Agora, suponha que o host 111.111.111.111 queira enviar um datagrama IP ao
host 222.222.222.222. O host remetente passa o datagrama a seu adaptador, como
sempre. Mas ele deve indicar a seu adaptador um endereço físico de destino apropriado.
E que endereço físico o adaptador deveria usar? Poderíamos arriscar o palpite que o
endereço físico apropriado é aquele do adaptador do host 222.222.222.222, ou seja, 49–
BD–D2–C7–56–2A. Mas esse palpite está errado. Se o adaptador remetente usasse esse
endereço físico, nenhum dos adaptadores da rede 1 se preocuparia em passar os
datagramas IP para cima, para sua camada de rede, já que o endereço de destino do
frame não combinaria com o endereço físico de nenhum adaptador da rede 1. O
datagrama morreria ali mesmo.
Se examinarmos com cuidado a Figura 7.12, veremos que, para um datagrama ir
de 111.111.111.111 a um nó da rede 2, ele teria de ser enviado antes à interface do
roteador 111.111.111.110. Sendo assim, o host 111.111.111.111 saberia que, para
chegar até o host 222.222.222.222, o datagrama teria de ser enviado antes à interface
do roteador 111.111.111.110. Assim, o endereço físico apropriado para o frame é o
endereço do adaptador da interface do roteador 111.111.111.110, ou seja, E6–E9–00–
17–BB–4B. Como o host remetente consegue o endereço físico de 111.111.111.110?
Usando ARP, é claro! Uma vez que o adaptador remetente tenha seu endereço físico,
ele cria um frame e o envia para a rede 1. O adaptador do roteador da rede 1 verifica
que o frame está endereçado a ele e, por conseguinte, o passa para a camada de rede do
roteador. Viva! O datagrama IP foi transportado com sucesso do host de origem para
o roteador! Mas não acabamos. Ainda temos que levar o datagrama do roteador até o
destino! Como veremos adiante, isso é feito pela consulta a uma tabela de roteamento
107
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
no roteador. A tabela de roteamento indica ao roteador que o datagrama deve ser
repassado via interface de rede 222.222.222.220 do roteador. Essa interface então passa
o datagrama a seu adaptador, que encapsula em um novo frame e envia o frame para a
rede 2. Dessa vez, o endereço físico de destino do frame é, na verdade, o endereço físico
do destino final. E de onde o roteador obtém esse endereço físico de destino? Do ARP,
é claro.
7.13.8 Refinamentos do ARP
Diversos refinamentos do ARP foram incluídos no protocolo. Primeiro, observe que
se o host A estiver para usar ARP, pois precisa enviar para B, existe uma alta probabilidade
de que o host B precise enviar para A no futuro próximo. Para antecipar a necessidade de B
e evitar tráfego extra na rede, A inclui seu vínculo de endereço IP para físico ao enviar uma
requisição para B. B extrai o vínculo de A da requisição, salva o vínculo em seu cache ARP
e depois envia uma resposta para A. Segundo, observe que, como A envia sua requisição
inicial por broadcast, todas as máquinas na rede recebem e podem extrair o vínculo de
endereço IP para físico A e usar a informação a fim de atualizar o vínculo em seu cache.
Terceiro, quando um computador tiver sua interface de host substituída (por exemplo, porque
o hardware falhou), seu endereço físico mudará. Outros computadores na rede que
armazenaram um vínculo em seu cache ARP precisam ser informados para que possam
mudar a entrada. O computador pode notificar os outros quanto ha um novo endereço
enviando uma requisição ARP gratuita por broadcast ao reiniciar1.
7.13.9 Relacionamento do ARP com outros Protocolos
O ARP forneceu um mecanismo possível para mapear endereços IP para endereços
físicos. Já vimos que as tecnologias de hardware que admitem mapeamento direto não
precisam de ARP. O ponto é que o ARP seria completamente desnecessário se pudéssemos
fazer com que todo o hardware da rede reconheça endereços IP. Assim, o ARP simplesmente
impõe um novo esquema de endereço em cima de qualquer mecanismo de endereço de baixo
nível que o hardware utilize.
7.13.10 Implementação do ARP
Funcionalmente, o ARP é dividido em duas partes. A primeira parte mapeia um
endereço IP para um endereço físico ao enviar um datagrama, e a segunda parte responde as
requisições de outras máquinas. A tradução de endereços para os datagramas que saem
parece ser direta, mas pequenos detalhes complicam uma implementação. Dado um endereço
IP de destino, o software consulta seu cache ARP para ver se conhece o mapeamento do
endereço IP para o endereço físico. Se conhecer, o software extrai o endereço físico, coloca
os dados em um frame usando esse endereço e envia o frame. Se não conhecer o
mapeamento, o software precisa enviar uma requisição ARP por broadcast e esperar uma
resposta.
O broadcasting de uma requisição ARP para encontrar um mapeamento de endereço
pode se tornar complexo. A máquina de destino pode estar parada ou muito ocupada para
aceitar a requisição. Se isso acontecer, o emissor pode não receber uma resposta ou a resposta
pode ser atrasada. Como a Ethernet é um sistema de entrega pelo melhor esforço, a
requisição por broadcast ARP inicial também pode ser perdida (quando o emissor deve
retransmitir, pelo menos uma vez). Nesse meio tempo, o host precisa armazenar o pacote de
1
Tipicamente, a máquina reiniciando envia uma requisição para seu próprio endereço IP como um meio de verificar se
nenhum outro computador acidentalmente recebeu o mesmo endereço IP.
108
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
saída original de modo que ele possa ser enviado quando o endereço tiver sido traduzido1.
De fato, o host precisa decidir se permitirá que outras aplicações prossigam enquanto
processa uma requisição ARP (a maioria faz isso). Nesse caso, o software precisa lidar com
o caso em que uma aplicação gera datagramas que exigem tradução do mesmo endereço sem
o broadcasting de várias requisições para determinado destino.
Finalmente, considere o caso em que a máquina A obteve um vínculo com a máquina
B, mas depois o hardware de B falha e é substituído. Embora o endereço de B tenha mudado,
o vínculo em cache de A não mudou, de modo que A usa um endereço físico inexistente,
impossibilitando o sucesso do recebimento. Esse caso mostra por que é importante ter o ARP
tratando sua tabela de vínculos como um cache e remover as entradas após um período
determinado. Naturalmente, o timer para uma entrada no cache precisa ser reiniciado sempre
que um broadcast ARP chega contendo o vínculo (mas ele não é reiniciado quando a entra é
usada para enviar um pacote).
A segunda parte do código ARP trata de pacotes ARP que chegam da rede. Quando
um pacote ARP chega, o software primeiro extrai o endereço IP do emissor e o par de
endereços físicos. Logo em seguida, examina o cache local a fim de verificar se já tem uma
entrada para o emissor. Se existir uma entrada de cache para determinado endereço IP, o
software atualiza essa entrada sobrescrevendo o endereço físico com o endereço físico obtido
do pacote. Então, o receptor processa o restante do pacote ARP.
Um receptor precisa lidar com dois tipos de pacotes ARP que chegam. Se uma
requisição ARP chegar, a máquina receptora precisa ver se ela é o destino da requisição (ou
seja, alguma outra máquina enviou uma requisição por broadcast para o endereço físico do
receptor). Se isso aconteceu, o ARP forma uma resposta fornecendo seu endereço físico e
envia a resposta diretamente de volta ao requisitante. O receptor também acrescenta o par de
endereços do emissor ao seu cache se o par ainda não estiver presente. Se o endereço IP
mencionado na requisição ARP não combinar com o endereço IP local, o pacote está
solicitando um mapeamento para alguma outra máquina na rede e pode ser ignorado.
O outro caso interessante ocorre quando chega uma resposta ARP. Dependendo da
implementação, o software pode ter de criar uma entrada de cache, ou a entrada pode ter sido
criada quando a requisição foi gerada. De qualquer forma, uma vez atualizado o cache, o
receptor tenta combinar a resposta com uma requisição previamente emitida. Normalmente,
as respostas chegam como resultado de uma requisição, que foi gerada porque a máquina tem
um pacote a enviar. Entre o momento em que uma máquina envia sua requisição ARP e
recebe a resposta, os programas de aplicativos ou protocolos de níveis superiores podem gerar
requisições adicionais para o mesmo endereço. O software precisa lembrar de que já enviou
uma requisição e então não enviar outra. Normalmente, o ARP coloca os pacotes adicionais
em uma fila e usa o vínculo de endereço para preencher o endereço físico do destino. Se ele
não emitiu anteriormente uma requisição para o endereço IP na resposta, a máquina atualiza
a entrada do emissor em seu cache e depois simplesmente termina o processamento do
pacote.
7.13.11 Encapsulamento e Identificação do ARP
Quando as mensagens ARP trafegam de uma máquina para outra, elas precisam ser
transportadas em frames físicos. A Figura 7.13 mostra que a mensagem ARP é transportada
na parte de dados de um frame.
1
Se o atraso for significativo, o host poderá decidir descartar o(s) datagrama(s) de saída.
109
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura 7.13 – Uma mensagem ARP encapsulada em um frame de rede física.
Para identificar o frame que está transportando uma mensagem ARP, o emissor atribui
um valor especial ao campo de tipo no cabeçalho do frame e coloca a mensagem ARP no seu
campo de dados. Quando um frame chega a um computador, o software de rede utiliza o tipo
de frame para determinar seu conteúdo. Na maioria das tecnologias, um único valor de tipo
é usado para todos os frames que transportam uma mensagem ARP. O software de rede no
receptor precisa examinar melhor a mensagem ARP para distinguir entre requisições ARP e
respostas ARP. Por exemplo, em uma Ethernet, os frames transportando mensagens ARP
têm um campo de tipo com o valor (0806)16. Esse é um valor padrão atribuído pela autoridade
para Ethernet. Outras tecnologias de hardware de rede utilizam outros valores.
7.13.12 Formato do Protocolo ARP
Diferente da maioria dos protocolos, os dados nos pacotes ARP não possuem um
cabeçalho de formato fixo. Em vez disso, para tornar o ARP útil para diversas tecnologias
de rede, a extensão dos campos que contêm endereços depende do tipo de rede. Porém, para
possibilitar a interpretação de uma mensagem ARP qualquer, o cabeçalho inclui campos fixos
perto do início, que especificam os tamanhos dos endereços encontrados nos campos
seguintes. De fato, o formato da mensagem ARP é genérico o suficiente para permitir que
seja usado com quaisquer endereços físicos e de protocolo. O exemplo na Figura 7.14 mostra
o formato da mensagem ARP em 28 octetos usado no hardware Ethernet (em que os
endereços físicos possuem 48 bits ou 6 octetos de extensão), ao traduzir endereços de
protocolo IP (que possuem 4 octetos de extensão).
0
1
2
3
8
6
4
1
TIPO DE HARDWARE
TIPO DE PROTOCOLO
HLEM
PLEM
OPERAÇÃO
Endereço de Hardware EMISSOR (octetos 0 – 3)
Endereço de Hardware EMISSOR (octetos 4 – 5)
IP EMISSOR (octetos 0 – 1)
IP EMISSOR (octetos 2 – 3)
Endereço de Hardware DESTINO (octetos 0 – 1)
Endereço de Hardware DESTINO (octetos 2 – 5)
IP DESTINO (octetos 0 – 3)
Figura 7.14 – Formato de uma Mensagem ARP/RARP para o padrão Ethernet.
A Figura 7.14 mostra uma mensagem ARP com 4 octetos por linha. Infelizmente,
diferente da maioria dos protocolos restante, os campos de tamanho variável nos pacotes
ARP não se alinham bem em limites de 32 bits, tornando o diagrama difícil de ser lido. Por
exemplo, o endereço físico do emissor, rotulado como Endereço de Hardware EMISSOR,
ocupa 6 octetos contíguos, de modo que se espalha por duas linhas no diagrama.
O campo TIPO DE HARDWARE especifica um tipo de interface de hardware para o
qual o emissor busca uma resposta. Ele contém o valor 1 para Ethernet. De modo
semelhante, o campo TIPO DE PROTOCOLO especifica o tipo de endereço de protocolo de
alto nível que o emissor forneceu. Ele contém (0800) 16 para endereços IP. O campo
OPERAÇÃO especifica uma requisição ARP (7), resposta ARP (2), requisição RARP (3) ou
110
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
resposta RARP (4). Mais à frente falaremos sobre o RARP. Os campos HLEN e PLEN
permitem que o ARP seja usado com redes quaisquer, pois especificam o tamanho do
endereço de hardware e o tamanho do endereço de protocolo de alto nível. O emissor fornece
seu endereço de hardware e endereço IP, se conhecidos, nos campos ENDEREÇO DE
HARDWARE EMISSOR e IP EMISSOR.
Ao fazer uma requisição, o emissor também fornece o endereço de hardware de destino
(RARP) ou endereço IP de destino (ARP) usando os campos ENDEREÇO DE HARDWARE
DESTINO ou IP DESTINO. Antes que a máquina de destino responda, ela preenche os
endereços que faltam, inverte os pares de destino e emissor e muda a operação para uma
resposta. Assim, uma resposta transporta os endereços IP e físicos do requisitante original,
além dos endereços IP e físicos da máquina para a qual um vínculo foi buscado.
7.13.13 Revalidação Automática de Cache ARP
É possível usar uma técnica que evita a introdução de jitter (ou seja, variação nos
tempos de transferência de pacotes). Para entender a situação, observe que sempre que um
timer ARP expira, o próximo datagrama enviado ao endereço experimenta um atraso extra
porque o datagrama espera em uma fila até que o ARP envie uma requisição e receba uma
resposta. Além do mais, a expiração pode ocorrer a qualquer momento, possivelmente
durante um período de tráfego constante. Embora esses atrasos normalmente sejam
negligenciáveis, eles introduzem jitter.
A chave para evitar o jitter surge da revalidação antecipada, ou seja, a implementação
associa dois contadores a cada entrada no cache ARP: o timer tradicional e um timer de
revalidação. Quando o timer de revalidação expira, o software examina a entrada. Se os
datagramas tiverem usado a entrada recentemente, o software envia uma requisição ARP e
continua a usar a entrada. Ao receber a requisição, a estação destino responde, e os dois
timers são reiniciados. Se nenhuma resposta chegar, o timer tradicional expira, e os
datagramas são mantidos enquanto o ARP tenta obter uma resposta. Na maioria dos casos,
porém, uma revalidação pode reiniciar o timer sem interrupção.
7.13.14 Reverse Address Resolution (RARP)
Vimos que o campo de operação em um pacote ARP pode especificar uma mensagem
RARP (Reverse Address Resolution). RARP não é mais importante na Internet, mas já foi
um protocolo essencial usado para efetuar o boot de sistemas que não tinham armazenamento
estável. Essencialmente, RARP permite que um sistema obtenha um endereço IP na partida.
O procedimento é simples: ao inicializar, o sistema envia uma requisição RARP e espera uma
resposta. Outro computador na rede precisa ser configurado para escutar requisições RARP
e gerar uma resposta RARP que contém o endereço IP do requisitante. Quando a resposta
chega, o sistema continua a inicialização e usa o IP para toda a comunicação.
Ao fazer uma requisição RARP, um sistema precisa se identificar para que o
computador, recebendo a requisição, possa substituir o endereço IP correto na resposta.
Embora qualquer identificação exclusiva de hardware seja suficiente (por exemplo, o
número de série da CPU), RARP utiliza uma identificação óbvia: o endereço MAC do
sistema. Ou seja, um sistema inicializando coloca seu endereço MAC na requisição RARP
e recebe seu endereço IP na resposta RARP.
É interessante que o RARP use o mesmo formato de pacote ARP. Uma requisição
RARP é formada preenchendo o campo de endereço do protocolo de destino, alterando o tipo
de mensagem de requisição para resposta e enviando a resposta de volta diretamente para a
máquina que fez a requisição.
111
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Assim como uma mensagem ARP, uma mensagem RARP é enviada de uma máquina
para outra encapsulada na parte de dados de um frame de rede. Por exemplo, um frame
Ethernet transportando uma requisição ARP possui o preâmbulo normal, os endereços de
origem e destino Ethernet e o campo de tipo de pacote na frente do frame. O tipo de frame
contém o valor (8035)16 para identificar o conteúdo do frame como uma mensagem RARP.
7.14 Entrega de Datagramas Sem Conexão
Nesta seção veremos o princípio fundamental da entrega sem conexão e também como ele
é fornecido pelo IP, que é um dos dois principais protocolos usados nas inter-redes (TCP sendo o
outro). Veremos o formato dos pacotes IP na versão 4 (IPv4) e também como eles formam a base
para toda a comunicação na inter-rede.
7.14.1 Sistema de Entrega sem Conexão
O serviço de inter-rede mais fundamental consiste em um sistema de entrega de
pacotes. Tecnicamente, o serviço é definido como um sistema de entrega de pacotes nãoconfiável, de melhor esforço, sem conexão, semelhante ao serviço fornecido pelo hardware
de rede que opera sobre um paradigma de entrega pelo melhor esforço. O serviço é
denominado não-confiável porque a entrega não é garantida. O pacote pode ser perdido,
duplicado, adiado ou entregue fora de ordem, mas o serviço não detectará essas condições,
nem informará ao emissor ou receptor. O serviço é denominado sem conexão porque cada
pacote é tratado independentemente de todos os outros. Uma sequência de pacotes enviados
de um computador para outro pode trafegar por diferentes caminhos, ou alguns podem se
perder enquanto outros são entregues. Finalmente, o serviço é considerado como entrega
pelo melhor esforço porque o software de inter-rede faz a melhor tentativa de entregar os
pacotes, ou seja, a Rede não descarta pacotes caprichosamente. A não confiabilidade surge
apenas quando os recursos são esgotados ou as redes subjacentes falham.
7.14.2 Finalidade do Internet Protocol (IP)
O protocolo que define o mecanismo de entrega não confiável, sem conexão, é
denominado Internet Protocol (IP). Como a versão atual do protocolo é a versão 4,
normalmente ele é conhecido como IPv4: quando a versão não é ambígua, ele é conhecido
como IP. O IP provê três definições importantes. Primeiro, o protocolo IP define a unicidade
básica de transferência de dados usada por toda uma Rede TCP/IP. Assim, ele especifica o
formato exato de todos os dados à medida que passam pela inter-rede. Segundo, o IP realiza
a função de encaminhamento, escolhendo um caminho pelo qual um pacote será enviado.
Terceiro, além da especificação precisa e formal dos formatos de dados e encaminhamento,
o IP inclui um conjunto de regras que incorporam a ideia da entrega não-confiável. As regras
caracterizam como os hosts e roteadores devem processar pacotes, como e quando as
mensagens de erro devem ser geradas e as condições sob as quais os pacotes podem ser
descartados. IP é uma parte tão fundamental do projeto que a Internet às vezes é chamada
de tecnologia baseada em IP.
7.14.3 O Datagrama IPv4
A analogia entre uma rede física e uma inter-rede TCP/IP é forte. Em uma rede física,
a unidade de transferência é um frame que contém um cabeçalho e dados, onde o cabeçalho
dá informações como os endereços (físicos) de origem e destino. A inter-rede chama sua
unidade de transferência básica de datagrama internet, normalmente abreviado como
datagrama IP ou simplesmente datagrama. Assim como um frame, de rede física, um
datagrama é dividido em áreas de cabeçalho e dados. Também como um frame, o cabeçalho
do datagrama contém os endereços de origem e destino e um campo de tipo que identifica o
conteúdo do datagrama. A diferença, naturalmente, é que o cabeçalho do datagrama contém
112
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
endereços IP, enquanto o cabeçalho do frame contém endereços físicos. A Figura 7.15
mostra o formato geral de um datagrama.
Cabeçalho do Datagrama
Área de dados do Datagrama
Figura 7.15 – Formato Geral de um Datagrama IP.
7.14.4 Formato do Datagrama
Agora que descrevemos o layout geral de um datagrama IP, podemos examinar o
conteúdo com mais detalhes. A Figura 7.16 mostra o arranjo dos campos em um datagrama.
0
2
3
4
1
VERS
HLEN
TIPO DE SERVIÇO
TAMANHO TOTAL
IDENTIFICAÇÃO
FLAGS
OFFSET DO FRAGMENTO
Tempo de Vida (TTL)
PROTOCOLO
CHECKSUM DO CABEÇALHO
ENDEREÇO IP ORIGEM
ENDEREÇO IP DESTINO
OPÇÕES IP (SE HOUVER)
PREENCHIMENTO
DADOS
DADOS (CONTINUAÇÃO) ...
Figura 7.16 – Formato de um Datagrama IP.
4
8
1
6
1
9
Como o processamento do datagrama ocorre no software, o conteúdo e o formato não
são restritos por qualquer hardware. Por exemplo, o primeiro campo de 4 bits em um
datagrama (VERS) contém a versão do protocolo IP que foi usada para criar o datagrama.
Ele é usado para verificar se o emissor, receptor e quaisquer roteadores entre eles concordam
sobre o formato do datagrama. Todo protocolo IP precisa verificar o campo de versão antes
de processar um datagrama, para garantir que ele combine com o formato que o software
espera. Se os padrões mudarem, as máquinas rejeitarão datagramas com versões de
protocolo que diferem da sua, evitando que interpretem de forma errada o conteúdo do
datagrama, de acordo com um formato desatualizado. Para o IPv4, o campo de versão
contém 4.
O campo de tamanho do cabeçalho (HLEN), também de 4 bits, dá o tamanho do
cabeçalho do datagrama, medido em palavras de 32 bits. Como veremos, todos os campos
no cabeçalho possuem tamanho fixo, exceto para os campos de OPÇÕES IP e
PREENCHIMENTO correspondentes. O cabeçalho mais comum, que não contém opções e
preenchimento, mede 20 octetos e tem um campo de tamanho de cabeçalho igual a 5.
O campo de TAMANHO TOTAL indica o tamanho do datagrama IP medido em octetos,
incluindo os octetos no cabeçalho e nos dados. O tamanho da área de dados pode ser
calculado subtraindo o tamanho do cabeçalho (HLEN) do TAMANHO TOTAL. Como o
campo TAMANHO TOTAL possui 16 bits de extensão, o tamanho máximo possível de um
datagrama IP é de 216 – 1 ou 65.535 octetos. Na maioria das aplicações, isso não é uma
limitação severa. Pode se tornar mais importante no futuro se redes de maior velocidade
puderem transportar pacotes maiores do que 65.535 octetos.
7.14.5 Encapsulamento de Datagramas IP
Antes que possamos entender os próximos campos em um datagrama, é importante
considerar como os datagramas se relacionam com os frames da rede física. Começamos
com uma pergunta: “que tamanho um datagrama pode ter?” Diferente dos frames de rede
física, que precisam ser reconhecidos pelo hardware, os datagramas são tratados pelo
software. Eles podem ter qualquer tamanho escolhido pelos projetistas de protocolo. Vimos
113
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
que o formato do datagrama IPv4 aloca 16 bits ao campo de tamanho total, limitando o
datagrama a no máximo 65.535 octetos.
Na prática, surgem limites mais fundamentais no tamanho do datagrama. Sabemos
que, quando os datagramas passam de uma máquina para outra, eles sempre precisam ser
transportados pela rede física subjacente. Para tornar o transporte da inter-rede eficiente, é
preciso garantir que cada datagrama trafegue em um frame físico distinto. Ou seja, queremos
que nossa abstração do pacote da rede física seja mapeada diretamente para um pacote real,
se possível.
A ideia de transportar um datagrama em um frame de rede é chamada de
encapsulamento. Para a rede subjacente, um datagrama é como qualquer outra mensagem
enviada de uma máquina para outra. O hardware não reconhece o formato do datagrama,
nem entende o endereço de destino IP. Assim, como mostra a Figura 7.17, quando uma
máquina envia um datagrama IP para outra, o datagrama inteiro trafega na parte de dados
do frame de rede1.
Figura 7.17 – O encapsulamento de um datagrama IP em um frame.
7.14.6 Tamanho do Datagrama, MTU da rede e Fragmentação
No caso ideal, o datagrama IP inteiro se encaixa em um frame físico, tornando eficiente
a transmissão pela rede física. Para alcançar essa eficiência, os projetistas do IP poderiam
ter selecionado um tamanho de datagrama máximo, de modo que um datagrama sempre
encaixe em um frame. Mas qual tamanho de frame deve ser escolhido? Afinal, um
datagrama pode trafegar por muitos tipos de redes físicas enquanto passa por uma inter-rede
até o seu destino final.
Para entender o problema, precisamos de um fato sobre o hardware da rede: cada
tecnologia de comutação de pacotes impõe um limite superior fixo sobre a quantidade de
dados que podem ser transferidos em um frame físico. Por exemplo, Ethernet limita as
transferências a 1.500 octetos de dados. Vamos nos referir aos limites como MTU (Maximum
Transfer Unit – Unidade Máxima de Transferência). Os tamanhos de MTU podem ser
maiores do que 1.500 ou menores: algumas tecnologias de hardware limitam as
transferências a 128 octetos. Limitar os datagramas para caber na menor MTU possível na
inter-rede torna as transferências ineficazes quando os datagramas passam por uma rede que
pode transportar frames de maior tamanho. Porém, permitir que os datagramas sejam
maiores que a MTU mínima da rede em uma inter-rede significa que um datagrama nem
sempre poderá caber em um único frame da rede.
A escolha deve ser óbvia: a finalidade de uma inter-rede é ocultar as tecnologias de
rede básicas e tornar a comunicação conveniente para o usuário. Assim, em vez de projetar
1
Um campo no cabeçalho do frame normalmente identifica os dados sendo transportados: Ethernet usa o valor (0800)16,
para especificar que a área de dados contém um datagrama IP encapsulado.
114
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
datagramas que aderem às restrições das redes físicas, o TCP/IP escolhe um tamanho de
datagrama inicial conveniente e arruma uma maneira de dividir datagramas grandes em
partes menores quando o datagrama precisa atravessar uma rede que possui uma MTU
pequena. As partes pequenas em que um datagrama é dividido são chamadas de fragmentos,
e o processo de dividir um datagrama é conhecido como fragmentação.
Como a Figura 7.18 mostra, a fragmentação normalmente ocorre em um roteador em
algum lugar entre a origem do datagrama e seu destino final. O roteador recebe um
datagrama de uma rede com uma MTU grande e precisa enviá-lo por uma rede para a qual a
MTU é menor do que o tamanho do datagrama.
Figura 7.18 – Um exemplo de necessidade de fragmentação.
Na figura, os dois hosts se conectam diretamente a Ethernet que possuem uma MTU
de 1.500 octetos. Assim, os dois hosts podem gerar e enviar datagramas com até 1.500
octetos de extensão. O caminho entre eles, porém, inclui uma rede com uma MTU de 620
octetos. Se o host A enviar ao host B um datagrama maior que 620 octetos, o roteador R1
fragmentará o datagrama. De modo semelhante, se o host B enviar um datagrama maior
para o host A, o roteador R2 fragmentará o datagrama.
O tamanho do fragmento é escolhido de modo que cada fragmento possa ser entregue
pela rede em um único frame. Além disso, como o IP representa o offset dos dados em
múltiplos de oito octetos, o tamanho do fragmento precisa ser escolhido como um múltiplo
de oito. Naturalmente, a escolha do múltiplo de oito octetos mais próxima da MTU da rede
em geral não divide o datagrama em partes de mesmo tamanho. A última parte normalmente
é menor que as outras. Os fragmentos precisam ser remontados para produzir uma cópia
completa do datagrama original antes que ele possa ser processado no destino.
O protocolo IP não limita os datagramas a um tamanho pequeno, nem garante que
datagramas grandes serão entregues sem fragmentação. A origem pode escolher qualquer
tamanho de datagrama que achar apropriado. A fragmentação e a remontagem ocorrem
automaticamente, sem que a origem tome alguma ação especial. A especificação IP afirma
que os roteadores precisam aceitar datagramas até o máximo das MTUs das redes às quais
se conectam. Além disso, um roteador sempre precisa tratar de datagramas com até 576
octetos, consequentemente, os hosts também precisam aceitar e remontar, se necessário,
datagramas de 576 octetos.
A fragmentação de um datagrama significa dividi-lo em várias partes. Você poderá
ficar surpreso ao descobrir que cada parte tem o mesmo formato do cabeçalho original. A
Figura 7.19 ilustra o resultado da fragmentação de um datagrama com 1.400 octetos para a
transmissão da Figura 7.18.
115
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Cabeçalho IP
(20 bytes)
Dados 1
(600 octetos)
Dados 2
(600 octetos)
Dados 3
(200 octetos)
Cabeçalho IP do Fragmento 1
(20 bytes)
Dados 1
(600 octetos)
mf = 1
offset 0
Cabeçalho IP do Fragmento 2
(20 bytes)
Dados 2
(600 octetos)
mf = 1
offset 600
Cabeçalho IP do Fragmento 3
(20 bytes)
Dados 3
(200 octetos)
mf = 0
offset 1.200
Figura 7.19 – Exemplo de Fragmentação de um Datagrama.
Cada fragmento contém um cabeçalho de datagrama que duplica a maior parte do
cabeçalho do datagrama original (exceto por um bit no campo de FLAGS que o mostra como
um fragmento), seguido pelo máximo de dados que puderem ser transportados no fragmento
enquanto mantém o tamanho total menor que a MTU da rede na qual deverá atravessar.
7.14.7 Remontagem de Fragmentos
Um datagrama deverá ser remontado depois de passar por uma rede, ou os fragmentos
devem ser transportados para o host final antes da remontagem? Em uma inter-rede TCP/IP,
quando um datagrama é fragmentado, os fragmentos trafegam como datagramas separados
por todo o caminho até o destino final, onde precisam ser remontados. A preservação de
fragmentos até o destino final tem duas desvantagens. Primeiro, como os datagramas não
são remontados imediatamente depois de passar por uma rede com MTU pequena, os
pequenos fragmentos precisam ser transmitidos do ponto da fragmentação até o destino final.
A remontagem de datagramas no destino final pode levar a ineficiência, mesmo que algumas
das redes físicas encontradas após o ponto de fragmentação tenham grande capacidade de
MTU, pois somente pequenos fragmentos as atravessarão. Em segundo lugar, se quaisquer
fragmentos forem perdidos, o datagrama não poderá ser remontado. A máquina receptora
inicia um timer de remontagem quando recebe um fragmento inicial. Se o timer expirar antes
que todos os fragmentos cheguem, a máquina receptora descartará as partes sobreviventes
sem processar o datagrama. Assim, a probabilidade de perda de datagrama aumenta quando
a fragmentação ocorre, pois a perda de um único fragmento resulta na perda do datagrama
inteiro.
Apesar das pequenas desvantagens, a realização da remontagem no destino final
funciona bem. Ela permite que cada fragmento seja encaminhado de forma independente, e
não exige que os roteadores intermediários armazenem ou remontem fragmentos.
7.14.8 Controle de Fragmentação
Três campos no cabeçalho do datagrama, IDENTIFICAÇÃO, FLAGS e OFFSET DO
FRAGMENTO, controlam a fragmentação e a remontagem de datagramas. O campo
IDENTIFICAÇÃO contém um inteiro exclusivo que identifica o datagrama. Lembre-se de
que, quando um roteador fragmenta um datagrama, ele copia a maior parte dos campos no
cabeçalho do datagrama em cada fragmento. Assim, o campo IDENTIFICAÇÃO precisa ser
copiado. Sua finalidade principal é permitir que o destino saiba quais fragmentos que chegam
pertencem a quais datagramas. Quando um fragmento chega, o destino usa o campo
IDENTIFICAÇÃO junto com o endereço de origem do datagrama para identificar o
datagrama. Os computadores que enviam datagramas IP precisam gerar um valor exclusivo
116
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
para o campo IDENTIFICAÇÃO para cada datagrama. Uma técnica utilizada pelo IP é
manter um contador global na memória, incrementando-o toda vez que um novo datagrama
é criado e atribui o resultado ao campo IDENTIFICAÇÃO do datagrama.
Lembre-se de que cada fragmento tem exatamente o mesmo formato de um datagrama
completo. Para um fragmento, o campo OFFSET DO FRAGMENTO especifica o offset no
datagrama original dos dados sendo transportados no fragmento, medidos em unidades de 8
octetos1, começando com o offset zero. Para remontar o datagrama, o destino precisa obter
todos os fragmentos a partir do fragmento que possui offset 0 até aquele com offset mais alto.
Os fragmentos não necessariamente chegam na ordem, e não existe comunicação entre o
roteador que fragmentou o datagrama e o destino tentando remontá-lo.
Os dois bits de baixa ordem do campo FLAGS de 3 bits controlam a fragmentação.
Normalmente, a aplicação que utiliza TCP/IP não se importa com a fragmentação, pois tanto
a fragmentação quanto a remontagem são procedimentos automáticos, que ocorrem em um
nível baixo no sistema operacional, invisível aos usuários finais. Porém, para testar o
software de inter-rede ou depurar problemas operacionais, pode ser importante testar os
tamanhos dos datagramas para os quais ocorre a fragmentação. O primeiro bit de controle
ajuda no teste, especificando se o datagrama pode ser fragmentado. Uma aplicação pode
escolher não permitir a fragmentação quando somente o datagrama inteiro é útil. Por
exemplo, considere uma seqüência de bootstrap em que um pequeno sistema embutido
executa um programa na ROM que envia uma requisição pela inter-rede à qual outra máquina
responde enviando de volta uma imagem da memória. Se o sistema embutido tiver sido
projetado de modo que precise da imagem inteira ou nenhuma dela, o datagrama deverá ter
o bit não fragmentar marcado. Sempre que um roteador precisar fragmentar um datagrama
que tenha o bit não fragmentar marcado, o roteador descarta o datagrama e envia uma
mensagem de erro de volta à origem.
O bit de baixa ordem no campo FLAGS especifica se o fragmento contém dados do
meio do datagrama original ou do final. Ele é chamado de bit mais fragmentos. Para ver
por que esse bit é necessário, considere o protocolo IP no destino final tentando remontar um
datagrama. Ele receberá fragmentos (possivelmente fora de ordem) e precisa saber quando
recebeu todos os fragmentos para um datagrama. Quando um fragmento chega, o campo de
TAMANHO TOTAL no cabeçalho refere-se ao tamanho do fragmento e não ao tamanho do
datagrama original, de modo que o destino não pode usar o campo TAMANHO TOTAL para
dizer se ele coletou todos os fragmentos. O bit mais fragmentos soluciona o problema com
facilidade: quando o destino recebe um fragmento com o bit mais fragmentos desmarcado,
ele sabe que esse fragmento transporta dados da ponta do datagrama original. Examinando
o OFFSET DO FRAGMENTO e o TAMANHO TOTAL de todos os fragmentos que chegaram,
um receptor pode saber se os fragmentos disponíveis contêm todas as partes necessárias para
remontar o datagrama original.
7.14.9 Time to Live (TTL)
A princípio, o campo TIME TO LIVE especifica quanto tempo, em segundos, o
datagrama tem permissão para permanecer no sistema da inter-rede. A ideia é simples e
importante: sempre que um computador injeta um datagrama na inter-rede, ele define um
tempo máximo em que o datagrama deve sobreviver. Os roteadores e os hosts que processam
datagramas precisam decrementar o campo TIME TO LIVE à medida que o tempo passa e
remover o datagrama da inter-rede quando seu tempo expirar.
1
Para economizar espaço no cabeçalho, os offsets são especificados em múltiplos de 8 octetos.
117
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
A estimativa de tempos exatos é difícil porque os roteadores normalmente não
conhecem o tempo de trânsito para as redes físicas. Algumas regras simplificam o
processamento e facilitam o tratamento de datagramas sem clocks sincronizados. Primeiro,
cada roteador ao longo do caminho da origem ao destino precisa decrementar o campo TIME
TO LIVE em 1 quando processar o cabeçalho do datagrama. Além do mais, como os
roteadores eram inicialmente lentos, o padrão original especificava que, se um roteador
mantém um datagrama por K segundos, o roteador deve decrementar o TIME TO LIVE em
K.
Embora já tenha sido importante, a noção de um roteador atrasando um datagrama por
muitos segundos agora está desatualizada. Os roteadores e as redes atuais são projetados
para encaminhar cada datagrama dentro de alguns milissegundos, no máximo. Se o atraso
se tornar excessivo, o roteador simplesmente descartará o datagrama. Assim, na prática, o
TIME TO LIVE atua como um “limite de salto”, em vez de uma estimativa de atraso. Cada
roteador no caminho (ou seja, cada salto) decrementa o valor em 1.
Sempre que um campo TIME TO LIVE atingir zero, o roteador descarta o datagrama e
envia uma mensagem de erro de volta à origem. A ideia de manter um timer para os
datagramas é interessante porque garante que os datagramas não podem trafegar por uma
inter-rede para sempre, mesmo que as tabelas de roteamento sejam adulteradas e os
roteadores encaminhem datagramas em um círculo. Assim, o campo TIME TO LIVE pode
ser visto como um mecanismo seguro contra falhas.
7.15 Encaminhamento de Datagramas
Vimos que todos os serviços inter-rede utilizam um sistema de entrega de pacotes
subjacentes, sem conexão, e que a unidade básica de transferência em uma Rede TCP/IP é o
datagrama IP. Veremos agora a descrição do serviço sem conexão, mostrando como os
roteadores encaminham datagramas IP e os remetem aos seus destinos finais. Pensamos no
formato de datagrama visto anteriormente como caracterizando os aspectos estáticos do IP. A
descrição de encaminhamento caracteriza os aspectos operacionais.
7.15.1 Encaminhamento em uma Inter-rede
Tradicionalmente, o termo roteamento (routing) era usado com sistemas de comutação
de pacotes, como a inter-rede, para se referir ao processo de escolher um caminho pelo qual
os pacotes são enviados, e o termo roteador era usado para descrever o sistema que faz essa
escolha.
Mais recentemente, os engenheiros adotaram o termo encaminhamento
(forwarding) para se referir ao processo de escolha do caminho para um pacote, mas
retiveram o termo roteador para se referir ao sistema que faz a escolha. Seguiremos o uso
popular, e usaremos o termo encaminhamento.
O encaminhamento ocorre em vários níveis. Por exemplo, dentro de uma Ethernet
comutada, que se espalha por vários chassis físicos, os switches são responsáveis por
encaminhar frames Ethernet do momento em que um frame entra inicialmente até o frame
ser entregue ao host de destino. Esse encaminhamento interno é completamente autocontido
dentro da rede. As máquinas no lado de fora não podem participar das decisões; elas
simplesmente veem a rede como uma entidade que aceita e entrega pacotes.
Lembre-se de que o objetivo do protocolo IP é fornecer uma rede virtual, que abrange
várias redes físicas e oferece um serviço de entrega de datagrama sem conexão. Portanto,
vamos nos concentrar no endereço IP (que tradicionalmente se chamava roteamento IP). A
informação usada para tomar decisões de encaminhamento é conhecida como informação de
encaminhamento IP. Assim como o encaminhamento dentro de uma única rede física, o
encaminhamento IP escolhe um caminho pelo qual um datagrama deve ser enviado.
118
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Diferente do encaminhamento dentro de uma única rede, o algoritmo de encaminhamento IP
precisa escolher como enviar um datagrama por várias redes físicas.
O encaminhamento em uma inter-rede pode ser difícil, especialmente entre
computadores que possuem várias conexões de rede física. O ideal é que o software de
encaminhamento examine a carga da rede. O tamanho do datagrama, os dados sendo
transportados ou o tipo de serviço especificado no cabeçalho do datagrama ao selecionar o
melhor caminho. A maior parte do software de encaminhamento inter-rede é muito menos
sofisticada, e seleciona as rotas com base nas suposições físicas sobre os caminhos mais
curtos.
Para entender completamente o encaminhamento IP, temos de rever a arquitetura de
uma Rede TCP/IP. Primeiro, lembre-se de que uma inter-rede é composta de várias redes
físicas interconectadas por sistemas chamados roteadores. Cada roteador possui conexões
diretas com duas ou mais redes, ao contrário de um host que normalmente se conecta
diretamente a uma rede física. Também sabemos que é possível ter um host multi-homed
conectado diretamente a diversas redes.
Tanto hosts quanto roteadores participam de encaminhamento de um datagrama IP até
o seu destino. Quando um aplicativo em um host tenta se comunicar, os protocolos TCP/IP
por fim geram um ou mais datagramas IP. O host precisa tomar uma decisão de
encaminhamento inicial quando escolhe para onde enviar os datagramas. Como mostra a
Figura 7.20, os hosts precisam tomar decisões de encaminhamento mesmo que tenham
apenas uma conexão de rede.
Figura 7.20 – Um exemplo de um host singly-homed que precisa encaminhar datagramas.
A finalidade principal dos roteadores é tomar decisões de encaminhamento IP. E que
tal os hosts multi-homed? Qualquer computador com várias conexões de rede pode atuar
como um roteador e, conforme veremos, os hosts multi-homed executando TCP/IP terão todo
o software necessário para encaminhar datagramas. De fato, os sites que não possuem
condições de ter roteadores separados às vezes utilizam computadores de uso geral como
hosts e roteadores. Porém, os padrões TCP/IP fazem uma distinção nítida entre as funções
de um host e as de um roteador, e os sites que tentam misturar funções de host e roteador em
uma única máquina às vezes descobrem que seus hosts multi-homed se engajam em
interações inesperadas. Por enquanto, distinguiremos os hosts dos roteadores, e
consideraremos que os hosts não realizam a função do roteador de transferir pacotes de uma
rede para outra.
7.15.2 Entrega Direta e Indireta
Falando de forma livre, podemos dividir o encaminhamento em duas formas: entrega
direta e entrega indireta. A entrega direta, é a transmissão de um datagrama de uma máquina
de uma única rede física diretamente para outra, é a base de toda a comunicação da inter-
119
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
rede. Duas máquinas só podem se engajar na entrega direta se ambas se conectarem
diretamente ao mesmo sistema de transmissão física subjacente (por exemplo, uma única
Ethernet). A entrega indireta ocorre quando o destino não está em uma rede conectada
diretamente, forçando o emissor a passar o datagrama a um roteador para entrega.
7.15.3 Entrega de Datagrama por uma Única Rede
Sabemos que uma máquina em determinada rede física pode enviar um frame físico
diretamente para outra máquina na mesma rede. Para transferir um datagrama IP, o emissor
encapsula o datagrama em um frame físico, conforme descrito anteriormente, usando o
protocolo ARP para mapear o endereço IP de destino para um endereço físico e usa o
hardware de rede para transferir o frame. Assim, examinamos todas as partes necessárias
para entender a entrega direta.
Como o emissor pode saber se o destino se encontra em uma rede conectada
diretamente? O teste é simples. Cada endereço IP é dividido em um prefixo específico da
rede e um sufixo específico do host. Para determinar se um destino se encontra em uma das
redes conectadas diretamente, o emissor extrai a parte da rede do endereço IP de destino e
compara os bits extraídos com a parte da rede do(s) seu(s) próprio(s) endereço(s) IP. Uma
correspondência significa que o datagrama pode ser enviado diretamente. Aqui, vemos uma
das vantagens do esquema de endereço IP.
De um ponto de vista da inter-rede, é mais fácil pensar na entrega direta como a última
etapa em qualquer transmissão de datagramas, mesmo que o datagrama atravesse muitas
redes e roteadores intermediários. O roteador final ao longo do caminho entre a origem do
datagrama e seu destino se conectará diretamente à mesma rede física do destino. Assim, o
roteador final entregará o datagrama usando a entrega direta. Também podemos pensar na
entrega direta entre a origem e o destino como um caso especial do encaminhamento de uso
geral. Em uma rota direta, o datagrama não passa por roteadores intermediários.
7.15.4 Entrega Indireta
A entrega indireta é mais difícil do que a entrega direta, pois o emissor precisa
identificar um roteador inicial ao qual o datagrama pode ser enviado. O roteador precisa,
então, encaminhar o datagrama para a rede de destino.
Para visualizar como funciona o encaminhamento indireto, imagine uma grande rede
virtual com muitas redes físicas interconectadas por roteadores, mas somente com dois hosts
nas extremidades. Quando um host possui um datagrama para enviar, ele encapsula o
datagrama e o envia ao roteador mais próximo. Sabemos que o host pode alcançar um
roteador porque todas as redes físicas estão interconectadas, de modo que é preciso haver um
roteador conectado a cada rede. Assim, o host de origem pode alcançar um roteador usando
uma única rede física. Quando o frame alcança o roteador, o software extrai o datagrama
encapsulado, e o IP seleciona o próximo roteador ao longo do caminho até o destino. O
datagrama novamente é colocado em um frame e enviado pela próxima rede física até um
segundo roteador, e assim por diante, até que possa ser entregue diretamente.
Como um roteador pode saber para onde enviar cada datagrama? Como um host pode
saber qual roteador usar para determinado destino? As duas perguntas estão relacionadas,
pois ambas envolvem o encaminhamento IP.
7.15.5 Encaminhamento IP controlado por Tabela
O algoritmo de encaminhamento IP emprega uma estrutura de dados em cada máquina,
que armazena informações sobre possíveis destinos e como alcançá-los. A estrutura de dados
120
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
é conhecida formalmente como uma tabela de roteamento IP, e informalmente como
simplesmente tabela de roteamento.
Como tanto os hosts quanto roteadores roteiam datagramas, ambos possuem tabelas
de roteamento IP. Sempre que o software de encaminhamento IP em um host ou roteador
precisa transmitir um datagrama, ele consulta a tabela de roteamento a fim de decidir para
onde enviar o datagrama.
Que informações devem ser mantidas em uma tabela de roteamento? Se a tabela de
roteamento tivesse informações sobre cada endereço de destino possível, seria impossível
manter as tabelas atualizadas. Além do mais, como o número de destinos possíveis é grande,
pequenos sistemas de uso especial não poderiam se conectar à Internet, pois não teriam
espaço suficiente para armazenar as informações.
Conceitualmente, é desejável usar o princípio de esconder informações e permitir que
as máquinas tomem decisões de encaminhamento com o mínimo de informações. Por
exemplo, gostaríamos de isolar informações sobre hosts específicos para o ambiente local em
que eles existem e organizar as máquinas que estão distantes de modo a encaminhar pacotes
para elas sem conhecer tais detalhes. Felizmente, o esquema de endereçamento IP ajuda a
conseguir esse objetivo. Lembre-se de que os endereços IP são atribuídos para fazer com
que todas as máquinas conectadas a determinada rede física compartilhem um prefixo
comum (a parte de rede do endereço). Já vimos que essa atribuição torna eficiente o teste de
entrega direta. Isso também significa que as tabelas de roteamento só precisam conter
prefixos de rede e não endereços IP completos.
7.15.6 Encaminhamento do Próximo Salto
O uso da parte de rede de um endereço IP no lugar do endereço de host completo torna
o encaminhamento eficiente e mantém as tabelas de roteamento pequenas. Mais importante,
isso ajuda a ocultar informações, mantendo os detalhes dos hosts específicos confinados ao
ambiente local em que os hosts operam. Normalmente, uma tabela de roteamento contém
pares (N, R), onde N é o endereço IP de uma rede de destino, e R é o endereço IP do
“próximo” roteador ao longo do caminho até a rede N. O roteador R é chamado de próximo
salto (next hop), e a ideia de usar uma tabela de roteamento para armazenar o próximo salto
para cada destino é chamado de encaminhamento no próximo salto ou roteamento no
próximo salto. Assim, a tabela de roteamento em um roteador R só especifica uma etapa ao
longo do caminho de R até uma rede de destino. O roteador não conhece o caminho completo
até um destino.
É importante entender que cada entrada em uma tabela de roteamento aponta para um
roteador que pode ser alcançado por uma única rede. Ou seja, todos os roteadores listados
na tabela de roteamento da máquina M precisam estar em redes às quais M se conecta
diretamente. Quando um datagrama estiver pronto para sair de M, o Protocolo de Internet
localiza o endereço IP de destino e extrai a parte da rede. Depois, M usa a parte da rede para
tomar uma decisão de encaminhamento, selecionando um roteador que pode ser alcançado
diretamente.
Na prática, aplicamos o princípio de esconder informações também para hosts.
Insistimos que, embora os hosts tenham tabelas de roteamento IP, eles precisam manter
informações mínimas em suas tabelas. A ideia é forçar os hosts a contarem com roteadores
para a maior parte do encaminhamento.
A Figura 7.21 mostra um exemplo concreto que ajuda a explicar as tabelas de
roteamento. A rede virtual de exemplo consiste em quatro redes físicas conectadas por três
roteadores. A tabela na figura corresponde à tabela de roteamento para o roteador R. Como
121
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
R se conecta diretamente às redes 20.0.0.0 e 30.0.0.0, ele pode usar a entrega direta para
enviar a um host em qualquer uma dessas redes (possivelmente usando o ARP para encontrar
endereços físicos). Dado um datagrama destinado a um host na rede 40.0.0.0, R o roteia
para o endereço do roteador S, 30.0.0.7. Depois, S entregará o datagrama diretamente. R
pode alcançar o endereço 30.0.0.7 porque tanto R quanto S se conectam diretamente à rede
30.0.0.0.
Como demonstra a Figura 7.21, o tamanho da tabela de roteamento depende do número
de redes na rede virtual. A tabela só cresce quando novas redes são acrescentadas. Ou seja,
o tamanho e o conteúdo da tabela dependem do número de hosts individuais conectados às
redes.
Figura 7.21 – Uma internet de exemplo com 4 redes e 3 roteadores.
A escolha de rotas com base apenas no ID da rede de destino apresenta diversas
conseqüências. Primeiro, na maior parte das implementações, isso significa que todo o
tráfego destinado a determinada rede segue o mesmo caminho. Como resultado, mesmo
quando existem vários caminhos, eles podem não ser usados simultaneamente. Além disso,
no caso mais simples, todo o tráfego segue o mesmo caminho, sem considerar o atraso ou a
vazão das redes físicas. Segundo, como apenas o roteador final do caminho tenta se
comunicar com o host de destino, somente ele pode determinar se o host existe ou está
operacional. Assim, precisamos arrumar um meio para que o roteador final envie relatórios
de problemas de entrega de volta à origem. Terceiro, como cada roteador encaminha o
tráfego independentemente, os datagramas trafegando do host A para o host B podem seguir
um caminho inteiramente diferente dos datagramas trafegando do host B para o host A.
Precisamos nos assegurar que os roteadores cooperem para garantir que a comunicação
bidirecional sempre seja possível.
7.15.7 Rotas Default
Outra técnica utilizada para esconder informações e manter tamanhos pequenos de
tabela de roteamento e consolidar várias entradas em um caso default. A idéia é fazer com
que o software de encaminhamento IP primeiro examine a tabela de encaminhamento para a
rede de destino. Se nenhuma rota aparecer na tabela, o software de encaminhamento envia
o datagrama para um roteador default.
122
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
O encaminhamento default é útil especialmente quando um site possui um pequeno
conjunto de endereços locais e somente uma conexão com o restante da rede virtual. Por
exemplo, as rotas default funcionam bem nos computadores host que se conectam a uma
única rede física e só alcançarão um roteador levando ao restante da rede virtual. A decisão
de endereço consiste em dois testes: um para a rede local e um default que aponta para o
único roteador. Mesmo que o site contenha algumas redes locais, o encaminhamento é
simples porque consiste em testes para as redes locais mais um default para todos os outros
destinos.
7.15.8 Rotas Específicas do Host
Embora tenhamos dito que todo o encaminhamento é baseado em redes e não em hosts
individuais, a maioria dos softwares de encaminhamento IP permite que as rotas por host
sejam especificadas como um caso especial. Ter rotas por host dá ao administrador da rede
local mais controle sobre o uso da rede, permite o teste e também pode ser usado para
controlar o acesso para fins de segurança. Ao depurar conexões de rede ou tabelas de
roteamento, a capacidade de especificar uma rota especial a uma máquina individual prova
ser especialmente útil.
7.15.9 O Algoritmo de Encaminhamento IP
Levando em consideração tudo o que dissemos, o algoritmo original usado para
encaminhar datagramas IP com endereçamento com classe foi:
Algoritmo:
ForwardDatagram (Datagram, RoutingTable)







Extrair o endereço IP de destino, D, do datagrama;
Se a tabela contiver uma rota específica do host para D, enviar o datagrama ao
próximo salto especificado na tabela e sair;
Calcular N, o prefixo de rede do endereço D;
Se N combinar com qualquer endereço de rede conectado diretamente, entregar o
datagrama ao destino D por essa rede. (Isso envolve traduzir D para endereço físico,
encapsular o datagrama e enviar o frame).
Senão, se a tabela contiver uma rota para o prefixo de rede N, enviar o datagrama
ao próximo salto especificado na tabela;
Senão, se a tabela contiver uma rota default, enviar o datagrama ao roteador default
especificado na tabela;
Senão, declarar um erro de encaminhamento.
7.15.10 Encaminhamento com Endereços IP
É importante entender que, exceto por decrementar o tempo de vida e recalcular o
checksum, o encaminhamento IP não altera o datagrama original. Em particular, os
endereços de origem e destino do datagrama permanecem inalterados. Eles especificam o
endereço IP da origem e o endereço IP do destino final1. Quando o IP executa o algoritmo
de encaminhamento, ele seleciona um novo endereço IP, o endereço IP da máquina à qual o
datagrama deve ser enviado em seguida. O novo endereço provavelmente é o endereço de
um roteador. Porém, se o datagrama puder ser entregue diretamente, o novo endereço é o
mesmo que o do destino final.
1
A única exceção ocorre quando o datagrama contém a opção de rota de origem.
123
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Dissemos que o endereço IP selecionado pelo algoritmo de endereço IP é conhecido
como endereço do próximo salto, pois diz aonde o datagrama precisa ser enviado em seguida.
Onde o protocolo IP armazena o endereço do próximo salto? Não no datagrama. Não há
lugar reservado para ele. Na verdade, o protocolo IP não armazena qualquer endereço do
próximo salto. Depois de executar o algoritmo de encaminhamento, o protocolo IP passa o
datagrama e o endereço do próximo salto ao software de interface de rede responsável pela
rede física sobre a qual o datagrama precisa ser enviado. O software de interface de rede
vincula o endereço do próximo salto a um endereço físico, forma um frame usando esse
endereço físico, coloca o datagrama na parte de dados do frame e envia o resultado. Depois
de usar o endereço do próximo salto para encontrar um endereço físico, o software de
interface de rede descarta o endereço do próximo salto.
Pode parecer estranho que as tabelas de roteamento armazenem o endereço IP de um
próximo salto para cada rede de destino quando esses endereços precisam ser traduzidos para
os endereços físicos correspondentes antes que o datagrama possa ser enviado. Se
imaginarmos um host enviando uma seqüência de datagramas ao mesmo endereço de
destino, o uso de endereços IP parecerá incrivelmente ineficaz. O protocolo IP fielmente
extrai o endereço de destino em cada datagrama e usa a tabela de roteamento para produzir
um endereço de próximo salto. Depois, ele passa o datagrama e o endereço do próximo salto
para a interface de rede, que recalcula o vínculo para um endereço físico. Se a tabela de
roteamento usasse endereços físicos, o vínculo entre o endereço IP do próximo salto e o
endereço físico poderia ser realizado uma vez, economizando computação desnecessária.
Porque o IP evita o uso de endereços físicos ao armazenar e calcular rotas? Conforme
ilustra a Figura 7.22, existem dois motivos importantes.
Figura 7.22 – O IP e a tabela de roteamento residem acima do limite de endereço.
Primeiro, a tabela de roteamento provê uma interface clara entre o protocolo IP que
encaminha datagramas e o software de alto nível que trata as rotas. Para depurar problemas
de encaminhamento, os gerentes de rede normalmente precisam examinar as tabelas de
roteamento. Usar apenas endereços IP na tabela de roteamento faz com que os
administradores entendam e determinem melhor se o software atualizou as rotas
corretamente. Segundo, o objetivo do protocolo IP é montar uma abstração que esconde os
detalhes das redes básicas.
A Figura 7.22 mostra o limite de endereço, a divisão conceitual entre o software de
baixo nível que entende os endereços físicos e o software de rede virtual, que só usa
124
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
endereços de alto nível. Acima desse limite, todo software pode ser escrito para se comunicar
usando endereços de rede virtual. O conhecimento dos endereços físicos é relegado a
algumas rotinas pequenas, de baixo nível. Veremos que observar o limite também facilita a
compreensão, o teste e a modificação da implementação dos protocolos TCP/IP restantes.
7.15.11 Tratando de Datagramas que Chegam
Até aqui, discutimos o encaminhamento IP descrevendo como as decisões de
encaminhamento são tomadas a respeito dos datagramas que saem. Porém, deve ficar claro
que o protocolo IP precisa processar também os datagramas que chegam.
Quando um datagrama IP chega em um host, o software de interface de rede entrega o
datagrama ao módulo IP para processamento. Se o endereço de destino do datagrama
combinar com o endereço IP do host, o protocolo IP no host aceita o datagrama e o passa
para o software de protocolo de nível superior apropriado, para mais processamento. Se o
endereço IP de destino não combinar, um host precisa descartar o datagrama (ou seja, os
hosts são proibidos de tentar encaminhar datagramas enviados acidentalmente à máquina
errada).
Ao contrário dos hosts, os roteadores realizam o encaminhamento. Quando um
datagrama IP chega em um roteador, ele é entregue ao protocolo IP. Novamente, surgem
dois casos: o datagrama atingiu seu destino final, ou ele pode ter de viajar ainda mais. Assim
como nos hosts, se o endereço IP de destino do datagrama combinar com o próprio endereço
IP do roteador, o protocolo IP passa o datagrama para o protocolo de nível superior para
processamento1. Se o datagrama não tiver atingido seu destino final, o protocolo IP
encaminha o datagrama usando o algoritmo padrão e a informação na tabela de roteamento
local.
Determinar se um datagrama IP alcançou seu destino final não é tão trivial quanto
parece. Lembre-se de que um roteador possui várias conexões físicas, cada uma com seu
próprio endereço IP. Quando um datagrama IP chega, a máquina receptora precisa comparar
o endereço IP de destino com o endereço IP de cada uma de suas conexões de rede. Se houver
qualquer combinação, ela mantém o datagrama e o processa. Uma máquina também precisa
aceitar os datagramas que foram enviados por broadcast IP direcionado para essa rede. Os
endereços sem classe, de sub-rede e de multicast tornam o reconhecimento do endereço ainda
mais complexo. De qualquer forma, se o endereço não combinar com qualquer um dos
endereços da máquina local, o IP decrementa o campo TTL no cabeçalho do datagrama,
descartando o datagrama se a contagem atingir zero, ou recalculando um novo checksum e
encaminhando o datagrama se a contagem permanecer positiva.
Cada máquina deve encaminhar os datagramas IP que ela recebe? Obviamente, um
roteador precisa encaminhar os datagramas que chegam, pois essa é sua função principal.
Dissemos que alguns sites também configuram computadores de uso geral para operar como
roteadores, e esses computadores precisam ser configurados para encaminhar datagramas.
Porém, os hosts não projetados para ser roteadores não podem encaminhar datagramas. Se
tal host receber um datagrama que não corresponde a qualquer um dos endereços do host, o
host precisa descartar o datagrama.
Existem quatro motivos para um host não projetado a servir como roteador evitar a
realização de quaisquer outras funções. Primeiro, quando esse tipo de host recebe um
1
Normalmente, os únicos datagramas destinados a um roteador são aqueles usados para testar a conectividade ou aqueles
que transportam comandos de gerenciamento do roteador, mas um roteador também recebe uma cópia de qualquer
datagrama que é enviado por broadcast na rede.
125
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
datagrama direcionado para alguma outra máquina, algo saiu errado com o endereçamento,
encaminhamento ou entrega da rede virtual. O problema pode não ser revelado se o host
tomar uma ação corretiva encaminhando o datagrama. Segundo, o encaminhamento causará
tráfego desnecessário na rede (e pode roubar tempo de CPU para usos legítimos do host).
Terceiro, erros simples podem causar caos. Suponha que cada host encaminhe tráfego, e
imagine o que acontece se uma máquina acidentalmente transmitir por broadcast um
datagrama destinado a um host, H. Por ter sido enviado por broadcast, cada host na rede
recebe uma cópia do datagrama. Cada host encaminha sua cópia para H, que será
bombardeado com muitas cópias. Quarto, os roteadores realizam mais do que simplesmente
encaminhar tráfego. Os roteadores usam um protocolo especial para relatar erros, enquanto
os hosts não fazem isso (novamente, para evitar que vários relatórios de erro bombardeiem
uma origem). Os roteadores também propagam informações para garantir que suas tabelas
de roteamento sejam consistentes e corretas. Se os hosts encaminharem datagramas sem
participar totalmente de todas as funções do roteador, podem surgir anomalias inesperadas.
7.16 IPv6
A evolução da tecnologia TCP/IP sempre esteve interligada a evolução da Internet global.
Com centenas de milhões de usuários em sites no mundo inteiro dependendo da internet global
como parte do seu ambiente de trabalho diário, pode parecer que passamos dos primeiros estágios
de desenvolvimento e agora temos uma facilidade de produção completamente estável. Apesar
das aparências, porém, nem a internet nem o conjunto de protocolos TCP/IP são estáticos. Os
pesquisadores e engenheiros descobrem novas maneiras de usar a tecnologia e melhorar os
mecanismos básicos.
A finalidade desta seção é considerar o processo evolucionário contínuo e examina um dos
esforços de engenharia mais significativos: uma revisão proposta do IP. Se a proposta for adotada
por fornecedores, ela terá um forte impacto sobre os protocolos e a internet global.
7.16.1 Por que Mudar?
No início da década de 1990, os pesquisadores argumentaram que a internet era
insuficiente para novas aplicações, como voz e vídeo. Eles argumentaram ainda que o
crescimento da internet, que estava dobrando em tamanho a cada nove meses, ou mais rápido
ainda, logo esgotaria o conjunto de endereços disponíveis. Desde então, duas coisas ficaram
claramente visíveis. Primeiras aplicações como telefonias funcionam bem pela internet
existente. Em segundo lugar, os endereçamentos CIDR e NAT forneceram as extensões de
endereço necessárias, as projeções atuais sugerem que teremos endereços suficientes até
2022 (2028, se os endereços não usados forem reaproveitados).
7.16.2 Além do IPv4
A versão 4 do Internet Protocol (IPv4) foi a primeira versão de trabalho; ela
permaneceu quase inalterada desde o seu surgimento no final da década de 1970. A
longevidade da versão 4 mostra que o projeto é flexível e poderoso. Desde o momento em
que o IPv4 foi projetado, o desempenho do processador aumentou por três ordens de
grandeza, os tamanhos típicos da memória aumentaram por um fator maior que 400, as
larguras de banda dos enlaces de maior velocidade na internet aumentaram por um fator de
150.000. As tecnologias de LAN emergiam e o número de hosts na internet aumentou de
alguns para centenas de milhões.
A principal motivação para atualizar o IP é a eventual limitação no espaço de
endereços. Quando o IP foi projetado, um espaço de endereços de 32 bits foi mais do que
suficiente. Somente algumas das organizações usavam uma LAN, e nenhum tinha um PC.
126
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Agora, porém, até mesmo corporações pequenas possuem LANs e vários computadores. Se
cada telefone celular receber um endereço IP, os endereços serão esgotados rapidamente.
7.16.3 A Estrada para uma Nova Versão do IP
Foram necessários vários anos para que o IETF formulasse uma nova versão do IP.
Como o IETF produz padrões abertos, ele convidou representantes de muitas comunidades
para participarem do processo. Os fabricantes de computadores, fornecedores de hardware
e softwares, usuários, gerentes, programadores, companhias de telefones e o setor inteiro de
televisão a cabo especificaram seus requisitos para a próxima versão do IP, e todos
comentaram sobre propostas específicas.
Muitos projetos foram propostos para servir a uma finalidade em particular ou a uma
comunidade em particular. No fim, um projeto conhecido como SIP 1 (Simple IP) tornou-se
a base para uma proposta estendida, que incluía idéias de outras propostas. A versão
estendida foi chamada de SIPP (Simple IP Plus) e tornou-se o projeto escolhido como base
para o próximo IP.
7.16.4 O Nome do Próximo IP
O IETF decidiu atribuir à revisão do IP o número de versão 6 e chamou-o de IPv6 (ele
era conhecido originalmente como “IP – The Next Generation” (IPng). O número de versão
5 foi pulado depois de uma serie de erros e mal entendidos. A escolha de numerar a nova
versão com 6 eliminou a confusão e a ambiguidade.
7.16.5 Características do IPv6
O protocolo IPv6 proposto retém muitas das características que contribuíram para o
sucesso do IPv4. Na verdade, os projetistas caracterizaram o IPv6 como sendo basicamente
o mesmo que o IPv4, com algumas pequenas modificações. Por exemplo, o IPv6 ainda
admite entrega sem conexão (ou seja, cada datagrama é roteado independentemente),
permite que o emissor escolha o tamanho de um datagrama e exige que o emissor especifique
o número máximo de saltos que um datagrama pode fazer antes de ser terminado. Como
veremos, o IPv6 também retém a maior parte dos conceitos fornecidos pelas opções do IPv4,
incluindo facilidades para fragmentação e roteamento de origem.
Apesar de muitas semelhanças conceituais, o IPv6 muda a maior parte dos detalhes do
protocolo. Por exemplo, o IPv6 usa endereços maiores e acrescenta alguns novos recursos.
Mais importante, o IPv6 revisa completamente o formato de datagrama, substituindo o
campo de opções de tamanho variável do IPv4 por uma série de cabeçalhos de formato fixo.
Examinaremos os detalhes depois de considerar as principais mudanças e a motivação
básica para cada um.
As mudanças introduzidas pelo IPv6 podem ser agrupadas em sete categorias:
1

Endereços maiores: o novo tamanho do endereço é a mudança mais observável.
O IPv6 quadruplica o tamanho de um endereço IPv4 de 32 bits para 128 bits.

Hierarquia de endereço estendida: o IPv6 usa o espaço de endereço maior para
criar níveis adicionais de hierarquia de endereçamento (por exemplo, para
permitir que um ISP aloque blocos de endereços a cada cliente).
O acrônimo SIP agora se refere a Session Initiation Protocol.
127
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão

Formato de cabeçalho flexível: o IPv6 usa um formato de datagrama
completamente novo e incompatível, que inclui um conjunto de cabeçalhos
opcionais.

Opções avançadas: o IPv6 permite que um datagrama inclua informações de
controle opcionais; as opções do IPv6 fornecem facilidades adicionais não
disponíveis no IPv4.

Provisão para extensão de protocolo: em vez de especificar todos os detalhes, a
capacidade de extensão do IPv6 permite que o IETF adapte o protocolo ao novo
hardware de rede e novas aplicações.

Suporte para autoconfiguração e renumeração: o IPv6 permite que os
computadores em uma rede isolada atribuam endereços locais
automaticamente; o projeto também permite que um gerente renumere redes em
um site dinamicamente.

Suporte para alocação de recurso: o IPv6 inclui uma abstração de fluxo e bits
para a especificação de serviço diferenciado (DiffServ).
7.16.6 Forma Geral de um Datagrama IPv6
O IPv6 muda completamente o formato do datagrama. Como mostra a Figura 7.23,
um datagrama IPv6 possui um cabeçalho básico de tamanho fixo seguido por zero ou mais
cabeçalhos de extensão, seguidos pelos dados.
opcional
Cabeçalho
Básico
Cabeçalho de
Extensão 1
...
Cabeçalho de
Extensão N
Dados...
Figura 7.23 – Formato Geral de um Datagrama IPv6.
7.16.6.1 Formato de Cabeçalho Básico do IPv6
Embora deva acomodar endereços maiores, um cabeçalho básico IPv6 contem
menos informações do que um cabeçalho de datagrama IPv4. As opções e alguns dos
campos fixos que aparecem em um cabeçalho de datagrama IPv4 foram movidos para
cabeçalhos de extensão no IPv6. Em geral, as mudanças no cabeçalho do datagrama
refletem as mudanças no protocolo:

O alinhamento foi alterado de múltiplos de 32 bits para 64 bits.

Um campo de tamanho de cabeçalho foi eliminado, e o campo de tamanho
do datagrama foi substituído por um campo de TAMANHO DO PAYLOAD
(PAYLOAD LENGTH).

O tamanho dos campos de endereços de origem e destino foi aumentado
para 16 octetos cada um.

A informação de fragmentação foi movida para fora dos campos fixos no
cabeçalho básico para um cabeçalho de extensão.

O campo TEMPO DE VIDA (TIME TO LIVE) foi substituído por um
campo LIMITE DE SALTOS (HOP LIMIT).

O TIPO DE SERVIÇO (SERVICE TYPE) teve o nome alterado para
CLASSE DE TRÁFEGO (TRAFFIC CLASS) e estendido com um campo
RÓTULO DE FLUXO (FLOW LABEL).
128
Apostila de Fundamentos de Redes de Computadores

Prof: Ricardo Quintão
O campo PROTOCOLO (PROTOCOL) foi substituído por um campo que
especifica o tipo do próximo cabeçalho.
A Figura 7.24 mostra o conteúdo e o formato de um cabeçalho IPv6 básico. Vários
campos em um cabeçalho básico de IPv6 correspondem diretamente aos campos em um
cabeçalho IPv4. Assim como no IPv4, o campo VERS de 4 bits inicial especifica a
versão do protocolo; VERS sempre contem 6 em um datagrama IPv6. Assim como no
IPv4, os campos ENDEREÇO DE ORIGEM (SOURCE ADDRESS) e ENDEREÇO DE
DESTINO (DESTINATION ADDRESS) especificam os endereços do emissor e
destinatários desejados. Porém, no IPv6, cada endereço requer 16 octetos. O campo
LIMITE DE SALTO corresponde ao campo TEMPO DE VIDA do IPv4. Diferente do
IPv4, que interpreta um tempo de vida como uma combinação de contagem de saltos e
tempo máximo, o IPv6 interpreta o valor como dado um limite estrito sobre o numero
máximo de saltos que um datagrama pode fazer antes de ser descartado.
0
4
VERS
12
Classe de Tráfego
Tamanho do Payload
16
24
31
Rótulo de Fluxo
Próximo Cabeçalho
Limite de Saltos
Endereço de Origem
Endereço de Destino
Figura 7.24 – O Formato do Cabeçalho Básico do IPv6 de 40 octetos.
O IPv6 trata de especificações de tamanho de datagrama de uma nova maneira.
Primeiro, como o tamanho do cabeçalho básico é fixado em 40 octetos, o cabeçalho
básico não inclui um campo para o tamanho do cabeçalho. Em segundo lugar, o IPv6
substitui o campo de tamanho do datagrama do IPv4 por um campo de TAMANHO DO
PAYLOAD que especifica o número de octetos transportados no datagrama, excluindo
o próprio cabeçalho. Assim, um datagrama IPv6 pode conter 64K octetos de dados.
Dois campos no cabeçalho básico são usados na tomada de decisões de
encaminhamento. O campo TIPO DE SERVIÇO do IPv4 foi renomeada como CLASSE
DE TRÁFEGO. Além disso, um novo mecanismo no IPv6 admite reserva de recurso e
permite que um roteador associe a cada datagrama uma determinada alocação de
recurso. A abstração básica, um fluxo, consiste em um caminho por uma internet junto
à quais roteadores intermediárias garantem uma qualidade de serviço especifico. O
campo RÓTULO DE FLUXO no cabeçalho básico contém informações que os
roteadores utilizam para associar um datagrama a um fluxo e prioridade especificos.
Por exemplo, duas aplicações que precisam enviar vídeo podem estabelecer um fluxo
em que o atraso e a largura da banda sejam garantidos. Como alternativa, um provedor
de rede pode exigir que um assinante especifique a qualidade de serviço desejada e
depois use um fluxo para limitar o tráfego que um computador específico ou aplicação
específica envia. Observe que os fluxos também podem ser usados dentro de
determinada organização para gerenciar recursos de rede e garantir que todas as
aplicações recebam uma fatia justa. Um roteador usa a combinação de endereço de
origem do datagrama e identificador de fluxo ao associar um datagrama a um fluxo
específico.
129
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
7.16.6.2 Cabeçalhos de Extensão do IPv6
O paradigma de um cabeçalho de base fixa seguida por um conjunto de cabeçalhos
de extensão foi escolhido como um compromisso entre generalidade e eficiência. Para
ser totalmente geral, o IPv6 precisa incluir mecanismo de modo a dar suporte a funções
como fragmentação, roteamento de origem e autenticação. Porém, a escolha de alocar
campos fixos no cabeçalho do datagrama para todos os mecanismos é ineficaz, pois a
maioria dos datagramas não usa todos os mecanismos; o grande tamanho de endereços
do IPv6 aumenta a ineficiência. Por exemplo, ao enviar um datagrama por uma única
rede local, um cabeçalho que contem campos de endereço vazios pode ocupar uma
fração substancial de cada frame.
Mais importante, os projetistas observam que ninguém pode prever quais
facilidades serão necessárias.
O paradigma do cabeçalho de extensão do IPv6 funciona de modo semelhante às
funções do IPv4. Um emissor pode escolher quais cabeçalhos de extensão incluir em
determinado datagrama e quais omitir. Assim, os cabeçalhos de extensão oferecem o
máximo de flexibilidade.
7.16.7 Analisando um Datagrama IPv6
Cada um dos cabeçalhos básico e de extensão contém um campo PRÓXIMO
CABECALHO (NEXT HEADER) que os roteadores intermediários e o destino final utilizam
para desmembrar o datagrama. O processamento é sequencial. O campo PRÓXIMO
CABEÇALHO em cada cabeçalho diz o que aparece em seguida. Por exemplo, a Figura 7.25
mostra os campos PROXIMO CABEÇALHO de três datagramas que contêm zero, um e dois
cabeçalhos de extensão.
Cabeçalho BÁSICO
Próximo = TCP
Segmento TCP
(a)
Cabeçalho BÁSICO
Próximo = ROUTE
Cabeçalho BÁSICO
Próximo = ROUTE
Cabeçalho ROUTE
Próximo = TCP
(b)
Cabeçalho ROUTE
Próximo = AUTH
Segmento TCP
Cabeçalho AUTH
Próximo = TCP
Segmento TCP
(c)
Figura 7.25 – Três Datagramas IPv6.
Para agilizar o processamento, o IPv6 exige que os cabeçalhos de extensão utilizados
por roteadores intermediários sejam colocados antes dos cabeçalhos de extensão usados pelo
destino final. O IPv6 usa o termo cabeçalho salto-a-salto (hop-by-hop header) para se referir
a um cabeçalho de extensão que um roteador intermediário precisa processar. Assim os
cabeçalhos salto-a-salto precedem os cabeçalhos de fim-a-fim.
7.16.8 Fragmentação e Remontagem do IPv6
A fragmentação de datagramas IPv6 é permitida; um cabeçalho de extensão é usado
para especificar que um datagrama é um fragmento. Assim como no IPv4, o IPv6
providencia para que o destino final realize a remontagem do datagrama. Porém, os
projetistas escolheram fazer mudanças que evitam a fragmentação por roteadores. Lembrese de que o IPv4 requer que um roteador intermediário fragmente qualquer datagrama que
130
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
seja muito grande para a MTU da rede que ele precisa atravessar. No IPv6, a fragmentação
é de fim-a-fim; nenhuma fragmentação ocorre nos roteadores intermediários. A origem, que
é responsável pela fragmentação, tem duas escolhas: ela pode usar a MTU mínima garantida
de 1.280 octetos ou realiza a descoberta de MTU do caminho (Path MTU Discovery) para
identificar a MTU mínima ao longo do caminho até o destino. De qualquer forma, a origem
fragmenta de modo que cada fragmento seja menor que a MTU esperada do caminho. A
Figura 7.26 mostra o conteúdo de um cabeçalho de extensão de fragmento (Fragmentation
Extension Header).
0
8
Próximo Cabeçalho
16
RESERVADO
Offset de Fragmento
IDENTIFICAÇÃO DO DATAGRAMA
29
RS
31
M
Figura 7.26 – O Formato de um Cabeçalho de Extensão de Fragmento.
O IPv6 retém a funcionalidade de fragmentação básica. Cada fragmento precisa ser
um múltiplo de 8 octetos, o único bit do campo M marca o último fragmento, como o bit
MORE FRAGMENTS do IPv4, e o campo IDENTIFICAÇÃO DO DATAGRAMA transporta
uma ID exclusiva que o receptor usa para agrupar fragmentos1. Finalmente, o campo RS é
atualmente reservado. Os dois bits são definidos como zero na transmissão e ignorados pelo
receptor.
7.16.9 A Conseqüência da Fragmentação de fim-a-fim
A motivação para usar a fragmentação de fim-a-fim está em sua capacidade de reduzir
o overhead em roteadores e permitir que cada roteador trate de mais datagramas por tempo
unitário. Na realidade, a sobrecarga de CPU exigida para a fragmentação IPv4 pode ser
significativa. Em um roteador convencional, a CPU pode atingir 100% de utilização se o
roteador fragmentar todos os datagramas que ele recebe. Porém, a fragmentação de fim-afim tem uma consequência importante: ela altera a suposição fundamental do IPv4 de que as
rotas mudam dinamicamente.
Para entender a consequência da fragmentação de fim-a-fim, lembre-se de que o IPv4
foi projetado para permitir que as rotas mudem a qualquer hora. Por exemplo, se uma rede
ou roteador falhar, o tráfego pode ser roteado por um caminho diferente. A principal
vantagem desse sistema é a flexibilidade. O tráfego pode ser roteado ao longo de um caminho
alternativo sem atrapalhar o serviço e sem informar a origem ou o destino. Porém, no IPv6,
as rotas não podem ser alteradas tão facilmente, pois uma mudança em uma rota também
pode alterar a MTU do caminho, então um roteador intermediário precisa fragmentar o
datagrama ou a origem precisa ser informada.
Para resolver o problema de mudanças de rota que afetam a MTU do caminho, o IPv6
inclui uma nova mensagem de erro ICMP. Quando um roteador descobrir que a
fragmentação é necessária, ele enviará a mensagem de volta à origem. Ao receber tal
mensagem, a origem realizará outra descoberta de MTU do caminho para determinar uma
nova MTU mínima e depois fragmentará os datagramas de acordo com o novo valor.
7.16.10 Roteamento de Origem IPv6
O IPv6 retém a capacidade para um emissor especificar uma rota de origem solta.
Diferente do IPv4, em que o roteamento de origem é fornecido por opções, o IPv6 usa um
cabeçalho de extensão separado. Como mostra a Figura 7.27, os quatro primeiros campos
do Cabeçalho de Roteamento são fixos. O TIPO DE ROTEAMENTO (ROUTING TYPE)
1
O IPv6 expande o campo de IDENTIFICAÇÃO do IPv4 para 32 bits, a fim de acomodar redes de maior velocidade.
131
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
especifica o tipo de informação de roteamento. O único tipo que foi definido, tipo 0,
corresponde ao roteamento de origem solto. O campo DADOS ESPECÍFICOS DO TIPO
(TYPE-SPECIFIC DATA) contém uma lista de endereços de roteadores através dos quais o
datagrama precisa passar. O campo SEGMENTOS RESTANTES (SEG LEFT) especifica o
número total de endereços na lista. Finalmente, o campo TAMANHO DO CABEÇALHO DE
EXTENSÃO (HDR EXT LEN) especifica o tamanho do cabeçalho de roteamento.
0
8
Tamanho do Cabeçalho
de Extensão
Próximo Cabeçalho
16
24
Tipo de Roteamento
31
Segmentos Restantes
DADOS ESPECÍFICOS DO TIPO
.
.
.
Figura 7.27 – O Formato de um Cabeçalho de Roteamento IPv6.
7.16.11 Opções do IPv6
Pode parecer que os cabeçalhos de extensão do Ipv6 substituem completamente as
opções Ipv4. Porém, os projetistas propõem dois cabeçalhos de extensão adicionais do Ipv6
para acomodar informações diversificadas não incluídas nos outros cabeçalhos de extensão.
Os cabeçalhos adicionais são um cabeçalho de estensão salto-a-salto e um cabeçalho de
extensão de fim-a-fim.
Embora cada um dos dois cabeçalhos de opção tenha um código de tipo exclusivo, os
dois cabeçalhos utilizam o formato ilustrado na Figura 7.28.
0
8
Próximo Cabeçalho
Tamanho Cabeçalho
16
24
31
UMA OU MAIS OPÇÕES
Figura 7.28 – O Formato de um Cabeçalho de Extensão de Opção IPv6.
Como sempre, o campo PRÓXIMO CABEÇALHO indica o tipo do cabeçalho que vem
em seguida. Como um cabeçalho de opção não tem tamanho fixo, o campo rotulado com
TAMANHO CABEÇALHO especifica o tamanho total do cabeçalho. A área rotulada com
UMA OU MAIS OPÇÕES representa uma seqüência de opções individuais. A Figura 7.29
ilustra que cada opção individual é codificada com um tipo, tamanho e valor 1. As opções
não estão alinhadas ou preenchidas.
0
8
TIPO
16
TAMANHO
VALOR
Figura 7.29 – A Codificação de uma Opção Individual em um Cabeçalho de Extensão IPv6.
Como mostra a figura, as opções do Ipv6 seguem o mesmo formato das opções do IPv4.
Cada opção começa com um campo TIPO de um octeto, seguido por um campo de
1
Na literatura, uma codificação de tipo, tamanho e valor às vezes é chamada de codificação TLV (Type, Length, Value).
132
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
TAMANHO de um octeto. Se a opção exigir dados adicionais, os octetos que constituem o
VALOR vêm após o TAMANHO.
Os bits de alta ordem de cada campo TIPO da opção especificam como um host ou
roteador deve descartar um datagrama se não entender a opção. A Tabela 7.6 Mostra os bits
de tipo e o seu significado.
Bits no Tipo
00
01
10
11
Significado
Pular esta Opção.
Descartar datagrama; não enviar mensagem ICMP.
Descartar datagrama; enviar mensagem ICMP à origem.
Descartar datagrama; enviar ICMP se não multicast.
Tabela 7.6 – Significado do Campo TIPO.
Além disso, o terceiro bit no campo TIPO especifica se a opção pode mudar em trânsito.
É importante ter essa informação para autenticação. O conteúdo de uma opção que pode
mudar em trânsito e tratado como zeros, para fins de autenticação.
7.16.12 Tamanho do Espaço de Endereços do IPv6
No IPv6, cada endereço ocupa 16 octetos, quatro vezes o tamanho de um endereço
IPv4. O espaço de endereços grande garante que o IPv6 pode tolerar qualquer esquema de
atribuição de endereço razoável. Na verdade, se os projetistas decidirem mudar o esquema
de endereçamento mais tarde, o espaço de endereços é suficientemente grande para acomodar
uma reatribuição.
É difícil compreender o tamanho do espaço de endereços do IPv6. Um modo de
examinar isso é relacionar a magnitude ao tamanho da população: o espaço de endereços é
tão grande que cada pessoa no planeta pode ter endereços suficientes para ter sua própria
Internet Global, tão grande quanto a Internet atual. Uma segunda forma de pensar no
endereçamento IPv6 é relacioná-lo ao espaço físico disponível: a superfície da terra tem
aproximadamente 5,1x108 quilômetros quadrados, significando que existem mais de 10 24
endereços por metro quadrado da superfície da terra. Outra forma de entender o tamanho é
relacioná-lo ao esgotamento de endereços. Por exemplo, considere quanto tempo levaria para
atribuir todos os endereços possíveis. Um inteiro de 16 octetos pode manter 2 128 valores.
Assim, o espaço de endereços é maior do que 3,4x1038. Se os endereços forem atribuídos na
velocidade de um milhão de endereços a cada microssegundo, seriam necessários mais de
1020 anos para atribuir todos os endereços possíveis.
7.16.13 Notação Hexadecimal de dois pontos do IPv6
Embora solucione o problema de ter capacidade insuficiente, o tamanho grande de
endereço impõe um novo problema interessante: os seres humanos que mantêm inter-redes
precisam ler, digitar e manipular esses endereços. Obviamente, a notação binária é
impraticável. Porém, a notação decimal pontilhada usada para o IPv4 também não torna
esses endereços suficientemente compactos. Para entender por que, considere um número de
128 bits de exemplo, expresso na notação decimal pontilhada.
104.230.140.100.255.255.255.255.0.0.17.128.150.10.255.255
Para ajudar a tornar os endereços ligeiramente mais compactos e mais fáceis de entrar,
os projetistas do IPv6 propõem o uso da notação hexadecimal com dois pontos, em que o
valor de cada quantidade de 16 bits é representado em hexadecimal separado por sinais de
dois pontos. Por exemplo, quando o valor mostrado antes em notação decimal pontilhada é
traduzido para a notação hexadecimal com dois pontos, ele fica da forma abaixo:
133
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
68E6:8C64:FFFF:FFFF:0:1180:96A:FFFF
A notação hexadecimal com dois pontos tem a vantagem óbvia de exigir menos dígitos
e menos caracteres separados que o decimal pontilhado. Além disso, a notação hexadecimal
com dois pontos inclui duas técnicas que a tornam extremamente útil. Primeiro, permite a
compactação de zeros, em que uma sequência de zeros repetidos é substituída por um par de
sinais de dois pontos. Por exemplo, o endereço:
FF05:0:0:0:0:0:0:B3
Pode ser escrito como:
FF05::B3
Para garantir que a compactação de zeros produza uma interpretação não ambígua, a
proposta especifica que ela pode ser aplicada apenas uma vez em qualquer endereço. A
compactação de zero é especialmente útil quando usada com o esquema de atribuição de
endereço proposto, pois muitos endereços terão sequências contíguas de zeros. Em segundo
lugar, a notação hexadecimal com dois pontos incorpora os sufixos decimais pontilhados.
Veremos que essas combinações devem ser usadas durante a transição do IPv4 para o IPv6.
Por exemplo, a sequência a seguir é uma notação hexadecimal com dois pontos válida:
0:0:0:0:0:0:128.10.2.1
Observe que, embora os números separados por sinais de dois pontos especifiquem o
valor de uma quantidade de 16 bits, os números na parte decimal com ponto especificam,
cada um, o valor de um octeto. Naturalmente, a compactação de zeros pode ser usada com o
número anterior para produzir uma seqüência hexadecimal de dois pontos equivalente, muito
semelhante a um endereço IPv4:
::128.10.2.1
Finalmente, o IPv6 estende a notação tipo CIDR, permitindo que um endereço seja
seguido por uma barra e um inteiro que especifica um número de bits. Por exemplo:
12AB::CD30:0:0:0:0/60
Esta notação especifica os primeiros 60 bits do endereço ou (12AB00000000CD3) 16.
7.16.14 Endereços IPv4 Embutidos e Transição
Embora o prefixo 0000 0000 seja rotulado como reservado, os projetistas planejam usar
uma pequena fração dos endereços nessa seção para codificar os endereços IPv4. Em
particular, qualquer endereços que começa com 80 bits zero seguidos por 16 bits 1 ou 16 bits
0 contém um endereço IPv4 nos 32 bits de baixa ordem. O valor do campo de 16 bits indica
se o nó também tem um endereço de unicast IPv6 convencional. A Figura 7.30 ilustra as
duas formas.
80 bits zero
0000.......0000
0000.......0000
16 bits
0000
FFFF
32 bits
Endereço IPv4
Endereço IPv4
Figura 7.30 – Codificação de um Endereço IPv4 em um Endereço IPv6.
A codificação será necessária durante a transição do IPv4 para IPv6 por dois motivos.
Primeiro, um computador pode escolher atualizar do IPv4 para IPv6 antes de receber um
endereço IPv4 válido. Segundo, um computador usando IPv6 pode ter de se comunicar com
um computador que usa IPv4.
134
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Ter um modo de codificar um endereço IPv4 em um endereço IPv6 não soluciona o
problema de tornar as duas versões interoperáveis. Além de resolver a codificação, a
tradução é necessária. Para usar um tradutor, um computador IPv6 gera um datagrama que
contém a codificação IPv6 do endereço de destino IPv4. O computador IPv6 envia o
datagrama a um tradutor, que usa IPv4 para se comunicar com o destino. Quando o tradutor
recebe uma resposta do destino, ele traduz o datagrama IPv4 para IPv6 e o envia de volta à
origem IPv6.
Pode parecer que a tradução de endereços de protocolo poderia falhar porque
protocolos de camada mais alta verificam a integridade do endereço. Em particular, TCP e
UDP utilizam um pseudocabeçalho em seu cálculo de checksum. O pseudocabeçalho inclui
os endereços de protocolo de origem e destino, de modo que alterar esses endereços poderia
afetar o cálculo. Porém, os projetistas planejaram cuidadosamente para permitir que o TCP
ou UDP em uma máquina IPv4 se comuniquem com o protocolo de transporte
correspondente em uma máquina IPv6. Para evitar divergências do checksum, a codificação
IPv6 de um endereço IPv4 foi escolhida de modo que o checksum do complemento a 1 de 16
bits para um endereço IPv4 e a codificação IPv6 do endereço sejam idênticos.
7.16.15 Endereços Não-Especificados e de Loopback
Assim como no IPv4, alguns endereços IPv6 receberam significado especial. Por
exemplo, o endereço tudo zero:
0:0:0:0:0:0:0:0
Este é um endereço não-especificado. Que não pode ser atribuído a qualquer
computador ou usado como destino. Ele só é usado como endereço de origem durante a
inicialização por um computador que ainda não descobriu seu endereço.
Assim como o IPv4, o IPv6 também possui um endereço de loopback que é usado para
testar o software. O endereço de loopback do IPv6 é:
0:0:0:0:0:0:0:1
Qualquer datagrama enviado ao endereço de loopback será entregue à máquina local.
Ele nunca deve ser usado como endereço de destino em um datagrama que sai.
7.16.16 Estrutura de Endereço Unicast
A versão mais recente da estrutura de endereçamento unicast do IPv6 é semelhante ao
esquema de endereçamento de sub-rede, em que cada endereço é dividido em três partes
conceituais. No IPv6, as três partes correspondem a: um prefixo exclusivamente definido
usado para rotear o datagrama, uma ID de sub-rede, usada para distinguir entre várias redes
físicas em determinado site, e uma ID de interface, para identificar uma conexão em
particular com a sub-rede. A Figura 7.31 ilustra como um endereço IPv6 é desmembrado em
partes.
N bits
PREFIXO DE ROTEAMENTO GLOBAL
64–N bits
ID DE SUB-REDE
64 bits
ID DE INTERFACE
Figura 7.31 – A Divisão de um Endereço de Unicast IPv6 em Três Partes.
7.17 ICMP
Anteriormente mostrou-se como o Internet Protocol provê um serviço de entrega de
datagrama não confiável e sem conexão, fazendo com que cada roteador encaminhe datagramas.
Um datagrama viaja de um roteador para outro até que alcance um que possa entregar o
datagrama diretamente para o seu destino final. Se um roteador não puder encaminhar ou entregar
135
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
um datagrama, ou se o roteador detectar uma condição incomum que afete sua capacidade de
realizar o encaminhamento (por exemplo, congestionamento de rede), o roteador precisa informar
à origem para que esta tome uma ação no sentido de evitar ou corrigir o problema. Nesta seção
discutiremos um mecanismo que os roteadores e hosts da Internet utilizam para comunicar essa
informação de controle ou erro. Veremos que os roteadores usam o mecanismo para relatar
problemas e os hosts o utilizam para testar se os destinos são alcançáveis.
7.17.1 O Internet Control Message Protocol
No sistema sem conexão que descrevemos até aqui, cada roteador opera de forma
autônoma, encaminhando e entregando datagramas que chegam sem coordenar com o
emissor original. O sistema funciona bem se todos os hosts e roteadores operarem
corretamente e combinarem a respeito das rotas. Infelizmente, nenhum sistema de
comunicação grande funciona corretamente o tempo todo. Além de falhas das linhas de
comunicação e processadores, o IP deixa de entregar datagramas quando a máquina de
destino for temporariamente ou permanentemente desconectada da rede, quando o contador
de tempo de vida expirar, ou quando roteadores intermediários ficarem tão congestionados
que não possam processar o tráfego que chega. A diferença importante entre ter uma única
rede implementada com hardware homogêneo, dedicado, e uma rede implementada com
vários sistemas independentes é que, no primeiro caso, o projetista pode arrumar o hardware
para informar aos hosts conectados quando surgirem problemas. Em uma rede, que não
possui tal mecanismo de hardware, um emissor não pode saber se uma falha de entrega
resultou de um defeito local ou de um remoto. A depuração se torna extremamente difícil.
O próprio protocolo IP não contém nada para ajudar o emissor a testar a conectividade ou
descobrir tais falhas.
Para permitir que os roteadores em uma internet informem erros ou ofereçam
informações sobre circunstâncias inesperadas, os projetistas incluíram um mecanismo de
mensagem de uso especial aos protocolos TCP/IP. O mecanismo, conhecido como Internet
Control Message Protocol (ICMP), é considerado uma parte obrigatória do IP e precisa ser
incluído em toda implementação IP.
Assim como outros tipos de tráfego, as mensagens ICMP atravessam a Rede na parte
de dados dos datagramas IP. Porém, o destino final de uma mensagem ICMP não é um
aplicativo ou usuário na máquina de destino, mas o software de Internet Protocol nessa
máquina. Ou seja, quando chega uma mensagem de erro ICMP, o módulo de software ICMP
trata dela. Naturalmente, se o ICMP estabelece que determinado protocolo ou aplicativo de
nível superior causou um problema, ele informa o módulo apropriado.
Inicialmente projetado para permitir que os roteadores informem a causa dos erros de
entrega aos hosts, o ICMP não é restrito a roteadores. Embora as diretrizes restrinjam o uso
de algumas mensagens ICMP, uma máquina qualquer pode enviar uma mensagem ICMP a
qualquer outra máquina. Assim, um host pode usar ICMP para corresponder com um
roteador ou outro host. A principal vantagem de permitir que os hosts utilizem ICMP é que
oferece um único mecanismo, usado para todas as mensagens de controle e informação.
7.17.2 Relato de erro versus correção de erro
Tecnicamente, o ICMP é um mecanismo de relato de erro. Ele fornece um meio para
que os roteadores que encontram um erro relatem o erro à origem do datagrama. Embora a
especificação do protocolo esboce os usos intencionados do ICMP e sugira possíveis ações a
serem tomadas em resposta aos relatórios de erro, o ICMP não especifica totalmente a ação
a ser tomada para cada erro possível.
136
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
A maioria dos erros vem da origem, mas outros não. Como o ICMP relata problemas
à origem, ele não pode ser usado para informar aos roteadores intermediários sobre os
problemas. Por exemplo, suponha que um datagrama percorra um caminho por uma
seqüência de roteadores R1, R2, ..., Rk. Se Rk tiver informações de roteamento incorretas e
por engano encaminhar o datagrama ao roteador RE, RE não poderá usar o ICMP para
informar o erro ao roteador Rk. O ICMP só pode enviar um relatório de volta à origem.
Infelizmente, a origem não tem responsabilidade pelo problema ou controle sobre o roteador
com erro de comportamento. Na verdade, a origem pode não ser capaz de determinar qual
roteador causou o problema.
Por que restringir o ICMP à comunicação com a origem? A resposta deverá ser clara
pela nossa discussão sobre formatos e encaminhamento de datagrama. Um datagrama só
contém campos que especificam a origem e o destino final. Ele não contém um registro
completo de sua viagem pela rede (exceto para casos incomuns, em que a opção de registro
de rota é utilizada). Além do mais, como os roteadores podem estabelecer e alterar suas
próprias tabelas de roteamento, não existe um conhecimento global das rotas. Assim, quando
um datagrama alcança determinado roteador, é impossível conhecer o caminho que foi
tomado para chegar lá. Se o roteador detectar um problema, o IP não poderá saber o conjunto
de máquinas intermediárias que processaram o datagrama, de modo que não poderá
informar-lhes quanto ao problema. Em vez de descartar silenciosamente o datagrama, o
roteador utiliza o ICMP para informar à origem de que ocorreu um problema e confia que os
administradores do host cooperarão com os administradores da rede para localizar e reparar
o problema.
7.17.3 Entrega de mensagem ICMP
As mensagens ICMP exigem dois níveis de encapsulamento, como mostra a
Figura 7.32. Cada mensagem ICMP atravessa a internet na parte de dados de um datagrama
IP, que por si só trafega por cada rede física na parte de dados de um frame. Os datagrarnas
transportando mensagens ICMP são encaminhados exatamente como datagramas que
transportam informações para usuários. Não existe confiabilidade ou prioridade adicional.
Assim, as próprias mensagens de erro podem ser perdidas ou descartadas. Além do mais, em
uma rede já congestionada, uma mensagem de erro pode causar congestionamento adicional.
Existe uma exceção nos procedimentos de tratamento de erro se um datagrama IP
transportando uma mensagem ICMP causar um erro. A exceção, estabelecida para evitar o
problema de haver mensagens de erro sobre mensagens de erro, especifica que as mensagens
ICMP não são geradas para erros que resultam de datagramas transportando mensagens de
erro ICMP.
Figura 7.32 – Dois níveis de encapsulamento ICMP.
137
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
É importante ter em mente que, embora as mensagens ICMP sejam encapsuladas e
enviadas usando IP, o ICMP não é considerado um protocolo de nível superior. Ele é uma
parte obrigatória do IP. O motivo para usar o IP para entregar mensagens ICMP é que elas
podem ter de atravessar várias redes físicas para alcançar seu destino final. Assim, elas não
podem ser entregues apenas pelo transporte físico.
7.17.4 Formato de mensagem ICMP
Embora cada mensagem ICMP tenha seu próprio formato, todas elas começam com os
mesmos três campos: um campo de TIPO (TYPE) de mensagem inteiro de 8 bits, que
identifica a mensagem, um campo de CÓDIGO (CODE) de 8 bits, que oferece mais
informações sobre o tipo de mensagem e um campo de CHECKSUM de 16 bits (o ICMP usa
o mesmo algoritmo de checksum aditivo do IP, mas o checksum ICMP só abrange a
mensagem ICMP). Além disso, as mensagens ICMP que informam erros sempre incluem o
cabeçalho e mais octetos adicionais do datagrama que causou o problema1.
O motivo para o ICMP retornar mais do que o cabeçalho do datagrama é apenas de
permitir que o receptor determine mais exatamente quais protocolos e quais programas de
aplicativos foram responsáveis pelo datagrama. Como veremos mais adiante, os protocolos
de nível superior no conjunto TCP/IP são projetados de modo que as informações cruciais
sejam codificadas nos primeiros 64 bits após o cabeçalho IP.
O campo de TIPO do ICMP define o significado da mensagem, além de seu formato.
A Tabela 7.7 lista os tipos possíveis de mensagem ICMP:
1
Para manter as mensagens de erro pequenas e evitar a fragmentação, não é possível incluir o datagrama inteiro que causou
o problema.
138
Apostila de Fundamentos de Redes de Computadores
Campo de Tipo
0
3
4
5
6
8
9
10
11
12
13
14
15
16
17
18
30
31
32
33
34
35
36
37
38
39
40
Prof: Ricardo Quintão
Tipo de mensagem ICMP
Resposta de eco
Destino inalcançável
Extinção de origem
Redirecionamento (mudar de rota)
Endereço de host alternativo
Requisição de eco
Anúncio de roteador
Solicitação de roteador
Tempo excedido para um datagrama
Problema de parâmetro em um datagrama
Requisição de estampa de tempo
Resposta de estampa de tempo
Requisição de informações
Resposta de informações
Requisição de máscara de tempo
Resposta de máscara de tempo
Traceroute
Erro de conversão de datagrama
Redirecionar host móvel
“Onde está você” do IPv6
“Eu estou aqui” do IPv6
Requisição de registro móvel
Resposta de registro móvel
Requisição de nome de domínio
Resposta de nome de domínio
SKIP
Photuris
Tabela 7.7 – Valores do campo TYPE de uma mensagem ICMP.
As próximas seções descrevem cada uma dessas mensagens, dando detalhes do formato
de mensagem e seu significado.
7.17.5 Teste de alcance e status do destino (ping)
Os protocolos TCP/IP oferecem facilidades para ajudar os gerentes ou usuários de rede
a identificar problemas de rede. Uma das ferramentas de depuração mais utilizadas envolve
as mensagens de requisição de eco e resposta de eco ICMP. Um host ou roteador envia uma
mensagem de requisição de eco ICMP a um destino especificado. Qualquer máquina que
receber uma requisição de eco formula uma resposta de eco e a retoma ao emissor original.
A requisição contém uma área de dados opcional. A resposta contém uma cópia dos dados
enviados do solicitante. A requisição de eco e a resposta associada podem ser usadas para
testar se um destino é alcançável e está respondendo. Como a requisição e a resposta
trafegam nos datagramas IP, o recebimento bem sucedido de uma resposta verifica se as
principais partes do sistema de transporte funcionam. Primeiro, o IP no computador de
origem precisa encaminhar o datagrama. Segundo, os roteadores intermediários entre a
origem e o destino precisam estar operando e precisam encaminhar o datagrama
corretamente. Terceiro, a máquina de destino precisa estar funcionando (pelo menos, ela
precisa responder a interrupções), e o software ICMP e IP precisam estar funcionando.
139
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Finalmente, as tabelas de roteamento em todos os roteadores ao longo do caminho de retorno
precisam conter informações que formam um caminho viável.
Em muitos sistemas, o comando que os usuários invocam para enviar requisições de
eco ICMP é chamado de ping1. Algumas versões de ping enviam um número fixo de pacotes
de requisição e esperam respostas. Outras versões enviam uma série de requisições de eco
ICMP, capturam respostas e fornecem estatísticas sobre a perda de datagramas. A maioria
das versões permite que o usuário especifique o tamanho dos dados sendo enviados e o
intervalo entre as requisições. O envio de um pacote ping grande é útil para testar a
fragmentação e a remontagem.
7.17.6 Requisição de eco e formato de mensagem de resposta
A Figura 7.33 mostra o formato das mensagens de requisição de ecos e resposta.
0
8
16
24
31
TIPO (8 ou 0)
CÓDIGO (0)
CHECKSUM
IDENTIFICADOR
NÚMERO DE SEQÜÊNCIA
DADOS OPCIONAIS
...
Figura 7.33 – Formato de uma mensagem de requisição ou resposta de eco do ICMP.
O campo listado como DADOS OPCIONAIS é um campo de tamanho variável que
contém dados a serem retornados ao emissor. Uma resposta de eco sempre retorna
exatamente os mesmos dados que foram recebidos na requisição.
Os campos
IDENTIFICADOR e NÚMERO DE SEQÜÊNCIA são usados pelo emissor para combinar as
respostas com as requisições. O valor do campo TIPO especifica se a mensagem é uma
requisição (8) ou uma resposta (0).
7.17.7 Relatos de destinos inalcançáveis
Quando um roteador não pode encaminhar ou entregar um datagrama IP, ele envia
uma mensagem de destino inalcançável (unreacheble destination) de volta à origem, usando
o formato mostrado na Figura 7.34.
0
8
16
24
31
CÓDIGO (0 – 15)
CHECKSUM
NÃO USADO (PRECISA SER ZERO)
CABEÇALHO INTERNET + PRIMEIROS 64 BITS DO DATAGRAMA
...
TIPO (3)
Figura 7.34 – Formato da mensagem de destino inalcançável do ICMP.
O campo de CÓDIGO em uma mensagem de destino inalcançável contém um inteiro
que descreve ainda mais o problema. Os valores possíveis são mostrados na Tabela 7.8.
Embora o IP seja um mecanismo de entrega pelo melhor esforço, descartar datagramas
não deve ser desconsiderado. Sempre que um erro impede um roteador de encaminhar ou
entregar um datagrama, o roteador envia uma mensagem destino inalcançável de volta à
origem e depois descarta (desconsidera) o datagrama. Os erros de rede inalcançável
implicam no encaminhamento de falhas em pontos intermediários. Erros de host
inalcançável implicam em falhas de entrega 2. Como a mensagem de erro ICMP contém um
1
2
Dave Mills ceta vez sugeriu que PING é um acr6onimo para Packet InterNet Groper.
O IETF recomenda apenas relatar mensagens de host inalcançável à origem e usar protocolos de roteamento para lidar com
outros problemas de encaminhamento.
140
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
prefixo curto do datagrama que causou o problema, a origem saberá exatamente qual
endereço é inalcançável.
Valor do Código
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Significado
Rede inalcançável
Host inalcançável
Protocolo inalcançável
Porta inalcançável
Fragmentação necessária e DF marcado
Rota de origem falhou
Rota de destino desconhecida
Host de destino desconhecido
Host de origem isolado
Comunicação com rede de destino proibida administrativamente
Comunicação com host de destino proibida administrativamente
Rede inalcançável para tipo de serviço
Host inalcançável para tipo de serviço
Comunicação proibida administrativamente
Violação de precedência de host
Corte de precedência em vigor
Tabela 7.8 – Valores possíveis para o campo CÓDIGO.
Os destinos podem ser inalcançáveis porque o hardware está temporariamente fora de
serviço, pois o emissor especificou um endereço de destino inexistente, ou (em raras
circunstâncias) porque o roteador não tem uma rota para a rede de destino. Observe que,
embora os roteadores informem falhas que eles encontram, não podem saber de todas as
falhas de entrega. Por exemplo, se a máquina de destino se conecta a uma rede Ethernet, o
hardware de rede não oferece confirmações. Portanto, um roteador pode continuar a enviar
pacotes a um destino depois que o destino for desligado sem receber qualquer indicação de
que os pacotes não estão sendo entregues.
O significado das mensagens de protocolo e porta inalcançável se tornará claro quando
estudarmos como os protocolos de nível superior usam pontos de destino abstratos chamados
portas. A maioria das mensagens restantes é fácil de entender. Se o datagrama tiver a opção
de rota de origem com uma rota incorreta, ele pode disparar uma mensagem de falha de rota
de origem. Se um roteador precisar fragmentar um datagrama, mas o bit “não fragmentar”
estiver marcado, o roteador enviará uma mensagem fragmentação necessária de volta à
origem.
7.17.8 Controle de congestionamento e fluxo de datagramas
Como o IP é sem conexão, um roteador não pode reservar recursos de memória ou de
comunicação antes do recebimento dos datagramas. Como resultado, os roteadores podem
ser sobrecarregados de tráfego, uma condição conhecida como congestionamento. É
importante entender que o congestionamento pode surgir por dois motivos inteiramente
diferentes. Primeiro, um computador de alta velocidade pode ser capaz de gerar tráfego mais
rapidamente do que uma rede pode transferi-lo. Por exemplo, imagine um supercomputador
gerando tráfego de intemet. Os datagramas podem precisar cruzar uma conexão discada de
baixa velocidade, embora o próprio supercomputador se conecte a uma rede local de alta
velocidade. O congestionamento ocorrerá no roteador que conecta a rede de alta velocidade
à linha discada de baixa velocidade, pois os datagramas chegam mais rapidamente do que
141
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
podem ser enviados. Em segundo lugar, se muitos computadores precisarem enviar
simultaneamente datagramas por um único roteador, o roteador pode experimentar
congestionamento, embora nenhuma origem isolada cause o problema.
Quando os datagramas chegam muito rapidamente para um host ou roteador processar,
ele os enfileira na memória temporariamente. Se os datagramas fizerem parte de uma
pequena rajada, esse uso de buffer soluciona o problema. Se o tráfego continuar, o host ou
roteador, por fim, esgota a memória e precisa descartar datagramas adicionais que chegam.
Uma máquina usa mensagens de extinção de origem ICMP para informar descarte de
datagrama à origem. Uma mensagem de extinção de origem é uma requisição para a origem
reduzir sua taxa atual de transmissão de datagramas. Normalmente, os roteadores
congestionados enviam uma mensagem de extinção de origem para cada datagrama que eles
descartam. Os roteadores também podem usar técnicas de controle de congestionamento
mais sofisticadas. Alguns monitoram o tráfego que chega e extinguem as origens que
possuem as taxas de transmissão de datagrama mais altas. Outros tentam evitar
completamente o congestionamento, enviando requisições quando suas filas começam a se
tornar longas, mas antes que estourem.
Não existe mensagem ICMP para reverter o efeito de uma extinção de origem. Em vez
disso, um host que recebe mensagens de extinção de origem para um destino, D, reduz a taxa
em que envia datagramas para D até que termine de receber mensagens de extinção de
origem. Depois, ele pode gradualmente aumentar a taxa, desde que nenhuma outra requisição
de extinção de origem seja recebida. Na prática, a maioria das implementações ignora a
extinção de origem e conta com protocolos da camada superior como TCP para reagir ao
congestionamento.
7.17.9 Formato de extinção de origem
Além dos campos ICMP normais de TIPO, CÓDIGO, CHECKSUM e um campo não
usado de 32 bits, as mensagens de extinção de origem possuem um campo que contém um
prefixo de datagrama. A Figura 7.35 ilustra o formato. Assim como a maioria das
mensagens ICMP que relatam um erro, o campo de prefixo de datagrama contém um prefixo
do datagrama que disparou a requisição de extinção de origem.
0
8
16
24
31
TIPO (4)
CÓDIGO (0)
CHECKSUM
NÃO USADO (PRECISA SER ZERO)
CABEÇALHO INTERNET + PRIMEIROS 64 BITS DO DATAGRAMA
...
Figura 7.35 – Formato da mensagem de extinção de origem ICMP.
7.17.10 Requisições de mudança de rota dos roteadores
As tabelas de roteamento de intemet normalmente permanecem estáticas por longos
períodos de tempo. Os hosts as inicializam por um arquivo de configuração na partida do
sistema, e os administradores do sistema raramente mudam de rotas durante as operações
normais. Conforme veremos em outros casos, os roteadores são mais dinâmicos. Eles trocam
informações de roteamento periodicamente para acomodar mudanças de rede e manter suas
rotas atualizadas. Assim, via de regra, os roteadores conhecem rotas corretas. Os hosts
começam com informações de roteamento mínimas e descobrem novas rotas a partir dos
roteadores.
Para ajudar a seguir essa regra e evitar duplicação de informações no arquivo de
configuração em cada host, a configuração inicial da rota do host especifica a informação
142
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
mínima possível da rota necessária para se comunicar (por exemplo, o endereço de um único
roteador). Assim, o host começa com informações mínimas e conta com roteadores para
atualizar sua tabela de roteamento. Em um caso especial, quando um roteador detecta um
host usando uma rota não ideal, ele envia ao host uma mensagem ICMP, chamada
redirecionamento (Redirect), solicitando que o host mude sua rota. O roteador também
encaminha o datagrama original para o seu destino.
A vantagem do esquema de redirecionamento ICMP é a simplicidade: ele permite que
um host dê partida sabendo o endereço de apenas um roteador na rede local. O roteador
inicial retorna as mensagens de redirecionamento ICMP sempre que um host envia um
datagrama para o qual existe uma rota melhor. A tabela de roteamento do host permanece
pequena, mas ainda contém rotas ideais para todos os destinos em uso.
Por serem limitadas a interações entre um roteador e um host em uma rede conectada
diretamente, as mensagens de redirecionamento não solucionam o problema de propagar
informações de roteamento de uma maneira geral. A Figura 7.36 ilustra a limitação. Na
figura, considere que a origem S envia um datagrama ao destino D. Suponha que o roteador
R1 encaminhe incorretamente o datagrama pelo roteador R2 no lugar do roteador R4 (ou seja,
R1 incorretamente escolhe um caminho maior que o necessário). Quando o roteador R5
recebe um datagrama, ele não pode enviar uma mensagem de redirecionamento ICMP para
R1, pois não conhece o endereço de R1.
Figura 7.36 – Mensagens de redirecionamento ICMP.
Além dos campos obrigatórios TIPO, CÓDIGO e CHECKSUM, cada mensagem de
redirecionamento contém um campo de ENDEREÇO INTERNET DE ROTEADOR e um
campo CABEÇALHO DE INTERNET, como mostra a Figura 7.37.
0
8
16
24
31
TIPO (5)
CÓDIGO (0 a 3)
CHECKSUM
ENDEREÇO INTERNET DO ROTEADOR
CABEÇALHO INTERNET + PRIMEIROS 64 BITS DO DATAGRAMA
...
Figura 7.37 – Formato da mensagem de redirecionamento ICMP.
O campo ENDEREÇO INTERNET DO ROTEADOR contém o endereço de um
roteador que o host deve usar para alcançar o destino mencionado no cabeçalho do
datagrama. O campo de CABEÇALHO INTERNET contém o cabeçalho IP mais os próximos
64 bits do datagrama que dispararam a mensagem. Assim, um host recebendo um
redirecionamento ICMP examina o prefixo do datagrama para determinar o endereço de
destino do datagrama. O campo CÓDIGO de uma mensagem de redirecionamento ICMP
especifica ainda como interpretar o endereço de destino com base nos valores atribuídos,
como mostra a Tabela 7.9.
143
Apostila de Fundamentos de Redes de Computadores
Valor do Código
0
1
2
3
Prof: Ricardo Quintão
Significado
Redirecionar datagramas para a Rede (agora obsoleto)
Redirecionar datagramas para o Host
Redirecionar datagramas para o Tipo de Serviço; e Rede
Redirecionar datagramas para o Tipo de Serviço; e Host
Tabela 7.9 – Valor do campo CÓDIGO para uma mensagem de redirecionamento.
Via de regra, os roteadores só enviam requisições de redirecionamento ICMP para os
hosts e não para outros roteadores.
7.17.11 Detectando rotas circulares ou excessivamente longas
Como os roteadores da internet calculam um próximo salto usando tabelas locais, os
erros nas tabelas de roteamento podem produzir um ciclo de roteamento para algum
destino, D. Um ciclo de roteamento pode consistir em dois roteadores, e cada um encaminha
um datagrama para o destino D ao outro, ou pode consistir em vários roteadores. Quando
vários roteadores formam um ciclo, cada um deles encaminha um datagrama para o destino
D ao próximo roteador no ciclo. Se um datagrama entrar em um ciclo de roteamento, ele
passará o ciclo adiante sem fim. Como já mencionamos, para evitar que os datagramas
circulem para sempre em uma Rede TCP/IP, cada datagrama IP contém um contador de
tempo de vida, às vezes chamado de contador de salto. Sempre que processa um datagrama,
um roteador decrementa o contador de tempo de vida e descarta o datagrama quando o
contador chega a zero.
Sempre que ele descarta um datagrama porque seu próximo salto atingiu zero ou
porque ocorreu um timeout enquanto esperava por fragmentos de um datagrama, um roteador
envia uma mensagem de tempo excedido do ICMP de volta à origem do datagrama, usando
o formato mostrado na Figura 7.38.
0
8
16
24
31
CÓDIGO (0 – 1)
CHECKSUM
NÃO USADO (PRECISA SER ZERO)
CABEÇALHO INTERNET + PRIMEIROS 64 BITS DO DATAGRAMA
...
TIPO (11)
Figura 7.38 – Formato da mensagem de tempo excedido do ICMP.
O ICMP usa o campo CÓDIGO em cada mensagem de tempo excedido (valor zero ou
um) para explicar a natureza do timeout sendo relatado, com mostra a Tabela 7.10.
Valor do Código
0
1
Significado
Contador de tempo de vida excedido
Tempo de remontagem de fragmento excedido
Tabela 7.10 – Valor do campo CÓDIGO para um tempo excedido.
A remontagem de fragmento refere-se à tarefa de coletar todos os fragmentos de um
datagrama. Quando o primeiro fragmento de um datagrama chega, o host receptor inicia
um timer e considera um erro se o timer expirar antes que todas as partes do datagrama
cheguem. O valor de código 1 é usado para informar tais erros ao emissor; uma mensagem
é enviada para cada erro.
7.17.12 Relatando outros problemas
Quando um roteador ou host encontrar problemas com um datagrama não coberto
pelas mensagens de erro ICMP anteriores (por exemplo, um cabeçalho de datagrama
144
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
incorreto), ele envia uma mensagem “problema de parâmetro” para a origem. Uma possível
causa desses problemas ocorre quando os argumentos de uma opção estão incorretos. A
mensagem, formatada como na Figura 7.39, só é enviada quando o problema é tão severo
que o datagrama precisa ser descartado.
0
8
16
24
31
TIPO (12)
CÓDIGO (0 – 1)
CHECKSUM
PONTEIRO
NÃO USADO (PRECISA SER ZERO)
CABEÇALHO INTERNET + PRIMEIROS 64 BITS DO DATAGRAMA
...
Figura 7.39 – Formato da mensagem de problema de parâmetro do ICMP.
Para que a mensagem não fique ambígua, o emissor usa o campo PONTEIRO do
cabeçalho da mensagem a fim de identificar o octeto no datagrama que causou o problema.
O código 1 é usado para informar que uma opção obrigatória está faltando (por exemplo,
uma opção de segurança na comunidade militar). O campo PONTEIRO não é usado para o
código 1.
7.17.13 Sincronismo de clock e estimativa de tempo de trânsito
Embora as máquinas em uma internet possam se comunicar, elas normalmente operam
de forma independente, com cada máquina mantendo sua própria noção da hora atual. Os
clocks que diferem muito podem confundir os usuários ou software de sistemas distribuídos.
O conjunto de protocolos TCP/IP inclui vários protocolos que podem ser usados para
sincronizar clocks. Uma das técnicas mais simples utiliza uma mensagem ICMP para obter
a hora de outra máquina. Uma máquina solicitante envia uma mensagem de “requisição de
estampa de tempo” do ICMP para outra máquina, pedindo que a segunda máquina retorne
seu valor atual para a hora do dia. A máquina receptora retorna uma resposta de estampa de
tempo à máquina que faz a requisição. A Figura 7.40 mostra o formato da requisição de
estampa de tempo e mensagens de resposta.
0
8
16
24
31
TIPO (13 ou 14)
CÓDIGO (0)
CHECKSUM
IDENTIFICADOR
NÚMERO DE SEQÜÊNCIA
ESTAMPA DE TEMPO DE ORIGEM
ESTAMPA DE TEMPO DE RECEBIMENTO
ESTAMPA DE TEMPO DE TRANSMISSÃO
Figura 7.40 – Formato da mensagem de requisição ou resp. de estampa de tempo do ICMP.
O campo TIPO identifica a mensagem como uma requisição (13) ou uma resposta (14);
os campos IDENTIFICADOR e NÚMERO DE SEQÜÊNCIA são usados pela origem para
associar respostas a requisições. Os campos restantes especificam horas, dadas em
milissegundos desde a meia-noite no Universal Time1. O campo ESTAMPA DE TEMPO DE
ORIGEM é preenchido pelo emissor original imediatamente antes de o pacote ser
transmitido. O campo ESTAMPA DE TEMPO DE RECEBIMENTO é preenchido
imediatamente no recebimento de uma requisição; e o campo ESTAMPA DE TEMPO DE
TRANSMISSÃO é preenchido imediatamente antes que a resposta seja transmitida.
Os hosts utilizam os três campos de estampa de tempo para calcular estimativas do
tempo de retardo entre eles e sincronizar seus clocks. Como a resposta inclui o campo
ESTAMPA DE TEMPO DE ORIGEM, um host pode calcular o tempo total exigido para uma
1
Universal Time anteriormente era chamado Greenwich Mean Time: é a hora do dia no meridiano principal.
145
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
requisição atravessar até um destino, ser transformada em uma resposta e retornar. Como a
resposta transporta tanto a hora em que a requisição entrou na máquina remota quanto a hora
em que a resposta saiu, o host pode calcular o tempo de trânsito na rede e, a partir disso,
estimar as diferenças nos clocks remoto e local.
Na prática, a estimativa exata do retardo de ida e volta pode ser difícil e pode restringir
substancialmente a utilidade das mensagens de estampa de tempo do ICMP. Naturalmente,
para obter uma estimativa precisa do retardo de ida e volta, deve-se fazer muitas medições e
calcular sua média. Porém, o retardo de ida e volta entre um par de máquinas que se conectam
a uma internet grande pode variar muito, mesmo por períodos de tempo curtos. Além do
mais, lembre-se de que, como o IP é uma tecnologia do melhor esforço, os datagramas
podem ser descartados, adiados ou entregues fora da ordem. Assim, simplesmente apanhar
muitas medições pode não garantir a consistência; uma análise estatística sofisticada é
necessária para produzir estimativas precisas.
7.17.14 Mensagens ICMP mais antigas e não mais necessárias
Originalmente, o ICMP definia um conjunto de mensagens que um host usava na
partida para determinar seu endereço IP, o endereço de um roteador e a máscara de endereço
usada na rede. Atualmente, um protocolo conhecido como DHCP oferece toda a informação
necessária em uma única troca, e as mensagens ICMP mais antigas não são mais usadas.
Mensagens de requisição e resposta de informações. As mensagens de requisição e
resposta de informações do ICMP (tipos 75 e 16) tinham por finalidade permitir que os hosts
descobrissem seu endereço Internet na partida do sistema. O IETF as declarou obsoletas, de
modo que não devem ser usadas.
Mensagens de requisição e resposta de máscara de endereço. As mensagens de
requisição e resposta de máscara de endereço do ICMP (tipos 17 e 18) tinham por finalidade
permitir que um host obtivesse a máscara de endereço usada na rede local. Uma requisição
era enviada por broadcast, e os roteadores na rede enviavam uma resposta.
Mensagens de requisição e anúncio de roteador. As mensagens de requisição e anúncio
de roteador do ICMP tinham por finalidade permitir que um host descobrisse os roteadores
atualmente disponíveis em uma rede local. Diferente do DHCP, que usa um arquivo de
configuração para fornecer o endereço de um roteador, o mecanismo de descoberta de
roteador ICMP oferece comunicação direta. Um host recebe anúncios diretamente dos
roteadores.
Embora não sendo mais usada, a descoberta de roteador ICMP oferece duas diferenças
conceituais do DHCP. Primeiro, como a informação é obtida diretamente do próprio
roteador, a informação nunca fica velha. Segundo, a descoberta de roteador ICMP utiliza
uma técnica de estado flexível com timers para impedir que os hosts retenham uma entrada
de tabela de roteamento após a falha de um roteador. Os roteadores anunciam suas
informações periodicamente, e um host descarta uma rota se o timer para a rota expirar.
7.18 UDP
Anteriormente foi descrita uma rede abstrata capaz de transferir datagramas IP entre
computadores host, em que cada datagrama é encaminhado pela internet com base no endereço
IP do destino. No nível de internet, um endereço de destino identifica um host; nenhuma outra
distinção é feita com relação a qual usuário ou qual programa aplicativo receberá o datagrama.
Esta seção e a seção 7.19 estendem o conjunto de protocolos TCP/IP, acrescentando um
mecanismo que distingue entre destinos dentro de determinado host, permitindo que vários
146
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
programas aplicativos executando em um determinado computador enviem e recebam
datagramas independentemente.
7.18.1 Identificando o destino final
Os sistemas operacionais na maioria dos computadores admitem multiprogramação, o
que significa que eles permitem que vários programas aplicativos sejam executados
simultaneamente. Usando o jargão do sistema operacional, nos referimos a cada programa
executando como um processo, tarefa, programa aplicativo ou processo em nível de usuário.
Os sistemas são denominados sistemas de multitarefa. Pode parecer natural dizer que um
processo é o destino final para uma mensagem, porém, é um tanto enganoso especificar que
um processo em particular em determinada máquina é o destino final para um datagrama.
Primeiro, como os processos são criados e destruídos dinamicamente, os emissores raramente
conhecem o suficiente para identificar um processo em outra máquina. Segundo,
gostaríamos de ser capazes de substituir processos que recebem datagramas sem informar a
todos os emissores (por exemplo, reinicializar uma máquina pode mudar todos os processos,
mas os emissores não devem ter de saber a respeito dos novos processos). Terceiro, é
desejável identificar um destino pela função que ele oferece sem conhecer o processo que
implementa a função (por exemplo, permitir que um emissor entre em contato com um
servidor de e-mail sem saber qual processo na máquina de destino implementa função do
servidor). Mais importante, nos sistemas que permitem que um único processo trate de duas
ou mais funções, é essencial que arrumemos um meio para um processo decidir exatamente
qual função o emissor deseja.
Em vez de pensar em um processo como o destino final, imaginaremos que cada
máquina contém um conjunto de pontos de destino abstratos, chamados portas de protocolo.
Cada porta de protocolo é identificada por um inteiro positivo. O sistema operacional local
oferece um mecanismo de interface que processa o uso para especificar uma porta ou acessála.
A maioria dos sistemas operacionais fornece acesso síncrono às portas. Do ponto de
vista de um processo em particular, o acesso síncrono significa que a computação termina
durante uma operação de acesso à porta. Por exemplo, se um processo tenta extrair dados de
uma porta antes que quaisquer dados cheguem, o sistema operacional temporariamente para
(bloqueia) o processo até que os dados cheguem. Quando os dados chegam, o sistema
operacional os passa para o processo e os reinicia. Em geral, as portas são bufferizadas, de
modo que os dados que chegam antes que um processo esteja pronto para aceitá-los não serão
perdidos. Para usar os buffers, o protocolo localizado dentro do sistema operacional coloca
pacotes que chegam para determinada porta do protocolo em uma fila (finita) até que um
processo os extraia.
Para se comunicar com uma porta externa, um emissor precisa conhecer tanto o
endereço IP da máquina de destino quanto o número de porta de protocolo do destino dentro
dessa máquina. Cada mensagem precisa transportar o número da porta de destino da máquina
à qual a mensagem é enviada e o número da porta de origem da máquina de origem à qual as
respostas devem ser endereçadas. Assim, é possível que qualquer processo que receba uma
mensagem responda ao emissor.
7.18.2 O User Datagram Protocol
No conjunto de protocolos TCP/IP, o User Datagram Protocol, ou UDP, provê o
mecanismo principal que os programas aplicativos utilizam para enviar datagramas a outros
programas aplicativos. O UDP fornece portas de protocolo utilizadas para fazer a distinção
entre vários programas executando em uma única máquina. Ou seja, além dos dados
147
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
enviados, cada mensagem UDP contém um número de porta de destino e um número de porta
de origem, permitindo que o UDP no destino entregue a mensagem ao destinatário correto e
que o destinatário envie uma resposta.
O UDP utiliza a camada de internet subjacente para transportar uma mensagem de uma
máquina a outra e fornece a mesma semântica de entrega de datagrama não-confiável, sem
conexão, que o IP. Ele não usa confirmações para certificar-se de que as mensagens chegam;
ele não ordena as mensagens que chegam, nem provê retorno para controlar a taxa em que as
informações fluem entre as máquinas. Assim, as mensagens UDP podem ser perdidas,
duplicadas ou chegar fora de ordem. Além do mais, os pacotes podem chegar mais rápido
do que o destinatário poderá processá-los.
Um programa aplicativo que usa UDP aceita a responsabilidade total por lidar com o
problema de confiabilidade. Infelizmente, os programadores de aplicação em geral ignoram
esses problemas quando projetam o software. Além do mais, como os programadores
normalmente testam o software de rede usando redes locais altamente confiáveis, com pouco
atraso, o teste pode não expor falhas em potencial. Assim, muitos programas aplicativos que
contam com UDP funcionam bem em um ambiente local, mas falham de várias maneiras
quando usados na Internet global.
7.18.3 Formato de mensagens UDP
Cada mensagem UDP é denominada datagrama do usuário. Conceitualmente, um
datagrama do usuário consiste em duas partes: um cabeçalho UDP e uma área de dados UDP.
Como mostra a Figura 7.41, o cabeçalho é dividido em quatro campos de 16 bits que
especificam a porta da qual a mensagem foi enviada, a porta para a qual a mensagem é
destinada, o tamanho da mensagem e um checksum UDP.
Os campos de PORTA DE ORIGEM e PORTA DE DESTINO contêm os números de
porta do protocolo UDP de 16 bits usados para demultiplexar datagramas entre os processos
esperando para recebê-los. A PORTA DE ORIGEM é opcional. Quando usada, ela especifica
a porta para a qual as respostas devem ser enviadas; se não for usada, ela deve ser igual a
zero.
O campo de TAMANHO contém um contador de octetos do datagrama UDP, incluindo
o cabeçalho UDP e os dados do usuário. Assim, o valor mínimo para TAMANHO é oito, o
tamanho do cabeçalho isolado.
O checksum UDP é opcional e nem precisa ser usado; um valor zero no campo
CHECKSUM significa que o checksum não foi calculado. Os projetistas decidiram tornar o
checksum opcional para permitir que as implementações operem com pouca sobrecarga de
cálculo ao usar o UDP por uma rede local altamente confiável. Porém, lembre-se de que o
IP não calcula um checksum na parte de dados de um datagrama IP. Assim, o checksum
UDP é a única maneira de garantir que os dados chegaram intactos e devem ser usados.
0
16
PORTA DE ORIGEM UDP
TAMANHO DA MENSAGEM UDP
31
PORTA DE DESTINO UDP
CHECKSUM UDP
DADOS
...
Figura 7.41 – O formato dos campos em um datagrama UDP.
Os iniciantes normalmente questionam o que acontece com as mensagens UDP para as
quais o checksum calculado é zero. Um valor calculado igual a zero é possível porque o UDP
usa o mesmo algoritmo de checksum do IP. Ele divide os dados em quantidades de 16 bits e
148
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
calcula o complemento a um de sua soma. De modo surpreendente, zero não é um problema
porque a aritmética de complemento a um possui duas representações para zero: todos os bits
definidos como zero ou todos os bits definidos como um. Quando o checksum calculado é
zero, o UDP usa a representação com todos os bits definidos como um.
7.18.4 Pseudocabeçalho UDP
O checksum UDP abrange mais informações que existem apenas no datagrama UDP.
Para calcular o checksum, o UDP insere um pseudocabeçalho no início do datagrama UDP,
anexa um octeto de zeros para preencher o datagrama até um múltiplo exato de 16 bits e
calcula o checksum pelo objeto inteiro. O octeto usado para preenchimento e o
pseudocabeçalho não são transmitidos com o datagrama UDP e nem são incluídos no
tamanho. Para calcular o checksum, o software primeiro armazena zero no campo
CHECKSUM, depois acumula uma soma do complemento a um de 16 bits do objeto inteiro,
incluindo o pseudocabeçalho, o cabeçalho UDP e os dados do usuário.
A finalidade de usar um pseudocabeçalho é verificar se o datagrama UDP alcançou
seu destino correto. A chave para entender o pseudocabeçalho está na observação de que o
destino correto consiste em uma máquina específica e uma porta de protocolo específica
dentro dessa máquina. O próprio cabeçalho UDP especifica apenas o número de porta do
protocolo. Assim, para verificar o destino, o UDP na máquina emissora calcula um checksum
que abrange o endereço IP de destino e também o datagrama UDP. No destino final, o UDP
verifica o checksum usando o endereço IP de destino obtido pelo cabeçalho do datagrama IP
que transportou a mensagem UDP. Se os checksums combinarem, então deve ser verdade
que o datagrama alcançou o host de destino desejado e também a porta de protocolo correta
dentro desse host.
O pseudocabeçalho usado no cálculo do checksum UDP consiste em 12 octetos de
dados arrumados como mostra a Figura 7.42. Os campos do pseudocabeçalho intitulados
ENDEREÇO IP DE ORIGEM e ENDEREÇO IP DE DESTINO contêm os endereços IP de
origem e destino que serão usados no envio da mensagem UDP. O campo PROTOCOLO
contém o código do tipo de protocolo IP (17 para UDP), e o campo rotulado com TAMANHO
UDP contém o tamanho do datagrama UDP (sem incluir o pseudocabeçalho). Para verificar
o checksum, o receptor precisa extrair esses campos do cabeçalho IP, montá-los no formato
do pseudocabeçalho e recalcular o checksum.
0
8
ZERO
16
31
ENDEREÇO IP DE ORIGEM
ENDEREÇO IP DE DESTINO
PROTOCOLO
TAMANHO UDP
Figura 7.42 – Os 12 octetos do pseudocabeçalho para o cálculo do checksum.
7.18.5 Encapsulamento e camadas de protocolos UDP
O UDP é nosso primeiro exemplo de um protocolo de transporte. No modelo em
camadas do TCP/IP, o UDP se encontra na camada acima da camada de inter-rede
(transporte). Conceitualmente, os programas aplicativos acessam o UDP, que usa o IP para
enviar e receber datagramas, como mostra a Figura 7.43.
149
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Camadas conceituais
Aplicação
Datagrama do usuário (UDP)
Inter-rede (IP)
Interface de rede
Figura 7.43 – As camadas conceituais do UDP entre programas aplicativos e o IP.
A disposição em camadas do UDP acima do IP significa que uma mensagem UDP
completa, incluindo o cabeçalho e dados UDP, é encapsulada em um datagrama IP enquanto
trafega por uma inter-rede, como mostra a Figura 7.44.
Figura 7.44 – Um datagrama UDP encapsulado em um datagrama IP.
Para os protocolos que examinamos, o encapsulamento significa que o UDP insere um
cabeçalho aos dados que um usuário envia e o passa ao IP. A camada IP insere um cabeçalho
ao que recebe do UDP. Finalmente, a camada de interface de rede embute o datagrama em
um frame antes de enviá-lo de uma máquina para outra. O formato do frame depende da
tecnologia da rede subjacente. Normalmente, os frames de rede incluem um cabeçalho
adicional.
Na entrada, um pacote chega na camada mais baixa do software de rede e inicia sua
ascensão por camadas cada vez mais altas. Cada camada remove um cabeçalho antes de
passar a mensagem adiante, de modo que, quando o nível mais alto passa os dados para o
processo receptor, todos os cabeçalhos foram removidos. Assim, o cabeçalho mais externo
corresponde à camada de protocolo mais baixa, enquanto o cabeçalho mais interno
corresponde à camada de protocolo mais alta. Ao considerar como os cabeçalhos são
inseridos e removidos, é importante ter em mente o princípio das camadas. Em particular,
observe que o princípio de camadas se aplica ao UDP, de modo que o datagrama UDP
recebido do IP na máquina de destino é idêntico ao datagrama que o UDP passou ao IP na
máquina de origem. Além disso, os dados que o UDP entrega a um processo do usuário na
máquina receptora serão exatamente os dados que um processo do usuário passou ao UDP
na máquina emissora.
A divisão de tarefas entre as diversas camadas de protocolo é rígida e clara. A camada
IP é responsável apenas por transferir dados entre um par de hosts em uma inter-rede,
enquanto a camada UDP é responsável apenas por diferenciar entre diversas origens ou
destinos dentro de um host.
150
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Assim, somente o cabeçalho IP identifica os hosts de origem e destino; somente a
camada UDP identifica as portas de origem ou destino dentro de um host.
7.18.6 Camadas e o cálculo de checksum do UDP
Os leitores atentos terão notado uma aparente contradição entre as regras de camadas
e o cálculo do checksum UDP. Lembre-se de que o checksum UDP inclui um
pseudocabeçalho que possui campos para os endereços IP de origem e destino. Pode-se
argumentar que o endereço IP de destino precisa ser conhecido pelo usuário no envio de um
datagrama UDP, e o usuário precisa passá-lo para a camada UDP. Assim, a camada UDP
pode obter o endereço IP de destino sem interagir com o cabeçalho IP. Porém, o endereço
IP de origem depende da rota que o IP escolhe para o datagrama, pois o endereço IP de
origem identifica a interface de rede sobre a qual o datagrama é transmitido. Assim, a menos
que interaja com a camada IP, o UDP não pode saber o endereço de origem IP.
Consideremos que o UDP peça à camada IP para calcular os endereços IP de origem e
(possivelmente) destino, usa-os para construir um pseudocabeçalho, calcula o checksum,
descarta o pseudocabeçalho e depois passa o datagrama UDP ao IP para transmissão. Uma
técnica alternativa que produz maior eficiência faz com que a camada UDP encapsule o
datagrama UDP em um datagrama IP, obtenha o endereço de origem do IP, armazene os
endereços de origem e destino nos campos apropriados do cabeçalho do datagrama, calcule
o checksum UDP e depois passe o datagrama IP à camada IP, que só precisa preencher os
campos restantes do cabeçalho IP.
A forte interação entre UDP e IP viola nossa premissa básica de que as camadas
refletem a separação da funcionalidade? Sim. O UDP tem sido bastante integrado ao
protocolo IP. Ele é claramente um compromisso de separação pura, feita por motivos
totalmente práticos. Desejamos passar por cima da violação de camadas porque é impossível
identificar totalmente um programa aplicativo de destino sem especificar a máquina de
destino, e queremos tornar eficiente o mapeamento entre os endereços usados pelo UDP e
aqueles usados pelo IP.
7.18.7 Multiplexação, demultiplexação e portas UDP
Vimos anteriormente que o software das camadas de uma hierarquia de protocolos
precisa multiplexar ou demultiplexar entre vários objetos na próxima camada. O software
UDP oferece outro exemplo de multiplexação e demultiplexação. Ele aceita datagramas
UDP de muitos programas aplicativos e os passa para o IP para transmissão, e aceita a
chegada de datagramas UDP do IP e passa cada um ao programa aplicativo apropriado.
Conceitualmente, toda a multiplexação e demultiplexação entre o UDP e os programas
aplicativos ocorre por meio do mecanismo de porta. Na prática, cada programa aplicativo
precisa negociar com o sistema operacional para obter uma porta de protocolo e um número
de porta associado antes de poder enviar um datagrama UDP. Quando a porta tiver sido
atribuída, qualquer datagrama que o programa aplicativo enviar por ela terá esse número de
porta em seu campo PORTA DE ORIGEM UDP.
Ao processar a entrada, o UDP aceita datagramas que chegam do IP e demultiplexa
com base na porta de destino UDP, como mostra a Figura 7.45.
O modo mais fácil de pensar em uma porta UDP é como uma fila. Na maioria das
implementações, quando um programa aplicativo negocia com o sistema operacional para
usar determinada porta, o sistema operacional cria uma fila interna que pode manter as
mensagens que chegam. Normalmente, a aplicação pode especificar ou alterar o tamanho da
fila. Quando o UDP recebe um datagrama, ele verifica se o número da porta de destino
151
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
combina com uma das portas atualmente em uso. Se não, ele envia uma mensagem de erro
ICMP de porta inalcançável (port unreacheable) e descarta o datagrama. Se for achada uma
combinação, o UDP enfileira o novo datagrama na porta em que o programa aplicativo pode
acessá-lo. Naturalmente, haverá um erro se a porta estiver cheia, e o UDP descarta o
datagrama que chega.
Figura 7.45 – Exemplo de demultiplexação de uma camada acima do IP.
7.18.8 Números de porta UDP reservados e disponíveis
Como os números de porta de protocolo devem ser atribuídos? O problema é
importante porque dois computadores precisam combinar a respeito dos números de porta
antes que possam interoperar. Por exemplo, quando o computador A precisa obter um
arquivo do computador B, ele precisa saber qual porta o programa de transferência de
arquivos no computador B utiliza. Existem duas técnicas fundamentais para a atribuição de
porta. A primeira técnica usa uma autoridade central. Todos concordam em permitir que
uma autoridade central atribua números de porta conforme a necessidade e publique a lista
de todas as atribuições. Depois, todo o software é criado de acordo com a lista. Essa técnica
às vezes é chamada de atribuição universal, e as atribuições de porta especificadas pela
autoridade são chamadas atribuições de porta bem conhecidas (well-known port
assignments).
A segunda técnica para atribuição de porta utiliza o vínculo dinâmico. Na técnica de
vínculo dinâmico, as portas não são conhecidas globalmente. Em vez disso, sempre que um
programa precisa de uma porta, o software de rede atribui uma. Para descobrir a atribuição
de porta em outro computador, é preciso enviar uma requisição que pergunte a atribuição de
porta atual (por exemplo, “que porta o serviço de transferência de arquivos está usando?”).
A máquina de destino responde dando o número de porta correto a usar.
Os projetistas do TCP/IP adotaram uma técnica híbrida que atribui alguns números de
porta a priori, mas deixa muitos disponíveis para os sites locais ou os programas aplicativos
atribuírem dinamicamente. Os números de porta atribuídos começam com valores baixos e
se estendem para cima, deixando valores inteiros grandes disponíveis para atribuição
dinâmica. A Tabela 7.11 lista alguns dos números de porta UDP atualmente atribuídos. A
segunda coluna contém palavras-chave padrão da Internet, enquanto a terceira contém
palavras-chave usadas na maioria dos sistemas UNIX.
152
Apostila de Fundamentos de Redes de Computadores
Decimal
Palavra-Chave
0
7
9
11
13
15
17
19
37
42
43
53
67
68
69
88
111
123
161
162
512
513
514
525
–
ECHO
DISCARD
USERS
DAYTIME
–
QUOTE
CHARGEN
TIME
NAMESERVER
NICNAME
DOMAIN
BOOTPS
BOOTPC
TFTP
KERBEROS
SUNRPC
NTC
–
–
–
–
–
–
Palavra-Chave do
Unix
–
echo
discard
systat
daytime
netstat
qotd
chargen
time
name
whois
nameserver
bootps
bootpc
tftp
kerberos
sunrpc
ntp
snmp
snmp-trap
biff
who
syslog
timed
Prof: Ricardo Quintão
Descrição
Reservado
Eco
Descarte
Usuários ativos
Hora do dia
Programa de status da rede
Citação do dia
Gerador de caracteres
Hora
Servidor de nome de host
Quem é
Domain Name Server
Servidor BOOTP ou DHCP
Cliente BOOTP ou DHCP
Trivial File Transfer
Serviço de segurança Kerberos
Sun Remote Procedure Call
Network Time Protocol
Simple Network Management Protocol
Traps SNMP
Comsat do UNIX
Daemon rwho do UNIX
Log do sistema
Daemon de hora
Tabela 7.11 – Exemplos de portas UDP atualmente atribuídas.
7.19 TCP
Anteriormente foi explorado o serviço de entrega de pacote sem conexão não-confiável que
forma a base para toda a comunicação da Internet e o protocolo IP que a define. Esta seção
apresenta o segundo serviço em nível de transporte mais importante, com entrega de fluxo
confiável. É o Transmission Control Protocol (TCP) que o define. Veremos que o TCP
acrescenta funcionalidade substancial aos protocolos já discutidos, mas que sua implementação
também é substancialmente mais complexa.
Embora o TCP seja apresentado aqui como parte do conjunto de protocolos TCP/IP da
Internet, ele é um protocolo independente, de uso geral, que pode ser adaptado para uso com
outros sistemas de entrega. Por exemplo, como o TCP faz muito poucas suposições a respeito da
rede subjacente, é possível usá-lo por uma única rede, como uma Ethernet, e também pela Internet
global.
7.19.1 A necessidade de entrega de fluxo
No nível mais baixo, as redes de comunicação por computador provêem entrega de
pacote não-confiável. Os pacotes podem ser perdidos ou destruídos quando os erros de
transmissão interferem com os dados, quando o hardware de rede falha ou quando as redes
se tornam muito carregadas para acomodar a carga apresentada. Os sistemas de comutação
de pacotes mudam de rotas dinamicamente, entregam pacotes fora de ordem, entregam-nos
após um atraso substancial ou entregam duplicatas. Além do mais, as tecnologias de rede
153
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
básicas podem ditar um tamanho de pacote ideal ou impor outras restrições necessárias para
alcançar taxas de transferência eficientes.
No nível mais alto, os programas aplicativos normalmente precisam enviar grandes
volumes de dados de um computador para outro. O uso de um sistema de remessa nãoconfiável sem conexão para grandes transferências de volume se torna tedioso e incômodo,
e isso exige que os programadores montem detecção e recuperação de erro em cada programa
aplicativo. Por ser difícil projetar, entender ou modificar o software que oferece a
confiabilidade corretamente, poucos programadores de aplicação têm a base técnica
necessária, como conseqüência, um dos objetivos da pesquisa do protocolo de rede tem sido
encontrar soluções de uso geral para os problemas de fornecer entrega de fluxo confiável,
permitindo que os especialistas montem uma única instância do software de protocolo de
fluxo que todos os programas aplicativos utilizam. Ter um único protocolo de uso geral ajuda
a isolar programas aplicativos dos detalhes das redes, e possibilita a definição de uma
interface uniforme para o serviço de transferência de fluxo.
7.19.2 Propriedades do serviço de entrega confiável
A interface entre programas aplicativos e o serviço de entrega confiável do TCP/IP
pode ser caracterizada por cinco elementos:
 Orientação de fluxo. Quando dois programas aplicativos transferem grandes volumes
de dados, os dados são vistos como um fluxo de bits, divididos em octetos ou bytes.
O serviço de entrega de fluxo na máquina de destino passa para o receptor exatamente
a mesma seqüência de octetos que o emissor passa para ele na máquina de origem.
 Conexão de circuito virtual. Criar uma transferência de fluxo é semelhante a fazer
uma ligação telefônica. Antes que a transferência possa iniciar, os programas
aplicativos, emissor e receptor, interagem com seus respectivos sistemas operacionais,
informando-lhes que desejam uma transferência de fluxo. Conceitualmente, uma
aplicação faz uma “chamada” que precisa ser aceita pela outra. Os módulos de
protocolo nos dois sistemas operacionais se comunicam enviando mensagens pela
inter-rede básica, verificando se a transferência está autorizada e se os dois lados estão
prontos. Quando todos os detalhes tiverem sido definidos, os módulos de protocolo
informam aos programas aplicativos que uma conexão foi estabelecida e que a
transferência pode ser iniciada. Durante a transferência, o protocolo nas duas
máquinas continua a se comunicar para verificar se os dados são recebidos
corretamente. Se a comunicação falhar por qualquer motivo (por exemplo, porque o
hardware de rede ao longo do caminho entre as máquinas falhar), as duas máquinas
detectam a falha e a informam aos programas aplicativos apropriados. Usamos o
termo circuito virtual para descrever essas conexões, pois embora os programas
aplicativos vejam a conexão como um circuito de hardware dedicado, a
confiabilidade é uma ilusão fornecida pelo serviço de entrega de fluxo.
 Transferência em buffer. Os programas aplicativos enviam um fluxo de dados pelo
circuito virtual repetidamente, passando octetos de dados ao protocolo. Ao transferir
dados, uma aplicação usa qualquer tamanho que achar conveniente, que pode ser a
partir de um único octeto. No extremo receptor, o protocolo entrega octetos do fluxo
de dados exatamente na mesma ordem em que foram enviados, tornando-os
disponíveis ao programa aplicativo receptor assim que tiverem sido recebidos e
verificados. O protocolo é livre para dividir o fluxo em pacotes independentes das
partes que o programa aplicativo transfere. Para tornar a transferência mais eficiente
e minimizar o tráfego da rede, as implementações normalmente coletam dados
154
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
suficientes de um fluxo a fim de preencher um datagrama razoavelmente grande antes
de transmiti-lo por uma internet. Assim, mesmo que o programa aplicativo gere o
fluxo de um octeto de cada vez, a transferência por uma inter-rede pode ser muito
eficiente. De modo semelhante, se o programa aplicativo escolher gerar blocos de
dados extremamente grandes, o protocolo pode escolher dividir cada bloco em partes
menores para a transmissão.
Para as aplicações em que os dados devem ser entregues sem esperar preencher um
buffer, o serviço de fluxo oferece um mecanismo push que as aplicações usam para forçar a
transferência imediata. No lado emissor, um push força o protocolo a transferir todos os
dados que foram gerados sem esperar para preencher um buffer. Ao alcançar o lado receptor,
o push faz com que o TCP torne os dados disponíveis à aplicação sem atraso. Porém, o leitor
deverá observar que a função push só garante que todos os dados serão transferidos; ele não
oferece limites de registro. Assim, mesmo que a remessa seja forçada, o protocolo pode
decidir dividir o fluxo de maneiras inesperadas.
 Fluxo não-estruturado. É importante entender que o serviço de fluxo TCP/IP não
honra fluxos de dados estruturados. Por exemplo, não existe um meio de uma
aplicação de folha de pagamento fazer com que o serviço de fluxo marque os limites
entre registros de funcionários ou identifique o conteúdo do fluxo como sendo dados
de folha de pagamento. Os programas aplicativos que utilizam o serviço de fluxo
precisam entender o conteúdo de fluxo e combinar com o formato do fluxo antes que
iniciem uma conexão.
 Conexão full duplex. As conexões fornecidas pelo serviço de fluxo TCP/IP permitem
a transferência simultânea nas duas direções. Essas conexões são chamadas de full
duplex. Do ponto de vista de um processo de aplicação, uma conexão full duplex
consiste em dois fluxos independentes, indo em sentidos opostos, sem qualquer
interação aparente. O serviço de fluxo permite que um processo de aplicação termine
o fluxo em um sentido enquanto os dados continuam a fluir no outro sentido, tornando
a conexão half duplex. A vantagem de uma conexão full duplex é que o protocolo
básico pode enviar informações de controle para um fluxo de volta para a origem em
datagramas transportando dados na direção oposta. Esse piggybacking reduz o
tráfego da rede.
7.19.3 Fornecendo confiabilidade
Dissemos que o serviço de entrega de fluxo confiável garante entregar um fluxo de
dados enviados de uma máquina para outra sem duplicação ou perda de dados. A questão é:
“como o protocolo pode oferecer transferência confiável se o sistema de comunicação
subjacente oferece apenas a remessa de pacotes não-confiável?” A resposta é complicada,
mas a maioria dos protocolos confiáveis usa uma única técnica fundamental, conhecida como
confirmação positiva com retransmissão
(Positive Acknowledgement with
Retransmition – PAR). A técnica requer que um destinatário se comunique com a origem,
enviando de volta uma mensagem de confirmação (ACK) enquanto recebe dados. O emissor
mantém um registro de cada pacote que envia e espera uma confirmação antes de enviar o
próximo pacote. O emissor também inicia um timer quando envia um pacote, e retransmite
o pacote se o timer expirar antes que a confirmação chegue.
A Figura 7.46 mostra como o protocolo de confirmação positiva mais simples transfere
dados.
155
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura 7.46 – Um protocolo usando confirmação positiva com retransmissão.
Na figura, os eventos no emissor e no receptor são mostrados à esquerda e à direita
respectivamente. Cada linha diagonal atravessando o meio mostra a transferência de uma
mensagem pela rede.
A Figura 7.47 utiliza o mesmo diagrama de formato da Figura 7.46 para mostrar o que
acontece quando um pacote é perdido ou adulterado. O emissor inicia um timer depois de
transmitir um pacote. Quando o timer expira, o emissor assume que o pacote foi perdido e o
retransmite.
O problema final de confiabilidade surge quando um sistema de remessa de pacotes
subjacente duplica pacotes. As duplicatas também surgem quando as redes experimentam
altos atrasos, que causam retransmissão prematura. A solução da duplicação exige
pensamento cuidadoso, pois pacotes e confirmações podem ser duplicados. Normalmente,
os protocolos confiáveis detectam pacotes duplicados atribuindo um número de sequência a
cada pacote e exigindo que o receptor se lembre de quais números de sequência ele recebeu.
Para evitar a confusão causada por confirmações adiadas ou duplicadas, os protocolos de
confirmação positiva enviam números de sequência em confirmações, de modo que o
receptor possa associar corretamente confirmações com pacotes.
Figura 7.47 – Timeout e retransmissão que ocorre quando um pacote é perdido.
156
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
7.19.4 A idéia por trás das janelas deslizantes
Antes de examinar o serviço de fluxo TCP, precisamos explorar um conceito adicional
que está por trás da transmissão de fluxo. O conceito, conhecido como janela deslizante,
torna a transmissão de fluxo eficiente. Para entender a motivação para as janelas deslizantes,
lembre-se da sequência de eventos que a Figura 7.46 representa. Para conseguir
confiabilidade, o emissor transmite um pacote e depois espera por uma confirmação antes de
transmitir outro. Como mostra a Figura 7.46, os dados só fluem entre as máquinas em uma
direção, mesmo que a rede seja capaz de comunicação simultânea nas duas direções. A rede
permanecerá completamente ociosa durante os momentos em que as máquinas atrasam as
respostas (por exemplo, enquanto as máquinas calculam rotas ou somas de verificação). Se
imaginarmos uma rede com altos atrasos de transmissão, o problema se torna claro. Um
protocolo de confirmação positiva simples desperdiça uma quantidade substancial de largura
de banda de rede, pois precisa adiar o envio de um novo pacote até que receba uma
confirmação para o pacote anterior.
A técnica de janela deslizante é uma forma mais complexa de confirmação positiva e
retransmissão do que o método simples discutido anteriormente. Os protocolos de janela
deslizante utilizam melhor a largura de banda da rede, pois permitem que o emissor transmita
vários pacotes antes de esperar uma confirmação. O modo mais fácil de ver a operação da
janela deslizante é pensar em uma sequência de pacotes a ser transmitido conforme mostrado
na Figura 7.48. O protocolo coloca uma janela pequena, de tamanho fixo, na sequência e
transmite todos os pacotes que se encontram dentro da janela.
Figura 7.48 – Um protocolo de janela deslizante com oito pacotes na janela.
Dizemos que um pacote é não-confirmado se tiver sido transmitido, mas nenhuma
confirmação tiver sido recebida. Tecnicamente, o número de pacotes que podem ser
confirmados em determinado momento é restringido pelo tamanho da janela, que é limitado
a um número pequeno e fixo. Por exemplo, em um protocolo de janela deslizante com
tamanho de janela 8, o emissor tem permissão para transmitir 8 pacotes antes de receber uma
confirmação.
Como mostra a Figura 7.48, quando o emissor recebe uma confirmação para o primeiro
pacote dentro da janela, ele “desliza” a janela e envia o próximo pacote. A janela continua a
deslizar enquanto as confirmações são recebidas.
O desempenho dos protocolos de janela deslizante depende do tamanho de janela e da
velocidade em que a rede aceita pacotes. A Figura 7.49 mostra um exemplo da operação de
157
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
um protocolo de janela deslizante ao enviar três pacotes. Observe que o emissor transmite
todos os três pacotes antes de receber quaisquer confirmações.
Com um tamanho de janela igual a 1, um protocolo de janela deslizante é exatamente
o mesmo que nosso protocolo de confirmação positiva simples. Aumentando o tamanho da
janela, é possível eliminar completamente o tempo ocioso da rede. Ou seja, no estado
constante, o emissor pode transmitir pacotes tão rápido quanto a rede pode transferi-los. O
ponto principal é o seguinte: como um protocolo de janela deslizante bem ajustado mantém
a rede completamente saturada com pacotes, ele obtém um throughput substancialmente
maior que um protocolo de confirmação positiva simples.
Conceitualmente, um protocolo de janela deslizante sempre se lembra de quais pacotes
foram confirmados e mantém um timer separado para cada pacote não-confirmado. Se um
pacote é perdido, o timer expira e o emissor retransmite esse pacote. Quando o emissor
desliza sua janela, ele ultrapassa todos os pacotes confirmados. No extremo receptor, o
protocolo mantém uma janela semelhante, aceitando e confirmando pacotes à medida que
eles chegam. Assim, a janela particiona a sequência de pacotes em três conjuntos: os pacotes
à esquerda da janela foram transmitidos, recebidos e confirmados com sucesso; e os pacotes
que se encontram na janela estão sendo transmitidos. O pacote de número mais baixo na
janela é o primeiro pacote na sequência que não foi confirmado.
Figura 7.49 – Um exemplo de três pacotes transmitidos usando a janela deslizante.
7.19.5 O Transmission Control Protocol
Agora que entendemos o princípio das janelas deslizantes, podemos examinar o serviço
de fluxo confiável fornecido pelo conjunto de protocolos TCP/IP da Internet. O serviço é
definido pelo Transmission Control Protocol, ou TCP. O serviço de fluxo confiável é tão
significativo que o conjunto de protocolos inteiro é denominado TCP/IP. É importante
entender que o TCP é um protocolo de comunicação, e não uma parte do software.
A diferença entre um protocolo e o software que o implementa é semelhante à diferença
entre a definição de uma linguagem de programação e um compilador. Como no mundo das
linguagens de programação, a distinção entre definição e implementação às vezes se torna
confusa. As pessoas encontram o TCP com muito mais freqüência do que encontram a
especificação de protocolo, de modo que é natural pensar em uma implementação em
particular como o padrão. Apesar disso, o leitor deve tentar distinguir entre os dois.
Exatamente o que o TCP oferece? TCP é complexo, de modo que não existe uma
resposta simples. O protocolo especifica o formato dos dados e confirma que dois
158
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
computadores trocam dados para conseguir uma transferência confiável, além dos
procedimentos que os computadores utilizam para garantir que os dados chegam
corretamente. Ele especifica como o TCP distingue entre vários destinos em determinada
máquina, e como as máquinas em comunicação se recuperam de erros como pacotes perdidos
ou duplicados. O protocolo também especifica como os dois computadores iniciam uma
transferência de fluxo TCP e como concordam quando ela termina.
Também é importante entender o que o protocolo não inclui. Embora a especificação
TCP descreva como os programas aplicativos utilizam TCP em termos gerais, ele não dita os
detalhes da interface entre um programa aplicativo e o TCP. Ou seja, a documentação do
protocolo só discute as operações que o TCP fornece; ele não especifica os procedimentos
exatos que os programas aplicativos invocam para acessar essas operações. O motivo para
deixar a interface do programa aplicativo não especificada é a flexibilidade. Em particular,
como os programadores normalmente implementam TCP no sistema operacional do
computador, eles precisam empregar qualquer interface que o sistema operacional ofereça.
Permitir a flexibilidade do implementador torna possível ter uma única especificação para
TCP que pode ser usada para montar software para uma série de máquinas.
Como o TCP assume pouco a respeito do sistema de comunicação subjacente, o TCP
pode ser usado com diversos sistemas de remessa de pacote. Em particular, por não exigir
que o sistema subjacente seja confiável ou rápido, o TCP pode rodar sobre uma série de
mecanismos de hardware, como a linha telefônica discada, uma rede local, uma rede de fibra
óptica de alta velocidade, uma conexão por satélite ou uma conexão sem fio com ruído, em
que muitos pacotes são perdidos. A grande variedade de sistemas de entrega que o TCP pode
usar é um de seus pontos fortes.
7.19.6 Portas, conexões e extremidades
Assim como o User Datagram Protocol (UDP) apresentado na seção 7.18, o TCP
reside acima do IP no esquema de camadas do protocolo. A Figura 7.50 mostra a organização
conceitual. O TCP permite que vários programas aplicativos em determinada máquina se
comuniquem simultaneamente, e demultiplexa o tráfego TCP que chega entre os programas
aplicativos. Assim como o User Datagram Protocol, o TCP usa os números de porta de
protocolo para identificar o destino final dentro de uma máquina. Cada porta recebe um
pequeno inteiro usado para identificá-la.
Camadas conceituais
Aplicação
Fluxo confiável (TCP)
Datagrama do usuário (UDP)
Inter-rede (IP)
Interface de rede
Figura 7.50 – A disposição conceitual em camadas do UDP e TCP acima do IP.
Quando discutimos sobre as portas UDP, dissemos para pensar em cada porta como
uma fila na qual o protocolo coloca os datagramas que chegam. As portas TCP são muito
mais complexas, pois determinado número de porta não corresponde a um único objeto. Em
vez disso, o TCP foi montado sobre a abstração da conexão, em que os objetos a serem
identificados são conexões de circuito virtual, e não portas individuais. É fundamental
entender que o TCP usa a noção de conexões, pois ajuda a explicar o significado e o uso dos
159
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
números de porta TCP. O TCP usa a conexão, e não a porta do protocolo, como sua abstração
fundamental; as conexões são identificadas por um par de extremidades.
Quais são exatamente as “extremidades” de uma conexão? Dissemos que uma conexão
consiste em um circuito virtual entre dois programas aplicativos, de modo que pode ser
natural considerar que um programa aplicativo serve como “extremidade” de conexão, mas
não é. Em vez disso, o TCP define uma extremidade como sendo um par de inteiros (host,
porta), em que host é o endereço IP para um host e porta é uma porta TCP nesse host. Por
exemplo, a extremidade (128.10.2.3, 25) especifica a porta TCP 25 na máquina com endereço
IP 128.10.2.3.
Agora que definimos as extremidades, será fácil entender as conexões. Lembre-se de
que uma conexão é definida por suas duas extremidades. Assim, se houver uma conexão da
máquina (18.26.0.36) no MIT com a máquina (128.10.2.3) na Purdue University, ela pode
ser definida pelas extremidades:
(18.26.0.36, 1069) e (128.10.2.3, 25).
Nesse meio tempo, outra conexão poderia estar em andamento da máquina (128.9.0.32)
no Information Sciences Institute com a mesma máquina em Purdue, identificada por suas
extremidades:
(128.9.0.32, 1184) e (128.10.2.3, 53).
Até aqui, nossos exemplos de conexões foram simples, pois as portas usadas em todas
as extremidades foram exclusivas. Porém, a abstração da conexão permite que várias
conexões compartilhem uma extremidade. Por exemplo, poderemos acrescentar outra
conexão às duas listadas anteriormente, da máquina (128.2.254.139) na CMU até a máquina
em Purdue:
(128.2.254.139, 1184) e (128.10.2.3, 53).
Pode parecer estranho que duas conexões possam usar a porta TCP 53 na máquina
128.10.2.3 simultaneamente, mas não existe ambiguidade. Como o TCP associa as
mensagens que chegam a uma conexão, em vez de uma porta de protocolo, ele usa as duas
extremidades para identificar a conexão apropriada. A ideia importante a lembrar é: como o
TCP identifica uma conexão por um par de extremidades, determinado número de porta TCP
pode ser compartilhado por várias conexões na mesma máquina.
Do ponto de vista de um programador, a abstração da conexão é significativa. Isso
significa que um programador pode criar um programa que ofereça serviço concorrente a
várias conexões simultaneamente, sem exigir os números de porta locais para cada conexão.
Por exemplo, a maioria dos sistemas fornece acesso simultâneo ao seu serviço de correio
eletrônico, permitindo que vários computadores enviem correio eletrônico simultaneamente.
Como o programa que aceita o correio que chega usa TCP para se comunicar, ele só precisa
usar uma porta TCP local, embora permita que várias conexões prossigam simultaneamente.
7.19.7 Aberturas passivas e ativas
Diferente do UDP, o TCP é um protocolo orientado a conexão, que exige que as duas
extremidades concordem em participar. Ou seja, antes que o tráfego TCP possa passar por
uma rede, os programas aplicativos nas duas extremidades da conexão precisam combinar
que a conexão é desejada. Para isso, o programa aplicativo em uma extremidade realiza uma
função de abertura passiva, contatando seu sistema operacional e indicando que ele aceitará
160
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
uma conexão que chega. Nesse momento, o sistema operacional atribui um número de porta
TCP para sua extremidade da conexão. O programa aplicativo na outra extremidade precisa
então contatar seu sistema operacional usando uma requisição de abertura ativa para
estabelecer uma conexão. Os dois módulos de TCP se comunicam para estabelecer e
verificar uma conexão. Quando uma conexão tiver sido criada, os programas aplicativos
podem começar a passar dados; os módulos de TCP em cada extremidade trocam mensagens
que garantem a entrega confiável. Retomaremos aos detalhes do estabelecimento de
conexões depois de examinar o formato da mensagem TCP.
7.19.8 Segmentos, fluxos e números de sequência
O TCP vê o fluxo de dados como uma sequência de octetos ou bytes que ele divide em
segmentos para transmissão. Normalmente, cada segmento trafega por uma inter-rede
subjacente em um único datagrama IP.
O TCP usa um mecanismo especializado de janela deslizante para solucionar dois
problemas importantes: transmissão eficiente e controle de fluxo. Assim como o protocolo
de janela deslizante descrito anteriormente, o mecanismo de janela TCP possibilita o envio
de vários segmentos antes que uma confirmação chegue. Isso aumenta o throughput total,
pois mantém a rede ocupada. O formato TCP de um protocolo de janela deslizante também
soluciona o problema de controle de fluxo de fim-a-fim, permitindo que o receptor restrinja
a transmissão até que tenha espaço de buffer suficiente para acomodar mais dados.
O mecanismo de janela deslizante do TCP opera no nível de octeto, e não no nível de
segmento ou pacote. Os octetos do fluxo de dados são numerados sequencialmente, e um
emissor mantém três ponteiros associados a cada conexão. Os ponteiros definem uma janela
deslizante, conforme a Figura 7.51 ilustra. O primeiro ponteiro marca a esquerda da janela
deslizante, separando os octetos que foram enviados e confirmados daqueles ainda a serem
confirmados. Um segundo ponteiro marca a direita da janela deslizante e define o octeto
mais alto na sequência que pode ser enviado antes que mais confirmações sejam recebidas.
O terceiro ponteiro marca o limite dentro da janela que separa aqueles octetos que já foram
enviados dos octetos que não foram enviados. O protocolo envia todos os octetos na janela
sem atraso, de modo que o limite dentro da janela normalmente se move rapidamente da
esquerda para a direita.
Figura 7.51 – Um exemplo da janela deslizante do TCP.
Descrevemos como a janela TCP do emissor se desliza e mencionamos que o receptor
precisa manter uma janela semelhante para unir o fluxo novamente. Porém, é importante
entender que, como as conexões TCP são full duplex, duas transferências prosseguem
simultaneamente em cima de cada conexão, uma em cada direção. Consideramos as
transferências completamente independentes, pois a qualquer momento os dados podem fluir
pela conexão em uma direção, ou em ambas as direções. Assim, o TCP em cada extremidade
mantém duas janelas por conexão (com um total de quatro), uma desliza pelo fluxo de dados
sendo enviado, e a outra desliza enquanto os dados são recebidos.
161
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
7.19.9 Tamanho de janela variável e controle de fluxo
Uma diferença entre o protocolo de janela deslizante do TCP e o protocolo de janela
deslizante simplificado, apresentado anteriormente, ocorre porque o TCP permite que o
tamanho da janela varie com o tempo. Cada confirmação, que especifica quantos octetos
foram recebidos, contém um anúncio de janela que especifica quantos octetos adicionais de
dados o receptor está preparado para aceitar. Pensamos no anúncio da janela como
especificando o tamanho de buffer atual do receptor. Em resposta a um anúncio de janela
maior, o emissor aumenta o tamanho de sua janela deslizante e prossegue para enviar octetos
que não foram confirmados. Em resposta a um anúncio de janela diminuída, o emissor
diminui o tamanho de sua janela e para de enviar octetos além do limite. O TCP não pode
contradizer os anúncios anteriores, encurtando a janela além das posições anteriormente
aceitáveis no fluxo de octetos. Em vez disso, anúncios menores acompanham confirmações,
de modo que o tamanho da janela muda na hora em que ela desliza para a frente.
A vantagem de usar uma janela de tamanho variável é que ela oferece controle de fluxo
e também transferência confiável. Para evitar receber mais dados do que pode armazenar, o
receptor envia anúncios de janela menores enquanto seu buffer se enche. No caso extremo,
o receptor anuncia um tamanho de janela zero para interromper todas as transmissões. Mais
adiante, quando o espaço do buffer se tomar disponível, o receptor anunciará um tamanho de
janela diferente de zero para disparar o fluxo de dados novamente1.
É essencial ter um mecanismo para controle de fluxo em um ambiente no qual as
máquinas de várias velocidades e tamanhos se comunicam por redes e roteadores de diversas
velocidades e capacidades. Existem dois problemas independentes. Primeiro, os protocolos
precisam oferecer controle de fluxo de fim-a-fim entre a origem e o destino final. Por
exemplo, quando um PDA de mão se comunica com um PC rápido, o PDA precisa regular o
fluxo de dados, ou o protocolo ficaria rapidamente defasado. Assim, o TCP precisa
implementar o controle de fluxo de fim-a-fim para garantir a entrega confiável. Em segundo
lugar, é necessário haver um mecanismo que permita que os sistemas intermediários (ou seja,
roteadores) controlem uma origem que envia mais tráfego do que a máquina pode tolerar.
Quando as máquinas intermediárias se tornam sobrecarregadas, a condição é chamada
de congestionamento, e os mecanismos para solucionar o problema são denominados
mecanismos de controle de congestionamento. O TCP usa seu esquema de janela deslizante
para solucionar o problema de controle de fluxo de fim-a-fim. Discutiremos o controle de
congestionamento mais tarde, mas deve ser observado que um protocolo bem projetado pode
detectar e recuperar-se do congestionamento, enquanto um protocolo mal projetado tornará
o congestionamento pior. Em particular, um esquema de retransmissão cuidadosamente
escolhido pode ajudar a evitar o congestionamento, mas um esquema mal escolhido pode
exacerbá-lo retransmitindo agressivamente.
7.19.10 Formato do segmento TCP
A unidade de transferência entre o TCP nas duas máquinas é chamada de segmento.
Os segmentos são trocados para se estabelecer conexões, transferir dados, enviar
confirmações, anunciar tamanhos de janela e fechar conexões. Como o TCP utiliza o
piggybacking, uma confirmação trafegando da máquina A para a máquina B pode trafegar
1
Existem duas exceções para a transmissão quando o tamanho da janela for zero. Primeiro, um emissor tem permissão para
transmitir um segmento com o bit urgente marcado para informar ao receptor que existem dados urgentes à disposição.
Segundo, para evitar um impasse em potencial, que pode surgir se um anúncio diferente de zero for perdido após o tamanho
da janela alcançar zero, o emissor sonda uma janela de tamanho zero periodicamente.
162
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
nos mesmos segmentos dos dados atravessando da máquina A para a máquina B, embora a
confirmação se refira aos dados enviados de B para A1. A Figura 7.52 mostra o formato do
segmento TCP.
0
4
HLEN
10
16
24
31
PORTA DE ORIGEM
PORTA DE DESTINO
NÚMERO DE SEQÜÊNCIA
NÚMERO DE CONFIRMAÇÃO
RESERVADO BITS CÓDIGO
JANELA
CHECKSUM
PONTEIRO DE URGENTE
OPÇÕES (SE HOUVER)
PREENCHIMENTO
DADOS
...
Figura 7.52 – O formato de um segmento TCP com um cabeçalho TCP seguido por dados.
Cada segmento é dividido em duas partes, um cabeçalho seguido por dados. O
cabeçalho, conhecido como cabeçalho TCP, transporta a identificação esperada e
informações de controle. Os campos PORTA DE ORIGEM e PORTA DE DESTINO contêm
os números de porta TCP que identificam os programas aplicativos nas extremidades da
conexão. O campo NÚMERO DE SEQÜÊNCIA identifica a posição no fluxo de bytes do
emissor dos dados no segmento. O campo NÚMERO DE CONFIRMAÇÃO identifica o
número do octeto que a origem espera receber em seguida. Observe que o número de
seqüência refere-se ao fluxo que segue na mesma direção do segmento, enquanto o número
de confirmação refere-se ao fluxo que segue na direção oposta do segmento.
O campo HLEN2 contém um inteiro que especifica o tamanho do cabeçalho do
segmento medido em múltiplos de 32 bits. Ele é necessário porque o campo OPÇÕES varia
em tamanho, dependendo de quais opções foram incluídas. Assim, o tamanho do cabeçalho
TCP varia, dependendo das opções selecionadas. O campo de 6 bits marcado como
RESERVADO é reservado para uso futuro.
Alguns segmentos transportam apenas uma confirmação, enquanto outros transportam
dados. Outros transportam requisições para estabelecer ou fechar uma conexão. O TCP
utiliza um campo de 6 bits rotulado como BITS DE CÓDIGO para determinar a finalidade e
o conteúdo do segmento. Os seis bits dizem como interpretar outros campos no cabeçalho,
de acordo com a Tabela 7.12.
Bit (esquerda para direita)
URG
ACK
PSH
RST
SYN
FIN
Significado se bit definido como 1
Campo ponteiro de urgente é válido
Campo de confirmação é válido
Este segmento requer um push
Reinicia a conexão
Sincroniza números de sequência
Emissor alcançou final do seu fluxo de bytes
Tabela 7.12 – Bits do campo BITS DE CÓDIGO no cabeçalho TCP.
O TCP anuncia quantos dados ele espera aceitar toda vez que envia um segmento,
especificando seu tamanho de buffer no campo JANELA. O campo contém um inteiro não
1
Na prática, o piggybacking normalmente não ocorre, porque a maioria das aplicações não envia dados nas duas direções
simultaneamente.
2
A especificação diz que o campo HLEN é o deslocamento da área de dados dentro do segmento.
163
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
sinalizado de 16 bits na ordem de bytes padrão da rede. Anúncios de janela oferecem outro
exemplo de piggybacking, pois acompanham todos os segmentos, incluindo aqueles
transportando dados e também aqueles carregando apenas uma confirmação.
7.19.11 Dados fora de faixa
Embora o TCP seja um protocolo orientado para fluxo, às vezes é importante que o
programa em uma extremidade de uma conexão envie dados fora da faixa, sem esperar que
o programa na outra extremidade da conexão consuma octetos já no fluxo. Por exemplo,
quando o TCP é usado para uma sessão de login remota, o usuário pode decidir enviar uma
sequência de teclado que interrompe ou aborta o programa na outra extremidade. Esses sinais
normalmente são necessários quando um programa na máquina remota deixa de operar
corretamente. Os sinais precisam ser enviados sem esperar que o programa leia octetos já no
fluxo TCP (ou alguém não seria capaz de abortar programas que param de ler a entrada).
Para acomodar a sinalização fora de faixa, o TCP permite que o emissor especifique
dados como urgentes, significando que o programa receptor deve ser notificado sobre sua
chegada o mais rápido possível, independente de sua posição no fluxo. O protocolo
especifica que, quando dados urgentes são encontrados, o TCP receptor deve notificar o
programa aplicativo associado à conexão para entrar no “modo urgente”. Depois que todos
os dados urgentes tiverem sido consumidos, o TCP diz ao programa aplicativo para retornar
à operação normal.
Os detalhes exatos de como o TCP informa ao programa aplicativo sobre dados
urgentes dependem do sistema operacional do computador. O mecanismo usado para marcar
dados urgentes ao transmiti-los em um segmento consiste no bit de código URG e no campo
PONTEIRO DE URGENTE. Quando o bit URG é marcado, o campo PONTEIRO DE
URGENTE especifica a posição no segmento onde os dados urgentes terminam.
7.19.12 Opções do TCP
Como mostra a Figura 7.52, um segmento TCP pode conter zero ou mais opções no
cabeçalho. Cada opção começa com um campo de 1 octeto que especifica a opção tipo,
seguida por um campo de tamanho de 1 octeto que especifica o tamanho da opção em octetos.
Se as opções não ocuparem um múltiplo exato de 32 bits, o PREENCHIMENTO é
acrescentado ao final do cabeçalho.
7.19.12.1Opção de tamanho máximo do segmento
Um emissor pode escolher a quantidade de dados que é colocada em cada
segmento. Porém, as duas extremidades de uma conexão TCP precisam combinar sobre
um segmento máximo que elas transferirão.
O TCP usa uma opção de tamanho máximo de segmento (Maximum Segment
Size – MSS) para permitir que um receptor especifique o segmento de tamanho máximo
que ele desejará receber. Assim, um sistema embutido que possui apenas algumas
centenas de bytes de espaço em buffer pode especificar um MSS que restringe os
segmentos de modo que caibam no buffer. A negociação do MSS é especialmente
significativa porque permite que sistemas heterogêneos se comuniquem. Um
supercomputador pode se comunicar com um sistema embutido pequeno. Para
maximizar o throughput, quando dois computadores se conectam à mesma rede física,
o TCP normalmente calcula um tamanho máximo de segmento de modo que os
datagramas IP resultantes combinem com a MTU da rede. Se as extremidades não
estiverem na mesma rede física, elas poderão tentar descobrir a MTU mínima ao longo
164
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
do caminho entre elas, ou escolher um tamanho de segmento máximo de 536 (o tamanho
default de um datagrama IP, 576, menos o tamanho padrão dos cabeçalhos IP e TCP).
Em um ambiente geral de inter-rede, a escolha de um bom tamanho máximo de
segmento pode ser difícil, pois o desempenho pode ser fraco para tamanhos de segmento
extremamente grandes ou extremamente pequenos. Por um lado, quando o tamanho do
segmento é pequeno, a utilização da rede permanece baixa. Para ver por que, lembre-se
de que os segmentos TCP trafegam encapsulados nos datagramas IP, que estão
encapsulados nos frames físicos da rede. Assim, cada segmento possui pelo menos 40
octetos de cabeçalhos TCP e IP, além dos dados. Portanto, os datagramas transportando
apenas um octeto de dados utilizam no máximo 1/41 da largura de banda da rede
subjacente para dados do usuário; na prática, as lacunas mínimas entre pacotes e os bits
de enquadramento de hardware da rede tornam a razão ainda menor.
Por outro lado, tamanhos de segmento extremamente grandes também podem
produzir um desempenho fraco. Segmentos grandes resultam em datagramas IP
grandes. Quando esses datagramas atravessam uma rede com MTU pequena, o IP
precisa fragmentá-los. Diferente de um segmento TCP, um fragmento não pode ser
confirmado ou retransmitido de forma independente; todos os fragmentos precisam
chegar, ou o datagrama inteiro precisa ser retransmitido. Como a probabilidade de
perder determinado fragmento é diferente de zero, aumentar o tamanho de segmento
acima do patamar de fragmentação diminui a probabilidade de o datagrama chegar, o
que diminui o throughput.
Em teoria, o tamanho de segmento ideal, S, ocorre quando os datagramas IP
transportando os segmentos são os maiores possíveis sem exigir fragmentação em
qualquer lugar ao longo do caminho da origem até o destino. Na prática, encontrar S é
difícil por vários motivos. Primeiro, a maioria das implementações do TCP não inclui
um mecanismo para fazer isso1. Segundo, como os roteadores em uma inter-rede podem
mudar de rotas dinamicamente, o caminho que os datagnamas seguem entre um par de
computadores em comunicação pode mudar dinamicamente, assim como o tamanho em
que os datagramas precisam ser fragmentados. Terceiro, o tamanho ideal depende dos
cabeçalhos de protocolo de nível inferior (por exemplo, o tamanho do segmento precisa
ser reduzido para acomodar opções do IP).
7.19.12.2Opção de janela móvel
Como o campo JANELA no cabeçalho TCP tem 16 bits de extensão, o tamanho
máximo da janela é de 64 Kbytes. Embora a janela seja suficiente para as primeiras
redes, um tamanho de janela maior é necessário para obter um alto throughput em uma
rede como um canal de satélite que possui um produto com grande atraso-largura de
banda (informalmente chamado de pipe longo e gordo).
Para acomodar tamanhos de janela maiores, uma opção de escala de janela foi
proposta para o TCP. A opção consiste em três octetos: um tipo, um tamanho e um valor
de shift, S. Essencialmente, o valor de shift especifica um fator de escala binário a ser
aplicado ao valor da janela. Quando a escala da janela está em vigor, um receptor extrai
o valor do campo JANELA, W, e desloca W à esquerda por S bits, a fim de obter o
tamanho real da janela.
1
Para descobrir a MTU do caminho, um emissor sonda o caminho enviando datagramas com o bit não fragmentar do IP
marcado. Depois, ele diminui o tamanho se as mensagens de erro ICMP informarem que a fragmentação foi necessária.
165
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Diversos detalhes complicam o projeto. A opção pode ser negociada quando a
conexão é estabelecida inicialmente, quando todos os anúncios de janela sucessivos são
considerados como usando a escala negociada, ou a opção pode ser especificada em cada
segmento, quando o fator de escala pode variar de um segmento para outro. Além do
mais, se qualquer lado de uma conexão implementar a escala de janela, mas não precisar
dimensionar sua janela, esse lado envia a opção definida como zero, o que cria o fator
de escala 1.
7.19.12.3Opção de estampa de tempo
A opção de estampa de tempo TCP foi inventada para ajudar o TCP a calcular o
atraso na rede subjacente, e também é usada para lidar com o caso em que os números
de sequência do TCP excedem 232 (conhecidos como números Protect Against Wrapped
Sequence, PAWS). Além dos campos obrigatórios de tipo e tamanho, uma opção de
estampa de tempo inclui dois valores: um valor de estampa de tempo e um valor de
estampa de tempo de resposta de eco. Um emissor coloca a hora de seu clock atual no
campo de estampa de tempo ao enviar um pacote; um receptor copia o campo de estampa
de tempo para o campo de resposta de eco antes de retornar uma confirmação para o
pacote. Assim, quando uma confirmação chega, o emissor pode calcular com precisão
o tempo gasto total desde que o segmento foi enviado.
7.19.13 Cálculo do checksum TCP
O campo CHECKSUM no cabeçalho TCP contém um checksum inteiro de 16 bits,
usado para verificar a integridade dos dados, além do cabeçalho TCP. Para calcular o
checksum, o TCP na máquina emissora segue um procedimento como aquele descrito na
seção 7.18.6 para o UDP. Ele anexa um pseudocabeçalho ao segmento, anexa bits zero
suficientes para tornar o segmento um múltiplo de 16 bits e calcula o checksum de 16 bits
sobre o resultado inteiro. O TCP não conta o pseudocabeçalho ou o preenchimento no
tamanho do segmento, nem os transmite. Além disso, ele assume que o próprio campo de
checksum é zero para fins de cálculo do checksum. Assim como outros checksums, o TCP
usa a aritmética de 16 bits e apanha o complemento de um da soma do complemento a um.
No site receptor, o TCP realiza o mesmo cálculo para verificar se o segmento chegou intacto.
A finalidade do uso de um pseudocabeçalho é exatamente a mesma que no UDP. Ele
permite que o receptor verifique se o segmento alcançou seu destino correto, que inclui um
endereço IP do host e também um número de porta de protocolo. Os endereços IP de origem
e destino são importantes para o TCP porque ele precisa usá-los para identificar a conexão à
qual o segmento pertence. Portanto, sempre que um datagrama chega transportando um
segmento TCP, o IP precisa passar ao TCP os endereços IP de origem e destino do
datagrama, além do próprio segmento. A Figura 7.53 mostra o formato do pseudocabeçalho
usado no cálculo do checksum.
0
8
ZERO
16
31
ENDEREÇO IP DE ORIGEM
ENDEREÇO IP DE DESTINO
PROTOCOLO
TAMANHO DO TCP
Figura 7.53 – O formato do pseudo cabeçalho usado pelo TCP.
O TCP emissor atribui ao campo PROTOCOLO o valor que o sistema de remessa
subjacente usará em seu campo de tipo de protocolo. Para os datagramas IP transportando
o TCP, o valor é 6. O campo TAMANHO DO TCP especifica o tamanho total do segmento
TCP, incluindo o cabeçalho TCP. No extremo receptor, a informação usada no
166
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
pseudocabeçalho é extraída do datagrama IP que transportou o segmento e incluída no
cálculo do checksum para verificar se o segmento chegou intacto no destino correto.
7.19.14 Estabelecendo uma conexão TCP
Para estabelecer uma conexão, o TCP usa um handshake de três vias. No caso mais
simples, o processo de handshake funciona como na Figura 7.54.
Figura 7.54 – A sequência de mensagens em um handshake de três vias.
O primeiro segmento de um handshake pode ser identificado porque possui o bit SYN1
marcado no campo de código. A segunda mensagem possui os bits SYN e ACK marcados,
indicando que ele confirma o primeiro segmento SYN, além de continuar com o handshake.
A mensagem de handshake final é apenas uma confirmação, e é simplesmente usada para
informar ao destino de que ambos os lados concordam que uma conexão foi estabelecida.
Normalmente, o TCP em uma máquina espera passivamente pelo handshake, e o TCP
em outra máquina o inicia. Porém, o handshake é cuidadosamente projetado para funcionar
mesmo que as duas máquinas tentem iniciar uma conexão simultaneamente. Assim, uma
conexão pode ser estabelecida de qualquer extremidade ou das duas extremidades
simultaneamente. Quando a conexão tiver sido estabelecida, os dados podem fluir nas duas
direções igualmente bem. Não existe mestre ou escravo.
O handshake de três vias é necessário e suficiente para o sincronismo correto entre as
duas extremidades da conexão. Para entender por que, lembre-se de que o TCP é baseado
em um serviço de remessa de pacotes não-confiável, de modo que as mensagens podem ser
perdidas, adiadas, duplicadas ou entregues fora da ordem. Assim, o protocolo precisa usar
um mecanismo de timeout e retransmitir requisições perdidas. O problema surge se as
requisições retransmitidas e originais chegarem enquanto a conexão estiver sendo
estabelecida, ou se as requisições retransmitidas forem adiadas até depois que a conexão tiver
sido estabelecida, usada e terminada. Um handshake de três vias (mais a regra de que o TCP
ignora requisições adicionais para conexão após uma conexão ter sido estabelecida)
soluciona esses problemas.
7.19.15 Números de sequência iniciais
Um handshake de três vias realiza duas funções importantes. Ele garante que os dois
lados estão prontos para transferir dados (e que sabem que ambos estão prontos) e permite
1
SYN significa sincronismo; a pronúncia é “sin”.
167
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
que os dois lados concordem sobre números de sequência iniciais. Os números de sequência
são enviados e confirmados durante o handshake. Cada máquina precisa escolher um número
de sequência inicial aleatoriamente, que usará para identificar os bytes no fluxo que está
enviado. Os números de sequência não podem começar sempre com o mesmo valor. Em
particular, o TCP não pode simplesmente escolher a sequência 1 toda vez que criar uma
conexão. Naturalmente, é importante que os dois lados concordem sobre um número inicial,
de modo que os números de octeto usados nas confirmações combinem com aqueles usados
nos segmentos de dados.
Para ver como as máquinas podem combinar sobre números de sequência para dois
fluxos após somente três mensagens, lembre-se de que cada segmento contém um campo de
número de sequência e um campo de confirmação. A máquina que inicia um handshake, que
chamaremos de A, passa seu número de sequência inicial, x, no campo de sequência do
primeiro segmento SYN do handshake de três vias. A segunda máquina, B, recebe o SYN,
registra o número de sequência e responde enviando seu número de sequência inicial no
campo de sequência, além de uma confirmação que especifica que B espera o octeto x+l. Na
mensagem final do handshake, A “confirma” receber de B todos os octetos até y. Em todos
os casos, as confirmações seguem a convenção de usar o número do próximo octeto esperado.
Descrevemos como o TCP normalmente executa o handshake de três vias, trocando
segmentos que contêm uma quantidade mínima de informações. Devido ao projeto do
protocolo, é possível enviar dados junto com os números de sequência iniciais nos segmentos
de handshake. Nesses casos, o TCP precisa manter os dados até que o handshake termine.
Quando uma conexão for estabelecida, o TCP pode liberar dados sendo mantidos e entregálos rapidamente a um programa aplicativo aguardando.
7.19.16 Fechando uma conexão TCP
Dois programas que usam o TCP para se comunicar podem terminar a conversação de
modo controlado usando a operação close. Internamente, o TCP usa um handshake de três
vias modificado para fechar as conexões. Lembre-se de que as conexões do TCP são full
duplex e que as vemos como contendo duas transferências de fluxo independentes, cada uma
em uma direção. Quando um programa aplicativo diz ao TCP que não possui mais dados
para enviar, o TCP fecha a conexão em uma direção. Para fechar sua metade de uma conexão,
o TCP de envio termina de transmitir os dados restantes, espera que o receptor confirme e
depois envia um segmento com o bit FIN marcado. O TCP receptor confirma o segmento
FIN e informa ao programa aplicativo em sua extremidade que não há mais dados disponíveis
(por exemplo, usando o mecanismo de fim de arquivo do sistema operacional).
Quando uma conexão tiver sido fechada em determinada direção, o TCP se recusa a
aceitar mais dados para essa direção. Nesse meio tempo, os dados podem continuar a fluir
na direção oposta até que o emissor a feche. Naturalmente, as confirmações continuam a
fluir de volta ao emissor, mesmo depois que uma conexão tiver sido fechada. Quando as
duas direções tiverem sido fechadas, o TCP em cada extremidade exclui seu registro da
conexão.
Os detalhes do fechamento de uma conexão são ainda mais sutis do que o sugerido
antes, pois o TCP usa um handshake de três vias modificado para fechar uma conexão. A
Figura 7.55 ilustra o procedimento.
168
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura 7.55 – O handshake de três vias modificado usado para fechar conexões.
A diferença entre os handshakes de três vias usados para estabelecer e interromper
conexões ocorre depois que uma máquina recebe o segmento FIN inicial. Em vez de gerar
um segundo segmento FIN imediatamente, o TCP envia uma confirmação e depois informa
à aplicação quanto à requisição para encerrar. Pode ser necessário muito tempo para informar
ao programa aplicativo quanto à requisição e obter uma resposta (por exemplo, isso pode
envolver interação humana). A confirmação impede a retransmissão do segmento FIN inicial
durante a espera. Finalmente, quando o programa aplicativo instrui o TCP a encerrar a
conexão completamente, o TCP envia o segundo segmento FIN, e o site original responde
com a terceira mensagem, um ACK.
7.19.17 Reinício da conexão TCP
Normalmente, um programa aplicativo usa a operação close para encerrar uma conexão
quando termina de usá-la. Assim, fechar conexões é considerado uma parte normal do uso,
semelhante a fechar arquivos. Às vezes, surgem condições anormais que forçam um
programa aplicativo ou o software da rede a interromper uma conexão. O TCP oferece uma
facilidade de reset para essas desconexões anormais.
Para reiniciar uma conexão, um lado inicia o término enviando um segmento com o bit
RST no campo CÓDIGO marcado. O outro lado responde a um segmento de reset
imediatamente, abortando a conexão. O TCP também informa ao programa aplicativo que
houve um reset. Um reset é um aborto instantâneo, que significa que a transferência nas duas
direções termina imediatamente e que recursos como buffers são liberados.
7.19.18 Números de porta TCP reservados
Assim como UDP, o TCP combina o vínculo de porta estático e dinâmico, usando um
conjunto de atribuições de porta bem conhecidas para programas comumente invocados (por
exemplo, correio eletrônico), mas omitindo a maioria dos números de porta disponíveis para
o sistema operacional, para serem alocados quando os programas precisarem deles. Agora,
existem muitas portas bem conhecidas. Originalmente, os números de porta bem conhecida
eram pequenos, mas algumas portas acima de 1.024 agora já foram atribuídas (em sistemas
UNIX, as primeiras 1.023 portas são consideradas privilegiadas e só estão disponíveis a
programas privilegiados). A Tabela 7.13 lista algumas das portas TCP atualmente atribuídas.
Devemos explicar que, embora os números de porta TCP e UDP sejam independentes, os
projetistas escolheram usar os mesmos números de porta inteiros para qualquer serviço que
169
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
seja acessível por UDP e TCP. Por exemplo, um servidor de nome de domínio pode ser
acessado com TCP ou com UDP. Em qualquer um desses protocolos, o número de porta 53
foi reservado para servidores no sistema de nome de domínio (Domains Name System –
DNS).
7.19.19 Desempenho do TCP
Como vimos, o TCP é um protocolo complexo, que lida com a comunicação por uma
grande variedade de tecnologias de rede subjacentes. Muitas pessoas consideram que, como
o TCP trata de uma tarefa muito mais complexa do que outros protocolos de transporte, o
código precisa ser desajeitado e ineficaz. Surpreendentemente, a generalidade que
discutimos parece não atrapalhar o desempenho do TCP. As experiências em Berkeley
mostraram que o mesmo TCP que opera de forma eficiente pela Internet global pode entregar
8 Mbps de throughput sustentado de dados do usuário entre duas estações de trabalho em
uma Ethernet a 10 Mbps1. Na Cray Research, Inc., os pesquisadores demonstraram um
throughput TCP aproximando-se de 1 Gbps.
1
Cabeçalhos Ethernet, IP e TCP e a lacuna entre pacotes exigida são responsáveis pela largura de banda restante.
170
Apostila de Fundamentos de Redes de Computadores
Decimal
0
7
9
11
13
15
17
19
20
21
22
23
25
37
53
67
79
80
88
110
111
119
123
143
161
443
465
515
873
993
995
1080
Palavra-Chave
–
ECHO
DISCARD
USERS
DAYTIME
NETSAT
QUOTE
CHARGEN
FTP-DATA
FTP
SSH
TELNET
SMTP
TIME
DOMAIN
BOOTPS
FINGER
WWW
KERBEROS
POP3
SUNRPC
NNTP
NTC
IMAP
SNMP
HTTPS
SMTPS
SPOOLER
RSYNC
IMAPS
POP3S
SOCKS
Prof: Ricardo Quintão
Descrição
Reservado
Eco
Descarte
Usuários ativos
Hora do dia
Programa de status da rede
Citação do dia
Gerador de caracteres
File Transfer Protocol (dados)
File Transfer Protocol (controle)
Secure Shell
Conexão de terminal
Simple Mail Transport Protocol
Hora
Domain Name Server
Servidor BOOTP ou DHCP
Finger
World Wide Web Server
Serviço de segurança Kerberos
Post Office Protocol versão 3
Sun Remote Procedure Call
USENET News Transfer Protocol
Network Time Protocol
Internet Message Access Protocol
Simple Network Management Protocol
http seguro
SMTP over SSL (TLS)
Spooler LPR
Protocolo Rsync
IMAP seguro
POP3 seguro
Protocolo servidor de Proxy
Tabela 7.13 – Exemplos de números de porta TCP.
171
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Serviços e Tecnologias Web
8.1
Atribuição Dinâmica de Endereços
8.1.1
BOOTP
O ARP resolve o problema de encontrar um endereço Ethernet que corresponda a um
determinado endereço IP. Às vezes, é necessário resolver o problema inverso: qual é o
endereço IP correspondente a um endereço Ethernet? Isso ocorre especificamente quando
uma estação de trabalho sem disco é inicializada. Em geral, essa máquina obterá a imagem
binária de seu sistema operacional a partir de um servidor de arquivos remoto. No entanto,
como ela descobrirá seu endereço IP?
A primeira solução imaginada foi usar o RARP – Reverse Address Resolution Protocol
(definido na RFC 903). Esse protocolo permite que uma estação de trabalho recém
inicializada transmita seu endereço Ethernet e informe: meu endereço Ethernet de 48 bits é
14–04–05–18–01–25. Alguém conhece meu endereço IP? O servidor RARP vê essa
solicitação, procura o endereço Ethernet em seus arquivos de configuração e envia de volta
o endereço IP correspondente.
O uso do RARP é melhor que a inclusão de um endereço IP na imagem de memória,
porque permite que a mesma imagem seja usada em todas as máquinas. Se o endereço IP
fosse embutido na imagem, cada estação de trabalho precisaria ter sua própria imagem.
Uma desvantagem do RARP é que ele utiliza um endereço de destino composto
somente por valores 1 (broadcast limitado) para chegar ao servidor RARP. Entretanto, essas
difusões não são encaminhadas pelos roteadores; portanto, é necessário um servidor RARP
em cada rede. Para resolver esse problema, foi criado um protocolo de inicialização
alternativo, chamado BOOTP. Diferente do RARP, o BOOTP utiliza mensagens UDP, que
são encaminhadas pelos roteadores. O BOOTP também fornece informações adicionais a
uma estação de trabalho sem disco, inclusive o endereço IP do servidor de arquivos que
contém a imagem de memória, o endereço IP do roteador padrão e a máscara de subrede a
ser usada. O BOOTP é descrito nas RFCs 951, 1048 e 1084.
Um problema sério com o BOOTP é que ele exige configuração manual de tabelas que
mapeiam endereços IP para endereços Ethernet. Quando um novo host é adicionado a uma
LAN, ele não pode usar o BOOTP enquanto um administrador não tiver atribuído a ele um
endereço IP e inserido manualmente seu par (endereço Ethernet, endereço IP) nas tabelas de
configuração do BOOTP. Para eliminar essa etapa propensa a erros, o BOOTP foi ampliado
e recebeu um novo nome, DHCP (Dynamic Host Configuration Protocol). O DHCP permite
a atribuição manual e a atribuição automática de endereços IP. Ele é descrito nas RFCs 2131
e 2132. Na maioria dos sistemas, o DHCP substituiu em grande parte o RARP e o BOOTP.
Como hoje se usa basicamente o DHCP, a seção 8.1.2 detalha o seu funcionamento.
8.1.2
DHCP
Esta seção mostra como o modelo cliente-servidor é usado para bootstrapping. Cada
computador anexado a uma rede TCP/IP precisa obter um endereço IP e a máscara de
endereço associada para a rede, bem como outras informações, incluindo os endereços de um
roteador e um nome de servidor. Esta seção descreve um protocolo que permite que um host
determine as informações automaticamente na inicialização. Essa inicialização automática é
172
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
importante porque permite que um usuário conecte um computador à Internet sem conhecer
os detalhes dos endereços, máscaras, roteadores ou como configurar o protocolo.
O procedimento de bootstrapping descrito aqui é surpreendente porque usa o UDP para
transferir mensagens. Pode parecer impossível usar UDP para encontrar um endereço, pois
cada mensagem UDP é enviada em um modelo IP. Entretanto, veremos que os endereços IP
especiais mencionados anteriormente o tornam possível.
O protocolo RARP foi inicialmente desenvolvido para permitir que um computador
obtenha um endereço IP. Um protocolo mais geral chamado BOOTstrap Protocol (BOOTP)
posteriormente substituiu o RARP. Finalmente, o Dynamic Host Configuration Protocol
(DHCP) foi desenvolvido como um sucessor para o BOOTP. Como o DHCP é um sucessor
do BOOTP, a descrição nesta seção geralmente se aplica a ambos.
Como usa o UDP e IP, o DHCP pode ser implementado por um programa aplicativo.
Assim como outros protocolos de aplicação, o DHCP segue o modelo cliente-servidor; o
protocolo exige apenas uma única troca de pacotes em que um computador envia um pacote
para requisitar informações de bootstrap e um servidor responde enviando um único pacote
que especifica itens necessários na partida, incluindo o endereço IP do computador, o
endereço de um roteador e o endereço de um nome de servidor. O DHCP também inclui um
campo opções na resposta que permite que os fornecedores enviem informações adicionais
usadas apenas para seus computadores.
8.1.2.1
Usando IP para determinar um endereço IP
Dissemos que o DHCP utiliza UDP para transportar mensagens, e que mensagens
UDP são encapsuladas em datagramas IP para distribuição. Para entender como um
computador pode enviar DHCP em um datagrama IP antes de aprender seu endereço
IP, lembre-se, de que existem vários endereços IP de uso especial. Particularmente,
quando usado como um endereço de destino, o endereço IP consistindo de todos os bits
em 1 (255.255.255.255) especifica broadcast limitado. O IP pode aceitar e difundir
datagramas que especificam o endereço de broadcast limitado mesmo antes que o
software tenha descoberto suas informações de endereço IP locais. A questão é que um
programa aplicativo pode usar o endereço IP de broadcast limitado para obrigar o IP a
difundir um datagrama na rede local antes que o IP tenha descoberto o endereço IP da
rede local ou o endereço IP da máquina.
Suponha que uma máquina cliente A queira usar o DHCP para encontrar
informações de boostrap (incluindo seu endereço IP) e suponha que B seja o servidor
na mesma rede física que responderá à requisição. Como A não sabe o endereço IP de
B ou o endereço IP da rede, ele precisa difundir sua requisição DHCP inicial usando o
endereço IP de broadcast limitado. E quanto à resposta? B pode enviar uma resposta
direcionada? Não, embora ele conheça o endereço IP de A. Para ver por quê, considere
o que acontece se um programa aplicativo em B tentar enviar um datagrama usando o
endereço IP de A. Após rotear o datagrama, o IP em B passará o datagrama para o
software de interface de rede. O software de interface precisa mapear o endereço IP do
próximo salto para um endereço de hardware correspondente, presumivelmente usando
o ARP, como descrito, na seção 7.13.4. Entretanto, como A ainda não recebeu a resposta
DHCP, ele não reconhece seu endereço IP e, portanto, não pode responder à requisição
ARP de B. Assim, B tem apenas duas alternativas: difundir a resposta ou usar
informações do pacote de requisição para acrescentar manualmente uma entrada ao seu
cache ARP. Em sistemas que não permitem que programas aplicativos modifiquem o
cache ARP, o broadcasting é a única solução.
173
Apostila de Fundamentos de Redes de Computadores
8.1.2.2
Prof: Ricardo Quintão
A política de retransmissão do DHCP
O DHCP coloca toda a responsabilidade da comunicação segura no cliente.
Sabemos que, como o UDP usa IP para distribuição, as mensagens podem ser retardadas,
perdidas, distribuídas fora de ordem ou duplicadas. Além disso, como o IP não fornece
um checksum para os dados, o datagrama UDP poderia chegar com alguns bits
danificados. Para se prevenir de danos, o DHCP exige que o UDP use checksums. Ele
também especifica que as requisições e respostas devem ser enviadas com o bit não
fragmentar definido para acomodar clientes que têm muito pouca memória para
remontar datagramas. O DHCP, também é construído para permitir múltiplas respostas;
ele aceita e processa a primeira.
Para tratar a perda de datagramas, o DHCP usa a técnica convencional do timeout
e retransmissão. Quando o cliente transmite uma requisição, ele inicia um timer. Se
nenhuma resposta chegar antes que o timer expire, o cliente precisa retransmitir a
requisição. É claro, após uma interrupção de energia, todas as máquinas em uma rede
reiniciarão simultaneamente, possivelmente enchendo o servidor ou servidores DHCP
com requisições. Se todos os clientes usarem exatamente o mesmo timeout de
retransmissão, muitos ou todos eles tentarão retransmitir simultaneamente. Para evitar
as colisões resultantes, a especificação do DHCP recomenda usar um retardo aleatório.
Além disso, a especificação recomenda iniciar com um valor de timeout aleatório entre
0 e 4 segundos, e dobrar o timer após cada retransmissão. Após o timer atingir um valor
alto, 60 segundos, o cliente não aumenta o timer, mas continua a usar a aleatoriedade.
Dobrar o timeout após cada retransmissão evita que o DHCP acrescente tráfego
excessivo a uma rede congestionada; a aleatoriedade ajuda a evitar transmissões
simultâneas.
8.1.2.3
O formato de mensagem DHCP
Para manter uma implementação o mais simples possível, as mensagens DHCP
possuem campos de tamanho fixo, e as respostas têm o mesmo formato das requisições.
Embora tenhamos dito que clientes e servidores são programas, o protocolo DHCP usa
os termos livremente, referindo-se à máquina que envia a requisição DHCP como o
cliente e qualquer máquina que envia uma resposta como servidor. A Figura 8.1 mostra
o formato de mensagem DHCP.
O campo OP especifica se a mensagem é uma requisição (1) ou uma resposta (2).
Como no ARP, os campos TIPO_H e TAM_H especificam o tipo de hardware de rede
e o tamanho do endereço de hardware (por exemplo, Ethernet tem tipo 1 e o tamanho
de endereço 6). O cliente coloca 0 no campo SALTOS. Se receber a requisição e decidir
passar a requisição para outra máquina (por exemplo, para permitir o boostrapping
através de múltiplos roteadores), o servidor DHCP incrementa a contagem de SALTOS.
O campo ID DA TRANSAÇÃO contém um inteiro que o cliente usa para adequar as
respostas às requisições. O campo SEGUNDOS informa o número de segundos desde
que o cliente inicializou.
O campo ENDEREÇO IP DO CLIENTE e todos os campos que o seguem contêm
as informações mais importantes. Para permitir a maior flexibilidade, os clientes
preenchem o máximo de informações que eles conhecem e deixam os campos restantes
definidos em zero. Por exemplo, se um cliente sabe o nome ou endereço de um servidor
específico do qual queira informações, ele pode preencher os campos ENDEREÇO IP
DO SERVIDOR ou NOME DO HOST SERVIDOR. Se esses campos forem não zero,
apenas o servidor com nome/endereço correspondentes responderá à requisição; se eles
forem zero, qualquer servidor que receba a requisição responderá.
174
Apostila de Fundamentos de Redes de Computadores
0
8
OP
Prof: Ricardo Quintão
16
24
TIPO_H
TAM_H
ID DA TRANSAÇÃO
SEGUNDOS
31
SALTOS
FLAGS
ENDEREÇO IP DO CLIENTE
SEU ENDEREÇO IP
ENDEREÇO IP DO SERVIDOR
ENDEREÇO IP DO ROTEADOR
ENDEREÇO DE HARDWARE DO CLIENTE (16 OCTETOS)
...
NOME DO HOST SERVIDOR (64 OCTETOS)
...
NOME DO ARQUIVO DE BOOT (128 OCTETOS)
...
OPÇÕES (VARIÁVEL)
...
Figura 8.1 – Formato de uma mensagem DHCP.
O DHCP pode ser usado através de um cliente que já conheça seu endereço IP (ou
seja, para obter outras informações). Um cliente que conhece o endereço IP o coloca no
campo ENDEREÇO IP DO CLIENTE; outros clientes usam zero. Se o endereço IP do
cliente for zero na requisição, um servidor retorna o endereço IP do cliente no campo
SEU ENDEREÇO IP.
O campo FLAG de 16 bits permite o controle da requisição e resposta. Como a
Figura 8.2 mostra, um significado apenas é atribuído ao bit de ordem superior do campo
FLAGS.
0
B
15
PRECISA SER ZERO
Figura 8.2 – Formato do campo FLAGs de 16 bits do DHCP.
Um cliente usa o bit de ordem superior no campo FLAGS para controlar se o
servidor envia a resposta via unicast ou broadcast. Para entender por que um cliente
poderia escolher uma resposta de broadcast, lembre-se de que, embora se comunique
com um servidor DHCP, um cliente ainda não tem um endereço IP, o que significa que
o cliente não pode responder a consultas ARP. Portanto, para garantir que o cliente
possa receber mensagens enviadas por um servidor DHCP, um cliente pode requisitar
que o servidor envie respostas usando broadcast IP, que corresponde ao broadcast de
hardware. As regras para o processamento de datagrama permitem que o IP descarte
qualquer datagrama que chegue via unicast de hardware se o endereço de destino não
corresponder ao endereço do computador. Entretanto, o IP precisa aceitar e tratar
qualquer datagrama enviado para o endereço de broadcast IP.
Interessantemente, o DHCP não provê espaço na mensagem para baixar uma
imagem de memória específica para um sistema incorporado. Em vez disso, o DHCP
fornece um campo NOME DE ARQUIVO DE BOOT que um pequeno sistema sem disco
pode usar. O cliente pode usar o campo para fornecer um nome genérico como “Unix”,
que significa “quero inicializar o sistema operacional UNIX para esta máquina”. O
servidor DHCP consulta seu banco de dados de configuração a fim de mapear o nome
genérico para um nome de arquivo específico que contém a imagem de memória
175
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
apropriada para o hardware de cliente e retorna o nome de arquivo totalmente
qualificado em sua resposta. É claro, o banco de dados de configuração também permite
bootstrapping completamente automático, em que o cliente coloca zeros no campo
NOME DO ARQUIVO DE BOOT, e o DHCP seleciona uma imagem de memória para
a máquina. O cliente, então, usa um protocolo de transferência de arquivo padrão, como
o TFTP, para obter a imagem. A vantagem do método é que um cliente sem disco pode
usar um nome genérico sem codificar um arquivo específico e o gerente de rede pode
mudar o local de uma imagem de inicialização sem mudar a ROM nos sistemas
incorporados.
Todos os itens na área OPÇÕES usam uma codificação de estilo Tipo-TamanhoValor (TTV) – cada item contém um octeto de tipo, um octeto de tamanho e termina
com um valor do tamanho especificado.
8.1.2.4
A necessidade da configuração dinâmica
Os primeiros protocolos de bootstrap operavam em um ambiente relativamente
estático em que cada host tinha uma conexão de rede permanente. Um gerente criava
um arquivo de configuração que especificava um conjunto de parâmetros para cada host,
incluindo um endereço IP. O arquivo não mudava frequentemente porque a
configuração normalmente permanecia estável.
Em geral, uma configuração
permanecia inalterada por semanas.
Na Internet moderna, porém, os provedores de serviço possuem um conjunto de
clientes que muda continuamente, e os computadores laptop portáteis com conexões sem
fio possibilitam mover um computador de um local para outro de maneira rápida e fácil.
Para tratar a atribuição de endereço automatizada, o DHCP permite que um computador
obtenha um endereço IP rápido e dinamicamente. Ou seja, ao configurar um servidor
DHCP, um gerente fornece um conjunto de endereços IP. Sempre que um novo
computador se conecta a uma rede, ele contata o servidor e requisita um endereço. O
servidor escolhe um dos endereços do conjunto que o gerente especificou e aloca o
endereço para o computador.
Para ser completamente geral, o DHCP permite três tipos de atribuição de
endereço; um gerente escolhe como o DHCP responderá para cada rede ou cada host.
Como seu predecessor, BOOTP, o DHCP permite configuração manual em que um
gerente configura um endereço específico para um computador específico. O DHCP
também tem uma forma de configuração automática, ou autoconfiguração, em que um
gerente permite que um servidor DHCP atribua um endereço permanente assim que um
computador se conecta a uma rede. Finalmente, o DHCP permite completamente a
configuração dinâmica, em que um servidor “aluga” um endereço para um computador
por um tempo limitado. A atribuição de endereço dinâmica é o aspecto mais poderoso
e novo do DHCP.
O DHCP usa a identidade do cliente e os arquivos de configuração do servidor
para decidir como proceder. Quando um cliente contata um servidor DHCP, o cliente
envia um identificador, normalmente o endereço de hardware do cliente. O servidor
usa o identificador do cliente e a rede à qual o cliente se conectou para determinar como
atribuir ao cliente o endereço IP. Portanto, um gerente possui controle completo sobre
como os endereços são atribuídos. Um servidor pode ser configurado no sentido de
alocar endereços para computadores específicos estaticamente, enquanto permite que
outros computadores obtenham endereços permanentes ou temporários dinamicamente.
176
Apostila de Fundamentos de Redes de Computadores
8.1.2.5
Prof: Ricardo Quintão
Conceito de aluguel do DHCP
A atribuição de endereço dinâmica é temporária. Dizemos que um servidor DHCP
aluga um endereço para um cliente por um período finito de tempo. O servidor
especifica o período de aluguel quando ele aloca o endereço. Durante o período de
aluguel, o servidor não alugará o mesmo endereço para outro cliente. No fim do período,
entretanto, o cliente precisa renovar o aluguel ou parar de usar o endereço.
Quanto tempo deve durar um aluguel de DHCP? O tempo ideal depende da rede
específica e das necessidades de um host em particular. Por exemplo, para garantir que
endereços possam ser reciclados rapidamente, os computadores em uma rede usada por
alunos em um laboratório universitário podem usar um curto período de aluguel (por
exemplo, uma hora). Por outro lado, uma rede corporativa pode usar um período de
aluguel de um dia ou uma semana. Um ISP poderia fazer a duração de um aluguel
depender do contrato de um cliente. Para acomodar todos os ambientes possíveis, o
DHCP não especifica uma constante fixa para o período de aluguel. Em vez disso, o
protocolo permite que um cliente requisite um período de aluguel específico e permite
que um servidor informe ao cliente o período de aluguel que ele concede. Portanto, um
gerente pode decidir quanto tempo cada servidor deve alocar um endereço para um
cliente. No outro extremo, o DHCP reserva um valor infinito para permitir que um
aluguel dure um período arbitrariamente longo (ou seja, para tornar uma atribuição de
endereço permanente).
8.2
NAT
Foi criada uma tecnologia que resolve o problema geral de fornecer acesso em nível de IP
entre hosts em um site e o restante da Internet, sem exigir que cada host no site tenha um endereço
IP globalmente válido. Conhecida como Network Address Translation (NAT), a tecnologia
requer que um site tenha uma única conexão com a Internet global e, pelo menos, um endereço
IP globalmente válido, G. O endereço G é atribuído a um computador (um host multi-homed ou
um roteador) que conecta o site com a Internet e executa o software NAT. Informalmente, nos
referimos a um computador que executa o NAT como uma caixa NAT; todos os datagramas
atravessam a caixa NAT enquanto viajam do site para a Internet ou da Internet para o site.
O NAT traduz os endereços nos datagramas que saem e que entram substituindo o endereço
de origem em cada datagrama que entra com o endereço privado do host correto. Portanto, do
ponto de vista de um host externo, todos os datagramas vêm da caixa NAT, e todas as respostas
retornam à caixa NAT. Da visão dos hosts internos, a caixa NAT parece ser um roteador que
pode alcançar a Internet global.
A principal vantagem do NAT surge de sua combinação de generalidade e transparência. O
NAT é mais geral do que os gateways de aplicação porque permite que um host interno qualquer
acesse um serviço qualquer em um computador na Internet. O NAT é transparente porque permite
que um host interno envie e receba datagramas usando um endereço privado (ou seja, não
roteável).
8.2.1
Criação da tabela de tradução NAT
Nosso resumo do NAT omite um detalhe importante porque não especifica como o
NAT sabe que host interno deve receber um datagrama que chega da Internet. Na verdade,
o NAT mantém uma tabela de tradução que usa para realizar o mapeamento. Cada entrada
na tabela especifica dois itens: o endereço IP de um host na Internet e o endereço IP interno
de um host no site. Quando um datagrama chega da Internet, o NAT consulta o endereço de
destino do datagrama na tabela de tradução, extrai o endereço correspondente de um host
177
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
interno, extrai o endereço correspondente de um host interno, substitui o endereço de destino
do datagrama pelo endereço do host e encaminha o datagrama pela rede local até o host1.
A tabela de tradução NAT precisa estar pronta antes de um datagrama chegar da
Internet. Caso contrário, o NAT não tem como identificar o host interno correto para o qual
o datagrama deve ser encaminhado. Como e quando a tabela é inicializada? Há várias
possibilidades:

Inicialização manual: um gerente configura a tabela de tradução manualmente
antes que qualquer comunicação ocorra.

Datagramas de saída: a tabela é construída como um efeito colateral de um host
interno enviando um datagrama. O NAT usa o datagrama de saída para criar uma
entrada da tabela de tradução que registra os endereços de origem e destino.

Consultas de nome de entrada: a tabela é construída como um efeito colateral de
manipular consultas de nome de domínio. Quando um host na Internet consulta o
nome de domínio de um host interno, o DNS envia o endereço G como resposta e,
depois, cria uma entrada na tabela de tradução NAT para encaminhar datagramas
que chegam para o host interno correto.
Cada técnica de inicialização apresenta vantagens e desvantagens. A inicialização
manual fornece mapeamentos permanentes e permite que datagramas IP sejam enviados em
qualquer direção a qualquer hora. Usar um datagrama de saída para inicializar a tabela tem
a vantagem de ser automático, mas não permite que a comunicação seja iniciada de fora.
Usar consultas de nome de domínio que entra exige modificar o software de nome de
domínio. Isso acomoda a comunicação iniciada de fora do site, mas funciona apenas se o
emissor realizar uma consulta de nome de domínio antes de enviar datagramas.
A maioria das implementações do NAT usa datagramas de saída para inicializar a
tabela; a estratégia é especialmente popular entre os ISPs. Para entender o porquê, considere
um pequeno ISP que serve clientes com conexão discada. A Figura 8.3 ilustra a arquitetura.
Figura 8.3 – O uso de um NAT por um pequeno ISP.
O ISP precisa atribuir um endereço IP a um cliente sempre que o cliente disca. O NAT
permite que o ISP atribua um endereço privado (por exemplo, 10.0.0.1 é atribuído ao primeiro
cliente, 10.0.0.2 ao segundo e assim por diante). Quando um cliente envia um datagrama a
um destino na Internet, o NAT usa o datagrama de saída para inicializar sua tabela de
tradução.
8.2.2
NAT multiendereço
Até agora, descrevemos uma implementação simplista do NAT que realiza um
mapeamento de endereço um-para-um entre um endereço externo e um endereço interno. Ou
1
Sempre que substitui um endereço em um cabeçalho de datagrama, o NAT recalcula o checksum do cabeçalho.
178
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
seja, um mapeamento um-para-um permite que no máximo um computador no site possa
acessar uma determinada máquina na Internet a qualquer hora. Na prática, são usadas formas
mais complexas do NAT que permitem que hosts em um site acessem um determinado
endereço externo concorrentemente.
Uma variação do NAT permite concorrência conservando o mapeamento um-para-um,
mas permitindo que a caixa NAT armazene múltiplos endereços da Internet. Conhecido
como NAT multiendereço, o esquema atribui à caixa NAT um conjunto de K endereços
globalmente válidos, G1, G2, ... , Gk. Quando o primeiro host interno acessa um determinado
destino, a caixa NAT escolhe o endereço G1, acrescenta uma entrada à tabela de tradução e
envia o datagrama. Se outro host iniciar contato com o mesmo destino, a caixa NAT escolhe
o endereço G2, e assim por diante. Portanto, o NAT multiendereço permite que até K hosts
acessem um determinado destino concorrentemente.
8.2.3
NAT mapeado em porta
Outra variante popular do NAT fornece concorrência traduzindo números de porta de
protocolo TCP ou UDP, bem como endereços. Algumas vezes chamado Network Address
Port Translation (NAPT), o esquema expande a tabela de tradução NAT para incluir campos
adicionais. Além de um par de endereços IP de origem e destino, a tabela contém um par de
números de porta de protocolo de origem e de destino e um número de porta de protocolo
usado pela caixa NAT. A Tabela 8.1 ilustra o conteúdo da tabela.
Endereço
Privado
10.0.0.5
10.0.0.1
10.0.2.6
10.0.0.3
Porta
Privada
21.023
386
26.600
1.274
Endereço
Externo
128.10.19.20
128.10.19.20
207.200.75.200
128.210.1.5
Porta
Externa
80
80
21
80
Porta NAT
14.003
14.010
14.012
14.007
Protocolo
usado
Tcp
Tcp
Tcp
Tcp
Tabela 8.1 – Um exemplo de uma tabela de tradução usada pelo NAPT.
A Tabela 8.1 possui entradas para quatro computadores internos que estão atualmente
acessando destinos na Internet global. Toda a comunicação está usando TCP. É interessante
que a tabela mostra dois hosts internos, 10.0.0.5 e 10.0.0.1, ambos acessando a porta de
protocolo 80 (um servidor Web) no computador 128.10.19.20. Nesse caso, ocorre que as
duas portas de origem sendo usadas para as duas conexões diferem. Entretanto, a
exclusividade da porta de origem não pode ser garantida, poderia acontecer que dois hosts
internos escolhessem o mesmo número de porta de origem. Assim, para evitar possíveis
conflitos, o NAT atribui um número de porta único a cada comunicação que é usada na
Internet. Lembre-se de que o TCP identifica cada conexão com uma tupla de 4 entradas que
representa o endereço IP e o número de porta de protocolo de cada extremidade. Os dois
primeiros itens na tabela correspondem a conexões TCP que os dois hosts internos
identificam com as tuplas de 4:
(10.0.0.5, 21023, 128.10.19.20, 80)
(10.0.0.1, 386, 128.10.19.20, 80)
Entretanto, o computador na Internet que recebe os datagramas após o NAPT realizar
a tradução identifica as mesmas duas conexões com as tuplas de 4 entradas:
(G, 14003, 128.10.19.20, 80)
(G, 14010, 128.10.19.20, 80)
179
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
onde G é o endereço globalmente válido da caixa NAT.
A principal vantagem do NAPT reside na generalidade que ele consegue com um único
endereço IP globalmente válido; a maior desvantagem surge porque ele restringe a
comunicação ao TCP ou ao UDP. Como toda comunicação usa TCP ou UDP, o NAPT
permite que um computador interno acesse vários computadores externos, e vários
computadores internos acessem o mesmo computador externo sem interferência. Um espaço
de porta de 16 bits permite que até 216 pares de aplicações se comuniquem ao mesmo tempo.
8.2.4
Interação entre NAT e ICMP
Mesmo mudanças simples em um endereço IP podem causar resultados inesperados
nos protocolos de camada mais alta. Em especial, para manter a ilusão de transparência, o
NAT precisa manipular o ICMP. Por exemplo, suponha que um host interno use o ping para
testar a acessibilidade de um destino na Internet. O host espera receber uma mensagem ICMP
echo reply para cada mensagem echo request que ele envia. Portanto, o NAT precisa
encaminhar as respostas de eco para o host correto. Entretanto, o NAT não encaminha todas
as mensagens ICMP que chegam da Internet. Se os roteadores na caixa NAT estiverem
incorretos, por exemplo, uma mensagem ICMP redirect precisará ser processada localmente.
Assim, quando uma mensagem ICMP chega da Internet, o NAT precisa primeiro determinar
se a mensagem deve ser manipulada localmente ou enviada para um host interno. Antes de
encaminhar para um host interno, o NAT traduz a mensagem ICMP.
Para entender a necessidade da tradução ICMP, considere uma mensagem ICMP
destino inalcançável (destination unreachable). A mensagem contém o cabeçalho de um
datagrama, D, que causou o erro. Infelizmente, o NAT traduziu endereços antes de enviar
D, de modo que o endereço de origem não é o endereço que o host interno usou. Portanto,
antes de encaminhar a mensagem, o NAT precisa abrir a mensagem ICMP e traduzir os
endereços em D de modo que apareçam exatamente na forma que o host interno usou. Após
efetuar a mudança, o NAT precisa recalcular o checksum em D, o checksum no cabeçalho
ICMP e o checksum no cabeçalho de datagrama externo.
8.2.5
Interação entre NAT e aplicações
Embora o ICMP torne o NAT complexo, os protocolos de aplicação têm um efeito mais
sério. Em geral, o NAT não funcionará com qualquer aplicação que envie endereços IP ou
portas de protocolo como dados. Por exemplo, quando dois programas usam o File Transfer
Protocol (FTP), eles têm uma conexão TCP entre si. Como parte do protocolo, um programa
obtém uma porta de protocolo na máquina local, converte o número para ASCII e envia o
resultado através de uma conexão TCP para outro programa. Se a conexão entre os
programas atravessar o NAPT de um host interno para um host na Internet, o número de porta
no fluxo de dados precisa ser alterado para estar de acordo com o número de porta que o
NAPT selecionou em vez da porta que o host interno está usando. Na verdade, se o NAT
falhar em abrir o fluxo de dados e mudar o número, o protocolo falhará. Foram criadas
implementações do NAT que reconhecem protocolos populares, como o FTP, e fazem a
mudança necessária no fluxo de dados; além disso, foram criadas variantes de aplicações que
evitam a formação de conexões na direção inversa. Entretanto, é possível definir uma
aplicação que não opere através do NAT.
Mudar itens em um fluxo de dados aumenta a complexidade do NAPT de duas
maneiras. Primeiro, isso significa que o NATP precisa ter conhecimento detalhado de cada
aplicação que transfere essas informações. Segundo, se os números de porta forem
representados no ASCII, como no caso do FTP, mudar o valor pode mudar o número de
octetos transferidos. Inserir mesmo um octeto adicional em uma conexão TCP é difícil
180
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
porque cada octeto no fluxo tem um número sequencial. Como um emissor não sabe que
dados adicionais foram inseridos, ele continua a atribuir números sequenciais sem os dados
adicionais. Ao receber dados adicionais, o receptor gera reconhecimentos (acks) que formam
os dados. Portanto, após inserir dados adicionais, o NAT precisa traduzir os números
sequenciais em cada segmento que sai e em cada reconhecimento que entra.
8.2.6
NAT na presença de fragmentação
A descrição do NAT anterior fez uma importante suposição sobre o IP: um sistema
NAT recebe datagramas IP completos e não fragmentos. O que acontece se um datagrama
for fragmentado? Existem duas situações. Para o NAT básico, a fragmentação não
representa um problema porque cada fragmento transporta os endereços de origem e destino
IP. Porém, no caso do NAPT (a variante mais usada do NAT), a consulta de tabela utiliza
números de porta de protocolo do cabeçalho de transporte, bem como endereços IP do
cabeçalho IP. Infelizmente, apenas o primeiro fragmento de um datagrama transporta o
cabeçalho de protocolo de transporte. Assim, antes de realizar a consulta, um sistema NAPT
precisa receber e examinar o primeiro fragmento do datagrama.
Consequentemente, um sistema NAPT pode seguir um de dois projetos: o sistema pode
salvar os fragmentos e tentar remontar o datagrama, ou o sistema pode descartar os
fragmentos e processar apenas datagramas completos. Nenhuma das duas opções é
desejável. A remontagem exige informações de estado, o que significa que o sistema não
pode escalar para alta velocidade ou altos números de fluxos. O descarte de fragmentos
significa que o sistema não processará tráfego arbitrário. Na prática, apenas os sistemas
NAPT que são projetados para redes de baixa velocidade escolhem a remontagem; muitos
sistemas rejeitam datagramas fragmentados.
8.2.7
Domínios de endereço conceituais
Descrevemos o NAT como uma tecnologia que pode ser usada para conectar uma rede
privada à Internet global. Na verdade, o NAT pode ser usado para interconectar quaisquer
dois domínios de endereço. Portanto, o NAT pode ser usado entre duas corporações que
possuem, cada uma, uma rede privada usando o endereço 10.0.0.0. Mais importante, o NAT
pode ser usado em dois níveis: entre os domínios de endereço privado de um cliente e os
domínios de endereço privado de um ISP, bem como entre o domínio de endereço do ISP e
a Internet global. Finalmente, o NAT pode ser combinado com a tecnologia VPN para formar
uma arquitetura híbrida em que endereços privados são usados dentro da organização e o
NAT é usado para fornecer conectividade entre cada site e a Internet.
Como exemplo de múltiplos níveis do NAT, considere um indivíduo que trabalha em
casa com vários computadores que estão conectados a uma LAN. O indivíduo pode atribuir
endereços privados aos computadores em casa e usar o NAT entre a rede doméstica e a
intranet corporativa. A corporação também pode atribuir endereços privados e usar o NAT
entre sua intranet e a Internet global.
8.2.8
Slirp e Iptables
Duas implementações do NAT foram especialmente populares em várias ocasiões; as
duas foram projetadas para o sistema operacional UNIX. O programa slirp, derivado do 4.4
BSD, foi projetado para uso em uma arquitetura discada como a mostrada na Figura 19.4. O
slirp combina PPP e NAT em um único programa. Ele é executado em um computador que
possui: um endereço IP válido, uma conexão permanente com a Internet e um ou mais
modems discados. A maior vantagem do slirp é que ele pode usar uma conta de usuário
comum em um sistema UNIX para acesso à Internet de finalidade geral. Um computador
que tem um endereço privado efetua o logon e executa o slirp. Uma vez iniciado o slirp, a
181
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
linha discada comuta de comandos ASCII para PPP. O computador com acesso discado
inicia o PPP e obtém acesso à Internet (por exemplo, para acessar um Web site).
O slirp implementa o NAPT – ele usa números de porta de protocolo para
demultiplexar conexões, e pode reescrever números de porta de protocolo e também
endereços IP. É possível ter vários computadores (por exemplo, computadores em uma
LAN) acessando a Internet ao mesmo tempo através de uma única ocorrência do slirp
executando em um sistema UNIX.
Outra implementação comum do NAT foi projetada para o sistema operacional Linux.
Conhecido como iptables, o software é uma combinação de ferramentas e suporte de kernel
para reescrita de pacotes e aplicação de firewall. Como o iptables provê inspeção de pacote
com informações de estado, o NAT ou NAPT pode ser formado usando conjuntos específicos
de regras do iptables.
8.3
DNS
Os protocolos descritos anteriormente utilizam inteiros de 32 bits chamados endereços
Internet Protocol (endereços IP) para identificar as máquinas. Embora esses endereços ofereçam
uma representação conveniente e compacta para especificar a origem e o destino nos datagramas
enviados por uma internet, os usuários preferem atribuir às máquinas nomes pronunciáveis,
facilmente lembrados.
Esta seção considera um esquema para atribuir nomes de domínio de alto nível significativos
a um grande conjunto de máquinas, e discute um mecanismo que mapeia entre nomes de máquina
de alto nível e endereços IP. Ele considera a tradução dos nomes de alto nível para endereços IP
e a tradução de endereços IP para nomes de máquina de alto nível. O esquema de nomes é
interessante por dois motivos. Primeiro, ele foi usado para atribuir nomes de máquina pela
Internet. Segundo, por usar um conjunto de servidores geograficamente distribuídos para mapear
nomes a endereços, a implementação do mecanismo de mapeamento de nome oferece um exemplo
em grande escala do paradigma cliente-servidor.
8.3.1
Nomes para máquinas
Os sistemas de computador mais antigos forçavam os usuários a entender os endereços
numéricos para objetos como tabelas do sistema e dispositivos periféricos. Os sistemas de
tempo compartilhado avançaram a computação, permitindo que os usuários inventem nomes
simbólicos significativos para objetos físicos (por exemplo, dispositivos periféricos) e
objetos abstratos (por exemplo, arquivos). Um padrão semelhante surgiu nas redes de
computador. Os primeiros sistemas admitiam conexões ponto-a-ponto entre computadores e
usavam endereços de hardware de baixo nível para especificar as máquinas. A interligação
de redes introduziu o endereçamento universal e também o software de protocolo para
mapear endereços universais em endereços de hardware de baixo nível. Como a maioria dos
ambientes de computação contém várias máquinas, os usuários precisam de nomes
significativos, simbólicos, para identificá-las.
Os primeiros nomes de máquina refletiam o ambiente pequeno em que eram
escolhidos. Era bastante comum que um site com um punhado de máquinas escolhesse
nomes com base nas finalidades das máquinas. Por exemplo, as máquinas normalmente
tinham nomes como contabilidade, desenvolvimento e produção. Os usuários preferem esses
nomes a endereços de hardware complicados.
Embora a distinção entre endereço e nome seja intuitivamente atraente, ela é artificial.
Qualquer nome é simplesmente um identificador que consiste em uma seqüência de
caracteres escolhida de um alfabeto finito. Os nomes só são úteis se o sistema puder mapeá-
182
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
los eficientemente para o objeto que representam. Assim, pensamos em um endereço IP
como um nome de baixo nível e dizemos que os usuários preferem nomes de alto nível para
as máquinas.
O formato dos nomes de alto nível é importante porque determina como os nomes são
traduzidos para nomes de baixo nível ou vinculados a objetos, além de como as atribuições
de nome são autorizadas. Com apenas algumas máquinas, a escolha de nomes é fácil. Cada
administrador pode escolher um nome qualquer e verificar se o nome não está em uso. Por
exemplo, quando seu computador departamental principal foi conectado à Internet em 1980,
o Computer Science Department na Purdue University escolheu o nome purdue para
identificar a máquina conectada. A lista de conflitos em potencial continha apenas algumas
dezenas de nomes. Por volta de 1986, a lista oficial de host na Internet continha 3.100 nomes
oficialmente registrados e 6.500 aliases oficiais. Embora a lista estivesse crescendo
rapidamente na década de 1980, a maioria dos sites tinha máquinas adicionais (por exemplo,
computadores pessoais) que não eram registrados. Na Internet atual, com centenas de
milhões de máquinas, a escolha de nomes simbólicos é muito mais difícil.
8.3.2
Espaço de nomes plano
O conjunto original de nomes de máquina usados pela Internet formou um espaço de
nomes plano, em que cada nome consistia em uma sequência de caracteres sem qualquer
estrutura adicional. No esquema original, um site central, o Network Information Center
(NIC), administrava o namespace e determinava se um novo nome era apropriado (ou seja,
ele proibia nomes obscenos ou nomes novos que entravam em conflito com os nomes
existentes).
A principal vantagem de um espaço de nomes plano é que os nomes são convenientes
e curtos; a principal desvantagem é que um espaço de nomes plano não pode generalizar para
conjuntos grandes de máquinas por motivos técnicos e administrativos. Primeiro, como os
nomes são tirados de um único conjunto de identificadores, o potencial para conflito aumenta
à medida que o número de sites aumenta. Segundo, como a autoridade para acrescentar novos
nomes precisa estar em um único site, a carga de trabalho administrativa nesse site central
também aumenta com o número de sites. Para entender a seriedade do problema, imagine
uma rede de crescimento rápido com milhares de sites, cada um com centenas de
computadores pessoais e estações de trabalho individuais. Toda vez que alguém adquire e
conecta um novo computador pessoal, seu nome precisa ser aprovado pela autoridade central.
Terceiro, como os vínculos entre nome e endereço mudam com frequência, o custo de manter
cópias corretas da lista inteira em cada site é alto e aumenta à medida que o número de sites
cresce. Como alternativa, se o banco de dados de nomes residir em um único site, o tráfego
da rede para esse site aumenta com o número de sites.
8.3.3
Nomes hierárquicos
Como um sistema de nomeação pode acomodar um conjunto de nomes grande e em
expansão rápida sem exigir que um site central o administre? A resposta está na
descentralização do mecanismo de nomes, delegando autoridade para partes do espaço de
nomes e distribuindo a responsabilidade pelo mapeamento entre nomes e endereços. A
Internet utiliza esse esquema. Antes de examinar os detalhes, vamos considerar a motivação
e a intuição por trás disso.
O particionamento de um espaço de nomes precisa ser definido de modo que admita o
mapeamento eficiente de nome e garanta o controle autônomo da atribuição de nomes. A
otimização apenas para mapeamento eficiente pode levar a soluções que retêm um espaço de
nomes plano e reduzem o tráfego dividindo os nomes entre várias máquinas de mapeamento.
183
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
A otimização apenas por facilidade administrativa pode levar a soluções que tornam a
delegação de autoridade fácil, mas o mapeamento de nomes dispendioso ou complexo.
Para entender como o espaço de nomes deve ser dividido, considere a estrutura interna
de grandes organizações. No topo, um diretor executivo tem responsabilidade geral. Como
o diretor não pode supervisionar tudo, a organização pode ser particionada em divisões, com
um executivo encarregado de cada divisão. O diretor executivo concede a cada divisão
autonomia dentro de limites especificados. Mais diretamente ao ponto, o executivo
encarregado de determinada divisão pode contratar ou demitir funcionários, atribuir
escritórios e delegar autoridade, sem pedir autorização direta do diretor executivo.
Além de facilitar a delegação de autoridade, a hierarquia de uma organização grande
apresenta operação autônoma. Por exemplo, quando um trabalhador de escritório precisa de
informações como o número de telefone de um novo funcionário, ele ou ela começa
perguntando aos funcionários administrativos locais (que podem contatar funcionários
administrativos em outras divisões). O ponto é que, embora a autoridade sempre passe para
baixo na hierarquia corporativa, a informação pode fluir pela hierarquia de um escritório para
outro.
8.3.4
Delegação de autoridade para nomes
Um esquema de nomes hierárquico funciona como a administração de uma grande
organização. O espaço de nomes é particionado no nível superior, e a autoridade para nomes
em subdivisões é passada para agentes designados. Por exemplo, alguém poderia decidir
particionar o espaço de nomes com base no nome do site e delegar a cada site
responsabilidade por manter nomes dentro de sua partição. O nível superior da hierarquia
divide o espaço de nomes e delega autoridade para cada divisão; ele não precisa se preocupar
com mudanças dentro de uma divisão.
Em geral, a sintaxe dos nomes atribuídos hierarquicamente reflete a delegação
hierárquica de autoridade usada para atribuí-los. Como exemplo, considere um espaço de
nomes no formato:
local.site
onde o site é o nome do site autorizado pela autoridade central, local é a parte de um nome
controlada pelo site e o ponto (“.”) é um delimitador usado para separá-los. Quando a
autoridade superior aprova a inclusão de um novo site, X, ela acrescenta X à lista de sites
válidos e delega ao site X autoridade para todos os nomes que terminam com “.X”.
8.3.5
Autoridade de subconjunto
Em um espaço de nomes hierárquico, a autoridade pode ser subdividida ainda mais em
cada nível. Em nosso exemplo de partição por sites, o próprio site pode consistir em vários
grupos administrativos, e a autoridade do site pode escolher subdividir seu espaço de nomes
entre os grupos. A ideia é manter a subdivisão do espaço de nomes até que cada subdivisão
seja pequena o suficiente para ser administrável.
Sintaticamente, a subdivisão do espaço de nomes introduz outra partição do nome. Por
exemplo, a inclusão de uma subdivisão de grupo para nomes já particionados por site produz
a seguinte sintaxe de nome:
local.group.site
Como o nível mais alto delega autoridade, os nomes de grupo não precisam combinar
entre todos os sites. Um site de universidade poderia escolher nomes de grupo como
184
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
engenharia, ciência e artes, enquanto um site corporativo poderia escolher nomes de grupo
como produção, contabilidade e pessoal.
O sistema telefônico dos Estados Unidos oferece outro exemplo de sintaxe de nomes
hierárquica. Os dez dígitos de um número de telefone foram particionados em um código de
área de três dígitos, uma central de três dígitos e um número de assinante de quatro dígitos
dentro da central. Cada central tem autoridade para atribuir números de assinante dentro de
sua parte do espaço de nomes. Embora seja possível agrupar assinantes quaisquer em centrais
e agrupar centrais quaisquer em códigos de área, a atribuição de números de telefone não é
caprichosa; eles são cuidadosamente escolhidos para facilitar o roteamento de chamadas
telefônicas pela rede telefônica.
O exemplo de telefone é importante porque ilustra uma distinção básica entre o
esquema de nomes hierárquico usado em uma internet TCP/IP e outras hierarquias: o
particionamento do conjunto de máquinas possuídas por uma organização por linhas de
autoridade não necessariamente implica o particionamento do local físico. Por exemplo,
pode ser que, em alguma universidade, um único prédio acomode o departamento de
matemática e também o departamento de ciência da computação. Pode acontecer até mesmo
que, embora as máquinas desses dois grupos fiquem sob domínios administrativos
completamente separados, elas se conectem à mesma rede física. Também pode acontecer
que um único grupo possua máquinas em várias redes físicas. Por esses motivos, o esquema
de nomes do TCP/IP permite a delegação arbitrária de autoridade para o espaço de nomes
hierárquico sem considerar as conexões físicas.
Naturalmente, em muitos sites, a hierarquia organizacional corresponde à estrutura das
interconexões físicas da rede. Por exemplo, suponha que os computadores em determinado
departamento se conectem à mesma rede. Se o departamento também receber parte da
hierarquia de nomes, todas as máquinas com nomes nessa parte da hierarquia também se
conectarão a uma única rede física.
8.3.6
Internet Domain Names
O Domain Name System (DNS) é o sistema que fornece mapeamento de nome para
endereço para a Internet. O DNS possui dois aspectos conceitualmente independentes. O
primeiro é abstrato: ele especifica a sintaxe de nome e as regras para delegar autoridade sobre
os nomes. O segundo é concreto: ele especifica a implementação de um sistema de
computação distribuído que eficientemente mapeia nomes a endereços. Esta seção considera
a sintaxe de nome, e outras seções examinam a implementação.
O Domain Name System utiliza um esquema de nomes hierárquico conhecido como
nomes de domínio. Assim como em nossos exemplos anteriores, um nome de domínio
consiste em uma sequência de subnomes separados por um caractere delimitador, o ponto.
Em nossos exemplos, dissemos que as seções individuais do nome poderiam representar sites
ou grupos, mas o sistema de nome de domínio simplesmente chama cada seção de label.
Assim, o nome de domínio
cs.purdue.edu
contém três labels: cs, purdue e edu. Qualquer sufixo de um rótulo em um nome de
domínio também é chamado de domínio. Nesse exemplo, o domínio de nível mais baixo é
cs.purdue.edu (o nome de domínio para o Computer Science Department na Purdue
University), o domínio de segundo nível é purdue.edu (o nome de domínio para a Purdue
University), e o domínio de alto nível é edu (o nome de domínio para instituições
educacionais). Como o exemplo mostra, os nomes de domínio são escritos com o rótulo local
185
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
primeiro e o domínio superior por último. Conforme veremos, sua escrita na ordem
possibilita a compactação de mensagens que contêm vários nomes de domínio.
8.3.7
Domínios de nível superior
Conceitualmente, os nomes de nível superior permitem duas hierarquias de nomes
completamente diferentes: geográfica e organizacional. O esquema geográfico divide o
universo de máquinas por país. As máquinas nos Estados Unidos ficam sob o domínio de
nível superior us; quando outro país deseja registrar máquinas no sistema de nome de
domínio, a autoridade central atribui ao país um novo domínio de nível superior com o
identificador de padrão internacional do país com duas letras como seu label. A autoridade
para o domínio US escolheu dividi-lo em um domínio de segundo nível por estado. Por
exemplo, o domínio para o estado de Virginia é
va.us
A Tabela 8.2 lista os nomes de domínio superior.
Nome do Domínio
Significado
aero
arpa
biz
com
coop
edu
gov
info
int
mil
museum
name
net
org
pro
Código do país
Setor de transporte aéreo
Domínio de infra-estrutura
Negócios
Organização comercial
Associações cooperativas
Instituição educacional (4 anos)
Governo dos Estados Unidos
Informação
Organizações de tratado internacional
Militares dos Estados Unidos
Museus
Indivíduos
Principais centros de suporte de rede
Organizações diferentes das citadas
Profissionais credenciados
Cada país (esquema geográfico:br=Brasil; il=Israel; pt=Portugal)
Tabela 8.2 – Os domínios de Internet de nível superior e seus significados.
Como alternativa à hierarquia geográfica, os domínios de alto nível também permitem
que as organizações sejam agrupadas por tipo organizacional. Quando uma organização
deseja participar do sistema de nomes de domínio, ela escolhe como deseja ser registrada e
requisita aprovação. Um registrador de nome de domínio revê a aplicação e atribui um
subdomínio à organização sob um dos domínios existentes de nível superior. O proprietário
de determinado domínio de alto nível pode decidir o que permitir e como particionar o espaço
de nomes ainda mais. Por exemplo, no Reino Unido, que possui o código de país de duas
letras uk, as universidades e outras instituições acadêmicas são registradas sob o domínio
ac.uk.
Um exemplo poderá ajudar a esclarecer o relacionamento entre a hierarquia de nomes
e a autoridade para nomes. Uma máquina chamada xinu no Computer Science Department
da Purdue University tem o nome de domínio oficial
xinu.cs.purdue.edu
186
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
O nome da máquina foi aprovado e registrado pelo administrador da rede local no
Computer Science Department. O administrador do departamento anteriormente obteve
autoridade para o subdomínio cs.purdue.edu por uma autoridade de rede da universidade, que
obteve permissão para administrar o subdomínio purdue.edu da autoridade da Internet. A
autoridade da Internet retém controle do domínio edu, de modo que novas universidades só
podem ser acrescentadas com sua permissão. De modo semelhante, o gerente de rede da
universidade, na Purdue University, retém autoridade para o subdomínio purdue.edu, de
modo que novos domínios de terceiro nível só podem ser acrescentados com a permissão do
administrador.
A Figura 8.4 ilustra uma pequena parte da hierarquia de nome de domínio da Internet.
Como mostra a figura, a IBM Corporation, uma organização comercial, registrou-se como
ibm.com, a Purdue University registrou-se como purdue.edu, e a National Science
Foundation, uma agência do governo, registrou-se como nsfgov. Ao contrário, a
Corporation for National Research Initiatives decidiu registrar-se sob a hierarquia geográfica
como cnn.reston.va.us.
Figura 8.4 – Uma pequena parte da hierarquia de nome de domínio da Internet.
8.3.8
Sintaxe e tipo de nome
O sistema de nome de domínio é bastante genérico, pois permite que várias hierarquias
de nomes sejam incorporadas em um sistema. Para permitir que os clientes distingam entre
vários tipos de entradas, cada item nomeado armazenado no sistema recebe um tipo que
especifica se ele é o endereço de uma máquina, uma caixa de correio, um usuário e assim por
diante. Quando um cliente pede ao sistema de domínio para traduzir um nome, ele precisa
especificar o tipo de resposta desejada. Por exemplo, quando uma aplicação de e-mail usa o
sistema de domínio para traduzir um nome, ela especifica que a resposta deve ser o endereço
de uma central de correio. Uma aplicação de login remoto especifica que busca o endereço
IP de uma máquina. É importante entender o seguinte: determinado nome pode ser mapeado
em mais de um item no sistema de domínio. O cliente especifica o tipo de objeto desejado
ao traduzir um nome, e o servidor retorna objetos desse tipo.
Além de especificar o tipo de resposta procurada, o sistema de domínio permite que o
cliente especifique a família de protocolo a usar. O sistema de domínio particiona o conjunto
187
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
inteiro de nomes por classe, permitindo que um único banco de dados armazene
mapeamentos para vários conjuntos de protocolos.
A sintaxe de um nome não determina que tipo de objeto ele nomeia ou a classe do
conjunto de protocolos. Em particular, o número de labels em um nome não determina se o
nome se refere a um objeto individual (máquina) ou um domínio. Assim, em nosso exemplo,
é possível ter uma máquina chamada
gwen.purdue.edu
embora
cs. purdue. edu
nomeie um subdomínio. Podemos resumir este ponto importante: não se pode distinguir os
nomes dos subdomínios dos nomes dos objetos individuais ou do tipo de um objeto usando
apenas a sintaxe do nome de domínio.
8.3.9
Mapeando nomes de domínio para endereços
Além das regras para a sintaxe de nome e delegação de autoridade, o esquema de nome
de domínio inclui um sistema distribuído eficiente, confiável, de uso geral, para mapear
nomes a endereços. O sistema é distribuído no sentido técnico, significando que um conjunto
de servidores operando em vários sites soluciona cooperativamente o problema de
mapeamento. Ele é eficiente no mesmo sentido de que a maioria dos nomes pode ser
mapeada localmente; somente alguns exigem tráfego de internet. Ele é de uso geral porque
não está restrito a nomes de máquina (embora usaremos esse exemplo por enquanto).
Finalmente, ele é confiável porque nenhuma falha de máquina isolada impedirá que o sistema
opere corretamente.
O mecanismo de domínio para o mapeamento de nomes a endereços consiste em
sistemas independentes, cooperativos, chamados servidores de nome. Um servidor de nome
é um programa servidor que fornece tradução de nome para endereço, mapeando de nomes
de domínio para endereços IP. Normalmente, o software servidor é executado em um
processador dedicado, e a própria máquina é chamada servidor de nome. O software cliente,
chamado tradutor de nome, utiliza um ou mais servidores de nome ao traduzir um nome.
O modo mais fácil de entender como os servidores de domínio funcionam é imaginálos arrumados em uma estrutura de árvore que corresponde à hierarquia de nomeação, como
ilustra a Figura 8.5. A raiz da árvore é um servidor que reconhece os domínios de alto nível
e sabe qual servidor traduz cada domínio. Dado um nome para traduzir, a raiz pode escolher
o servidor correto para esse nome. No próximo nível, um conjunto de servidores de nome
oferece respostas para um domínio de alto nível (por exemplo, edu). Um servidor nesse nível
sabe quais servidores podem traduzir cada um dos subdomínios sob seu domínio. No terceiro
nível da árvore, os servidores de nomes oferecem respostas para subdomínios (por exemplo,
purdue sob edu). A árvore conceitual continua com um servidor em cada nível para o qual
um subdomínio foi definido.
188
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura 8.5 – A organização conceitual dos servidores de nome de domínio.
Os links na árvore conceitual não indicam conexões físicas de rede. Em vez disso, eles
mostram quais outros servidores de nomes determinado servidor conhece e contata. Os
próprios servidores podem estar localizados em locais quaisquer em uma internet. Assim, a
árvore de servidores é uma abstração que usa uma internet para comunicação.
Se os servidores no sistema de domínio funcionassem exatamente como nosso modelo
simplista sugere, o relacionamento entre conectividade e autorização seria muito simples.
Quando a autoridade fosse concedida a um subdomínio, a organização que a solicitou teria
de estabelecer um servidor de nome de domínio para esse subdomínio e vinculá-lo à árvore.
Na prática, o relacionamento entre a hierarquia de nomes e a árvore de servidores não
é tão simples quanto nosso modelo implica. A árvore de servidores possui poucos níveis,
pois um único servidor físico pode conter toda a informação para grandes partes da hierarquia
de nomes. Em particular, as organizações normalmente coletam informações de todos os
seus subdomínios para um único servidor. A Figura 8.6 mostra uma organização mais realista
dos servidores para a hierarquia de nomes da Figura 8.4.
Um servidor raiz contém informações sobre a raiz e domínios de alto nível, e cada
organização utiliza um único servidor para seus nomes. Como a árvore de servidores é
superficial, no máximo dois servidores precisam ser contatados para traduzir um nome como
xinu.cs.purdue.edu: o servidor raiz e o servidor para o domínio purdue.edu (ou seja, o
servidor raiz sabe qual servidor trata de purdue.edu, e a informação de domínio inteira para
Purdue reside em um servidor).
Figura 8.6 – Uma organização realista de servidores para a Hierarquia de nomes.
189
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
8.3.10 Tradução de nome de domínio
Embora a árvore conceitual facilite a compreensão do relacionamento entre os
servidores, ela esconde diversos detalhes sutis. O exame do algoritmo de tradução de nomes
ajudará a explicá-los. Conceitualmente, a tradução de nome de domínio prossegue de cima
para baixo, começando com o servidor de nomes raiz e prosseguindo para servidores
localizados nas folhas da árvore. Existem duas maneiras de usar o sistema de nome de
domínio: contatando servidores de nomes um de cada vez ou pedindo ao sistema de servidor
de nomes para realizar a tradução completa. De qualquer forma, o software cliente forma
uma consulta de nome de domínio que contém o nome a ser traduzido, uma declaração da
classe do nome, o tipo da resposta desejada e um código que especifica se o servidor de
nomes deve traduzir o nome completamente. Ele envia a consulta a um servidor de nomes
para tradução.
Quando um servidor de nomes de domínio recebe uma consulta, ele verifica se o nome
se encontra no subdomínio para o qual é uma autoridade. Nesse caso, ele traduz o nome para
um endereço, de acordo com seu banco de dados, e anexa uma resposta à consulta antes de
enviá-la de volta ao cliente. Se o servidor de nomes não puder traduzir o nome
completamente, ele procura ver que tipo de interação o cliente especificou. Se o cliente
solicitou tradução completa (tradução recursiva, na terminologia de nome de domínio), o
servidor contata um servidor de nomes de domínio que pode traduzir o nome e retorna a
resposta ao cliente. Se o cliente solicitou tradução não recursiva (tradução iterativa), o
servidor de nomes não pode fornecer uma resposta. Ele gera uma resposta que especifica o
servidor de nomes que o cliente deve contatar em seguida para traduzir o nome.
Como um cliente encontra um servidor de nomes em que começará a busca? Como
um servidor de nomes encontra outros servidores de nomes que possam responder a
perguntas quando ele não puder? As respostas são simples. Um cliente precisa saber como
contatar pelo menos um servidor de nomes. Para garantir que um servidor de nome de
domínio possa alcançar outros, o sistema de domínio exige que cada servidor saiba o
endereço de pelo menos um servidor raiz1. Além disso, um servidor pode saber o endereço
de um servidor para o domínio imediatamente acima dele (chamado de pai).
Os servidores de nome de domínio utilizam uma porta de protocolo bem conhecida
para toda a comunicação, de modo que os clientes saibam como se comunicar com um
servidor uma vez conhecendo o endereço IP da máquina em que o servidor é executado. Não
existe um modo padrão para os hosts localizarem uma máquina no ambiente local em que
um servidor de nomes é executado; isso fica para quem projetar o software cliente. Em
alguns sistemas, o endereço da máquina que fornece o serviço de nome de domínio está
vinculado a programas aplicativos em tempo de compilação, enquanto em outros, o endereço
é armazenado em um arquivo no armazenamento secundário. Muitos sistemas obtêm o
endereço de um servidor de domínio automaticamente como parte do processo de bootstrap.
8.3.11 Tradução eficiente
Embora possa parecer natural resolver consultas descendo pela árvore de servidores de
nomes, isso pode causar ineficiências por três motivos. Primeiro, a maior parte da tradução
de nome se refere a nomes locais, encontrados dentro da mesma subdivisão do espaço de
nomes que a máquina da qual a requisição origina. Rastrear um caminho pela hierarquia para
contatar a autoridade local seria ineficiente. Segundo, se cada tradução de nome sempre
1
Por confiabilidade, existem vários servidores para cada nó na árvore do servidor de domínio; o servidor raiz é replicado
ainda mais para fornecer balanceamento de carga.
190
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
iniciasse contatando o nível mais alto da hierarquia, a máquina nesse ponto ficaria
sobrecarregada. Terceiro, a falha das máquinas nos níveis mais altos da hierarquia impediria
a tradução de nomes, mesmo que a autoridade local pudesse traduzir o nome. A hierarquia
de nomes de telefone mencionada anteriormente ajuda a explicar. Embora os números de
telefone sejam atribuídos hierarquicamente, eles são traduzidos de baixo para cima. Como a
maioria das ligações telefônicas é local, elas podem ser traduzidas pela central local sem
pesquisar a hierarquia. Além do mais, as chamadas dentro de determinado código de área
podem ser traduzidas sem contatar sites fora do código de área. Quando aplicadas a nomes
de domínio, essas ideias levam a um mecanismo de tradução de nome de duas etapas, que
preserva a hierarquia administrativa, mas permite a tradução eficiente.
Dissemos que a maioria das consultas a servidores de nomes refere-se a nomes locais.
No processo de tradução de nomes em duas etapas, a tradução começa com o servidor de
nomes local. Se o servidor local não puder traduzir um nome, a consulta precisa então ser
enviada a outro servidor no sistema de domínio.
8.3.12 Caching: a chave para a eficiência
O custo de pesquisa para nomes não locais pode ser extremamente alto se os tradutores
enviarem cada consulta ao servidor raiz. Mesmo que as consultas pudessem ir diretamente
para o servidor que tem autoridade para o nome, a pesquisa de nome pode apresentar uma
carga intensa para uma internet. Assim, para melhorar o desempenho geral de um sistema
servidor de nomes, é necessário reduzir o custo de pesquisa para nomes não locais.
Os servidores de nomes da Internet utilizam o caching para otimizar os custos de
pesquisa. Cada servidor mantém um cache de nomes recentemente usados, além de um
registro de onde a informação de mapeamento para esse nome foi obtida. Quando um cliente
pede ao servidor para traduzir um nome, o servidor primeiro verifica se tem autoridade para
o nome de acordo com o procedimento padrão. Se não, o servidor verifica seu cache para
ver se o nome foi traduzido recentemente. Os servidores dão informações do cache aos
clientes, mas as marcam como um vínculo não-autorizado, e dão o nome de domínio do
servidor, S, do qual obtiveram o vínculo. O servidor local também envia informações
adicionais que dizem ao cliente o vínculo entre S e um endereço IP. Portanto, os clientes
recebem respostas rapidamente, mas a informação pode estar desatualizada. Se a eficiência
for importante, o cliente decidirá aceitar a resposta não-autorizada e prosseguir. Se a precisão
for mais importante, o cliente decidirá contatar a autoridade e verificar se o vínculo entre
nome e endereço ainda é válido.
O caching funciona bem no sistema de nome de domínio porque os vínculos entre nome
e endereço mudam com pouca frequência. Porém, eles mudam. Se os servidores colocassem
informações em cache na primeira vez que ela fosse solicitada e nunca as atualizassem, as
entradas no cache ficariam passadas (ou seja, incorretas). Para manter o cache correto, os
servidores temporizam cada entrada e descartam as entradas que excedem um tempo
razoável. Quando um servidor precisa de informações depois que a entrada em seu cache foi
removida, ele precisa voltar à origem autorizada e obter o vínculo novamente. Mais
importante, os servidores não aplicam um único timeout fixo a todas as entradas, mas
permitem que a autoridade para uma entrada configure seu timeout. Sempre que uma
autoridade responde a uma solicitação, ela inclui um valor Time To Live (TTL) na resposta,
que especifica por quanto tempo ele garante que o vínculo permanecerá válido. Assim, as
autoridades podem reduzir o overhead de rede especificando timeouts longos para entradas
que esperam permanecer inalteradas, enquanto melhoram a exatidão especificando timeouts
curtos para entradas que deverão mudar com frequência.
191
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
O caching é importante nos hosts e também em servidores de nome de domínio locais.
A maioria dos softwares tradutores coloca entradas de DNS em cache no host. Assim, se um
usuário pesquisar o mesmo nome repetidamente, pesquisas subsequentes podem ser
traduzidas do cache local sem usar a rede.
8.4
Correio Eletrônico
Uma facilidade de correio eletrônico (e-mail) permite que os usuários enviem memorandos
pela Internet. O e-mail é um dos serviços mais usados, pois fornece um método rápido e
conveniente de transferir informações, acomoda pequenas notas ou memorandos grandes e
volumosos e permite a comunicação entre os indivíduos ou entre um grupo.
O correio eletrônico difere fundamentalmente da maioria dos outros usos das redes, pois um
sistema de correio precisa providenciar instâncias quando o destino remoto é temporariamente
inalcançável. Para lidar com a entrega adiada, os sistemas de correio eletrônico utilizam uma
técnica conhecida como spooling. Quando o usuário envia uma mensagem de correio, o sistema
coloca uma cópia em seu armazenamento privado (chamado spool1) junto com a identificação do
emissor, destinatário, máquina de destino e tempo de depósito. O sistema, então, inicia a
transferência para a máquina remota como uma atividade em segundo plano, permitindo que o
emissor prossiga com outras atividades computacionais. A Figura 8.7 ilustra o conceito.
O processo de transferência de correio em segundo plano se torna um cliente que usa o
sistema de nome de domínio para mapear o nome da máquina de destino a um endereço IP e
depois tenta formar uma conexão TCP com o servidor de correio na máquina de destino. Se tiver
sucesso, o processo de transferência passa uma cópia da mensagem ao servidor remoto, que
armazena a cópia na área de spool do sistema remoto. Quando o cliente e o servidor concordam
que a cópia foi aceita e armazenada, o cliente remove a cópia local. Se não puder formar uma
conexão TCP ou se a conexão falhar, o processo de transferência registra a hora em que a entrega
foi tentada e termina. O processo de transferência em segundo plano varre a área de spool
periodicamente, normalmente uma vez a cada 30 minutos, procurando correio não entregue.
Sempre que encontra uma mensagem ou sempre que um usuário deposita novo correio de saída,
o processo em segundo plano tenta a entrega. Se descobrir que uma mensagem de correio não
pode ser entregue após algumas horas, o software de correio informa ao emissor; depois de um
tempo estendido (por exemplo, 3 dias), o software de correio retorna a mensagem ao emissor.
Figura 8.7 – Componentes conceituais de uma sistema de correio eletrônico.
1
Uma área de spool de correio às vezes é chamada de fila de correio, embora o termo seja tecnicamente impreciso.
192
Apostila de Fundamentos de Redes de Computadores
8.4.1
Prof: Ricardo Quintão
Nomes e aliases da caixa de correio
Existem três ideias importantes escondidas em nossa descrição simples da entrega de
correio. Primeiro, os usuários especificam cada destinatário dando uma string de texto que
contém dois itens separados por um sinal de arroba:
parte-local@nome-domínio
onde nome-domínio é o nome de domínio de um destino ao qual o correio deve ser entregue,
e parte-local é o endereço de uma caixa de correio nessa máquina. Por exemplo, o endereço
de correio eletrônico do professor é:
[email protected]
Segundo, os nomes usados nessas especificações são independentes de outros nomes
atribuídos às máquinas. Normalmente, uma caixa de correio é igual ao id de login de um
usuário, e o nome de domínio de um computador é usado como destino de correio. Porém,
muitos outros projetos são possíveis. Por exemplo, uma caixa de correio pode designar um
cargo como chefe-departamento. Como o sistema de nome de domínio inclui um tipo de
consulta separado para destinos de correio, é possível desacoplar os nomes de destino de
correio dos nomes de domínio normais para máquinas. Assim, o correio enviado a um
usuário em exemplo.com pode ir para uma máquina diferente de uma requisição ping enviada
ao mesmo nome. Terceiro, nosso diagrama simplista falha ao considerar o encaminhamento
de correio, em que algum correio que chega em determinada máquina é encaminhado a outra
máquina.
8.4.2
Expansão de alias e encaminhamento de correio
A maioria dos servidores de correio eletrônico fornece um software de
encaminhamento de correio (mail forwarder) que inclui um mecanismo de expansão de alias
de correio. Um encaminhador permite que as cópias de uma mensagem de entrada sejam
enviadas a um ou mais destinos. Normalmente, o servidor consulta um banco de dados
pequeno de aliases de correio para mapear um endereço de destinatário em conjunto de
endereços, A, e depois encaminha uma cópia para cada endereço em A.
Figura 8.8 – Uma extensão do sistema de correio da Figura 8.7.
Como eles podem ser muitos-para-um ou um-para-muitos, os mapeamentos de alias
aumentam substancialmente a funcionalidade e a conveniência do sistema de correio. Um
193
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
único usuário pode ter vários identificadores de correio, ou um grupo pode ter um único alias
de correio. No último caso, o conjunto de destinatários associado a um identificador é
chamado de lista de correspondência eletrônica. A Figura 8.8 ilustra os componentes de um
sistema de correio que admite aliases de correio e expansão de lista.
Como mostra a figura, o correio de entrada e saída passa pelo encaminhador de correio
que expande aliases. Assim, se o banco de dados de alias especificar que o endereço de
correio x é mapeado para o substituto y, a expansão de alias reescreverá o endereço de destino
x, trocando por y. O programa de expansão de alias, então, determina se y especifica um
endereço local ou remoto, de modo que saiba se deve colocar a mensagem na fila de correio
que chega ou de correio que sai.
A expansão de alias de correio pode ser perigosa. Suponha que dois sites estabeleçam
aliases em conflito. Por exemplo, suponha que o site A mapeie o endereço de correio x para
o endereço de correio y no site B, enquanto o site B mapeia o endereço de correio y no
endereço x do site A. Uma mensagem de correio enviada ao endereço x no site A poderia
ricochetear para sempre entre os dois sites1.
8.4.3
Padrões do TCP/IP para serviço de correio eletrônico
Lembre-se de que o objetivo do esforço do protocolo TCP/IP é providenciar
interoperabilidade pela maior faixa de sistemas de computador e redes possível. Para
estender a interoperabilidade do correio eletrônico, o TCP/IP divide seus padrões de correio
em dois conjuntos. Um padrão, dado na RFC 2822, especifica o formato sintático usado para
mensagens de correio; o outro padrão especifica os detalhes da troca de correio eletrônico
entre dois computadores.
De acordo com a RFC 2822, uma mensagem de correio é representada em formato
texto e dividida em duas partes: um cabeçalho e um corpo, que são separados por uma linha
em branco. O padrão para mensagens de correio especifica o formato exato dos cabeçalhos
de correio, além da interpretação semântica de cada campo de cabeçalho; ele deixa o formato
do corpo a cargo do emissor. Em particular, o padrão especifica que os cabeçalhos contêm
texto legível, dividido em linhas que consistem em uma palavra-chave seguida por um sinal
de dois pontos seguido por um valor. Algumas palavras-chave são obrigatórias, outras são
opcionais, e o restante não é interpretado. Por exemplo, o cabeçalho precisa conter uma linha
que especifica o destino. A linha começa com “To:” contém o endereço de correio eletrônico
do destinatário no restante da linha. Uma linha que começa com “From:” contém o endereço
de correio eletrônico do emissor. Opcionalmente, o emissor pode especificar um endereço
para o qual as respostas devem ser enviadas (ou seja, permitir que o emissor especifique que
as respostas devem ser enviadas para um endereço diferente da caixa de correio do emissor).
Se estiver presente, uma linha que começa com “Reply-to:” especifica o endereço para
respostas. Se não houver uma linha assim, o destinatário usará informações na linha “From:”
como endereço de retorno.
O formato da mensagem de correio é escolhido para que se torne fácil processar e
transportar dados por máquinas heterogêneas. Manter o formato do cabeçalho de correio
simples permite que ele seja usado em uma grande variedade de sistemas. Restringir as
mensagens a texto legível evita os problemas de selecionar uma representação binária padrão
e traduzir entre a representação padrão e a representação da máquina local.
1
Na prática, a maior parte dos encaminhadores de correio (mail forwarders) termina as mensagens após o número de trocas
atingir um limite predeterminado.
194
Apostila de Fundamentos de Redes de Computadores
8.4.4
Prof: Ricardo Quintão
Simple Mail Transfer Protocol (SMTP)
Além dos formatos de mensagem, o conjunto de protocolos TCP/IP especifica um
padrão para a troca de correio entre as máquinas. Ou seja, o padrão especifica o formato
exato das mensagens que um cliente em uma máquina utiliza a fim de transferir correio para
um servidor em outra máquina. O protocolo de transferência padrão é conhecido como
Simple Mail Transfer Protocol (SMTP). Como você poderia imaginar, o SMTP é mais
simples do que o anterior Mail Transfer Protocol (MTP). O protocolo SMTP foca
especificamente como o sistema de entrega de correio subjacente passa mensagens por uma
internet de uma máquina para outra. Ele não especifica como o sistema de correio aceita
correio de um usuário ou como a interface com o usuário apresenta o correio que chega ao
usuário. Além disso, o SMTP não especifica como o correio é armazenado ou com que
freqüência o sistema de correio tenta enviar mensagens.
SMTP é surpreendentemente simples. A comunicação entre um cliente e o servidor
consiste em texto ASCII legível. Como em outros protocolos de aplicação, o programa lê os
comandos abreviados e números de 3 dígitos no início das linhas; o texto restante serve para
ajudar os humanos a depurar o software de correio. Embora o SMTP defina rigidamente o
formato do comando, os humanos podem facilmente ler uma transcrição das interações entre
um cliente e o servidor, pois cada comando aparece em uma linha separada. Inicialmente, o
cliente estabelece uma conexão de fluxo confiável com o servidor e espera que o servidor
envie uma mensagem “220 READY FOR MAIL”. (Se o servidor estiver sobrecarregado, ele
pode adiar o envio da mensagem 220 temporariamente). Ao receber a mensagem 220, o
cliente envia um comando “HELO”1 (se o cliente admitir extensões das RFC 2821, ele envia
o comando “HELO”). O final de uma linha marca o final de um comando. O servidor
responde identificando-se. Quando a comunicação tiver sido estabelecida, o emissor pode
transmitir uma ou mais mensagens de correio e depois terminar a conexão. O receptor precisa
confirmar cada comando. Ele também pode abortar a conexão inteira ou abortar a
transferência da mensagem atual.
As transações de correio começam com um comando “MAIL” que dá a identificação
do emissor e também um campo “FROM:” que contém o endereço ao qual os erros devem
ser relatados. Um destinatário prepara suas estruturas de dados para receber uma nova
mensagem de correio e responde a um comando “MAIL” enviando a resposta 250. A
resposta 250 significa que tudo está bem. A resposta completa consiste no texto “250 OK”.
Após um comando “MAIL” bem-sucedido, o emissor emite uma série de comandos
“RCPT” que identificam os destinatários da mensagem de correio. O receptor precisa
confirmar cada comando “RCPT” enviando “250 OK” ou enviando a mensagem de erro “550
No such user here”.
Depois que todos os comandos “RCPT” tiverem sido confirmados, o emissor emite um
comando “DATA”. Essencialmente, um comando “DATA” informa ao receptor que o
emissor está pronto para transferir uma mensagem de correio completa. O receptor responde
com a mensagem “354 Start mail input” e especifica a sequência de caracteres usada para
terminar a mensagem de correio. A sequência de término consiste em 5 caracteres: carriage
return, line feed, ponto, carriage return e line feed2.
1
2
HELO é uma abreviatura para “hello”
O SMTP utiliza CR-LF para terminar uma linha e não permite que o corpo de uma mensagem tenha um ponto isolado em
uma linha.
195
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Um exemplo esclarecerá a troca SMTP. Suponha que o usuário Smith no host
Alpha.edu envie uma mensagem aos usuários Jones, Green e Brown, no host Beta.gov. O
software cliente SMTP no host Alpha.edu contata o software servidor de SMTP no host
Beta.gov e inicia a troca mostrada na Figura 8.9.
S: 220 Beta.gov Simple Mail Transfer Service Ready
C: HELO Alpha.edu
S: 250 Beta.gov
C: MAIL FROM:<[email protected]>
S: 250 OK
C: RCPT TO:<[email protected]>
S: 250 OK
C: RCPT TO:<[email protected]>
S: 550 No such user here
C: RCPT TO:<[email protected]>
S: 250 OK
C: DATA
S: 354 Start mail input; end with <CR><LF>.<CR><LF>
C: ...envia corpo da mensagem de correio...
C: ...continua pela quantidade de linhas que a mensagem tiver
C: <CR><LF>.<CR><LF>
S: 250 OK
C: QUIT
S: 221 Beta.gov Service closing transmission channel
Figura 8.9 – Exemplo de transferência SMTP de Alpha.edu para Beta.gov.
No exemplo, o servidor rejeita o destinatário Green, pois não reconhece o nome como
um destino de correio válido (ou seja, ele nem é um usuário nem uma lista de correio). O
protocolo SMTP não especifica os detalhes de como um cliente trata desses erros, o cliente
precisa decidir. Embora os clientes possam abortar a entrega completamente se houver um
erro, a maioria dos clientes não faz isso. Em vez disso, eles continuam a entrega a todos os
destinatários válidos e depois informam sobre problemas com o emissor original.
Normalmente, o cliente informa erros usando o correio eletrônico. A mensagem de erro
contém um resumo do erro, além do cabeçalho das mensagens de correio que causaram o
problema.
Quando tiver acabado de enviar todas as mensagens de correio, um cliente emite um
comando “QUIT”. O outro lado responde com o comando 221, que significa que ele
concorda em terminar. Os dois lados, então, fecham a conexão TCP de forma controlada.
O SMTP é muito mais complexo do que esboçamos aqui. Por exemplo, se um usuário
tiver mudado, o servidor poderá saber o novo endereço da caixa de correio do usuário. O
SMTP permite que o servidor informe ao cliente sobre o novo endereço, de modo que o
cliente possa usá-lo no futuro. Ao informar ao cliente sobre um novo endereço, o servidor
pode decidir encaminhar o correio que disparou a mensagem, ou pode requisitar que o cliente
tenha responsabilidade pelo encaminhamento. Além disso, o SMTP inclui extensões
Transport Layer Security (TLS) que permitem que uma sessão SMTP seja criptografada.
8.4.5
Recuperação de correio e protocolos de manipulação de caixa de correio
O esquema de transferência SMTP descrito anteriormente implica que um servidor
precisa permanecer pronto para aceitar o correio eletrônico o tempo todo. O cenário funciona
bem se o servidor for executado em um computador que possui uma conexão permanente
com a Internet, mas não funciona bem para um computador que possui conectividade
intermitente (por exemplo, um computador laptop que está desconectado quando estiver
sendo movido). Não faz sentido que esse computador execute um servidor de correio
196
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
eletrônico, pois o servidor só estará disponível enquanto o computador do usuário estiver
conectado – todas as outras tentativas de contatar o servidor falharão, e o correio enviado ao
usuário permanecerá sem ser entregue. Surge a pergunta: “como um usuário sem uma
conexão permanente recebe correio eletrônico?”
A resposta para a pergunta está em um processo de entrega em dois estágios. No
primeiro estágio, cada usuário recebe uma caixa de correio em um computador que sempre
está ligada e possui uma conexão permanente com a Internet. O computador executa um
servidor SMTP convencional, que sempre permanece pronto para aceitar correio eletrônico.
No segundo estágio, o usuário se conecta à Internet e depois executa um protocolo que
apanha mensagens da caixa de correio permanente. O protocolo transfere as mensagens para
o computador do usuário, de onde elas podem ser lidas.
Existem dois protocolos que permitem que um usuário remoto acesse o correio em uma
caixa de correio permanente. Embora tenham funcionalidade semelhante, os protocolos
utilizam técnicas opostas: um permite que o usuário baixe uma cópia das mensagens, e o
outro permite que um usuário veja e manipule mensagens no servidor. As duas seções
seguintes descrevem os dois protocolos.
8.4.5.1
Post Office Protocol
O protocolo mais popular usado para transferir mensagens de correio eletrônico
de uma caixa de correio permanente para um computador local é conhecido como versão
3 do Post Office Protocol (POP3); uma versão segura do protocolo é conhecida como
POP3S. O usuário invoca um cliente POP3, que cria uma conexão TCP com um servidor
POP3 no computador da caixa de correio. O usuário primeiro envia um login e uma
senha para autenticar a sessão. Quando a autenticação tiver sido aceita, o cliente envia
comandos para apanhar uma cópia de uma ou mais mensagens e excluir a mensagem da
caixa de correio permanente. As mensagens são armazenadas e transferidas como
arquivos de texto no formato do padrão 2822.
Observe que o computador com uma caixa de correio permanente precisa executar
dois servidores – um servidor SMTP que aceita o correio enviado a um usuário e
acrescenta cada mensagem que chega à caixa de correio permanente no usuário, e um
servidor POP3 que permite que um usuário extraia mensagens da caixa de correio e as
exclua. Para garantir a operação correta, os dois servidores precisam coordenar o uso
da caixa de correio, para que, se uma mensagem chegar por SMTP enquanto um usuário
estiver extraindo mensagens via POP3, a caixa de correio fique em um estado válido.
8.4.5.2
Internet Message Access Protocol
A versão 4 do Internet Message Access Protocol (IMAP4) é uma alternativa ao
POP3, que permite que os usuários vejam e manipulem mensagens; uma versão segura
do IMAP foi definida, e é conhecida como IMAPS. Assim como POP3, IMAP4 define
uma abstração conhecida como caixa de correio; as caixas de correio estão localizadas
no mesmo computador que um servidor. Também como o POP3, um usuário executa
um cliente IMAP4 que contata o servidor para manipular mensagens. Porém, diferente
do POP3, o IMAP4 permite que um usuário acesse mensagens de correio a partir de
vários locais (por exemplo, do trabalho e de casa) e garante que todas as cópias sejam
sincronizadas e coerentes.
IMAP4 também provê funcionalidade estendida para recuperação e
processamento de mensagem. Um usuário pode obter informações sobre uma
mensagem ou examinar campos de cabeçalho sem apanhar a mensagem inteira. Além
disso, um usuário pode procurar uma string especificada e apanhar partes de uma
197
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
mensagem. A recuperação parcial é especialmente útil para conexões discadas de baixa
velocidade, pois significa que um usuário não precisa baixar informações inúteis.
8.5
FTP
A transferência de arquivos está entre as aplicações TCP/IP mais utilizadas e ainda
considera uma quantidade significativa de tráfego da Internet. Os protocolos de transferência de
arquivo padrão existiam para a ARPANET antes de o TCP/IP se tornar operacional. Essas
primeiras versões do software de transferência de arquivo evoluíram para um padrão atual
conhecido como File Transfer Protocol (FTP).
8.5.1
Recursos do FTP
Dado um protocolo de transporte ponto a ponto confiável como o TCP, a transferência
de arquivos pode parecer simples. Entretanto, os detalhes da autorização, nomeação e
representação entre máquinas heterogêneas tornam o protocolo complexo. Além disso, o
FTP oferece muitos recursos além da função de transferência propriamente dita.
8.5.2

Acesso interativo: Embora o FTP seja projetado para ser usado por programas, a
maioria das importações também fornece uma interface interativa que permite aos
humanos interagirem com servidores remotos.

Especificação de formato: O FTP permite que o cliente especifique o tipo e a
representação dos dados armazenados. Por exemplo, o usuário pode especificar se
um arquivo contém texto ou dados binários e se os arquivos de texto usam os
conjuntos de caracteres ASCII ou EBCDIC.

Controle de autenticação: O FTP exige que os clientes se autorizem enviando o
nome de login e uma senha para o servidor antes de requisitar transferências de
arquivo. O servidor recusa acesso a clientes que não fornecem um login e uma
senha válidos.
Modelo de processo do FTP
Como outros servidores, a maioria das implementações de servidor FTP permite acesso
concorrente por vários clientes. Os clientes usam o TCP para se conectarem a um servidor.
Como descrito anteriormente, um único processo de servidor mestre espera conexões e cria
um processo escravo para manipular cada conexão. Diferente da maioria dos servidores, no
entanto, o processo escravo FTP não realiza toda a computação necessária. Em vez disso, o
escravo aceita e manipula uma conexão de controle através do cliente, mas usa um processo
adicional e uma conexão TCP adicional para manipular cada operação de transferência de
dados. A conexão de controle transporta comandos que dizem ao servidor qual arquivo
transferir. Uma nova conexão TCP e um novo processo no lado do cliente e do servidor são
criados para cada operação de transferência de dados (ou seja, cada transferência de arquivo).
Embora os detalhes exatos da arquitetura do processo dependam dos sistemas operacionais
usados, a Figura 8.10 ilustra o conceito.
198
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura 8.10 – Um cliente e um servidor FTP com conexões TCP entre eles.
Como mostra a Figura 8.10, o processo de controle do cliente se conecta ao processo
de controle do servidor usando uma conexão TCP, enquanto os processos de transferência de
dados associados usam sua própria conexão TCP. Em geral, os processos de controle e a
conexão de controle permanecem ativos desde que o usuário mantenha a seção FTP ativa, e
uma conexão de transferência de dados persiste para uma transferência de arquivo.
8.5.3
Números de porta TCP e conexões de dados
Quando um cliente forma uma conexão inicial com o servidor, o cliente usa um número
de porta de protocolo aleatório e localmente atribuído e contata o servidor em uma porta
conhecida (21). Um servidor que usa apenas uma porta de protocolo pode aceitar conexões
de muitos clientes porque o TCP usa os dois lados para identificar uma conexão. A pergunta
que surge é: “Quando os processos de controle criam uma nova conexão TCP para uma
determinada transferência de dados, que números de porta de protocolo eles usam?”
Obviamente, eles não podem usar o mesmo par de números de porta usados na conexão de
controle. Em vez disso, o cliente obtém uma porta não usada em sua máquina, envia o
número de porta através da conexão de controle e espera que o servidor forme uma conexão
TCP com a porta especificada. Ou seja, quando forma uma conexão de dados, o cliente FTP
se torna um servidor e o servidor FTP se torna um cliente! Interessantemente, quando forma
uma conexão de dados, o servidor FTP usa uma porta bem conhecida: a porta reservada para
transferência de dados FTP (20).
Podemos ver por que o protocolo usa duas conexões – o processo de controle do cliente
obtém uma porta local para ser usada na transferência de arquivo, cria um processo de
transferência na máquina do cliente para escutar nessa porta, comunica o número de porta
para o servidor através da conexão de controle e depois espera que o servidor estabeleça uma
conexão TCP com a porta. Em geral, além de passar comandos do usuário para o servidor,
o FTP usa a conexão de controle para permitir que os processos de controle do cliente e do
servidor coordenem seu uso das portas de protocolo TCP dinamicamente atribuídas e a
criação dos processos de transferência de dados que usam essas portas.
Como o projeto FTP original não funciona bem com firewalls de segurança e sistemas
NAT, uma extensão foi acrescentada. Conhecida como FTP passivo, a extensão permite que
um cliente inicie cada conexão de transferência de dados, o que significa que o FTP pode ser
usado através de um firewall ou sistema NAT sem ser um caso especial. A maioria dos
servidores e clientes FTP aceita a extensão de FTP passivo.
Que formato o FTP deve usar para transferência de dados através da conexão de
controle? Embora pudessem ter inventado uma nova especificação, os projetistas do FTP
199
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
não o fizeram. Em vez disso, eles permitem que o FTP use o protocolo de terminal virtual
de rede TELNET. Diferente do protocolo TELNET completo, o FTP não permite negociação
de opção. Em vez disso, o FTP usa apenas a definição NVT básica, que torna o
gerenciamento de uma conexão de controle FTP muito mais simples do que o gerenciamento
de uma conexão TELNET. Apesar de suas limitações, usar a definição TELNET em vez de
criar uma nova definição ajuda a simplificar o FTP consideravelmente.
8.5.4
A visão do usuário do FTP
Embora o FTP tenha sido originalmente implementado como um programa aplicativo
interativo, poucos usuários agora chamam o FTP diretamente. Em vez disso, muitos usuários
acessam FTP através de um navegador Web. Portanto, suponha que alguém tenha colocado
uma cópia on-line de um livro-texto em um arquivo chamado tcpbook.tar no diretório
/pub/comer no computador ftp.cs.purdue.edu. Para obter uma cópia, um usuário pode iniciar
um navegador e digitar o seguinte URL:
ftp://ftp.cs.purdue.edu/pub/comer/tcpbook.tar
O navegador recuperará uma cópia do arquivo. Além disso, se o usuário digitar uma
URL que corresponda a um diretório, o navegador exibirá uma lista dos arquivos no diretório:
ftp://ftp.cs.purdue.edu/pub/comer
8.5.5
FTP anônimo
Embora o mecanismo de autorização do FTP possa ajudar a impedir que arquivos
confidenciais sejam acessados, exigir um login e uma senha proíbe que os usuários acessem
arquivos públicos até que o usuário obtenha uma conta. Para fornecer acesso a arquivos
públicos, a maioria dos sites TCP/IP permite FTP anônimo. O acesso de FTP anônimo
significa que um cliente não precisa de uma conta ou senha. Em vez disso, o usuário
especifica o nome de login anonymous e uma senha igual ao endereço de e-mail do usuário
ou a senha guest. Um servidor que permite logins anônimos restringe o acesso a arquivos
publicamente disponíveis.
8.6
World Wide Web – HTTP
Até a década de 90, a Internet era usada basicamente por pesquisadores, acadêmicos e
estudantes universitários. Eles a usavam para se interligar com hosts remotos, transferir arquivos
de hosts locais para hosts remotos e vice-versa, enviar e receber notícias e enviar e receber correio
eletrônico. Embora essas aplicações fossem (e continuem a ser) muito úteis, a Internet não era
conhecida fora das comunidades acadêmica e de pesquisa. Então, no início da década de 90,
entrou em cena a aplicação-chave da Internet – a WWW. A Web foi a aplicação da Internet que
chamou a atenção do público em geral. Ela está provocando uma drástica transformação na
maneira como as pessoas interagem dentro e fora de seu ambiente de trabalho. Ela gerou milhares
de novas empresas. Elevou a Internet do nível que ocupava, como apenas mais uma das muitas
redes de dados (inclusive redes on-line como a Prodigy, a America Online e a Compuserve, redes
de dados de alcance nacional como a Minitel/franspac da França, a rede privada X.25 e as redes
frame relay), para o nível que agora ocupa, como, essencialmente, a única rede de dados.
A história está repleta de exemplos de lançamentos de tecnologias de comunicação
eletrônica que provocaram enormes impactos sociais. A primeira dessas tecnologias foi o
telefone, inventado na década de 1870. O telefone permitiu que duas pessoas se comunicassem
oralmente em tempo real, sem que estivessem na mesma localização física. Ele causou um grande
impacto na sociedade – tanto bom quanto mau. Outra tecnologia de comunicação eletrônica que
200
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
provocou enorme impacto social foi a transmissão de grande alcance de rádio/televisão. Surgida
no período 1920 – 1930, a transmissão de rádio (e mais tarde a de televisão) permitiu que o público
recebesse vastas quantidades de informação. Ela também causou um enorme impacto na
sociedade – tanto bom quanto mau. A terceira grande tecnologia de comunicação que mudou o
modo de viver das pessoas foi a Web. Talvez o que mais atrai a maioria dos usuários da Web é o
fato de ela funcionar por demanda. Os usuários recebem o que querem e quando querem. Isso
não é igual à transmissão de rádio e de televisão, que força o usuário a “sintonizar” apenas quando
o provedor disponibiliza o conteúdo. Além de funcionar por demanda, a Web tem muitas outras
características maravilhosas que as pessoas adoram e apreciam. É muitíssimo fácil para qualquer
indivíduo fazer com que uma informação fique disponível na Web; todo mundo pode se
transformar em editor a um custo extremamente baixo. Os hiperlinks e os dispositivos de busca
nos ajudam a navegar pelo oceano dos sites Web. Gráficos e animações gráficas estimulam nossos
sentidos. Formulários, applets e componentes Active X, bem como muitos outros dispositivos,
nos habilitam a interagir com as páginas e os sites. E a Web está sempre oferecendo mais e mais
menus de interface para vastas quantidades de material de vídeo e áudio armazenados na
Internet – áudio e vídeo que podem ser acessados por demanda.
8.6.1
Descrição Geral do HTTP.
O HTTP (HiperText Transfer Protocol – Protocolo de Transferência de Hipertextos),
o protocolo de camada de aplicação da Web, está implementado em dois programas: um
programa cliente e um programa servidor. O programa cliente e o programa servidor,
executados em diferentes sistemas finais, “conversam” pela troca de mensagens HTTP. O
HTTP define a estrutura dessas mensagens e o modo como o cliente e o servidor trocam as
mensagens. Antes de examinarmos detalhadamente o HTTP, é bastante útil revisarmos a
terminologia da Web.
Uma página Web (Web Page – também chamada de documento) é constituída de
objetos. Um objeto é simplesmente um arquivo – tal como um arquivo HTML, uma imagem
JPEG, uma imagem GIF, um applet Java, um clipe de áudio e assim por diante – que se pode
acessar por meio de uma única URL. A maioria das páginas Web é constituída de um
arquivo-base HTML e diversos objetos relacionados. Por exemplo, se uma página Web
contiver texto em HTML e cinco imagens JPEG, então a página Web tem seis objetos: o
arquivo-base em HTML e mais as cinco imagens. O arquivo-base HTML relaciona os outros
objetos da página com suas URLs. Cada URL tem dois componentes: o nome do host do
servidor que abriga o objeto e o nome do caminho do objeto. Por exemplo, a URL
www.someSchool.edu/someDepartment/picture.gif
tem www.someSchool.edu como nome de host e /someDepartment/picture.gif como nome
do caminho. Um browser é um agente usuário para a Web; ele apresenta a página Web
solicitada e fornece numerosas características de navegação e de configuração. Os browsers
Web também implementam o lado cliente do HTTP. Assim, no contexto da Web, podemos
permutar as palavras “browser” e “cliente”. São browsers populares o Netscape
Communicator e o Microsoft Internet Explorer. Um servidor Web abriga objetos Web, cada
um endereçado por uma URL. Os servidores Web também implementam o lado servidor do
HTTP. Dentre os servidores populares da Web estão o Apache, o Microsoft Internet
Information Server e o Netscape Enterprise Server.
O HTTP define como os clientes Web (isto é, os browsers) solicitam páginas Web aos
servidores (isto é, aos servidores Web) e como os servidores transferem páginas Web aos
clientes. Vamos discutir em detalhes a interação entre cliente e servidor mais adiante, mas a
idéia geral está ilustrada na Figura 8.11. Quando um usuário solicita uma página Web (por
201
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
exemplo, clica sobre um hiperlink), o browser envia ao servidor mensagens de requisição
HTTP para os objetos da página. O servidor recebe as requisições e responde com uma
mensagem de resposta HTTP que contém os objetos. Até 1997, essencialmente todos os
browsers e servidores Web implementavam a versão HTTP/1.0, que é definida no RFC 1945.
A partir de 1998, alguns servidores Web e browsers começaram a implementar a versão
HTTP/1.1, que está definida no RFC 2616. O HTTP/1.1 é compatível com o HTTP/1.0; um
servidor Web que roda a versão 1.1 pode “conversar” com um browser que roda a versão 1.0,
e um browser que roda a versão 1.1 pode “conversar” com um servidor que roda a versão
1.0.
Figura 8.11 – Comportamento de requisição-resposta do HTTP.
Tanto o HTTP/1.0 quanto o HTTP/1.1 usam o TCP como seu protocolo de transporte
subjacente (em vez de utilizarem o UDP). O cliente HTTP primeiramente inicia uma
conexão TCP com o servidor. Assim que a conexão é estabelecida, os processos do browser
e do servidor acessam o TCP por meio de sua interface de porta. Como descrito
anteriormente, no lado cliente a porta é o meio de comunicação entre o processo cliente e a
conexão TCP; no lado servidor, ela é o caminho entre o processo servidor e a conexão TCP.
O cliente envia mensagens de requisição HTTP para a interface desse protocolo através da
porta e recebe mensagens de resposta HTTP de sua interface de porta. De maneira
semelhante, o servidor HTTP recebe mensagens de requisição de sua interface de porta e
envia mensagens de resposta através da interface de porta. Assim que o cliente envia uma
mensagem para sua interface de porta, a mensagem “sai de suas mãos” e “passa para as mãos
do TCP”. Lembre-se de que o TCP fornece ao HTTP um serviço confiável de transferência
de dados. Isso significa que toda mensagem de requisição HTTP emitida por um processo
cliente chegará intacta ao servidor. Percebemos, nesse ponto, uma das grandes vantagens de
uma arquitetura de camadas – o HTTP não precisa se preocupar com dados perdidos ou com
os detalhes de como o TCP recupera a perda de dados ou os reordena dentro da rede. Esta é
uma tarefa do TCP e dos protocolos das camadas mais inferiores da pilha de protocolos.
O TCP também emprega um mecanismo de controle de congestionamento. Esse
mecanismo força toda nova conexão TCP a transmitir, de início, dados a uma velocidade
relativamente baixa, mas depois permite que toda conexão acelere até uma velocidade
relativamente alta quando a rede não está congestionada. A fase inicial de transmissão
vagarosa é conhecida como partida lenta.
202
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
É importante notar que o servidor envia os arquivos solicitados ao cliente sem
armazenar nenhuma informação de estado sobre o cliente. Se um determinado cliente solicita
o mesmo objeto duas vezes em um período de poucos segundos, o servidor não responde
dizendo que ele acabou de servir o objeto ao cliente; em vez disso, ele reenvia o objeto, pois
já esqueceu completamente o que fez antes. Como o servidor HTTP não mantém nenhuma
informação sobre os clientes, ele é chamado de protocolo sem estado.
8.6.2
Conexões não persistentes e conexões persistentes
O HTTP pode usar conexões não persistentes e conexões persistentes. O HTTP/l.0 usa
conexões não persistentes. O modo default do HTTP/1.1, por sua vez, usa conexões
persistentes.
8.6.2.1
Conexões não persistentes
Vamos percorrer os estágios da transferência de uma página Web de um servidor
para um cliente para o caso de conexões não persistentes. Suponha que uma página
consista em um arquivo-base HTML e em dez imagens JPEG e que todos esses 11
objetos residam no mesmo servidor. Suponha também que a URL para o arquivo-base
HTTP seja
www.someSchool.edu/someDepartment/home.index.
Eis o que acontece:
1. O cliente HTTP inicia uma conexão TCP para o servidor www.someSchool.edu. O
número de porta 80 é usado como número de porta default na qual o servidor HTTP
estará na escuta pelos clientes HTTPs que queiram extrair documentos usando o
HTTP.
2. O cliente HTTP envia uma mensagem de requisição HTTP ao servidor através da
porta associada à conexão TCP que foi estabelecida no estágio 1. A mensagem de
requisição inclui o nome do caminho /someDepartment/home.index. (Discutiremos
as mensagens HTTP em detalhes mais adiante.)
3. O servidor HTTP recebe a mensagem de requisição através da porta associada à
conexão que foi estabelecida no estágio 1, recupera o objeto
/someDepartment/home.index de seu sistema de armazenamento (RAM ou disco),
encapsula o objeto em uma mensagem de resposta HTTP e envia a mensagem de
resposta ao cliente através da porta.
4. O servidor HTTP ordena que o TCP encerre a conexão TCP. (Mas o TCP, na
realidade, só encerrará a conexão quando o cliente receber a mensagem de resposta
intacta).
5. O cliente HTTP recebe a mensagem de resposta. A conexão TCP é encerrada. A
mensagem mostra que o objeto encapsulado é um arquivo HTML. O cliente extrai
o arquivo da mensagem de resposta, analisa o arquivo HTML e encontra referências
a dez objetos JPEG.
6. Os primeiros quatro estágios são repetidos para cada um dos objetos JPEG
referenciados.
À medida que o browser recebe a página Web, ele a apresenta ao usuário. Dois
browsers diferentes podem interpretar (isto é, apresentar ao usuário) uma página Web
de modos um tanto diferentes. O HTTP não tem nada a ver com o modo como uma
página Web é interpretada por um cliente. As especificações do HTTP [RFC 1945] e
203
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
[RFC 2616] apenas definem o protocolo de comunicação entre o programa cliente HTTP
e o programa servidor HTTP.
Os estágios apresentados usam conexões não persistentes porque cada conexão
TCP é fechada depois que o servidor envia o objeto – a conexão não persiste para outros
objetos. Note que cada conexão TCP transporta exatamente uma mensagem de
requisição e uma mensagem de resposta. Assim, nesse exemplo, quando um usuário
solicita uma página Web, são geradas 11 conexões TCP.
Nos estágios descritos, fomos intencionalmente vagos sobre se os clientes obtêm
as dez JPEGs por meio de dez conexões TCP em série ou se algumas das JPEGs são
obtidas por conexões TCP paralelas. De fato, os usuários podem configurar os browsers
modernos para controlar o grau de paralelismo. Nos modos default, a maioria dos
browsers abre de cinco a dez conexões TCP paralelas, cada uma das quais manipula uma
transação requisição/resposta. Se o usuário preferir, o número máximo de conexões
paralelas poderá ser fixado em um, caso em que as dez conexões são estabelecidas em
série. Como veremos no próximo capítulo, o uso de conexões paralelas reduz o tempo
de resposta.
Antes de continuarmos a análise, vamos fazer um cálculo simples para estimar o
tempo que transcorre entre um cliente fazer a requisição de um arquivo-base HTTP e
receber o arquivo. Para essa finalidade, vamos definir o tempo de viagem de ida e volta
(round-trip time – RTT), ou seja, o tempo que leva para um pequeno pacote viajar do
cliente ao servidor e de volta ao cliente. O RTT inclui os atrasos de propagação de
pacotes, os atrasos de fila de pacotes nos roteadores e comutadores intermediários e os
atrasos de processamento de pacotes. Considere, agora, o que acontece quando um
usuário clica sobre um hiperlink. Isso faz com que o browser inicie uma conexão TCP
entre ele e o servidor Web e envolve um “aperto de mãos em três vias” – o cliente envia
uma pequena mensagem TCP ao servidor, que reconhece e responde com uma pequena
mensagem ao cliente, que, por fim, reconhece novamente o servidor. O RTT transcorre
depois das duas primeiras partes do aperto de mãos em três vias. Após completar as
duas primeiras partes do aperto de mãos, o cliente envia a mensagem de requisição
HTTP por meio da conexão TCP e o TCP “dá uma carona” ao último reconhecimento
(a terceira parte do aperto de mãos em de três vias) na mensagem de requisição. Assim
que a mensagem de requisição chega ao servidor, ele envia o arquivo HTML por meio
da conexão TCP. Essa requisição/resposta HTTP causa mais um RTT. Assim, em linhas
gerais, o tempo total de resposta são dois RTTs mais o tempo de transmissão do arquivo
HTML no servidor.
8.6.2.2
Conexões Persistentes
As conexões não persistentes têm algumas desvantagens. Em primeiro lugar, uma
nova conexão deve ser estabelecida e conservada para cada objeto solicitado. Para cada
uma dessas conexões, devem ser alocados buffers do TCP e conservadas variáveis do
TCP tanto no cliente quanto no servidor. Isso pode sobrecarregar seriamente o servidor
Web, que poderá estar processando requisições de centenas de diferentes clientes ao
mesmo tempo. Em segundo lugar, como acabamos de descrever, cada objeto sofre dois
RTTs – um RTT para estabelecer a conexão TCP e um RTT para solicitar e receber o
objeto. Por fim, cada objeto sofre com a partida lenta do TCP, porque cada conexão
TCP se inicia com uma fase de partida lenta de TCP. Todavia, os impactos dos atrasos
de RTT e das partidas lentas podem ser parcialmente aliviados pelo uso de conexões
TCP paralelas.
204
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Nas conexões persistentes, o servidor deixa a conexão TCP aberta após ter enviado
uma resposta. As requisições e respostas subseqüentes entre os mesmos cliente e
servidor podem ser enviadas por meio da mesma conexão. Em particular, uma página
Web inteira (no exemplo anterior, o arquivo-base HTML e as dez imagens) pode ser
enviada mediante uma única conexão TCP persistente. Além disso, múltiplas páginas
Web, residindo no mesmo servidor, podem ser enviadas por meio de uma única conexão
TCP persistente. Normalmente, o servidor HTTP fecha uma conexão quando ela não é
usada durante um tempo determinado (o intervalo de pausa), o que quase sempre é
configurável. Há duas versões de conexões persistentes: sem paralelismo e com
paralelismo. Para a versão sem paralelismo, o cliente lança uma nova requisição
somente quando a resposta prévia é recebida. Nesse caso, cada um dos objetos
relacionados (as dez imagens do exemplo anterior) sofre um RTT para solicitar e receber
o objeto. Embora isso seja uma melhoria em relação aos dois RTTs da conexão não
persistente, o atraso de RTT pode ser reduzido ainda mais com paralelismo. Outra
desvantagem de não se ter paralelismo é que, após o servidor enviar um objeto por meio
de uma conexão TCP persistente, a conexão fica pendurada – não faz nada – enquanto
espera a chegada de outra requisição. Isso causa desperdício de recursos do servidor.
O modo default do HTTP/1.1 usa conexões persistentes com paralelismo. Nesse
caso, o cliente HTTP lança uma requisição assim que ele encontra uma referência. Desse
modo, ele pode fazer requisições completas para os objetos relacionados. Quando o
servidor recebe as requisições, ele pode enviar todos os objetos. Se todas as requisições
forem enviadas completas e todas as respostas forem devolvidas da mesma maneira,
então se gastará apenas um RTT para todos os objetos relacionados (em vez de um RTT
por objeto relacionado como quando não se está usando paralelismo). E mais, a conexão
TCP com paralelismo fica pendurada por uma fração menor de tempo. Além da redução
dos atrasos de RTT, as conexões persistentes (com ou sem paralelismo) têm um atraso
menor de partida lenta do que as conexões não persistentes. A razão para isso é que o
servidor persistente, após ter enviado o primeiro objeto, não tem de enviar o próximo
objeto à taxa inicial lenta, já que continua usando a mesma conexão TCP. Em vez disso,
o servidor pode retomar a mesma taxa com que o primeiro objeto partiu.
8.6.3
Formato da mensagem HTTP
As especificações do HTIP/1.0 [RFC 1945] e do HTIP/1.1 [RFC 2616] definem os
formatos das mensagens HTIP. Há dois tipos de mensagens HTIP: as mensagens de
requisição e as mensagens de resposta. Ambas serão discutidas a seguir.
8.6.3.1
Mensagem de requisição HTTP
Apresentamos a seguir uma mensagem de requisição HTTP típica:
GET /somedir/page.html HTTP/l.l
Host: www.someschool.edu
Connection: close
User-agent: Mozilla/4.0
Accept-language: fr
(extra carriage return, 1ine feed)
Podemos aprender bastante examinando essa simples mensagem de requisição.
Antes de mais nada, vemos que ela está escrita em texto ASCII comum, de modo que
pode ser lida por qualquer ser humano que conheça computadores. Em segundo lugar,
vemos que ela é constituída de cinco linhas, cada uma delas seguida de “carriage return”
205
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
e “line feed” (fim de linha) para o início de uma nova linha. A última linha é seguida de
um comando adicional de “carriage return” e “line feed”. Embora essa mensagem de
requisição tenha cinco linhas, uma mensagem de requisição pode ter muito mais linhas,
poucas linhas e até uma linha apenas. A primeira linha de uma mensagem de requisição
HTTP é chamada de linha de requisição; as linhas subsequentes são chamadas de linhas
de cabeçalho. As linhas de requisição têm três campos: o campo do método, o campo
da URL e o campo da versão do HTTP. O campo do método pode assumir diversos
valores diferentes, entre eles GET, POST e HEAD. A grande maioria das mensagens
de requisição HTTP usa o método GET. Esse método é usado quando o browser solicita
um objeto; o objeto solicitado é identificado no campo do URL. Nesse exemplo, o
browser está solicitando o objeto /somedir/page.html. A versão é auto explicativa.
Nesse exemplo, o browser implementa a versão HTTP/1.1.
Vamos agora examinar as linhas de cabeçalho do exemplo. A linha de cabeçalho
“Host: www.some.school.edu” especifica o host no qual esse objeto reside. Ao incluir
a linha de cabeçalho “Connection: close”, o browser está dizendo ao servidor que ele
não quer usar conexões persistentes; quer que o servidor feche a conexão após o envio
do objeto solicitado. Embora o browser que gerou essa mensagem de requisição
implemente o HTTP/1.1, ele não quer se preocupar com conexões persistentes. A linha
de cabeçalho “User-agent:” especifica o agente usuário, isto é, o tipo de browser que
está fazendo a requisição ao servidor. Nesse caso, o agente usuário é o Mozilla/4.0, um
browser da Netscape. Essa linha de cabeçalho é útil porque o servidor pode na realidade
enviar diferentes versões do mesmo objeto a diferentes tipos de agentes usuários. (Cada
uma das versões é endereçada pela mesma URL). Por fim, o cabeçalho “Acceptlanguage:” mostra que o usuário prefere receber uma versão em francês do objeto, se
esse objeto existir no servidor; se não existir, o servidor deve enviar a versão default. O
cabeçalho “Accept-language:” é apenas um dos muitos cabeçalhos de negociação de
conteúdo disponíveis no HTTP.
Acabamos de examinar um exemplo. Vamos agora analisar o formato geral de
uma mensagem de requisição, ilustrado na Figura 8.12.
Figura 8.12 – Formato geral de uma mensagem de requisição.
Vemos que o formato geral de uma mensagem de requisição é muito parecido com
nosso exemplo. Contudo, você provavelmente notou que, após as linhas de cabeçalho
(e após a linha adicional com “carriage return” e “line feed”), há um “corpo de
entidade”. O corpo de entidade não é usado com o método GET, mas com o método
POST. O cliente HTTP usa o método POST quando o usuário preenche um
206
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
formulário – por exemplo, quando o usuário fornece uma palavra de busca a um site de
busca como o Altavista. Com uma mensagem POST, o usuário continua solicitando
uma página Web ao servidor, mas o conteúdo específico da página Web depende do que
o usuário escreveu nos campos do formulário. Se o valor escrito no campo do método
for POST, então o corpo de entidade conterá o que o usuário digitou nos campos do
formulário. O método HEAD é semelhante ao método GET. Quando um servidor
recebe uma requisição com o método HEAD, ele responde com uma mensagem HTTP,
mas deixa de fora o objeto solicitado. Esse método é frequentemente usado pelos
desenvolvedores de servidores HTTP para depuração.
8.6.3.2
Mensagem de resposta HTTP
Apresentamos a seguir uma típica mensagem de resposta HTTP. Essa mensagem
pode ser a resposta ao exemplo de mensagem de requisição que acabamos de discutir.
HTTP/1.1 200 OK
Connection: close
Date: Thu. 06 Aug 1998 12:00:15 GMT
Server: Apache/l.3.0 (Unix)
Last-Modified: Mon. 22 Jun 1998 09:23:24 GMT
Content-Length: 6821
Content-Type: text/htrnl
(data data data data data ...)
Vamos examinar cuidadosamente essa mensagem de resposta. Ela tem três
seções: uma linha de status inicial, seis linhas de cabeçalho e, em seguida, o corpo da
entidade. O corpo da entidade é o “filé mignon” da mensagem – ele contém o objeto
solicitado (representado por data data data data data ...). A linha de status tem três
campos: o campo da versão do protocolo, uma codificação para o status e uma
mensagem de estado correspondente. Nesse exemplo, ela mostra que o servidor está
usando o HTTP/1.1 e que está tudo OK (isto é, o servidor foi encontrado e está enviando
o objeto solicitado).
Vamos agora examinar as linhas de cabeçalho. O servidor usa a linha de cabeçalho
“Connection: close” para informar ao cliente que ele vai fechar a conexão TCP após
enviar a mensagem. A linha de cabeçalho “Date:” indica a hora e a data em que a
resposta HTTP foi criada e enviada pelo servidor. Note que esse não é o horário em que
o objeto foi criado nem o de sua mais recente modificação, mas é a hora em que o
servidor extraiu o objeto do sistema de arquivo, inseriu o objeto na mensagem de
resposta e enviou a mensagem de resposta. A linha de cabeçalho “Server:” mostra que
a mensagem foi gerada por um servidor Web Apache; ela é análoga à linha de cabeçalho
“User-agent:” na mensagem de requisição HTTP. A linha de cabeçalho “LastModified:” indica a hora e a data em que o objeto foi criado ou sofreu a última
modificação. O cabeçalho “Last-Modified:”, que estudaremos em detalhes, é
fundamental para fazer o cache do objeto, tanto no cliente local quanto nos servidores
de cache da rede (também conhecidos como servidores proxy). A linha de cabeçalho
“Content-Length:” indica o número de bytes do objeto que está sendo enviado. A linha
de cabeçalho “Content-Type:” mostra que o objeto presente no corpo da mensagem é
um texto HTML. (O tipo do objeto é oficialmente indicado pelo cabeçalho “ContentType:”, e não pela extensão do arquivo).
207
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Note que, se o servidor receber uma requisição HTTP/1.0, ele não vai usar
conexões persistentes, mesmo que seja um servidor HTTP/1.1. Em vez disso, o servidor
HTTP/1.1 vai fechar a conexão TCP após o envio do objeto. Isso é necessário porque
um cliente HTTP/1.0 espera que o servidor feche a conexão.
Acabamos de ver um exemplo. Vamos agora examinar o formato geral de uma
mensagem de resposta, ilustrado na Figura 8.13. Esse formato geral da mensagem de
resposta condiz com o exemplo que demos desse tipo de mensagem.
Figura 8.13 – Formato geral de uma mensagem de resposta.
Vamos abordar as codificações de status e suas frases. A codificação de status e
a frase associada a ela indicam o resultado da requisição. Eis algumas codificações de
status e frases associadas comuns:

200 OK: a requisição foi bem-sucedida e a informação volta para a resposta.

301 Moved Permanently: o objeto requisitado foi removido permanentemente; uma
nova URL está especificada no cabeçalho “Location:” da mensagem de resposta. O
software do cliente vai automaticamente recuperar a nova URL.

400 Bad Request: uma codificação genérica de erro mostrando que a requisição não
pode ser entendida pelo servidor.

404 Not Found: o documento requisitado não existe no servidor.

505 HTTP Version Not Supported: aversão do protocolo HTTP requisitada não é
suportada pelo servidor.
Gostaria de ver uma mensagem de resposta HTTP real? É muito fácil!
Primeiramente, dê um comando Telnet em seu servidor Web favorito. Em seguida, digite
uma mensagem de requisição de uma linha solicitando algum objeto abrigado no
servidor. Por exemplo, se você possui uma senha de acesso em uma máquina Unix,
digite:
telnet www.eurecom.fr 80
GET /~ross/index.html HTTP/1.0
(Clique duas vezes na tecla “enter” após digitar a segunda linha). Essa seqüência
de comandos abre uma conexão TCP na porta número 80 do host www.eurecom.fr e,
208
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
em seguida, envia o comando HTTP GET. Com isso, deverá aparecer a mensagem de
resposta, que inclui o arquivo básico HTML da homepage do professor Ross. Se você
preferir apenas ver as linhas de mensagem HTTP e não receber o objeto em si, substitua
GET por HEAD. Finalmente, substitua /~ross/index.html por /~ross/banana.html e veja
que tipo de mensagem você obtém.
Nesta seção, examinamos algumas linhas de cabeçalho que podem ser usadas em
mensagens de requisição e de resposta HTTP. A especificação do HTTP (especialmente
a do HTTP/1.1) define muitas outras linhas de cabeçalho que podem ser inseridas por
browsers, servidores Web e servidores cache de redes. Vimos apenas um pequeno
número da totalidade das linhas de cabeçalho. Vamos examinar mais algumas linhas a
seguir e mais outro pequeno número quando discutirmos o Web caching no final desta
seção.
Como um browser decide quais linhas de cabeçalho serão incluídas em uma
mensagem de requisição? Como um servidor Web decide quais linhas de cabeçalho
serão incluídas em uma mensagem de resposta? Um browser vai gerar linhas de
cabeçalho em razão de seu tipo e de sua versão (por exemplo, um browser HTTP/1.0
não vai gerar nenhuma linha de cabeçalho 1.1), da configuração do usuário para o
browser (por exemplo, idioma preferido) e de o browser ter uma versão do objeto
possivelmente ultrapassada em sua memória cache. Os servidores Web se comportam
de maneira semelhante: há diferentes produtos, versões e configurações, e tudo isso tem
influência sobre quais linhas de cabeçalho são incluídas nas mensagens de resposta.
8.6.4
Interação usuário/servidor: autenticação e cookies
Mencionamos anteriormente que um servidor HTTP não conserva informação de
estado. Isso simplifica o projeto do servidor e vem permitindo que os engenheiros
desenvolvam servidores Web de alto desempenho. No entanto, é sempre bom que um site
Web identifique usuários, seja porque o servidor deseja restringir o acesso do usuário, seja
porque ele quer servir conteúdo em razão da identidade do usuário. O HTTP fornece dois
mecanismos para ajudar um servidor a identificar um usuário: a autenticação e os cookies.
8.6.4.1
Autenticação
Muitos sites exigem que os usuários forneçam um nome de usuário e uma senha
para permitir o acesso aos documentos armazenados no servidor. Essa exigência se
denomina autenticação. O HTTP fornece codificações de status e cabeçalhos especiais
para auxiliar os sites a realizar a autenticação. Vamos tomar um exemplo para sentir
como funcionam essas codificações de status e cabeçalhos especiais. Suponha que um
cliente requisite um objeto de um servidor e que o servidor requisite autorização do
usuário.
O cliente envia primeiramente uma mensagem de requisição comum, sem linhas
de cabeçalho especiais. O servidor então responde com um corpo de entidade vazio
juntamente com uma codificação de status “401 Authorization Required”. Nessa
mensagem de resposta, ele inclui o cabeçalho “WWW-Authenticate:”, que especifica
em detalhes como proceder à autenticação. (Normalmente, ele mostra que o usuário
precisa fornecer um nome de usuário e uma senha).
O cliente recebe a mensagem de resposta, pede ao usuário um nome de usuário e
uma senha e reenvia a mensagem de requisição, mas, dessa vez, inclui uma linha de
cabeçalho “Authorization:”, que inclui o nome do usuário e a senha.
209
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Após obter o primeiro objeto, o cliente continua a enviar o nome de usuário e a
senha nas requisições subsequentes de objetos que estão no servidor. Isso normalmente
continua até que o cliente feche o browser. Contudo, enquanto o browser permanece
aberto, o nome de usuário e sua senha ficam na memória cache, de modo que não há um
novo pedido ao usuário de seu nome e sua senha para cada objeto que ele requisita!
Dessa maneira, o site pode identificar o usuário para cada pedido.
8.6.4.2
Cookies
Os cookies são um mecanismo alternativo que os sites usam para obter
informações dos usuários. Eles são definidos no RFC 2109. Alguns sites Web usam
cookies, outros, não. Vamos examinar um exemplo. Suponha que um cliente entre em
um site Web pela primeira vez e que esse site use cookies. A resposta do servidor vai
incluir um cabeçalho “Set-cookie:”. Frequentemente, essa linha de cabeçalho contém
um número de identificação gerado pelo servidor Web. Por exemplo, a linha de
cabeçalho poderia ser:
Set-cookie: 1678453
Quando o cliente HTTP recebe a mensagem de resposta, ele vê o cabeçalho “Setcookie:” e o número de identificação. Em seguida, ele anexa uma linha a um arquivo
especial de cookies que está armazenado na máquina cliente. Essa linha inclui o nome
do host do servidor e o número de identificação associado ao usuário. Nas requisições
subsequentes ao mesmo servidor, digamos, uma semana mais tarde, o cliente inclui um
cabeçalho de requisição “Cookie:”, e essa linha de cabeçalho especifica o número de
identificação para o servidor. No exemplo em curso, a mensagem de requisição inclui
a linha de cabeçalho:
Cookie: 1678453
Dessa maneira, o servidor não sabe o nome do usuário, mas sabe, na verdade, que
esse usuário é o mesmo que fez determinada requisição uma semana atrás.
Os servidores Web usam cookies para diferentes finalidades:

Se um servidor necessita de identificação mas não quer perturbar o usuário com um
pedido de nome de usuário e senha toda vez que ele visita o site, ele pode aplicar um
cookie.

Se um servidor quiser se lembrar das preferências de um usuário de modo que possa
oferecer propaganda dirigida durante as visitas subsequentes, ele pode aplicar um
cookie.

Se o usuário estiver fazendo compras em um site (por exemplo, comprando diversos
CDs), o servidor pode usar cookies para anotar os itens que o usuário está
comprando, ou seja, para criar um carrinho de compras virtual.
Devemos mencionar, no entanto, que os cookies causam problemas para um
usuário nômade que acessa o mesmo site de máquinas diferentes. O site vai tratar o
usuário como se fosse um usuário diferente para cada máquina diferente que ele usar.
8.6.5
O GET condicional
Por armazenar objetos que foram extraídos anteriormente, a função de Web cache pode
reduzir os atrasos de extração de objetos e diminuir a quantidade de tráfego enviado pela
Internet. Os Web caches podem residir em um cliente ou em um servidor de cache
210
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
intermediário da rede. Vamos tratar do cache em rede no final desta seção. Nesta subseção,
restringiremos nossa atenção ao cache no cliente.
Embora o uso de Web caching possa reduzir os tempos de resposta do ponto de vista
do usuário, ele introduz um novo problema – a cópia de um objeto existente no cache pode
estar desatualizada. Em outras palavras, o objeto abrigado no servidor Web pode ter sido
modificado desde a data em que a cópia passou para o cache no cliente. Felizmente, o HTTP
tem um mecanismo que permite que o cliente empregue o cache e, ao mesmo tempo, tenha
certeza de que todos os objetos apresentados estão atualizados. Esse mecanismo é chamado
de GET condicional (conditional GET). Uma mensagem de requisição HTTP é chamada de
mensagem GET condicional se (1) usa o método GET e (2) possui uma linha de cabeçalho
“If-Modified-Since”:
Para ilustrar como o GET condicional opera, vamos examinar um exemplo. Em
primeiro lugar, um browser requisita, de algum servidor Web, um objeto que não está no
cache.
GET /fruit/kiwi.gif HTTP/1.0
User-agent: Mozilla/4.0
Em segundo lugar, o servidor Web envia ao cliente uma mensagem de resposta com o
objeto:
HTTP/1.0 200 OK
Date: Wed. 12 Aug 1998 15:39:29
Server: Apache/l.3.0 (Unix)
Last-Modified: Mon. 22 Jun 1998 09:23:24
Content-Type: image/gif
(data data data data data ...)
O cliente mostra o objeto ao usuário e também o guarda em sua memória cache local.
O importante é que o cliente também guarde no cache, juntamente com o objeto, a data da
última modificação.
Em terceiro lugar, uma semana depois, o usuário requisita o mesmo objeto, e o objeto
ainda está no cache. Como esse objeto pode ter sido modificado no servidor Web na semana
anterior, o browser realiza uma verificação de atualização enviando um GET condicional.
Especificamente, o browser envia:
GET /fruit/kiwi.gif HTTP/l.0
User-agent: Mozilla/4.0
If-modified-since: Mon. 22 Jun 1998 09:23:24
Note que o valor da linha de cabeçalho “If-modified-since:” é exatamente igual ao valor
da linha de cabeçalho “Last-Modified:”, que foi enviada pelo servidor há uma semana. Esse
GET condicional está dizendo ao servidor para enviar o objeto somente se ele tiver sido
modificado depois da data especificada. Suponha que ele não tenha sido modificado desde
22 Jun 1998 09:23:24. Então, por fim, em quarto lugar, o servidor Web envia a mensagem
de resposta ao cliente:
211
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
HTTP/l.0 304 Not Modified
Date: Wed. 19 Aug 1998 15:39:29
Server: Apache/1.3.0 (Unix)
(corpo de mensagem vazio)
Vemos que, em resposta ao GET condicional, o servidor Web ainda envia uma
mensagem de resposta, mas não inclui nela o objeto requisitado. Incluir o objeto requisitado
apenas desperdiçaria largura de banda e aumentaria o tempo de resposta do ponto de vista do
usuário, particularmente se o objeto fosse grande. Note que essa última mensagem de
resposta traz inserida a linha de status “304 Not Modified”, que informa ao cliente que ele
pode seguir adiante e usar a cópia do objeto que está em seu cache.
8.6.6
Web Caches
Um Web cache – também chamado de servidor proxy – é uma entidade da rede que
atende às requisições HTTP em nome de um cliente. Ele tem seu próprio disco de
armazenagem e conserva, dentro dele, cópias de objetos recentemente requisitados. Como
ilustrado na Figura 8.14, os usuários configuram seu browser de modo que todas as suas
requisições HTTP sejam primeiramente dirigidas ao Web cache. Esse é um procedimento
simples para os browsers da Microsoft e da Netscape. Uma vez que o browser é configurado,
a requisição de um objeto feita por ele é primeiramente dirigida ao Web cache. Como
exemplo,
suponha
que
um
browser
esteja
requisitando
o
objeto
http://www.someschool.edu/campus.gif.

O browser estabelece uma conexão TCP com o Web cache e envia a ele uma requisição
HTTP para um objeto.

O Web cache verifica se ele tem uma cópia do objeto armazenada localmente. Se tiver,
ele envia ao browser do cliente o objeto dentro de uma mensagem de resposta HTTP.

Se o Web cache não tiver o objeto, ele abre uma conexão TCP com o servidor original,
isto é, com www.someschool.edu. Ele então envia uma requisição HTTP do objeto por
meio da conexão TCP. Após ter recebido essa requisição, o servidor original envia o
objeto dentro de uma resposta HTTP ao Web cache.

Quando o Web cache recebe o objeto, ele armazena uma cópia em seu arquivo local e
envia uma cópia, dentro de uma mensagem de resposta, ao browser do cliente (por meio
da conexão TCP existente entre o browser do cliente e o Web cache).
Note que o cache é tanto um servidor como um cliente. Quando recebe requisições de
um browser e envia respostas a ele, ele é um servidor. Quando envia requisições para um
servidor de origem e recebe respostas dele, ele é um cliente.
212
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura 8.14 – Clientes requisitando objetos por meio de um Web Cache.
Então, por que se incomodar com um Web caching? Que vantagens ele tem? Web
caches são utilizados em larga escala na Internet por, no mínimo, três razões. Em primeiro
lugar, o Web cache pode reduzir substancialmente o tempo de resposta para a requisição de
um cliente, em particular se o gargalo da largura de banda entre o cliente e o servidor original
for muito menor do que o gargalo da largura de banda entre o cliente e o cache. Se houver
uma conexão de alta velocidade entre o cliente e o cache, como é em geral o caso, e se o
cache tiver o objeto requisitado, então ele poderá entregar rapidamente o objeto ao cliente.
Em segundo lugar, como logo vamos ilustrar com um exemplo, os Web caches podem reduzir
substancialmente o tráfego no enlace de acesso de uma instituição qualquer à Internet. Ao
reduzir o tráfego, a instituição (por exemplo, uma empresa ou uma universidade) não precisa
ampliar sua largura de banda tão rapidamente, reduzindo assim os custos. Além disso, os
Web caches podem reduzir muito o tráfego na Web como um todo, melhorando, assim, o
desempenho para todas as aplicações. Em 1998, mais de 75 por cento do tráfego da Internet
era da Web; portanto, uma redução significativa no tráfego da Web pode ser traduzida em
melhoria significativa do desempenho da Internet. Em terceiro lugar, uma Internet com alta
densidade de cachês – tais como as de nível institucional, regional e nacional – fornece uma
infra-estrutura para rápida distribuição de conteúdo, mesmo para os provedores de conteúdo
que rodam seu site em servidores de baixa velocidade apoiados em enlaces de acesso de baixa
velocidade. Se esse provedor de conteúdo de “parcos recursos” de repente tiver um conteúdo
muito popular para distribuir, esse conteúdo será rapidamente copiado para os caches da
Internet e a grande demanda será satisfeita.
Para um entendimento mais profundo dos benefícios dos caches, vamos considerar um
exemplo no contexto da Figura 8.15. Essa figura mostra duas redes: uma rede institucional
e a Internet pública. A rede institucional é uma LAN de alta velocidade. Um roteador da
rede institucional e um roteador da Internet estão ligados por um enlace de 1,5 Mbps. Os
servidores originais estão todos ligados à Internet, mas localizados pelo mundo todo.
Suponha que o tamanho médio do objeto seja 100 Kbits e que a taxa média de requisição dos
browsers da instituição até os servidores de origem seja de 15 requisições por segundo.
Suponha também que o tempo entre o envio de uma requisição HTTP (dentro de um
datagrama IP) pelo roteador do lado da Internet do enlace de acesso mostrado na Figura 8.15
e o recebimento do datagrama IP (normalmente, muitos datagramas IPs) contendo a resposta
correspondente seja de 2 segundos em média. Vamos nos referir informalmente a esse atraso
como “atraso da Internet”.
213
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura 8.15 – Gargalo entre uma rede institucional e a Internet.
O tempo de resposta total – isto é, o tempo transcorrido entre a requisição de um objeto
feita pelo browser e o recebimento desse objeto – é a soma do atraso da LAN, do atraso de
acesso (isto é, o atraso entre os dois roteadores) e do atraso da Internet. Vamos fazer agora
um cálculo bastante rudimentar para estimar esse atraso. A intensidade de tráfego na LAN
é:
(15 requisições/segundo) (100 Kbits/requisição)/(10 Mbps) = 0,15,
ao passo que a intensidade de tráfego no enlace de acesso (do roteador da Internet ao roteador
da instituição) é:
(15 requisições/segundo) (100 Kbits/requisição)/(1,5 Mbps) = 1.
Uma intensidade de tráfego de 0,15 em uma LAN resulta em, no máximo, dezenas de
milissegundos de atraso; consequentemente, podemos desprezar o atraso da LAN. Contudo,
à medida que a intensidade de tráfego se aproxima de 1 (como é o caso do enlace de acesso
da Figura 8.15), o atraso em um enlace se torna muito grande e cresce sem limites. Assim, o
tempo médio de resposta para atender às requisições vai ser da ordem de minutos, se não for
maior, o que é inaceitável para os usuários da instituição. Evidentemente, algo precisa ser
feito.
Uma possível solução seria aumentar a velocidade de acesso de 1,5 Mbps para,
digamos, 10 Mbps. Isso reduz a intensidade de tráfego no enlace de acesso a 0,15, o que se
traduz em atrasos desprezíveis entre os dois roteadores. Nesse caso, o tempo total de
resposta, isto é, o atraso da Internet, será aproximadamente de 2 segundos. Mas essa solução
também significa que a instituição tem de atualizar seu enlace de acesso de 1,5 Mbps para
10 Mbps, o que pode ser muito dispendioso.
214
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura 8.16 – Adição de um cache à rede institucional.
Considere agora a solução alternativa de não atualizar o enlace de acesso, mas, em vez
disso, instalar um Web cache na rede institucional. Essa solução está ilustrada na Figura 8.16.
As taxas de resposta local – a fração de requisições que são satisfeitas por um cache – em
geral ficam na faixa de 0,2 a 0,7 na prática. Com a finalidade de ilustrar, vamos supor que
um cache forneça uma taxa de resposta local de 0,4 para essa instituição. Como os clientes
e o cache estão conectados à mesma LAN de alta velocidade, 40 por cento das requisições
serão satisfeitas pelo cache quase imediatamente, digamos, em 10 milissegundos. Todavia,
os demais 60 por cento das requisições ainda precisam ser satisfeitos pelos servidores
originais. Mas, com apenas 60 por cento dos objetos passando pelo enlace de acesso, a
intensidade de tráfego reduz de 1,0 para 0,6. Uma intensidade de tráfego menor do que 0,8
corresponde a um atraso pequeno, digamos, de dezenas de milissegundos, para um enlace de
1,5 Mbps. Esse atraso é desprezível se comparado aos 2 segundos do atraso da Internet.
Dadas essas considerações, o atraso médio é, por consequência,
0,4 (0,010 segundo) + 0,6 (2,01 segundos),
que é apenas ligeiramente maior do que 1,2 segundo. Assim, essa segunda solução fornece
um tempo de resposta até menor do que o oferecido pela troca do enlace de acesso e não
requer que a instituição atualize seu enlace com a Internet. Evidentemente, a instituição terá
de comprar e instalar um Web cache. Mas esse custo é baixo – muitos caches usam software
de domínio público que roda em servidores baratos e em PCs.
215
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Segurança em Redes
9.1
O que é segurança na rede?
Queremos lhe apresentar Alice e Bob, duas pessoas que desejam se comunicar “com
segurança”. Gostaríamos de observar que Alice e Bob podem ser dois roteadores que querem
trocar tabelas de roteamento com segurança, dois hosts que querem estabelecer uma conexão de
transporte segura ou duas aplicações de e-mail que querem trocar e-mails seguros – todos esses
tópicos serão examinados mais adiante neste capítulo. Alice e Bob são componentes conhecidos
da comunidade de segurança, talvez porque o nome deles seja mais interessante do que uma
entidade genérica chamada “A” que quer se comunicar com segurança com uma entidade genérica
“B”. Amores proibidos, comunicações em tempo de guerra e transações financeiras são as
necessidades dos seres humanos comumente citados quando o assunto é segurança; preferimos a
primeira necessidade e vamos usar, com muito prazer, Alice e Bob como nosso remetente e nosso
destinatário e imaginá-los nesse primeiro cenário.
9.1.1
Comunicação Segura
Dissemos que Alice e Bob querem se comunicar “com segurança”, mas o que isso
significa exatamente? Com certeza, Alice quer que Bob entenda a mensagem que ela enviou,
mesmo que eles estejam se comunicando por um meio “inseguro”, em que um intruso (Trudy,
a intrusa) pode interceptar, ler e registrar qualquer dado que seja transmitido de Alice a Bob.
Bob também quer ter certeza de que a mensagem que recebe de Alice foi de fato enviada por
ela, enquanto Alice quer ter certeza de que a pessoa com quem está se comunicando é de fato
Bob. Alice e Bob também querem ter certeza de que o conteúdo da mensagem de Alice não
foi alterado em trânsito. Dadas essas considerações, podemos identificar as seguintes
propriedades desejáveis da comunicação segura:

Sigilo: somente o remetente e o destinatário pretendido devem poder entender o conteúdo
da mensagem transmitida. O fato de “abelhudos” poderem interceptar a mensagem exige,
necessariamente, que esta seja cifrada de alguma maneira (que seus dados sejam
disfarçados) para impedir que a mensagem interceptada seja decifrada (entendida) por
um interceptador. Esse aspecto do sigilo é, provavelmente, o significado mais percebido
em “comunicação segura”. Note, contudo, que essa não é apenas uma definição limitada
de comunicação segura (relacionamos a seguir aspectos adicionais da segurança), mas
também uma definição bastante restrita de sigilo. Por exemplo, Alice poderia também
querer que o mero fato de ela estar se comunicando com Bob (ou os horários ou a
frequência de suas comunicações) fosse também um segredo! Estudaremos as técnicas
de criptografia para cifrar e decifrar dados na Seção 9.2.

Autenticação: o remetente e o destinatário precisam confirmar a identidade da outra parte
envolvida na comunicação – confirmar que a outra parte realmente é quem alega ser. A
comunicação pessoal entre seres humanos resolve facilmente esse problema pelo
reconhecimento visual. Quando entidades comunicantes trocam mensagens por um meio
pelo qual não podem “ver” a outra parte, a autenticação não é assim tão simples. Por que,
por exemplo, você deveria acreditar que o e-mail que recebeu e que contém uma sentença
afirmando que aquele e-mail veio de um amigo seu realmente veio daquele amigo? Se
alguém o chama ao telefone dizendo ser de seu banco e perguntando qual é o número de
sua conta, sua senha e seu saldo bancário, alegando finalidades de verificação, você dá
216
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
essas informações? Esperamos que não. Examinaremos as técnicas de autenticação na
Seção 9.3, incluindo algumas que, talvez surpreendentemente, também dependem de
técnicas criptográficas, que estudaremos na Seção 9.2.

Integridade de mensagem: mesmo que o remetente e o destinatário consigam se autenticar
reciprocamente, eles querem assegurar que o conteúdo de sua comunicação não seja
alterado, por acidente ou por má intenção, durante a transmissão. Extensões das técnicas
de soma de verificação que encontramos em protocolos de transporte e de enlace
confiáveis serão examinadas na Seção 9.4; essas técnicas também dependem dos
conceitos criptográficos apresentados na Seção 9.2.
Agora que estabelecemos o que significa comunicação segura nesse contexto, vamos
considerar o que quer dizer exatamente “canal inseguro”. A que informações um intruso tem
acesso e que ações podem ser tomadas sobre os dados transmitidos? A Figura 9.1 ilustra esse
cenário.
Alice, a remetente, quer enviar dados a Bob, o destinatário. A fim de trocar dados com
segurança, além de atender aos requisitos de sigilo, autenticação e integridade das
mensagens, Alice e Bob trocarão mensagens de controle e de dados (de maneira muito
semelhante ao modo como os remetentes e os destinatários TCP trocam segmentos de
controle e segmentos de dados). Todas ou algumas dessas mensagens serão cifradas de modo
típico. Um intruso passivo pode ouvir e gravar as mensagens de controle e de dados no canal;
um intruso ativo pode remover mensagens do canal e/ou adicioná-las a ele.
Figura 9.1 – Remetente, destinatário e intruso (Alice, Bob e Trudy).
9.1.2
Considerações sobre segurança de rede na Internet
Antes de analisarmos os aspectos técnicos de segurança da rede nas próximas seções,
vamos concluir nossa introdução relacionando as personagens fictícios – Alice, Bob e
Trudy – a cenários do “mundo real” da Internet de hoje.
Vamos começar com Trudy, a intrusa da rede. Um intruso de rede do “mundo real”
pode de fato ouvir e gravar mensagens da rede? É fácil fazer isso? Um intruso ativamente
pode injetar ou remover mensagens da rede? A resposta a isso tudo é um enfático sim. Um
analisador de pacotes (packet sniffer) é um programa que roda em um dispositivo acoplado
à rede e que recebe passivamente todos os quadros de camada de enlace que passam por sua
interface de rede. Em ambiente broadcast como uma LAN Ethernet, isso significa que o
analisador de pacotes recebe todos os quadros que estão sendo transmitidos para todos os
hosts da LAN. Qualquer host que tenha uma placa Ethernet pode facilmente servir de
analisador de pacotes, pois é só ajustar o NIC da Ethernet no modo promíscuo (promiscuous
mode) para que ele receba todos os quadros que passam pela Ethernet. Esses quadros podem,
então, ser passados aos programas de aplicação, que extraem os dados de aplicação. Por
217
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
exemplo, no cenário Telnet mostrado na Figura 9.2, o pedido de senha de login enviado de
A para B – bem como a senha informada em B – é “capturado” no host C. A captura de
pacotes é uma “faca de dois gumes” – pode ser de inestimável valor para um administrador
de rede realizar a monitoração e a administração da rede, mas também pode ser usada por um
hacker inescrupuloso. O software analisador de pacotes pode ser obtido de graça em vários
sites Web ou adquirido no mercado. Sabe-se que professores que ministram cursos sobre
redes têm passado exercícios de laboratório que envolvem escrever um programa de captura
de pacotes e de recuperação de dados no nível de aplicação.
Figura 9.2 – Analisador de Pacotes.
Qualquer equipamento conectado à Internet necessariamente envia datagramas IP para
a rede. Lembre-se de que esses datagramas transportam o endereço IP, bem como os dados
da camada superior. Um usuário que tenha completo controle sobre o software do
equipamento (em particular sobre o sistema operacional) pode facilmente modificar os
protocolos daquele equipamento e colocar um endereço IP arbitrário no campo de endereço
de origem do datagrama. Isso é conhecido como falsificação do IP. Dessa maneira, um
usuário pode montar um pacote IP que contenha qualquer carga útil (de camada superior) que
quiser e fazer com que pareça que os dados foram enviados de um host IP arbitrário. A
captura de pacotes e a falsificação do IP são apenas duas das maneiras mais comuns de
“ataques” à segurança da Internet.
Uma ampla terceira classe de ameaça à segurança são os ataques de recusa de serviço
(denial of service – DoS). Como o nome sugere, um ataque DoS torna impossível a utilização
da rede, do host ou de qualquer outro componente da infra-estrutura pelos usuários legítimos.
Em geral, ele funciona pela criação de uma quantidade tão grande de trabalho para a infraestrutura sob ataque que o trabalho legítimo não pode ser realizado. No chamado ataque de
inundação SYN, o atacante inunda um servidor com pacotes TCP SYN, cada um com um
endereço IP de fonte falsificado. O servidor, incapaz de diferenciar um pacote SYN legítimo
de um falsificado, completa o segundo estágio do estabelecimento de conexão TCP para um
SYN falsificado, alocando a ele uma estrutura de dados e estado. O terceiro estágio da
apresentação de três vias nunca é completado pelo atacante, o que deixa um número sempre
crescente de conexões abertas. A carga de pacotes SYN a ser processada e a exaustão da
memória livre podem derrubar o servidor. Um ataque DoS “smurf” opera fazendo com que
um grande número de hosts inocentes responda a pacotes ICMP de solicitação de eco (Ping)
contendo um endereço IP de fonte falsificado. Isso resulta no envio de um grande número
de pacotes de resposta de eco ao host cujo endereço IP é objeto da falsificação. O RFC 2267
e o RFC 2644 descrevem diversas medidas simples que podem ser tomadas para evitar esses
e outros ataques DoS.
Como há, na verdade, bichos-papões reais (também conhecidos como “Trudy”) à solta
na Internet, quais são os equivalentes de Alice e Bob na Internet, esses nossos dois amigos
218
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
que precisam se comunicar com segurança? Certamente, “Bob” e “Alice” são dois usuários
humanos em dois sistemas finais, por exemplo uma Alice real e um Bob real que de fato
querem trocar e-mails seguros. Eles podem também ser os participantes de uma transação
comercial eletrônica. Por exemplo, uma Alice real pode querer transmitir o número de seu
cartão de crédito a um servidor Web para comprar um produto por meio da rede. Como
ressalta o RFC 1636, contudo, esses mesmos participantes que necessitam de comunicação
segura podem também ser componentes da infra-estrutura da rede. Lembre-se de que o DNS
ou os roteadores daemons, que trocam tabelas de roteamento, exigem comunicação segura
entre dois participantes. Isso é válido para aplicações de gerenciamento de rede. Um intruso
que conseguisse interferir, controlar ou corromper ativamente consultas e atualizações do
DNS, processamentos de roteamento ou funções de gerenciamento de rede causaria uma
devastação na Internet.
Estabelecida a estrutura da rede, apresentadas algumas das mais importantes definições
e justificada a necessidade de segurança na rede, vamos examinar a criptografia, um tópico
de importância fundamental para muitos aspectos da segurança na rede.
9.2
Princípios da criptografia
Embora a criptografia tenha uma longa história que remonta, no mínimo, a Júlio César (daí
existir uma cifra chamada César), as modernas técnicas de criptografia, incluindo muitas das
usadas na Internet de hoje, são baseadas em progressos feitos nos últimos 30 anos. O livro de
Kahn The codebreakers nos oferece um fascinante panorama dessa longa história. Kaufman
apresenta uma discussão técnica detalhada (mas interessante e de fácil leitura) sobre criptografia,
sobretudo do ponto de vista da rede. Diffie fornece uma análise atraente e atualizada das questões
políticas e sociais (a respeito, por exemplo, da privacidade) que hoje estão inextricavelmente
entrelaçadas com a criptografia. Uma discussão completa sobre a criptografia exige um livro
inteiro; portanto, apenas trataremos de seus aspectos essenciais, em particular do modo como as
técnicas criptográficas são postas em prática na Internet de hoje.
As técnicas criptográficas permitem que um remetente disfarce os dados de modo que um
intruso não consiga obter nenhuma informação com base nos dados interceptados. O destinatário,
é claro, deve estar habilitado a recuperar os dados originais a partir dos dados criptografados. A
Figura 9.3 apresenta alguns dos mais importantes componentes criptográficos.
Figura 9.3 – Componentes Criptográficos.
219
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Suponha agora que Alice queira enviar uma mensagem a Bob. A mensagem de Alice em
seu modelo original (por exemplo, “Bob. I love you. Alice”1) é conhecida como texto aberto ou
texto claro. Alice criptografa sua mensagem em texto aberto usando um algoritmo de criptografia,
de modo que a mensagem criptografada, conhecida como texto cifrado, pareça ininteligível para
qualquer intruso. O interessante é que em muitos sistemas criptográficos modernos, incluindo os
usados na Internet, a técnica de codificação é conhecida – publicada, padronizada [RFC 1321,
RFC 2437, RFC 2420] e disponível para qualquer um, mesmo para um intruso em potencial!
Evidentemente, se todos conhecem o método para codificar os dados, então deve haver algum
pedaço de informação secreta que impede que um intruso decifre os dados transmitidos. É aqui
que entra o segredo da chave.
Na Figura 9.3, Alice fornece uma chave, KA, uma cadeia de números ou de caracteres como
entrada para o algoritmo de criptografia. O algoritmo de criptografia pega essa chave e o texto
aberto como entrada e produz o texto cifrado como saída. De maneira semelhante, Bob fornecerá
uma chave, KB, ao algoritmo de decriptogratia, que pega o texto cifrado e a chave de Bob como
entrada e produz o texto original como saída. Nos denominados sistemas de chaves simétricas,
as chaves de Bob e Alice são idênticas e secretas. Nos sistemas de chaves públicas, é usado um
par de chaves. Uma das chaves é conhecida por Bob e por Alice (na verdade, é conhecida pelo
mundo inteiro). A outra chave é somente conhecida por Bob ou por Alice (mas não por ambos).
Nas duas subseções seguintes, veremos em detalhes os sistemas de chaves simétricas e de chaves
públicas.
9.2.1
Criptografia de chaves simétricas
Todos os algoritmos criptográficos envolvem a substituição de um dado por outro,
como, por exemplo, tomar um trecho de um texto e então, calculando e substituindo esse
texto por outro cifrado apropriado, criar uma mensagem cifrada. Antes de examinarmos o
sistema criptográfico moderno baseado em chaves, vamos abordar um velho algoritmo de
chaves simétricas muito simples – atribuído a Júlio César – conhecido como cifra de César
(uma cifra é um método para criptografar dados).
A cifra de César funciona tomando cada letra da mensagem do texto aberto e a
substituindo pela k-ésima letra sucessiva do alfabeto (permitindo a alternância das letras do
alfabeto, isto é, a letra “z” seria seguida novamente da letra “a”). Por exemplo, se k = 3,
então a letra “a” do texto aberto fica sendo “d” no texto cifrado; “b” no texto aberto se
transforma em “e” no texto cifrado, e assim por diante. Nesse caso, o valor de k serve de
chave. Por exemplo, a mensagem “bob. I love you. a1ice.” se toma “ere. 1oryh brx. dolfh.”
em texto cifrado. Embora o texto cifrado realmente pareça não ter nexo, você não levaria
muito tempo para quebrar o código se soubesse que foi usada a cifra de César, pois há
somente 25 valores possíveis para as chaves.
Um aprimoramento da cifra de César é a denominada cifra monoalfabética, que
também substitui uma letra do alfabeto por outra. Contudo, em vez de substituir as letras
seguindo um padrão regular (por exemplo, substituição por um deslocamento de k para todas
as letras), qualquer letra pode ser substituída por qualquer outra, contanto que cada letra tenha
uma letra substituta exclusiva e vice-versa. A regra de substituição apresentada na Figura 9.4
mostra uma regra possível para codificar textos abertos.
1
A mensagem foi mantida no idioma original porque será apresentado o texto cifrado para ela. A tradução é “Bob, eu amo
você. Alice”.
220
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura 9.4 – Uma cifra monoalfabética.
A mensagem do texto aberto “bob. I love you. alice.” se torna “nkn, s gktc wky.
mgsbc.” Como aconteceu no caso da cifra de César, o texto parece sem nexo. A cifra
monoalfabética também parece ser melhor que a cifra de César, pois há 26! (10 26) possíveis
pares de letras, em vez de 25 pares possíveis! Usar a “força bruta” para experimentar 1026
pares demandaria um esforço demasiadamente grande e impediria que esse fosse um método
exequível para quebrar o algoritmo criptográfico e decodificar a mensagem. Contudo,
fazendo-se a análise estatística do texto aberto, por exemplo, e sabendo quais letras e grupos
de letras são mais frequentes nos textos do idioma em questão, torna-se relativamente fácil
quebrar esse código. Se o intruso tiver algum conhecimento sobre o possível texto da
mensagem, então ficará mais fácil ainda quebrar o código. Por exemplo, se a intrusa Trudy
for a esposa de Bob e suspeitar que ele está tendo um caso com Alice, ela poderá imaginar
que os nomes “Bob” e “Alice” aparecem no texto. Se Trudy tivesse certeza de que esses dois
nomes aparecem no texto cifrado e tivesse uma cópia do texto cifrado da mensagem do
exemplo, ela poderia imediatamente determinar sete dos 26 pares de letras, o que resultaria
em 109 possibilidades a menos para verificar pelo método da “força bruta”. Na verdade, se
Trudy suspeitasse que Bob estava tendo um caso, ela poderia muito bem esperar encontrar
algumas outras palavras preferenciais no texto também.
Ao considerarmos que seria fácil para Trudy quebrar o código criptográfico de Bob e
Alice, podemos distinguir três diferentes cenários, dependendo do tipo de informação que o
intruso tem:

Ataque exclusivo ao texto cifrado. Em alguns casos, o intruso pode ter acesso somente
ao texto cifrado interceptado, sem ter nenhuma informação exata sobre o conteúdo do
texto aberto. Já vimos como a análise estatística pode ajudar o ataque exclusivo ao texto
cifrado em um esquema criptográfico.

Ataque ao texto aberto conhecido. Vimos anteriormente que, se Trudy de algum modo
tivesse certeza de que “bob” e “Alice” apareciam no texto cifrado, ela poderia determinar
os pares (texto cifrado, texto aberto) para as letras a, l, i, c, e, b e o. Trudy poderia
também ser muito sortuda e ter gravado todas as transmissões de texto cifrado e
descoberto uma versão decifrada pelo próprio Bob escrita em um pedaço de papel.
Quando um intruso conhece alguns dos pares (texto aberto, texto cifrado), referimo-nos
a isso como ataque ao esquema criptográfico a partir do texto aberto conhecido.

Ataque ao texto aberto escolhido. Nesse tipo de ataque, o intruso pode escolher a
mensagem em texto aberto e obter seu modelo cifrado correspondente. Para os
algoritmos criptográficos que vimos até aqui, se Trudy conseguisse que Alice enviasse a
mensagem "The quick fox jumps over the lazy brown dog", ela poderia decifrar
completamente o esquema criptográfico. Veremos em breve que, para técnicas de
criptografia mais sofisticadas, um ataque a um texto aberto escolhido não significa
necessariamente que a técnica criptográfica possa ser decifrada.
Quinhentos anos atrás foram inventadas técnicas que aprimoravam a cifra
monoalfabética. Conhecidas hoje como cifras polialfabéticas, essas técnicas, incorretamente
atribuídas a Blaise de Vigenere, foram chamadas de cifras de Vigenere. A idéia subjacente
221
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
às cifras de Vigenere é usar múltiplas cifras monoalfabéticas e uma cifra monoalfabética
específica para codificar uma letra em uma posição específica no texto aberto da mensagem.
Assim, a mesma letra, quando aparece em posições diferentes no texto aberto da mensagem,
pode ser codificada de maneira diferente. A cifra de Vigenere mostrada na Figura 9.5 tem
duas cifras de César (com k = 5 e k = 19) que aparecem nas linhas da figura. Podemos optar
pelo uso dessas duas cifras de César, C1 e C2, seguindo o modelo de repetição C1, C2, C2, C1
C2. Em outras palavras, a primeira letra do texto deve ser cifrada usando-se C1, a segunda e
a terceira, C2, a quarta, C1 e a quinta, C2. O modelo, então, se repete, com a sexta letra sendo
cifrada usando-se C1; a sétima, C2, e assim por diante. Dessa maneira, a mensagem em texto
aberto “bob, I 1ove you.” é cifrada como “ghu, n etox dhz.”. Note que o primeiro “b” da
mensagem em texto aberto é cifrado usando-se C1 ao passo que o segundo “b” é cifrado
usando-se C2. Nesse exemplo, a “chave” da codificação e da decodificação é o conhecimento
das duas cifras de César (k = 5, k = 19) e do modelo C1, C2, C2, C1 C2.
Figura 9.5 – Uma cifra de Vigenere usando duas cifras de César.
9.2.2
Criptografia de chaves públicas
Por mais de dois mil anos (desde a época da cifra de César até a década de 70), a
comunicação cifrada exigia que as duas partes comunicantes compartilhassem um segredo
em comum – a chave simétrica usada para cifrar e decifrar. Uma dificuldade dessa
abordagem é que as duas partes têm de escolher, conjuntamente, de alguma maneira, qual é
a chave; mas, para fazê-lo, é preciso comunicação (presumivelmente segura)! Talvez as
partes pudessem se encontrar, escolher a chave pessoalmente (por exemplo, dois dos
centuriões de César poderiam se encontrar nos banhos romanos) e, mais tarde, comunicar a
cifra. No atual mundo em rede, contudo, o mais provável é que as partes comunicantes nunca
possam se encontrar e jamais possam conversar a não ser pela rede. É possível que elas se
comuniquem por criptografia sem compartilhar uma chave comum secreta conhecida com
antecedência? Em 1976, Diffie e Hellman apresentaram um algoritmo (conhecido como
Troca de Chaves Diffie Hellman – Diffie Hellman Key Exchange) que faz exatamente
isso – uma abordagem da comunicação segura radicalmente diferente e de uma elegância
maravilhosa que levou ao desenvolvimento dos atuais sistemas de criptografia de chaves
públicas. Veremos em breve que os sistemas de criptografia de chaves públicas também têm
diversas propriedades maravilhosas que os tornam úteis não somente para criptografia, mas
também para autenticação e assinaturas digitais. As primeiras ideias de comunicação segura
([Diffie, 1976] e [RSA, 1978]) constituem a base da atual atividade de comércio eletrônico
(veja a Seção 9.7). Recentemente, veio à luz que ideias semelhantes às de [Diffie, 1976] e
às da [RSA, 1978] foram desenvolvidas independentemente no início da década de 70 em
uma série de relatórios secretos escritos por pesquisadores do Grupo de Segurança para
Comunicação e Eletrônica (Communications-Electronics Security Group) do Reino Unido
[Cesg, 2000]. Como acontece com frequência, grandes ideias podem surgir de modo
independente em diversos lugares; felizmente, os progressos da criptografia de chaves
públicas ocorreram não apenas no âmbito privado, mas também no público.
O uso da criptografia de chaves públicas é bastante simples. Suponha que Alice queira
se comunicar com Bob. Como mostra a Figura 9.6, em vez de Bob e Alice compartilharem
222
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
uma única chave secreta (como no caso dos sistemas de chaves simétricas), Bob (o
destinatário das mensagens de Alice) tem duas chaves – uma chave pública, que está à
disposição do mundo todo (inclusive à disposição de Trudy, a intrusa), e uma chave privada,
que apenas ele “Bob” conhece. Para se comunicar com Bob, Alice busca primeiramente a
chave pública de Bob. Em seguida, ela criptografa sua mensagem usando a chave pública de
Bob e um algoritmo criptográfico conhecido (por exemplo, padronizado). Bob recebe a
mensagem criptografada de Alice e usa sua chave privada e um algoritmo de decriptografia
conhecido (por exemplo, padronizado) para decifrar a mensagem de Alice. Dessa maneira,
Alice pode enviar uma mensagem secreta a Bob sem que nenhum deles tenha de permutar
alguma chave secreta!
Figura 9.6 – Criptografia de chaves públicas.
Usando a notação da Figura 9.6, para qualquer mensagem m, dB(eB(m)) = m, isto é,
aplicando a chave pública de Bob, eB, e em seguida a chave privada de Bob, dB, à mensagem
m, recuperamos m. Veremos em breve que podemos permutar as chaves criptográficas
pública e privada e obter o mesmo resultado, isto é, e B(dB(m)) = dB(eB(m)) = m.
O uso da criptografia de chave pública é, portanto, conceitualmente simples. Mas
apresenta duas preocupações. A primeira preocupação diz respeito ao conhecimento público
da chave e do algoritmo de criptografia, isto é, embora um intruso que intercepta a mensagem
cifrada de Alice veja apenas dados ininteligíveis, ele conhece tanto a chave (a chave pública
de Bob, que está disponível a todos) quanto o algoritmo que Alice usou para a criptografia.
Assim, Trudy pode montar um ataque ao texto aberto escolhido utilizando o algoritmo
criptográfico padronizado conhecido e a chave criptográfica de acesso público de Bob para
codificar a mensagem que quiser! Ela pode até tentar, por exemplo, decodificar mensagens,
ou partes delas, que suspeita que Alice tenha enviado. Fica claro que, para a criptografia de
chave pública funcionar, a escolha de chaves e de códigos de criptografia/decriptografia deve
ser feita de tal maneira que seja impossível (ou, ao menos, tão difícil que se torne quase
impossível) para um intruso determinar a chave privada de Bob ou conseguir decifrar ou
adivinhar a mensagem de Alice a Bob. A segunda preocupação se refere ao envio da
mensagem cifrada, ou seja, como a chave criptográfica de Bob é pública, qualquer um pode
enviar uma mensagem cifrada a Bob, incluindo Alice ou alguém se passando por Alice. No
caso de uma única chave secreta compartilhada, o fato de o remetente conhecer a chave
secreta identifica implicitamente o remetente para o destinatário. No caso da criptografia de
chave pública, contudo, isso não acontece, já que qualquer um pode enviar uma mensagem
cifrada a Bob usando a chave dele, que está publicamente disponível a todos. É preciso uma
assinatura digital, um tópico que estudaremos na Seção 9.4, para vincular um remetente à
mensagem.
223
Apostila de Fundamentos de Redes de Computadores
9.3
Prof: Ricardo Quintão
Autenticação: quem é você?
Autenticação é o processo de provar a própria identidade a alguém. Como seres humanos,
autenticamo-nos mutuamente de muitas maneiras: reconhecemos mutuamente nosso rosto quando
nos encontramos, reconhecemos mutuamente nossa voz ao telefone, somos autenticados pela
autoridade alfandegária que nos compara à foto em nosso passaporte.
Nesta seção, veremos como uma parte pode autenticar uma outra parte quando as duas estão
se comunicando por uma rede. Examinaremos aqui a autenticação de uma parte “ao vivo”, no
instante em que a comunicação está realmente ocorrendo. Veremos que esse problema é um
pouco diferente do problema de provar que uma mensagem recebida em algum momento no
passado (por exemplo, que possa ter sido arquivada) é, na verdade, de quem se declarou como o
remetente. Esse último problema é chamado de problema de assinatura digital, um assunto que
examinaremos na Seção 9.4.
Ao fazer a autenticação pela rede, as partes comunicantes não podem confiar em
informações biométricas, como a aparência visual ou a voz característica. Na verdade, veremos
em nossos estudos de caso posteriores que são muitas vezes componentes da rede, como
roteadores e processos cliente/servidor, que devem se autenticar mutuamente. Aqui, a
autenticação deve ser feita somente na base de mensagens e de dados trocados como parte de um
protocolo de autenticação. Em geral, um protocolo de autenticação deveria rodar antes que as
duas partes comunicantes rodassem qualquer outro protocolo (por exemplo, um protocolo de
transferência de dados confiável, um protocolo de troca de tabelas de roteamento ou um protocolo
de e-mail). O protocolo de autenticação estabelece primeiramente as identidades das partes de
maneira satisfatória para ambas; somente após a autenticação as partes se lançam à tarefa que têm
em mãos.
Desenvolveremos várias versões de um protocolo de autenticação, que chamaremos de
PA – protocolo de autenticação, com alguns furos (isto é, falhas na segurança) que deverão ser
descobertos durante a apresentação de cada versão. Vamos começar supondo que Alice precisa
se autenticar para Bob.
9.3.1
Protocolo de autenticação PA 1.0
O protocolo de autenticação mais básico que podemos imaginar talvez seja um
protocolo em que Alice simplesmente envia uma mensagem a Bob dizendo que ela é Alice.
Esse protocolo é mostrado na Figura 9.7. A falha aqui é óbvia – não há meios de Bob saber
se a pessoa que está enviando a mensagem “Eu sou Alice” é realmente Alice. Por exemplo,
Trudy (a intrusa) poderia muito bem enviar essa mensagem.
Figura 9.7 – Protocolo PA 1.0 e um cenário de falha.
224
Apostila de Fundamentos de Redes de Computadores
9.3.2
Prof: Ricardo Quintão
Protocolo de autenticação PA 2.0
No caso em que Alice tem um endereço de rede conhecido (por exemplo, um endereço
IP), que usa sempre que quer se comunicar, Bob poderia tentar autenticar Alice verificando
se o endereço de fonte do datagrama IP que carrega a mensagem de autenticação é o mesmo
daquele endereço conhecido de Alice. Se for, Alice estará autenticada. Isso poderia impedir
que um intruso de rede muito ingênuo se fizesse passar por Alice. Mas não deteria o
estudante determinado que está lendo este livro e muitos outros! Veja a Figura 9.8.
Figura 9.8 – Protocolo PA 2.0 e um cenário de falha.
Dado que já estudamos a rede e a camada de enlace, sabemos que não é tão difícil (por
exemplo, se alguém tivesse acesso ao código do sistema operacional e pudesse construir seu
próprio núcleo de sistema operacional, como é o caso do Linux e de vários outros sistemas
operacionais de acesso grátis) criar um datagrama IP, colocar qualquer endereço IP de fonte
que quiséssemos (por exemplo, incluir o endereço IP conhecido de Alice) dentro do
datagrama IP e enviá-lo pelo protocolo de camada de enlace ao próximo roteador. Dali em
diante, o datagrama incorretamente endereçado seria transmitido até Bob. Essa abordagem
é um tipo de falsificação do IP, uma técnica muito conhecida de ataque à segurança. A
falsificação do IP poderá ser evitada se o roteador estiver configurado para recusar
datagramas IP que não têm um dado endereço IP. Por exemplo, o roteador de primeiro salto
de Trudy poderia ser configurado para repassar apenas datagramas que contivessem o
endereço IP de fonte da própria Trudy. Contudo, essa capacidade não é universalmente
disseminada nem obrigatória. Assim, seria tolice de Bob achar que o administrador de rede
de Trudy (que poderia ser ela mesma) configuraria o roteador de primeiro salto dela para
repassar apenas os datagramas adequadamente endereçados.
9.3.3
Protocolo de autenticação PA 3.0
Uma abordagem clássica para a autenticação é usar uma senha secreta. Temos números
secretos para nos identificarmos nos caixas automáticos e senhas de login para sistemas
operacionais. A senha é um segredo compartilhado pelo autenticador e pela pessoa que está
sendo autenticada. Vimos que o HTTP usa um esquema de autenticação baseado em senha.
O Telnet e o FTP também utilizam senha de autenticação. Assim, no protocolo PA 3.0, Alice
envia sua senha secreta a Bob, como mostra a Figura 9.9.
A falha de segurança, nesse caso, é visível. Se Trudy bisbilhotar uma comunicação de
Alice, ela poderá descobrir a senha dela. Para que você não pense que isso é improvável,
considere o fato de que, quando se inicia uma sessão Telnet com outro computador e se faz
o login, a senha de login não é criptografada para ser enviada ao servidor Telnet. Alguém
conectado ao Telnet cliente ou ao servidor da LAN poderia “procurar” (ler e armazenar) todos
os pacotes transmitidos pela LAN e, dessa maneira, se apossar da senha de login. De fato,
225
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
essa é uma abordagem muito conhecida para roubar senhas. Essa ameaça, obviamente, é
muito real; portanto, o PA 3.0 com certeza não é apropriado.
Figura 9.9 – Protocolo PA 3.0 e um cenário de falha.
9.3.4
Protocolo de autenticação PA 3.1
Como acabamos de estudar a criptografia na seção anterior, nossa próxima ideia para
consertar o PA 3.0 é, naturalmente, usar a criptografia. Criptografando a senha de Alice,
Trudy não conseguirá descobri-la! Supondo-se que Alice e Bob compartilhem uma chave
simétrica secreta, KA–B, então Alice pode codificar a senha e enviar sua mensagem de
identificação, “Eu sou Alice”, e sua senha criptografada a Bob. Bob então decifra a senha e,
se a senha estiver correta, autentica Alice. Ele fica tranquilo ao autenticar Alice, já que ela
conhece não somente a senha, mas também o número da chave secreta necessário para
codificar a senha. Vamos chamar esse protocolo de PA 3.1.
Embora seja verdade que o PA 3.1 impede que Trudy descubra a senha de Alice, o uso
de criptografia nesse caso não resolve o problema da autenticação! Bob novamente está
sujeito ao denominado ataque de reprodução: basta Trudy bisbilhotar uma comunicação de
Alice, gravar a versão criptografada da senha e, mais tarde, reproduzir essa versão
criptografada para Bob, fingindo que é Alice. O uso de uma senha criptografada não faz com
que a situação fique muito diferente daquela da Figura 9.9.
9.3.5
Protocolo de autenticação PA 4.0
O problema com o PA 3.1 é que a mesma senha é usada repetidamente. Um modo de
solucionar esse problema seria utilizar cada vez uma senha diferente. Alice e Bob poderiam
combinar uma sequência de senhas (ou um algoritmo para geração de senhas) e usar cada
uma delas apenas uma vez, em sequência. Essa ideia é usada no sistema S/KEY [RFC 1760],
que adota um mecanismo lançado por Lamport para gerar uma sequência de senhas.
No entanto, em vez de pararmos nesse ponto da solução, vamos considerar uma
abordagem mais geral para combater o ataque de reprodução. O cenário de falha da
Figura 9.9 resultou do fato de Bob não conseguir distinguir a autenticação original de Alice
da reprodução da autenticação original de Alice. Em outras palavras, Bob não conseguiu
saber se Alice estava “ao vivo” na conexão (isto é, se naquela ocasião Alice estava realmente
na outra extremidade da conexão) ou se as mensagens que ele estava recebendo eram uma
reprodução gravada de uma autenticação anterior de Alice. O leitor muito (muito) observador
vai lembrar que o protocolo de apresentação de três vias do TCP tinha de enfrentar o mesmo
problema – o lado servidor de uma conexão TCP não era obrigado a aceitar uma conexão se
o segmento SYN recebido fosse uma cópia antiga (retransmissão) de um segmento SYN de
226
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
uma conexão anterior. Como o lado servidor do TCP resolvia o problema de determinar se
o cliente estava realmente “ao vivo”? Ele escolhia um número de sequência inicial que não
era usado a um longo período de tempo, enviava esse número ao cliente e ficava esperando
que o cliente respondesse com um segmento ACK contendo esse número. Podemos adotar
a mesma ideia aqui, para a finalidade de autenticação.
Um nonce é um número que um protocolo vai usar apenas uma vez. Assim que um
protocolo usar um nonce, nunca mais o utilizará. Nosso protocolo PA 4.0 usa um nonce
como segue:
1. Alice envia a mensagem “Eu sou A1ice” para Bob.
2. Bob escolhe um nonce, R, e o envia a Alice.
3. Alice criptografa o nonce usando a chave simétrica secreta KA–B que combinou com Bob
e envia o nonce cifrado KA–B(R) de volta a Bob. Como acontece no protocolo PA 3.1, é
o fato de Alice conhecer a chave KA–B e usá-la para codificar um valor que permite que
Bob saiba que a mensagem que recebeu foi gerada por Alice. O nonce é utilizado para
assegurar que Alice está “ao vivo”.
4. Bob decifra a mensagem recebida. Se o nonce decifrado for igual ao nonce que enviou a
Alice, então ela estará autenticada.
O protocolo PA 4.0 está ilustrado na Figura 9.10. Usando um valor R apenas uma
única vez e, em seguida, verificando o valor devolvido, KA–B(R), Bob pode ter certeza de que
Alice é quem diz ser (já que conhece o valor da chave secreta necessário para cifrar R), e
também de que ela está “ao vivo” (já que ela tem o nonce cifrado R que Bob acabou de criar).
Figura 9.10 – Protocolo PA 4.0 e um cenário de falha.
9.3.6
Protocolo de autenticação PA 5.0
O uso de um nonce e da criptografia de chaves simétricas criou a base de nosso bemsucedido protocolo de autenticação PA 4.0. Uma pergunta natural é se podemos usar um
nonce juntamente com a criptografia de chaves públicas (em vez de a criptografia de chaves
simétricas) para resolver o problema de autenticação. A utilização de uma abordagem de
chaves públicas evitaria a dificuldade existente em qualquer sistema compartilhado – a
preocupação com o modo pelo qual as duas partes ficarão conhecendo o valor da chave
secreta compartilhada, em primeiro lugar. O uso que o protocolo PA 5.0 faz da criptografia
de chaves públicas é análogo ao uso que o protocolo PA 4.0 faz da criptografia de chaves
simétricas:
1. Alice envia a mensagem “Eu sou A1ice” para Bob.
2. Bob escolhe um nonce, R, e o envia a Alice. Novamente, o nonce é usado para ele se
certificar de que Alice está “ao vivo”.
3. Alice usa seu algoritmo criptográfico privado com sua chave privada, dA, para o nonce e
envia o valor resultante dA(R) a Bob. Como somente Alice conhece sua chave privada,
ninguém, exceto ela, pode gerar dA(R).
227
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
4. Bob aplica o algoritmo criptográfico público de Alice, e A, à mensagem recebida, isto é,
ele processa eA(dA(R)). Lembre-se de que em nossa discussão sobre a criptografia de
chave pública RSA, na Seção 9.2, eA(dA(R)) = R = dA(eA(R)). Assim, Bob calcula R e
autentica Alice.
A operação do protocolo PA 5.0 é ilustrada na Figura 9.11. O protocolo PA 5.0 é tão
seguro quanto o protocolo PA 4.0? Ambos usam nonces. Como o PA 5.0 usa técnicas de
chave pública, ele requer que Bob recupere a chave pública de Alice. Isso leva a um cenário
interessante, mostrado na Figura 9.12, em que Trudy pode se passar por Alice perante Bob:
Figura 9.11 – Protocolo PA 5.0 trabalhando corretamente.
1. Trudy envia a mensagem “Eu sou A1ice” para Bob.
2. Bob escolhe um nonce, R, e o envia a Alice, mas a mensagem é interceptada por Trudy.
3. Trudy aplica seu algoritmo criptográfico privado com sua chave privada, d T para o nonce
e envia o valor resultante, dT(R), a Bob. Para Bob, dT(R) é apenas uma porção de bits, e
ele não sabe se os bits representam dT(R) ou dA(R).
4. Bob deve agora pegar a chave pública de Alice para aplicar e A ao valor que acabou de
receber. Ele envia a mensagem a Alice, pedindo seu e A (Bob também pode recuperar a
chave pública de Alice do site Web dela). Trudy intercepta também essa mensagem e
responde a Bob devolvendo eT, isto é, a chave pública dela. Bob então calcula
eT(dT(R)) = R e, assim, autentica Trudy como se ela fosse Alice!
Figura 9.12 – Falha de segurança no protocolo PA 5.0.
Fica claro nesse cenário que o protocolo PA 5.0 é tão “seguro” quanto a distribuição
de chaves públicas. Felizmente, existem maneiras seguras de distribuir chaves públicas,
como veremos na Seção 9.5.
No cenário da Figura 9.12, Bob e Alice podem acabar descobrindo, em conjunto, que
alguma coisa está errada, pois Bob vai dizer que interagiu com Alice, mas Alice sabe que
isso não aconteceu. Há um ataque ainda mais insidioso que poderia evitar essa descoberta.
228
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
No cenário da Figura 9.13, Alice e Bob estão conversando, mas Trudy, explorando a mesma
falha no protocolo de autenticação, consegue se interpor de maneira transparente entre Alice
e Bob. Em particular, se Bob começar a enviar dados cifrados a Alice usando a chave
criptográfica que recebeu de Trudy, Trudy poderá recuperar o texto aberto da comunicação
entre Bob e Alice. Ao mesmo tempo, Trudy pode repassar os dados de Bob a Alice (após ter
decifrado os dados usando a chave pública real de Alice).
Bob está lá, feliz da vida, enviando dados criptografados. Alice também está lá, feliz
da vida, recebendo dados criptografados e usando para isso sua própria chave pública; ambos
não sabem da presença de Trudy. Se acontecer de Bob e Alice se encontrarem mais tarde e
discutirem sua interação, Alice terá recebido exatamente o que Bob enviou, de modo que não
se perceberá que alguma coisa está errada. Esse é um exemplo do chamado ataque do homem
do meio (no caso, da “mulher do meio”). Às vezes ele também é chamado de ataque da
brigada do balde, já que o modo como Trudy está passando os dados entre Alice e Bob parece
a passagem dos baldes de água pela longa fila de pessoas (chamada de “brigada do balde”)
que estão apagando um incêndio utilizando uma fonte de água longínqua.
Figura 9.13 – Um ataque do homem do meio.
9.4
Integridade
Pense no número de vezes em que você pôs sua assinatura em um pedaço de papel durante
a última semana. Você assina cheques, comprovantes de operação de cartões de crédito,
documentos legais e cartas. Sua assinatura atesta o fato de que você (e não outra pessoa) conhece
o conteúdo do documento e/ou concorda com ele. No mundo digital, frequentemente se quer
indicar o dono ou o criador de um documento ou deixar claro que alguém concorda com o
conteúdo de um documento. A assinatura digital é uma técnica criptográfica usada para cumprir
essa finalidade no mundo digital.
Exatamente como acontece com a assinatura de próprio punho, a assinatura digital deve ser
verificável, não falsificável e incontestável. Em outras palavras, deve ser possível “provar” que
um documento assinado por um indivíduo foi na verdade assinado por ele (a assinatura tem de ser
verificável) e que somente aquele indivíduo poderia ter assinado o documento (a assinatura não
pode ser falsificada, e o signatário não pode mais tarde negar ter assinado o documento). Isso se
consegue facilmente com a criptografia de chaves públicas.
229
Apostila de Fundamentos de Redes de Computadores
9.4.1
Prof: Ricardo Quintão
Geração de assinaturas digitais
Suponha que Bob queira assinar “digitalmente” um documento m. Imagine que o
documento seja um arquivo ou uma mensagem que Bob vai assinar e enviar. Como mostra
a Figura 9.14, para assinar esse documento Bob simplesmente usa sua chave criptográfica
privada dB para processar dB(m). A princípio, pode parecer estranho que Bob esteja rodando
um algoritmo de decriptografia sobre um documento que não foi codificado. Mas lembre-se
de que ”decriptografia” nada mais é do que uma operação matemática (exponenciação à
potência d no RSA; veja a Seção 9.2) e que a intenção de Bob não é embaralhar ou disfarçar
o conteúdo do documento, mas assinar o documento de maneira que seja verificável, não
falsificável e incontestável. Bob tem o documento, m, e sua assinatura digital do documento,
dB(m).
Figura 9.14 – Criação de uma assinatura digital para um documento.
A assinatura digital dB(m) atende às nossas exigências de ser verificável, não
falsificável e incontestável? Suponha que Alice tenha m e dB(m). Ela quer provar na Justiça
(em ação litigiosa) que Bob de fato assinou o documento e que ele era a única pessoa que
poderia tê-lo assinado. Ela pega a chave pública de Bob, e B, e a aplica à assinatura digital
dB(m) associada ao documento m. Em outras palavras, ela processa eB(dB(m)) e, voilà, com
dramática encenação, produz m, que é uma reprodução exata do documento original! Ela
então argumenta que somente Bob poderia ter assinado o documento porque:

Quem quer que tenha assinado o documento deve ter usado a chave criptográfica privada
dB para processar a assinatura dB(m), de modo que eB(dB(m)) = m.

A única pessoa que poderia conhecer a chave privada d B é Bob. Lembre-se que dissemos
em nossa discussão do RSA, na Seção 9.2, que conhecer a chave pública eB não serve
para descobrir a chave privada dB. Portanto, a única pessoa que poderia conhecer d B é
aquela que gerou o par de chaves (eB, dB) em primeiro lugar, ou seja, Bob. (Note que,
para isso, supomos que Bob não passou dB a ninguém e que ninguém “roubou” dB de
Bob).
Também é importante notar que, se o documento original m for modificado para algum
modelo alternativo m’, a assinatura que Bob criou para m não será válida para m’, já que
eB(dB(m)) não é igual a m’.
Assim, vemos que as técnicas da criptografia de chaves públicas fornecem uma
maneira simples e elegante de assinar documentos digitalmente, uma maneira que é
verificável, não falsificável e incontestável e que protege contra modificações posteriores do
documento.
230
Apostila de Fundamentos de Redes de Computadores
9.4.2
Prof: Ricardo Quintão
Resumo de mensagem
Vimos na subseção anterior que a tecnologia de criptografia de chaves públicas pode
ser usada para criar uma assinatura digital. Uma preocupação quanto à assinatura de dados
por criptografia, contudo, é que codificar e decifrar são processamentos dispendiosos. No
caso da assinatura digital de um documento realmente importante, digamos, uma fusão entre
duas grandes empresas multinacionais ou um acordo com uma criança para que ela limpe seu
quarto uma vez por semana, o custo de processamento pode não ser importante. No entanto,
muitos dispositivos e processos de rede (por exemplo, roteadores trocando informações de
tabela de roteamento e agentes de usuários trocando correspondência por e-mail) trocam de
modo rotineiro, dados que poderiam não ser necessariamente criptografados. No entanto,
eles querem garantir que:

O remetente dos dados seja quem diz ser, ou seja, que o remetente assine os dados e que
essa assinatura possa ser verificada.

Os dados transmitidos não foram modificados desde o momento em que o remetente os
criou e assinou.
Dada a sobrecarga de criptografia e decriptografia, a assinatura de dados por
criptografia/decriptografia completa pode ser exagerada. Uma abordagem mais eficiente,
usando os chamados resumos de mensagem, pode atingir esses dois objetivos sem codificar
completamente a mensagem.
Um resumo de mensagem é muito parecido com uma soma de verificação. Os
algoritmos de resumo de mensagem pegam uma mensagem m, de comprimento arbitrário, e
calculam uma “impressão digital” de comprimento fixo dos dados, conhecida como resumo
de mensagem H(m). O resumo de mensagem protege os dados, uma vez que, se m for
modificado para m’ (seja por má intenção ou por acidente), então a mensagem H(m)
processada para os dados originais (e transmitida com os dados) não vai combinar com a
H(m) processada sobre os dados modificados. O resumo de mensagem provê integridade aos
dados, mas que auxílio presta na assinatura da mensagem m? O objetivo aqui é que, em vez
de Bob assinar digitalmente (criptografar) a mensagem inteira processando d B(m), seria
possível que ele assinasse apenas o resumo de mensagem processando dB(H(m)). Em outras
palavras, ter o conjunto m e dB(H(m)) (note que m não é criptografada) deve ser “tão bom
quanto” ter uma mensagem completa assinada dB(m). Isso significa que o conjunto m e
dB(H(m)) deve ser não falsificável, verificável e incontestável. A não falsificabilidade exigirá
que o algoritmo de resumo de mensagem que calcula o resumo de mensagem tenha algumas
propriedades especiais, como veremos a seguir.
Nossa definição de resumo de mensagem pode parecer muito semelhante à definição
de uma soma de verificação (por exemplo, a soma de verificação da Internet) ou de um código
de detecção de erros muito mais poderoso, como a verificação de redundância cíclica. Ele é
realmente diferente? Somas de verificação, verificações de redundância cíclica e resumos de
mensagem são exemplos das denominadas funções de hash. Como mostra a Figura 9.15,
uma função de hash pega uma entrada de dados, m, e processa uma cadeia de tamanho fixo
conhecida como hash. A soma de verificação da Internet, as CRCs e os resumos de
mensagem estão de acordo com essa definição. Se assinar uma “resumo de mensagem” deve
ser “tão bom quanto” assinar a mensagem inteira, em particular se deve satisfazer à exigência
de que não haja possibilidade de falsificação, então o algoritmo de resumo de mensagem
deve ter as seguintes propriedades adicionais:

Dado um valor de resumo de mensagem x, não deve ser factível descobrir, por meio de
processamento, uma mensagem y, tal que H(y) = x.
231
Apostila de Fundamentos de Redes de Computadores

Prof: Ricardo Quintão
Não deve ser, em termos computacionais, factível descobrir quaisquer duas mensagens x
e y, tais que H(x) = H(y).
Figura 9.15 – Funções de hash são usadas para criar resumos de mensagem.
Informalmente, essas duas propriedades significam que, em termos de processamento,
é impraticável que um intruso substitua uma mensagem por outra se a primeira estiver
protegida por um resumo de mensagem. Em outras palavras, se (m, H(m)) for o par do
resumo de mensagem criado pelo remetente, então um intruso não poderá falsificar o
conteúdo de outra mensagem, y, de modo que esta tenha o mesmo valor do resumo de
mensagem da mensagem original. Quando Bob assina m, processando dB(H(m)), sabemos
que nenhuma outra mensagem pode substituir m. Além disso, a assinatura digital de Bob,
H(m), identifica exclusivamente Bob como o signatário verificável e incontestável de H(m)
(e, em consequência, também de m), como discutimos na Seção 9.4.1.
Figura 9.16 – Envio de uma mensagem assinada digitalmente.
No contexto em que Bob envia uma mensagem a Alice, a Figura 9.16 apresenta um
resumo do procedimento operacional para a criação de uma assinatura digital. Bob processa
sua mensagem longa original por meio de uma função de hash para criar um resumo de
mensagem. Então, ele criptografa o resumo de mensagem com sua própria chave privada.
A mensagem original (em texto aberto) e o resumo de mensagem digitalmente assinado
(daqui em diante denominado assinatura digital) são, então, enviados a Alice. A Figura 9.17
232
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
mostra um resumo do procedimento operacional de verificação da integridade da mensagem.
Alice aplica a chave pública do remetente à mensagem para recuperar o resumo de
mensagem. Ela também aplica a função de hash ao texto aberto da mensagem para obter um
segundo resumo de mensagem. Se os dois resumos coincidirem, então Alice poderá ter
certeza quanto à integridade e ao autor da mensagem.
Figura 9.17 – Verificação da integridade de uma mensagem assinada.
9.4.3
Algoritmos de função de hash
É bom nos convencermos de que uma simples soma de verificação, como a da Internet,
daria um péssimo algoritmo de resumo de mensagem. Em vez de processarmos a aritmética
de complemento de 1 (como é feito para a soma de verificação da Internet), vamos processar
uma soma de verificação tratando cada caracter como um byte e somando os bytes em
conjunto usando porções de 4 bytes por vez. Suponha que Bob deva a Alice 100,99 dólares
e lhe envie um vale constituído da sentença encadeada. “IOU100.99BOB.” – (IOU – I Owe
You – Eu devo a você.). A representação ASCII (em notação hexadecimal) para essas letras
é 49, 4F, 55, 31, 30,30, 2E, 39, 39, 42, 4F, 42.
A Figura 9.18 (a parte superior dela) mostra que a soma de verificação dessa mensagem
é B2 Cl D2 AC. Uma mensagem ligeiramente diferente (e que sairia muito mais cara para
Bob) é mostrada na parte de baixo da Figura 9.18. As mensagens “IOUI00.99BOB” e
“IOU900.19BOB” têm a mesma soma de verificação. Assim, esse algoritmo simples viola
as duas exigências citadas anteriormente. Fornecidos os dados originais, é simples descobrir
outro conjunto de dados com a mesma soma de verificação. É claro que, para efeito de
segurança, precisaremos de uma função de hash muito mais poderosa do que a soma de
verificação.
O algoritmo de resumo de mensagem MD5 de Ron Rivest é amplamente usado hoje.
Ele processa um resumo de mensagem de 128 bits por meio de um processo de quatro
estágios, constituído de um estágio de recheio (adição de um “um” seguido de “zeros”
233
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
suficientes, de modo que o comprimento da mensagem satisfaça a determinadas condições),
um estágio de anexação (anexação de uma representação de 64 bits do comprimento da
mensagem antes do recheio), uma inicialização de um acumulador e um estágio final de
looping, no qual os blocos de 16 palavras da mensagem são processados (destroçados) em
quatro rodadas de processamento. Não se sabe se o MD5 de fato satisfaz às exigências
citadas anteriormente. O autor do MD5 declara: “Conjectura-se que a dificuldade de produzir
duas mensagens que tenham o mesmo resumo é da ordem de 2 64 operações e que a dificuldade
de produzir qualquer mensagem que tenha um dado resumo de mensagem é da ordem de 2128
operações”. Ninguém contestou essas declarações. Para uma descrição do MD5 (incluindo
uma implementação em código de fonte C), consulte o RFC 1321. Aspectos computacionais
do MD5 são discutidos no RFC 1810.
Figura 9.18 – Mensagem inicial e mensagem fraudulenta têm a mesma soma de verificação.
O segundo principal algoritmo de resumo de mensagem em uso atualmente nos Estados
Unidos é o SHA–1 (secure hash algorithm – algoritmo de hash seguro). Esse algoritmo se
baseia em princípios similares aos usados no projeto do MD4 [RFC 1320], o predecessor do
MD5. O uso do SHA–1, um padrão federal norte-americano, é exigido sempre que
aplicações de âmbito federal requerem um algoritmo de resumo de mensagem seguro. Ele
produz um resumo de mensagem de 160 bits.
9.5
Distribuição de chaves e certificação
Na Seção 9.2, vimos que uma desvantagem da criptografia de chaves simétricas era a
necessidade de que as duas partes comunicantes concordassem com sua chave secreta
previamente. Com a criptografia de chaves públicas, a priori esse acordo quanto a um valor
secreto não é necessário. Contudo, como discutimos na Seção 9.2, a criptografia de chaves
públicas também tem suas dificuldades, em particular o problema de obter a chave pública
verdadeira de alguém. Ambos os problemas – determinação de uma chave compartilhada para a
criptografia de chaves simétricas e obtenção de uma chave pública segura, no caso da criptografia
de chaves públicas – podem ser solucionados usando-se um intermediário de confiança. Para a
criptografia de chaves simétricas, esse intermediário de confiança é chamado de central de
distribuição de chaves (Key Distribution Center – KDC), uma entidade de rede única e de
confiança com quem o usuário estabelece uma chave secreta compartilhada. Veremos que a KDC
pode ser usada para obter as chaves compartilhadas necessárias para uma comunicação segura
com todas as outras entidades de rede, evitando algumas das armadilhas que identificamos na
Seção 9.3. No caso da criptografia de chaves públicas, o intermediário de confiança é chamado
de autoridade certificadora (Certification Authority – CA). Uma CA certifica que uma chave
pública pertence a uma determinada entidade (uma pessoa ou uma rede). No caso de uma chave
pública certificada, se a confiança depositada na CA que certificou a chave for absoluta,
234
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
poderemos ter certeza quanto a quem pertence a chave pública. Uma vez que uma chave pública
é certificada, ela pode ser distribuída de qualquer lugar, incluindo um servidor de chave pública,
uma página Web pessoal ou um disquete.
9.5.1
KDC (central de distribuição de chaves)
Suponha novamente que Bob e Alice queiram se comunicar usando criptografia de
chaves simétricas. Eles nunca se encontraram (talvez tenham se conhecido em uma sala de
bate-papo on-line) e, assim, não combinaram uma chave secreta. Como é possível, então,
que eles combinem uma chave secreta, dado que só podem se comunicar um com o outro
pela rede? Uma solução frequentemente adotada na prática é usar uma KDC.
A KDC é um servidor que compartilha uma chave simétrica secreta diferente com cada
um de seus usuários registrados. Essa chave pode ser instalada manualmente no servidor
quando o usuário se registrar pela primeira vez. A KDC conhece a chave secreta de cada
usuário, e cada um deles pode se comunicar com segurança com a KDC usando essa chave.
Vejamos como o conhecimento dessa única chave permite que um usuário obtenha uma
chave para se comunicar com qualquer outro usuário registrado. Suponha que Alice e Bob
sejam usuários da KDC; eles conhecem apenas suas próprias chaves individuais, KA–KDC e
KB–KDC, respectivamente, para se comunicar com segurança com a KDC. Alice dá o primeiro
passo, e eles continuam como ilustrado na Figura 9.19.
Figura 9.19 – Estabelecimento de uma chave de sessão única usando uma KDC.
1. Usando KA–KDC para codificar sua comunicação com a KDC, Alice envia uma mensagem
à KDC dizendo que ela (A) quer se comunicar com Bob (B). Denominamos essa
mensagem de KA–KDC(A, B).
2. A KDC, como conhece KA–KDC, decriptografa KA–KDC(A, B). Em seguida, ela gera um
número aleatório R1. Esse é o valor da chave compartilhada que Alice e Bob usarão para
realizar criptografia simétrica quando se comunicarem mutuamente. Essa chave é
chamada de chave de sessão única, pois Alice e Bob a utilizarão apenas durante essa
única sessão que estão estabelecendo no momento. A KDC agora precisa informar Alice
e Bob do valor de R1. Assim, ela devolve a mesma mensagem a Alice, criptografada
usando KA–KDC, contendo o seguinte:

R1, a chave de sessão única que Alice e Bob vão usar para se comunicarem.

Um par de valores: A e R1, criptografados pela KDC usando a chave de Bob, KB–KDC.
Chamamos esse valor de KB–KDC(A, R1). É importante notar que a KDC está
enviando à Alice não somente o valor de R1 para seu uso, mas também uma versão
criptografada de R1 e do nome de Alice, criptografados usando a chave de Bob. Alice
não pode decifrar esse par de valores da mensagem (ela não conhece a chave
235
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
criptográfica de Bob), mas, na verdade, ela não precisa fazê-lo. Veremos em breve
que Alice simplesmente repassa o par de valores criptografados para Bob (que pode
decifrá-los).
Esses itens são colocados na mensagem e criptografados usando a chave compartilhada
de Alice. A mensagem da KDC para Alice é, portanto, KA–KDC(R1, KB–KDC(R1)).
3. Alice recebe a mensagem da KDC, extrai R1 da mensagem e a salva. Ela agora conhece
a chave de sessão única, R1. Ela também extrai KB–KDC(A, R1) e a repassa a Bob.
4. Bob decifra a mensagem recebida KB–KDC(A, R1) usando KB–KDC e extrai A e R1. Ele
agora conhece a chave de sessão única R1 e sabe quem é a pessoa com a qual está
compartilhando essa chave, A. É claro que ele toma o cuidado de autenticar Alice usando
R1 antes de prosseguir.
9.5.2
Kerberos
Kerberos [RFC 1510; Neuman, 1994] é um serviço de autenticação desenvolvido no
MIT que usa técnicas de criptografia de chaves simétricas e uma central de distribuição de
chaves. Embora seja conceitualmente idêntico à KDC genérica descrita na Seção 9.5.1, o
Kerberos tem um vocabulário levemente diferente. Ele contém também diversas variações e
extensões interessantes dos mecanismos básicos da KDC. Ele foi projetado para autenticar
usuários que acessam servidores de rede e era inicialmente dirigido para o uso de um único
domínio administrativo, como um campus ou uma empresa. Assim, ele é estruturado na
linguagem de usuários que querem acessar os serviços da rede (servidores) utilizando
programas de rede de camada de aplicação, como o Telnet (para login remoto) e o NFS (para
acesso a arquivos remotos), em vez de ser estruturado na linguagem de pessoas que querem
conversar entre si e precisam se autenticar mutuamente, como nos exemplos apresentados
até aqui. Não obstante, a chave (trocadilho proposital) subjacente às duas técnicas continua
a mesma.
O servidor de autenticação Kerberos (authetication server – SA) desempenha o papel
da KDC. Ele é o repositório não apenas das chaves secretas de todos os usuários (de modo
que cada usuário pode se comunicar com o SA com segurança), mas também das informações
sobre quais usuários têm acesso privilegiado a quais serviços em quais servidores de rede.
Quando Alice quer acessar um serviço em Bob (que agora consideramos um servidor), o
protocolo segue fielmente o exemplo dado na Figura 9.19:
1. Alice contata o SA Kerberos e indica que quer usar Bob. Toda a comunicação entre Alice
e o SA é criptografada usando uma chave secreta que é compartilhada entre Alice e o SA.
No Kerberos, Alice primeiramente fornece seu nome e senha a seu hospedeiro local. Este
e o SA então determinam a chave de sessão única para criptografar a comunicação entre
Alice e o SA.
2. O SA autentica Alice, verifica se ela tem acesso privilegiado a Bob e gera uma chave
simétrica de sessão única, R1, para a comunicação entre Bob e Alice. O servidor de
autenticação (no jargão do Kerberos, servidor bilheteiro) envia a Alice o valor de R 1 e
também um bilhete de entrada para os serviços de Bob. O bilhete contém o nome de
Alice, a chave da sessão Alice – Bob, R1 e o horário de término, tudo criptografado
usando a chave secreta de Bob (conhecida apenas por Bob e SA), como na Figura 9.19.
O bilhete de Alice é válido só até o horário de término e será rejeitado por Bob se
apresentado após esse horário. Para o Kerberos V4, o tempo máximo de vida útil de um
bilhete é de cerca de 21 horas. No Kerberos V5, o tempo de vida útil deve expirar antes
do final do ano de 9.999, um sério problema para o ano 10.000!
236
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
3. Alice então envia seu bilhete a Bob. Ela também envia uma marca de tempo
criptografada por R1 que é usada como um nonce. Bob decifra o bilhete usando sua chave
secreta, obtém a chave da sessão e decifra a marca de tempo utilizando a chave da sessão
que acabou de descobrir. Ele devolve o nonce a Alice, criptografado por R1, mostrando,
assim, que ele conhece R1 e que está “ao vivo”.
9.5.3
Certificação de chaves públicas
Uma das características principais da criptografia de chaves públicas é que é possível
que duas entidades troquem mensagens secretas sem ter de trocar chaves secretas. Por
exemplo, quando Alice quer enviar uma mensagem secreta a Bob, ela simplesmente
criptografa a mensagem com a chave pública de Bob e envia a mensagem criptografada a
ele; ela não precisa conhecer a chave secreta (isto é, privada) de Bob nem Bob precisa
conhecer a chave secreta de Alice. Assim, a criptografia de chaves públicas evita a
necessidade de infra-estrutura de KDC, como o Kerberos.
Evidentemente, com a criptografia de chaves públicas, as entidades comunicantes têm
de trocar chaves públicas. Um usuário pode disponibilizar o conhecimento de sua chave
pública de muitas maneiras, como, por exemplo, apresentando a chave em sua página Web
pessoal, colocando-a em um servidor público de chaves ou enviando-a a um correspondente
por e-mail. Um site Web de comércio pode colocar sua chave pública em seu servidor de
modo que os browsers descarreguem automaticamente a chave pública ao se conectarem ao
site. Roteadores podem colocar sua chave pública em servidores de chaves públicas,
permitindo, desse modo, que outras entidades da rede a recuperem.
Há, contudo, um problema sutil, mas importante, com a criptografia de chaves públicas.
Para termos uma percepção desse problema, vamos considerar uma transação comercial pela
Internet, por exemplo. Suponha que Alice trabalhe no ramo de pizzas para viagem e que
aceite pedidos pela Internet. Bob, que adora pizza, envia a Alice uma mensagem em texto
aberto que contém o endereço de sua casa e o tipo de pizza que quer. Nessa mensagem, ele
inclui também sua assinatura digital (isto é, um resumo de mensagem criptografado extraído
da mensagem original em texto aberto). Como discutimos na Seção 9.4, Alice pode obter a
chave pública de Bob (de sua página Web pessoal, de um servidor de chaves públicas ou de
uma mensagem de e-mail) e verificar a assinatura digital. Dessa maneira, ela se certifica de
que foi Bob, e não algum adolescente brincalhão, quem fez o pedido.
Tudo parece caminhar bem até que entra em cena a esperta Trudy. Como mostrado na
Figura 9.20, Trudy decide fazer uma travessura. Ela envia uma mensagem a Alice na qual
diz que é Bob, fornece o endereço de Bob e pede uma pizza. Ela também anexa uma
assinatura digital, mas faz isso assinando o resumo de mensagem com sua chave privada.
Ela também se faz passar por Bob enviando a Alice sua chave pública, mas dizendo que a
chave pertence a Bob. Nesse exemplo, Alice aplicará a chave pública de Trudy (pensando
que é a de Bob) na assinatura digital e concluirá que a mensagem em texto aberto foi, na
verdade, criada por Bob. Este ficará muito surpreso quando o entregador aparecer em sua
casa com uma pizza, com tudo acertado!
237
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura 9.20 – Trudy se passa por Bob usando a criptografia de chaves públicas.
Por esse exemplo, vemos que, para que a criptografia de chaves públicas seja útil, as
entidades (usuários, browsers, roteadores) precisam ter certeza de que possuem a chave
pública da entidade com a qual estão se comunicando. Por exemplo, quando Alice estiver se
comunicando com Bob usando criptografia de chaves públicas, ela precisa saber, com
certeza, que a chave pública, que supostamente é de Bob, é de fato dele. Tínhamos
preocupações semelhantes em nossos protocolos de autenticação apresentados na Figura 9.12
e na Figura 9.13.
A vinculação de uma chave pública a uma entidade particular é feita, tipicamente, por
uma autoridade certiticadora (certification authority – CA), cuja tarefa é validar identidades
e emitir certificados. A CA tem as seguintes incumbências:
1. A CA verifica se uma entidade (pessoa, roteador e assim por diante) é quem se diz ser.
Não há procedimentos obrigatórios quanto ao modo como deve ser feita a certificação.
Ao tratarmos com uma CA, devemos confiar que ela tenha realizado uma verificação
rigorosa da entidade. Por exemplo, se Trudy conseguisse entrar na autoridade
certificadora Fly-by-night, e simplesmente declarasse “Eu sou Alice” e recebesse
certificados associados à identidade “Alice”, então não se deveria dar muita credibilidade
às chaves públicas certificadas pela autoridade certificadora Fly-by-night. Por outro lado,
seria mais sensato (ou não!) estar inclinado a confiar em uma CA que faz parte de um
programa federal ou estadual. O grau de confiança que se tem na “identidade” associada
a uma chave pública equivale apenas ao grau de confiança depositada na CA e em suas
técnicas de verificação de identidades. Em que rede emaranhada estamos enredados!
2. Assim que a CA verifica a identidade da entidade, ela cria um certificado que vincula a
chave pública da entidade à identidade. O certificado contém a chave pública e a
informação exclusiva que identifica mundialmente a chave pública do proprietário (por
exemplo, o nome de alguém ou um endereço IP). Esses passos são mostrados na
Figura 9.21.
238
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura 9.21 – Bob obtém um certificado de uma CA.
Vejamos, agora, como os certificados podem ser usados para combater os espertinhos
das pizzas, como Trudy e outros indesejáveis. Quando Alice recebe o pedido de Bob, ela
pega o certificado de Bob, que pode estar na página Web dele, em uma mensagem de e-mail
ou em um servidor de certificados. Alice usa a chave pública da CA para verificar se a chave
pública do certificado de Bob é, de fato, de Bob. Supomos que a chave pública da CA seja
conhecida de todos (por exemplo, poderia ser divulgada em um local conhecido e de
confiança, como no jornal The New York Times, de modo que todos a conheçam e que não
possa ser falsificada) e que Alice então possa ter certeza de que está realmente tratando com
Bob. A Figura 9.21 ilustra os passos envolvidos na criptografia de chaves públicas mediada
por uma CA.
Tanto a International Telecommunication Union (ITU) quanto a IETF desenvolveram
padrões para autoridades certificadoras. Na recomendação ITU X.509, encontramos
especificado um serviço de autenticação, bem como uma sintaxe própria para os certificados.
O RFC 1422 descreve um gerenciamento de chaves baseado em CA para uso com o e-mail
seguro pela Internet. Essa recomendação é compatível com a X.509, mas vai além desta,
pois estabelece procedimentos e convenções para uma arquitetura de gerenciamento de
chaves. A Tabela 9.1 apresenta alguns campos importantes de um certificado.
Nome do Campo
Descrição
Versão
Número de Série
Assinatura
Número da versão da especificação X.509
Identificador exclusivo emitido pela CA para um certificado
Especifica o algoritmo usado pela CA para “assinar” esse certificado
Identidade da CA que emitiu o certificado no formato chamado de nome distinto (DN)
Nome do Emissor
especificado no RFC 2253
Período de Validade
Início e fim do período de validade de um certificado
Nome do Sujeito
Identidade da entidade cuja chave pública está associada a esse certificado, em formato DN
A chave pública do sujeito, bem como uma indicação do algoritmo de chave pública (e
Chave Pública do Sujeito
parâmetros do algoritmo) a ser usado com essa chave
Tabela 9.1 – Campos selecionados de um certificado de chave pública X.509 e RFC 1422.
Com o crescimento do comércio eletrônico e a consequente necessidade de garantir a
segurança das transações, tem havido um interesse crescente em autoridades certificadoras.
239
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Dentre as empresas que fornecem serviços de CA destacam-se a Cybertrust, a Verisign e a
Netscape.
9.6
E-mail seguro
Nas seções anteriores, examinamos as questões fundamentais da segurança na rede,
incluindo a criptografia de chaves simétricas e a de chaves públicas, a autenticação, a distribuição
de chaves, a integridade de mensagens e as assinaturas digitais. Vamos agora examinar como
essas ferramentas estão sendo usadas para fornecer segurança na Internet. É interessante o fato
de que é possível fornecer serviços de segurança em qualquer uma das quatro camadas superiores
da pilha de protocolos da Internet. Quando é fornecida segurança para um protocolo específico
de camada de aplicação, a aplicação que usa o protocolo desfruta de um ou mais serviços de
segurança, como sigilo, autenticação ou integridade. Quando a segurança é fornecida para um
protocolo de camada de transporte, todas as aplicações que usam o protocolo desfrutam dos
serviços de segurança do protocolo de transporte. Quando a segurança é fornecida na camada de
rede, na base de host a host, todos os segmentos de camada de transporte (e, por conseguinte,
todos os dados de camada de aplicação) desfrutam dos serviços de segurança da camada de rede.
Quando a segurança é fornecida com base no enlace, todos os dados de todos os quadros que estão
trafegando pelo enlace recebem os serviços de segurança do enlace.
Nesta e nas duas seções seguintes, veremos como as ferramentas de segurança estão sendo
usadas nas camadas de aplicação, transporte e rede. Começaremos pelo topo da pilha de
protocolos, discutindo a segurança no nível da camada de aplicação. Nessa discussão, usaremos
uma aplicação específica, ou seja, o e-mail, como estudo de caso para a segurança na camada de
aplicação. Em seguida, desceremos pela pilha de protocolos. Na Seção 9.7, examinaremos o
protocolo SSL, que fornece segurança ao TCP na camada de transporte. Na Seção 9.8,
consideraremos o IPsec, que fornece segurança à camada de rede.
É bem possível que você esteja pensando por que a funcionalidade de segurança da Internet
está sendo fornecida em mais de uma camada. Não seria suficiente simplesmente fornecer
funcionalidade de segurança na camada de rede e esquecer o assunto? Essa pergunta pode ser
respondida de dois modos. Em primeiro lugar, embora exista na camada de rede um “cobertor de
segurança” com a criptografia de todos os dados dos datagramas (isto é, de todos os segmentos
de camada de transporte) e com a autenticação de todos os endereços IP de origem, isso não
garante segurança no nível do usuário. Por exemplo, um site comercial não pode confiar na
segurança da camada IP para autenticar um cliente que está comprando mercadorias nesse site.
Assim, há necessidade de uma funcionalidade de segurança nas camadas mais altas, bem como
um “cobertor de segurança” nas camadas mais baixas. Em segundo lugar, é geralmente mais fácil
disponibilizar novos serviços de Internet, incluindo serviços de segurança, nas camadas mais altas
da pilha de protocolos. Enquanto aguardamos que a segurança seja disseminada de maneira ampla
na camada de rede, o que ainda levará alguns anos para acontecer, muitos desenvolvedores de
aplicação tomam a iniciativa de fazê-lo mesmo assim e introduzem a funcionalidade em suas
aplicações favoritas. Um exemplo clássico é o PGP, que fornece e-mail seguro (o PGP será
discutido mais adiante nesta seção). Como exige apenas programas de aplicação cliente e
servidor, o PGP foi uma das primeiras tecnologias de segurança a ser usada amplamente na
Internet.
9.6.1
Princípios de segurança para e-mail
Nesta seção, usaremos muitas das ferramentas apresentadas na seção anterior para criar
um projeto de alto nível para um sistema de e-mail seguro. Criamos esse projeto de alto nível
de maneira incremental, introduzindo, a cada estágio, novos serviços de segurança. Ao
projetarmos um sistema de e-mail seguro, vamos manter em mente o exemplo malicioso
240
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
apresentado na Seção 9.1 – o caso de amor entre Alice e Bob. Nesse contexto, Alice quer
enviar uma mensagem de e-mail para Bob e Trudy quer bisbilhotar a mensagem.
Antes de avançarmos e projetarmos um sistema de e-mail seguro para Alice e Bob,
devemos considerar quais características de segurança seriam as mais desejáveis para eles.
A primeira característica, e a mais importante, é o sigilo. Como foi discutido na Seção 9.1,
nem Alice nem Bob querem que Trudy leia a mensagem de e-mail de Alice. A segunda
característica que Alice e Bob provavelmente gostariam de ver no sistema de e-mail seguro
é a autenticação do remetente. Em particular, quando Bob receber a seguinte mensagem de
Alice “Eu não o amo mais. Nunca mais quero vê-lo. Da anteriormente sua, Alice”, ele
naturalmente vai querer ter certeza de que a mensagem veio de Alice, e não de Trudy. Outra
característica de segurança que os dois amantes gostariam de dispor é a integridade de
mensagem, isto é, a certeza de que a mensagem que Alice enviar não será modificada no
trajeto até Bob. Por fim, o sistema de e-mail deve fornecer autenticação do receptor, isto é,
Alice quer ter certeza de que ela de fato está mandando a mensagem para Bob, e não para
outra pessoa (por exemplo, Trudy) que possa estar se passando por Bob.
Assim, vamos começar abordando a primeira preocupação de Alice e Bob, ou seja, o
sigilo. A maneira mais direta de consegui-lo é Alice criptografar a mensagem por tecnologia
de chaves simétricas (como o DES) e Bob decifrar a mensagem ao recebê-la. Como discutido
na Seção 9.2, se a chave simétrica for suficientemente longa e se somente Alice e Bob
possuírem a chave, então será reduzidíssima a possibilidade de alguém (incluindo Trudy) ler
a mensagem. Embora essa seja uma abordagem direta, ela apresenta a dificuldade
fundamental que discutimos na Seção 9.2 – é difícil distribuir chaves simétricas de modo que
apenas Bob e Alice tenham cópias delas. Assim, a criptografia de chaves públicas (usando,
por exemplo, RSA) é, naturalmente, uma ferramenta alternativa. Na abordagem de chave
pública, Bob disponibiliza publicamente sua chave pública (por exemplo, em um servidor de
chaves públicas ou em sua página Web pessoal) e Alice criptografa a mensagem com a chave
pública de Bob, enviando a mensagem cifrada para o endereço de e-mail de Bob. (A
mensagem codificada é encapsulada com cabeçalhos Mime e enviada sobre SMTP comum.)
Quando Bob recebe a mensagem, ele simplesmente a decifra com sua chave privada.
Supondo que Alice tenha certeza de que a chave pública que usou é a de Bob (e de que esta
é suficientemente longa), então essa abordagem é um meio excelente de fornecer o desejado
sigilo. Um problema, contudo, é que a criptografia de chaves públicas é relativamente
ineficiente, sobretudo para as mensagens longas. (Mensagens de e-mail longas agora são
muito comuns na Internet, devido ao crescimento do uso de anexos, imagens, áudio e vídeo.)
Para superarmos o problema da eficiência, vamos fazer uso de uma chave de sessão
(discutida na Seção 9.5). Em particular, Alice (1) escolhe uma chave simétrica, KS,
aleatoriamente, (2) criptografa sua mensagem m com a chave simétrica KS, (3) criptografa a
chave simétrica com a chave pública de Bob, e B, (4) concatena a mensagem cifrada e a chave
simétrica cifrada de modo que formem um “pacote” e (5) envia o pacote ao endereço de email de Bob. Os passos estão ilustrados na Figura 9.22. (Nessa figura e nas subsequentes, o
sinal “+” representa a concatenação e o sinal “–“, a desconcatenação.) Quando Bob receber
o pacote, ele vai (1) usar sua chave privada d B para obter a chave simétrica KS e (2) utilizar
a chave simétrica KS para decifrar a mensagem m.
241
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura 9.22 – Alice usa uma chave de sessão simétrica K S.
Agora que projetamos um sistema de e-mail seguro que fornece sigilo, vamos
desenvolver um outro sistema que forneça a autenticação do remetente e a integridade da
mensagem. Vamos supor, no momento, que Alice e Bob não estejam mais preocupados com
o sigilo (querem compartilhar seus sentimentos com todos!) e que estejam somente
preocupados com a autenticação do remetente e com a integridade da mensagem. Para
realizarmos essa tarefa, faremos uso de assinaturas digitais e resumos de mensagem, como
descrito na Seção 9.4. Especificamente, Alice (1) aplica uma função de hash H (por exemplo,
MD5) à sua mensagem m, para obter um resumo de mensagem, (2) criptografa o resultado
da função de hash com sua chave privada dA, para criar uma assinatura digital, (3) concatena
o original (mensagem não codificada) com a assinatura para criar um pacote e (4) envia o
pacote ao endereço de e-mail de Bob. Quando Bob recebe o pacote, ele (1) aplica a chave
pública de Alice, eA, ao resumo de mensagem assinado e (2) compara o resultado dessa
operação com o próprio hash H da mensagem. Os passos são ilustrados na Figura 7.25.
Como discutimos na Seção 9.5, se os dois resultados forem os mesmos, Bob poderá estar
certo de que a mensagem veio de Alice e não foi alterada.
Figura 9.23 – Uso de funções de hash e assinaturas digitais.
Vamos considerar agora o projeto de um sistema de e-mail que forneça sigilo,
autenticação do remetente e integridade de mensagem. Isso pode ser feito pela combinação
dos procedimentos da Figura 9.22 e Figura 9.23. Primeiramente, Alice cria um pacote
preliminar, exatamente como mostra a Figura 9.23, constituído de sua mensagem original
junto com um hash da mensagem assinado digitalmente. Em seguida, ela trata esse pacote
preliminar como uma mensagem em si e envia essa nova mensagem seguindo os passos do
remetente mostrados na Figura 9.22, criando um novo pacote que é enviado a Bob. Os passos
dados por Alice são mostrados na Figura 9.24. Quando Bob recebe o pacote, ele aplica
primeiramente seu lado da Figura 9.22 e depois seu lado da Figura 9.23. Deve ficar claro
que esse projeto atinge o objetivo de fornecer sigilo, autenticação do remetente e integridade
de mensagem. Note que nesse esquema Alice aplica a criptografia de chaves públicas duas
242
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
vezes: uma vez com sua chave privada e uma vez com a chave pública de Bob. De maneira
semelhante, Bob aplica a criptografia de chave pública duas vezes – uma vez com sua chave
privada e uma vez com a chave pública de Alice.
O projeto de e-mail seguro ilustrado na Figura 9.24 provavelmente fornece segurança
satisfatória para os usuários de e-mail na maioria das ocasiões. Mas ainda resta uma questão
importante a ser abordada. O projeto da Figura 9.24 requer que Alice obtenha a chave pública
de Bob e que Bob obtenha a chave pública de Alice. A distribuição dessas chaves é um
problema incomum. Por exemplo, Trudy poderia se disfarçar de Bob e dar a Alice sua chave,
dizendo que é a chave pública de Bob. Como aprendemos na Seção 9.5, uma abordagem
popular para distribuir chaves públicas com segurança é certificá-las.
Figura 9.24 – Alice usa várias técnicas para enviar uma mensagem.
9.6.2
PGP (privacidade razoável)
Projetado originalmente por Phil Zimmermann em 1991, o PGP (Pretty Good
Privacy – privacidade razoável) é um esquema de criptografia para e-mail que se tornou um
padrão de fato. O site do PGP é acessado mais de um milhão de vezes por mês por usuários
de 166 países. Versões do PGP estão disponíveis em domínio público; por exemplo, você
pode encontrar o software PGP para sua plataforma favorita, bem como grande quantidade
de material de leitura interessante, na home page internacional do PGP. O PGP também pode
ser adquirido no comércio. Ele pode ser encontrado ainda como elemento adicional para
muitos agentes de usuário de e-mail, incluindo o Exchange e o Outlook da Microsoft e o
Eudora da Qualcomm.
O projeto do PGP é em essência idêntico ao projeto apresentado na Figura 9.24.
Dependendo da versão, o software do PGP usa MD5 ou SHA para processar o resumo de
mensagem; Cast, DES triplo ou Idea para criptografar chaves simétricas, e RSA para
criptografar chaves públicas. Além disso, o PGP fornece compressão de dados.
Quando o PGP é instalado, o software cria um par de chaves públicas para o usuário.
A chave pública pode então ser colocada no site do usuário ou em um servidor de chaves
públicas. A chave privada é protegida pelo uso de uma senha. A senha tem de ser informada
todas as vezes que o usuário acessa a chave privada. O PGP oferece ao usuário a opção de
assinar digitalmente a mensagem, criptografar a mensagem ou, ainda, ambas as opções:
assinar digitalmente e criptografar a mensagem. A Figura 9.25 mostra uma mensagem PGP
assinada. Essa mensagem aparece após o cabeçalho Mime. Os dados codificados da
mensagem correspondem a dA(H(m)), ou seja, ao resumo de mensagem assinado
digitalmente. Como discutimos antes, para que Bob verifique a integridade da mensagem,
ele precisa ter acesso à chave pública de Alice.
243
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
- - - - BEGIN PGP SIGNED MESSAGE - - - - Hash: SHA1
Bob:
My husband is out of town tonight.
Passionately yours, Alice
- - - - - BEGIN PGP SIGNATURE - - - - Version: PGP for Personal Privacy 5.0
Charset: noconv
yhHJRHhGJGhgg/12EpJ+1º8gE4vB3mqJhFEvZP9t6n7G6m5Gw2
- - - - - END PGP SIGNATURE - - - - Figura 9.25 – Mensagem PGP assinada.
A Figura 9.26 mostra uma mensagem PGP secreta. Essa mensagem também aparece
após o cabeçalho Mime. É claro que a mensagem em texto aberto não está incluída na
mensagem de e-mail secreta. Quando um remetente (como Alice) quer não apenas o sigilo,
mas também a integridade, o PGP contém uma mensagem como a da Figura 9.26 dentro da
mensagem da Figura 9.25.
- - - - - BEGIN PGP MESSAGE - - - - Version: PGP for Personal Privacy 5.0
U2R4d+/jKmn8Bc5hgDsqAewsDfrGdszX681iKm5F6Gc4sDfcXytRfdS10juHgb
cfDssWe7/K=1KhnMikLo0+1/BvcX4t==Ujk9PbcD4Thdf2awQfgHbnmK1ok8iy
6gThlp
- - - - - END PGP MESSAGE
Figura 9.26 – Mensagem PGP secreta.
O PGP também fornece um mecanismo para certificação de chaves públicas, mas esse
mecanismo é bem diferente daquele da autoridade certificadora mais convencional. As
chaves públicas do PGP são certificadas por uma rede de confiabilidade. A própria Alice
pode certificar qualquer par chave/usuário quando ela achar que esse par está correto. Além
disso, o PGP permite que Alice declare que ela confia em outro usuário para atestar a
autenticidade de mais chaves. Alguns usuários do PGP assinam reciprocamente suas chaves
montando grupos de assinatura de chaves. Os usuários se reúnem fisicamente, trocam
disquetes contendo as chaves públicas e certificam suas chaves reciprocamente, assinandoas com suas chaves privadas. As chaves públicas PGP também são distribuídas por
servidores de chaves públicas PGP, pela Internet. Quando um usuário apresenta uma chave
pública a esse servidor, este armazena uma cópia da chave, envia uma cópia a todos os outros
servidores de chaves públicas e serve a chave a quem quer que a solicite. Embora os grupos
de assinantes de chaves e os servidores de chaves públicas PGP realmente existam, o modo
mais comum utilizado pelos usuários para distribuir suas chaves públicas é, de longe, colocálas em sua página Web pessoal. Evidentemente, as chaves que aparecem nessas páginas não
são certificadas por ninguém, mas são fáceis de acessar.
9.7
Comércio pela Internet
Na seção anterior, consideramos a utilização feita pela camada de aplicação (no e-mail
seguro) das várias tecnologias de segurança que estudamos anteriormente neste capítulo:
criptografia, autenticação, distribuição de chaves, integridade de mensagem e assinaturas digitais.
Nesta seção, continuaremos nossos estudos de caso dos vários mecanismos de segurança,
descendo uma camada na pilha de protocolos e abordando as portas seguras e a camada de
transporte segura. Usaremos o comércio pela Internet como aplicação motivadora, uma vez que
os negócios e as transações financeiras são importantes impulsionadores da segurança na Internet.
244
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Chamamos de comércio pela Internet a compra de “bens” pela Internet. Nesse contexto,
consideramos o termo “bens” em um sentido muito amplo, que engloba desde livros, CDs,
hardwares, softwares e passagens aéreas até ações e títulos, serviços de consultoria e assim por
diante. Durante a década de 90, muitos sistemas foram projetados para o comércio pela Internet,
alguns oferecendo níveis mínimos de segurança e outros fornecendo altos níveis de segurança,
acompanhados do anonimato do cliente – semelhante ao anonimato oferecido pelas transações
comerciais pessoais comuns, feitas em dinheiro. No final da década de 90, no entanto, houve uma
grande mudança de cenário, pois apenas alguns desses sistemas foram amplamente
implementados em browsers e servidores. Dois sistemas se firmaram: a SSL, que é correntemente
usada na grande maioria das transações pela Internet, e a SET, a qual se acredita que concorrerá
com a SSL nos próximos anos.
O comércio pela Internet, seja com SSL ou com SET, faz uso extensivo da infra-estrutura
de cartões de pagamento (de crédito e de débito) que os consumidores, comerciantes e instituições
financeiras usam há muitos anos. Há três participantes importantes nessa infra-estrutura: o cliente
que está comprando um produto, o comerciante que está vendendo o produto e o banco comercial,
que autoriza a compra. Veremos, em nossa discussão a seguir, que o comércio pela Internet com
a SSL fornece segurança para as comunicações entre os dois primeiros participantes (isto é, entre
o cliente e o comerciante), ao passo que a SET oferece segurança para as comunicações entre os
três participantes.
9.7.1
Comércio pela Internet usando SSL
Vamos considerar um cenário típico de comércio pela Internet. Bob está navegando
pela Web e encontra o site Alice Incorporated, que vende bens duráveis. Esse site apresenta
um formulário no qual Bob deve informar a quantidade desejada, seu endereço e o número
do seu cartão de pagamento. Bob registra essas informações, clica em “apresentar” e, então,
aguarda o recebimento (digamos, pelo correio convencional) do bem adquirido; ele também
espera receber a cobrança da mercadoria na próxima fatura de seu cartão de crédito. Isso
tudo parece ser muito bom, mas, se não forem tomadas medidas de segurança – como
criptografia ou autenticação – Bob poderá ter algumas surpresas:

Um intruso pode interceptar a ordem de pagamento, obter as informações sobre o cartão
de crédito e, então, fazer compras na conta de Bob.

O site pode apresentar o famoso logotipo da Alice Incorporated, mas, na realidade, ser
mantido por Trudy, que está se fazendo passar pela Alice Incorporated. Trudy poderia
se apossar do dinheiro de Bob e fugir. Ou ela poderia fazer compras e enviar a fatura
para a conta de Bob.
Muitas outras surpresas também são possíveis; discutiremos algumas delas na próxima
subseção. Mas esses dois problemas apresentados são os mais sérios. O comércio pela
Internet usando SSL pode enfrentar ambos os problemas.
A SSL (secure sockets layer – camada de portas de segurança), originalmente
desenvolvida pela Netscape, é um protocolo projetado para fornecer criptografia de dados e
autenticação entre um cliente e um servidor Web. O protocolo começa com uma fase de
apresentação mútua que negocia um algoritmo de criptografia (por exemplo, DES ou Idea) e
chaves e autentica o servidor para o cliente. Opcionalmente, o cliente pode também ser
autenticado para o servidor. Uma vez completada a mútua apresentação e iniciada a
transmissão da aplicação de dados, todos os dados são criptografados usando as chaves de
sessão negociadas durante a fase de apresentação mútua. O protocolo SSL é amplamente
usado no comércio pela Internet, sendo implementado em quase todos os browsers populares
245
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
e servidores Web. Além disso, ele é a base do protocolo TLS (transport layer
security – segurança da camada de transporte).
Os protocolos SSL e TLS não são limitados à aplicação na Web; por exemplo, eles
podem ser usados de maneira semelhante para autenticação e criptografia de dados no acesso
ao correio IMAP. A camada SSL pode ser vista como uma camada que se situa entre a
camada de aplicação e a camada de transporte. No lado remetente, o protocolo SSL recebe
os dados (como uma mensagem HTTP ou IMAP vinda de uma aplicação), criptografa-os e
direciona os dados criptografados a uma porta TCP. No lado receptor, ele lê a porta TCP,
decifra os dados e os direciona à aplicação. Embora o protocolo SSL possa ser usado com
muitas aplicações da Internet, ele será discutido no contexto da Web, em que é utilizado
principalmente para o comércio pela Internet.
A SSL tem as seguintes características:

Autenticação do servidor SSL, que permite que um usuário confirme a identidade de um
servidor. Um browser habilitado para SSL mantém uma lista de CAs de confiança,
juntamente com as chaves públicas dessas CAs. Quando um browser quer fazer negócios
com um servidor Web habilitado para SSL, ele obtém um certificado do servidor contendo
a chave pública deste. O certificado é emitido (ou seja, é assinado digitalmente) pela CA
que aparece na lista de CAs de confiança do cliente. Essa característica permite que o
browser autentique o servidor antes de o usuário informar o número de seu cartão de
pagamento. No contexto do exemplo apresentado, essa autenticação do servidor permite
que Bob verifique se ele está realmente enviando o número de seu cartão de pagamento
à Alice Incorporated, e não a alguém que possa estar se fazendo passar pela Alice
Incorporated.

Autenticação do cliente SSL, que permite que um servidor confirme a identidade de um
usuário. Análoga à autenticação do servidor, a autenticação do cliente faz uso de
certificados dos clientes que também foram emitidos pelas CAs. Essa autenticação será
importante se o servidor, por exemplo, for um banco que está enviando informações
financeiras confidenciais para um cliente e quer verificar a identidade do receptor. A
autenticação do cliente, embora suportada pela SSL, é opcional. Para mantermos nossa
discussão em um único foco, vamos ignorar a autenticação do cliente daqui em diante.

Uma sessão SSL criptografada, na qual toda a informação enviada entre browser e
servidor é criptografada pelo software remetente (browser ou servidor Web). Essa
confidencialidade pode ser importante tanto para o cliente quanto para o comerciante. O
protocolo SSL também fornecerá um mecanismo que detecta a alteração de informação
por um intruso.
9.7.1.1
Como a SSL funciona
Um usuário – digamos, Bob – navega pela Web e pressiona um ponteiro que o
transporta a uma página segura abrigada pelo servidor habilitado à SSL de Alice. A
parte do URL que se refere ao protocolo para essa página é “HTTPS”, e não o “HTTP”
comum. O browser e o servidor então rodam o protocolo de mútua apresentação SSL
que (1) autentica o servidor e (2) gera uma chave simétrica compartilhada. Ambas as
tarefas fazem uso da tecnologia de chaves públicas RSA. O fluxo principal de eventos
na fase de mútua apresentação é mostrado na Figura 9.27. Durante essa fase, Alice envia
a Bob seu certificado, a partir do qual Bob obtém a chave pública de Alice. Bob então
cria uma chave simétrica aleatória, criptografa-a com a chave pública de Alice e a envia
criptografada para Alice. Agora, Bob e Alice compartilham uma chave de sessão
simétrica. Assim que esse protocolo de mútua apresentação se completa, todos os dados
246
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
enviados entre o browser e o servidor (pelas conexões TCP) são criptografados usando
a chave de sessão simétrica.
Figura 9.27 – Visão de alto nível da fase de mútua apresentação SSL.
Agora que apresentamos uma visão de alto nível da SSL, vamos examinar melhor
alguns dos detalhes mais importantes. A fase de mútua apresentação SSL percorre os
seguintes passos:
1. O browser envia ao servidor o número da versão da SSL que utiliza e as preferências
criptográficas. Ele envia essas preferências criptográficas porque browser e servidor
negociam qual algoritmo de chaves simétricas vão usar.
2. O servidor envia ao browser o número da versão da SSL que utiliza, suas
preferências criptográficas e seu certificado. Lembre-se de que o certificado contém
a chave pública RSA do servidor e é certificado por uma CA, isto é, o certificado é
criptografado por uma chave pública da CA.
3. O browser tem uma lista de CAs de confiança e uma chave pública para cada CA da
lista. Se não tiver, o usuário será avisado do problema e informado de que não pode
ser estabelecida uma conexão criptografada e autenticada. Se a CA estiver na lista,
o browser usará a chave pública da CA para decifrar o certificado e obter a chave
pública do servidor.
4. O browser gera uma sessão de chave simétrica, criptografa-a com a chave pública
do servidor e envia a chave de sessão criptografada ao servidor.
247
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
5. O browser envia uma mensagem ao servidor informando que as futuras mensagens
do cliente serão criptografadas com a chave de sessão. Ele então envia uma
mensagem separada (criptografada) mostrando que sua parte na mútua apresentação
está encerrada.
6. O servidor envia uma mensagem ao browser informando que as futuras mensagens
do servidor serão criptografadas com a chave de sessão. Ele então envia uma
mensagem separada (criptografada) mostrando que sua parte na mútua apresentação
está encerrada.
7. Agora, a mútua apresentação SSL está completa e começa a sessão SSL. O browser
e o servidor usam as chaves de sessão para codificar e decifrar os dados que enviam
um ao outro e para validar sua integridade.
A mútua apresentação SSL tem na verdade mais passos do que os apresentados.
Você pode encontrar mais informações sobre a SSL na Security Developer Central da
Netscape. Além das compras feitas com cartão de crédito, destacamos que a SSL pode
ser (e é) usada para outras transações financeiras, incluindo home banking e comércio
de ações.
9.7.1.2
A SSL em ação
Recomendamos que visite um site seguro, como por exemplo um site da cidade de
Quebec de xarope de bordo (http://www.jam.ca/syrup). Quando entrar na seção de
segurança de um site desse tipo, a SSL executará o protocolo de mútua apresentação.
Supondo-se que o certificado do servidor passe na verificação, o browser o notificará,
por exemplo, apresentando um ícone especial. Dali em diante, toda informação trocada
entre você e o servidor será criptografada. Seu browser deverá permitir que você
realmente veja o certificado do comerciante. (Por exemplo, com o Internet Explorer,
consulte Arquivo, Propriedades, Certificados.) Em fevereiro de 2000, o certificado do
site de xarope de bordo continha as seguintes informações:
Empresa: Netfarmers Enterprises Inc.
Autoridade Cerlificadora: Thawte Certification
Chave pública (em notação hexadecima/):
3E:BD:DD:46:10:D1:92:95:D6:12:ED:A8:18:88:51:60
Se seu browser permitir que se realizem transações seguras com o comerciante,
então você deverá também poder ver o certificado da CA, isto é, da Thawte Certification.
Por exemplo, no Internet Explorer, consulte Ferramentas, Opções da Internet, Conteúdo,
Certificados.
9.7.1.3
As limitações no comércio pela internet
Devido à sua simplicidade e a seu desenvolvimento precoce, a SSL é amplamente
implementada em browsers, servidores e produtos para comércio pela Internet. Esses
servidores e browsers habilitados à SSL fornecem uma plataforma popular para
transações com cartões de pagamento. No entanto, devemos ter sempre em mente que
a SSL não foi produzida especificamente para transações com cartões de pagamento,
mas para comunicações genéricas seguras entre um cliente e um servidor. Por causa de
seu projeto genérico, faltam à SSL muitas características que o setor de cartões de
pagamento gostaria de ver incorporadas a um protocolo de comércio pela Internet.
Considere novamente o que acontece quando Bob compra algo do site Alice
Incorporated por meio da SSL. O certificado assinado que Bob recebe de Alice garante
248
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
que ele está negociando com a Alice Incorporated e que a Alice Incorporated é uma
empresa bona fide. Contudo, o certificado genérico não indica se a Alice Incorporated
está autorizada a aceitar compras com cartão de pagamento nem se a empresa é um
estabelecimento comercial de confiança. Isso abre uma porta para a fraude do
comerciante. E há um problema semelhante com a autorização do cliente. Mesmo que
seja usada a autenticação do cliente SSL, o certificado do cliente não vincula Bob a um
determinado cartão de pagamento autorizado; assim, a Alice Incorporated não pode ter
certeza de que Bob está autorizado a fazer uma compra usando cartão de pagamento.
Isso abre a porta para todos os tipos de fraude, incluindo compras com cartões de crédito
roubados e recusa de bens comprados.
Evidentemente, esse tipo de fraude é crescente nas compras pelo correio ou pelo
telefone (mail order and telephone order – Moto). Nas transações desse tipo, a lei
estabelece que o comerciante se responsabilize por transações fraudulentas. Assim, se
um cliente fizer uma compra pelo correio ou telefone com um cartão de pagamento e
declarar que nunca fez a compra, o comerciante será responsável, ou seja, ele será
obrigado por lei a devolver o dinheiro ao cliente (a não ser que ele possa provar que o
cliente realmente pediu e recebeu a mercadoria). De maneira semelhante, se uma
compra pelo correio ou telefone for feita com um cartão de pagamento roubado, o
responsável será o comerciante. Por outro lado, nas transações feitas pessoalmente, o
banco do comerciante aceita a responsabilidade. Como era de esperar, é mais difícil um
cliente recusar uma compra que fez pessoalmente e que envolve uma assinatura por
escrito ou um número de identificação pessoal.
As compras SSL são semelhantes às compras pelo correio ou telefone, e
naturalmente o comerciante é responsável por uma compra SSL fraudulenta. Seria
preferível, é claro, usar um protocolo que fornecesse autenticação superior do cliente e
do comerciante, algo que fosse tão bom quanto uma transação realizada pessoalmente
ou até melhor. A autenticação que envolve a autorização de cartões de pagamento
reduziria a fraude e a responsabilidade do comerciante.
9.7.2
Comércio pela Internet usando SET
O protocolo de transações eletrônicas seguras (Secure Electronic Transactions – SET)
é um protocolo especificamente projetado para transações seguras com cartões de pagamento
pela Internet. Ele foi originalmente desenvolvido pela Visa International e MasterCard
International em fevereiro de 1996 com a participação de empresas de tecnologia expoentes
de todo o mundo. O protocolo SET LLC, comumente conhecido como SETCo, foi
estabelecido em dezembro de 1997 como uma entidade legal para administrar e promover a
adoção global do protocolo SET. Eis algumas das principais características do protocolo
SET:

O protocolo SET foi projetado para criptografar tipos específicos de mensagens
relacionadas com cartões de pagamento; ele não pode ser usado para criptografar dados
arbitrários (como textos e imagens), como acontece com o protocolo SSL.

O protocolo SET envolve os três participantes do ato de uma compra: o cliente, o
comerciante e o banco do comerciante. Todas as informações importantes trocadas entre
as três partes são criptografadas.

O protocolo SET requer que os três participantes tenham certificados. Os certificados
dos clientes e dos comerciantes são emitidos por seus bancos, assegurando, dessa
maneira, que esses participantes tenham permissão para fazer compras e receber por
vendas realizadas com cartões de pagamento. O certificado do cliente dá segurança ao
249
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
comerciante de que as cobranças das transações fraudulentas não recairão sobre sua
cabeça. Ele é uma representação eletrônica do cartão de pagamento do cliente e contém
informações sobre sua conta, a instituição financeira que o emitiu e outras informações
criptografadas. O certificado do comerciante assegura ao consumidor que aquele
comerciante está autorizado a aceitar compras feitas por cartões de pagamento. Ele
contém informações sobre o comerciante, o banco do comerciante e a instituição
financeira que emitiu o certificado.

O protocolo SET especifica o significado legal do certificado em poder de cada
participante e a atribuição de responsabilidades vinculadas à transação.

Em uma transação SET, o número do cartão de pagamento do cliente é passado ao banco
do comerciante sem que ele nunca veja esse número em texto aberto. Essa característica
evita que comerciantes fraudulentos ou descuidados roubem ou deixem vazar,
acidentalmente, o número do cartão.
Uma transação SET usa três componentes de software:

Carteira do browser: a aplicação de carteira do browser é integrada ao browser e fornece
ao cliente armazenagem e administração de cartões de pagamento e certificados durante
as compras. Ela responde a mensagens SET do comerciante, solicitando ao cliente que
escolha um cartão de pagamento para o pagamento da compra.

Servidor do comerciante: o servidor do comerciante é o mecanismo da comercialização
e do fechamento de pedidos de compra para os comerciantes que vendem pela Web. Para
pagamentos, ele processa as transações do portador do cartão e se comunica com o banco
do comerciante para aprovação e subsequente captura do pagamento.

Gateway do adquirente: o gateway do adquirente é o componente do software no banco
do comerciante. Ele processa a transação do cartão de pagamento do comerciante
referente à aprovação e ao pagamento.
Na descrição a seguir, apresentaremos uma visão bastante simplificada do protocolo
SET. Na realidade, esse protocolo é substancialmente mais complexo.
9.7.2.1
Estágios de uma compra
Suponha que Bob queira comprar uma mercadoria da Alice Incorporated pela
Internet, usando o protocolo SET.
1. Bob diz a Alice que está interessado em fazer uma compra com cartão de crédito.
2. Alice envia a Bob uma fatura e um identificador de transação exclusivo.
3. Alice envia a Bob o certificado do comerciante, que contém a chave pública do
comerciante. Ela envia também o certificado de seu banco, que contém a chave
pública do banco. Ambos os certificados são criptografados com a chave privada de
uma CA.
4. Bob usa a chave pública da CA para decifrar os dois certificados. Ele agora tem a
chave pública de Alice e a chave pública do banco.
5. Bob gera dois pacotes de informação: o pacote de informação de ordem (IO) e o
pacote de instruções de compra (IC). O pacote de IO, destinado a Alice, contém o
identificador da transação e a bandeira do cartão que está sendo usado; ele não inclui
o número do cartão de Bob. O pacote de IC, destinado ao banco de Alice, contém o
250
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
identificador da transação, o número do cartão e o valor da compra acertado com
Bob. Os pacotes de IO e IC são duplamente criptografados: o pacote de IO é
criptografado com a chave pública de Alice; o pacote de IC é criptografado com a
chave pública do banco de Alice. (Estamos distorcendo um pouco a realidade aqui
para entender melhor o quadro. Na realidade, os pacotes de IO e IC são
criptografados com uma chave de sessão cliente/comerciante e com uma chave de
sessão cliente/banco.) Bob envia os pacotes de IO e IC para Alice.
6. Alice gera um pedido de autorização para a solicitação do cartão de pagamento, o
qual contém o identificador da transação.
7. Alice envia a seu banco a mensagem criptografada com a chave pública do banco.
(Na realidade, é usada uma chave de sessão.) Essa mensagem contém o pedido de
autorização, o pacote de IC recebido de Bob e o certificado de Alice.
8. O banco de Alice recebe a mensagem e a decodifica. Ele verifica se houve alguma
falsificação e também se certifica de que o identificador da transação contido no
pedido de autorização combina com o existente no pacote de IC de Bob.
9. O banco de Alice então envia uma solicitação de autorização de pagamento ao cartão
de pagamento de Bob por meio dos canais bancários tradicionais para
cartões – exatamente como o banco de Alice solicitaria autorização para qualquer
transação normal de pagamento feita com cartão.
10. Uma vez que o banco de Bob autoriza o pagamento, o banco de Alice envia a ela
uma resposta, que é (obviamente) criptografada. A resposta contém o identificador
da transação.
11. Se a transação for aprovada, Alice enviará sua própria mensagem de resposta a Bob.
Essa mensagem servirá de recibo e informará a Bob que o pagamento foi aceito e
que a mercadoria será entregue.
Uma das características principais do protocolo SET é a não-exposição do número
do cartão de crédito ao comerciante. Essa característica é dada pelo estágio 5, no qual o
cliente criptografa o número do cartão de crédito com a chave do banco. Criptografar o
número com a chave do banco evita que o comerciante veja o cartão de crédito. Note
que há uma grande simetria entre os estágios de uma compra com o protocolo SET e os
estágios de uma transação normal com cartão de pagamento. Para processar todas as
tarefas do protocolo SET, o cliente terá uma carteira digital que roda o lado cliente do
protocolo SET e armazena as informações do cartão de pagamento do cliente (como por
exemplo: número do cartão e data de validade).
9.8
Segurança na camada de rede: o IPsec
O protocolo de segurança IP, mais conhecido como IPsec, é um conjunto de protocolos que
oferece segurança na camada de rede. O IPsec é um mecanismo bastante complexo; diferentes
partes desse conjunto de protocolos são descritas em mais de uma dúzia de RFCs. Nesta seção,
vamos discutir o IPsec em um contexto específico, ou seja, em um cenário em que todos os hosts
da Internet suportam o IPsec. Esse contexto, embora esteja ainda muito distante, simplificará a
discussão e ajudará a entender as características principais do IPsec. Dois RFCs-chave são o RFC
2401, que descreve a arquitetura geral da segurança IP, e o RFC 2411, que fornece uma visão do
conjunto de protocolos IPsec e apresenta os documentos que o descrevem.
Antes de examinarmos em detalhes o IPsec, vamos dar um passo atrás e considerar o que
significa oferecer segurança na camada de rede. Considere, de início, o que significa fornecer
251
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
sigilo na camada de rede. A camada de rede ofereceria sigilo se todos os dados transportados
pelos datagramas IP fossem criptografados. Isso significa que, sempre que um host quisesse
enviar um datagrama, ele criptografaria o campo de dados do datagrama antes de despachá-lo
para a rede. Em princípio, a criptografia poderia ser feita com chaves simétricas, chaves públicas
ou chaves de sessão que são negociadas com o uso de criptografia de chaves públicas. O campo
de dados poderia ser um segmento TCP, um segmento UDP, uma mensagem ICMP e assim por
diante. Se esse serviço de camada de rede existisse, todos os dados enviados pelos
hosts – incluindo e-mail, páginas Web, mensagens de controle e de administração (como ICMP e
SNMP) – ficariam ocultos de qualquer terceiro que estivesse “fazendo uma escuta eletrônica” na
rede. Assim, esse serviço forneceria uma “cobertura completa” para todo tráfego da Internet e
daria a todos nós, por conseguinte, uma certa sensação de segurança.
Além do sigilo, poderíamos querer que a camada de rede fornecesse autenticação da fonte.
Quando um host destinatário recebesse um datagrama IP com um endereço IP específico, ele
autenticaria a fonte certificando-se de que o datagrama IP, na verdade, tinha sido gerado pelo host
cujo endereço IP de fonte é aquele. Esse serviço evitaria que estelionatários falsificassem
endereços IP.
No conjunto IPsec, há dois protocolos principais: o protocolo de autenticação de cabeçalho
(Authentication Header – AH) e o protocolo de segurança de encapsulamento da carga útil
(Encapsulation Security Payload – ESP). Quando um host de origem envia um datagrama a um
host de destino, ele o faz com o protocolo AH ou com o protocolo ESP. O protocolo AH fornece
autenticação da fonte e integridade de dados, mas não oferece sigilo. O protocolo ESP fornece
integridade de dados, autenticação da fonte e sigilo. Como oferece mais serviços, esse protocolo
é naturalmente mais complicado e exige mais processamento do que o protocolo AH.
Discutiremos esses dois protocolos mais adiante.
Tanto para o protocolo AH quanto para o ESP, antes de enviar datagramas seguros de um
a outro, os hosts de origem e de destino fazem uma mútua apresentação e criam uma ligação lógica
de camada de rede. Esse canal lógico é chamado de acordo de segurança (Security
Agreement – AS). Assim, o IPsec transforma a tradicional camada de rede não orientada à
conexão em uma rede com conexões lógicas! A conexão lógica definida por um AS é uma
conexão simples, isto é, unidirecional. Se ambos os hosts quiserem enviar datagramas seguros
reciprocamente, então dois ASs (isto é, conexões lógicas) precisarão ser estabelecidos, um em
cada direção. Um AS é identificado, exclusivamente, pelos seguintes três elementos:

Um identificador de protocolo de segurança (AH ou ESP);

O endereço IP de fonte para a conexão simples, e

Um identificador de conexão de 32 bits chamado de Índice dos Parâmetros de Segurança
(Security Parameter Index – SPI).
Para um dado AS (isto é, uma dada conexão lógica de host de origem a host de destino),
cada datagrama IPsec terá um campo especial para o SPI. Todos os datagramas do AS usarão o
mesmo valor do SPI nesse campo.
9.8.1
AH (protocolo de autenticação de cabeçalho)
Como mencionamos anteriormente, o protocolo AH fornece identificação do host de
origem e integridade de dados, mas não sigilo. Quando um determinado host de origem quer
enviar um ou mais datagramas seguros a um destino particular, ele primeiramente estabelece
um AS com o destino. Após ter estabelecido o AS, ele pode enviar datagramas seguros ao
host de destino. Os datagramas seguros contêm o cabeçalho AH, que é inserido entre o
252
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
datagrama de dados IP original (por exemplo, um segmento TCP ou UDP) e o cabeçalho IP,
como mostra a Figura 9.28. Assim, o cabeçalho AH amplia o campo de dados original, e
esse campo ampliado é encapsulado como um datagrama IP padrão. Para o campo de
protocolo no cabeçalho IP, o valor 51 é usado para mostrar que o datagrama contém um
cabeçalho AH. Quando o host de destino recebe o datagrama IP, ele percebe o número 51
no campo de protocolo e processa o datagrama usando o protocolo AH. (Lembre-se de que
o campo de protocolo do datagrama IP é usado para determinar o protocolo da camada
acima – por exemplo, UDP, TCP ou ICMP – para a qual será passada a porção de dados de
um datagrama IP.) Roteadores intermediários processam os datagramas exatamente como
sempre o fazem – examinam o endereço de destino IP e roteiam os datagramas de acordo
com esse destino.
Figura 9.28 – Posição do cabeçalho AH no datagrama IP.
O cabeçalho AH contém diversos campos, tais como:

Campo do próximo cabeçalho, que desempenha o papel do campo de protocolo de um
datagrama comum. Ele indica se os dados que se seguem ao cabeçalho AH são um
segmento TCP, um segmento UDP, um segmento ICMP etc. (Lembre-se de que o campo
de protocolo do datagrama IP agora está sendo usado para indicar o protocolo AH e,
assim, não pode mais ser utilizado para identificar o protocolo da camada de transporte.)

Campo do SPI, um valor arbitrário de 32 bits que, combinado ao endereço de destino IP
e ao protocolo de segurança, identifica exclusivamente o AS para o datagrama.

Campo do número de sequência, um campo de 32 bits que contém um número de
seqüência para cada datagrama. Ele é inicialmente estabelecido em zero quando do
estabelecimento do AS. O protocolo AH usa os números de sequência para evitar os
ataques de reprodução e do homem do meio (veja a Seção 9.3).

Campo da autenticação de dados, um campo de comprimento variável que contém um
resumo de mensagem assinado (isto é, uma assinatura digital) para esse datagrama. O
resumo de mensagem é calculado sobre o datagrama IP original, fornecendo, desse
modo, autenticação do host de origem e integridade ao datagrama IP. A assinatura digital
é processada usando o algoritmo de autenticação especificado pelo AS, como o DES, o
MD5 ou o SHA.
Quando o host de destino recebe um datagrama IP com um cabeçalho AH, ele
determina o AS para o datagrama e, em seguida, autentica a integridade do datagrama
processando o campo da autenticação de dados. O esquema de autenticação do IPsec (tanto
para o protocolo AH como para o ESP) usa um sistema chamado HMAC, que é um resumo
de mensagem criptografado descrito no RFC 2104. O HMAC usa uma chave secreta
compartilhada pelas duas partes, em vez de métodos de chaves públicas para autenticação de
mensagens.
253
Apostila de Fundamentos de Redes de Computadores
9.8.2
Prof: Ricardo Quintão
ESP (protocolo de segurança de encapsulamento da carga útil)
O protocolo ESP fornece sigilo na camada de rede, bem como autenticação do host de
origem. Novamente, tudo começa com um host de origem estabelecendo um AS com
um host de destino. Como mostra a Figura 9.29, um datagrama seguro é criado
envolvendo o datagrama IP original com campos de cabeçalho e de trailer e, em seguida,
inserindo esses dados encapsulados no campo de dados de um datagrama IP. No campo
de protocolo do cabeçalho do datagrama IP, o valor 50 é usado para mostrar que o
datagrama contém um cabeçalho e um trailer ESP. Quando o host de destino recebe um
datagrama IP, ele percebe o número 50 no campo de protocolo e processa o datagrama
usando o protocolo ESP. Como mostra a Figura 9.29, o datagrama IP original e o campo
de trailer ESP são criptografados. O sigilo é fornecido pela criptografia DES–CBC [RFC
2405]. O cabeçalho ESP consiste em um campo de 32 bits para o SPI e um campo de 32
bits para o número de sequência, os quais desempenham exatamente a mesma função
que exercem no protocolo AH. O trailer contém o campo do próximo cabeçalho, cuja
função é idêntica à função realizada no protocolo AH. Note que, como o campo do
próximo cabeçalho é criptografado juntamente com os dados originais, um intruso não
pode descobrir qual protocolo de transporte está sendo usado. Após o trailer, há um
campo da autenticação de dados, que também desempenha o mesmo papel que o campo
da autenticação de dados no protocolo AH.
Figura 9.29 – Campos ESP no datagrama IP.
9.8.3
O AS e a administração de chaves
Para a disponibilização bem-sucedida do IPsec, é necessário um acordo de segurança
(AS) e um esquema automatizado de gerenciamento de chaves, cuja escala possa ser
expandida. Diversos protocolos foram definidos para realizar essas tarefas, entre os quais:

O algoritmo de troca de chaves da Internet (Internet Key Exchange – IKE) [RFC 2409] é
o protocolo default de administração de chaves para o IPsec.

A associação de segurança na Internet e protocolo de administração de chave (Internet
Security Association and Key Management Protocol – ISKMP) define procedimentos
para estabelecer e encerrar ASs [RFC 2407; RFC 2408]. A ISKMP é completamente
independente da troca de chaves da IKE.
Isso encerra nosso resumo sobre o IPsec. Discutimos o IPsec no contexto do IPv4 e do
“modo de transporte”. O IPsec também determina um “modo de túnel”, no qual são os
roteadores – e não os host – que introduzem a funcionalidade de segurança. Por fim, ele
descreve os procedimentos de criptografia para o IPv6 e também para o IPv4.
254
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Apêndice A
Série de Fourier
Em qualquer rede de comunicações entre computadores, desejamos que o sinal recebido por um
nó seja idêntico ao sinal transmitido pelo nó emissor. Infelizmente, esse cenário só pode ocorrer quando
o comprimento do canal de comunicação é bastante curto e a taxa de transmissão de dados relativamente
baixa. Isso é obviamente pouco prático na maioria das aplicações de redes. Como consequência,
quando o comprimento do cabo é longo ou as taxas de transmissão de dados alta, um sinal recebido não
é exatamente o mesmo que o sinal originalmente transmitido. Isso é conhecido como distorção de sinal.
A análise de Fourier é um método sistemático para prever distorções de sinal.
A análise de Fourier foi desenvolvida pelo matemático francês Jean Fourier, que provou que
qualquer onda periódica pode ser representada como a soma de uma agregação de senóides. Uma boa
aproximação requer um número finito de ondas, já uma representação perfeita requer um número
infinito de ondas. Usando a análise de Fourier, podemos prever como um sinal transmitido será
recebido. A análise de Fourier se fundamenta em duas observações. Primeiro, qualquer sinal usado em
sistemas de comunicação entre computadores pode ser escrito como uma soma de ondas senoidais.
Segundo, um sinal representado como uma onda senoidal é preservado (ou seja, não é distorcido)
quando é transmitido através de um meio, lembrando que o sinal ainda está sujeito a atrasos e
atenuações. Um resultado da análise de Fourier aplicada a redes de comunicações entre computadores
é que somente senóides têm a garantia de não serem distorcidas durante a transmissão. Uma segunda
implicação da análise de Fourier é que uma onda quadrada pode ser decomposta como uma soma de
senóides. De uma perspectiva matemática, isso é semelhante a aproximar funções contínuas usando
polinômios, denominados polinômios de Taylor. Isso também é similar à expansão em séries de Taylor
ou de MacLaurin para funções em que uma dada função é representada como uma série infinita.
Para usar a análise de Fourier visando prever qual será o sinal recebido, faz-se o seguinte:
1. Determine a atenuação do canal de comunicação e o desvio de fase em uso. Esses valores
são tipicamente fornecidos pelo fabricante.
2. Determine a função de decomposição, ou seja, a análise de Fourier correspondente.
3. Entre com o ganho e desvio de fase para a função decomposta e avalie. Com isso temos
uma função resposta, que representa a saída de um sinal de entrada após a transmissão
através de um canal de comunicação.
A análise de Fourier nos proporciona uma ferramenta para prever distorções de sinais, que nos
possibilita determinar o comprimento adequado para uma linha de transmissão, dadas a frequência e a
taxa de dados. Essa é uma das razões pelas quais as restrições de comprimento de cabo para a Ethernet
convencional (10 Mbps), Fast Ethernet (100 Mbps) e Gigabit Ethernet (1000 Mbps) são diferentes,
dependendo de qual taxa de dados está sendo usada e da frequência do cabo.
Resumindo, sempre que tivermos uma função periódica f (t ) de período T integrável neste
período, ela poderá ser decomposta em um somatório de infinitas ondas, que são os harmônicos de
Fourier, cujo resultado tenderá a função original f (t ) . Isto é, a cada novo harmônico somado estaremos
nos aproximando cada vez mais da onda original formada pela função f (t ) . Esta série de funções é
denominada Série de Fourier e é definida pela Equação A-1, onde para cada valor de n temos a geração
de um novo harmônico que é então adicionado aos anteriores.
255
Apostila de Fundamentos de Redes de Computadores
f (t ) 
Prof: Ricardo Quintão


1
a 0   a n sen(2nft)   bn cos(2nft)
2
n 1
n 1
Equação A-1 – Forma Geral da Série de Fourier.
Onde:
T
2
a 0   f (t )dt
T 0
T
an 
2
f (t ) sen(2nft)dt
T 0
T
2
bn   f (t ) cos(2nft)dt
T 0
Equação A-2 – Coeficientes da Série de Fourier.
Se o sinal que queremos representar pela Série de Fourier não for periódico, poderemos simular
uma periodicidade considerando que o sinal em questão se repete no tempo, isto é, o sinal transmitido
possui um tempo de transmissão igual a T. O que faremos é supor que após este tempo T, ele será
repetido infinitas vezes. A partir deste ponto de vista, poderemos dizer que o sinal agora é periódico
com período igual a T, já que a cada T unidades de tempo o sinal se repete. Faremos esta consideração
devido ao fato da Série de Fourier considerar que o sinal é periódico. Do ponto de vista prático não
haverá qualquer alteração na nossa análise, pois iremos nos limitar a visualizar o sinal no intervalo de
tempo de 0 a T.
A primeira etapa para montar a Série de Fourier é calcular os coeficientes a 0 , a n e bn que são
baseados na função original f (t ) . A complexidade deste cálculo está diretamente relacionada com a
função f (t ) . No nosso caso, estaremos trabalhando com sinais digitais cujos valores só podem ser 0
ou 1. Desta forma, o cálculo dos Coeficientes de Fourier serão limitados a integração da função seno e
cosseno no caso de a n e bn respectivamente e apenas da função dt no caso do a 0 .
Devida a necessidade de se integrar função seno e cosseno, na Seção A.3 é feita uma breve
recordação de como integra-las, pois serão utilizadas nos exemplos a seguir.
Cada harmônico de Fourier terá uma determinada amplitude de média quadrática que pode ser
calculada através da Equação A-3. Estas amplitudes são importantes porque são proporcionais a energia
contida na onda. Como os meios de transmissão oferecem atenuações diferentes para cada harmônico,
é importante saber até qual harmônico a diferença de atenuação não é suficiente para distorcer o sinal a
ponto de não ser mais reconhecido. Se todos os harmônicos tivessem o mesmo nível de atenuação, o
sinal transmitido teria a sua amplitude reduzida, mas não seria distorcido. É em função desta variação
no nível de atenuação oferecido a cada harmônico que é feita a definição da largura de banda do meio.
A  a n2  bn2
Equação A-3 – Amplitude de Média Quadrática de cada Harmônico de Fourier.
256
Apostila de Fundamentos de Redes de Computadores
A.1
Prof: Ricardo Quintão
Exemplo 1: Cálculo dos Coeficientes de Fourier de um Sinal NRZ
Vamos supor a transmissão de um conjunto de 8 bits (01100010) codificados no formato
NRZ. O sinal transmitido está ilustrado na Figura A-1.
Figura A-1 – Exemplo 1: Sinal NRZ.
A função f (t ) abaixo representa o sinal NRZ da Figura acima.
T

0 se 0  t  8

1 se T  t  3T

8
8

3T
6T

f (t )  0 se
t 
8
8

6T
7T

1 se 8  t  8

0 se 7T  t  8T

8
8

Equação A-4 – Função Representante do Sinal NRZ.
A.1.1 Cálculo do a 0
T
2
a 0   f (t )dt
T 0
3T
6T
7T
8T
 T8

8
8
8
8


2
a0    0  dt   1  dt   0  dt   1  dt   0  dt 
T 0
T
3T
6T
7T

8
8
8
8


7T
 3T

8

2 8
a 0    dt   dt 
TT
6T

8
8

a0 
7T 8
2  3T 8

t
t

6T 8 
T T8
257
Apostila de Fundamentos de Redes de Computadores
a0 
2  3T T   7T 8T 
 



T  8 8   8
8 
a0 
2  2T T 
 

T 8
8
a0 
2 3T

T 8
a0 
Prof: Ricardo Quintão
3
4
Equação A-5 – Coeficiente a0 do Sinal NRZ.
A.1.2 Cálculo do a n
T
an 
2
f (t ) sen(2nft)dt
T 0
3T
6T
7T
8T
T

8
8
8
8
2 8

a n    0  sen(2nft)dt   1  sen(2nft)dt   0  sen(2nft)dt   1  sen(2nft)dt   0  sen(2nft)dt 
T 0
T
3T
6T
7T


8
8
8
8


3T
7T


8
28

a n    sen(2nft)dt   sen(2nft)dt 
T T
6T


8
8

Considerando k  2fn temos:
7T
 38T

8
2

a n    sen(kt)dt   sen(kt)dt 
T T
6T


8
8

an 
2
Tk
3T 8
7T 8

 


cos(kt )  cos(kt )  
T 8 
6T 8  


an 
2
Tk

 3kT 
 kT  
 7kT 
 6kT  
  cos    cos
  cos
 
 cos
 8 
 8  
 8 
 8  

Substituindo o valor de k e considerando que f 
an 
2T
2nT
1
temos:
T

 3  2nT 
 2nT 
 7  2nT 
 6  2nT 
  cos

 cos 8T   cos 8T   cos 8T






 8T


258
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Simplificando os termos semelhantes e mudando a ordem dos cossenos ficamos com:
an 
1   n 
 3n 
 6n 
 7n 
cos   cos
  cos
  cos


n   4 
 4 
 4 
 4 
Equação A-6 – Coeficiente an do Sinal NRZ.
A.1.3 Cálculo do bn
T
2
bn   f (t ) cos(2nft)dt
T 0
3T
6T
7T
8T
 T8

8
8
8
8
2

bn    0  cos(2nft)dt   1 cos(2nft)dt   0  cos(2nft)dt   1 cos(2nft)dt   0  cos(2nft)dt 
T 0
T
3T
6T
7T


8
8
8
8
7T
 38T

8
2

bn    cos(2nft)dt   cos(2nft)dt 
T T
6T


8
8

Considerando k  2fn temos:
7T
 38T

8
2

bn    cos(kt)dt   cos(kt)dt 
T T
6T


8
8

bn 
2
Tk
3T 8
7T 8

 


sen
(
kt
)
sen
(
kt
)




T 8 
6T 8 



bn 
2
Tk
  3kT 
 kT 
 7kT 
 6kT 
 sen 8   sen 8   sen 8   sen 8 

 




 
Substituindo o valor de k e considerando que f 
bn 
2T
2nT
1
temos:
T
  3  2nT 
 2nT 
 7  2nT 
 6  2nT 
  sen

 sen 8T   sen 8T   sen 8T





 8T

 
Simplificando os termos semelhantes e mudando a ordem dos senos ficamos com:
bn 
1 
 n 
 3n 
 6n 
 7n 
 sen   sen
  sen
  sen


n 
 4 
 4 
 4 
 4 
Equação A-7 – Coeficiente bn do Sinal NRZ.
259
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
A Série de Fourier completa da função f (t ) é:
f (t ) 
1 3   sen(2nft)   n 
 3n 
 6n 
 7n  
  
cos   cos
  cos
  cos
  

2 4 n 1 
n
 4 
 4 
 4  
  4 
 cos(2nf ) 
 n 
 3n 
 6n 
 7n  
 sen   sen
  sen
  sen
 

n
 4
 4 
 4 
 4  
n 1 



3   sen(2nft)   n 
 3n 
 6n 
 7n  
f (t )    
cos   cos
  cos
  cos
  

8 n 1 
n
 4 
 4 
 4  
  4 
 cos(2nf ) 
 n 
 3n 
 6n 
 7n  
 sen   sen
  sen
  sen
 

n
 4 
 4 
 4 
 4  
n 1 



Equação A-8 – Série de Fourier Completa para o Sinal NRZ.
A.1.4 Gráficos do Exemplo 1
A seguir serão apresentados os gráficos referentes à Série de Fourier calculada nos itens
anteriores considerando um período de 8 unidades de tempo, isto é, T  8 u.t. logo a
1
freqüência será de f  u.f. (unidade de freqüência). Foram feitos gráficos considerando
8
até 10 harmônicos, isto é, de n  1 até n  10 .
A Figura A-2 mostra o formato do Sinal Original puro. A princípio, este é o sinal que
desejamos transmitir, porém, os meios de transmissão irão transmitir apenas os seus
harmônicos. A Figura A-3 mostra os 10 primeiros harmônicos referentes ao sinal original.
Conforme foi comentado na definição da Série de Fourier, conforme vão se somando
os seus harmônicos, mais próximo chegaremos a função original. Neste nosso exemplo, nos
limitamos a um total de 10 harmônicos.
A Figura A-4 mostra o primeiro harmônico sendo comparado ao sinal original. Notase que este único harmônico está muito distante de representar o sinal original. A Figura A-5
mostra a soma dos dois primeiros harmônicos. Houve uma considerável mudança, estando
agora mais próximo do sinal original que no caso de apenas um único harmônico. Na
Figura A-6 é feita a soma dos 3 primeiros harmônicos. Apesar da mudança ter sido pequena,
ela mudou o sinal aproximando-o do sinal original. Na Figura A-7 temos a soma dos 4
primeiros harmônicos. Neste gráfico já temos o intervalo de 3 u.t. a 6 u.t. mais bem definido
do que tínhamos nas figuras anteriores. Ao acrescentar o quinto harmônico, não houve
mudanças significativas, como mostra a Figura A-8. Ao acrescentarmos o sexto harmônico,
já é possível identificar o sinal original a partir deste somatório de harmônicos, como mostra
a Figura A-9. Com o acréscimo do sétimo, oitavo, nono e décimo harmônico, teremos um
refinamento melhor do sinal como podem ser vistos na Figura A-10 até a Figura A-13
respectivamente. Porém, como cada novo harmônico aumenta a largura de banda, se torna
um desperdício adicionar mais harmônicos do que o necessário para que o equipamento de
destino reconheça o sinal emitido.
A Figura A-14 mostra as amplitudes de média quadrática de cada um dos 10
harmônicos exemplificados aqui. O oitavo harmônico possui uma amplitude tão pequena em
relação aos demais que sua representação nem chegou a ser apresentada.
260
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Sinal Original
1,2
Amplitude
1
0,8
Sinal Original
0,6
0,4
0,2
0
0
1
2
3
4
5
6
7
8
Tempo
Figura A-2 – Sinal Original.
Harmônicos de Fourier
1
n=1
0,8
n=2
n=3
Amplitude
0,6
n=4
n=5
0,4
n=6
n=7
0,2
n=8
n=9
0
n=10
-0,2
0
0,5
1
1,5
2
2,5
3
3,5
4
4,5
5
5,5
6
Tempo
Figura A-3 – 10 Harmônicos de Fourier.
261
6,5
7
7,5
8
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Primeiro Harmônico
1,2
Amplitude
1
0,8
1 Harmônico
0,6
Dados Originais
0,4
0,2
0
0
1
2
3
4
5
6
7
8
Tempo
Figura A-4 – Primeiro Harmônico de Fourier.
Somatório dos 2 primeiros harmônicos
1,2
1
Amplitude
0,8
0,6
2 Harmônicos
0,4
Dados Originais
0,2
0
-0,2
-0,4
0
1
2
3
4
5
6
7
8
Tempo
Figura A-5 – Somatório dos 2 primeiros Harmônico de Fourier.
262
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Somatório dos 3 primeiros Harmônicos
1,4
1,2
Amplitude
1
0,8
0,6
3 Harmônicos
0,4
Dados Originais
0,2
0
-0,2
-0,4
0
1
2
3
4
5
6
7
8
Tempo
Figura A-6 – Somatório dos 3 primeiros Harmônico de Fourier.
Somatório dos 4 primeiros Harmônicos
1,4
1,2
1
Amplitude
0,8
0,6
4 Harmônicos
0,4
Dados Originais
0,2
0
-0,2
-0,4
0
1
2
3
4
5
6
7
8
Tempo
Figura A-7 – Somatório dos 4 primeiros Harmônico de Fourier.
263
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Somatório dos 5 primeiros Harmônicos
1,2
1
Amplitude
0,8
0,6
5 Harmônicos
0,4
Dados Originais
0,2
0
-0,2
-0,4
0
1
2
3
4
5
6
7
8
Tempo
Figura A-8 – Somatório dos 5 primeiros Harmônico de Fourier.
Somatório dos 6 primeiros Harmônicos
1,4
1,2
Amplitude
1
0,8
6 Harmônicos
0,6
Dados Originais
0,4
0,2
0
-0,2
0
1
2
3
4
5
6
7
8
Tempo
Figura A-9 – Somatório dos 6 primeiros Harmônico de Fourier.
264
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Somatório dos 7 primeiros Harmônicos
1,4
1,2
Amplitude
1
0,8
7 Harmônicos
0,6
Dados Originais
0,4
0,2
0
-0,2
0
1
2
3
4
5
6
7
8
Tempo
Figura A-10 – Somatório dos 7 primeiros Harmônico de Fourier.
Somatório dos 8 primeiros Harmônicos
1,4
1,2
Amplitude
1
0,8
8 Harmônicos
0,6
Dados Originais
0,4
0,2
0
-0,2
0
1
2
3
4
5
6
7
8
Tempo
Figura A-11 – Somatório dos 8 primeiros Harmônico de Fourier.
265
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Somatório dos 9 primeiros Harmônicos
1,4
1,2
Amplitude
1
0,8
9 Harmônicos
0,6
Dados Originais
0,4
0,2
0
-0,2
0
1
2
3
4
5
6
7
8
Tempo
Figura A-12 – Somatório dos 9 primeiros Harmônico de Fourier.
Somatório dos 10 primeiros Harmônicos
1,2
1
Amplitude
0,8
0,6
10 Harmônicos
0,4
Dados Originais
0,2
0
-0,2
0
1
2
3
4
5
6
7
8
Tempo
Figura A-13 – Somatório dos 10 primeiros Harmônico de Fourier.
266
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Amplitude de Média Quadrática dos Harmônicos
0,6
0,50383
0,5
Amplitude
0,4
Amplitude
0,3
0,24336
0,19544
0,2
0,16757
0,15924
0,11840
0,10099
0,1
0,03522
0,02670
0,00038
0
1
2
3
4
5
6
7
8
9
10
Harmônicos
Figura A-14 – Amplitude de Média Quadrática de cada Harmônico de Fourier.
267
Apostila de Fundamentos de Redes de Computadores
A.2
Prof: Ricardo Quintão
Exemplo 2: Cálculo dos Coeficientes de Fourier de um Sinal Manchester
Vamos supor a transmissão do mesmo conjunto de 8 bits (01100010) codificados no
formato Manchester. O sinal transmitido está ilustrado na Figura A-15.
Figura A-15 – Exemplo 2: Sinal Manchester.
A função f (t ) abaixo representa o sinal NRZ da Figura acima.
T

1 se 0  t  16

0 se T  t  3T

16
16

1 se 3T  t  4T

16
16

4T
5T
0 se
t
16
16


5T
7T
t
1 se
16
16

7T
8T

0 se
t


16
16
f (t )  
1 se 8T  t  9T

16
16

9T
10T
0 se
t
16
16


10T
11T
t
1 se
16
16


11T
13T
t
0 se
16
16

1 se 13T  t  15T

16
16

0 se 15T  t  16T

16
16

Equação A-9 – Função Representante do Sinal Manchester.
268
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
A.2.1 Cálculo do a 0
T
a0 
2
f (t )dt
T 0
4T
7T
9T
11T
15T
 16T

8
16
16
16
16

2
a 0    1  dt   1  dt   1  dt   1  dt   1  dt   1  dt 
T0
3T
5T
8T
10T
13T

16
16
16
16
16


a0 
4T 16
7T 16
9T 16
11T 16
15T 16
2  T 16

t
t
t
t
t
t

3T 16
5T 16
8T 16
10T 16
13T 16 
T 0
a0 
2  T
  4T 3T   7T 5T   9T 8T   11T 10T   15T 13T 





  0  






T  16
16   16
16 
  16 16   16 16   16 16   16
a0 
2  T T 2T T T 2T 
  
  

T  16 16 16 16 16 16 
a0 
2 8T

T 16
a0  1
Equação A-10 – Coeficiente a0 do Sinal Manchester.
A.2.2 Cálculo do a n
T
an 
2
f (t ) sen(2nft)dt
T 0
4T
7T
16T

16
16


  1  sen(2nft)dt   1  sen(2nft)dt   1  sen(2nft)dt  
3T
5T
0

2
16
16

a n   9T
11T
15T
T

16
16
16


  1  sen(2nft)dt   1  sen(2nft)dt   1  sen(2nft)dt 
10T
13T
 816T

16
16
269
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Considerando k  2fn temos:
4T
7T
16T

16
16


  1  sen(kt)dt   1  sen(kt)dt   1  sen(kt)dt  
3T
5T
0

2
16
16

a n   9T
11T
15T
T

16
16
16


  1  sen(kt)dt   1  sen(kt)dt   1  sen(kt)dt 
10T
13T
 816T

16
16
T 16
4T 16
7T 16


 
 



 

cos(
kt
)

cos(
kt
)

cos(
kt
)







0 
3T 16 
5T 16 
2 



an 


9
T
16
11
T
16
15
T
16
Tk  
 
 

 cos(kt )
 cos(kt )
 cos(kt )
 
8T 16 
10T 16 
13T 16 
 
 
 


 
 kT 
 4kT 
 3kT  
 7 kT 
 5kT 
  cos
   cos
  cos
 
 cos   cos0    cos

 16 
 16 
 16  
 16 
 16 
2 
 

an 


Tk  
 9kT 
 8kT  
 11kT 
 10kT  
 15kT 
 13kT  
  cos
  cos
   cos
  cos
   cos
  cos

 
 16 
 16  
 16 
 16  
 16 
 16  

Substituindo o valor de k e considerando que f 
1
temos:
T

 2nT 
 4  2nT 
 3  2nT 
 7  2nT  
 cos 16T   1  cos 16T   cos 16T   cos 16T   







 

2T 
 5  2nT 
 9  2nT 
 8  2nT 
 11 2nT  
an 
  cos
  cos
  cos
 
 cos
2nT 
 16T 
 16T 
 16T 
 16T  


 10  2nT 
 15  2nT 
 13  2nT 
  cos
  cos

 cos

 16T 
 16T 
 16T 


Simplificando os termos semelhantes e mudando a ordem dos cossenos ficamos com:

 n 
 3n 
 4n 
 5n 
 7n 
 8n  
1  cos 8   cos 8   cos 8   cos 8   cos 8   cos 8  
1 
 









 
an 

n   9n 
 10n 
 11n 
 13n 
 15n 
  cos
  cos
  cos
  cos

cos

 8 
 8 
 8 
 8 
  8 

Equação A-11 – Coeficiente an do Sinal Manchester.
270
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
A.2.3 Cálculo do bn
T
bn 
2
f (t ) cos(2nft)dt
T 0
4T
7T
16T

16
16


  1  cos(2nft)dt   1  cos(2nft)dt   1  cos(2nft)dt  
3T
5T
0

2
16
16

bn   9T
11T
15T
T

16
16
16


  1  cos(2nft)dt   1  cos(2nft)dt   1  cos(2nft)dt 
10T
13T
 816T

16
16
Considerando k  2fn temos:
4T
7T
16T

16
16


  1  cos(kt)dt   1  cos(kt)dt   1  cos(kt)dt  
3T
5T
0

2
16
16

bn   9T
11T
15T
T

16
16
16


  1  cos(kt)dt   1  cos(kt)dt   1  cos(kt)dt 
10T
13T
 816T

16
16
T 16
4T 16
7T 16


 
 



 
sen
(
kt
)
sen
(
kt
)
sen
(
kt
)







0 
3T 16 
5T 16 
2 



bn 


9
T
16
11
T
16
15
T
16
Tk  
 
 

 sen(kt )
 sen(kt )
 sen(kt )
 
8T 16 
10T 16 
13T 16 
 
 
 
  kT 

   4kT 
 3kT    7kT 
 5kT 
  sen
   sen
  sen
 
 sen   sen0   sen

 16    16 
 16 
2   16 
   16 

bn 


Tk    9kT 
 8kT    11kT 
 10kT    15kT 
 13kT  
 sen
 sen
   sen
  sen
   sen
  sen

   16 
16
16
16
16








 16  





Substituindo o valor de k e considerando que f 
1
temos:
T
  2nT 
 4  2nT 
 3  2nT 
 7  2nT  
 sen 16T   0  sen 16T   sen 16T   sen 16T   






 
 
2T   5  2nT 
 9  2nT 
 8  2nT 
 11 2nT  
bn 
  sen
  sen
  sen
 
 sen
2nT   16T 
 16T 
 16T 
 16T  
  10  2nT 

 15  2nT 
 13  2nT 
  sen
  sen

 sen

 16T 
 16T 
  16T 

271
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Simplificando os termos semelhantes e mudando a ordem dos senos ficamos com:
  n 
 3n 
 4n 
 5n 
 7n 
 8n  
 sen 8   sen 8   sen 8   sen 8   sen 8   sen 8   
1   









 
bn 

n 
 9n 
 10n 
 11n 
 13n 
 15n 
  sen
  sen
  sen
  sen

 sen

 8 
 8 
 8 
 8 
 8 


Equação A-12 – Coeficiente bn do Sinal Manchester.
A Série de Fourier completa da função f (t ) é:


 n 
 3n 
 4n 
 5n   

1  cos 8   cos 8   cos 8   cos 8   
 





 


 
1
 sen(2nft)   7n 
 8n 
 9n 
 10n   
f (t )   1   
  cos
  cos
  cos
   
cos
2
n
8
8
8
8







 
n 1 


  11n 

 13n 
 15n 
  cos
  cos


cos


 8 
 8 
  8 
 

  n 
 3n 
 4n 
 5n 
 7n 
 8n   

 sen 8   sen 8   sen 8   sen 8   sen 8   sen 8    
 cos(2nf )   









 





n
 9n 
 10n 
 11n 
 13n 
 15n 
n 1 
  sen
  sen
  sen
  sen

 sen


 8 
 8 
 8 
 8 
 8 





 n 
 3n 
 4n 
 5n   

1  cos 8   cos 8   cos 8   cos 8    
 





 


 
1
 sen(2nft)   7n 
 8n 
 9n 
 10n   
f (t )    
  cos
  cos
  cos
   
cos
2 n 1 
n
8
8
8
8







 


  11n 

 13n 
 15n 
  cos
  cos


cos


 8 
 8 
  8 
 

  n 
 3n 
 4n 
 5n 
 7n 
 8n   
sen

sen

sen

sen

sen

sen











 



 cos(2nf )   8 
 8 
 8 
 8 
 8 
 8  





n
 9n 
 10n 
 11n 
 13n 
 15n 
n 1 
  sen
  sen
  sen
  sen

 sen


 8 
 8 
 8 
 8 
 8 


Equação A-13 – Série de Fourier Completa para o Sinal Manchester.
A.2.4 Gráficos do Exemplo 2
A seguir serão apresentados os gráficos referentes à Série de Fourier calculada nos itens
anteriores considerando um período de 8 unidades de tempo, isto é, T  8 u.t. logo a
1
freqüência será de f  u.f. (unidade de freqüência). Foram feitos gráficos considerando
8
até 13 harmônicos, isto é, de n  1 até n  13 .
A análise a ser feita é a mesma utilizada no Exemplo 1 na Seção A.1.4. O mais
importante a ser observado é que no Exemplo 1, bastavam seis harmônicos para o sinal ser
272
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
reconhecido. Neste novo exemplo, onde estamos utilizando a codificação Manchester, seis
harmônicos não são mais suficientes para identificar o sinal. Neste caso precisamos de no
mínimo 11 harmônicos, mas dependendo da distância e das condições do meio de transmissão
provavelmente será necessário o uso de mais harmônico. Foram feitas as representações da
Série de Fourier até o 13º harmônico para mostrar como ele foi ficando mais semelhante ao
sinal original.
A Figura A-31 mostra as amplitudes de média quadrática de cada um dos 13
harmônicos exemplificados aqui.
Sinal Original
1,2
1
Amplitude
0,8
0,6
Sinal Original
0,4
0,2
0
0
1
2
3
4
5
6
7
8
Tempo
Figura A-16 – Sinal Original.
Harmônicos de Fourier
1
n=1
0,9
Amplitude
n=2
0,8
n=3
0,7
n=4
n=5
0,6
n=6
n=7
0,5
n=8
0,4
n=9
0,3
n=10
0,2
n=11
n=12
0,1
n=13
0
0
0,5
1
1,5
2
2,5
3
3,5
4
4,5
5
5,5
6
Tempo
Figura A-17 – 13 Harmônicos de Fourier.
273
6,5
7
7,5
8
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Primeiro Harmônico
1,2
1
Amplitude
0,8
1 Harmônico
Dados Originais
0,6
0,4
0,2
0
0
1
2
3
4
5
6
7
8
Tempo
Figura A-18 – Primeiro Harmônico de Fourier.
Somatório dos 2 primeiros Harmônicos
1,2
1
Amplitude
0,8
2 Harmônicos
Dados Originais
0,6
0,4
0,2
0
0
1
2
3
4
5
6
7
8
Tempo
Figura A-19 – Somatório dos 2 primeiros Harmônico de Fourier.
274
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Somatório dos 3 primeiros Harmônicos
1,2
1
Amplitude
0,8
3 Harmônicos
Dados Originais
0,6
0,4
0,2
0
0
1
2
3
4
5
6
7
8
Tempo
Figura A-20 – Somatório dos 3 primeiros Harmônico de Fourier.
Somatório dos 4 primeiros Harmônicos
1,2
1
Amplitude
0,8
4 Harmônicos
0,6
Dados Originais
0,4
0,2
0
0
1
2
3
4
5
6
7
8
Tempo
Figura A-21 – Somatório dos 4 primeiros Harmônico de Fourier.
275
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Somatório dos 5 primeiros Harmônicos
1,2
1
Amplitude
0,8
0,6
5 Harmônicos
Dados Originais
0,4
0,2
0
-0,2
0
1
2
3
4
5
6
7
8
Tempo
Figura A-22 – Somatório dos 5 primeiros Harmônico de Fourier.
Somatório dos 6 primeiros Harmônicos
1,6
1,4
1,2
Amplitude
1
0,8
6 Harmônicos
Dados Originais
0,6
0,4
0,2
0
-0,2
-0,4
0
1
2
3
4
5
6
7
8
Tempo
Figura A-23 – Somatório dos 6 primeiros Harmônico de Fourier.
276
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Somatório dos 7 primeiros Harmônicos
1,6
1,4
1,2
Amplitude
1
0,8
7 Harmônicos
Dados Originais
0,6
0,4
0,2
0
-0,2
-0,4
0
1
2
3
4
5
6
7
8
Tempo
Figura A-24 – Somatório dos 7 primeiros Harmônico de Fourier.
Somatório dos 8 primeiros Harmônicos
1,6
1,4
1,2
Amplitude
1
0,8
8 Harmônicos
Dados Originais
0,6
0,4
0,2
0
-0,2
-0,4
0
1
2
3
4
5
6
7
8
Tempo
Figura A-25 – Somatório dos 8 primeiros Harmônico de Fourier.
277
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Somatório dos 9 primeiros Harmônicos
1,4
1,2
1
Amplitude
0,8
0,6
9 Harmônicos
Dados Originais
0,4
0,2
0
-0,2
-0,4
0
1
2
3
4
5
6
7
8
Tempo
Figura A-26 – Somatório dos 9 primeiros Harmônico de Fourier.
Somatório dos 10 primeiros Harmônicos
1,4
1,2
1
Amplitude
0,8
0,6
10 Harmônicos
Dados Originais
0,4
0,2
0
-0,2
-0,4
0
1
2
3
4
5
6
7
8
Tempo
Figura A-27 – Somatório dos 10 primeiros Harmônico de Fourier.
278
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Somatório dos 11 primeiros Harmônicos
1,4
1,2
1
Amplitude
0,8
0,6
11 Harmônicos
Dados Originais
0,4
0,2
0
-0,2
-0,4
0
1
2
3
4
5
6
7
8
Tempo
Figura A-28 – Somatório dos 11 primeiros Harmônico de Fourier.
Somatório dos 12 primeiros Harmônicos
1,4
1,2
1
Amplitude
0,8
0,6
12 Harmônicos
Dados Originais
0,4
0,2
0
-0,2
-0,4
0
1
2
3
4
5
6
7
8
Tempo
Figura A-29 – Somatório dos 12 primeiros Harmônico de Fourier.
279
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Somatório dos 13 primeiros Harmônicos
1,4
1,2
1
Amplitude
0,8
0,6
13 Harmônicos
Dados Originais
0,4
0,2
0
-0,2
-0,4
0
1
2
3
4
5
6
7
8
Tempo
Figura A-30 – Somatório dos 13 primeiros Harmônico de Fourier.
Amplitude de Média Quadrática dos Harmônicos
0,45
0,40486
0,4
0,35
Amplitude
0,3
0,24349
0,25
0,20822
Amplitude
0,2
0,17752
0,15962
0,15
0,17588
0,15923
0,13533
0,13000
0,1
0,07867
0,05272
0,03131
0,04889
0,05
0
1
2
3
4
5
6
7
8
9
10
11
12
13
Harmônicos
Figura A-31 – Amplitude de Média Quadrática de cada Harmônico de Fourier.
280
Apostila de Fundamentos de Redes de Computadores
A.3
Prof: Ricardo Quintão
Como Integrar Funções Seno e Cosseno
Recordando conceitos importantes:
 cos(u)du  sen(u)
 sen(u)du   cos(u)
Se tivermos que calcular
 cos(kx)dx ,
devemos realizar uma mudança de variável,
como segue abaixo:
Se tivermos que calcular
 sen(kx)dx ,
devemos realizar uma mudança de variável,
como segue abaixo:
 sen(kx)dx
 cos(kx)dx
u  kx
du  kdx
du
dx 
k
Realizando as substituições temos:
sen(u )du
 sen(kx)dx   k
1
1
sen(u )du   cos(u )

k
k
Logo,
1
 sen(kx)dx  k  cos(kx)
u  kx
du  kdx
du
dx 
k
Realizando as substituições temos:
cos(u )du
 cos(kx)dx   k
1
1
cos(u )du  sen(u )

k
k
Logo,
1
 cos(kx)dx  k sen(kx)
281
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Apêndice B
Cálculo relacionado à Órbita de Satélites
Para que um satélite fique em órbita, é necessário satisfazer uma simples relação física. Como a
órbita do satélite é circular, deve-se garantir que a soma das forças resultantes seja igual a força


centrípeta isto é: Fresultante  Fcentrípeta . A Figura B-1 mostra o esquema da órbita de um satélite.
Figura B-1 – Órbita de um Satélite.
A única força que está atuando no satélite é a força gravitacional fazendo com que esta também
G  M terra  M satélite
seja a força resultante. Ela é representada pela seguinte relação: Fgravitacional 
, onde
2
Rsatélite
G é a constante gravitacional universal, M terra é a massa da terra, M satélite é a massa do satélite e Rsatélite
é a distância do satélite até o centro da terra, isto é, o raio da órbita do satélite.
M  v2
considerando a velocidade
R
linear (v) ou Fcentrípeta  M   2  R considerando a velocidade angular ().


Considerando a relação inicial em que Fresultante  Fcentrípeta temos:
A força centrípeta é dada pela seguinte relação: Fcentrípeta 
M satélite   2  Rsatélite 
2 
G  M terra  M satélite
2
Rsatélite
G  M terra
3
Rsatélite
282
Apostila de Fundamentos de Redes de Computadores

Prof: Ricardo Quintão
G  M terra
3
Rsatélite
Equação B-1 – Velocidade Angular do Satélite.
3
Rsatélite

G  M terra
2
Rsatélite  3
G  M terra
2
Equação B-2 – Raio do Satélite.
A velocidade linear (v) pode ser calculada pela seguinte relação: v    R
Sendo assim, podemos calcular a velocidade linear a partir da Equação B-1 como mostra abaixo:
vsatélite  Rsatélite 
vsatélite 
G  M terra
3
Rsatélite
2
G  M terra  Rsatélite
3
Rsatélite
vsatélite 
G  M terra
Rsatélite
Equação B-3 – Velocidade Linear do Satélite.
Para calcular a altura (h) do satélite utilizamos a seguinte relação:
h  Rsatélite  Rterra
Equação B-4 – Altura do Satélite em Relação à Superfície da Terra.
Ao analisar tanto a Equação B-1 como Equação B-3, verificamos que quanto maior for o raio do
satélite ( Rsatélite ), e com isso a sua altitude (h), a sua velocidade (v e ) vão diminuindo para que
mantenha a respectiva órbita.
Se considerarmos órbitas geoestacionárias, a velocidade angular do satélite (  satélite ) deverá ser
igual à velocidade angular da Terra ( terra ). Sendo assim teremos:
satélite   terra
Equação B-5 – Condição Necessária para Órbitas Geoestacionárias.
Calculando a velocidade angular da Terra ( terra ):
 terra 
2
Radianos Hora
24
283
Apostila de Fundamentos de Redes de Computadores
 terra 
 terra 

12
Prof: Ricardo Quintão
Radianos Hora

12 3.600
Radianos Segundo
 terra 

43.200
Radianos Segundo
Equação B-6 – Velocidade Angular da Terra.
Logo, a velocidade angular do satélite (  satélite ) deverá ser:
 satélite 

43.200
Radianos Segundo
Equação B-7 – Velocidade Angular do Satélite para Órbitas Geoestacionárias.
Sabendo-se que a Massa da Terra, o Raio da Terra e a Constante Gravitacional Universal valem:
M terra  5,97 1024 Kg
Equação B-8 – Massa da Terra.
Rterra  6.376,5 Km
Equação B-9 – Raio da Terra.
G  6,6742 1011 Newton  Metro2 Kg 2
Equação B-10 – Constante Gravitacional Universal (G).
Ao substituir esses valores na Equação B-2 e convertendo o resultado de metros para quilômetros
teremos o Raio do Satélite sendo igual a:
Rsatélite  42.235,77 Km
Logo a sua altura em relação à superfície da terra (h) será dada pela Equação B-4:
h  35.859,27 Km
Equação B-11 – Altura do Satélite para uma Órbita Geoestacionária.
284
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Apêndice C
Técnicas de Criptografia
C.1
DES (padrão para criptografia de dados)
Vamos agora avançar rapidamente até os tempos modernos e examinar o DES (Data
Encryption Standard – padrão para criptografia de dados), um padrão de criptografia de chaves
simétricas desenvolvido em 1977 e atualizado mais recentemente em 1993 pelo V.S. National
Bureau of Standards para uso comercial e não confidencial do governo norte-americano. O DES
codifica o texto aberto em porções de 64 bits usando uma chave de 64 bits. Na verdade, oito
desses 64 bits da chave são bits de paridade ímpar (há um bit de paridade para cada um dos 8 bits),
de modo que a chave DES tem efetivamente 56 bits de comprimento. O National Institute of
Standards (sucessor do National Bureau of Standards) assim estabelece o objetivo do DES: “O
objetivo é embaralhar completamente os dados e a chave, de modo que todos os bits do texto
cifrado dependam de todos os bits de dados e de todos os bits da chave (...) com um bom algoritmo,
não deverá haver nenhuma correlação entre o texto cifrado e os dados originais e a chave”.
A operação básica do DES é ilustrada na Figura C-1. Em nossa discussão, vamos apenas
descrever de maneira geral a operação do DES, deixando os detalhes fundamentais referentes aos
bits (há muitos) para outras fontes. O DES consiste em dois estágios de permutação (o primeiro
e o último passo do algoritmo), nos quais todos os 64 bits são permutados, havendo 16 “rodadas”
idênticas de operação entre eles. A operação de cada rodada é idêntica e toma a saída de dados
da rodada anterior como entrada. Durante cada rodada, os 32 bits da extrema direita da entrada
são deslocados para os 32 bits da esquerda da saída. Toda a entrada de 64 bits até a i-ésima rodada
e a chave de 48 bits para a i-ésima rodada (derivada da chave DES maior de 56 bits) são tomadas
como entrada para uma função que envolve a expansão das porções de 4 bits da entrada para
porções de 6 bits, fazendo-se o OU exclusivo com as porções expandidas de 6 bits da chave Ki de
48 bits, uma operação de substituição, e o ulterior OU excludente com os 32 bits da extrema
esquerda da entrada. A saída de 32 bits resultante da função é então usada como os 32 bits da
extrema direita da saída de 64 bits da rodada, como mostra a Figura C-1. A decriptografia
funciona pela reversão das operações dos algoritmos.
Até que ponto o DES funciona? Até que ponto ele é seguro? Ninguém pode ter certeza.
Em 1997, uma empresa de segurança em rede, a RSA Data Security Inc., lançou um desafio (DES
Challenge) para “quebrar” (decodificar) uma frase curta que tinha sido criptografada usando o
DES de 56 bits. A frase “Strong cryptography makes the world a safer place.” (a boa criptografia
faz do mundo um lugar mais seguro) foi decodificada em menos de quatro meses por uma equipe
que usou voluntários por toda a Internet para explorar sistematicamente o espaço de chaves. A
equipe reivindicou o prêmio de dez mil dólares após ter testado apenas um quarto do espaço de
chaves – cerca de 18 quatrilhões de chaves. O mais recente desafio, o DES Challenge III que
aconteceu em 1999, foi vencido no tempo recorde de pouco mais de 22 horas por uma rede de
voluntários e um computador especialmente construído para a ocasião, que custou menos de 250
mil dólares (apelidado de “Deep Crack”) e está documentado na Internet.
285
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Figura C-1 – Operação básica do DES.
Se o DES de 56 bits for considerado muito inseguro, pode-se simplesmente rodar o
algoritmo de 56 bits múltiplas vezes, tomando a saída de 64 bits de uma iteração do DES como
entrada para a iteração DES seguinte e usando uma chave criptográfica diferente para cada rodada.
Por exemplo, o chamado DES triplo (3DES), um padrão proposto pelo governo norte-americano,
é o padrão de criptografia para o PPP para a camada de enlace. Uma discussão detalhada sobre
os comprimentos das chaves e sobre o tempo e o orçamento estimados necessários para quebrar
o DES pode ser encontrada em [Blaze, 1996].
Devemos ressaltar que em nossa descrição anterior consideramos apenas a criptografia de
uma quantidade 64 bits. Quando são criptografadas mensagens mais longas, o que é tipicamente
o caso, o DES é em geral usado junto com a técnica conhecida como encadeamento de blocos de
cifras, em que a versão criptografada da quantidade de 64 bits de ordem j é “OU exclusiva” com
a unidade de dados de ordem (j + 1) antes de a unidade de ordem (j + 1) ser criptografada.
C.2
RSA
Embora existam muitos algoritmos e chaves que tratam dessas preocupações, o algoritmo
RSA (cujo nome se deve a seus inventores, Ron Rivest, Adi Shamir e Leonard Adleman) se tornou
quase um sinônimo de criptografia de chave pública. De início, vamos ver como o RSA funciona
e, depois, examinar por que ele funciona. Suponha que Bob queira receber mensagens cifradas,
como mostra a Figura C-2. Há dois componentes inter-relacionados no RSA:
286
Apostila de Fundamentos de Redes de Computadores

Escolha da chave pública e da chave privada.

O algoritmo de criptografia/decriptografia.
Prof: Ricardo Quintão
Figura C-2 – Criptografia de chaves públicas.
Para escolher as chaves pública e privada, Bob deve fazer o seguinte:
1. Escolher dois números primos grandes, p e q. Que ordem de grandeza devem ter p e q?
Quanto maiores os valores, mais difícil será quebrar o RSA, mas mais tempo se levará para
realizar a codificação e a decodificação. O RSA Laboratories recomenda que o produto de p
e q seja da ordem de 768 bits para uso pessoal e de 1.024 bits para uso empresarial. (O que
nos leva a pensar por que o uso empresarial é considerado muito mais importante do que o
uso pessoal!)
2. Computar n = pq e z = (p – 1)(q – 1).
3. Escolher um número e menor do que n que não tenha fatores comuns (exceto o 1) com z.
(Nesse caso, dizemos que e e z são números primos entre si.) A letra “e” é usada já que esse
valor será utilizado na criptografia (“encryption”, em inglês).
4. Achar um número d, tal que ed – 1 seja exatamente divisível (isto é, não haja resto na divisão)
por z. A letra “d” é usada porque seu valor será utilizado na decriptografia. Em outras
palavras, dado e, escolhemos d tal que o resto da divisão de ed por z seja o número inteiro 1.
(O número inteiro, que é o resto da divisão de x por um inteiro n, é chamado de x mod n.)
Portanto, a chave pública de Bob que está disponível a todos é o par de números (n, e); sua
chave privada é o par de números (n, d).
A criptografia feita por Alice e a decriptografia feita por Bob acontecem como segue:
1. Suponha que Alice queira enviar a Bob um padrão de bits, ou número m, tal que m < n. Para
codificar, Alice calcula a potência me e, então, determina o resto inteiro da divisão de me por
n. Assim, o valor cifrado, c, da mensagem em texto aberto, m, que Alice envia é:
c = me mod n.
2. Para decifrar a mensagem em texto cifrado, c, Bob processa:
m = cd mod n
que exige o uso de sua chave secreta (n, d).
287
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Como exemplo simples de RSA, suponha que Bob escolha p = 5 e q = 7. (Admitimos que
esses valores são muito pequenos para serem seguros.) Então, n = 35 e z = 24. Bob escolhe e = 5,
já que 5 e 24 não têm fatores comuns. Por fim, ele escolhe d = 29, já que 5 x 29 – 1 (isto é, ed – 1)
é divisível exatamente por 24. Ele divulga os dois valores, n = 35 e e = 5, e mantém em segredo
o valor d = 29. Observando esses dois valores públicos, suponha que Alice queira agora enviar
as letras ‘1’, ‘o’, ‘v’ e ‘e’ a Bob. Interpretando cada letra como um número entre 1 e 26 (com ‘a’
sendo 1 e ‘z’ sendo 26), Alice e Bob realizam a criptografia e a decriptografia mostradas na
Tabela C-1 e na Tabela C-2, respectivamente.
Letra do Texto Aberto
m: Representação Numérica
me
Texto Cifrado c = me mod n
l
12
248.832
17
o
15
759.375
15
v
22
5.153.632
22
e
5
3.125
10
Tabela C-1 – Criptografia RSA para Alice: e = 5, n = 35.
cd
Texto Cifrado c
17
15
22
10
m = cd mod n
481968572106750915091411825223072000
12
12783403948858939111232757568359400
15
8.51643331908653770195619449972111e+38
22
100000000000000000000000000000
5
Tabela C-2 – Decriptografia RSA para Bob: d = 29, n = 35.
Letra do Texto
Aberto
l
o
v
e
Dado que o exemplo “de mentirinha” da Tabela C-1 e da Tabela C-2 já produziu alguns
números extremamente grandes e visto que sabemos, porque vimos anteriormente, que p e q
devem ter, cada um, algumas centenas de bits de comprimento, várias questões práticas nos vêm
à mente no caso do RSA. Como escolher números primos tão grandes? Como escolher e e d?
Como calcular exponenciais de números tão grandes?
Notamos que a exponenciação exigida pelo RSA é um processo que consome considerável
tempo. A RSA Data Security declara que as ferramentas de seu software podem cifrar/decifrar a
uma taxa de 21,6 Kbits por segundo com um valor de 512 bits para n e a uma taxa de 7,4 Kbits
por segundo com um valor de 1.024 bits. O DES é, no mínimo, cem vezes mais veloz em software
e entre mil e dez mil vezes mais veloz em hardware. Como resultado, o RSA é freqüentemente
usado na prática em combinação com o DES. Por exemplo, se Alice quiser enviar a Bob a uma
velocidade alta uma grande quantidade de dados cifrados à alta velocidade, ela pode fazer o
seguinte. Primeiramente, ela escolhe uma chave DES que será utilizada para codificar os dados
em si; essa chave às vezes é chamada de chave de sessão, Ks. Alice deve informar a Bob essa
chave de sessão, já que essa é a chave secreta compartilhada que eles vão usar para o DES. Ela
então criptografa o valor da chave de sessão usando a chave pública RSA de Bob, isto é, ela
processa c = (Ks)e mod n. Bob recebe a chave de sessão codificada RSA, c, e a decifra para obter
a chave de sessão Ks. Ele agora conhece a chave que Alice vai usar para transferir dados cifrados
em DES.
C.2.1 Porque o RSA funciona?
A criptografia/decriptografia do RSA parece mágica. Por que será que, aplicando o
algoritmo de criptografia e, em seguida, o algoritmo de decriptografia, podemos recuperar a
mensagem original? Para entendermos por que o RSA funciona, precisamos realizar algumas
operações usando a aritmética de módulo n. Na aritmética modular, são realizadas as
operações comuns de adição, multiplicação e exponenciação. Contudo, o resultado de cada
operação é substituído pelo resto inteiro da divisão de cada resultado por n. Tomemos n = pq,
onde p e q são os números primos grandes usados no algoritmo RSA.
288
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
Lembre-se de que na criptografia RSA uma mensagem (representada por um número
inteiro) m é primeiramente elevada à potência e usando-se a aritmética de módulo n para
fazer a codificação. A decifração é feita elevando-se esse valor à potência d, novamente
usando a aritmética de módulo n. O resultado de uma etapa de codificação, seguida de uma
etapa de decifração, é então (me)d. Vamos fazer agora algumas considerações sobre essa
quantidade. Temos:
(me)d mod n = med mod n.
Embora estejamos tentando remover um pouco do caráter “mágico” do modo de
funcionamento do RSA, precisaremos usar, aqui, outro resultado bastante mágico da teoria
dos números. Especificamente, precisamos de um resultado que diga que, se p e q forem
primos e n = pq, então xy mod n será o mesmo que x(y mod (p – 1)(q – 1)) mod n. Aplicando esse
resultado, temos
(me)d mod n = m(ed mod (p – l)(q – l)) mod n.
Mas lembre-se de que escolhemos e e d tais que ed – 1 seja exatamente divisível (isto
é, não há resto) por (p – 1)(q – 1), o que equivale a dizer que ed é divisível por (p – 1)(q – 1)
com resto 1 e então ed mod (p – l)(q – 1) = 1. Isso nos dá
(me)d mod n = m1 mod n = m
Ou seja
(me)d mod n = m
Esse é o resultado que esperávamos! Operando primeiramente a exponenciação da
potência e (isto é, codificando) e depois a exponenciação da potência d (isto é, decifrando),
obtemos o valor original m. E mais notável ainda é o fato de que primeiramente
exponenciamos ao fator d e, em seguida, ao fator e, isto é, revertendo a ordem da codificação
e da decifração, realizando inicialmente a operação de decifração e, em seguida, aplicando a
operação de codificação, também obtemos o valor original m! (A prova desse resultado segue
o mesmo raciocínio anterior.) Veremos em breve que essa propriedade maravilhosa do
algoritmo RSA
(me)d mod n = m = (md)e mod n
será de grande utilidade.
A segurança do RSA reside no fato de que não se conhecem algoritmos para fatorar
rapidamente um número; nesse caso, o valor público n, em números primos p e q. Se alguém
289
Apostila de Fundamentos de Redes de Computadores
Prof: Ricardo Quintão
conhecesse os números p e q, então, dado o valor público e, poderia facilmente processar a
chave secreta d. Por outro lado, não se sabe se existem ou não algoritmos rápidos para fatorar
um número e, nesse sentido, a segurança do RSA não é “garantida”
290
Apostila de Fundamentos de Redes de Computadores
Bibliografia
1. Redes de Computadores: das LANs, MANs e WANs às Redes ATM
Autor: Luiz Fernando Gomes Soares
2a Edição
Editora: Campus
2. Redes de Computadores e Internet
Autor: Douglas E. Comer
2a Edição
Editora: Bookman
3. Redes de Computadores
Autor: Andrew S. Tanenbaum
4a Edição
Editora: Campus
4. Comunicações entre Computadores e Tecnologias de Rede
Autores: Michael A. Gallo e William M. Hancock
1a Edição
Editora: Thomson Learning
5. Interligação de Redes com TCP/IP (Volume 1)
Autor: Douglas E. Comer
Tradução da 5a Edição
Editora: Campus
6. Redes de Computadores e a Internet – uma nova abordagem
Autores: James F. Kurose e Keith W. Ross
Tradução da 1a Edição
Editora: Addison Wesley
291
Prof: Ricardo Quintão

Documentos relacionados