Predefinição:RCO 1110232 2015-2

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar

Diário de aula de RCO - 2015-2 - Prof. Tiago Semprebom

Professor

Professor: Tiago Semprebom
Email: tisemp@ifsc.edu.br
Atendimento paralelo: 5a feira 17:30h - 18:30 h (Lab. de Desenvolvimento de Tele)
Endereço web do grupo: http://groups.google.com/group/ifsc_res
Endereço de e-mail da disciplina: ifsc_res@googlegroups.com

IMPORTANTE: o direito de recuperar uma avaliação em que se faltou somente existe mediante justificativa reconhecida pela coordenação. Assim, deve-se protocolar a justificativa no prazo de 48 horas, contando da data e horário da avaliação, e aguardar o parecer da coordenação. O não cumprimento desse procedimento implica a impossibilidade de fazer a recuperação, e assim a reprovação na disciplina.

Plano de Ensino

Conceitos

Matrícula A1 A2 A3 Rel. Tec. Final
142003381-6 X X X X X
142002607-0 X X X X X
142006774-5 X X X X X
141005709-7 X X X X X
142001234-7 X X X X X
142001326-2 X X X X X
141000292-6 X X X X X
142003354-9 X X X X X
142002006-4 X X X X X

F: faltou
(X): conceito da recuperação
negrito: com direito a recuperação

Material de apoio

Curiosidades

Internet-map.png
Uma representação artística das interligações na Internet

Aulas

08/10/15: Apresentação da disciplina

  • Apresentação da disciplina, plano de aula, trabalhos e métodos de avaliação.
  • Internet: sistemas finais, borda da rede e núcleo da rede.

15/10/15: Viagem à Latinoware

  • Viagem a conferência Latino-Americana de Software Livre, (Latinoware).

22/10/15: Introdução à Redes de Computadores

  • Hosts, elementos finais e modelos de serviço.
  • Visão de serviços e componentes, borda da rede, núcleo da rede, protocolos

29/10/15: Introdução à Redes de Computadores

  • Serviço orientado à conexão (TCP).
  • Serviço não orientado à conexão (UDP).
  • Comutação de circuitos vs Comutação de pacotes.
  • FDMA e TDMA.
  • Resolução de exercícios (Lista 1)

05/11/15: Introdução à Redes de Computadores

  • Redes de acesso e meio físico
  • Atrasos em redes de comutação de pacotes
  • Arquitetura em Camadas

12/11/15: Arquitetura em Camadas

19/11/15: Introdução à Redes de Computadores

26/11/15: Camada de Aplicação

  • A camada de aplicação (ver estes [slides)
  • Lista de Exercícios II e III

03/12/15: Camada de Aplicação

  • Camada de Aplicação (ver estes [slides])
  • Protocolos SMTP, IMAP, POP3, FTP e DNS.
  • Resolução de exercícios (Lista 2)

Experimento 1: Comunicação de dados

A comunicação dados pode ser entendida como troca de informação entre dois dispositivos através de algum meio de comunicação. A comunicação ocorre no âmbito de um sistema de telecomunicações, composto por equipamentos (hardware) e programas (softwares). Um sistema básico de comunicação de dados se constitui de cinco componentes:

Rede-intro-1.png

  1. A mensagem: a informação a ser transmitida. O conteúdo da mensagem, seja um texto, música, video, ou qualquer outro tipo de informação, é representada por conjuntos de bits (dígitos binários).
  2. Transmissor: dispositivo que transmite a mensagem.
  3. Receptor: dispositivo que recebe a mensagem.
  4. Meio de comunicação: caminho físico por onde viaja a mensagem do transmissor até o receptor.
  5. Protocolo: conjunto de regras que governa a comunicação de dados.

Neste experimento, vamos interagir com um servidor web e identificar esses cinco componentes.

  1. Usando um navegador, acesse os seguintes links:
  2. Vamos repetir o acesso aos links acima, porém sem usar o navegador. A ideia é que nós façamos o papel de navegador. Isso deve ser feito com os seguintes passos:
    • Abra um terminal de texto no Linux (menu Aplicativos->Acessórios->Terminal).
    • Execute este comando:
      telnet tele.sj.ifsc.edu.br 80
      
    • Após aparecer esta linha:
      Trying 200.135.37.75...
      Connected to integrado.sj.ifsc.edu.br.
      Escape character is '^]'.
      
      digite o seguinte:
      GET /~tisemp/RES/arquivo.txt HTTP/1.0
      
      e em seguida tecle ENTER duas vezes.
    • Agora execute o seguinte para acessar o outro link:
      telnet tele.sj.ifsc.edu.br 80
      
    • Após aparecer esta linha:
      Trying 200.135.37.75...
      Connected to integrado.sj.ifsc.edu.br.
      Escape character is '^]'.
      
      digite o seguinte:
      GET /~tisemp/RES/teste.html HTTP/1.0
      
      e em seguida tecle ENTER duas vezes.
    • Compare o resultado das execuções desses comandos com o que se viu no navegador. Qual a diferença em cada caso ?
    • Identifique os componentes do sistema de comunicação de dados nesse acesso direto.

Experimento 2: transmissão de mensagens de aplicação

Neste experimento, serão observadas as mensagens transmitidas entre um navegador e um servidor web, e com base nelas devem ser identificados:

  • os protocolos envolvidos e suas respectivas camadas dentro do modelo da Internet.
  • os encapsulamentos realizados por esses protocolos.
  • as informações que possibilitam identificar univocamente o navegador e o servidor web durante sua comunicação.
  1. Execute o wireshark em seu computador: abra um terminal em Aplicativos->Terminal e execute
    sudo wireshark
    
  2. Na tela do wireshark, ative a captura na interface de rede eth0 (ela está listada no lado esquerdo).
  3. Usando um navegador, acesse o link http://tele.sj.ifsc.edu.br/~tisemp/RES/arquivo.txt.
  4. Interrompa a captura no wireshark, clicando no menu Capture->Stop.
  5. Na tela do wireshark, escreva http na caixa de edição Filter, e em seguida clique em Apply.
  6. Selecione o primeiro pacote da lista. Em seguida, clique no menu Analyze->Follow TCP Stream. Uma tela se abrirá, e nela você poderá observar os dados transmitidos pelo navegador (em vermelho) e pelo servidor web (em azul). Esses são os dados da conversação ... todo o resto são informações de outros protocolos usadas para realizar a comunicação.
  7. Voltando à lista de pacotes mostrada pelo wireshark, observe a sequência de pacotes. Com base nela identifique:
    • os protocolos envolvidos
    • em que camada cada um deles atua
    • que informações mantidas nesses protocolos possibilitam identificar o navegador e o servidor web.
  8. Cada protocolo transmite e recebe pacotes com um determinado formato, composto por cabeçalho e dados carregados (payload). Identifique nos pacotes recebidos que partes correspondem a cabeçalho e dados carregados.
  9. DESAFIO: imagine que foram capturados pacotes em uma rede, em que se monitoram as comunicações de uma determinada pessoa sob investigação. O investigador deve analisar esses pacotes em busca de arquivos que tenham sido transmitidos. Os pacotes capturados foram salvos em um arquivo de captura do wireshark, o qual se encontra aqui:

    captura.log

    Para visualizar os pacotes, use o menu File->Open do wireshark. Verifique se existem arquivos transmitidos dentro desses pacotes, e, caso afirmativo, extraia-os e visualize seus conteúdos. Para cada arquivo encontrado, informe:
    • qual o protocolo de aplicação usado para transmiti-lo
    • que computador foi usado para acessá-los, e qual servidor foi acessado.

Experimento 3: pacotes que passeiam pela rede

Neste experimento, deve-se evidenciar a transmissão de pacotes desde o transmissor até o receptor, que pode estar em outra rede. Como já foi discutido, para que isso seja possível deve haver uma forma de transmitir esses pacotes para dispositivos intermediários na rede, que os encaminham para seus destinos. Quer dizer, os pacotes devem ser roteados até seu receptor.

  1. Execute o wireshark em seu computador, e ative a captura de pacotes.
  2. Usando um navegador, acesse esta página.
  3. Observe os pacotes transmitidos entre seu computador e o computador que atendeu seu pedido e respondeu com o conteúdo da página (isso é, o servidor web).
    • que informações identificam essa comunicação ?
    • quais os protocolos envolvidos ?
  4. O servidor web está fora da rede do laboratório. Assim, os pacotes precisaram ser encaminhados pelo computador do professor para a rede da escola (lembre que o computador do professor fica entre a rede do laboratório e a do Câmpus). Portanto, nesse computador deve ser possível visualizar seus pacotes sendo transmitidos em direção ao servidor, assim como a resposta do servidor. Observe esses pacotes no wireshark executado pelo professor.
    • as informações que identificam suas comunicações são as mesmas que as identificadas em seu próprio computador ?
  5. Acesse a página da UFSC. Enquanto isso, observe na tela do projetor do laboratório o wireshark no computador do professor capturando seus pacotes.
    • que informações identificam suas comunicações ?
  6. O servidor web da UFSC está em outra rede. Com certeza vários equipamentos intermediários precisarão ajudar para que os pacotes cheguem lá, e as respostas voltem para os seus computadores. Para saber por onde seus pacotes passam, use este comando:
    traceroute -n www.ufsc.br
    
    • que informação está sendo usada para encaminhar os pacotes até o servidor web da UFSC ?
    • que protocolo mantém e usa essa informação ?


Para pensar

  1. Para que o protocolo HTTP é usado atualmente além de acesso a documentos na web? Faça uma pesquisa sobre isso.
  2. Pesquise o significado dos cabeçalhos HTTP vistos nos acessos feitos na aula de hoje.

Considerações finais

Os experimentos realizados buscaram introduzir alguns mecanismos envolvidos na comunicação através de uma rede de computadores. Tais mecanismos são implementados por alguns protocolos, lembrando que um protocolo especifica o formato dos pacotes transmitidos e as regras de comunicação para intercâmbio desses pacotes. Durante os experimentos, teve-se contato com alguns protocolos importantes envolvidos em comunicações na Internet, assim como algumas das principais informações definidas e usadas por esses protocolos. A visualização da hierarquia em que operam esses protocolos buscou mostrar o modelo de camadas da Internet, que define como deve funcionar um sistema que se comunica nesse tipo de rede.

Para pensar:

  • Para cada experimento, desenhe um diagrama de rede que mostre os equipamentos envolvidos. Para cada equipamento, desenhe também o modelo de camadas da Internet. Por fim, mostre o fluxo dos pacotes através dessas camadas (desde o transmissor até o receptor), indicando:
    • que protocolo foi usado em cada camada.
    • que serviço cada protocolo realizou.
    • que informações foram usadas por cada protocolo.

10/12/15: Camada de Aplicação


17/12/15: Avaliação 1

  • Conteúdos abordados: Arquitetura Internet (Cap. 1 Kurose) e Camada de Aplicação (Cap. 2 Kurose).
  • Revisão: 18h:45m - 19h:15m
  • Avaliação: 19h:15m - 21h:15m

10/04/15: Camada de Transporte

  • Vista de prova - Arquitetura Internet e Camada de Aplicação
  • Camada de Transporte (ver estes [slides])
  • Resolução de exercícios (Lista 4)
  • Resolução de exercícios (Lista 5)

Até o momento nos concentramos nos serviços de rede (Camada de Aplicação). Afinal, são elas que usamos para nos comunicarmos através das redes de computadores. No entanto, aplicações dependem de outros protocolos para poderem se comunicar, os quais cuidam dos detalhes envolvidos na transmissão e recepção de mensagens em uma rede vasta como a Internet.

As aplicações se comunicam por meio de mensagens. Cada protocolo de aplicação (HTTP, POP3, DNS, IMAP, SMTP, SIP, ...) tem seu formato de mensagem. Essas mensagens podem ser pequenas (ex: DNS, SIP) ou por vezes grandes (ex: SMTP, HTTP, POP3). De qualquer forma, a aplicação precisa que suas mensagens sejam transmitidas para o outro participante da comunicação, que está em um computador remoto. Para isso ela usa um protocolo de transporte.

Res-Camadas-protocolos.png
Algumas aplicações e protocolos de transporte na Internet

Como já discutido, mais de uma aplicação pode existir em um mesmo computador. Por isso, uma das principais atribuições de um protocolo de transporte é identificar de qual aplicação é uma mensagem a ser transmitida, e para qual aplicação se destina uma mensagem recebida. Deve-se ter em mente que uma aplicação é representada por um programa em execução em um computador, portanto um protocolo de transporte possibilita a comunicação entre processos que estão sendo executados usualmente em computadores diferentes. Em nossas discussões anteriores chamamos isso de classificação das mensagens, mas o termo usado para expressar essa capacidade dos protocolos de transporte é multiplexação. No caso específico dos protocolos de transporte da Internet (TCP e UDP), um número de port é usado para fazer essa distinção, e por isso essa função é denominada multiplexação baseada em port.

Uma comunicação entre aplicações é composta basicamente de duas informações principais: endereços dos hosts participantes 
e números de port dos processos. Os endereços são responsabilidade da Camada de Rede (onde há o protocolo IP), e os números 
de port são usados na Camada de Transporte (onde estão os protocolos TCP e UDP).

Mas por que existem dois protocolos de transporte ? Talvez ajude a esclarecer essa questão se compararmos as necessidades das aplicações:

Aplicação Tolerância a perdas Tolerância a atrasos Tamanhos de mensagens
HTTP baixa média variável ... podem ser muito grandes (de poucos bytes a centenas de megabytes ou mais)
SMTP baixa alta variável ... podem ser grandes (de centenas bytes a alguns megabytes)
DNS média baixa pequenas (algumas centenas de bytes)
POP3 baixa média variável ... podem ser grandes (de centenas bytes a alguns megabytes)
SIP média média pequenas (algumas centenas de bytes)
VoIP média baixa pequenas (tipicamente < 164 bytes)

Durante o projeto e aperfeiçoamento dos protocolos da Internet, convergiu-se para a definição de dois protocolos de transporte:

  • TCP (ver RFC 793): protocolo orientado a conexão, com garantia de entrega, controle de fluxo e controle de congestionamento.
  • UDP (ver RFC 768): protocolo orientado a datagrama (não há conexão), sem garantia de entrega ou qualquer outra verificação ou controle. Basicamente faz somente a multiplexação baseada em port.

Curiosidade: veja os anos em que foram publicados as especificações desses protocolos ...

As diferenças entre eles serão melhor detalhadas nas próximas aulas. Hoje farems alguns experimentos para ter uma ideia de como se comportam as comunicações feitas com esses protocolos.

17/04/15: Camada de Transporte

  • Camada de Transporte (ver estes [slides)
    • Construção de um protocolo de transferência confiável
    • Volta-N, Retransmissão Seletiva
  • Resolução de exercícios (Lista 6)
  • Resolução de exercícios (Lista 7)

24/04/15 Camada de Transporte

  • Avaliação de recuperação: Arquitetura Internet e Camada de Aplicação (17h - Sala 3)

Atividade

As atividades de hoje buscarão mostrar as características básicas de comunicações com protocolos de transporte.

Aplicações e protocolos de transporte

Faça uma rápida pesquisa e descubra que protocolos de transporte (e que ports) são usados por estas aplicações:

  • SSH
  • FTP
  • BitTorrent
  • emule
  • WINS
  • Compartilhamento de arquivos do Windows
  • Windows Terminal Service
  • NFS
  • Openvpn
  • RADIUS
  • DHCP
  • SNMP
  • NTP
  • LDAP
  • Mysql
  • Postgresql
  • Oracle RDBMS
  • Syslog
  • CUPS

Que protocolo de transporte predomina nesse conjunto ?

Tipos de protocolos de transporte: TCP x UDP

Nestes experimentos, serão evidenciadas diferenças entre os protocolos TCP e UDP.

Experimento 1

Ambos protocolos de transporte podem ser usados por aplicações que precisem se comunicar. Porém cada um deles têm certas propriedades, então a escolha precisa ser feita dependendo do tipo de comunicação a ser feita pela aplicação. Por exemplo, o que aconteceria se um arquivo fosse transferido de um computador a outro com ambos protocolos ?

  1. Abra um terminal e execute o seguinte comando para fazer o download de um arquivo a ser usado no experimento:
    wget http://tele.sj.ifsc.edu.br/~tisemp/RES/ubuntu.iso
    
  2. Observe o tamanho do arquivo transferido ... ele deve ter exatamente 832569344 bytes (cerca de 832 MB). Você pode fazer isso com o comando ls -l ubuntu.iso, ou executando o gerenciador de arquivos e visualizando as propriedades desse arquivo.
  3. Escolha um colega para fazer o experimento, em que o arquivo será transferido de um computador para o outro.
  4. A primeira transferência será feita usando o protocolo TCP da seguinte forma:
    • No computador receptor execute:
      nc -l 5555 > arquivo
      
    • No computador transmissor execute (X é o número do seu computador, visível em sua etiqueta):
      time nc 192.168.1.X 5555 < ubuntu.iso
      
    • Quando completar a transferência, verifique o tamanho do arquivo recebido. Ele é igual ao arquivo original? E quanto tempo levou para transmiti-lo ?
  5. A segunda transferência será feita usando o protocolo UDP:
    • No computador receptor faça o download deste programa. Em seguida acrescente a ele permissão de execução (chmod +x receptor).
    • No computador receptor execute:
      ./receptor 5555 > arquivo
      
    • No computador transmissor faça o download deste programa. Em seguida acrescente a ele permissão de execução (chmod +x transmissor).
    • No computador transmissor execute (X é o número do seu computador, visível em sua etiqueta):
      ./transmissor 192.168.1.X 5555 < ubuntu.iso
      
    • Quando completar a transferência, verifique o tamanho do arquivo recebido. Ele é igual ao arquivo original ? E quanto tempo levou para transmiti-lo ?
  6. Compare as transferências feitas com TCP e UDP. O que eles têm em comum ? Que diferenças lhe pareceram mais pronunciadas ? Como isso deve afetar as aplicações que usam esses protocolos ?

Experimento 2

Transferências usando cada um desses protocolos podem apresentar características bem distintas. Neste segundo experimento, serão feitas transferências simultâneas de arquivos a partir de um mesmo servidor, comparando-se o resultado obtido com TCP e UDP. Essas transferência ocorrerão entre os computadores do laboratório e um servidor externo ao laboratório, como mostrado na figura abaixo:

Res-Exp2-transporte.png

  1. Abra um terminal em seu computador, e nele execute este comando:
    wget http://tele.sj.ifsc.edu.br/~tisemp/RES/ubuntu.iso
    
  2. Observe a taxa de transferência (velocidade do download) obtida. Que valores ela apresenta ? Quanto tempo levou para o arquivo ser transferido ?
  3. Após todos terem copiado o arquivo, o professor irá se logar em um dos computadores do laboratório e repetir a transferência. Porém desta vez ele irá fazê-la sozinho. Que taxas ele obteve, e quanto tempo levou ?
  4. O professor irá repetir a transferência novamente, mas desta vez ele irá pedir que um aluno também a inicie logo em seguida. Qual foi a taxa obtida por ambos ?
  5. Finalmente, o professor irá repetir a transferência porém com mais dois alunos fazendo-a ao mesmo tempo. Que se pode concluir quanto a taxa de transferência obtida ?
  6. Para poder fazer uma comparação, as transferências serão feitas novamente porém usando UDP como protocolo de transporte. Para isso siga estes passos:
    1. Abra dois terminais. Em um deles execute este comando:
      watch -n 1 ls -l arquivo
      
      ... e no outro execute:
      ./receptor 5555 > arquivo
      
    2. O professor irá transmitir o arquivo a partir do servidor. Observe o tamanho do arquivo, que deverá aumentar.
    3. Em que valor o tamanho do arquivo parou de crescer ? Quanto tempo isso levou, aproximadamente ? E esse tamanho final é o mesmo do arquivo original ?
    4. Como se comparam as transferências usando TCP e UDP ?

01/05/15:

  • Feriado (dia do trabalho)

08/05/15: Camada de Transporte

  • Revisão da Camada de Transporte (30min da aula)
  • Avaliação Camada de Transporte

15/05/15: Camada de Rede

  • Vista de prova: Camada de Transporte
  • Introdução à Camada de Rede (Slides)
  • Realização de exercícios Camada de Rede (Lista 7)

22/05/15: Camada de Rede

  • Roteamento hierárquico
  • Endereçamento IP
  • Exercícios endereçamento IP (Sub-redes)

29/05/15: Camada de Rede (paralisação)

  • Exercícios endereçamento IP (Sub-redes)

05/06/15: Camada de Rede

  • Feriado Nacional (Corpus Christi)

12/06/15: Palestra sobre IEEE 802.11

  • Apresentação tecnologia Wi-Fi (padrão IEEE 802.11)
    • Horário: 19h - 20h:20min.
    • Palestrante: Prof. Emerson Melo - DTIC/IFSC
  • Resolução de exercícios Segmentação de redes (Lista 10)
  • Exercícios de revisão (parte teórica) (Lista 11)

19/06/15: Camada de Rede

  • Correção Lista de Exercícios (revisão)
  • Avaliação Camada de Rede

26/06/15: Camada de Rede

  • Vista de prova (Camada de Rede)
  • Avaliações de recuperação finais da disciplina (Camada Aplicação, Transporte e Rede)

03/07/15: Encerramento da Disciplina