SlideShare ist ein Scribd-Unternehmen logo
1 von 80
Downloaden Sie, um offline zu lesen
23.1
Capítulo 23
Comunicação entre
Processos:
UDP e TCP
Prof. Rodrigo Ronner
rodrigoronner@gmail.com
rodrigoronner.blogspot.com
Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
23.2
23-1 Comunicação entre Processos
A camada de transporte é responsável pelo processo a processo de
entrega a entrega de um pacote, que faz parte de uma mensagem, de
um processo para outro. Dois processos se comunicam em uma
relação cliente / servidor, como veremos :
Paradigma Cliente/Servidor
Multiplexação e Demultiplexação
Serviços sem conexão Versus Orientando a Conexão
Confiável Versus Não-confiável
Três Protocolos
Topicos Discutidos:
23.3
A camada de transporte é responsável
pela comunicação entre processos.
Note
23.4
Figure 23.1 Tipos de comunicação de dados
23.5
23-1 Paradigma Cliente/Servidor
• Embora existam várias maneiras de se realizar a comunicação entre processos, a mais comum
delas é por meio do paradigma cliente/servidor.
• Um processo no host local, denominado cliente, solicita serviços a outro processo, normalmente
localizado no host remoto, denominado servidor.
• Ambos os processos (cliente e servidor) têm o mesmo nome. Por exemplo, para obtermos o dia e
horário de uma máquina remota, precisamos de um processo cliente denominado Daytime, em
execução no host local e um processo servidor Daytame, em execução em uma máquina remota.
• Os sistemas operacionais atuais oferecem suporte tanto a ambientes multiusuários como
multiprogramação.
• Um computador remoto pode executar vários programas servidor simultaneamente, da mesma
forma que computadores locais podem executar um ou mais programas clientes.
1 – Host Local
2 – Processo Local
3 – Host remoto
4 – Processo remoto
23.6
23-1 Endereçamento
• Toda vez que precisamos transmitir algo para um destino específico entre vários existentes,
necessitaremos de um endereço.
• Na camada de enlace de dados, utilizaremos o endereço MAC para escolher um nó entre vários
nós.
• Na camada de Rede, utilizaremos o endereço IP para escolher um host entre milhões. Um
datagrama na camadada de Rede precisa de um endereço IP de destino para sua entrega e de
um endereço IP de origem para a resposta do destino
• Na camada de transporte, utilizaremos o endereço de camada de transporte, denominado
número de porta , para escolher entre vários processos que estão em execução no host de
destino. O número da porta de destino é necessário para entregar; o número de porta de origem
é necessário para resposta.
• Um computador remoto pode executar vários programas servidor simultaneamente, da mesma
forma que computadores locais podem executar um ou mais programas clientes.
1 – Host Local
2 – Processo Local
3 – Host remoto
4 – Processo remoto
23.7
Figure 23.2 Port numbers
23.8
Figure 23.3 Endereço IP versus números de portas
23.9
Figure 23.4 IANA Faixa
23.10
23-5 Endereços Socket
• Para se estabelecer uma conexão virtual que permita a comunicação entre processos finais,
necessitamos de dois identificadores, o endereços IP e o número da porta.
• A combinação entre um endereço IP e um número de porta é conhecida como endereço socket.
• O endereço socket no cliente define o processo cliente de forma exclusiva, da mesma forma que
o endereço socket no servidor estabelece o processo servidor de modo exclusivo(ver a figura
23.5)
• Os protocolos da camada de transporte precisa de um par de endereços socket: o endereço
socket no cliente e o endereço socket no servidor.
• Essas informações fazem parte do cabeçalho IP e do cabeçalho do protocolo de camada de
transporte.
• O cabeçalho IP contém os endereços IP; o cabeçalho UDP ou TCP contém os números das
portas.
23.11
23-1 Multiplexação e Demultiplexação
• Multiplexação
No lado do emissor, podem existir vários processos que precisem transmitir
pacotes. Entretanto, há somente um protocolo de camada de transporte em
execução em dado instante.
Trata-se de uma relação um vários-para-um e que requer a multiplexação.
• Demultiplexação
No lado receptor, a relação é de um-para-vários e requer demultiplexação. A
camada de transporte recebe os datagramas da camada de rede. Após verificação
de erros e a eliminação do cabeçalho, a camada de transporte entrega cada
mensagem para o processo usuário apropriado baseado no número de portas.
23.12
Figure 23.6 Multiplexação e Demultiplexação
23.13
Figure 23.7 Error control
23.14
Figure 23.8 Position of UDP, TCP, and SCTP in TCP/IP suite
23.15
23-2 USER DATAGRAM PROTOCOL (UDP)
O User Datagram Protocol (UDP) é chamada de sem conexão,
protocolo de transporte não confiável. Ele não adiciona nenhum
controle adicional aos serviços de entrega IP, exceto pelo fato de
implementar a comunicação entre processos, em vez da comunicação
entre hosts. Da mesma forma, a verificação de erros é implementada
de forma muito limitada.
Portas conhecidas no UDP
Datagramas de Usuários
Checksum
Operação do UDP
Uso do UDP
Topicos Discutidos:
:
23.16
Table 23.1 Well-known ports used with UDP
23.17
• Em UNIX, as portas conhecidas são armazenados em um arquivo
chamado / etc / services.
• Cada linha neste arquivo dá o nome do servidor e o número de porta
conhecido.
• Podemos usar o grep utilitário para extrair a linha correspondente à
aplicação desejada.
• O seguinte mostra a porta para o FTP. Note-se que FTP pode usar a
porta 21 com UDP ou TCP.
Example 23.1
23.18
Example 23.1 (continued)
SNMP usa dois números de porta (161 e 162), cada um para uma finalidade
diferente,
23.19
23-2 Datagramas de Usuário
Os pacotes UDP, denominados datagramas de usuário, possuem um cabeçalho de tamanho fixo 8
bytes.
Portas origem: Esse campo especifica o número da porta usada pelo processo em execução no host
de origem.
Ele tem 16 bits de comprimento, significando que o número da porta pode variar de 0 a 65535.
Portas destino: Esse campo especifica o número da porta usado pelo processo em execução no host
de destino. Ele também tem 16 bits de comprimento.
• Se o host de destino for um servidor (um cliente transmitindo uma solicitação), o número da
porta, na maioria dos casos, é um número de porta conhecido.
• Se o host de destino for um cliente (um servidor transmitindo sua resposta), o número da
porta, na maioria das vezes, é um número de porta efêmero.
Comprimento: Esse campo de 16 bits define o comprimento total de um datagrama UDP,
compreendendo cabeçalho mais dados. Os 16 bits podem definir um comprimento total entre 0 a 65535
bytes. Entretanto, o comprimento total deve ser menos, pois um datagrama UDP deve ser repassado
em um datagrama IP de comprimento total igual a 65535 bytes.
Checksum: Esse campo de 16 bits é usado para detectar erros na transmissão de datagrama UDP
(Cabeçalho mais dados).
23.20
Figure 23.9 Formato de um datagrama UDP
23.21
Comprimento de um datagrama UDP=
Comprimento total IP – Comprimento do
cabeçalho IP
Note
 Serviços sem conexão: Isso significa que cada
datagrama de usuário enviado pelo UDP é um
datagrama independente. Não existe nenhuma relação
entre os diferentes datagramas de usuário, mesmo se
eles forem provenientes do mesmo processo de origem
e tiverem o mesmo programa de destino.
• Os datagramas não são enumerados;
• Não existe mecanismo para estabelecer e/ou
terminar uma conexão virtual, ao contrário do que
acontece com o TCP.
23.22
Operação do UDP
 Controle de Fluxo e de erros: UDP é um protocolo de transporte muitos
simples e não confiável. Não implementa controle de fluxo e, portanto,
nenhum mecanismo de janelamento. O Receptor pode ser inundado com
um número excessivo de mensagens que chegam a ele.
• Não implementa controle de erros exceto checksum, Isso significa que
o emissor não sabe se uma mensagem foi perdida ou duplicada.
• Quando receptor detecta um erro por meio do cheksum, o datagrama
de usuário é descartado de maneira imperceptível.
• A ausência de controle de fluxo e de controle de erros significa
que um processo de aplicação usando UDP deve implementar esses
mecanismos.
23.23
Operação do UDP
 Encapsulamento e Desencapsulamento: Para transmitir uma
mensagem de um processo a outro, o protocolo UDP encapsula e
desencapsula mensagens em um datagrama IP.
 Formação de Filas: Quando um processo no lado cliente é iniciado, este
solicita para o sistema operacional um número de porta. Algumas
implementações criam tanto uma fila de chegada como uma de saída
associada a cada processo, outras criam apenas uma fila de chegada
associada a cada processo.
• Mesmo que um processo quiser se comunicar com vários processos,
ele obterá apenas um número de porta e, finalmente, uma fila de
chegada e outra de saída.
• As filas abertas pelo cliente são, na maioria dos casos, identificadas
pelos números de porta efêmeros.
• As filas funcionam enquanto o processo está em execução. Quando
processo termina, as filas são desalocadas da memória.
23.24
Operação do UDP
23.25
Figure 23.12 Queues in UDP
 O UDP é adequado para um processo que requeira comunicação solicitação-
resposta simples com pouca preocupação com controle de erros e de fluxo.
 O UDP é adequadp para um processo que implemente mecanismos internos
de controle de fluxo e de erros. Por exemplo TFTP (Trivial File Transfer
Protocol) implementa mecanismos internos de controle de fluxo e de erros.
Ele pode usar o UDP de maneira fácil.
 O UDP é muito utilizado no gerenciamento de redes, protocolo SNMP.
 O UDP é usado em alguns protocolos de roteamento para atualização de
rotas como o RIP.
23.26
Uso do UDP
23.27
23-3 TCP
O TCP é um protocolo orientado a conexão, ele cria
uma conexão virtual entre dois TCPs para enviar
dados. Além disso, o TCP utiliza o fluxo e mecanismos
de controle de erros no nível de transporte.
Serviços TCP
Características TCP
Segmentos
Conexão TCP
Controle de Fluxo
Controle de Erro
Topicos Discutidos:
23.28
Tabela 23.2 Portas conhecidas TCP
 O TCP, diferente do UDP, é um protocolo orientado a
fluxo de dados.
 No UDP, um processo envia mensagens, com
delimitadores predefinidos, para o UDP, para serem
transmitidas.
 O UDP acrescenta seu próprio cabeçalho a cada uma
dessas mensagens e as entregas para transmissão pelo
IP.
 Cada mensagem do processo é denominado datagrama
de usuário e se torna, finalmente, um datagrama IP.
 Nem o IP nem o UDP estabelecem relação entre os
datagramas.
23.29
Serviço de Entrega de Fluxo de dados
23.30
Figure 23.13 Entrega de Fluxo de Dados
• O TCP possibilita a um processo enviar dados Na forma de um fluxo de bytes.
• O TCP cria um ambiente no qual os dois processos Parecem estar conectados
por um “canal” imaginário Que transporta dados pela internet.
 Como existe a possibilidade dos processos de transmissão
e de recepção não gerarem ou lerem dados em uma
mesma velocidade, o TCP precisa de Buffers para seu
armazenamento;
 Existem dois buffers, um buffer de transmissão e um
buffer de recepção, um em cada direção;
 Uma forma de implementar um buffer é usar uma matriz
circular de posições.
23.31
Buffers de transmissão e Recepção
EMISSOR:
 No lado emissor, o buffer possui três tipos de câmaras.
 A parte branca na figura 23.14 contém câmaras vazias que podem ser preenchidas pelo
processo transmissor.
 A área cinza armazena bytes que foram enviados, mas ainda não confirmados pelo
receptor.
 O TCP mantém esses buffers até o receber uma confirmação.
 A área colorida contém bytes a serem enviados pelo transmissor TCP.
RECEPTOR:
 A operação no buffer no lado do receptor é mais simples.
 O buffer circular é dividido em duas áreas (segmentos brancos e coloridos).
 O segmento branco possui câmaras vazias a serem preenchidas por bytes recebidos da
rede.
 As seções coloridas contém bytes recebidos que podem ser lido pelo processo receptor.
 Quando um byte é lido pelo processo receptor, a câmara é limpa e acrescentado ao
pool de câmaras vazias.
23.32
Buffers de transmissão e Recepção
23.33
Figura 23.14 Buffers de transmissão e recepção
 Embora o sistema de buffers trate da disparidade entre as velocidades dos
processos de geração e leitura de dados, precisamos de mais um passo antes
de podermos efetivamente transmitir dados.
 A camada IP, como provedora de serviço para o TCP, precisa enviar dados em
pacotes, não na forma de um fluxo de bytes.
 Na camada de transporte, o TCP agrupa determinado número de bytes em
pacotes, denominados segmentos.
 O TCP acrescenta um cabeçalho a cada segmento (para fins de controle) e
entrega o segmento para a camada IP para sua transmissão.
 Os segmentos são encapsulados em datagramas IP e transmitidos.
23.34
Segmentos
23.35
Figura 23.15 Segmento TCP
 O TCP oferece serviços full duplex no qual dados podem fluir em ambos as
direções simultaneamente;
 Cada processo TCP implementa um buffer de transmissão e um de recepção e
os segmentos trafegam e ambas as direções.
23.36
Comunicação Full-Duplex
 O TCP, diferente do UDP, é um protocolo orientado a conexão. Quando um
processo no ponto A quer enviar e receber dados de outro processo no ponto
B, ocorre o seguinte:
 Os dois processos TCPs estabelecem uma conexão entre eles;
 Os dados são trocados em ambos os sentidos;
 A conexão é encerrada.
 Observe que esta é uma conexão virtual, e não uma conexão física;
 Um segmento TCP é encapsulado em um datagrama IP e pode ser recebido
fora de ordem, perdido ou corrompido e, em seguida, precisa ser reenviado;
 Cada um deles pode ser transmitido por um caminho diferente até atingir o
destino;
 Não existe conexão física;
 O TCP cria um ambiente orientado a fluxo de dados no qual ele assume a
responsabilidade de entregar na ordem correta os bytes para outro ponto.
23.37
Serviços Orientados a conexão
Sistema de numeração:
 Embora o software TCP mantenha controle sobre os segmentos que estão sendo
transmitidos ou recebidos, não há nenhum campo especifico para indicar o número de
um segmento no cabeçalho.
 Em vez disso, existem dois campos genéricos denominados de número de sequência
e número de confirmação.
 Esses dois campos de referem ao número de bytes e não o número do segmento.
Número de Bytes:
 Este se refere à quantidade de bytes de dados TCP que são transmitidos em uma
conexão.
 A numeração é independente para cada sentido de transmissão.
 Quando o TCP recebe bytes de dados de um processo, ele os armazena no buffer de
transmissão e os numera.
 A numeração não é iniciada necessariamente, a partir de 0. Em vez disso, o TCP gera
um número randômico entre 0 e 2^32 – 1 como número inicial para primeiro byte.
 Por exemplo, se por acaso o número randômico for 1.057 e o total de dados a serem
transmitidos for 6.000 bytes, os bytes são numerados de 1.057 a 7.056.
23.38
Recursos do TCP
Número de sequência:
 Após os bytes terem sido numerados, o TCP atribui um número de sequência
para cada segmento que está sendo transmitido.
 O número de sequência para cada segmento é identificado pelo número do
primeiro byte transportado no segmento.
 Exemplo 23.3
Suponha que uma conexão TCP esteja transferindo um arquivo de 5.000 bytes. O
primeiro deles recebe a numeração 10.001. Quais são os números de sequência
para cada segmento se os dados foram enviados em cinco segmento, cada um
deles transportando 1.000 bytes?
23.39
Recursos do TCP
23.40
A seguir, são apresentados os números de sequência de
cada segmento:
Example 23.3
Número de Confirmação:
 Cada parte enumera os bytes, normalmente, com um número de byte inicial diferente.
 O número de sequência em cada direção identifica o número do primeiro byte
transportado pelo segmento.
 Cada parte também usa um número de confirmação para confirmar os bytes que
recebeu.
 Entretanto, o número de confirmação identifica o número do próximo byte que a parte
espera receber.
 Além disso, o número de confirmação é cumulativo, significa que a parte pega o
número do último byte recebido, são e salvo, incrementa 1 a ele e anuncia essa soma
como número de confirmação.
 O termo cumulativo, nesse caso, significa que, se uma parte usa 5.643 como número
de confirmação, ela recebeu todos os bytes do inicio até 5.642. Note que isso não
significa que a parte tenha recebido 5.642 bytes, porque o número do primeiro byte
nem sempre começa em 0.
23.41
Recursos do TCP
Controle de Fluxo:
 O TCP, diferente do UDP, implementa controle de fluxo. O receptor pode controlar a
quantidade de dados que é enviada pelo emissor.
 Isso é feito para evitar que o receptor fique sobrecarregado com uma quantidade
excessiva de dados.
 O sistema de controle de sequência possibilita que o TCP use um controle de fluxo
orientado a bytes.
Controle de Erros:
 Para fornecer um serviço de transporte confiável, o TCP implementa controle de erros.
 Embora controle de erros considere o segmento como a unidade de dados para fins de
detecção de erros (segmento corrompido ou perdido), o controle de erros é orientado a
bytes.
Controle de Congestionamento:
 O TCP, diferente do UDP, leva em conta o nível de congestionamento da rede.
 A quantidade de dados que podem ser transmitidos por um emissor não é controlada
apenas pelo receptor (controle de fluxo), mas também pelo nível de congestionamento
na rede.
23.42
Recursos do TCP
23.43
Figure 23.16 O Formato de um segmento TCP
Endereço de porta de Origem/Destino :
 Trata-se um campo de 16 bits que identifica o número da porta do programa de aplicação tanto no
host emissor como no host receptor.
Número de sequência:
 Identifica a posição deste segmento no fluxo de dados e cada conexão possui um fluxo de dados
particular
Número de confirmação:
 Utilizado para confirmar o recebimento de segmentos enviados anteriormente e especifica o próximo
segmento aguardado
Comprimento do cabeçalho:
 Esse campo de 4 bits identifica a quantidade de palavras de 4 bytes de um cabeçalho.
 O comprimento do cabeçalho tem entre 20 e 60 bytes. Consequentemente, o valor desse campo
pode ser entre 5 (5x4=20) e 15 (15x4=60).
Reservado:
 Trata-se de um campo de 6 bits reservado para uso futuro.
Controle:
Esse campo define 6 bits de controle (flags) distintos.
23.44
Cabeçalho TCP
23.45
Figure 23.17 Control field
23.46
Table 23.3 Description of flags in the control field
Tamanho da Janela:
 Esse campo define o tamanho de uma janela TCP, em bytes, que a outra parte deve manter,
observe que o comprimento desse campo é de 16 bits, significando que o tamanho máximo de uma
é de 65.535 bytes.
 Normalmente, esse valor é conhecido como janela receptora (rwnd) e é determinado pelo receptor.
 Nesse caso, o emissor deve obedecer àquilo que está configurado pelo receptor.
Checksum:
 Verificação de erros
Urgent Point:
 É válido apenas se a flag URG (Urgente) estiver ativo, é usado quando um segmento contém dados
urgentes.
Opções:
 Esse campo pode conter um total de até 40 bytes de informações opcionais que serão inclusas ao
cabeçalho TCP. ( Não trataremos dessas opções aqui; consulte a lista de referência para
mais informações).
23.47
Cabeçalho TCP
Estabelecimento da conexão:
 O TCP transmite dados no modo full-duplex.
 Quando dois processos TCPs em duas máquinas estão conectados,
eles estão aptos a transmitir segmentos entre si, simultaneamente.
 Isso implica que cada parte deve inicializar a comunicação e obter a
aprovação da outra parte antes que quaisquer dados possam ser
transferidos.
23.48
Conexão TCP
Handshaking de três vias:
 O estabelecimento de uma conexão no TCP é denominado
handshaking de três vias (three-way handshaking).
 O processo começa com o servidor. O programa servidor informa ao
TCP que está pronto para aceitar uma conexão.
 Isso é chamado de uma abertura passiva.
 Embora o servidor TCP esteja pronto para aceitar conexão de
qualquer máquina do mundo, ele não é capaz de estabelecer, por si
só, uma conexão.
23.49
Conexão TCP
23.50
Figure 23.18 Connection establishment using three-way handshaking
23.51
Exemplo Prático usando Wireshake (SYN)
23.52
Exemplo Prático usando Wireshake (SYN+ACK)
23.53
Exemplo Prático usando Wireshake (ACK)
23.54
Exemplo Prático usando Wireshake (FIN)
Transferência de Dados:
 A figura 23.19 mostra um exemplo. Neste exemplo, após a conexão
ser estabelecida (não mostrado na figura), o cliente transmite 2.000
bytes de dados em dois segmentos.
 O servidor transmite então 2.000 bytes em um único segmento.
 O cliente transmite mais um segmento.
 Os três primeiros segmentos transportam dados, bem como
confirmações, porém o último segmento de dados pelo cliente tem
flag PSH (push) ativo, de modo que o servidor TCP saiba que deve
entregar dados para processo servidor imediatamente, assim que eles
forem recebidos.
23.55
Conexão TCP
23.56
Figure 23.19 Data transfer
Encerramento de uma conexão:
 Qualquer umas das partes envolvidas na troca de dados (cliente ou
servidor) pode encerrar uma conexão, embora esta tenha sido,
normalmente, iniciada pelo cliente.
 Atualmente, a maioria das implementações permite duas opções para
encerramento de uma conexão: o three-way handshaking
(handshaking de três vias) e o four-wat handshakig (handshaking de
quatro vias) com opção de semi-encerramento.
Three-way Handshaking:
1 – Em uma situação normal, um cliente TCP, após receber um comando
de encerramento do processo cliente, envia o primeiro segmento, um
segmento FIN no qual a flag FIN está ativo. Como trata-se de apenas
um segmento de controle, ele consumirá somente um número de
sequência.
23.57
Conexão TCP
Three-way Handshaking:
2 – O servidor TCP, após receber um segmento FIN, informa a seu
processo TCP sobre essa situação e transmite o segundo segmento, um
segmento FIN+ACK, para confirmar o recebimento do segmento FIN do
cliente e, ao mesmo tempo, para anunciar o encerramento da conexão
na outra direção.
Esse segmento também pode conter o último bloco de dados do servidor.
Se não estiver transportando dados, ele consumirá apenas um número
de sequência.
3 – O cliente TCP transmite o último segmento, um segmento ACK, para
confirmar o recebimento do segmento FIN do servidor TCP.
Esse segmento contém o número de confirmação, que é 1 mais o
número de sequência recebido no segmento FIN do servidor.
Esse segmento pode transportar dados e não consome nenhum número
de sequência.
23.58
Conexão TCP
23.59
Figure 23.20 Connection termination using three-way handshaking
Semi-encerramento:
 No TCP, um lado pode interromper a transmissão de dados enquanto
ainda recebe dados, Isso é denominado semi-encerramento.
 Embora ambos os lados possam transmitir um semi-encerramento,
normalmente ele é iniciado pelo cliente.
 Ele pode ocorrer quando o servidor precisa de todos os dados antes
de poder iniciar o processamento.
 Um bom exemplo é a ordenação. Quando um cliente transmite dados
para um servidor para serem ordenados, o servidor precisa receber
todos os dados antes de iniciar o processo de ordenação dos mesmos.
23.60
Conexão TCP
23.61
Figure 23.21 Half-close
Janela Deslizante:
 O TCP utiliza a técnica de janela deslizante (slidding Window), para
implementar controle de fluxo.
 A figura 23.22 mostra um bom exemplo de janela deslizante no TCP.
 A Janela abrange parte do buffer, que contém os bytes recebidos do
processo.
 Os bytes dentro da janela são bytes que podem estar em trânsito; ele
podem ser enviados sem se preocupar coma confirmação.
 A janela imaginária possui duas paredes: uma à direita e outra à
esquerda.
 Uma janela pode ser aberta, fechada ou reduzida. Essas três
atividades, como veremos, estão sob controle do receptor, não do
emissor.
 O emissor tem de obdecer às ordens de receptor.
23.62
Controle de Fluxo (Pág 728)
Janela Deslizante:
 Abrir uma janela significa deslocar a parede direita mais para a direita.
 Isso permite um número maior de bytes novos no buffer, candidatos a
serem transmitidos.
 Fechar uma janela significa deslocar a parede da esquerda mais para
a direita.
 Isso significa que alguns bytes foram confirmados e o emissor não
precisa mais se preocupar com eles.
 Reduzir a janela significa deslocar para esquerda a janela da direita,
isso é veementemente desencorajado e não permitido em algumas
implementações, pois significa renunciar à elegibilidade de alguns
bytes para transmissão.
 Este é um problema, caso o emissor já tenha enviado esses bytes.
23.63
Controle de Fluxo (Pág 728)
 Em (a) é mostrada a representação da perspectiva do transmissor. O retângulo
sombreado diz respeito aos quadros a serem enviados;
 Cada vez que um quadro é enviado, o retângulo sombreado diminui da esquerda
para a direita;
 Quando ocorre o reconhecimento (ACK) de um quadro recebido pelo receptor, o
retângulo aumenta da esquerda para a direita;
 Os quadros antes da barra vertical são os quadros enviados e confirmados, não
necessitando de armazenamento em buffer;
 O quadro de índice 3, após a barra vertical, indica o quadro transmitido, mas ainda
não confirmado e que precisa estar em buffer caso precise ser reenviado.
 Em (b) é mostrada a perspectiva do receptor;
 O retângulo sombreado representa os quadros a serem recebidos;
 À medida que os quadros são reconhecidos (ACK), o retângulo diminui da esquerda
para a direita;
 À medida que os quadros são recebidos, o retângulo aumenta da esquerda para a
direita.
23.65
Outro Exemplo com Janela Deslizante
23.66
Outro Exemplo com Janela Deslizante
23.67
Uma janela deslizante é usada para
implementar maior eficiência à
transmissão, bem como controle de fluxo
de dados, de modo que o destino não fique
sobrecarregado com dados. As janelas
deslizantes no TCP são orientadas a bytes.
Note
23.68
Qual é o valor da janela do receptor (rwnd) para o host A
se o receptor, host B, tem um tamanho do buffer de 5000
bytes e 1000 bytes de dados recebidos e não processados​​?
Example 23.4
Solução
O valor da rwnd = 5000 - 1000 = 4000. Host B pode
receber apenas 4000 bytes de dados antes de transbordar
seu buffer. Host B anuncia este valor em seu segmento ao
lado A.
23.69
Qual é o tamanho da janela para o host A se o valor de
rwnd é 3000 bytes e o valor do cwnd é de 3500 bytes?
Example 23.5
Solução
O tamanho da janela é o menor dos rwnd e cwnd, que é
de 3000 bytes.
23.70
Figura 23,23 mostra um exemplo não real de uma janela
deslizante. O remetente enviou bytes até 202. Assumimos
que cwnd é de 20 bytes (na realidade este valor é milhares
de bytes). O receptor enviou o número de confirmação de
200 com uma rwnd de 9 bytes (na realidade este valor é
milhares de bytes). O tamanho da janela do remetente é o
mínimo de rwnd e cwnd, ou 9 bytes. Bytes 200-202 são
enviadas, mas não reconhecido. Bytes 203-208 pode ser
enviado sem se preocupar com reconhecimento. Bytes 209
e acima não podem ser enviados.
Example 23.6
23.71
Figure 23.23 Example 23.6
23.72
Alguns Pontos Sobre TCP Janela deslizante:
❏ O tamanho da janela é o valor mínimo entre rwnd e
cwnd.
❏ A origem não deve enviar uma janela de dados
completa.
❏ A janela pode ser aberta ou fechada pelo receptor,
porém, não pode ser reduzida.
❏ O destino pode enviar uma confirmação a qualquer
instante desde que não resulte na redução de uma
janela.
❏ O receptor pode fechar temporariamente uma
janela; O emissor, entretando, sempre pode transmitir
um segmento de 1 byte após a janela ter sido fechada.
Note
O TCP é um protocolo de transporte confiável. Isso significa que um
programa de aplicação, que entrega o fluxo de dados para o TCP,
depende do TCP para entregar em ordem o fluxo inteiro para programa
de aplicação na outra ponta, sem erros, e sem qualquer informação
perdida ou duplicada.
Checksum
 Cada segmento inclui um campo de checksum que é usado para
validar a existência de um segmento corrompido;
 Se o segmento estiver corrompido, ele será descartado pelo TCP de
destino e considerado com perdido;
 O TCP usa o campo de checksum de 16 bits, que é obrigatória em
todos os segmentos.
23.73
Controle de Erros (Pág 731)
Confirmação
O TCP usa confirmação para validar o recebimento do segmento de
dados;
Um segmento de controle que não transporta dados, mas que usa
número de sequência, também deve ser confirmado;
Um segmento ACK jamais necessita de confirmação.
Retransmissão
 O cerne do controle de erros é a retransmissão de segmentos;
 Quando um segmento estiver corrompido, perdido ou com atraso, ele
é retransmitido;
 Em implementações modernas, um segmento é retransmitido em duas
ocasiões: Quando o tempo do timer de retransmissão se esgota ou
quando o emissor recebe três ACKs duplicados.
23.74
Controle de Erros
Retransmissão após RTO (Retransmission time-out)
 As implementações recentes do TCP mantém um time RTO para
todos os segmentos pendentes (transmitidos, mas não confirmados);
 Quando vence o time-out, o primeiro segmento pendente é
retransmitido, muito embora a falta de um ACK recebido possa ser
enviado a um segmento com atraso, um ACK com atraso ou uma
confirmação perdida;
 Não existe um timer ativo para segmento que transporta apenas
confirmação, significando que nenhum segmento desse tipo poderá
ser reenviado;
 O valor de RTO é dinâmico no TCP e é atualizado tomando-se como
base RTT (Round-Trip Time, em inglês, tempo de ida e volta)
do segmento;
 O RTT é o tempo necessário para um segmento atingir o destino e
uma confirmação ser recebida.
23.75
Controle de Erros
Retransmissão Após Três Segmentos ACK Duplicados
 A regra anterior sobre a retransmissão de um segmento é suficiente
se o valor de RTO não for muito grande. Algumas vezes, porém, um
segmento é perdido e o receptor recebe um número tão grande de
segmentos fora de ordem a ponto deles não poderem ser salvos (o
tamanho do buffer é limitado).
 Para amenizar essa situação, a maioria das implementações atuais
segue a regra dos três ACKs duplicados e retransmite imediatamente
um segmento faltante. Esse recurso é conhecido como
retransmissão rápida.
23.76
Controle de Erros
Segmentos Fora de Ordem
 Quando segmento estiver atrasado, perdido ou tiver sido descartado,
os segmentos após este, chegarão fora de ordem. Originalmente, o
TCP foi desenvolvido para descartar todos os segmentos fora de
ordem, resultando na retransmissão de todos os segmentos faltantes
e dos segmentos seguintes.
 Hoje em dia, a maioria das implementações de TCP não descarta
segmentos fora de ordem. Elas os armazenam, temporariamente, em
um buffer e colocam uma flag indicando como segmentos fora de
ordem até a chegada dos segmentos faltantes.
 O TCP garante que os dados são entregues, em ordem, para processo
receptor.
23.77
Controle de Erros
23.78
Figure 23.24 Operação Normal
23.79
Figure 23.25 Segmento Perdido
23.80
O receptor TCP entrega apenas dados
ordenados para o processo.
Note
23.81
Figure 23.26 Retransmissão Rápida

Weitere ähnliche Inhalte

Was ist angesagt?

Redes de Computadores
Redes de Computadores Redes de Computadores
Redes de Computadores claudioatx
 
Camada de aplicação modelo osi
Camada de aplicação modelo osiCamada de aplicação modelo osi
Camada de aplicação modelo osiAna Antoniello
 
Sistemas Distribuídos - Aula 01
Sistemas Distribuídos - Aula 01Sistemas Distribuídos - Aula 01
Sistemas Distribuídos - Aula 01Arthur Emanuel
 
Ferramentas de Gerenciamento de Rede
Ferramentas de Gerenciamento de RedeFerramentas de Gerenciamento de Rede
Ferramentas de Gerenciamento de RedeHelder Lopes
 
Redes 4 endereçamento
Redes 4 endereçamentoRedes 4 endereçamento
Redes 4 endereçamentoMauro Pereira
 
Modelo OSI - Camada de Transporte
Modelo OSI - Camada de TransporteModelo OSI - Camada de Transporte
Modelo OSI - Camada de TransporteWalyson Vëras
 
Redes de Computadores
Redes de ComputadoresRedes de Computadores
Redes de ComputadoresFábio Eliseu
 
Linux comandos gerais e servidores de rede
Linux   comandos gerais e servidores de redeLinux   comandos gerais e servidores de rede
Linux comandos gerais e servidores de redefernandao777
 
Hardware e redes de computadores (Componente, tipos de redes e topologias)
Hardware e redes de computadores (Componente, tipos de redes e topologias)Hardware e redes de computadores (Componente, tipos de redes e topologias)
Hardware e redes de computadores (Componente, tipos de redes e topologias)Augusto Nogueira
 
Simplex, Half-Duplex e Full-Duplex
Simplex, Half-Duplex e Full-DuplexSimplex, Half-Duplex e Full-Duplex
Simplex, Half-Duplex e Full-DuplexYohana Alves
 
Sistema operativo servidor
Sistema operativo servidorSistema operativo servidor
Sistema operativo servidorSandu Postolachi
 
Redes - Camada Física e Meios de Transmissão
Redes - Camada Física e Meios de TransmissãoRedes - Camada Física e Meios de Transmissão
Redes - Camada Física e Meios de TransmissãoTiago Antônio da Silva
 
SOA - Arquitetura Orientada a Serviços
SOA - Arquitetura Orientada a ServiçosSOA - Arquitetura Orientada a Serviços
SOA - Arquitetura Orientada a Serviçosalinebicudo
 
Redes I - 5.1 Tecnologias de Redes LAN
Redes I - 5.1 Tecnologias de Redes LANRedes I - 5.1 Tecnologias de Redes LAN
Redes I - 5.1 Tecnologias de Redes LANMauro Tapajós
 
Sistemas Operacionais - Aula 05 (Concorrência)
Sistemas Operacionais - Aula 05 (Concorrência)Sistemas Operacionais - Aula 05 (Concorrência)
Sistemas Operacionais - Aula 05 (Concorrência)Leinylson Fontinele
 

Was ist angesagt? (20)

Diferença osi tcp ip
Diferença osi tcp ipDiferença osi tcp ip
Diferença osi tcp ip
 
Redes de Computadores
Redes de Computadores Redes de Computadores
Redes de Computadores
 
Camada de aplicação modelo osi
Camada de aplicação modelo osiCamada de aplicação modelo osi
Camada de aplicação modelo osi
 
Modelo TCP/IP
Modelo TCP/IPModelo TCP/IP
Modelo TCP/IP
 
Sistemas Distribuídos - Aula 01
Sistemas Distribuídos - Aula 01Sistemas Distribuídos - Aula 01
Sistemas Distribuídos - Aula 01
 
Ferramentas de Gerenciamento de Rede
Ferramentas de Gerenciamento de RedeFerramentas de Gerenciamento de Rede
Ferramentas de Gerenciamento de Rede
 
Protocolo UDP
Protocolo UDPProtocolo UDP
Protocolo UDP
 
Redes 4 endereçamento
Redes 4 endereçamentoRedes 4 endereçamento
Redes 4 endereçamento
 
Modelo OSI - Camada de Transporte
Modelo OSI - Camada de TransporteModelo OSI - Camada de Transporte
Modelo OSI - Camada de Transporte
 
Redes de Computadores
Redes de ComputadoresRedes de Computadores
Redes de Computadores
 
49778140 projeto-de-rede
49778140 projeto-de-rede49778140 projeto-de-rede
49778140 projeto-de-rede
 
Linux comandos gerais e servidores de rede
Linux   comandos gerais e servidores de redeLinux   comandos gerais e servidores de rede
Linux comandos gerais e servidores de rede
 
Hardware e redes de computadores (Componente, tipos de redes e topologias)
Hardware e redes de computadores (Componente, tipos de redes e topologias)Hardware e redes de computadores (Componente, tipos de redes e topologias)
Hardware e redes de computadores (Componente, tipos de redes e topologias)
 
Simplex, Half-Duplex e Full-Duplex
Simplex, Half-Duplex e Full-DuplexSimplex, Half-Duplex e Full-Duplex
Simplex, Half-Duplex e Full-Duplex
 
Sistema operativo servidor
Sistema operativo servidorSistema operativo servidor
Sistema operativo servidor
 
Redes - Camada Física e Meios de Transmissão
Redes - Camada Física e Meios de TransmissãoRedes - Camada Física e Meios de Transmissão
Redes - Camada Física e Meios de Transmissão
 
SOA - Arquitetura Orientada a Serviços
SOA - Arquitetura Orientada a ServiçosSOA - Arquitetura Orientada a Serviços
SOA - Arquitetura Orientada a Serviços
 
Redes I - 5.1 Tecnologias de Redes LAN
Redes I - 5.1 Tecnologias de Redes LANRedes I - 5.1 Tecnologias de Redes LAN
Redes I - 5.1 Tecnologias de Redes LAN
 
Virtualização - Máquinas Virtuais
Virtualização - Máquinas VirtuaisVirtualização - Máquinas Virtuais
Virtualização - Máquinas Virtuais
 
Sistemas Operacionais - Aula 05 (Concorrência)
Sistemas Operacionais - Aula 05 (Concorrência)Sistemas Operacionais - Aula 05 (Concorrência)
Sistemas Operacionais - Aula 05 (Concorrência)
 

Ähnlich wie Capítulo 23 comunicação entre processos

Redes - Camada de Transporte
Redes - Camada de TransporteRedes - Camada de Transporte
Redes - Camada de TransporteLuiz Arthur
 
Protocolos TCP IP UDP
Protocolos TCP IP UDPProtocolos TCP IP UDP
Protocolos TCP IP UDPAndré Nobre
 
Lista 03 respostas
Lista 03 respostasLista 03 respostas
Lista 03 respostasForça Tauá
 
02 - Aplicação-Transporte.pdf
02 - Aplicação-Transporte.pdf02 - Aplicação-Transporte.pdf
02 - Aplicação-Transporte.pdfedsonjcg
 
Camada de Transporte Redes Tanenbaum
Camada de Transporte Redes TanenbaumCamada de Transporte Redes Tanenbaum
Camada de Transporte Redes TanenbaumWellington Oliveira
 
Redes de Computadores Capítulo 6 - Camada de Transporte
Redes de Computadores Capítulo 6 - Camada de TransporteRedes de Computadores Capítulo 6 - Camada de Transporte
Redes de Computadores Capítulo 6 - Camada de TransporteWellington Oliveira
 
Redes de computadores II - 4.Camada de Transporte TCP e UDP
Redes de computadores II - 4.Camada de Transporte TCP e UDPRedes de computadores II - 4.Camada de Transporte TCP e UDP
Redes de computadores II - 4.Camada de Transporte TCP e UDPMauro Tapajós
 
Protocolos de transporte
Protocolos de transporteProtocolos de transporte
Protocolos de transporteJoel Saramago
 
Camada de Transporte - TADS/REC 2014/2
Camada de Transporte - TADS/REC 2014/2Camada de Transporte - TADS/REC 2014/2
Camada de Transporte - TADS/REC 2014/2Caio Miranda
 
Sistemas Distribuídos - Aula 05
Sistemas Distribuídos - Aula 05Sistemas Distribuídos - Aula 05
Sistemas Distribuídos - Aula 05Arthur Emanuel
 
Ac.m4 tarefa video-emil
Ac.m4 tarefa video-emilAc.m4 tarefa video-emil
Ac.m4 tarefa video-emilfantic3o
 
WANs e Roteadores Cap. 10 TCP/IP Intermediário - CCNA 3.1 Wellington Pinto de...
WANs e Roteadores Cap. 10 TCP/IP Intermediário - CCNA 3.1 Wellington Pinto de...WANs e Roteadores Cap. 10 TCP/IP Intermediário - CCNA 3.1 Wellington Pinto de...
WANs e Roteadores Cap. 10 TCP/IP Intermediário - CCNA 3.1 Wellington Pinto de...Wellington Oliveira
 
Camada de transporte Aula de redes
Camada de transporte  Aula de redesCamada de transporte  Aula de redes
Camada de transporte Aula de redesJefferson Macena
 

Ähnlich wie Capítulo 23 comunicação entre processos (20)

Redes - Camada de Transporte
Redes - Camada de TransporteRedes - Camada de Transporte
Redes - Camada de Transporte
 
Protocolos TCP IP UDP
Protocolos TCP IP UDPProtocolos TCP IP UDP
Protocolos TCP IP UDP
 
Lista 03 respostas
Lista 03 respostasLista 03 respostas
Lista 03 respostas
 
02 - Aplicação-Transporte.pdf
02 - Aplicação-Transporte.pdf02 - Aplicação-Transporte.pdf
02 - Aplicação-Transporte.pdf
 
Protocolos
ProtocolosProtocolos
Protocolos
 
Protocolos
ProtocolosProtocolos
Protocolos
 
Camada de Transporte Redes Tanenbaum
Camada de Transporte Redes TanenbaumCamada de Transporte Redes Tanenbaum
Camada de Transporte Redes Tanenbaum
 
Redes de Computadores Capítulo 6 - Camada de Transporte
Redes de Computadores Capítulo 6 - Camada de TransporteRedes de Computadores Capítulo 6 - Camada de Transporte
Redes de Computadores Capítulo 6 - Camada de Transporte
 
Redes de computadores II - 4.Camada de Transporte TCP e UDP
Redes de computadores II - 4.Camada de Transporte TCP e UDPRedes de computadores II - 4.Camada de Transporte TCP e UDP
Redes de computadores II - 4.Camada de Transporte TCP e UDP
 
Protocolos de transporte
Protocolos de transporteProtocolos de transporte
Protocolos de transporte
 
Intro_redes.pdf
Intro_redes.pdfIntro_redes.pdf
Intro_redes.pdf
 
Camada de Transporte - TADS/REC 2014/2
Camada de Transporte - TADS/REC 2014/2Camada de Transporte - TADS/REC 2014/2
Camada de Transporte - TADS/REC 2014/2
 
Trabalho camada de transporte
Trabalho camada de transporteTrabalho camada de transporte
Trabalho camada de transporte
 
Rc2 camada tcp camada 4 osi
Rc2 camada tcp camada 4 osiRc2 camada tcp camada 4 osi
Rc2 camada tcp camada 4 osi
 
Exercicio rossana
Exercicio rossanaExercicio rossana
Exercicio rossana
 
Sistemas Distribuídos - Aula 05
Sistemas Distribuídos - Aula 05Sistemas Distribuídos - Aula 05
Sistemas Distribuídos - Aula 05
 
Redes de Comunicacao-Camada de transporte
Redes de Comunicacao-Camada de transporte Redes de Comunicacao-Camada de transporte
Redes de Comunicacao-Camada de transporte
 
Ac.m4 tarefa video-emil
Ac.m4 tarefa video-emilAc.m4 tarefa video-emil
Ac.m4 tarefa video-emil
 
WANs e Roteadores Cap. 10 TCP/IP Intermediário - CCNA 3.1 Wellington Pinto de...
WANs e Roteadores Cap. 10 TCP/IP Intermediário - CCNA 3.1 Wellington Pinto de...WANs e Roteadores Cap. 10 TCP/IP Intermediário - CCNA 3.1 Wellington Pinto de...
WANs e Roteadores Cap. 10 TCP/IP Intermediário - CCNA 3.1 Wellington Pinto de...
 
Camada de transporte Aula de redes
Camada de transporte  Aula de redesCamada de transporte  Aula de redes
Camada de transporte Aula de redes
 

Mehr von Faculdade Mater Christi

Capítulo 6 e 8 comutação e multiplexação (3º unidade)
Capítulo 6 e 8   comutação e multiplexação (3º unidade)Capítulo 6 e 8   comutação e multiplexação (3º unidade)
Capítulo 6 e 8 comutação e multiplexação (3º unidade)Faculdade Mater Christi
 
Capítulo 5 e 4 transmissão analógica e digital (2º unidade)
Capítulo 5 e 4   transmissão analógica e digital (2º unidade)Capítulo 5 e 4   transmissão analógica e digital (2º unidade)
Capítulo 5 e 4 transmissão analógica e digital (2º unidade)Faculdade Mater Christi
 
Capítulo 3 dados e sinais (1º unidade)
Capítulo 3   dados e sinais (1º unidade)Capítulo 3   dados e sinais (1º unidade)
Capítulo 3 dados e sinais (1º unidade)Faculdade Mater Christi
 
Capítulo 1 introdução a comunicação de dados(1º unidade)
Capítulo 1   introdução a comunicação de dados(1º unidade)Capítulo 1   introdução a comunicação de dados(1º unidade)
Capítulo 1 introdução a comunicação de dados(1º unidade)Faculdade Mater Christi
 
Capítulo 10 detecção e correção de erros
Capítulo 10   detecção e correção de errosCapítulo 10   detecção e correção de erros
Capítulo 10 detecção e correção de errosFaculdade Mater Christi
 
Capítulo 19 camada de rede - end lógico
Capítulo 19   camada de rede - end lógicoCapítulo 19   camada de rede - end lógico
Capítulo 19 camada de rede - end lógicoFaculdade Mater Christi
 
Capítulo 15 conexões de lans, redes backbone e lans virtuais
Capítulo 15   conexões de lans, redes backbone e lans virtuaisCapítulo 15   conexões de lans, redes backbone e lans virtuais
Capítulo 15 conexões de lans, redes backbone e lans virtuaisFaculdade Mater Christi
 
Capítulo 20 camada de rede - internet protocol
Capítulo 20   camada de rede - internet protocolCapítulo 20   camada de rede - internet protocol
Capítulo 20 camada de rede - internet protocolFaculdade Mater Christi
 
Sistemas de arquivos cap 04 (iii unidade)
Sistemas de arquivos cap 04 (iii unidade)Sistemas de arquivos cap 04 (iii unidade)
Sistemas de arquivos cap 04 (iii unidade)Faculdade Mater Christi
 
Introdução aos sistemas operacionais cap 01 (i unidade)
Introdução aos sistemas operacionais cap 01 (i unidade)Introdução aos sistemas operacionais cap 01 (i unidade)
Introdução aos sistemas operacionais cap 01 (i unidade)Faculdade Mater Christi
 
Gerenciamento de memória cap 03 (ii unidade)
Gerenciamento de memória cap 03 (ii unidade)Gerenciamento de memória cap 03 (ii unidade)
Gerenciamento de memória cap 03 (ii unidade)Faculdade Mater Christi
 
Conceitos de hardware e software cap 02 (i unidade)
Conceitos de hardware e software cap 02 (i unidade)Conceitos de hardware e software cap 02 (i unidade)
Conceitos de hardware e software cap 02 (i unidade)Faculdade Mater Christi
 

Mehr von Faculdade Mater Christi (17)

Capítulo 6 e 8 comutação e multiplexação (3º unidade)
Capítulo 6 e 8   comutação e multiplexação (3º unidade)Capítulo 6 e 8   comutação e multiplexação (3º unidade)
Capítulo 6 e 8 comutação e multiplexação (3º unidade)
 
Capítulo 5 e 4 transmissão analógica e digital (2º unidade)
Capítulo 5 e 4   transmissão analógica e digital (2º unidade)Capítulo 5 e 4   transmissão analógica e digital (2º unidade)
Capítulo 5 e 4 transmissão analógica e digital (2º unidade)
 
Capítulo 3 dados e sinais (1º unidade)
Capítulo 3   dados e sinais (1º unidade)Capítulo 3   dados e sinais (1º unidade)
Capítulo 3 dados e sinais (1º unidade)
 
Capítulo 1 introdução a comunicação de dados(1º unidade)
Capítulo 1   introdução a comunicação de dados(1º unidade)Capítulo 1   introdução a comunicação de dados(1º unidade)
Capítulo 1 introdução a comunicação de dados(1º unidade)
 
Capítulo 10 detecção e correção de erros
Capítulo 10   detecção e correção de errosCapítulo 10   detecção e correção de erros
Capítulo 10 detecção e correção de erros
 
Capítulo 19 camada de rede - end lógico
Capítulo 19   camada de rede - end lógicoCapítulo 19   camada de rede - end lógico
Capítulo 19 camada de rede - end lógico
 
Capítulo 15 conexões de lans, redes backbone e lans virtuais
Capítulo 15   conexões de lans, redes backbone e lans virtuaisCapítulo 15   conexões de lans, redes backbone e lans virtuais
Capítulo 15 conexões de lans, redes backbone e lans virtuais
 
Capítulo 2 modelos de redes
Capítulo 2   modelos de redesCapítulo 2   modelos de redes
Capítulo 2 modelos de redes
 
Capítulo 20 camada de rede - internet protocol
Capítulo 20   camada de rede - internet protocolCapítulo 20   camada de rede - internet protocol
Capítulo 20 camada de rede - internet protocol
 
Sistemas de arquivos cap 04 (iii unidade)
Sistemas de arquivos cap 04 (iii unidade)Sistemas de arquivos cap 04 (iii unidade)
Sistemas de arquivos cap 04 (iii unidade)
 
Introdução aos sistemas operacionais cap 01 (i unidade)
Introdução aos sistemas operacionais cap 01 (i unidade)Introdução aos sistemas operacionais cap 01 (i unidade)
Introdução aos sistemas operacionais cap 01 (i unidade)
 
Introdução à sistemas distribuídos
Introdução à sistemas distribuídosIntrodução à sistemas distribuídos
Introdução à sistemas distribuídos
 
Impasses cap 06 (ii unidade)
Impasses cap 06 (ii unidade)Impasses cap 06 (ii unidade)
Impasses cap 06 (ii unidade)
 
Gerenciamento de memória cap 03 (ii unidade)
Gerenciamento de memória cap 03 (ii unidade)Gerenciamento de memória cap 03 (ii unidade)
Gerenciamento de memória cap 03 (ii unidade)
 
Entrada e saida cap 05 (iii unidade)
Entrada e saida  cap 05 (iii unidade)Entrada e saida  cap 05 (iii unidade)
Entrada e saida cap 05 (iii unidade)
 
Conceitos de hardware e software cap 02 (i unidade)
Conceitos de hardware e software cap 02 (i unidade)Conceitos de hardware e software cap 02 (i unidade)
Conceitos de hardware e software cap 02 (i unidade)
 
Processos e threads cap 02 (i unidade)
Processos e threads   cap 02 (i unidade)Processos e threads   cap 02 (i unidade)
Processos e threads cap 02 (i unidade)
 

Capítulo 23 comunicação entre processos

  • 1. 23.1 Capítulo 23 Comunicação entre Processos: UDP e TCP Prof. Rodrigo Ronner rodrigoronner@gmail.com rodrigoronner.blogspot.com Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
  • 2. 23.2 23-1 Comunicação entre Processos A camada de transporte é responsável pelo processo a processo de entrega a entrega de um pacote, que faz parte de uma mensagem, de um processo para outro. Dois processos se comunicam em uma relação cliente / servidor, como veremos : Paradigma Cliente/Servidor Multiplexação e Demultiplexação Serviços sem conexão Versus Orientando a Conexão Confiável Versus Não-confiável Três Protocolos Topicos Discutidos:
  • 3. 23.3 A camada de transporte é responsável pela comunicação entre processos. Note
  • 4. 23.4 Figure 23.1 Tipos de comunicação de dados
  • 5. 23.5 23-1 Paradigma Cliente/Servidor • Embora existam várias maneiras de se realizar a comunicação entre processos, a mais comum delas é por meio do paradigma cliente/servidor. • Um processo no host local, denominado cliente, solicita serviços a outro processo, normalmente localizado no host remoto, denominado servidor. • Ambos os processos (cliente e servidor) têm o mesmo nome. Por exemplo, para obtermos o dia e horário de uma máquina remota, precisamos de um processo cliente denominado Daytime, em execução no host local e um processo servidor Daytame, em execução em uma máquina remota. • Os sistemas operacionais atuais oferecem suporte tanto a ambientes multiusuários como multiprogramação. • Um computador remoto pode executar vários programas servidor simultaneamente, da mesma forma que computadores locais podem executar um ou mais programas clientes. 1 – Host Local 2 – Processo Local 3 – Host remoto 4 – Processo remoto
  • 6. 23.6 23-1 Endereçamento • Toda vez que precisamos transmitir algo para um destino específico entre vários existentes, necessitaremos de um endereço. • Na camada de enlace de dados, utilizaremos o endereço MAC para escolher um nó entre vários nós. • Na camada de Rede, utilizaremos o endereço IP para escolher um host entre milhões. Um datagrama na camadada de Rede precisa de um endereço IP de destino para sua entrega e de um endereço IP de origem para a resposta do destino • Na camada de transporte, utilizaremos o endereço de camada de transporte, denominado número de porta , para escolher entre vários processos que estão em execução no host de destino. O número da porta de destino é necessário para entregar; o número de porta de origem é necessário para resposta. • Um computador remoto pode executar vários programas servidor simultaneamente, da mesma forma que computadores locais podem executar um ou mais programas clientes. 1 – Host Local 2 – Processo Local 3 – Host remoto 4 – Processo remoto
  • 8. 23.8 Figure 23.3 Endereço IP versus números de portas
  • 10. 23.10 23-5 Endereços Socket • Para se estabelecer uma conexão virtual que permita a comunicação entre processos finais, necessitamos de dois identificadores, o endereços IP e o número da porta. • A combinação entre um endereço IP e um número de porta é conhecida como endereço socket. • O endereço socket no cliente define o processo cliente de forma exclusiva, da mesma forma que o endereço socket no servidor estabelece o processo servidor de modo exclusivo(ver a figura 23.5) • Os protocolos da camada de transporte precisa de um par de endereços socket: o endereço socket no cliente e o endereço socket no servidor. • Essas informações fazem parte do cabeçalho IP e do cabeçalho do protocolo de camada de transporte. • O cabeçalho IP contém os endereços IP; o cabeçalho UDP ou TCP contém os números das portas.
  • 11. 23.11 23-1 Multiplexação e Demultiplexação • Multiplexação No lado do emissor, podem existir vários processos que precisem transmitir pacotes. Entretanto, há somente um protocolo de camada de transporte em execução em dado instante. Trata-se de uma relação um vários-para-um e que requer a multiplexação. • Demultiplexação No lado receptor, a relação é de um-para-vários e requer demultiplexação. A camada de transporte recebe os datagramas da camada de rede. Após verificação de erros e a eliminação do cabeçalho, a camada de transporte entrega cada mensagem para o processo usuário apropriado baseado no número de portas.
  • 12. 23.12 Figure 23.6 Multiplexação e Demultiplexação
  • 14. 23.14 Figure 23.8 Position of UDP, TCP, and SCTP in TCP/IP suite
  • 15. 23.15 23-2 USER DATAGRAM PROTOCOL (UDP) O User Datagram Protocol (UDP) é chamada de sem conexão, protocolo de transporte não confiável. Ele não adiciona nenhum controle adicional aos serviços de entrega IP, exceto pelo fato de implementar a comunicação entre processos, em vez da comunicação entre hosts. Da mesma forma, a verificação de erros é implementada de forma muito limitada. Portas conhecidas no UDP Datagramas de Usuários Checksum Operação do UDP Uso do UDP Topicos Discutidos: :
  • 16. 23.16 Table 23.1 Well-known ports used with UDP
  • 17. 23.17 • Em UNIX, as portas conhecidas são armazenados em um arquivo chamado / etc / services. • Cada linha neste arquivo dá o nome do servidor e o número de porta conhecido. • Podemos usar o grep utilitário para extrair a linha correspondente à aplicação desejada. • O seguinte mostra a porta para o FTP. Note-se que FTP pode usar a porta 21 com UDP ou TCP. Example 23.1
  • 18. 23.18 Example 23.1 (continued) SNMP usa dois números de porta (161 e 162), cada um para uma finalidade diferente,
  • 19. 23.19 23-2 Datagramas de Usuário Os pacotes UDP, denominados datagramas de usuário, possuem um cabeçalho de tamanho fixo 8 bytes. Portas origem: Esse campo especifica o número da porta usada pelo processo em execução no host de origem. Ele tem 16 bits de comprimento, significando que o número da porta pode variar de 0 a 65535. Portas destino: Esse campo especifica o número da porta usado pelo processo em execução no host de destino. Ele também tem 16 bits de comprimento. • Se o host de destino for um servidor (um cliente transmitindo uma solicitação), o número da porta, na maioria dos casos, é um número de porta conhecido. • Se o host de destino for um cliente (um servidor transmitindo sua resposta), o número da porta, na maioria das vezes, é um número de porta efêmero. Comprimento: Esse campo de 16 bits define o comprimento total de um datagrama UDP, compreendendo cabeçalho mais dados. Os 16 bits podem definir um comprimento total entre 0 a 65535 bytes. Entretanto, o comprimento total deve ser menos, pois um datagrama UDP deve ser repassado em um datagrama IP de comprimento total igual a 65535 bytes. Checksum: Esse campo de 16 bits é usado para detectar erros na transmissão de datagrama UDP (Cabeçalho mais dados).
  • 20. 23.20 Figure 23.9 Formato de um datagrama UDP
  • 21. 23.21 Comprimento de um datagrama UDP= Comprimento total IP – Comprimento do cabeçalho IP Note
  • 22.  Serviços sem conexão: Isso significa que cada datagrama de usuário enviado pelo UDP é um datagrama independente. Não existe nenhuma relação entre os diferentes datagramas de usuário, mesmo se eles forem provenientes do mesmo processo de origem e tiverem o mesmo programa de destino. • Os datagramas não são enumerados; • Não existe mecanismo para estabelecer e/ou terminar uma conexão virtual, ao contrário do que acontece com o TCP. 23.22 Operação do UDP
  • 23.  Controle de Fluxo e de erros: UDP é um protocolo de transporte muitos simples e não confiável. Não implementa controle de fluxo e, portanto, nenhum mecanismo de janelamento. O Receptor pode ser inundado com um número excessivo de mensagens que chegam a ele. • Não implementa controle de erros exceto checksum, Isso significa que o emissor não sabe se uma mensagem foi perdida ou duplicada. • Quando receptor detecta um erro por meio do cheksum, o datagrama de usuário é descartado de maneira imperceptível. • A ausência de controle de fluxo e de controle de erros significa que um processo de aplicação usando UDP deve implementar esses mecanismos. 23.23 Operação do UDP
  • 24.  Encapsulamento e Desencapsulamento: Para transmitir uma mensagem de um processo a outro, o protocolo UDP encapsula e desencapsula mensagens em um datagrama IP.  Formação de Filas: Quando um processo no lado cliente é iniciado, este solicita para o sistema operacional um número de porta. Algumas implementações criam tanto uma fila de chegada como uma de saída associada a cada processo, outras criam apenas uma fila de chegada associada a cada processo. • Mesmo que um processo quiser se comunicar com vários processos, ele obterá apenas um número de porta e, finalmente, uma fila de chegada e outra de saída. • As filas abertas pelo cliente são, na maioria dos casos, identificadas pelos números de porta efêmeros. • As filas funcionam enquanto o processo está em execução. Quando processo termina, as filas são desalocadas da memória. 23.24 Operação do UDP
  • 26.  O UDP é adequado para um processo que requeira comunicação solicitação- resposta simples com pouca preocupação com controle de erros e de fluxo.  O UDP é adequadp para um processo que implemente mecanismos internos de controle de fluxo e de erros. Por exemplo TFTP (Trivial File Transfer Protocol) implementa mecanismos internos de controle de fluxo e de erros. Ele pode usar o UDP de maneira fácil.  O UDP é muito utilizado no gerenciamento de redes, protocolo SNMP.  O UDP é usado em alguns protocolos de roteamento para atualização de rotas como o RIP. 23.26 Uso do UDP
  • 27. 23.27 23-3 TCP O TCP é um protocolo orientado a conexão, ele cria uma conexão virtual entre dois TCPs para enviar dados. Além disso, o TCP utiliza o fluxo e mecanismos de controle de erros no nível de transporte. Serviços TCP Características TCP Segmentos Conexão TCP Controle de Fluxo Controle de Erro Topicos Discutidos:
  • 28. 23.28 Tabela 23.2 Portas conhecidas TCP
  • 29.  O TCP, diferente do UDP, é um protocolo orientado a fluxo de dados.  No UDP, um processo envia mensagens, com delimitadores predefinidos, para o UDP, para serem transmitidas.  O UDP acrescenta seu próprio cabeçalho a cada uma dessas mensagens e as entregas para transmissão pelo IP.  Cada mensagem do processo é denominado datagrama de usuário e se torna, finalmente, um datagrama IP.  Nem o IP nem o UDP estabelecem relação entre os datagramas. 23.29 Serviço de Entrega de Fluxo de dados
  • 30. 23.30 Figure 23.13 Entrega de Fluxo de Dados • O TCP possibilita a um processo enviar dados Na forma de um fluxo de bytes. • O TCP cria um ambiente no qual os dois processos Parecem estar conectados por um “canal” imaginário Que transporta dados pela internet.
  • 31.  Como existe a possibilidade dos processos de transmissão e de recepção não gerarem ou lerem dados em uma mesma velocidade, o TCP precisa de Buffers para seu armazenamento;  Existem dois buffers, um buffer de transmissão e um buffer de recepção, um em cada direção;  Uma forma de implementar um buffer é usar uma matriz circular de posições. 23.31 Buffers de transmissão e Recepção
  • 32. EMISSOR:  No lado emissor, o buffer possui três tipos de câmaras.  A parte branca na figura 23.14 contém câmaras vazias que podem ser preenchidas pelo processo transmissor.  A área cinza armazena bytes que foram enviados, mas ainda não confirmados pelo receptor.  O TCP mantém esses buffers até o receber uma confirmação.  A área colorida contém bytes a serem enviados pelo transmissor TCP. RECEPTOR:  A operação no buffer no lado do receptor é mais simples.  O buffer circular é dividido em duas áreas (segmentos brancos e coloridos).  O segmento branco possui câmaras vazias a serem preenchidas por bytes recebidos da rede.  As seções coloridas contém bytes recebidos que podem ser lido pelo processo receptor.  Quando um byte é lido pelo processo receptor, a câmara é limpa e acrescentado ao pool de câmaras vazias. 23.32 Buffers de transmissão e Recepção
  • 33. 23.33 Figura 23.14 Buffers de transmissão e recepção
  • 34.  Embora o sistema de buffers trate da disparidade entre as velocidades dos processos de geração e leitura de dados, precisamos de mais um passo antes de podermos efetivamente transmitir dados.  A camada IP, como provedora de serviço para o TCP, precisa enviar dados em pacotes, não na forma de um fluxo de bytes.  Na camada de transporte, o TCP agrupa determinado número de bytes em pacotes, denominados segmentos.  O TCP acrescenta um cabeçalho a cada segmento (para fins de controle) e entrega o segmento para a camada IP para sua transmissão.  Os segmentos são encapsulados em datagramas IP e transmitidos. 23.34 Segmentos
  • 36.  O TCP oferece serviços full duplex no qual dados podem fluir em ambos as direções simultaneamente;  Cada processo TCP implementa um buffer de transmissão e um de recepção e os segmentos trafegam e ambas as direções. 23.36 Comunicação Full-Duplex
  • 37.  O TCP, diferente do UDP, é um protocolo orientado a conexão. Quando um processo no ponto A quer enviar e receber dados de outro processo no ponto B, ocorre o seguinte:  Os dois processos TCPs estabelecem uma conexão entre eles;  Os dados são trocados em ambos os sentidos;  A conexão é encerrada.  Observe que esta é uma conexão virtual, e não uma conexão física;  Um segmento TCP é encapsulado em um datagrama IP e pode ser recebido fora de ordem, perdido ou corrompido e, em seguida, precisa ser reenviado;  Cada um deles pode ser transmitido por um caminho diferente até atingir o destino;  Não existe conexão física;  O TCP cria um ambiente orientado a fluxo de dados no qual ele assume a responsabilidade de entregar na ordem correta os bytes para outro ponto. 23.37 Serviços Orientados a conexão
  • 38. Sistema de numeração:  Embora o software TCP mantenha controle sobre os segmentos que estão sendo transmitidos ou recebidos, não há nenhum campo especifico para indicar o número de um segmento no cabeçalho.  Em vez disso, existem dois campos genéricos denominados de número de sequência e número de confirmação.  Esses dois campos de referem ao número de bytes e não o número do segmento. Número de Bytes:  Este se refere à quantidade de bytes de dados TCP que são transmitidos em uma conexão.  A numeração é independente para cada sentido de transmissão.  Quando o TCP recebe bytes de dados de um processo, ele os armazena no buffer de transmissão e os numera.  A numeração não é iniciada necessariamente, a partir de 0. Em vez disso, o TCP gera um número randômico entre 0 e 2^32 – 1 como número inicial para primeiro byte.  Por exemplo, se por acaso o número randômico for 1.057 e o total de dados a serem transmitidos for 6.000 bytes, os bytes são numerados de 1.057 a 7.056. 23.38 Recursos do TCP
  • 39. Número de sequência:  Após os bytes terem sido numerados, o TCP atribui um número de sequência para cada segmento que está sendo transmitido.  O número de sequência para cada segmento é identificado pelo número do primeiro byte transportado no segmento.  Exemplo 23.3 Suponha que uma conexão TCP esteja transferindo um arquivo de 5.000 bytes. O primeiro deles recebe a numeração 10.001. Quais são os números de sequência para cada segmento se os dados foram enviados em cinco segmento, cada um deles transportando 1.000 bytes? 23.39 Recursos do TCP
  • 40. 23.40 A seguir, são apresentados os números de sequência de cada segmento: Example 23.3
  • 41. Número de Confirmação:  Cada parte enumera os bytes, normalmente, com um número de byte inicial diferente.  O número de sequência em cada direção identifica o número do primeiro byte transportado pelo segmento.  Cada parte também usa um número de confirmação para confirmar os bytes que recebeu.  Entretanto, o número de confirmação identifica o número do próximo byte que a parte espera receber.  Além disso, o número de confirmação é cumulativo, significa que a parte pega o número do último byte recebido, são e salvo, incrementa 1 a ele e anuncia essa soma como número de confirmação.  O termo cumulativo, nesse caso, significa que, se uma parte usa 5.643 como número de confirmação, ela recebeu todos os bytes do inicio até 5.642. Note que isso não significa que a parte tenha recebido 5.642 bytes, porque o número do primeiro byte nem sempre começa em 0. 23.41 Recursos do TCP
  • 42. Controle de Fluxo:  O TCP, diferente do UDP, implementa controle de fluxo. O receptor pode controlar a quantidade de dados que é enviada pelo emissor.  Isso é feito para evitar que o receptor fique sobrecarregado com uma quantidade excessiva de dados.  O sistema de controle de sequência possibilita que o TCP use um controle de fluxo orientado a bytes. Controle de Erros:  Para fornecer um serviço de transporte confiável, o TCP implementa controle de erros.  Embora controle de erros considere o segmento como a unidade de dados para fins de detecção de erros (segmento corrompido ou perdido), o controle de erros é orientado a bytes. Controle de Congestionamento:  O TCP, diferente do UDP, leva em conta o nível de congestionamento da rede.  A quantidade de dados que podem ser transmitidos por um emissor não é controlada apenas pelo receptor (controle de fluxo), mas também pelo nível de congestionamento na rede. 23.42 Recursos do TCP
  • 43. 23.43 Figure 23.16 O Formato de um segmento TCP
  • 44. Endereço de porta de Origem/Destino :  Trata-se um campo de 16 bits que identifica o número da porta do programa de aplicação tanto no host emissor como no host receptor. Número de sequência:  Identifica a posição deste segmento no fluxo de dados e cada conexão possui um fluxo de dados particular Número de confirmação:  Utilizado para confirmar o recebimento de segmentos enviados anteriormente e especifica o próximo segmento aguardado Comprimento do cabeçalho:  Esse campo de 4 bits identifica a quantidade de palavras de 4 bytes de um cabeçalho.  O comprimento do cabeçalho tem entre 20 e 60 bytes. Consequentemente, o valor desse campo pode ser entre 5 (5x4=20) e 15 (15x4=60). Reservado:  Trata-se de um campo de 6 bits reservado para uso futuro. Controle: Esse campo define 6 bits de controle (flags) distintos. 23.44 Cabeçalho TCP
  • 46. 23.46 Table 23.3 Description of flags in the control field
  • 47. Tamanho da Janela:  Esse campo define o tamanho de uma janela TCP, em bytes, que a outra parte deve manter, observe que o comprimento desse campo é de 16 bits, significando que o tamanho máximo de uma é de 65.535 bytes.  Normalmente, esse valor é conhecido como janela receptora (rwnd) e é determinado pelo receptor.  Nesse caso, o emissor deve obedecer àquilo que está configurado pelo receptor. Checksum:  Verificação de erros Urgent Point:  É válido apenas se a flag URG (Urgente) estiver ativo, é usado quando um segmento contém dados urgentes. Opções:  Esse campo pode conter um total de até 40 bytes de informações opcionais que serão inclusas ao cabeçalho TCP. ( Não trataremos dessas opções aqui; consulte a lista de referência para mais informações). 23.47 Cabeçalho TCP
  • 48. Estabelecimento da conexão:  O TCP transmite dados no modo full-duplex.  Quando dois processos TCPs em duas máquinas estão conectados, eles estão aptos a transmitir segmentos entre si, simultaneamente.  Isso implica que cada parte deve inicializar a comunicação e obter a aprovação da outra parte antes que quaisquer dados possam ser transferidos. 23.48 Conexão TCP
  • 49. Handshaking de três vias:  O estabelecimento de uma conexão no TCP é denominado handshaking de três vias (three-way handshaking).  O processo começa com o servidor. O programa servidor informa ao TCP que está pronto para aceitar uma conexão.  Isso é chamado de uma abertura passiva.  Embora o servidor TCP esteja pronto para aceitar conexão de qualquer máquina do mundo, ele não é capaz de estabelecer, por si só, uma conexão. 23.49 Conexão TCP
  • 50. 23.50 Figure 23.18 Connection establishment using three-way handshaking
  • 51. 23.51 Exemplo Prático usando Wireshake (SYN)
  • 52. 23.52 Exemplo Prático usando Wireshake (SYN+ACK)
  • 53. 23.53 Exemplo Prático usando Wireshake (ACK)
  • 54. 23.54 Exemplo Prático usando Wireshake (FIN)
  • 55. Transferência de Dados:  A figura 23.19 mostra um exemplo. Neste exemplo, após a conexão ser estabelecida (não mostrado na figura), o cliente transmite 2.000 bytes de dados em dois segmentos.  O servidor transmite então 2.000 bytes em um único segmento.  O cliente transmite mais um segmento.  Os três primeiros segmentos transportam dados, bem como confirmações, porém o último segmento de dados pelo cliente tem flag PSH (push) ativo, de modo que o servidor TCP saiba que deve entregar dados para processo servidor imediatamente, assim que eles forem recebidos. 23.55 Conexão TCP
  • 57. Encerramento de uma conexão:  Qualquer umas das partes envolvidas na troca de dados (cliente ou servidor) pode encerrar uma conexão, embora esta tenha sido, normalmente, iniciada pelo cliente.  Atualmente, a maioria das implementações permite duas opções para encerramento de uma conexão: o three-way handshaking (handshaking de três vias) e o four-wat handshakig (handshaking de quatro vias) com opção de semi-encerramento. Three-way Handshaking: 1 – Em uma situação normal, um cliente TCP, após receber um comando de encerramento do processo cliente, envia o primeiro segmento, um segmento FIN no qual a flag FIN está ativo. Como trata-se de apenas um segmento de controle, ele consumirá somente um número de sequência. 23.57 Conexão TCP
  • 58. Three-way Handshaking: 2 – O servidor TCP, após receber um segmento FIN, informa a seu processo TCP sobre essa situação e transmite o segundo segmento, um segmento FIN+ACK, para confirmar o recebimento do segmento FIN do cliente e, ao mesmo tempo, para anunciar o encerramento da conexão na outra direção. Esse segmento também pode conter o último bloco de dados do servidor. Se não estiver transportando dados, ele consumirá apenas um número de sequência. 3 – O cliente TCP transmite o último segmento, um segmento ACK, para confirmar o recebimento do segmento FIN do servidor TCP. Esse segmento contém o número de confirmação, que é 1 mais o número de sequência recebido no segmento FIN do servidor. Esse segmento pode transportar dados e não consome nenhum número de sequência. 23.58 Conexão TCP
  • 59. 23.59 Figure 23.20 Connection termination using three-way handshaking
  • 60. Semi-encerramento:  No TCP, um lado pode interromper a transmissão de dados enquanto ainda recebe dados, Isso é denominado semi-encerramento.  Embora ambos os lados possam transmitir um semi-encerramento, normalmente ele é iniciado pelo cliente.  Ele pode ocorrer quando o servidor precisa de todos os dados antes de poder iniciar o processamento.  Um bom exemplo é a ordenação. Quando um cliente transmite dados para um servidor para serem ordenados, o servidor precisa receber todos os dados antes de iniciar o processo de ordenação dos mesmos. 23.60 Conexão TCP
  • 62. Janela Deslizante:  O TCP utiliza a técnica de janela deslizante (slidding Window), para implementar controle de fluxo.  A figura 23.22 mostra um bom exemplo de janela deslizante no TCP.  A Janela abrange parte do buffer, que contém os bytes recebidos do processo.  Os bytes dentro da janela são bytes que podem estar em trânsito; ele podem ser enviados sem se preocupar coma confirmação.  A janela imaginária possui duas paredes: uma à direita e outra à esquerda.  Uma janela pode ser aberta, fechada ou reduzida. Essas três atividades, como veremos, estão sob controle do receptor, não do emissor.  O emissor tem de obdecer às ordens de receptor. 23.62 Controle de Fluxo (Pág 728)
  • 63. Janela Deslizante:  Abrir uma janela significa deslocar a parede direita mais para a direita.  Isso permite um número maior de bytes novos no buffer, candidatos a serem transmitidos.  Fechar uma janela significa deslocar a parede da esquerda mais para a direita.  Isso significa que alguns bytes foram confirmados e o emissor não precisa mais se preocupar com eles.  Reduzir a janela significa deslocar para esquerda a janela da direita, isso é veementemente desencorajado e não permitido em algumas implementações, pois significa renunciar à elegibilidade de alguns bytes para transmissão.  Este é um problema, caso o emissor já tenha enviado esses bytes. 23.63 Controle de Fluxo (Pág 728)
  • 64.  Em (a) é mostrada a representação da perspectiva do transmissor. O retângulo sombreado diz respeito aos quadros a serem enviados;  Cada vez que um quadro é enviado, o retângulo sombreado diminui da esquerda para a direita;  Quando ocorre o reconhecimento (ACK) de um quadro recebido pelo receptor, o retângulo aumenta da esquerda para a direita;  Os quadros antes da barra vertical são os quadros enviados e confirmados, não necessitando de armazenamento em buffer;  O quadro de índice 3, após a barra vertical, indica o quadro transmitido, mas ainda não confirmado e que precisa estar em buffer caso precise ser reenviado.  Em (b) é mostrada a perspectiva do receptor;  O retângulo sombreado representa os quadros a serem recebidos;  À medida que os quadros são reconhecidos (ACK), o retângulo diminui da esquerda para a direita;  À medida que os quadros são recebidos, o retângulo aumenta da esquerda para a direita. 23.65 Outro Exemplo com Janela Deslizante
  • 65. 23.66 Outro Exemplo com Janela Deslizante
  • 66. 23.67 Uma janela deslizante é usada para implementar maior eficiência à transmissão, bem como controle de fluxo de dados, de modo que o destino não fique sobrecarregado com dados. As janelas deslizantes no TCP são orientadas a bytes. Note
  • 67. 23.68 Qual é o valor da janela do receptor (rwnd) para o host A se o receptor, host B, tem um tamanho do buffer de 5000 bytes e 1000 bytes de dados recebidos e não processados​​? Example 23.4 Solução O valor da rwnd = 5000 - 1000 = 4000. Host B pode receber apenas 4000 bytes de dados antes de transbordar seu buffer. Host B anuncia este valor em seu segmento ao lado A.
  • 68. 23.69 Qual é o tamanho da janela para o host A se o valor de rwnd é 3000 bytes e o valor do cwnd é de 3500 bytes? Example 23.5 Solução O tamanho da janela é o menor dos rwnd e cwnd, que é de 3000 bytes.
  • 69. 23.70 Figura 23,23 mostra um exemplo não real de uma janela deslizante. O remetente enviou bytes até 202. Assumimos que cwnd é de 20 bytes (na realidade este valor é milhares de bytes). O receptor enviou o número de confirmação de 200 com uma rwnd de 9 bytes (na realidade este valor é milhares de bytes). O tamanho da janela do remetente é o mínimo de rwnd e cwnd, ou 9 bytes. Bytes 200-202 são enviadas, mas não reconhecido. Bytes 203-208 pode ser enviado sem se preocupar com reconhecimento. Bytes 209 e acima não podem ser enviados. Example 23.6
  • 71. 23.72 Alguns Pontos Sobre TCP Janela deslizante: ❏ O tamanho da janela é o valor mínimo entre rwnd e cwnd. ❏ A origem não deve enviar uma janela de dados completa. ❏ A janela pode ser aberta ou fechada pelo receptor, porém, não pode ser reduzida. ❏ O destino pode enviar uma confirmação a qualquer instante desde que não resulte na redução de uma janela. ❏ O receptor pode fechar temporariamente uma janela; O emissor, entretando, sempre pode transmitir um segmento de 1 byte após a janela ter sido fechada. Note
  • 72. O TCP é um protocolo de transporte confiável. Isso significa que um programa de aplicação, que entrega o fluxo de dados para o TCP, depende do TCP para entregar em ordem o fluxo inteiro para programa de aplicação na outra ponta, sem erros, e sem qualquer informação perdida ou duplicada. Checksum  Cada segmento inclui um campo de checksum que é usado para validar a existência de um segmento corrompido;  Se o segmento estiver corrompido, ele será descartado pelo TCP de destino e considerado com perdido;  O TCP usa o campo de checksum de 16 bits, que é obrigatória em todos os segmentos. 23.73 Controle de Erros (Pág 731)
  • 73. Confirmação O TCP usa confirmação para validar o recebimento do segmento de dados; Um segmento de controle que não transporta dados, mas que usa número de sequência, também deve ser confirmado; Um segmento ACK jamais necessita de confirmação. Retransmissão  O cerne do controle de erros é a retransmissão de segmentos;  Quando um segmento estiver corrompido, perdido ou com atraso, ele é retransmitido;  Em implementações modernas, um segmento é retransmitido em duas ocasiões: Quando o tempo do timer de retransmissão se esgota ou quando o emissor recebe três ACKs duplicados. 23.74 Controle de Erros
  • 74. Retransmissão após RTO (Retransmission time-out)  As implementações recentes do TCP mantém um time RTO para todos os segmentos pendentes (transmitidos, mas não confirmados);  Quando vence o time-out, o primeiro segmento pendente é retransmitido, muito embora a falta de um ACK recebido possa ser enviado a um segmento com atraso, um ACK com atraso ou uma confirmação perdida;  Não existe um timer ativo para segmento que transporta apenas confirmação, significando que nenhum segmento desse tipo poderá ser reenviado;  O valor de RTO é dinâmico no TCP e é atualizado tomando-se como base RTT (Round-Trip Time, em inglês, tempo de ida e volta) do segmento;  O RTT é o tempo necessário para um segmento atingir o destino e uma confirmação ser recebida. 23.75 Controle de Erros
  • 75. Retransmissão Após Três Segmentos ACK Duplicados  A regra anterior sobre a retransmissão de um segmento é suficiente se o valor de RTO não for muito grande. Algumas vezes, porém, um segmento é perdido e o receptor recebe um número tão grande de segmentos fora de ordem a ponto deles não poderem ser salvos (o tamanho do buffer é limitado).  Para amenizar essa situação, a maioria das implementações atuais segue a regra dos três ACKs duplicados e retransmite imediatamente um segmento faltante. Esse recurso é conhecido como retransmissão rápida. 23.76 Controle de Erros
  • 76. Segmentos Fora de Ordem  Quando segmento estiver atrasado, perdido ou tiver sido descartado, os segmentos após este, chegarão fora de ordem. Originalmente, o TCP foi desenvolvido para descartar todos os segmentos fora de ordem, resultando na retransmissão de todos os segmentos faltantes e dos segmentos seguintes.  Hoje em dia, a maioria das implementações de TCP não descarta segmentos fora de ordem. Elas os armazenam, temporariamente, em um buffer e colocam uma flag indicando como segmentos fora de ordem até a chegada dos segmentos faltantes.  O TCP garante que os dados são entregues, em ordem, para processo receptor. 23.77 Controle de Erros
  • 79. 23.80 O receptor TCP entrega apenas dados ordenados para o processo. Note