Course
code CS331
credit_hours 3
title Network Protocols & Programming
arbic title
prequisites CE231, CS243
credit hours 3
Description/Outcomes The course is an introduction to network programming using the application programming interface known as sockets. In addition, several design alternatives for client/server applications will be presented along with tradeoffs. Upon successful completion of the course, the student should be able to develop network-aware applications that involve unicast and multicast communications from the grounds up. Hands-on experience will be gained through several programming assignments, which require knowledge of the C and/or Java programming language.
arabic Description/Outcomes
objectives Upon completion of this course, students should be able to:
1. Understand network protocols operation details and design methodology.
2. Apply programming of unicast and multicast network applications.
3. Differentiate client/server design alternatives along with tradeoffs.
arabic objectives
ref. books 1. Douglas E. Comer and David L. Stevens, Internetworking with TCP/IP Volume III: Client-Server Programming and Applications, Linux/POSIX sockets version, Prentice Hall, 2001.
2. Douglas E. Comer, Internetworking with TCP/IP Volume I: Principles, Protocols, and Architecture, 5th Edition, Prentice Hall, 2005.
arabic ref. books
textbook W. Richard Stevens, Bill Fenner, and Andrew Rudoff, Unix Network Programming, The Sockets Networking API, Volume 1, 3rd Edition, Addison-Wesley, 2004.
arabic textbook
objective set combined
content set bullets
Course Content
content serial Description
1 • Define TCP/IP Layersrn• Describe s provided by TCP/IP layersrn • Differentiate between Operating Systems environments.rn• Relate the computer system structure to the Linux environment.rn • Use Linux operating systemrn G1.Demonstrate skills in group working, team management, time management and organizational skills.rnG2.Show the use of general computing facilities.rnG7.Demonstrate the ability to make use of a range of learning resources and to manage one`s own learning.rn
2 • Explain IP addressing • Extract network and subnet address from an IP addressrn • Use Linux operating systemrn• Use network tools to discover IP addressrn• rn
3 • Demonstrate TCP reliability featuresrn• Define interface Maximum Transfer Unit (MTU)rn• Illustrate TCP state transition diagram using diagramsrn• Explain basic UDP alityrn • Calculate TCP acknowledgment numberrn• Reason about a TCP connection statern• Differentiate between link MTU and path MTUrn• Analyze TCP connection establishment and terminationrnrn • Use network tools to discover TCP connection statern
4 • Define socket address structuresrn • Apply the use of socket address structuresrn • Design and implement a simple client/server applicationrn
5 • Demonstrate basic client and serverrn• Demonstrate basic TCP socket API srn • Analyze use of TCP as a transport layer protocolrn • Design and implement TCP client/serverrn
6 • Demonstrate TCP client/server examplern • Analyze TCP connection establishment and terminationrn • Design and implement TCP client/serverrn
7 7th week Exam
8 • Define I/O multiplexing • Reason about the need for I/O multiplexingrn • Design and implement I/O multiplexing applicationrn
9 • Define IPv4 socket options • Apply IPv4 socket options • Design and Implement an application to demonstrate socket optionsrn
10 • Demonstrate basic UDP socket API srn • Analyze use of UDP as a transport layer protocolrn • Design and implement UDP applicationrn
11 • Demonstrate name and address conversions API srn • Apply name and address conversions through DNS resolutionrn • Implement name and address conversions srn
12 12th week Exam
13 • Explain multicast operation on a LANrn• Explain multicast operation on a WANrn • Apply network-layer multicast on a LANrn• Differentiate between multicast on a LAN and on a WANrn• Differentiate between application-layer and network-layer multicastrn • Design and implement a multicast network applicationrn
14 • Discuss TCP client/server design alternatives • Compare between different client/server design alternativesrn• Evaluate client/server design alternativesrn • Design and implement TCP client/server with different design alternativesrn
15 • Discuss TCP client/server design alternatives • Compare between different client/server design alternativesrn• Evaluate client/server design alternativesrn • Design and implement TCP client/server with different design alternativesrn
16