Camada de Transporte: mudanças entre as edições

De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
Linha 76: Linha 76:
O '''protocolo TCP''' (RFC 793), como o UDP, também oferece a '''multiplexação/demultiplexação de aplicações''' através das portas e o mecanismo de '''detecção de erros'''. A grande diferença é que o TCP é um protocolo '''orientado a conexão''' e com '''transferência garantida''', onde os dois processos devem acordar entre eles uma abertura de conexão para que os dados possam ser transferidos. Além destas características, o TCP integra ainda um serviço de '''controle de fluxo''', que assegura que nenhum dos lados da comunicação envie pacotes rápido demais, pois uma aplicação em um lado pode não conseguir processar a informação na velocidade que está recebendo, e um serviço de '''controle de congestionamento''' ajuda a prevenir congestionamentos na rede.
O '''protocolo TCP''' (RFC 793), como o UDP, também oferece a '''multiplexação/demultiplexação de aplicações''' através das portas e o mecanismo de '''detecção de erros'''. A grande diferença é que o TCP é um protocolo '''orientado a conexão''' e com '''transferência garantida''', onde os dois processos devem acordar entre eles uma abertura de conexão para que os dados possam ser transferidos. Além destas características, o TCP integra ainda um serviço de '''controle de fluxo''', que assegura que nenhum dos lados da comunicação envie pacotes rápido demais, pois uma aplicação em um lado pode não conseguir processar a informação na velocidade que está recebendo, e um serviço de '''controle de congestionamento''' ajuda a prevenir congestionamentos na rede.


;Conexão TCP: Uma '''conexão TCP''' é uma conexão '''full-duplex''' (isto é, em ambos os sentidos e simultânea) entre o ''host'' emissor e o ''host'' receptor. Uma vez estabelecida à conexão os dois processos podem trocar informações.  
===Conexão TCP===
Uma '''conexão TCP''' é uma conexão '''full-duplex''' (isto é, em ambos os sentidos e simultânea) entre o ''host'' emissor e o ''host'' receptor.  
Uma vez estabelecida à conexão os dois processos podem trocar informações. O processo cliente passa o bloco de dados através da '''porta''' apropriada. O TCP então manipula estes dados, dirigindo para o '''''buffer'' de envio'''. Os dados são então '''fragmentados''' e encapsulados na forma de '''segmentos'''. Os segmentos, por sua vez, são passados a camada rede onde eles são separadamente encapsulados em '''datagramas IP''', que são enviados através da rede. Quando o TCP do receptor recebe os dados, os mesmos são recebidos no '''''buffer'' de recepção'''. A aplicação no lado do receptor então lê os dados a partir deste ''buffer''.
 


O cliente solicita a '''abertura de conexão''' em uma '''porta bem conhecida do servidor''' (por exemplo, porta 80 de um servidor Web) e informa a '''porta origem''' para receber as respostas, além de ajustar outros parâmetros para implementar a '''transferência garantida'''.
O cliente solicita a '''abertura de conexão''' em uma '''porta bem conhecida do servidor''' (por exemplo, porta 80 de um servidor Web) e informa a '''porta origem''' para receber as respostas, além de ajustar outros parâmetros para implementar a '''transferência garantida'''.

Edição das 20h08min de 20 de março de 2015

Camada de Transporte [1]

A Camada de Transporte está situada entre a camada aplicação e a camada rede da Arquitetura Internet e tem a função de prover um canal de comunicação lógico fim-a-fim entre os processos de aplicação rodando em diferentes computadores.

Os dois Protocolos de Transporte da Internet são o TCP e o UDP:

TCP
Oferece um serviço orientado a conexão, com transmissão de dados garantida ou livre de erros.
UDP
Oferece um serviço não orientado a conexão, com transmissão de dados tipo melhor esforço, portanto sujeita a erros.

Multiplexação/demultiplexação de aplicações através de portas

A camada rede e o protocolo IP são responsáveis por entregar datagramas, ou pacotes IP, de um host a outro host, identificados pelos endereços IP origem e destino.

Como em cada host podem haver vários processos de aplicação rodando, a camada transporte, com os protocolos TCP e UDP, são responsáveis por entregar pacotes, chamados segmentos, de um processo rodando em um host origem a outro processo rodando no host destino, identificados pelos números de porta origem e destino. Este serviço é chamado multiplexação / demultiplexação de aplicações.

Exemplo 1
Cliente e servidor HTTP
Um servidor de aplicações espera conexões em portas bem conhecidas. Por exemplo, um servidor Web utiliza a porta 80 para aceitar conexões. Quando um navegador Web inicia uma seção, ele envia ao servidor um segmento TCP com porta destino 80 e coloca como número de porta origem uma porta que não esteja sendo utilizada no host cliente, por exemplo, a porta 18123. A porta 18123 será onde o cliente vai esperar a resposta do servidor. Quando o servidor recebe o segmento, ele verifica que o mesmo é endereçado a porta 80 e então sabe que se trata da aplicação Web. No envio da resposta o servidor inverte as portas origem e destino. Enviando ao cliente um segmento com porta destino 18123 e origem 80.

Portas reservadas e portas de uso geral

  • Portas de 0 a 1023: Portas reservadas, utilizadas pela aplicações bem conhecidas.
  • Portas de 1024 a 65535: Portas de uso geral.
Algumas portas reservadas
Porta Transporte Aplicação
13 TCP Daytime
13 UDP Daytime
20 TCP FTP [Default Data]
21 TCP FTP [Control]
22 TCP SSH
23 TCP Telnet
25 TCP SMTP (email)
53 UDP DNS
80 TCP Web HTTP
110 TCP POP3
443 TCP HTTPS
Exemplo 2
Três clientes e um servidor Web
No host A temos dois processos cliente Web acessando o servidor C (porta 80), cada um identificado por uma porta origem (1028 e 1029, respectivamente). No host B temos outro processo cliente (porta 1155) está acessando o servidor C (porta 80). O servidor encaminha as respostas ao cliente identificando o IP e a porta correspondente.

Protocolo UDP

O protocolo UDP (RFC 768) provê um serviço de transporte não orientado a conexão, ou melhor esforço, estendendo o serviço oferecido pelo IP com a multiplexação e demultiplexação de aplicações e um mecanismo de detecção de erros.

Características do UDP:

  • Não orientado a conexão, não introduzindo, portanto, atrasos para esta tarefa.
  • Tem pequeno overhead (informações de controle) no cabeçalho.
  • Não provê mecanismos para controle de fluxo, controle de congestionamento, garantias temporais ou de banda mínima.

O formato do pacote UDP é bastante simples, além dos campos reservados para as portas de origem e destino, há um campo que indica o comprimento do segmento (length) e o checksum, o qual é utilizado para o detecção de erros no segmento. O campo de dados da aplicação é preenchido com os dados da aplicação, por exemplo, para aplicações de áudio o campo é preenchido com as amostras de aúdio.

0       7 8     15 16    23 24     31  
+--------+--------+--------+--------+ 
|  Source Port    | Destination Port| 
+--------+--------+--------+--------+ 
|     Length      |    Checksum     | 
+--------+--------+--------+--------+ 
|          data octets ...
+---------------- ...
    User Datagram Header Format

Protocolo TCP

O protocolo TCP (RFC 793), como o UDP, também oferece a multiplexação/demultiplexação de aplicações através das portas e o mecanismo de detecção de erros. A grande diferença é que o TCP é um protocolo orientado a conexão e com transferência garantida, onde os dois processos devem acordar entre eles uma abertura de conexão para que os dados possam ser transferidos. Além destas características, o TCP integra ainda um serviço de controle de fluxo, que assegura que nenhum dos lados da comunicação envie pacotes rápido demais, pois uma aplicação em um lado pode não conseguir processar a informação na velocidade que está recebendo, e um serviço de controle de congestionamento ajuda a prevenir congestionamentos na rede.

Conexão TCP

Uma conexão TCP é uma conexão full-duplex (isto é, em ambos os sentidos e simultânea) entre o host emissor e o host receptor. Uma vez estabelecida à conexão os dois processos podem trocar informações. O processo cliente passa o bloco de dados através da porta apropriada. O TCP então manipula estes dados, dirigindo para o buffer de envio. Os dados são então fragmentados e encapsulados na forma de segmentos. Os segmentos, por sua vez, são passados a camada rede onde eles são separadamente encapsulados em datagramas IP, que são enviados através da rede. Quando o TCP do receptor recebe os dados, os mesmos são recebidos no buffer de recepção. A aplicação no lado do receptor então lê os dados a partir deste buffer.


O cliente solicita a abertura de conexão em uma porta bem conhecida do servidor (por exemplo, porta 80 de um servidor Web) e informa a porta origem para receber as respostas, além de ajustar outros parâmetros para implementar a transferência garantida.

Referências

  1. KUROSE, J.F; ROSS K. W. Redes de Computadores e a Internet: Uma abordagem top-down, São Paulo: Pearson, 2010.

--Evandro.cantu (discussão) 10h33min de 12 de junho de 2014 (BRT)