Alan Dix's short courses and tutorials

UNIX Network Programming with TCP/IP

Client-Server and Internet Applications

Alan Dix, Lancaster University
(first delivered while at School of Computing, Huddersfield University)

Note this page is moving to: http://www.hiraeth.com/alan/tutorials/tcpip/tcpip.html

I haven't run this particular course for a number of years, but see below for free online materials and alternative courses.

Online materials:
        You can download the complete notes (PDF) for this course
... and you can browse and download the sample code used in the exercises
These notes and code are free to use, but if you use them do acknowledge them and give this URL.
I also have online notes for tutorials on UNIX System Programming and UNIX Power Tools.
If you are interested in more human issues around networking applications and internet usability see my chapter on Network-Based Interation in Jacko and Seers' HCI Handbook, my chapter on HCI and Web Design in the Handbook of Human Factors in Web Design, not to mention relevant chapters of my co-authored textbook on Human-Computer Interaction!
Other courses:
     Our dedicated MSc in Networking and Internet Systems covers both fundamental and practical asepcts of networking from routers to middleware and security.
This course builds on the strength of our research groups in Networked & Distributed systems.
     Our MSc programme at Lancaster also includes a number of modules on networking and one week modules can be taken individually as short courses for professional update or to contribute towards a qualification.
In particular the Advanced Networking and the Internet module is sponsored by Cisco and uses a special lab. with state of the art routers and equipment donated by them.
Lancaster ISS service run a training course in Network & Systems Administration.
This is aimed at in-job system adminstrators or those wishing to pick up skills in network adminstration.
Elsewhere ...
     Look at the IBM TCP/IP Tutorial. This is one of their free Redbook series.
The classics in this area are still the books by Richard Stevens
In particular the home page for the book Unix Network Programming includes a full source code for all examples.
Danin Mullin at Buffalo keeps an up-to-date page of links on Unix Programming including sockets and networking
Beej's Guide to Network Programming adopts a somewhat zany style (too much late night pizza and cola), but deals comprehensively with the UNIX system calls and socket level programming. It is reproduced in several places on the net including a translation into Dutch!

The fundamental principles of TCP/IP programming are independent of platform. This tutorial uses C as its language, and to see how to do similar things in other languages try:
Java: Sockets programming in Java at JavaWorld
Perl: Network Programming with Perl at Linux Journal
PHP: Socket Programming with PHP at Dev Shed

 

Tutors: Alan Dix
Audience: UNIX systems programmers and software developers. May be especially attractive to experienced PC developers wanting to produce UNIX servers.
Style: Combination of short lectures and hands-on sessions.
Content: The importance of platform independent networks. Understanding the Internet: what it is, addresses, names and routers, levels of protocols (IP, UDP and TCP). How TCP works: port numbers, active and passive opening, establishing connections. The UNIX socket system calls (socket, bind, listen, connect etc.). Writing a client. Using select to manage multiple I/O streams. Alternative call-back based solutions. Writing a server. Use of fork to service client connections. Mixing bespoke client­server applications with shared databases or shared files.
Objective: The attendee should leave the course able to write clients to access existing services such as ftp and www, and be able to begin to write their own client server software under UNIX.
Prerequisites: Basic knowledge of C programming under UNIX, including a good understanding of low-level UNIX I/O. Fork and select will be introduced rapidly, so some familiarity with these would be an advantage.
Length: 2/3 days depending on selction of topics
Note: The main language used will be C under UNIX, but comparisons will be made with Java TCP/IP as appropriate.
Client­server software will often be written with UNIX servers and PC based clients. Versions of this course with different client-end focus (Java, Windows, Mac) can be delivered by special arrangement.


http://www.hiraeth.com/alan/tutorials/courses/tcpip.html Alan Dix 5/8/98
(updated 23/10/04, 5/1/2006)