CNP6 Certified Network Programmer
Time: 05-07/05/2014

This course is an advanced training course for the programmers of ISP and content providers in Vietnam who need deeper understanding of IPv6 network programming and testing. The course covers topics such as socket API, IPv4 vs. IPv6 programming in C/C++ and Visual C#.NET, with focus on the differences in IPv6 programming from traditional network programming and assumes prior knowledge in basic network programming

Day 1: Network Programming Basics

Day Outline Document
Morning 1. IP Programming Basics (Watching Network Traffic):
- Installing WinPcap
- Analyzing Network Packets
2. IPv6 Refresher :
- IPv6 Terminology and key features & architecture
- IP Header Formats and IPv6 Extension Headers
- IPv6 unicast scopes (link-local, link-local, site-local and global)
- IPv6 Multicast address
   + Solicited-Node Multicast Address
- Neighbor discovery
   + Router solicitation (ICMPv6 type 133)
   + Router advertisement (ICMPv6 type 134)
   + Neighbor solicitation (ICMPv6 type 135)
   + Neighbor advertisement (ICMPv6 type 136)
3. Microsoft Visual C#.Net Overview

- Overview:
   + Useful Enumerations in the .NET Sockets Namespace
   + Available Methods in the .NET Sockets Socket Class
   + Convenient IP Address Methods for IP Address Manipulation
- Importance of being IPv6 programmer
4. Lab Session 1
- IP Address Configuration
- WinDump commands
Afternoon 1. Primer on Socket Programming:
- Sockets:
   + Socket Options
   + Network Address Family
- Using Connection-Oriented Sockets
   + Server Functions
   + Client Function
   + Closing Connections
- Using Connection-less Sockets
- Non-Blocking I/O Methods
- Windows Socket Functions
2. C# Socket Programming:
- IPAddress Class
- IPEndPoint Class
- Socket Construction
- Socket Options
- Using Connection-Oriented Sockets
- Non-blocking Programming
- Socket Exceptions
3. DNS and C#
- DNS Structure
- DNS Classes in C#
4. Lab Session 2

- Socket Construction
- Socket Exception


Day 2: Network Layer Programming

Day Outline Document
Morning 1. TCP-based Programming:
Connection-Oriented Sockets

- Overview
- Using C# Streams with TCP
   + NetworkStream Class
   + Creating Network Stream Client
   + StreamReader and StreamWriter Classes
   + Lab Session
- Using C# Helper Classes
   + TCPClient Class and its Methods TCPListener Class and its Methods
   + Lab Session:
- Lab Session
2. Lab Session 3
- TCP Stream based Client and Server
- TCPClient and TCPListener Program
Afternoon 1. UDP-based Programming:
- Connection-less Sockets:
   + Overview
   + UDP Application
         - UDP Server & UDP Client
         - Using Connect() in UDP Client
         - Distinguishing UDP Messages
         - Lab Session: UDP Server and client
   + C# UDP Header Class
         - UdpClient Class and its Method
         - Using UDPClient Class program
         - UdpClient Server program
- Moving Data across the Network:
   + Binary Data Type Representation
   + Converting Byte Representation
         - Network Byte Order
         - Host Byte Order
2. Lab Session 4
- UDP Server and Client
- C# UDP Helper class
- Binary data representation

Day 3: Advance Network Programming

Day Outline Document
Morning 1. Multi-Threading in Network Programming: Threading in Programming
- Using Threads in a Server
   + Creating a Thread
   + Threading for Send and receiving Data - Lab Session
2. IP Multicasting :
- C# IP Multicast Support
   + C# Socket Multicasting
   + Receiving Multicast Packets
   + Sending Multicast Packets
   + Analyzing Program
- UDP based Multicast Program
3. Lab Session 5
- Multi-Threading Server
- UdpClient Multicast Server and Client
Afternoon 1. C#.Net RAW Sockets:
- Overview
- Custom build Protocols (IPv6, IPv4, UDP, ICMPv6 etc.) 2. IPv6 Porting/Migration:
- Design consideration
- Application Transition Scenarios
   + IPv4 applications in dual stack nodes
   + IPv6 applications in dual stack nodes
   + Dual Stack applications in dual stack nodes
- IP version Independent Application
   + Work flow of Server application
   + Work flow of Client application
   + Work flow of Dual Stack Application
3 Lab Session 6
- Custom build Protocols using RAW sockets

National Advanced IPv6 Centre (NAv6), Universiti Sains Malaysia IPv6 training courses are globally recognized and has been the foundation for today’s IPv6 Global Forum IPv6 Certified courses. NAv6 is an active member of the IPv6 Global Forum’s Education Logo Program. NAv6 is pioneer in providing dedicated course in area of IPv6. So far NAv6 have created four different courses in IPv6 ie. Certified Network Engineer for IPv6 (CNE6) Level 1, Certified Network Engineer for IPv6 (CNE6) Level 2, Certified Engineer for IPv6 (CSE6) and Certified Network Programmer for IPv6 (CNP6). They are been recognized by IPv6 Global Forum and WIDE Japan.