LISTA 3 – REDES DE COMPUTADORES
Nome: Rafael Greca Vieira Matrícula: 2018000434
1) A comunicação lógica é o método utilizado entre os processos da aplicação para que eles consigam
transmitir mensagens si e sem se preocupar com a estrutura física delas. Essa comunicação cria a falsa
impressão de que os processos estão conectados diretamente, mesmo eles estando em locais diferentes.
2) A camada de transporte possui vários protocolos. Os dois mais conhecidos são o TCP e o UDP.
O UDP fornece um serviço não confiável (ela pode se tornar confiável caso a confiabilidade esteja
embutida na aplicação), sem conexão e não tem controle sobre o congestionamento (o que pode causar
muitas perdas entre um remetente e o destinatário). Em algumas aplicações o UDP é preferível em
relação ao TCP, como, por exemplo:
• Um melhor controle no nível de aplicação sobre quais dados são enviados e quando;
• Como o UDP apenas envia as mensagens sem nenhuma preliminar, não ocorrerá atrasos para
estabelecer uma conexão. Isso se deve ao fato dela ser sem conexão.
• Pequena sobrecarga de cabeçalho de pacotes
Já o TCP, ele é orientado a conexão, oferece um serviço full-duplex, a conexão é sempre feita ponto a
ponto (possui apenas um destinatário e um remetente). E a sua principal vantagem sobre o UDP é que
ele é confiável, pois apresenta inúmeras funções para garantir a sua confiabilidade, como a detecção de
erros e retransmissão.
A camada de aplicação utilizam protocolos que irão definir regras e formatos que as mensagens devem
ter para serem trocadas entre aplicações de rede. Os protocolos mais conhecidos são: HTTP (utilizado
para tratamento de pedidos/respostas entre cliente e servidor), SMTP (usado nos e-mails), FTP
(protocolo mais conhecido para a transferência de arquivos na internet) e TELNET (usado para
comunicação entre computadores ligados em uma rede).
3) O processo de multiplexação será utilizado quando se deseja reunir partes diferentes de dados e que
vieram de sockets diferentes do hospedeiro de origem, encapsular cada parte com suas respectivas
informações necessárias para que sejam criados segmentos. Logo depois de concluído, os segmentos
serão entregues à camada de rede. Já a demultiplexação será responsável por pegar os segmentos da
camada de transporte e enviar seus dados para os sockets destinados.
Os sockets do TCP e UDP irão utilizar informações contidas nos cabeçalhos dos segmentos. O TCP
utiliza as portas de origem e destino, números de sequência, comprimento e reconhecimento, janela de
recepção, a mensagem e valor de verificação. Já o UDP utilizam as portas de origem e destino,
comprimento, a mensagem e soma de verificação.
4) A soma de verificação é feita quando se deseja realizar uma verificação de erros. O UDP (do
remetente), primeiramente, irá realizar a soma de todas as palavras que possuem 16 bits. O resultado
dessa soma irá resultar em uma palavra de 17 bits. O próximo passo é tirar o bit 17 (para que a palavra
resultante volte a ter tamanho de 16 bits) e soma-lo com os 16 bits restantes. Exemplo:
1001101001010110
0000101110001110 +
---------------------------
01010010111100100
01010010111100100
0000110111001100 +
---------------------------
1011001110110000
011001110110000
+1
----------------------
Resultado: 011001110110001
5) A soma de verificação é utilizada quando é necessário verificar se existe erro no bits do pacote que
foi transmitido. Protege o segmento TCP contra erros de transmissão e de entrega dos dados.
O número de verificação é o número responsável por identificar o pacote quando ele está no fluxo de
dados do transmissor em direção ao receptor. Também é utilizado para detectar um pacote perdido ou
se o determinado pacote possui cópias.
O temporizador é o responsável por controlar a temporização de um pacote quando ele é perdido dentro
do canal. Se um pacote estiver atrasado e acabar a temporização, o destinatário pode receber cópias de
um mesmo pacote.
O número de reconhecimento é o número utilizado pelo destinatário quando ele deseja avisar o
remetente que o pacote foi recebido (avisar que o pacote de número X chegou). Além disso, também
carrega consigo a sequência do pacote.
6) No paralelismo o remetente pode enviar vários pacotes de uma vez sem ter que esperar o destinatário
retornar com uma mensagem de confirmação. Já no pare e espere, primeiramente o remetente irá enviar
o primeiro bit do pacote. O destinatário não irá receber o pacote inteiro de uma vez, mas sim um bit por
vez. Ao final do último bit o destinatário irá enviar uma mensagem de confirmação para o remetente.
No protocolo go-back-n, é pré definido um número de pacotes que podem ser enviado de uma vez sem
que o destinatário retorne a mensagem para cada um deles. O remetente deve estar atento para as
seguintes situações:
• O protocolo deverá verificar se ainda há espaço na janela antes de enviar o pacote, caso não
tiver ele não poderá ser enviado.
• Se uma mensagem ACK chegar antes da temporização acabar, ele então é reiniciado para ser
utilizado pelo próximo pacote. Se for esgotado, todos os pacotes que não foram reconhecidos
serão enviados novamente.
O destinatário será responsável por, apenas, enviar mensagens ACK para confirmar que recebeu cada
pacote enviado pelo remetente.
No protocolo repetição seletiva, os pacotes só serão retransmitidos se houver algum problema. Essa
seleção faz com que evite realizar reenvios desnecessários. Uma diferença entre o protocolo go-back-n
e o de repetição seletiva é que o da repetição seletiva cada pacote tem seu próprio temporizador.
7) É utilizado em alguns protocolos onde o remetente pode transmitir mais de um pacote por vez e
ainda garantir uma entrega confiável e ordenada das mensagens. O receptor envia mensagens de
confirmação para o remetente com os pacotes que recebeu. Se não receber a mensagem de confirmação
de um determinado pacote, ele será transmitido novamente.
Não é permitido um número ilimitado de pacotes para que o buffer de recepção da conexão não fique
saturado.
8) Caso o tempo limite do temporarizador for muito grande, se houver uma falha de envio do pacote,
ele demorará para ser enviado novamente. Se o tempo limite for muito pequeno, não terá um tempo
adequado para que o receptor (destinatário) receba o pacote e envie a mensagem de conformação, pois
não dará tempo da mensagem de confirmação chegar e o remetente irá transmitir o pacote novamente
(loop infinito).
9)
• O bit URG é utilizado para mostrar que existem dados nesse segmento e que foram marcados
como ‘urgente’ pela entidade de camada superior.
• O bit ACK é utilizado para indicar se o valor carregado no campo de conhecimento é valido (se
foi recebido com sucesso).
• Os bits RST, SYN e FIN são usados para estabelecer e encerrar a conexão.
• O bit PSH é utilizado para indicar que o destinatário deverá passar imediatamente os dados para
a camada superior.
• O campo janela de recepção é utilizado para controlar o fluxo.
10) Caso aconteça do TCP remetente receber três ACKs consecutivos e que possuem o mesmo número
de reconhecimento, isso é um indicativo que o segmento que se seguiu ao segmento reconhecido três
vezes foi perdido. Uma maneira de solucionar esse problema seria se o TCP remetente realizasse uma
retransmissão rápida do segmento que falta antes que o temporarizador expire.
11) O controle de fluxo é utilizado para evitar que o buffer do destinatário fique saturado. Isso é feito
através da compatibilização de velocidades. Ou seja, leva em consideração a taxa com que o remetente
está enviando e a taxa com que o receptor está recebendo e lendo.
12) Na conexão TCP, qualquer processo pode encerra-lá. Quando isso acontece, no processo do
hospedeiros os buffers serão liberados, assim como suas variáveis, para serem usados novamente em
uma outra conexão futura.
Etapa 1: O cliente irá solicitar o encerramento através de um comando.
Etapa 2: O TCP cliente irá enviar um segmento TCP ao processo servidor e que contem um bit flag FIN
no cabeçalho com valor 1.
Etapa 3: Ao receber o segmento, o servidor irá enviar de volta ao cliente um segmento de
reconhecimento (ACK).
Etapa 4: O servidor irá enviará um segmento de encerramento e que também irá conter o bit flag FIN
com valor igual a 1.
Etapa 5: O cliente irá reconhecer o segmento de encerramento do servidor.
Etapa 6: Os dois processos já estarão liberados a partir de agora.
Etapa 7: Uma espera temporizada irá acontecer. E, quando acabar, a conexão será encerrada.
13) O remetente e o destinatário irão receber a mensagem, dividir em blocos de 16 bits, somá-los e
armazenar o valor em uma variável.
funcao checksum(mensagem):
divide_dados_mensagem()
para cada bloco faça:
soma ← soma + valor_bits(bloco)
fim_para
checksum_valor ← complemento_de_um(soma)
retorna checksum_valor
remetente = checksum(mensagem)
destinatario = checksum(mensagem)
se remetente + destinatario = 1111111111111111 então:
retorna verdadeiro
senão
retorna falso