Disciplina Discipline MAC5910
Programação para Redes de Computadores

Computer Network Programming

Área de Concentração: 45134

Concentration area: 45134

Criação: 25/06/2021

Creation: 25/06/2021

Ativação: 25/06/2021

Activation: 25/06/2021

Nr. de Créditos: 8

Credits: 8

Carga Horária:

Workload:

Teórica

(por semana)

Theory

(weekly)

Prática

(por semana)

Practice

(weekly)

Estudos

(por semana)

Study

(weekly)

Duração Duration Total Total
4 4 2 12 semanas 12 weeks 120 horas 120 hours

Docente Responsável:

Professor:

Daniel Macedo Batista

Objetivos:

Prover uma visão de tópicos essenciais para redes de computadores sob a perspectiva de sistemas, enfatizando os tópicos mais importantes para o desenvolver de software.

Objectives:

Provide an overview of essential topics for computer networks and distributed systems from a systems perspective, emphasizing the most important topics for the software developer.

Justificativa:

As redes de computadores surgiram na segunda metade do século XX e, após décadas de grande crescimento em alcance, capacidade e popularidade, hoje estão presentes na vida cotidiana de uma grande parcela da humanidade. Sistemas distribuídos construídos em cima de redes de computadores hoje sustentam uma grande parte da economia mundial e servem de base para inúmeros tipos de atividades humanas em todas as áreas do conhecimento. Nesta disciplina os alunos terão contato, tanto teórico, quanto prático, com os protocolos e interfaces de programação para redes de computadores. Ao final da disciplina os alunos serão capazes de compreender os conceitos básicos das redes de computadores, com ênfase na Internet, e serão capazes de escrever pequenos programas que se comunicam através de redes de comunicação utilizando o modelo de programação por soquetes.

Rationale:

Computer networks emerged in the second half of the twentieth century, and after decades of significant growth in scope, capacity, and popularity, today, they are present in the daily lives of a large portion of humanity. Distributed systems built on top of computer networks today support a large part of the world economy and serve as the basis for countless types of human activities in all areas of knowledge. In this course, students will have theoretical and practical contact with protocols and programming interfaces for computer networks. At the end of the course, students will be able to understand the basic concepts of computer networks, with emphasis on the Internet, and will be able to write small programs that communicate through communication networks using the socket programming model.

Conteúdo:

- Arquitetura de redes: modelos em camadas e protocolos, o modelo da Internet - Aplicações e protocolos para Multimídia - O argumento fim-a-fim - Programação através de soquetes em C e em linguagens orientadas a objetos - Nomes, endereçamento e roteamento na Internet - A suíte de protocolos TCP/IP, UDP, IP-Multicast - Protocolos MAC, Ethernet e endereçamento em redes locais - Detecção e correção de erros - IPv6 - Segurança - Qualidade de Serviço, modelos de serviços integrados vs. serviços diferenciados (IntServ/DiffServ) - Gerenciamento de redes, SNMP - Redes P2P - Anonimato na Internet (Tor) - Virtualização de redes - Protocolos de redes sem fio, RFID, Bluetooth, Wi-Fi, WiMax, redes celulares Os estudantes terão contato com este material através de aulas teóricas, exercícios práticos cobrindo tópicos específicos e seminários. A disciplina incluirá um trabalho prático de implementação, em uma rede real ou em um simulador, de um protocolo de comunicação via redes de computadores. O trabalho prático deverá gerar resultados para a escrita de um artigo científico.

Content:

- Network architecture: layered models and protocols, the Internet model - Multimedia applications and protocols - The end-to-end argument - Programming through sockets in C and in object oriented languages - Internet names, addressing and routing - The suite of TCP/IP protocols, UDP, IP-Multicast - MAC protocols, Ethernet and local network addressing - Detection and correction of errors - IPv6 - Security - Network management, SNMP - P2P networks - Anonymity on the Internet (Tor) - Network virtualization - Communication between processes: client-server, groups, RPC. Web services - Recovery and fault tolerance Students will have contact with this material through lectures, practical exercises covering specific topics, and seminars. The course will include practical implementation work, in a real network or a simulator, of a communication protocol via computer networks. The practical work should generate results for the writing of a scientific paper.

Forma de Avaliação:

Média ponderada de notas dadas a exercícios, trabalhos práticos, apresentação de seminários e escrita de artigo científico.

Observação:

É desejável boa experiência em desenvolvimento de software ou ter cursado a disciplina Laboratório de programação ou equivalente. É necessário conhecimento de programação em linguagem C e alguma linguagem orientada a objetos.

Bibliografia:

1) J. F. Kurose, K. W. Ross, Computer Networking, A Top-Down Approach Featuring the Internet (6th revised edition), Addison-Wesley, 2012. 2) W. Richard Stevens. Unix Network Programming, Volume 1: the Sockets Networking API (3rd Edition), (Addison-Wesley) 2003. 3) Larry Peterson and Bruce Davie. Computer Networks: A Systems Approach (5th Edition), Morgan Kaufmann, 2011. 4) W. Richard Stevens. TCP/IP Illustrated, Volume 1: The Protocols (2nd Edition), Addison-Wesley, 2011. 5) George Coulouris, Jean Dollimore, Tim Kindberg, Gordon Blair, Distributed Systems: Concepts and Design (5th Edition), Pearson, 2011.

Bibliography:

1) J. F. Kurose, K. W. Ross, Computer Networking, A Top-Down Approach Featuring the Internet (6th revised edition), Addison-Wesley, 2012. 2) W. Richard Stevens. Unix Network Programming, Volume 1: the Sockets Networking API (3rd Edition), (Addison-Wesley) 2003. 3) Larry Peterson and Bruce Davie. Computer Networks: A Systems Approach (5th Edition), Morgan Kaufmann, 2011. 4) W. Richard Stevens. TCP/IP Illustrated, Volume 1: The Protocols (2nd Edition), Addison-Wesley, 2011. 5) George Coulouris, Jean Dollimore, Tim Kindberg, Gordon Blair, Distributed Systems: Concepts and Design (5th Edition), Pearson, 2011.

Idiomas ministrados:

Português

Languages taught:

Portuguese

Tipo de oferecimento da disciplina:

Presencial

Class type:

Presencial