A disciplina de Redes de Computadores está em constante evolução, por isso esta página pode mudar sem qualquer aviso prévio. Esteja ciente disso.
Este curso é baseado no curso do Prof. Edo Biagioni com sua autorização para edição, modificação e publicação.
Organização da Disciplina
Professor: Brivaldo Junior. Dúvidas e outras perguntas pertinentes ao curso podem ser realizadas no Fórum do Moodle. A disciplina, dentro das possibilidades, será transmitida ao vivo no Canal do Professor nos dias de aula (segundas e quintas-feiras das 19:00 às 21:00). Após processamento, versões melhores serão disponibilizadas em ambiente específico.
Objetivos da Disciplina
Neste curso os estudantes irão:
- aprender sobre redes de computadores, com foco especial nos princípios de projeto e seus protocolos;
- estudar sua importância prática, incluindo a Internet, TCP/IP e redes sem fio;
- aprender a escrever programas de computadores em C/C++ e Python para trabalhar com a rede, especificamente implementando clientes, servidores e protocolos.
Livro Texto
Essa disciplina seguirá os seguintes livros textos:
- Redes de Computadores: uma abordagem de sistemas. Peterson/Davie. Elsevier, 5th Edição.
- Redes de Computadores: uma abordagem Top-Down. James/Kurose. Pearson, 6th Edição.
Como a disciplina exige atividades com programação para sockets, o livro texto a seguir é a referência:
Tenha certeza de ter acesso ao livros durante a disciplina.
Avaliação
Este curso está registrado no Sistema Acadêmico e os pré-requisitos devem estar completos antes que seja possível realizar sua matrícula. Todos os códigos produzidos durante o curso não são tratados como confidenciais.
A avaliação do curso será da seguinte maneira:
- Trabalhos terão peso de 45% sobre a média final.
- 2 provas intermediárias e um exame final, cada uma com peso de 15% (totalizando 45%).
- 2 revisões feitas por seus colegas (totalizando 10%).
A Prova Optativa poderá substituir apenas provas intermediárias ou a final.
Os trabalhos devem ser feitos de forma individual quando indicado e, caso contrário, podem ser feitos em grupos de até 3 alunos. Você DEVE usar C como linguagem de programação para todas os trabalhos a não ser que seja indicado de forma diferente.
Trabalhos e revisões devem ser entregues dentro do prazo ou sofrerão penalidade de 2 pontos ao dia. Por exemplo, se você tirar 9,7, com dois dias de atraso, sua nota será 5,7. Se você planeja enviar um trabalho atrasado, envie um email ao professor ANTES do prazo final e avise-o que você entregará o trabalho atrasado (além de especificar quando ele será entregue).
Trapaça ou Cola
Neste curso os estudantes podem usar qualquer material de qualquer fonte pública. Neste caso, o material (fonte) deve ser citado apropriadamente no seu código. Por exemplo: se você usar um código retirado de uma página na Internet, aquele trecho de código deve possuir um comentário indicante de qual website (a URL) em que o código foi obtido.
No geral, trapacear significa apresentar um trabalho que não é seu como seu, pedir para que outra pessoa faça o trabalho por você ou fornecer o seu trabalho para ajudar alguém a trapacear.
Exceto pela descrição acima de códigos copiados e referenciados, todo código do trabalho deve ser escrito por você ou seu grupo. Isso também significa que uma vez que um grupo tenha sido formado, ele não pode ser modificado e todos os membros do grupo receberão a mesma nota final do trabalho.
Amigos não são uma fonte pública de código fonte, logo, estudantes não podem usar o material de seus amigos.
Qualquer tentativa de colaboração nas provas será considerada trapaça.
Política Anti-Trapaça
Qualquer trapaça/cola irá resultar na nota 0 no trabalho ou prova na primeira vez que for detectado e a reprovação na disciplina (além de se acionar as medidas legais da UFMS) para qualquer tentativa subsequente. Qualquer tentativa de trapaça/cola será notificada a secretaria acadêmica para ser adicionado ao perfil do estudante na secretaria acadêmica.
Qualquer dúvida entre em contato com o professor.
Execução do Curso
-
Aula 00: Introdução da Disciplina e resumo do curso.
(Referência: Seções 1.1 até 1.5 do Kurose)- visão do curso
- o que é comunicação de rede?
- serviços de Internet e sockets
- transporte orientado e não orientado a conexão
Leia a Seção 1.8 como complemento e entregue o Trabalho 1 até 24/04/2017.
-
Aula 01: API de sockets, programação de aplicações para rede.
(Referência: Seções 1.1, 1.2, 1.3 e 1.5 do Stevens)- Transporte orientado e não orientado a conexão
- API de sockets em C e Python
- revisão rápida de C
Leia as Seções 1.7 até 1.9 do Stevens como complemento.
-
Aula 02: Continuação API de sockets.
(Referência: Seções 1.1, 1.2, 1.3 e 1.5 do Stevens)- API de sockets em Python
- revisão rápida de Python
Leia as Seções 1.10 e 1.11 do Stevens como complemento e entregue o Trabalho 2 até 01/05/2017.
-
Aula 03: Modelo de Camadas.
(Referência: Seções 1.3, 1.4 e 1.5 do Kurose e 1.3 do Peterson)- transmissão de dados
- modelos de referência de camadas
- camadas específicas: física, enlace, rede, transporte e aplicação
- modelos Internet e OSI
Leia, como complemento, as Seções 1.6 e 1.7 do Kurose.
-
Aula 04: Modelo de Camadas
(Referência: Seções 2.1 e 2.5 do Kurose e 9.3.1 do Peterson)- Camada de Aplicação
- DNS (Domain Name System: hierarquia de domínio e de nomes. Protocolo DNS)
Faça o Trabalho 3 até o dia 08/05/2017.
-
Aula 05: Tradução de Nomes
(Referência: Seção 2.5 do Kurose e 9.3.1 do Peterson)- Protocolo DNS
- Ferramentas: dig e nslookup
- Visão geral sobre DNSSEC
Leia as Seção 2.5 do Kurose. Faça o Trabalho 4 até 15/05/2017.
-
Aula 06: Email
(Referência: Seção 2.4 do Kurose e 9.1.1 do Peterson)- Email (RFC 821 e 2821)
- Protocolos de Email: SMTP, POP e IMAP
-
Aula 07: Protocolos WEB
(Referência: Seção 2.2 do Kurose e 9.1.2 do Peterson)- World-Wide Web: URI/URL, HTML, HTTP
- HTTP: revisão do protocolo, versões, métodos, cookies.
Leia a Seção 2.2.5 do Kurose, atentamente.
-
Aula 08: Transferência de Dados
(Referência: Seção 3.1, 3.2 e 3.3 Kurose)- Camada de Transporte
- Transferência Confiável
- Pacotes de Controle e Cabeçalho
- Protocolo do Bit-Alternante
- Transmissão Confiável com Janela Deslizante
Leia a Seção 3.4.1 do Kurose (modelo de transferência confiável). Faça o Trabalho 5 até 22/05/2017.
-
Aula 09: Transferência de Dados
(Referência: Seção 3.4.2 até 3.4.4 do Kurose)- Transmissão Confiável com Janela Deslizante
- Acknowledgments (ACK's)
- Produto da Janela pela Largura de Banda
- Retransmissão
- Temporizadores
- Conexões
Leia a Seção 3.4.2, 3.4.3 e 3.4.4 do Kurose.
-
Aula 10: Revisão para a Prova 01
- Protocolos
- Comunicação cliente-servidor
- API de sockets C (e Python) e tipos de sockets
- Camadas de protocolos: física, enlace, rede, transporte e aplicação
- Camada de aplicação: HTTP, DNS e email
- Camada de transporte: Números de sequência TCP, ACK's
- Transmissão confiável: janelas, velocidade
Ler todas as seções do livro texto menos.
-
Prova 01
-
Aula 11: Nuances do TCP
(Referência: Seção 3.5 e 3.6 do Kurose e 5.2.1 até 5.2.8 do Peterson)- Conexões TCP
- Cabeçalho TCP
- Retransmissão TCP
- Controle de Congestionamento
Faça o Trabalho 6 até 12/06/2017.
-
Aula 12: Nuances do TCP
(Referência: Seção 3.7 do Kurose)- Controle de Congestionamento TCP
- Retorno Binário Exponencial
-
Aula 13: Nuances do TCP
(Referência: Seção 3.7 do Kurose)- Controle de Congestionamento TCP (revisitado)
- Protocolos da Camada de Rede
- Encaminhamento de Pacotes
Faça o Trabalho 7 até 19/06/2017.
-
Aula 14: Roteamento
(Referência: Seção 4.1 do Kurose)- Circuitos virtuais
- Roteamento estático
-
Aula 15: Roteamento
(Referência: Seções 4.2 e 4.3 do Kurose)- Roteamento por Vetor de Distância
- Roteamento por Estado de Enlace
Faça o Trabalho 8 até 26/06/2017.
-
Prova 02
-
Aula 16: IP
(Referência: Seções 4.4 do Kurose e 3.2 e 4.1.3 do Peterson)- IP
- endereços
- máscaras
- cabeçalhos
- fragmentação
- ICMP, incluindo ping e traceroute
Faça o Trabalho 9 até 09/07/2017.
-
Aula 17: Camada de Rede
(Referência: Seções 4.4 do Kurose e 3.2 e 4.1.3 do Peterson)- ICMP, incluindo ping e traceroute
- NAT
- DHCP
- IPv6: diferenças para o IPv4
Faça o Trabalho 10 até 24/07/2017.
-
Aula 18: Camada de Enlace e controle de acesso ao meio
(Referência: Seções 5.1, 5.2 e 5.4 do Kurose)- Camada de Enlace
- Quadros
- Detecção e correção de erros
- Carrier Sense Multiple Access (CSMA)
- com Detecção de Colisão (CSMA/CD)
- com Prevenção de Colisão (CSMA/CA)
Faça o Trabalho 11 até 07/08/2017.
-
Exame Final