Protocolo
TCP/IP
Wandreson Luiz Brandino
wandreson.com
1. Introdução ao TCP/IP
Protocolo aberto (Open System) para
Interconexão de diferentes tecnologias de rede
– Linguagem Comum independente da tecnologia de rede física utilizada (Ethernet, Token Ring, FDDI, ATM, etc)
– Não precisa pagar Royaltes para construir uma aplicação sobre este protocolo
1. Introdução ao TCP/IP (cont.)
Várias aplicações disponíveis
– Correio Eletrônico (SMTP) – WWW (HTTP)
– Resolução de Nomes (DNS)
– Transferência de Arquivos (FTP) – Terminal Remoto (Telnet)
1.1 Histórico
Surgiu em meados da década de 70,
financiado pela DARPA dos Estados Unidos
– Surgi num contexto de Guerra Fria com o objetivo de interligar computadores de forma simples e não centralizada
– O protocolo TCP/IP foi incluído no Unix de Berkley usado amplamente nos Estados Unidos para facilitar sua disseminação
1.1 Histórico (cont.)
– O protocolo TCP/IP e a rede Internet estão altamente relacionados
– Não existe nenhuma pessoa ou instituição que controla a Internet existem organismos tal como:
• IETF (Internet Engineering Task Force) • IAB (Internet Activites Board)
– Toda documentação da Internet esta no formato de RFCs (Request For Comments)
1.2 Documentação
Qualquer pessoa pode sugerir uma
RFC
– A RFC fica no formato de rascunho quando é sugerida. Caso seja aceita ela recebe um número e é publicada.
– As RFCs são sugeridas ao NIC (Network Information Center)
1.2 Documentação (cont.)
Locais de divulgação das RFCs
– www.ietf.org
– andrew2.andrews.cmu.edu/rfc/rfc1160.html
• Este último exemplo traz a descrição da RFC 1160
2. Endereço de Rede
O nível de Rede da Arquitetura TCP/IP
é exatamente o protocolo IP (Internet Protocol)
A funcionalidades básica do IP é a de
Rotear Pacotes dentro de uma mesma
rede ou entre redes diferentes
2. Endereço de Rede (cont.)
Não faz controle de verificação de
entrega do pacote. Ficando esta responsabilidade para a camada de nível de transporte (TCP e UDP)
2. Endereço de Rede (cont.)
Modelo OSI versus Arquitetura TCP/IP2.1 Endereço IP
Para duas máquinas se comunicarem,
cada uma precisa de um endereço IP
O formato do endereço IP é:
X.X.X.X
onde X varia de 0 à 255. Exemplo: 200.241.16.8, 30.10.90.155, etc
2.1 Endereço IP (cont.)
Representação Binária e Decimal
No Brasil, a responsabilidade de
distribuir endereços IP e de controlar os domínios é da FAPESP
2.1 Endereço IP (cont.)
Os endereços IP são gratuitos
FAPESP distribui endereços Classe C
para grandes empresas ou para os provedores
Os provedores se responsabilizam em
distribuir os endereços para seus clientes ou através de Proxy
2.2 Classes de Endereços
Os endereços IP foram divididos da
seguinte forma: De À Classe de Endereço 0 126 A 128 191 B 192 223 C 224 239 D 240 247 E
2.2 Classes de Endereços (cont.)
Divisão em classes e as sua respectiva
2.2 Classes de Endereços (cont.)
Faixa de endereços decimais e binários
Classe Faixa de Endereços Representação Binária Utilização
A 1-126.X.X.X 0nnnnnnn.hhhhhhhh.hhhhhhhh.hhhhhhhh B 128-191.X.X.X 10nnnnnn.nnnnnnnn.hhhhhhhh.hhhhhhhh C 192-223.X.X.X 110nnnnn.nnnnnnnn.nnnnnnnn.hhhhhhhh D 224-239.X.X.X 1110xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx Multicast / Broadcast E 240-247.X.X.X 11110xxx.xxxxxxxx.xxxxxxxx.xxxxxxxx Reservado
X é um número que varia de 0 à 255 N é o número de bits da rede
H é o número de bits do host
2.2.1 Endereço de Loopback
Todo endereço na forma 127.x.x.x é um
endereço de Loopback
Interface que não conecta a nenhuma
rede
Comunicação Inter-processos dentro da
mesma máquina (Não utiliza a rede)
Endereço não é propagado pelos
2.2.2 Endereços IP reservados
Existem alguns endereços como o de
Loopback que são reservados para
redes que NUNCA se ligam à Internet ou se ligam através de um Proxy
Estes endereços estão definidos na RFC
1597
Gateways não permitem tráfegos destes
2.2.2 Endereços IP reservados
(cont.)
Os endereços reservados são:
Rede Máscara
10.0.0.0 255.0.0.0 172.16.0.0 255.240.0.0 192.168.0.0 255.255.0.0
2.3 Roteadores
Os Roteadores são usados para
interligar duas ou mais redes
O roteador possui pelo menos duas
Interfaces de rede.
Cada Interface de rede possui um
2.3 Roteadores (cont.)
Exemplo de Interconexão de três redes:
– Token Ring 192.3.40.0 (classe C) – Ethernet 146.134.0.0 (classe B) – Ethernet 12.0.0.0 (classe A)
2.3 Roteadores (cont.)
2.3 Roteadores (cont.)
Na rede Ethernet (146.134.0.0) temos
as máquinas: – 146.134.8.2 – 146.134.20.7 – 146.134.20.8 (Máquina A) – 146.134.150.1 (Máquina B) Figura
2.3 Roteadores (cont.)
Na rede Ethernet (12.0.0.0) temos as
máquinas:
– 12.11.111.0 (Máquina B) – 12.0.0.4
– 12.20.40.32 (Máquina C)
2.3 Roteadores (cont.)
Na rede Token Ring (192.3.40.0) temos
as máquinas: – 192.3.40.1 – 192.3.40.2 – 192.3.40.20 (Máquina C) – 192.3.40.21 – 192.3.40.22 (Máquina A) Figura
2.3 Roteadores (cont.)
As máquinas A, B e C fazem papel de
roteador.
– Máquina A entre a rede Token-Ring (192.3.40.0) e a rede Ethernet (146.134.0.0)
– Máquina B entre a rede Ethernet (146.134.0.0) e a rede Ethernet (12.0.0.0)
– Máquina C entre a rede Ethernet (12.0.0.0) e a rede Token-Ring (192.3.40.0)
2.4 Sub-Rede
Objetivo:
– Dividir um endereço que seria para uma única rede física em diversas redes físicas distintas.
2.4 Sub-Rede (Cont.)
Para todas a Internet existe o endereço
de rede 128.10.0.0, só quando o pacote chega ao Gateway que ele irá tomar a decisão para que sub-rede o pacote deve ser encaminhado
A divisão em Sub-Redes em muitos
caso aumenta a Performance do sistema de comunicação
2.4 Sub-Rede (Cont.)
Sem a divisão em sub-redes os
endereços 128.10.2.0 e 128.10.1.0 seriam endereços de máquina (Classe B). Como foi feito a divisão, estes endereços passaram a ser endereços de rede
2.4.1 Máscara de uma Sub-rede
Utilizamos o conceito de máscara para
definirmos se um endereço IP é um endereço de rede ou de máquina.
O formato da máscara é o mesmo do
número IP. Exemplo:
– 255.255.255.0 (Decimal)
2.4.1 Máscara de uma Sub-rede
(cont.)
O 1 binário indica que é endereço de
rede.
No exemplo anterior os três primeiros
octetos estavam sendo utilizados para rede. Logo seria uma rede classe C, sem sub-redes
Quantidade de máquina 254 (256 - 2).
2.4.1 Máscara de uma Sub-rede
(cont.)
Qual máscara usar nas classes A, B e
C?
Exemplo:
– Quantas sub-redes eu posso ter com o endereço IP classe C 200.241.16.X ?
2.4.1 Máscara de uma Sub-rede
(cont.)
Caso mais simples
– Máscara: 255.255.255.0
Binário 11111111 11111111 11111111 00000000 Decimal 255 255 255 0
Endereços IP de:
200.241.16.0 à 200.241.16.255
Importante: Pelo padrão devemos
2.4.1 Máscara de uma Sub-rede
(cont.)
Endereços válidos:
200.241.16.1 à 200.241.16.254
Obs: Alguns fabricantes permitem usar os endereços extremos. Mas esta fora do padrão.
2.4.1 Máscara de uma Sub-rede
(cont.)
Divisão em duas sub-redes.
– Máscara: 255.255.255.128
Binário 11111111 11111111 11111111 10000000
Decimal 255 255 255 128
Existem duas possíveis redes. A rede 0
2.4.1 Máscara de uma Sub-rede
(cont.)
Na rede 0 os endereços vão de:
200.241.16.0 à 200.241.16.127
Na rede 1 os endereços vão de:
2.4.1 Máscara de uma Sub-rede
(cont.)
Lembrando do padrão temos que
excluir os extremos. Portanto ficaríamos com os endereços válidos:
Na rede 0 os endereços vão de:
200.241.16.1 à 200.241.16.126
Na rede 1 os endereços vão de:
2.4.1 Máscara de uma Sub-rede
(cont.)
Só que ainda pelo padrão não podem
existir sub-redes com todos os bits
iguais a 0 ou iguais a 1. Logo os
extremos das sub-redes também precisam ser excluidos.
A máscara 255.255.255.128 NÃO pode
2.4.1 Máscara de uma Sub-rede
(cont.)
Maiores informações sobre a norma
que proibe o uso destas mascaras
podem ser encontradas na RFC 1716, Almquist & Kastenholz, página.45
Alguns sistemas operacionais como
Windows 95, NT, SCO Unix, Novell simplesmente ignoram esta regra.
2.4.1 Máscara de uma Sub-rede
(cont.)
Divisão em quatro sub-redes.
– Máscara: 255.255.255.192
Binário 11111111 11111111 11111111 11000000
Decimal 255 255 255 192
Existem quatro possíveis redes
– 00 – 01 – 10 – 11
2.4.1 Máscara de uma Sub-rede
(cont.)
Na rede 00 os endereços vão de:
200.241.16.0 à 200.241.16.63
Na rede 01 os endereços vão de:
200.241.16.64 à 200.241.16.127
Na rede 10 os endereços vão de:
200.241.16.128 à 200.241.16.192
Na rede 11 os endereços vão de:
2.4.1 Máscara de uma Sub-rede
(cont.)
Excluindo os extremos temos:
Na rede 00 os endereços vão de:
200.241.16.1 à 200.241.16.62
Na rede 01 os endereços vão de:
200.241.16.65 à 200.241.16.126
Na rede 10 os endereços vão de:
200.241.16.129 à 200.241.16.191
Na rede 11 os endereços vão de:
2.4.1 Máscara de uma Sub-rede
(cont.)
Excluindo agora os endereços de rede
todos 0 e todos 1 temos:
Na rede 01 os endereços vão de:
200.241.16.65 à 200.241.16.126
Na rede 10 os endereços vão de:
2.4.1 Máscara de uma Sub-rede
(cont.)
Generalizando (IP Classe C):
– O número de sub-redes é sempre múltiplo de 2.
– Pega-se 256 e divide-se pelo número de sub-redes
– Retira-se os extremos do endereço IP de cada sub-rede
– Retira-se as sub-redes com todos os bits 0 e todos os bits 1
2.4.1 Máscara de uma Sub-rede
(cont.)
Exercício
– Quais são os endereços IP válidos para 8 sub-redes?
– Faça uma tabela que relacione a quantidade de sub-redes, a quantidade de máquinas por sub-rede e o total de máquinas.
2.5 Formato do datagrama IP
O IP é a unidade básica de dados do
nível de rede
Entrega de pacotes não-confiável
– Responsabilidade de entrega,
sequencialização, correção de erros, etc é dos níveis superiores
Existem duas áreas básicas: Área de
2.5 Formato do datagrama IP
Descrição dos campos – VERS
• Versão
– HLEN
• Comprimento do cabeçalho
– TOTAL LENGTH
• Tamanho total do pacote. Se o pacote for
fragmentado é o tamanho do fragmento e não o do pacote original
2.5 Formato do datagrama IP
– SERVICE TYPE
• Especifica como o datagrama será manipulado pelo sistema de comunicação
– D - Baixo Delay – T - Alto Throughput – R - Alta Confiabilidade – IDENTIFICATION
• Campo utilizado quando da fragmentação de pacotes
2.5 Formato do datagrama IP
– FLAG
• Controle de fragmentação. Específica se o pacote pode ou não ser fragmentado e se for um fragmento, se ele é o primeiro os
intermediários ou o último pacote
– TTL (Time to Live)
• Decrementado a cada gateway (roteador)
– PROTOCOL
2.5 Formato do datagrama IP
– HEADER CHECKSUM
• Somente para o cabeçalho. Não é para os dados
• Objetivo de garantir que o pacote vai ser entregue no endereço correto
– OPTIONS
• Diversas opções para um pacote
– PADDING – DATA
2.5.1 Algumas OPTIONS
interessantes
Record Route Option
– Gravar no pacote IP os endereços que o pacote percorreu até chegar ao destino
2.5.1 Algumas OPTIONS
interessantes
Source Route Option
– Permite que a origem indique por quais gateways o pacote deverá passar
2.5.1 Algumas OPTIONS
interessantes
TimeStamp Option
– Semelhante ao Record Route, só que acrescenta também o tempo em que o pacote chegou ao gateway
3. Mapeamento de Endereço
Físico em endereço de rede
Protocolo ARP (Address Resolution Protocol)
– Mapear Endereços IP de uma mesma rede em endereços físicos
– Envia uma mensagem de broadcasting para todas as estações perguntando quem tem aquele endereço IP
3.1 ARP
– Uma única máquina responde
– A máquina que fez a pergunta guarda o endereço físico no cache para possível uso posterior
– Em máquinas UNIX o comando
• arp -a traz a relação de todas os endereços IPs da rede com seus respectivos endereços físicos
3.1.1 Formato do Pacote ARP
Descrição dos campos
Nome do Campo Descrição
Hardware Type Especifica a interface de hardware pela qual o usuário aguarda uma resposta. No caso da rede Ethernet o valor é 1.
Protocol Type Especifica o tipo de endereço que o usuário está procurando (0800H se for IP).
HLEN Tamanho do endereço de Hardware
PLEN Tamanho do endereço do protocolo de alto nível. As opções HLEN e PLEN em conjunto permitem que o ARP possa ser usado para uma rede qualquer.
Operation 1 - ARP request (Requisição do endereço físico) 2 - ARP response (Resposta do endereço físico) 3 - RARP request (Requisição do endereço IP) 4 - RARP response (Resposta do endereço IP)
3.2 Protocolo RARP
O RARP (Reverse Address Resolution
Protocol) associa um endereço físico em um número IP
Usado em estações diskless para obter
um endereço IP no momento do boot remoto
3.3 Fragmentação de pacotes IPs
em pacotes do nível físico
Utilizado quando um pacote passa por
redes com diferentes tamanhos de área de dados (MTU)
Dividir o tamanho do pacote IP num
3.3 Fragmentação de pacotes IPs
em pacotes do nível físico
Pacotes dentro da mesma rede só
serão fragmentados se o tamanho do pacote IP for maior do que o tamanho do pacote físico da rede
Exemplo: Transmitir um pacote de 1400
bytes da rede 1 (MTU=1500) para a rede 3 (MTU=1500) passando pela rede 2 (MTU=620)
3.3 Fragmentação de pacotes IPs
em pacotes do nível físico
Pacote 1: 600 bytes de dados + 20
bytes de cabeçalho
Pacote 2: 600 bytes de dados + 20
bytes de cabeçalho
Pacote 3: 200 bytes de dados + 20
3.3 Fragmentação de pacotes IPs
em pacotes do nível físico
Fragmentação do pacote para posterior
4. ICMP (Internet Control
Message Protocol)
Objetivo: Informar à origem de
problemas na entrega do pacote IP:
– Falha nas linhas de comunicação
– Máquina destino desconectada da rede – TTL (Time-to-Live) do pacote IP expirar – Gateway intermediários congestionados
4. ICMP
ICMP faz parte do protocolo IP, as
informações retornadas serão
analisadas por outros protocolos de camada superiores
Algumas mensagens reportadas pelo
4. ICMP
Network Unreachable (rede não alcançável) Host Unreachable (host não alcançável)
Port Unreachable (port não alcançável)
Destination Host Unknown (Host destino desconhecido) Destination Network Unknown (rede destino desconhecida)
Echo Request e Echo Reply (Solicitação de Eco e Resposta de
Eco)
Time Exceded for Datagram – TTL (Tempo do pacote excedido) Entre outros
4.1 Entrega de mensagens ICMP
4.2 Tipos de Mensagens ICMP
4.2.1 Echo Request e Echo Reply
Usado para identificar se uma máquina
esta respondendo ou não.
É implementado pelo programa PING Formato da mensagem:
4.2.1 Echo Request e Echo Reply
Campo Descrição
TYPE=8 Echo Request (Requisição de resposta)
TYPE=0 Echo Reply (Resposta à solicitação anterior) IDENTIFIER e SEQUENCE NUMBER São usados para identificar qual mensagem
foi enviada e qual esta sendo recebida
OPTIONAL DATA Campo opcional, que dependendo da implementação pode retornar dados ao remetente, como por exemplo o tempo gasto para se alcançar a máquina.
4.2.2 Unreacheble Destination
Identifica que não esta conseguindo
acessar o IP da máquina destino. O cabeçalho padrão é:
4.2.2 Unreacheble Destination
Os possíveis valores para o campo
4.2.3 Controle de Fluxo e
Congestionamento
Usado para informar a origem para par
de enviar pacotes que os roteadores não estão suportando o tráfego. A
4.2.4 Route Change Request
Caso a rota não esteja minimizada esta
mensagem será enviada
Não será tomada nenhuma providencia,
os protocolos de roteamento que farão isto. Formato da mensagem é:
4.2.4 Route Change Request
Exemplo:
– Suponha que H queira enviar dado para a Rede 1, mas esteja enviando uma
4.2.4 Route Change Request
Exemplo (continuação)
– G2 envia uma mensagem de Route Change Request para H1
– Um protocolo de nível superior pega essa mensagem e toma a providencia de enviar por G1
4.2.5 Detecta rota circular ou
excessivamente longa
Esta mensagem é enviada quando o
campo TTL (time-to-live) do IP é zerado
Lembre-se que o campo TTL é
decrementado por cada roteador que o pacote IP passar
4.2.5 Detecta rota circular ou
excessivamente longa
Formato do pacote
Se CODE = 0, TTL zerou
Se CODE = 1, remontagem de fragmentos excedeu
4.2.6 Reporta outros problemas
Reporta outros problemas, tipo erro no
cabeçalho IP
4.2.7 Sincronização de relógio e
estimativa de tempo de trânsito
Usa a mensagem ICMP REQUEST
TIMESTAMP para recuperar a hora do dia da máquina destino (contado em milisegundos a partir da meia-noite do dia corrente)
A mensagem ICMP REQUEST
4.2.7 Sincronização de relógio e
estimativa de tempo de trânsito
Campo TYPE=13, significa request Campo TYPE=14, significa reply
5. Camada de Transporte
Transferir um dado “fim-a-fim” entre
duas máquinas
Independente da estrutura física de
comunicação
Existem dois protocolos básicos
– TCP (Transfer Control Protocol) – UDP (User Datagram Protocol)
5. Camada de Transporte
Protocolos de Transporte da Arquitetura
5. Camada de Transporte
Diferença básica entre o TCP e o UDP
– TCP garante que o dado vai chegar ao seu destino corretamente
– UDP não tem garantia de entrega de dados
– O TCP possui diversos controles para garantir que o dado irá chegar
corretamente ao destino. Por isso é mais lento que o UDP
5.1 Aplicações Cliente-Servidor
Possui duas entidades básicas
– Servidor
• Responsável por prover informações a um ou vários clientes
• Processar as mensagens enviadas pelo cliente
– Cliente
• Acessar informações contidas em um ou mais servidores
5.1 Aplicações Cliente-Servidor
Toda aplicação possui a sua versão
server e a sua versão client
– Ex:
• Telnet Server e Telnet Client
• HTTP Server ou Web Server e HTTP Client
(Browsers como Netscape ou Internet Explorer) • FTP Server e FTP Client
5.1.1 O conceito de Porta
Somente os campos IP origem e IP
destino não são suficientes para identificar uma conexão
É preciso identificar a porta de origem e
a porta de destino, bem como qual
protocolo esta sendo utilizado (TCP ou UDP)
5.1.1 O conceito de Porta
5.1.2 Utilizando a Arquitetura
Client-Server
Primeiramente é preciso instalar um
determinado serviço em um servidor.
Exemplo:
– O servidor de HTTP (Web Server) do Universo Online - www.uol.com.br
(200.241.5.65) é configurado para a porta 80 (default para este serviço)
5.1.2 Utilizando a Arquitetura
Client-Server
Após o serviço instalado um
determinado Cliente pode acessar o serviço. Ex:
– O usuário da máquina 200.241.16.8 deseja acessar a página do universo online
– Neste momento o sistema operacional lhe da uma porta escolhida randomicamente para fazer a conexão TCP
5.1.2 Utilizando a Arquitetura
Client-Server
Teremos portanto:
– IP Origem: 200.241.16.8 (Máquina Local) – Porta Origem: 3478 (SO fornece)
– IP Destino: 200.246.4.65 (Máquina Remota – Porta Destino: 80 (Porta Default do serviço
5.1.2 Utilizando a Arquitetura
Client-Server
Suponha que abramos uma outra janela
do Browser, teremos então:
– IP Origem: 200.241.16.8 (Máquina Local) – Porta Origem: 4312 (SO fornece outra)
– IP Destino: 200.246.4.65 (Máquina Remota – Porta Destino: 80 (Porta Default do serviço
5.1.2 Utilizando a Arquitetura
Client-Server
Suponha que outra pessoa esteja
acessando a mesma página:
– IP Origem: 200.30.20.83 (Máquina Local) – Porta Origem: 4312 (SO fornece pode ser
igual a de outra máquina)
– IP Destino: 200.246.4.65 (Máq. Remota) – Porta Destino: 80 (Porta Default WWW)
5.2 O Protocolo TCP
Protocolo Orientado à Conexão
Confiável do ponto de vista de entrega
dos dados ao destino sem erros
Processos de transmissão,
retransmissão, controle de fluxo e
erros, etc são totalmente transparentes ao usuário desta camada
5.2 O Protocolo TCP
São responsabilidades da camada de
transporte:
– Estabelecimento e Liberação da Conexão – Transferência de Dados
– Transferência de Dados Urgentes – Multiplexação
• Diversas conexões de transporte em uma única conexão de rede
5.2 O Protocolo TCP
– Segmentação
• Área de dados do IP é menor que a área de dados do TCP
– Controle de Fluxo
• Janela Deslizante
– Controle de Erros
5.2.1 Formato do pacote TCP
Descrição de alguns campos
– CODE BITS
• Determina o propósito e conteúdo do segmento
Opção Significado
URG Campo de ponteiro Urgente é válido
ACK Campo de Reconhecimento é válido
PSH Este segmento solicita um Push
RST Resetar a conexão
SYN Sincroniza números de Sequências
5.2.1 Formato do pacote TCP
Descrição de alguns campos
– WINDOW
• Indica quantos bytes ele tem capacidade de receber
– URGENT POINTER
• Indica que alguns dados serão entregues de forma urgente. Repassa ao IP
– PADDING
5.2.2 Portas bem conhecidas do
TCP
5.3 O Protocolo UDP
Utiliza o mesmo princípio de portas do
TCP
Muito mais leve que o TCP
Não garante entrega dos dados,
sequencialização, fluxo de mensagens, etc
Você simplesmente envia um dado e reza