Escolar Documentos
Profissional Documentos
Cultura Documentos
TCP-IP
Avançado
V.2.0
abril de 2004
AVISO IMPORTANTE
Esta apostila é parte integrante do Curso de TCP-IP Avançado,
desenvolvido pela TopMaster para a Embratel.
O objetivo deste documento é apresentar uma versão textual
do conteúdo do curso online para a conveniência do aluno.
Sua leitura não substitui o estudo online, pois este oferece interações e
animações que não podem ser representadas no formato impresso.
O IP não tem uma preocupação com a entrega dos pacotes no destino, além de não garantir a
seqüência na qual os pacotes são entregues. Por isso, ele é definido como sendo um serviço não
orientado à conexão, também conhecido como datagrama não-confiável.
Todas as conexões TCP são full-duplex, ou seja, a comunicação pode acontecer nos dois sentidos
simultaneamente. As conexões são ponto-a-ponto, o que significa que o TCP não suporta
endereçamento broadcast ou multicast. Por oferecer um serviço orientado à conexão, o TCP é um
protocolo complexo que implementa diversos mecanismos de controle. A seguir, veremos os mais
importantes.
Como o TCP implementa comunicação full-duplex para encerrar uma conexão, tanto a origem
quanto o destino devem solicitar o seu término. O pedido de fim de conexão é implementado
através do bit FIN no segmento TCP, que indica que não há mais dados a serem transmitidos.
Depois do reconhecimento do pedido de término de conexão, a comunicação pode ser encerrada.
Endereçamento de transporte
Além do endereçamento IP, implementado pela camada de rede, a camada de transporte também
utiliza um esquema de endereçamento, conhecido como portas TCP. Para compreendermos a
necessidade de endereços de transporte, vejamos dois exemplos práticos.
Suponha um servidor que ofereça diferentes tipos de serviços, como Web, mail e transferência de
arquivos. Como o servidor tem apenas um único IP, como seria possível diferenciar os vários
serviços de rede oferecidos? No lado do cliente, o usuário abre diversas conexões Web diferentes
utilizando o browser. Como o cliente tem apenas um IP, como seria possível para o servidor
diferenciar para qual dos browsers a resposta deveria ser enviada?
Em ambos os casos, as portas TCP são utilizadas como mecanismo para a criação de conexões
lógicas únicas que diferenciam as aplicações dentro de um mesmo endereço IP. A combinação de
um endereço IP e uma porta forma o que é chamado de socket. Uma conexão lógica é formada
por um par de sockets: um na origem e outro no destino.
A grande maioria dos sistemas operacionais oferece suporte à criação e utilização de sockets,
através de system calls e APIs (Application Program Interfaces), o que torna o desenvolvimento
de aplicações em rede bastante simplificado.
As portas TCP são números de 16 bits que variam entre 0 e 65.535. Por questões de
padronização, as portas abaixo de 1.024 são reservadas para serviços pré-definidos (well-known
ports), como apresentado na tabela a seguir. No primeiro exemplo, o servidor utilizaria uma porta
pré-definida para cada serviço oferecido. Nesse caso, utilizaria as portas 80 (Web), 25 (correio
eletrônico) e 20/21 (transferência de arquivos).
Serviço Porta
Telnet 23
Web (HTTP) 80
As portas acima de 1.023 são portas que podem ser utilizadas dinamicamente, conforme a
necessidade das aplicações. No segundo exemplo, a cada conexão aberta pelo browser seria
associado um socket diferente, contendo o mesmo IP, porém com portas diferentes.
De forma simplificada, sempre que o host origem envia uma mensagem, o host destino deve
informar através de um reconhecimento (ACK) que recebeu a mensagem.
Como não existe a garantia de que a mensagem alcançará o destino, o host origem ao enviar a
mensagem, também inicializa um temporizador. Caso um ACK não chegue no tempo previsto, a
origem retransmite a mensagem.
Se o esquema adotado pelo TCP fosse exatamente como descrito, haveria um grande desperdício
da capacidade de transmissão da rede, pois, para cada mensagem enviada, um ACK deveria ser
retornado. Na verdade, o TCP utiliza a técnica de reconhecimento cumulativo para implementar o
controle de erro de forma eficiente. Nessa técnica, o transmissor pode enviar várias mensagens
sem aguardar um ACK individual para cada mensagem. O host destino pode receber um certo
número de mensagens e reconhecer apenas a última recebida. Dessa forma, é possível reconhecer
um conjunto de mensagens, evitando o ACK individual para cada mensagem.
A animação ao lado apresenta uma seqüência de mensagens, uma janela de transmissão de quatro
posições e três ponteiros que permitem o controle da envio e reconhecimento das mensagens. O
intervalo em amarelo indica as mensagens que já foram transmitidas e reconhecidas. O intervalo
em azul indica as mensagens transmitidas, mas ainda não reconhecidas. O intervalo em verde
indica as mensagens que podem ainda ser transmitidas, sem a necessidade de recebimento de
qualquer ACK do destino. As demais mensagens no intervalo vermelho apenas poderão ser
transmitidas quando houver o deslocamento da janela.
Para cada conexão TCP existem quatro janelas. Como a conexão é full-duplex, existe uma janela
de transmissão e uma janela de recepção para cada sentido da comunicação.
Esse problema também é resolvido utilizando o esquema de sliding window, sendo que o tamanho
da janela varia em função do tempo. Nesse caso, o receptor, quando reconhece uma ou mais
Segmento TCP
Um segmento TCP é formado por um cabeçalho de 20 bytes, seguido de um número variável de
opções e finalizado por uma área de dados também opcional. Em geral, o tamanho máximo de um
segmento é limitado pelo campo de dados do datagrama IP, ou seja, 65.515 bytes (64 Kb menos
20 bytes do cabeçalho IP). O formato do segmento TCP pode ser observado na figura abaixo.
Source Port: Identifica a porta de origem. Juntamente com o IP de origem formam o socket de origem.
Destination port: Identifica a porta de destino. Juntamente com o IP de destino formam o socket de
destino.
Length: Identifica o tamanho do segmento UDP, incluindo o cabeçalho e a área de dados.
Checksum: Utilizado para garantir a integridade do segmento. A utilização deste campo é opcional.
O LDAP está na camada de aplicação, utiliza o protocolo TCP como transporte e funciona no
modelo cliente/servidor. Nesse modelo, o cliente solicita uma informação ao servidor responsável
por manter o serviço de diretório, o servidor recebe a solicitação, processa o pedido e envia a
resposta para o cliente.
Existem vários produtos que oferecem serviços de diretórios, como o Novell Directory Services
(NDS) e o Active Directory da Microsoft. É importante verificar o grau de compatibilidade com o
padrão LDAP nos produtos que oferecem esse tipo de serviço.
127.0.0.1 localhost
200.255.253.239 pop-gw.embratel.com.br
200.255.125.213 www.embratel.com.br
200.162.224.82 edu.topmaster.com.br
200.225.79.48 www.topmaster.com.br
O exemplo acima refere-se ao arquivo host utilizado na maioria dos sistemas operacionais para
criar o mapeamento estático de endereços.
O protocolo DNS (Domain Name System) foi desenvolvido com a finalidade de servir como
tradutor de nomes em grandes redes, como a Internet. Por exemplo, quando o usuário digita o
endereço da Embratel, o nome www.embratel.com.br deve ser traduzido antes para o IP
correspondente ao servidor Web (200.255.125.213). Depois de obtido o endereço IP, o acesso ao
servidor poderá ser realizado.
O serviço de nomes é implementado por servidores DNS que possuem tabelas relacionando os
nomes de hosts e seus respectivos IPs. Quando um usuário utiliza o nome www.embratel.com.br,
um servidor DNS é consultado e o IP correspondente retornado. Se o usuário souber o IP do
servidor da Embratel, o servidor DNS não será consultado.
IN NS ns.embratel.net.br.
IN NS ns2.embratel.net.br.
IN MX 100 mailhost.embratel.net.br.
ns2 IN A 200.245.255.33
ns IN A 200.255.253.241
mailhost IN A 200.255.253.239
rjo01 IN A 200.208.155.102
rjo02 IN A 200.208.155.150
news IN A 200.208.155.103
Espaço de endereçamento
O espaço de endereçamento (namespace) utilizado pelo DNS é hierárquico, semelhante ao
modelo de árvore de diretórios e subdiretórios utilizado na maioria dos sistemas operacionais. O
DNS é formado por domínios e subdomínios, sendo que o domínio raiz é conhecido como root.
Abaixo do root existem os domínios de primeiro nível (top-level) que podem representar
domínios genéricos ou países. Abaixo dos domínios de primeiro nível, estão os subdomínios que,
por sua vez, podem ser formados por outros subdomínios. Os hosts ficam nas folhas.
Para se ter acesso a um host que faça parte do esquema de domínios, basta fazer referência ao
caminho a partir da raiz. Por exemplo, o servidor Web da Embratel pode ser referenciado como
www.embratel.com.br e o servidor correio poderia ser referenciado como smtp.embratel.com.br.
nl Holanda
edu Educacional
net Provedores
O esquema de nomes hierárquico torna o DNS bastante flexível. Quando um novo subdomínio
precisa ser criado, basta apenas solicitar sua criação abaixo do domínio desejado, sem interferir
nos demais domínios. No caso do domínio de uma empresa, é possível a criação de subdomínios
apenas com a alteração do servidor DNS da própria empresa. Por exemplo, se for preciso criar o
subdomínio ead abaixo do domínio Embratel, basta que o administrador da rede registre no
servidor DNS do domínio embratel.com.br o novo domínio ead.embratel.com.br.
Busca de nomes
O DNS, além de hierárquico, também é um esquema distribuído. Devido ao grande número de
hosts na Internet, seria complicado que todos os servidores DNS fossem capazes de traduzir
qualquer nome para seu respectivo IP. No modelo distribuído, os servidores DNS mapeiam
apenas um pequeno número de hosts, formando uma zona de autoridade.
Uma zona de autoridade pode responder por um ou mais domínios, sendo esta uma decisão do
gerente da rede. Cada zona possui um servidor DNS primário, que possui o arquivo com a
configuração utilizada pelo servidor e um ou mais servidores secundários. Esses sevidores
secundários possuem uma cópia da configuração e funcionam como backup do servidor primário.
É importante ressaltar que o protocolo RTP não garante a qualidade do serviço, pois não tem
qualquer influência na pré-alocação de recursos na rede de interconexão. Para isso, devem ser
utilizados outros protocolos, como o RSVP (Resource reSerVation Protocol) e MPLS
(MultiProtocol Label Switching), apresentados anteriormente.
O protocolo RTCP (Real-time Transport Control Protocol) foi projetado para trabalhar em
conjunto com o protocolo RTP. As suas principais funções são a monitoração da qualidade do
serviço e a identificação dos participantes da transmissão. Durante uma sessão RTP, os
participantes periodicamente trocam mensagens RTCP com o objetivo de informar aos demais a
qualidade dos dados recebidos. Com isso, é possível que o emissor ajuste a sua transmissão em
função das informações recebidas.