Category 'Best Course for Career Development'
Category 'Best Course for Broadening Horizons and Diversity of Knowledge and Skills'
Category 'Best Course for New Knowledge and Skills'
Type: Elective course (Software Engineering)
Area of studies: Software Engineering
Delivered by: School of Software Engineering
Where: Faculty of Computer Science
When: 3 year, 3, 4 module
Mode of studies: offline
Instructors: Ramon Antonio Rodriges Zalipynis
ECTS credits: 5
Contact hours: 60
Computer Networks are ubiquitous in the modern IT sector. Computer Networks are arteries of data-bases, web & mobile applications, distributed systems and many other software. A good understanding of the underlying networking principles facilitates in building more reliable and efficient software products. This makes the Computer Networks course highly beneficial for any modern software engineer. The course website edu.gis.land/nw2020 is an integral part of this program. On the course website, the course program, topics, literature, course rules, homework, and any other course materials can be specified and supplemented. Please, refer to the course website for up-to-date information. In case of discrepancy with the information in the LMS, preference should be given to the course website.
- Have strong understanding of networking concepts and computer networks functioning
- Be able to programmatically work with popular computer networking protocols
- Acquire skills and experience in modern technologies and tools related to computer networks
Expected Learning Outcomes
- Know core concepts of computer networks
- Understand internals of Domain Name Service
- Understand internal of IP protocol
- Understand internals of TCP protocol
- Be aware of routing protocols
- Programmatically work with popular network protocols using modern networking frameworks/libraries
- Be able to create and work with networks in the Cloud
- Know common networking services
- Know computer networks security principles
- Be aware of recent trends in computer networks
- Introduction to Computer NetworksA large fraction of modern software is based on computer networks, history of computer networks, nowadays networking, 100GB/s network speed and beyond, readings, RFC (Request For Comments). MAC addresses, the structure of MAC address. Address assignment regulations, IEEE Registration Authority. Computer Networks Simulators.
- TCP/IP stack: overview, addressing mechanisms, WireShark toolThe stack structure, the correspondence of the TCP/IP stack layers to the OSI Model layers. The re-view of the TCP/IP stack protocols (details on these protocols are given in the respective parts of the course): IP, ICMP, RIP, OSPF, TCP, UDP, FTP, Telnet, HTTP, SMTP, SNMP, TFTP. Data entity classification in the TCP/IP protocol stack: stream, datagram, segment, packet, frame.
- DNS (Domain Name Service)Hierarchical name space, domains, subdomains. Short, relative, complete domain names. ICANN (In-ternet Corporation for Assigned Names and Numbers). ISO 3166, country domains. File hosts.txt. DNS protocol and DNS servers. DNS zones, authoritative and non-authoritative responses. DNS poi-soning.
- IP (Internet Protocol)IP purpose. IP packet. The header of IP packet. TTL (Time To Live). Checksum. IP routing scheme. Routing tables. Route types. Algorithms for traversing routing tables. IP routing with and without masks.
- TCP (Transmission Control Protocol)Multiplexing and demultiplexing. TCP ports. TCP sockets. UDP (User Datagram Protocol). Stateful and stateless protocols. UDP datagrams. Dataflow scheme in TCP and UDP. TCP segments. ACK no-tion. TCP segments dataflow scheme. The format of TCP header. TCP logical connections. TCP con-nection scheme. Automatic repeat request methods: source idle, sliding window, N-segments back. TCP buffer structure. Accumulated ACK principle. Dataflow control in TCP.
- Routing protocolsCommon properties and classification of routing protocols. Source routing. Static and adaptive routing. Distance Vector Algorithms (DVA), Link-State Advertisement (LSA).
- Netty FrameworkArchitecture of Netty. Java InetAddress, blocking and non-blocking sockets, java.nio. Bootstrap or ServerBootstrap, EventLoop, EventLoopGroup, ChannelPipeline, Channel, Future or ChannelFuture, ChannelInitializer, ChannelHandler. Building custom multiuser server. Creating TCP and HTTP serv-ers. Customizing business logic. Designing custom networking protocols on top of TCP and/or HTTP.
- Creating Computer Networks in Microsoft Azure CloudThe description and peculiarities of Microsoft Azure Cloud. Java Azure API. Web GUI Azure console. Virtual machines, network interfaces, network security groups, network routing rules, load balancers. API keys and access setup to Azure Cloud. Building a computer cluster in Microsoft Azure Cloud: a set of virtual machines connected with a single network. Choosing computer network size and select-ing address masks. Creating and assigning IP addresses. Using a single IP address and different TCP ports to access different virtual machines. Monitoring the network activity in Microsoft Azure Cloud.
- Networking ServicesWeb servers. HTTP (HyperText Transfer Protocol). URL (Uniform Resource Locator). Web client and web server. The format of HTTP messages and headers. Investigating HTTP using Netty framework. WebSocket protocol. Binary and text modes. Creating WebSocket client and WebSocket server.
- Computer Networks SecurityTraffic filtering, filtering rules. Firewalls. Software and hardware firewalls. Proxy-servers. NAT (Net-work Address Translation), NAPT (Network Address Port Translation), DMZ (Demilitarized Zone), IDS (Intrusion Detection Systems). Overview of IPsec and VPN (Virtual Private Networks). Over-view of SSL (Secure Sockets Layer).
- Recent trends in Computer NetworksLarge Modern Computer Networks. Grid systems. Large computer clusters. In-memory systems and networking issues. Networking hardware becomes smarter: solutions of Intel, Cisco, Mellanox and other companies for increasing the performance and value of networking hardware.
- Interim assessment (4 module)0.2 * CW (Control Work) + 0.2 * EX (Exam) + 0.35 * HA1 (Home assignment 1) + 0.25 * HA2 (Home assignment 2)
Recommended Core Bibliography
- Computer Networks : A Systems Approach. (2019). Princeton, New Jersey: Larry Peterson and Bruce Davie. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsotl&AN=edsotl.OTLid0000771
- Компьютерные сети : принципы, технологии, протоколы: учеб. пособие для вузов, Олифер, В. Г., 2015
Recommended Additional Bibliography
- Kurose, J. F., & Ross, K. W. (2012). Computer Networking: A Top-Down Approach: International Edition (Vol. 6th ed., International ed). Harlow: Pearson Education. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1417926