Este documento representa meus estudos acerca do livro Redes de Computadores e a Internet - uma abordagem top down


Conceitos Fundamentais

Aplicações são processos distribuídos que se comunicam.

  • trocam mensagens
  • rodam nos sistemas finais (endpoints ou sistemas na borda/edge)

Protocolo

protocolo da camada:

  • não eh a aplicação.
    • eh apenas uma parte dela, o qual a aplicacao implementa.
  • emissor: cria e emite msgs
  • receptor: recebe msgs -> se alternam constantemente

ele define:

  • os tipos de mensagem:
    • exemplos: requisição e resposta.
  • sintaxe dos tipos de mensagem:
    • campos e delimitadores.
  • semantica dos campos
    • define o significado da informacao dos campos.
  • regras e timing:
    • quando e como um processo envia e response msgs.

Processo

Processo: Programa que roda num host. Dois processos em hosts distintos se comunicam por um protocolo da camada de transporte.

User Agent

User Agent - UA (agente de usuario): Eh uma interface entre o usuario e a camada de aplicacao. Eh a aplicacao propriamente dita, ou seja, o que implementa a aplicacao. exemplos: Navegador web, app de email, streaming…

Cliente x Servidor

client: solicita o servico, faz as reqs.

server: fornece o servico, aberto para requisicoes.

API (Aplication Programming Interface)

A API define a interface entre a aplicacao e camada de transporte. (sao, em geral, definidas pelos RFCs)

APIs utilizam sockets

Socket

um socket no sistema operacional eh um canal de comunicacao bidirecional (representa uma sessão de rede) que permite a troca de dados entre processos, um duto. Funciona como interface de entrada e saida do processo:

  • um processo emite e recebe mensagens da rede atraves de seus sockets.
  • O processo usa uma infraestrutura de transporte, a qual levara a mensagem ate a porta do processo do destino.
    • O processo eh agnostico ao canal de transmissao.

Quando um processo precisa receber dados de entrada de uma conexao de rede, ele cria uma socket e associa esse socket a uma porta.

Quando um client se conecta a esse Endereco IP e porta, o SO redireciona a conexao para o processo que esta escutando essa porta e os dados sao trocados entre o cliente e o processo.

Endereco IP

IP: 32-bits que identificam unicamente uma interface. (ou 64-bits para o IPV6).

Porta: Numero de porta destino: permite o receptor determinar a qual processo uma mensagem deve ser entregue.

Um processo identifica univocamente uma comunicacao entre 2 processos na internet em um janela de tempo.

  • (IP_origem Porta_origem IP_destino Porta_destino)