Camada de Transporte: mudanças entre as edições
Linha 1: | Linha 1: | ||
=Camada de Transporte | =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. | 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''': | ||
;[[Protocolo 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. | ||
;[[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. | ;[[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 '''''cheksum''''', como será visto na sequência. | |||
==Multiplexação/demultiplexação de aplicações através de portas== | ==Multiplexação/demultiplexação de aplicações através de portas== | ||
Linha 58: | Linha 60: | ||
#É possível que o host A e o host B acessem o servidor C utilizando a mesma porta origem? Explique. | #É 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. | #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 mecanismo de '''''checksum''''' permite a '''detecção de erros''' nos dados transmitidos em um '''enlace de comunicação'''. | |||
Exemplificando para o mecanismo de ''checksum'' usado pelo TCP e UDP, o emissor faz o complemento de 1 da soma de todos as palavras de 16 bits do pacote e coloca o resultado no campo ''cheksum'' <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>. | |||
Por exemplo, suponha que temos três palavras de 16 bits sendo transmitidas: | |||
0110011001100110 | |||
0101010101010101 | |||
0000111100001111 | |||
A soma será | |||
0110011001100110 | |||
0101010101010101 | |||
+________________ | |||
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, 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. | |||
==Referências== | ==Referências== |
Edição das 13h39min de 12 de maio de 2015
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 cheksum, como será visto na sequência.
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
- É 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 mecanismo de checksum permite a detecção de erros nos dados transmitidos em um enlace de comunicação.
Exemplificando para o mecanismo de checksum usado pelo TCP e UDP, o emissor faz o complemento de 1 da soma de todos as palavras de 16 bits do pacote e coloca o resultado no campo cheksum [1].
Por exemplo, suponha que temos três palavras de 16 bits sendo transmitidas:
0110011001100110 0101010101010101 0000111100001111
A soma será
0110011001100110 0101010101010101 +________________ 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, 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.
Referências
--Evandro.cantu (discussão) 10h33min de 12 de junho de 2014 (BRT)