Skip to main content

Network Programming



Download Notes


1. Introduction to network programming                    

Introduction to computer network: client/ server model, Protocol Suite (ISO/OSI, TCP/IP), Unix Standards (POSIX, Open Group, IETF), Network Utilities (telnet, route, ipconfig, ifconfig, ping, netstat, And ftp) Introduction to programming: wrapper functions, header files, libraries and ports numbers, IP address. Iterative server, concurrent server, networked servers

2. Elementary operating system calls        
System call, program, thread, process, Kernel, fork(), exec() and its family, waitpid(), wait(), pipe(), Fifo(), signals (SIGCHLD, SIGINT, SIGIO). IPC Names, creating and opening IPC channels, IPC names, creating and opening IPC channels, IPC permissions

3. TCP/UDP transport layer protocols        
TCP (Transmission Control Protocol): features, connection establishment and termination, states in communication (LISTEN, TIME_WAIT, ESTABLISHED, BLOCKED) UDP (user datagram protocol): features, uses, comparison with TCP. TCP and UDP buffer sizes and limitations. SCTP

4. Elementary socket calls        
Socket address structure: for IPV4, IPV6, UNIX domain socket and generic socket address structure, value-result argument. Byte ordering and manipulating function: htonl(),  htons(), ntohl(), ntohs(), inet_addr(), inet_aton(), inet_ntoa(), inet_pton()

5. Elementary TCP-UDP socket         
Socket(), connect(), bind(), listen(), accept(), read(), write(), close(), sendto(), recvfrom(),

6. I/O multiplexing         
Introduction, I/O models: blocking I/O, non-blocking I/O, I/O multiplexing, signal driven I/O (SIGIO) and asynchronous I/O model. Select(), poll(), shutdown()

7. Socket options        
Getsockopt() and setsockopt() functions, IPV4, IPV6, TCP socket options

8. Name and address conversion        
Domain name system, gethostbyname(), gethostbyaddr(), uname(), getservbyname() and getservbyport(), gethostname() functions, socket timeouts

9. Unix domain protocol         
Introduction, Unix domain socket address structure, socket pair function, Unix domain stream client-server, UNIX domain datagram client/server

10. Daemon processes, Inetd super servers                     
Introduction, Sysloged (syslog function), daemon_init function, inetd daemon

11. Broadcast and multicast          
Introduction, Broadcast and multicast addresses, comparison between broadcast, unicast and multicast socket options, Unicast versus Broadcast, multicasat versus broadcast on LAN

12. IP layers and raw socket                         
Introduction, raw socket creation, input and output (ping example)

Lab exercise
There shall be lab strictly using c/c++/Java/Linux
• Linux commands 
• IPC (Pipe(), Fifo(), Message Queue)
• TCP, UDP and Unix Domain socket client server program
• TCP echo server and client program
• Fork() System call
• Wait() and waitpid() system call
• Uname(), gethostbyaddr(), gethostbyname(), gethostname() system call
• Shell programming 

Reference books 
• Stevens W. R., “Unix Network Programming”, Vol-1
• Stevens W. R., “Unix Network Programming”, Vol-II
• Doglous E. Comer, “Internetworking with TCP/IP”, Vol-III

Comments

Popular posts from this blog

A Basic Understanding Of screen On Centos

Description Screen allows you to run scripts or commands in their own virtual window within the terminal, essentially allowing you to have a terminal multi-tasking environment where you can switch between your windows or another users at will. This howto will give you the basics of screen plus some other useful features that may help you in your daily administration tasks. This howto is intended to get you up and running with basic screen functionality within just a few minutes. Please read the manpage for a far more in-depth description of features and options. Requirements These are requirements for successfully completing this document. Root or appropriate sudo access to the system. Doing the Work Basic description of what will be done and what is expected. Install screen if it’s not already installed. yum install screen Setup screen for multi-user mode. Multi-user mode is helpful for sharing a terminal and showing something in real-time because multi-user mode ...

Troubleshooting DRBD #Centos #DRBD

Troubleshooting DRBD  This article presents common DRBD problems and solutions. DRBD (Distributed Replicated Block Device) runs on the master and slave nodes only, and is responsible for mirroring the contents of a partition between master and slave.  Typical problems in DRBD include: A lack of Primary-Secondary connectivity The Secondary operating in standalone mode Both nodes reporting connectivity but neither one in the role of master Both nodes reporting themselves in the role of master Verify the DRBD status The following command is used to verify that DRBD is operating normally on the master and slave nodes. drbd-overview When run on the master node, the output should look like the following: 1:r0/0 Connected Primary/Secondary UpToDate/UpToDate C r----- /mnt/drbd  ... When run on the slave node, the output should look like the following: 1:r0/0 Connected Secondary/Primary UpToDate/UpToDate C r----- The following sections are exampl...

How To Set Up an NFS Mount on CentOS 6 #RHEL #6 #LINUX

About NFS (Network File System) Mounts NFS mounts work to share a directory between several servers. This has the advantage of saving disk space, as the home directory is only kept on one server, and others can connect to it over the network. When setting up mounts, NFS is most effective for permanent fixtures that should always be accessible. Setup An NFS mount is set up between at least two servers. The machine hosting the shared network is called the server, while the ones that connect to it are called ‘clients’. This tutorial requires 2 servers: one acting as the server and one as the client. We will set up the server machine first, followed by the client. The following IP addresses will refer to each one: Master: 12.34.56.789 Client: 12.33.44.555 The system should be set up as root. You can access the root user by typing sudo su Setting Up the NFS Server Step One—Download the Required Software Start off by using apt-get to install the nfs programs. yum install...