GNU/Linux and Network Programming
Summary
The course introduces the developer to the basics of using a GNU/Linux system, system software programming, and network programming.
The filesystem, process control, Emacs editor, installation and package management is covered under using GNU/Linux. Buffered and unbuffered file I/O, process control and signals are covered under system software programming. Networking layers, networking commands, TCP sockets, UDP sockets and multiplexed I/O are covered under network programming.
Pre-requisite
-
C programming knowledge.
-
Basic understanding of computers.
Duration
-
Duration: 72 hours
-
Span for Weekdays: 6 weeks
-
Span for Weekends: 9 weeks
Syllabus
Using GNU/Linux
Introduction
-
History of GNU/Linux
-
Logging On To The System
-
Changing Your Password
-
Using UNIX Commands
-
File and Directory Commands
-
Open, Edit and Save Files
-
Quitting Emacs
-
Getting Help
-
Logging Off The System
-
Starting X Windows
-
Launching Programs
-
Getting Access to the Shell Prompt
-
Gnome Applications
The Filesystem
-
Hierarchical File Structure
-
File Types
-
File Names
-
Pathnames
-
Access Permissions
-
Mounting
Shell Basics
-
What is the Shell?
-
Processes
-
Job Control
-
Redirection
-
Variables
-
Quoting
Advanced Shell
-
Pipes
-
Filters
-
Regular Expression
-
Scripting Introduction
Emacs
-
Emacs Screen
-
Cut, Copy, Paste
-
Undo
-
Search, Find and Replace
-
Handling Multiple Files - Concept of Buffers
-
Viewing Multiple Files - Concept of Windows
-
Editing Modes
-
Getting Help
System Boot Sequence
-
Overview
-
Role of Bootloader
-
Specifying Boot Arguments
-
Role of Ramfs
-
Role of Init
-
Runlevels
-
Getty and Login
-
Bash Login Script
Installation & Package Management
-
Installing Ubuntu
-
Installing Packages using apt-get
-
Removing Packages
-
Listing Packages
-
Compiling Packages from source
GNU/Linux Programming
File I/O
-
File Descriptors
-
Opening and Closing Files
-
Reading and Writing to Files Sequentially
-
Reposition Read/Write File Offset
-
File Tables and File Descriptor Tables
-
Streams
-
Buffering
-
Opening and Closing Streams
-
Unformatted Text I/O
-
Unformatted Binary I/O
-
Positioning a Stream
-
Formatted Text I/O
-
Temporary Files
Date and Time
-
Getting System Time
-
Displaying Time
-
Finding out Elapsed Time
-
Sleeping
Basic Process Control
-
Process ID
-
Creating a New Process
-
Getting Exit Status of a Process
-
Executing a Program
-
Process Termination and Exit Status
Signals
-
Signal Basics
-
Handling Signals
-
Interrupted Syscalls
-
Sending Signals
-
Timers
-
Advanced Signal Handling
Network Programming
Networking Overiew
-
TCP/IP Layers
-
IP Address
-
Networking Devices
GNU/Linux Networking
-
Accessing a System Remotely
-
Transfering Files Between Systems
-
Network Interfaces
-
Configuring Network Interfaces
-
Configuring Route
-
DHCP - dhclient
-
DNS - whois
Introduction to Sockets
-
Socket Address Structures
-
Value-Result Arguments
-
Byte Ordering Functions
-
Byte Manipulation Functions
-
inet_aton, inet_addr, and inet_ntoa Functions
-
inet_pton and inet_ntop Functions
-
sock_ntop and Related Functions
-
Domain Name System
-
gethostbyname Function
-
gethostbyaddr Function
-
gethostname Function
-
getservbyname and getservbyport Functions
TCP Sockets
-
socket Function
-
connect Function
-
bind Function
-
listen Function
-
accept Function
-
fork and exec Functions
-
Concurrent Servers
-
close Function
-
getsockname and getpeername Functions
-
TCP/IP client servers
UDP Sockets
-
recvfrom and sendto Functions
-
connect Function with UDP
-
UDP Issues
Unix Domain Sockets
-
Communication Styles
-
Addressing
-
Local Namespace
-
Creating and Destroying Sockets
-
Communicating with Sockets
-
socketpair Function
Advanced I/O
-
Non-blocking I/O
-
I/O Multiplexing
Daemons and inetd
-
syslogd Daemon
-
syslog Function
-
daemon_init Function
-
inetd Daemon
-
daemon_inetd Function
