Apostila de TCP-IP - Adriano Vieira-1

24
Apostila de TCP/IP Autor: Adriano Vieira A obra Apostila de TCP/IP, de Adriano Vieira, foi licenciada com uma Licença Creative Commons - Atribuição - Uso Não-Comercial - Partilha nos Mesmos Termos 3.0 Brasil . Permissões adicionais ao âmbito desta licença podem ser requisitadas em [email protected] .

Transcript of Apostila de TCP-IP - Adriano Vieira-1

Page 1: Apostila de TCP-IP - Adriano Vieira-1

Apostila de TCP/IP

Autor: Adriano Vieira

A obra Apostila de TCP/IP, de Adriano Vieira, foi licenciada com uma Licença

Creative Commons - Atribuição - Uso Não-Comercial - Partilha nos Mesmos Termos

3.0 Brasil.

Permissões adicionais ao âmbito desta licença podem ser requisitadas em

[email protected].

Page 2: Apostila de TCP-IP - Adriano Vieira-1

Lista de siglas:

TCP Transmission Control Protocol Protocolo de Controle de Transmissão

IP Internet Protocol Protocolo de Interconexão

HTTP HyperText Trasfer Protocol Protocolo de Transferência de Hiper Texto

HTTPS Secure HTTP HTTP Seguro

FTP File Transmition Protocol Protocol de Transmissao e Arquivo DNS Domain Name System Sistema de Nome de Domínio UDP User Datagram Protocol Protocolo de Datagrama

SSL Secure Sockets Layer Camada de Sockets Segura ARP Address Resolution Protocol Protocolo de Resolução de Endereço

RARP Reverse ARP ARP Reverso

IMAP Internet Message Access Protocol Protocolo de Acesso a Mensagens da Internet

POP3 Post Office Protocol <sem tradução útil>

VoIP Voice Over IP Voz sobre IP

ICMP Internet Control Message Protocol Protocolo de Mensagens de Controle da Internet

SSH Secure Shell Shell Seguro

MAC Media Access Control Controle de Acesso ao Meio

URL Unified Resource Locator Localizador Unificado de Recursos

Page 3: Apostila de TCP-IP - Adriano Vieira-1

Nota do professor

Olá aluno (a)!

Esta apostila foi produzida para subsidiar a primeira parte dos

conhecimentos que você precisa obter para ser aprovado em

minha disciplina, Protocolos de Rede e Segurança. Mas este não é

o único propósito... Esta apostila foi produzida para que você

entenda o funcionamento do TCP/IP e de alguns de seus

protocolos, para assim formar uma visão mais abrangente acerca

do funcionamento da Internet.

Os textos aqui abordados foram escritos da forma mais suave e simples possível,

exatamente para que vocês tentem aproveitar enquanto estiverem exercitando seu

aprendizado. Tenho a certeza de que, com os conhecimentos que teremos em aula e sua

assiduidade na leitura dessa e de outras apostilas que estão por vir, você será certamente

aprovado em minha disciplina e, eventualmente, em sua vida profissional.

Lembre-se, caro aluno: “A diferença entre o sucesso e o fracasso está no nível de

esforço empregado” – Adriano Vieira.

Um forte abraço,

Adriano Vieira

Page 4: Apostila de TCP-IP - Adriano Vieira-1

Apostila de TCP/IP - Introdução

4

Conteúdo Nota do professor ............................................................................................................ 3

Introdução ....................................................................................................................... 5

Camada de Aplicação ..................................................................................................... 6

O protocolo HTTP ........................................................................................................ 7

O DNS .......................................................................................................................... 8

Abstração é a chave da pilha de protocolos TCP/IP ..................................................... 9

Camada de Transporte ................................................................................................ 11

Portas - Identificadores de aplicações (processos) ..................................................... 11

Os Protocolos TCP e UDP ......................................................................................... 12

TCP: Confiança e garantia de entrega ........................................................................ 13

UDP: Quando a simplicidade é a chave do negócio ................................................... 14

Diferenças entre TCP e UDP ...................................................................................... 14

Camada de Rede ........................................................................................................... 15

O protocolo IP ............................................................................................................ 15

Analogia com o funcionamento de serviços postais ................................................... 16

O protocolo ARP ........................................................................................................ 18

O protocolo RARP ..................................................................................................... 19

Camada de Enlace ........................................................................................................ 20

Entrega direta e a importância do MAC ..................................................................... 20

Camada Física ............................................................................................................... 23

Bibliografias .................................................................................................................. 24

Page 5: Apostila de TCP-IP - Adriano Vieira-1

Apostila de TCP/IP - Introdução

5

Introdução

O TCP/IP é o protocolo para comunicação em rede mais usado atualmente. Seu nome

vem de dois protocolos: o TCP (Transmission Control Protocol – Protocolo de Controle

de Transmissão) e o IP (Internet Protocol – Protocolo de Interconexão).

Mas, afinal, o que é um protocolo de rede? Um protocolo é uma linguagem usada para

permitir que dois ou mais computadores se comuniquem. Assim como acontece no

mundo real, se duas pessoas não falam a mesma língua, elas não se comunicam. Um

protocolo define como dois dispositivos se comunicam e trocam informações.

O TCP/IP não é, na verdade, um único protocolo, mas sim um conjunto deles,

formando uma pilha de protocolos (como é comumente chamado), distribuídos entre

suas cinco camadas. Veja a tabela abaixo:

Pilha de Protocolos TCP/IP

Camada Protocolos

5 - Aplicação HTTP, DNS, IMAP, POP3,

MSN, FTP, Telnet, VoIP, entre

outros.

4 - Transporte TCP, UDP, entre outros.

3 - Rede IP, ARP, RARP, ICMP, entre

outros.

2 - Enlace Ethernet, 802.11 (WiFi), entre

outros.

1 - Física Hardware utilizado para

comunicação entre dispositivos.

Não se preocupe em entender cada um dos protocolos acima. Faremos isso com detalhes

mais adiante.

Cada uma das camadas do TCP/IP possui uma função específica, bem como os

protocolos distribuídos entre elas. Estas camadas foram pensadas pelos projetistas do

TCP/IP para facilitar e abstrair, para o desenvolvedor, os serviços da camada anterior.

Por exemplo, quando um programador deseja construir um programa de computador

para se comunicar em rede, ele não terá de saber detalhes sobre como os bits de seu

programa serão enviados (pois a camada Física e Enlace se preocuparão com isso), ou

como seus dados serão roteados entre diversas redes (a camada de Rede se preocupa

com isso), ou como garantir que seus pacotes serão entregues, ou não, e que chegarão

por inteiro ao destino (a camada de Transporte se preocupará com isso). O

programador deverá somente se preocupar em criar sua aplicação e definir quais

protocolos quer utilizar das camadas do TCP/IP. SIMPLES não?!

Estudaremos cada uma destas camadas e seus protocolos a seguir, bem como os

serviços disponibilizados por esses protocolos. Bons estudos!

Page 6: Apostila de TCP-IP - Adriano Vieira-1

Apostila de TCP/IP – Camada de Aplicação

6

Camada de Aplicação

Aplicações de Rede representam a razão de ser de uma rede de computadores. Nos

últimos 40 anos, foram criados diversos aplicativos que funcionam baseados em

comunicações em rede, como o email, programas de acesso a computadores remotos e

transferência de arquivos, grupos de discussão e bate-papo, além da maior e mais bem

sucedida infraestrutura de sistemas de páginas gráficas: a Web.

Ao iniciar nossos estudos sobre Protocolos de Rede e Segurança, nada melhor do que

começar pela camada de Aplicação do TCP/IP. Isto porque já somos familiarizados com

boa parte das aplicações que fazem uso dos protocolos desta camada, como MSN e

HTTP, por exemplo.

Vamos começar identificando a camada de Aplicação na pilha de protocolos TCP/IP:

Camada Protocolos

5 - Aplicação HTTP, DNS, IMAP, POP3,

MSN, FTP, Telnet, VoIP, entre

outros.

4 - Transporte TCP, UDP, entre outros.

3 - Rede IP, ARP, RARP, ICMP, entre

outros.

2 - Enlace Ethernet, 802.11 (WiFi), entre

outros.

1 - Física Hardware utilizado para

comunicação entre dispositivos.

Que tal agora listar alguns serviços que conhecemos e os protocolos da camada de

aplicação que eles utilizam? Vamos lá:

Serviços Protocolos utilizados

Email IMAP, POP3, entre outros.

A Web HTTP

Login em computadores remotos Telnet e SSH

Jogos em rede (utilizam, geralmente, protocolos do fabricante)

Telefonia via Internet VoIP

MSN (Messenger) MSN (utiliza protocolo de mesmo nome)

Transferência de Arquivos FTP

A seguir, devida a importância, serão abordados dois dos muitos protocolos desta

camada – HTTP e DNS.

Page 7: Apostila de TCP-IP - Adriano Vieira-1

Apostila de TCP/IP – Camada de Aplicação

7

O protocolo HTTP

O protocolo HTTP (HyperText Transfer Protocol – ou Protocolo de Transferência de

HiperTexto) é a base para o serviço Web. Ele é implementado em dois programas: um

cliente e outro servidor. Os dois programas conversam através de mensagens HTTP.

Resposta HTTP

Requisição HTTP

Cliente HTTP Servidor HTTP

Quando digitamos em nosso browser um endereço no URL e executamos a busca, nosso

computador se torna um cliente do serviço HTTP. Neste momento, o cliente envia uma

requisição HTTP para o respectivo servidor (ou seja, aquele que irá prover a página web

requerida – por exemplo, um dos servidores da Google). Ao receber a requisição, o

servidor avalia o pedido e, se válido, envia a resposta ao cliente, contendo a página web

desejada. O cliente continua enviando para o(s) servidor(es) todas as requisições HTTP

necessárias até que o documento base (composto de fotos, vídeos, arquivos de outros

servidores, entre outros objetos), esteja completo.

Todos os dados que trafegam sobre o protocolo HTTP o fazem por texto plano, ou seja,

as mensagens não são criptografadas e seus dados podem, eventualmente, serem lidos

por qualquer sistema que esteja “escutando” a rede.

Por isso, o HTTP possui uma implementação sobre SSL ou TLS (protocolos de

segurança para transferência de dados) chamada HTTPS (HTTP Seguro).

O HTTPS é geralmente utilizado por sites de bancos e lojas virtuais para prover

segurança na comunicação entre o computador do cliente e o servidor comercial.

Utilizando o HTTPS, é possível prevenir que intermediários tenham acesso as

informações que trafegam entre as duas pontas da comunicação, isto porque a

comunicação utilizando HTTPS é criptografada e somente os envolvidos na

comunicação (por exemplo, o banco e o cliente) podem descriptografá-la.

URL contendo o endereço de um banco utilizando HTTPS

Page 8: Apostila de TCP-IP - Adriano Vieira-1

Apostila de TCP/IP – Camada de Aplicação

8

O DNS

Muitas são as formas pelas quais nós, seres humanos, podemos ser identificados. Todos

nós, por exemplo, temos um número de CPF único, exclusivo. A Receita Federal, por

exemplo, prefere utilizar o número de nosso CPF para nos identificar, visto que podem

existir muitas pessoas com o mesmo nome e sobrenome que nós. Por outro lado,

pessoas comuns preferem usar nosso nome de batismo, pois, sem dúvida, este é mais

fácil de lembrar do que uma seqüência de números. Imagine, por exemplo, uma

conversa assim: “Olá, meu nome é 075.850.106-35 e está é minha esposa, 195.682.054-

20”. Inviável, não é?!

Assim como os seres humanos, computadores que hospedam sites e/ou serviços na

internet possuem um endereço IP único (por exemplo: 64.233.163.104), que serve para

identificá-los unicamente na grande rede. Obviamente, ficaria difícil se todos nós

tivéssemos que lembrar o número IP de cada um para podermos ter acesso a seus

serviços. Para isso existem os nomes de domínio, como www.google.com,

www.yahoo.com, etc. Estes nomes são bem mais fáceis de lembrar do que seus números

IP, que são 64.233.163.104 e 200.152.168.178, respectivamente.

Acessando o site do Google somente utilizando seu endereço IP

O DNS (Domain Name System – ou Sistema de Nomes de Domínio) é, ao mesmo

tempo, um banco de dados distribuído e um protocolo da camada de Aplicação.

Ele é comumente utilizado por outras entidades da camada de Aplicação, como o HTTP

e FTP, para traduzir nomes de hospedeiros para endereços IP. Isto é necessário porque,

na Internet, o endereçamento dos computadores em redes diferentes ocorre

somente via endereços IP. Para isso, um servidor DNS deve conter uma tabela

relacionando nomes de domínio e endereços IP, como a tabela a seguir:

www.google.com 64.233.163.104

www.terra.com 200.70.188.151

www.escolagomescardim.com.br 187.108.192.25

www.beaglenetwork.blogspot.com 74.14.204.132

Exemplo simples de uma tabela em um servidor DNS

Page 9: Apostila de TCP-IP - Adriano Vieira-1

Apostila de TCP/IP – Camada de Aplicação

9

Nenhum servidor DNS isolado possui, em suas tabelas, entradas para todos os

hospedeiros da Internet. Ao invés disso, o mapeamento é distribuído entre diversos

servidores DNS espalhados pelo mundo. Sendo assim, as consultas por nomes de

domínio podem percorrer diversos servidores DNS diferentes, até que todas as

informações sobre o nome sejam resolvidas e o cliente receba o IP desejado.

Basicamente falando, quando um usuário digita em seu browser o endereço

http://www.google.com, o HTTP, antes de requisitar a página do Google, precisa

utilizar o cliente DNS do computador para obter o endereço IP de www.google.com.

Uma requisição DNS é enviada ao servidor DNS contendo o nome “www.google.com”.

Este servidor retornará, então, o endereço IP correspondente ao nome requisitado. A

figura abaixo exemplifica o processo:

Resposta DNS (64.233.163.104)

Requisição DNS (www.google.com)

Cliente DNS Servidor DNS

É óbvio que existe muito mais por trás do funcionamento do DNS, porém não cabe aos

nossos estudos, no momento. O importante é saber que o DNS possibilita uma certa

organização e facilidade de compreensão, para nós humanos, em um mundo onde o IP é

a língua principal (Internet).

Obs: A partir de agora, você irá ouvir muito a expressão “fim-a-fim”. Mas o que

significa esta expressão? Como a comunicação pode ser fim-a-fim se os dados têm de

descer por todas as camadas do TCP/IP da origem e, chegando ao destino, subir

novamente todas as outras camadas para chegar, de fato, a aplicação que o utiliza?

Vamos entender então o conceito de “fim-a-fim”.

Abstração é a chave da pilha de protocolos TCP/IP

A figura abaixo simplifica como ocorre a comunicação “Real” e “Lógica” pelo TCP/IP:

Pilha TCP/IP Pilha TCP/IP

Aplicação Aplicação

Transporte Transporte

Rede Rede

Enlace Enlace

Física Física

Page 10: Apostila de TCP-IP - Adriano Vieira-1

Apostila de TCP/IP – Camada de Aplicação

10

A figura acima exemplifica o seguinte: a comunicação entre duas aplicações utilizando

a pilha de protocolos TCP/IP acontece, realmente, subindo e descendo as pilhas.

Quando um computador deseja enviar um dado para outro, este dado é encapsulado,

primeiramente, em seu protocolo de aplicação (HTTP, DNS, entre outros). O dado,

agora encapsulado em um protocolo da camada de aplicação, desce a pilha para a

camada de transporte, onde novamente recebe uma identificação do serviço que utilizará

dessa camada (TCP ou UDP, por exemplo). Desce novamente até a camada de Rede

onde, em sua identificação, consta o número IP correspondente a máquina de origem e a

máquina de destino da comunicação. O pacote agora é enviado à camada de Enlace

onde é encapsulado em um protocolo desta camada, (como Ethernet, 802.11, entre

outros), dependendo do tipo de rede em que os sistemas vizinhos estão. Decidida a

forma de envio dos dados, a camada física, ou seja, o Hardware de Rede do

computador, finalmente envia os dados para a máquina de destino.

Porém, devemos lembrar que o TCP/IP foi criado para, além do conceito óbvio de

prover comunicação entre duas máquinas na rede, possibilitar que a aplicação

abstraia ao máximo a existência de outras camadas na pilha, ou seja, as informações

são enviadas, logicamente, como se não houvesse outras camadas abaixo, como se

fosse possível enxergar diretamente as entidades parceiras nas camadas vizinhas em

outras máquinas (Transporte e Rede).

Os conceitos podem parecer confusos, por hora. Mas garanto que ficarão claros como

água na medida em que nossos estudos forem avançando. Não se esqueçam de tirar

todas as dúvidas comigo.

Page 11: Apostila de TCP-IP - Adriano Vieira-1

Apostila de TCP/IP – Camada de Transporte

11

Camada de Transporte

Esta camada está situada entre a camada de Aplicação e a camada de Rede no modelo

TCP/IP. Como veremos mais adiante, a camada de rede provê a comunicação lógica

fim-a-fim entre máquinas na Internet, através do IP. A camada de Transporte, por sua

vez, possibilita a comunicação lógica fim-a-fim dos processos em execução nas

maquinas, por um conceito que chamamos de “portas”.

Primeiramente, vamos identificar a camada de Transporte na pilha TCP/IP:

Camada Protocolos

5 - Aplicação HTTP, DNS, IMAP, POP3,

MSN, FTP, Telnet, VoIP, entre

outros.

4 - Transporte TCP, UDP, entre outros.

3 - Rede IP, ARP, RARP, ICMP, entre

outros.

2 - Enlace Ethernet, 802.11 (WiFi), entre

outros.

1 - Física Hardware utilizado para

comunicação entre dispositivos.

Antes de estudarmos os dois principais protocolos da camada de Transporte (TCP e

UDP), vamos entender que tipo de serviço oferece esta camada.

Portas - Identificadores de aplicações (processos)

Vamos supor que um programador está construindo uma aplicação em rede (que ele

chamou de EmpresaTalk), para comunicação entre ele e um amigo na empresa. Assim,

ele precisará receber e enviar dados para outra aplicação EmpresaTalk, que estará

instalada no computador de seu amigo. Para isso sua aplicação deverá, obviamente,

saber o endereço IP do computador de seu amigo para que, assim, consiga iniciar uma

comunicação com a outra aplicação. Porém, sabemos que um computador executa

muito mais de uma aplicação de rede. Nesse momento, por exemplo, é bem capaz de

que seu computador esteja executando muitas delas, como: um browser, um serviço de

mensagens instantâneas (como o MSN), um antivírus fazendo atualização de seu banco

de dados, um serviço de email, vídeos sendo baixados da internet, um cliente DNS, etc.

DNS

Web Browser

MSN

EmpresaTalk

Page 12: Apostila de TCP-IP - Adriano Vieira-1

Apostila de TCP/IP – Camada de Transporte

12

Somente o endereço IP seria capaz de possibilitar a identificação de todas estas

aplicações de rede executando em uma máquina? A resposta é NÃO... um IP identifica

uma máquina específica, e não as aplicações de rede sendo executadas nela.

Para isso a camada de Transporte trabalha com o que chamamos de “portas”.

Em um Sistema Operacional, existem portas que identificam cada uma das

aplicações residentes no sistema que precisam de acesso a rede. Por exemplo, a porta

relativa às aplicações que utilizam HTTP é a porta 80; O MSN utiliza, inicialmente, a

porta 1863; Já o DNS utiliza a porta 53.

DNS (53)

Web Browser (80)

MSN (1863)

EmpresaTalk (<número da porta>)

Sendo assim, nosso amigo programador deverá informar além do endereço IP da

máquina de seu amigo, onde reside a outra aplicação EmpresaTalk, também a porta

responsável por receber/enviar os dados para esta aplicação fictícia.

Os Protocolos TCP e UDP

Os protocolos TCP e UDP formam o coração da camada de Transporte, sendo

parte dos serviços que esta camada oferece para a camada de Aplicação. Por exemplo,

nosso programador, que esta produzindo o programa EmpresaTalk, deverá escolher um

destes dois protocolos para encapsular seus dados até a outra aplicação, no computador

de seu amigo. Cada um destes protocolos (TCP e UDP) possui serviços diferentes para

oferecer à camada de aplicação, dependendo das necessidades da aplicação em questão.

Estes protocolos são bem diferentes um do outro. O TCP é chamado de “protocolo de

transporte confiável”, por garantir que os dados de uma comunicação cheguem, por

inteiro, na máquina de destino. Já o UDP, pelo contrário, não dá muitas garantias para a

aplicação que utiliza seus serviços. Sabendo disso, vamos entender melhor cada um

destes protocolos.

Page 13: Apostila de TCP-IP - Adriano Vieira-1

Apostila de TCP/IP – Camada de Transporte

13

TCP: Confiança e garantia de entrega

O TCP (Transmission Control Protocol – ou Protocolo de Controle de Transmissão) é o

protocolo “certinho” da Internet. Uma aplicação que confia seus dados ao TCP tem a

certeza de que, em situações normais, suas informações chegarão ao destino e serão

lidas na ordem em que foram enviadas.

O TCP é responsável por receber dados da camada de aplicação e encapsulá-los,

passando-os para a camada inferior (camada de Rede).

Vamos entender agora como o TCP consegue dar tantas garantias as aplicações que o

utilizam para o transporte de seus dados:

1. O protocolo TCP é orientado à conexão, ou seja, ele estabelece uma conexão

fim-a-fim entre as aplicações de origem e destino dos dados. Sendo assim, antes

que as aplicações iniciem sua transferência de dados, a entidade TCP de origem

deve “bater um papo” com a entidade TCP de destino e negociar como será feita

a troca de informações, quais os recursos que serão alocados nas máquinas para

a transmissão dos dados (como quantidade de armazenamento necessária) e

“fechar um acordo” para a abertura de uma conexão (definindo as portas que

serão utilizadas)... só então inicia-se a transferência de dados. Após a

transferência, o fechamento da conexão também é acordado entre as partes, de

forma a liberar os recursos utilizados durante a transmissão dos dados.

2. O TCP possui um serviço confiável de entrega fim-a-fim dos dados. Uma

vez iniciada a troca de dados entre as aplicações, estas podem, de certa forma,

ficar tranqüilas quanto a entrega de suas informações. Isto porque, uma vez

confiados ao TCP, mesmo que seguimentos sejam perdidos, duplicados,

retardados e até mesmo cheguem fora da ordem ao seu destino, os mecanismos

de controle de erro e seqüência do TCP garantem que o fluxo de dados que sair

da aplicação de origem será entregue a aplicação de destino, na seqüência

correta e sem erros. Esse cara é demais, não é?!

3. O TCP possui um mecanismo de controle de fluxo. Isso ajuda a evitar que

uma aplicação, em certo intervalo de tempo, envie uma rajada de informações

maior do que a aplicação do outro lado suporta receber. Isso evita o descarte de

segmentos por falta de recursos na estação de destino. A idéia é compatibilizar a

taxa com a qual a entidade de origem está enviando dados com a taxa que a

entidade de destino os está lendo.

Tantas garantias, métodos, mecanismos, fazem do TCP muito confiável e útil para as

aplicações que precisam garantir que seus dados cheguem por completo ao outro lado

da comunicação. Mas será o TCP a solução para todas as aplicações? A resposta é

NÃO. Algumas aplicações simplesmente não precisam de tantas garantias e demandam

menos “burocracia” para serem enviadas. Para isso existe o UDP.

Page 14: Apostila de TCP-IP - Adriano Vieira-1

Apostila de TCP/IP – Camada de Transporte

14

UDP: Quando a simplicidade é a chave do negócio

O UDP (User Datagram Protocol – Procolo de Datagramas – por Tradução Adaptativa)

é um protocolo bastante simples, que provê um serviço de transporte não confiável e

sem conexão.

O UDP, assim como o TCP, é responsável por receber dados da camada de aplicação e

encapsulá-los, passando-os para a camada inferior (camada de Rede).

Ao contrário do TCP, o UDP não garante a seqüência dos dados entregues, não

garante que os dados da camada de aplicação que são confiados à ele sejam entregues

com sucesso ao respectivo processo de aplicação de destino, não garante a correção de

erros – caso estes aconteçam na transmissão dos dados -, não é orientado a conexão,

ou seja, não negocia a abertura de uma conexão (alocação de recursos e taxa de

transmissão) com o sistema de destino antes de enviar os dados, simplesmente os envia.

Agora você pode estar se perguntando: como um protocolo que, basicamente, não

garante nada, pode ser interessante para alguma aplicação?

A resposta está exatamente no fato deste protocolo ser tão simples. Algumas aplicações

precisam de simplicidade e velocidade para garantir a qualidade do serviço que provêem

ao usuário. Tome como exemplo uma Rádio Online. A perda de 0,01 micro segundo de

áudio não é suficiente para fazer com que seus ouvidos percebam diferença no som.

Sendo assim, uma rádio precisa mesmo é que seus dados sejam entregues de forma

rápida, sendo os erros em alguns pacotes aceitáveis para a transmissão final.

Sendo assim, ambos os protocolos tem lá suas vantagens, sendo necessário ao

programador avaliar qual sua real necessidade de serviço e fazer a escolha correta entre

TCP e UDP para transmissão primária dos dados entre suas aplicações.

Diferenças entre TCP e UDP

Para fechar este capítulo, veja na tabela abaixo as diferenças entre os protocolos TCP e

UDP:

TCP UDP

Orientado a conexão Não orientado a conexão

Mecanismo de controle de erro e seqüência Não possui mecanismos para recuperação em

caso de erros

Garante a seqüência correta dos dados no

destino

Não garante a seqüência correta dos dados no

destino

Possui controle de fluxo Não possui controle de fluxo

Principais diferenças entre os protocolos TCP e UDP

Page 15: Apostila de TCP-IP - Adriano Vieira-1

Apostila de TCP/IP – Camada de Rede

15

Camada de Rede

Como vimos anteriormente, a camada de Transporte, utilizando de um de seus

protocolos (TCP ou UDP), fornece um meio para identificar na rede cada processo que

faça uso desta rede, por meio das “portas”. A camada de Transporte, no entando, precisa

enviar seus dados para uma camada inferior, de forma a possibilitar que o segmento seja

enviado para a máquina de destino.

Vejamos onde se localiza a camada de Rede, na pilha de protocolos TCP/IP:

Camada Protocolos

5 - Aplicação HTTP, DNS, IMAP, POP3,

MSN, FTP, Telnet, VoIP, entre

outros.

4 - Transporte TCP, UDP, entre outros.

3 - Rede IP, ARP, RARP, ICMP, entre

outros.

2 - Enlace Ethernet, 802.11 (WiFi), entre

outros.

1 - Física Hardware utilizado para

comunicação entre dispositivos.

Após receber os dados da camada de Transporte, a camada de Rede preocupa-se em

endereçar as máquinas na rede. Para isso é utilizado o protocolo IP: um protocolo da

camada de rede responsável por receber os dados da camada superior (camada de

transporte) e enviá-los ao seu destino por meio de um identificador único, com o mesmo

nome do protocolo, para a Internet, o número IP.

O protocolo IP

O protocolo IP é um dos mais importantes protocolos da família TCP/IP, visto que

todos os demais protocolos das camadas de Rede e Transporte dependem dele para

entregar suas informações. Essa importância toda se deve, principalmente, ao octeto de

32 bits que este protocolo disponibiliza para a comunicação entre redes: o número IP.

Basicamente, um número IP identifica uma única máquina na Internet. Sendo assim, a

única forma de uma informação, utilizando TCP/IP, chegar ao seu destino na grande

rede é sendo encapsulada em um datagrama IP, contendo o número IP da máquina de

destino.

64.120.40.11 01000000.01111000.00101000.00001011

Formato de um endereço IP em decimal e sua versão em binário (quatro octetos de oito bits cada)

Page 16: Apostila de TCP-IP - Adriano Vieira-1

Apostila de TCP/IP – Camada de Rede

16

Através do protocolo IP, os pacotes podem ser direcionados pelos roteadores

através da internet até chegarem ao seu destino.

Da mesma forma como a camada de Transporte permite uma visão lógica das

aplicações nas máquinas de destino, a camada de Rede também abstrai a existência das

camadas inferiores por meio do IP. Isso ocorre porque, em uma rede IP, os endereços de

origem e destino (IP origem e IP destino), que seguem junto ao pacote IP são os

mesmos durante toda a comunicação, ou seja, mesmo passando por diversos roteadores

e switchs na Internet, temos uma visão em linha reta da origem e do destino que

queremos. Confuso? Veja a analogia abaixo.

Analogia com o funcionamento de serviços postais

Imagine que Maria, residente em Viana, Espírito Santo - Brasil, quer enviar uma carta

para João, que reside na cidade de Harrisburg, Pennsylvania – EUA. Maria sabe

exatamente o endereço de João, e não faz (e nem precisa fazer) idéia alguma de como o

serviço de correio irá entregar a carta até a residência de João. Maria confia no serviço

de correio e só deseja que a carta chegue até João.

Maria irá postar a carta na agência dos Correios, em Viana. A agência, por sua vez, não

sabe como entregar a carta diretamente na casa de João, mas sabe que, passando a carta

para sua agência central, na capital Vitória, a mesma poderá entregue ao destino, uma

vez que a agência de Vitória tem uma visão maior do mundo postal. A agência de

Vitória, ao receber a carta, também não sabe como entregá-la diretamente na casa de

João, mas sabe que tem de colocá-la em um avião e enviar para os EUA, rumo a agência

central do estado da Pennsylvania. Uma vez que a carta esteja lá, a agência da

Pennsylvania analisa o endereço e, assim como as outras agências, percebe que não sabe

como entregar diretamente a carta na casa de João, mas sabe que deve entregar para a

agência na cidade de Harrisburg. Quando a carta chega a Harrisburg, a agência de lá irá

analisar o endereço e perceber que sabe entregar essa carta, visto que a casa de João está

no mesmo distrito que a agência. Finalmente a carta é entregue a seu destinatário.

Page 17: Apostila de TCP-IP - Adriano Vieira-1

Apostila de TCP/IP – Camada de Rede

17

Casa de Maria Casa de João

Visão fim-a-fim de Maria (camada de Transporte e Rede)

Visão real do envio da carta (camada de Enlace e Física)

Perceba que Maria não faz idéia de tudo o que aconteceu no caminho de sua carta. Para

ela é como se tivesse colocado a carta na agência de Viana e, como num passe de

mágica, a carta aparecesse na casa de João. A carta (pacote IP) pode passar por diversas

outras localidades, dependendo, por exemplo, da quantidade de tráfego ou demanda de

certas agências (roteadores e switchs).

Assim funciona a abstração na pilha de protocolos TCP/IP. Imagine Maria como sendo

o computador utilizando o protocolo IP (o serviço dos Correios) para enviar sua

mensagem. O computador de origem (Maria) sabe o endereço IP de seu destinatário

(João) e simplesmente envia o pacote (carta) para ele, sem se preocupar sobre como as

camadas inferiores, camada de Enlace e Física (agências), irão fazer para entregar a

carta.

Essa visão fim-a-fim acontece porque o endereço de origem e destino não muda em

toda a comunicação (perceba que, na carta, o endereço de origem – de Maria - e o

endereço de destino - de João - são sempre os mesmos). Assim também acontece na

transmissão de dados sobre IP. O endereço IP de origem e o endereço IP de destino são

sempre os mesmos, possibilitando o endereçamento correto das informações que vão e

que vem da Internet. No entanto, o endereço das agências (endereços MAC em

roteadores e switchs – veremos endereços MAC no próximo capítulo) sempre se

alteram, a medida em que vão sendo repassados para frente, já que uma agência

passa a se tornar responsável por entregar o que a outra agência lhe passou. Sendo

assim, caso a correspondência se perca, uma agência terá de prestar contas a agência

que lhe passou a correspondência, esta prestará contas para a agência anterior e assim

por diante, até chegar a Maria a notícia da perda da carta, caso ocorra.

Page 18: Apostila de TCP-IP - Adriano Vieira-1

Apostila de TCP/IP – Camada de Rede

18

O protocolo ARP

Um computador pode ser identificado na rede por dois endereços: seu endereço lógico –

IP - e seu endereço físico – MAC -, gravado no adaptador de rede da máquina (veremos

mais detalhes sobre endereçamento físico mais adiante).

O fato é que, para entregar uma mensagem para computadores “vizinhos”, ou seja, que

estejam dentro de uma mesma rede física, é utilizado o endereço físico do computador

de origem e destino, ou seja, é utilizado o endereço MAC. Por isso, sempre que uma

máquina possui o endereço IP da outra, mas não sabe o endereço MAC, é preciso fazer

a descoberta do MAC através do IP, antes de iniciar a comunicação entre as partes.

Para isso existe o protocolo ARP (Address Resolution Protocol – Protocolo de

Resolução de Endereços).

Para entendermos a necessidade deste protocolo, veja a rede mostrada na figura abaixo:

No exemplo acima, cada equipamento de rede possui um endereço IP e um endereço

MAC para cada adaptador na rede. Como deve ser de conhecimento geral, os endereços

IP são mostrados como números em notação decimal, enquanto os MACs são números

em hexadecimal.

Voltando ao exemplo, suponha que o computador com número IP 222.222.222.220

queira enviar um recado (via datagrama IP) para o nó 222.222.222.222. Perceba que

neste exemplo, ambas as máquinas estão na mesma rede, ou seja, o endereçamento

deverá ser feito através do endereço MAC do destino. Para descobrir o endereço MAC

da máquina de IP:222.222.222.222, o remetente primeiro pesquisará em sua tabela ARP

procurando por alguma entrada que identifique o destinatário. Veja o exemplo da tabela

ARP de 222.222.222.220:

Page 19: Apostila de TCP-IP - Adriano Vieira-1

Apostila de TCP/IP – Camada de Rede

19

IP MAC

222.222.222.221 2F-3A-5D-25-2A-F1

222.222.222.223 5C-77-A5-43-90-BF

... ...

Tabela ARP de 222.222.222.220 (exemplo)

Humm... que pena. O computador remetente verificou em sua tabela ARP e percebeu

que não possui o endereço MAC do destinatário, ou seja, 222.222.222.220 não possui o

MAC de 222.222.222.222. Para conseguir esse endereço, o computador remetente irá

mandar um pacote que chamamos de ARP Query, contendo seu próprio endereço IP e

endereço MAC, bem como o endereço MAC de broadcast (FF-FF-FF-FF-FF-FF). Este

pacote deverá ser como o pacote abaixo:

MAC origem: 2A-32-1F-3B-C2-58 IP origem: 222.222.222.220

MAC destino: FF-FF-FF-FF-FF-FF IP destino: 222.222.222.222 Exemplo de um pacote ARP Query simples, para busca do IP destino.

O quadro acima é recebido por todos os adaptadores na sub-rede, devido ao broadcast

por MAC (FF-FF-FF-FF-FF-FF). Cada computador verifica, então, se o endereço IP de

destino, presente no pacote ARP, combina com seu próprio endereço IP. O único nó que

for portador do endereço 222.222.222.222, responderá, finalmente, com o seu proprio

endereço MAC no campo “MAC origem”. Abaixo a resposta da máquina

222.222.222.222 para 222.222.222.220:

MAC origem: 49-BD-9B-62-AC-24 IP origem: 222.222.222.222

MAC destino: 2A-32-1F-3B-C2-58 IP destino: 222.222.222.220 Resposta da máquina 222.222.222.222.

O protocolo RARP

O RARP (Rerverse ARP – ARP reverso) é utilizado, como o nome diz, de forma

contrária ao uso do ARP.

Ao invés de utilizar o IP para encontrar um MAC, ele utiliza o MAC para encontrar o

IP. Isso é útil em casos onde, por exemplo, um computador sem HD, por exemplo, é

ligado e não possui seu endereço IP, somente o MAC (que já vem gravado no

adaptador). Assim o computador pode usar este endereço para requisitar a um servidor

RARP externo um número IP.

Um servidor DHCP faz o mesmo trabalho, possuindo ainda inúmeras possibilidades de

configuração e facilidade na atualização das tabelas de endereços, onde o RARP é

ineficiente.

Page 20: Apostila de TCP-IP - Adriano Vieira-1

Apostila de TCP/IP – Camada de Enlace

20

Camada de Enlace

Esta é a camada mais baixa construída sobre software no TCP/IP. A denominação

“enlace” vem dos canais de comunicação que conectam computadores adjacentes, ao

longo do caminho da comunicação, ou seja, computadores “vizinhos”, fisicamente

falando. Um protocolo da camada de Enlace é usado para transportar um datagrama por

um enlace individual.

Antes de entrarmos em detalhes sobre essa camada, vamos localizá-la na pilha de

protocolos TCP/IP:

Camada Protocolos

5 - Aplicação HTTP, DNS, IMAP, POP3,

MSN, FTP, Telnet, VoIP, entre

outros.

4 - Transporte TCP, UDP, entre outros.

3 - Rede IP, ARP, RARP, ICMP, entre

outros.

2 - Enlace Ethernet, 802.11 (WiFi), entre

outros.

1 - Física Hardware utilizado para

comunicação entre dispositivos.

Na camada de Rede, o número IP identifica unicamente uma máquina na Internet. Na

camada de Enlace, por sua vez, existe outro identificador responsável por identificar

cada adaptador (placa de rede) em uma máquina: o endereço MAC (Media Access

Control – Controle de Acesso ao Meio).

Entrega direta e a importância do MAC

Na camada de Enlace, o endereçamento ocorre dentro de uma rede física, ou seja, onde

todos os computadores estão conectados em um mesmo barramento lógico. Assim,

dizemos que toda a entrega de informação é feita de forma direta. Os computadores

que compartilham uma rede física (pense em uma Lan House, por exemplo) utilizam o

MAC para realizar essa entrega direta dentro da mesma rede.

Como se pode perceber, esse endereço é importante porque identifica a máquina dentro

da rede física, a qual ela pertence. Quando uma máquina é ligada, ela já conhece seu

endereço MAC, isto porque este endereço é gravado na placa de rede do computador,

pelo próprio fabricante da placa. Hipoteticamente, as placas de rede possuem endereços

únicos, ou seja, não existe uma placa de rede no mundo com seu endereço MAC igual

ao de outra.

Page 21: Apostila de TCP-IP - Adriano Vieira-1

Apostila de TCP/IP – Camada de Enlace

21

O endereço MAC é utilizado para agregar valor as transmissões IP por meio de entregas

por enlace, ou seja, entre cada sistema que componha a rede. Na analogia do sistema de

correios, as agências – que são os switchs e roteadores na rede IP - não sabem o que

existe dentro da correspondência de Maria (e também não é do interesse delas saber).

Suas únicas preocupações são atualizar a correspondência de Maria mudando o

endereço da última agência pela qual a carta passou – ou seja, atualizando o endereço

MAC de sistema a sistema na rede. Assim, cada agência sabe de onde veio a

correspondência, pois terá dois endereços para se basear em caso de perda da

correspondência: o endereço de Maria (IP de origem) e o endereço da agência que lhe

repassou a carta (endereço MAC de origem), bem como terá o endereço de João (IP de

destino) e deverá decidir para qual agência deverá enviar a carta (MAC de destino).

MAC origem IP origem Dados

MAC destino IP destino

Exemplo básico de como é estruturado uma unidade de transmissão de datagrama.

Veja a figura acima. Trata-se de um exemplo básico de datagrama de camada de Enlace,

juntamente com os cabeçalhos IP origem e IP destino, da camada de Rede. Para

entender bem o que acontece quando enviamos um dado pela internet, vamos imaginar a

rede hipotética abaixo:

Note que a rede possui duas faixas diferentes de IP e que está dividida por um roteador,

formando duas redes físicas distintas. Note também que cada computador possui um

endereço IP e um MAC, associado ao seu adaptador. Por sua vez, o roteador possui dois

MACs e dois IP, cada par correspondendo a um adaptador do equipamento.

Vamos imaginar agora como aconteceria uma comunicação entre estas duas redes

físicas distintas. Para um datagrama ir de 111.111.111.111 até 222.222.222.222, ele

teria de ser enviado, primeiramente, para a interface do roteador 111.111.111.110.

Sendo assim, o endereço MAC de destino será, inicialmente, o endereço MAC do

adaptador correspondente a interface do roteador em 111.111.111.110. Mas como o

remetente descobre o endereço MAC da interface do roteador? Utilizando o ARP,

como vimos anteriormente. Veja abaixo este primeiro passo em detalhes:

Page 22: Apostila de TCP-IP - Adriano Vieira-1

Apostila de TCP/IP – Camada de Enlace

22

MAC origem: 74-29-9C-E8-FF-55 IP origem: 111.111.111.111 Dados

MAC destino: E6-E9-00-17-BB-4B IP destino: 222.222.222.222

VIVA! O datagrama foi transportado com sucesso para o roteador que interliga as duas

redes. O roteador analisa agora sua tabela de IPs, percebendo que pode entregar

diretamente o pacote à máquina de destino (cujo IP é 222.222.222.222), pois esta se

encontra conectada a um dos adaptadores pertencentes a ele. Sendo assim, o roteador

procura descobrir o endereço MAC da máquina de destino do pacote (utilizando do

ARP, lembre-se) e, quando o descobre, remonta o datagrama, agora contendo novos

endereços MAC de origem e destino. Desta forma:

MAC origem: 1A-23-F9-CD-06-9B IP origem: 111.111.111.111 Dados

MAC destino: 49-BD-D2-C7-56-2A IP destino: 222.222.222.222

E enfim a mensagem chega ao seu destino, a máquina cujo IP é 222.222.222.222. É

importante notar que o endereço IP de origem e o endereço IP de destino continuaram

intactos durante toda a comunicação, enquanto os MACs mudam a cada novo repasse

por enlace.

Dúvidas? Isso é normal... não deixe de retirar todas as suas dúvidas em aula. Lembre-

se: “quem pergunta é um tolo por 5 minutos. Quem não pergunta, pode permanecer tolo

para sempre”.

Page 23: Apostila de TCP-IP - Adriano Vieira-1

Apostila de TCP/IP – Camada Física

23

Camada Física

A Camada Física, na pilha de protocolos TCP/IP, é abordada por muitos autores.

Outros, no entanto, simplesmente não a adicionam na pilha de protocolos, deixando o

TCP/IP com quatro camadas somente. A razão disso é que esta camada consiste,

unicamente, nos equipamentos que propiciam a comunicação, ou seja, no hardware que

serve de motor ou guia à comunicação de dados.

Nesta apostila, não abordaremos a Camada Física. A área está mais voltada para a

disciplina de Arquitetura de Computadores.

Page 24: Apostila de TCP-IP - Adriano Vieira-1

Apostila de TCP/IP – Camada Física

24

Bibliografias

KUROSE, James; ROSS, Keith . Redes de Computadores e a Internet 3ª Edição. São

Paulo. Pearson Education, 2006.

RNP. Arquitetura e Protocolos de Rede TCP/IP. Rio de Janeiro. Escola Superior de

Redes.