Vous êtes sur la page 1sur 24
Apostila de TCP/IP
Apostila de TCP/IP
Apostila de TCP/IP Autor: Adriano Vieira A obra Apostila de TCP/IP, de Adriano Vieira, foi licenciada

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 emaildoadrianovieira@gmail.com.

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

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 é

Esta apostila foi produzida para que você

o único propósito

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.

visão mais abrangente acerca do funcionamento da Internet. Os textos aqui abordados foram escritos da forma

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

Conteúdo

Apostila de TCP/IP - Introdução

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

Introdução

Apostila de TCP/IP - 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!

Camada de Aplicação

Apostila de TCP/IP 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.

O protocolo HTTP

Apostila de TCP/IP Camada de Aplicação

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.

Os dois programas conversam através de mensagens HTTP. Cliente HTTP Resposta HTTP Requisição HTTP Servidor HTTP

Cliente HTTP

Resposta HTTP

através de mensagens HTTP. Cliente HTTP Resposta HTTP Requisição HTTP Servidor HTTP Quando digitamos em nosso
através de mensagens HTTP. Cliente HTTP Resposta HTTP Requisição HTTP Servidor HTTP Quando digitamos em nosso

Requisição HTTP

mensagens HTTP. Cliente HTTP Resposta HTTP Requisição HTTP Servidor HTTP Quando digitamos em nosso browser um

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.

(por exemplo, o banco e o cliente) podem descriptografá-la. URL contendo o endereço de um banco

URL contendo o endereço de um banco utilizando HTTPS

O DNS

Apostila de TCP/IP Camada de Aplicação

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.

que são 64.233.163.104 e 200.152.168.178, respectivamente. Acessando o site do Google somente utilizando seu endereço

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

Apostila de TCP/IP Camada de Aplicação

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:

ao nome requisitado. A figura abaixo exemplifica o processo: Cliente DNS Resposta DNS (64.233.163.104) Requisição DNS

Cliente DNS

Resposta DNS (64.233.163.104)

o processo: Cliente DNS Resposta DNS (64.233.163.104) Requisição DNS (www.google.com) Servidor DNS É óbvio que
o processo: Cliente DNS Resposta DNS (64.233.163.104) Requisição DNS (www.google.com) Servidor DNS É óbvio que

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

DNS (64.233.163.104) Requisição DNS (www.google.com) Servidor DNS É óbvio que existe muito mais por trás do

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:

a comunicação “ Real ” e “ Lógica ” pelo TCP/IP: Pilha TCP/IP Pilha TCP/IP Aplicação
Pilha TCP/IP Pilha TCP/IP Aplicação Aplicação Transporte Transporte Rede Rede Enlace Enlace Física Física
Pilha TCP/IP
Pilha TCP/IP
Aplicação
Aplicação
Transporte
Transporte
Rede
Rede
Enlace
Enlace
Física
Física
TCP/IP Pilha TCP/IP Aplicação Aplicação Transporte Transporte Rede Rede Enlace Enlace Física Física 9

Apostila de TCP/IP Camada de Aplicação

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.

Camada de Transporte

Apostila de TCP/IP 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.

de email, vídeos sendo baixados da internet, um cliente DNS, etc.  DNS  Web Browser
de email, vídeos sendo baixados da internet, um cliente DNS, etc.  DNS  Web Browser

DNS

Web Browser

de email, vídeos sendo baixados da internet, um cliente DNS, etc.  DNS  Web Browser

MSN

EmpresaTalk

Apostila de TCP/IP Camada de Transporte

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

um IP identifica

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

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

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.

inicialmente, a porta 1863; Já o DNS utiliza a porta 53. DNS (53) Web Browser (80)

DNS (53)

Web Browser (80)a porta 1863; Já o DNS utiliza a porta 53. DNS (53) EmpresaTalk (<número da porta>)

EmpresaTalk (<número da porta>)Já o DNS utiliza a porta 53. DNS (53) Web Browser (80) MSN (1863) Sendo assim,

MSN (1863)

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.

Apostila de TCP/IP Camada de Transporte

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

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

serão utilizadas)

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.

Apostila de TCP/IP Camada de Transporte

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

Camada de Rede

Apostila de TCP/IP 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)

Apostila de TCP/IP Camada de Rede

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.

Apostila de TCP/IP Camada de Rede

Casa de Maria Casa de João Visão fim-a-fim de Maria (camada de Transporte e Rede)
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.

O protocolo ARP

Apostila de TCP/IP Camada de Rede

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:

deste protocolo, veja a rede mostrada na figura abaixo: No exemplo acima, cada equipamento de rede

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:

Apostila de TCP/IP Camada de Rede

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)

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:

Humm

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.

Camada de Enlace

Apostila de TCP/IP 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.

Apostila de TCP/IP Camada de Enlace

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

MAC destino

IP origem

IP destino

Dados

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:

pela internet, vamos imaginar a rede hipotética abaixo: Note que a rede possui duas faixas diferentes

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:

Apostila de TCP/IP Camada de Enlace

MAC origem:

MAC destino:

74-29-9C-E8-FF-55

E6-E9-00-17-BB-4B

IP origem:

IP destino:

111.111.111.111

222.222.222.222

Dados

destino: 111.111.111.111 222.222.222.222 Dados VIVA! O datagrama foi transportado com sucesso para o

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:

MAC destino:

1A-23-F9-CD-06-9B

49-BD-D2-C7-56-2A

IP origem:

IP destino:

111.111.111.111

222.222.222.222

Dados

destino: 111.111.111.111 222.222.222.222 Dados E enfim a mensagem chega ao seu destino, a máquina cujo IP

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

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

não deixe de retirar todas as suas dúvidas em aula. Lembre-

para sempre”.

Camada Física

Apostila de TCP/IP 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.

Bibliografias

Apostila de TCP/IP Camada Física

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.