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

De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
 
(31 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
=Protocolos de Transporte da Internet=
=Camada de Transporte=


Os '''Protocolos de Transporte''' da Internet estão situados 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.
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 <ref name="KUROSE">KUROSE, J.F; ROSS K. W. Redes de Computadores e a Internet: Uma abordagem ''top-down'', São Paulo: Pearson, 2010.</ref>.


Os dois Protocolos de Transporte da Internet são o '''TCP''' e o '''UDP''':
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.
;[[Protocolo 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.
;[[Protocolo 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==
Apesar da diferença nos serviços oferecidos pelo TCP e UDP, ambos implementam um serviço de '''multiplexação/demultiplexação de aplicações''' e um serviço de '''checagem de erros''' através do método de '''''[[Checksum]]'''''.
 
==Suporte a serviços comuns para as aplicações==
 
O objetivo das redes de pacotes é oferecer um suporte de comunicação para que as aplicações rodando em dois computadores remotos possam trocar informações.
 
Intuitivamente, podemos ver a rede como provendo um '''canal lógico de comunicação''' para que os processos de aplicação cliente e servidor possam se comunicar. Para usar este canal de comunicação, os programas de aplicação cliente enviam seus pedidos através de uma '''porta''', que conecta o cliente ao servidor, e através da qual ele espera a resposta do serviço é requisitado.


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.
[[Arquivo:CanalLogicoTransporte.png]]


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.
Dois tipos comuns de serviço solicitado pelas aplicações à rede são:
*Serviço tipo '''pedido/resposta''' (''request/reply'');
*Serviço tipo '''fluxo de áudio/vídeo''' (''audio/video streaming'').


;Exemplo 1: Cliente e servidor HTTP
A '''paginação na Web''' é um exemplo de serviço tipo '''pedido/resposta''', onde um processo cliente solicita uma informação e um processo servidor fornece a informação solicitada. Não há restrições de tempo entre o pedido e a resposta, entretanto, é necessário que a informação transmitida seja livre de erros.
: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.
:[[Arquivo:PortasTCP.png]]


;Portas reservadas e portas de uso geral: Definidas na RFC 1700.
Uma '''conversa telefônica''' via Internet é um exemplo de '''fluxo de áudio''', neste caso há restrições temporais na transmissão, por outro lado, um pequeno silêncio ocasionado por um erro ou ruído pode não ser um problema grave para o entendimento geral da conversa.
*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:
[[Arquivo:ArquiteturaInternet.jpeg]] -> [[Arquivo:CamadasInternet2.jpeg]]
13  TCP daytime  Daytime
13  UDP daytime  Daytime
20  TCP ftp-data File Transfer [Default Data]
21  TCP ftp File Transfer [Control]  
22  TCP ssh      SSH Remote Login Protocol
23  TCP telnet  Telnet
25  TCP smtp    Simple Mail Transfer
53  UDP domain  Domain Name Server
80  TCP www-http World Wide Web HTTP
110 TCP pop3    Post Office Protocol - Ver 3
443 TCP https    http protocol over TLS/SSL


;Exemplo 2: Três clientes e um servidor Web
Para estes dois tipos de requisições de serviços a '''Internet''' dispõem de dois '''protocolos de transporte''':
: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.
*'''TCP''' (''Transmission Control Protocol''), que oferece serviço orientado a conexão e com transmissão de dados garantida;
:[[Arquivo:PortasTCP2.png]]
*'''UDP''' (''User Datagram Protocol''), que oferece serviço sem conexão tipo '''melhor esforço''' (''best effort'').  


==Protocolo UDP==
As aplicações conhecidas como o telnet, correio eletrônico, transferência de arquivos e WWW usam o TCP. Outras aplicações usam o UDP, como o DNS (Domain Name System) e aplicações multimídia como voz sobre Internet e aplicações de áudio e vídeo<ref name="KUROSE">KUROSE, J.F; ROSS K. W. Redes de Computadores e a Internet: Uma abordagem ''top-down'', São Paulo: Pearson, 2010.</ref>.
O '''protocolo UDP''' provê um serviço de transporte '''não orientado a conexão''', ou '''melhor esforço'''.


Além das informações do '''IP origem''' e '''IP destino''' e outras informações da '''camada rede''', cada pacote entregue pelo '''UDP''' acrescenta  a identificação da '''porta origem''' e '''porta destino''' e um um campo de '''''checksum''''' que implementa um '''mecanismo de detecção de erros'''.
Quando uma aplicação usa '''TCP''' o cliente e o servidor trocam pacotes de controle entre si antes de enviarem os pacotes de dados. Isto é chamado de procedimento de '''estabelecimento de conexão''' (''handshaking''), onde se estabelecem os parâmetros para a comunicação. Uma vez concluído o ''handshaking'' a conexão é dita estabelecida e os dois sistemas terminais podem trocar dados. O serviço de '''transferência garantida''', que assegura que os dados trocados são livres de erro, o que é conseguido a partir de '''temporizações''', '''mensagens de reconhecimento''' e '''retransmissão de pacotes'''. Por exemplo, quando um sistema terminal B recebe um pacote de A, ele envia um reconhecimento; quando o sistema terminal A recebe o reconhecimento ele sabe que o pacote que ele enviou foi corretamente recebido; caso A não recebe confirmação, ele assume que o pacote não foi recebido por B e retransmite o pacote.  


;Cabeçalho do protocolo UDP:
Com o '''UDP''' não há ''handshaking'', portanto, é '''não orientado a conexexão'''. Quando um lado de uma aplicação quer enviar pacotes ao outro lado ele simplesmente envia os pacotes. Como o '''serviço é não garantido''', também não há reconhecimento, de forma que a fonte nunca tem certeza que o pacote foi recebido pelo destinatário. Como o serviço é mais simples, os dados podem ser enviados mais rapidamente.
[[Arquivo:PacoteUDP.png]]


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


Permite a '''detecção de erros''' nos dados transmitidos. Para isto, o emissor UDP faz o complemento de 1 da soma de todos as palavras de 16 bits do pacote e coloca o resultado no campo ''cheksum''.  
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.


Por exemplo, suponha que temos três palavras de 16 bits sendo transmitidas:
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.


  0110011001100110
===Exemplo 1: Cliente e servidor HTTP===
  0101010101010101
: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.
  0000111100001111
:[[Arquivo:PortasTCP.png]]


A soma será
===Portas reservadas e portas de uso geral===
  0110011001100110
*Portas de 0 a 1023: '''Portas reservadas''', utilizadas pela aplicações bem conhecidas.
  0101010101010101
*Portas de 1024 a 65535: '''Portas de uso geral'''.
+________________
  1011101110111011
Adicionando a terceira palavra a esta soma
  1011101110111011
  0000111100001111
+________________
  1100101011001010


O '''complemento de 1''' é obtido invertendo cada bit 1 por 0 e vice-versa. Desta forma o complemento da soma será 0011010100110101 o qual será o cheksum. No lado do receptor UDP, todas as palavras de 16 bits recebidas são adicionadas, incluindo o cheksum. Se não houve erros na transmissão, a soma será 1111111111111111. Se um dos bits for 0, então é sabido que houve erros.
;Algumas portas reservadas:
{| border=1
|-
| 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
|}


==Protocolo TCP==
*[http://pt.wikipedia.org/wiki/Lista_de_portas_de_protocolos Wikipédia: Lista de portas de protocolos]
O '''protocolo TCP''', como o UDP, também oferece a '''multiplexação/demulti-plexaçã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.  
===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.
:[[Arquivo:PortasTCP2.png]]


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'''.
;Perguntas:
#É possível que o host A e o host B acessem o servidor C utilizando a mesma porta origem? Explique.
#Liste quantos e quais campos são necessários na estrutura de dados que o servidor deve manter para identificar corretamente cada um dos processos clientes que acessam cada um dos serviços que ele oferece.


==Checksum==


O '''''[[Checksum]]''''' é serviço de '''checagem de erros''' em mensagens transmitidas na forma de pacotes.


==Referências==
<references />


----
----
;Autoria: Evandro Cantú / IFPR - Câmpus Foz do Iguaçu
--[[Usuário:Evandro.cantu|Evandro.cantu]] ([[Usuário Discussão:Evandro.cantu|discussão]]) 10h33min de 12 de junho de 2014 (BRT)
----
----


[[Categoria:Redes de Computadores]]
[[Categoria:Redes de Computadores]]

Edição atual tal como às 19h57min de 19 de fevereiro de 2019

Camada de Transporte

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 [1].

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

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

Apesar da diferença nos serviços oferecidos pelo TCP e UDP, ambos implementam um serviço de multiplexação/demultiplexação de aplicações e um serviço de checagem de erros através do método de Checksum.

Suporte a serviços comuns para as aplicações

O objetivo das redes de pacotes é oferecer um suporte de comunicação para que as aplicações rodando em dois computadores remotos possam trocar informações.

Intuitivamente, podemos ver a rede como provendo um canal lógico de comunicação para que os processos de aplicação cliente e servidor possam se comunicar. Para usar este canal de comunicação, os programas de aplicação cliente enviam seus pedidos através de uma porta, que conecta o cliente ao servidor, e através da qual ele espera a resposta do serviço é requisitado.

Dois tipos comuns de serviço solicitado pelas aplicações à rede são:

  • Serviço tipo pedido/resposta (request/reply);
  • Serviço tipo fluxo de áudio/vídeo (audio/video streaming).

A paginação na Web é um exemplo de serviço tipo pedido/resposta, onde um processo cliente solicita uma informação e um processo servidor fornece a informação solicitada. Não há restrições de tempo entre o pedido e a resposta, entretanto, é necessário que a informação transmitida seja livre de erros.

Uma conversa telefônica via Internet é um exemplo de fluxo de áudio, neste caso há restrições temporais na transmissão, por outro lado, um pequeno silêncio ocasionado por um erro ou ruído pode não ser um problema grave para o entendimento geral da conversa.

->

Para estes dois tipos de requisições de serviços a Internet dispõem de dois protocolos de transporte:

  • TCP (Transmission Control Protocol), que oferece serviço orientado a conexão e com transmissão de dados garantida;
  • UDP (User Datagram Protocol), que oferece serviço sem conexão tipo melhor esforço (best effort).

As aplicações conhecidas como o telnet, correio eletrônico, transferência de arquivos e WWW usam o TCP. Outras aplicações usam o UDP, como o DNS (Domain Name System) e aplicações multimídia como voz sobre Internet e aplicações de áudio e vídeo[1].

Quando uma aplicação usa TCP o cliente e o servidor trocam pacotes de controle entre si antes de enviarem os pacotes de dados. Isto é chamado de procedimento de estabelecimento de conexão (handshaking), onde se estabelecem os parâmetros para a comunicação. Uma vez concluído o handshaking a conexão é dita estabelecida e os dois sistemas terminais podem trocar dados. O serviço de transferência garantida, que assegura que os dados trocados são livres de erro, o que é conseguido a partir de temporizações, mensagens de reconhecimento e retransmissão de pacotes. Por exemplo, quando um sistema terminal B recebe um pacote de A, ele envia um reconhecimento; quando o sistema terminal A recebe o reconhecimento ele sabe que o pacote que ele enviou foi corretamente recebido; caso A não recebe confirmação, ele assume que o pacote não foi recebido por B e retransmite o pacote.

Com o UDP não há handshaking, portanto, é não orientado a conexexão. Quando um lado de uma aplicação quer enviar pacotes ao outro lado ele simplesmente envia os pacotes. Como o serviço é não garantido, também não há reconhecimento, de forma que a fonte nunca tem certeza que o pacote foi recebido pelo destinatário. Como o serviço é mais simples, os dados podem ser enviados mais rapidamente.

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.
Perguntas
  1. É possível que o host A e o host B acessem o servidor C utilizando a mesma porta origem? Explique.
  2. Liste quantos e quais campos são necessários na estrutura de dados que o servidor deve manter para identificar corretamente cada um dos processos clientes que acessam cada um dos serviços que ele oferece.

Checksum

O Checksum é serviço de checagem de erros em mensagens transmitidas na forma de pacotes.

Referências

  1. 1,0 1,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)