Title: CSCE 515: Computer Network Programming
1CSCE 515Computer Network Programming
- Wenyuan Xu
- Department of Computer Science and Engineering
- University of South Carolina
2Course Goal
- Understand the basic principles of computer
networks - Network basic
- Basic design principles in network protocols
- Internet protocols
- Wireless network protocols
- Study the programming aspects of computer
networks - Socket programming
- Inter-process communication
- Understand how network research is done
- How to determine what is important
- What are the trend
3Administrative
- Course website
- http//www.cse.sc.edu/wyxu/515Fall08/csce515.html
- Announcements
- Homework Assignments
- Lecture Notes
- Links to required/recommended readings
- How to reach me
- Email wyxu_at_cse.sc.edu
- Office Hours MW 400pm-500pm or by appointment
- Office SWGN 3A54
- Prerequisites CSCE 311 Operating Systems
4Textbook
- Required
- Unix Network Programming, The Sockets Networking
API, Volumes 1, by W Richard Stevens, Bill
Fenner, Andrew M. Rudoff, published by
Addison-Wesley (UNP) - Optional
- TCP/IP Illustrated Volumes 1, by W. Richard
Stevens, published by Addison-Wesley, 1994 (TI). - Java Network Programming, by Merlin Hughes,
Michael Shoffner, Derek Hamner, Maria Winslow,
Conrad Hughes, published Manning Publications - Mailing list
- CSCE515-001_at_lists.cse.sc.edu
5Tentative topics
- OSI and TCP/IP Network models
- TCP/IP
- Socket programming
- The Internet and Internet protocol
- Web programming
- Other network programming
6Grading
- 0 Homework (1-2)
- QA
- 50 Computer Projects (4 three in C, one in
Java) - 20 Midterm
- 30 Final closed book, and comprehensive.
- Grading scale
- A 90 100
- B 87 89
- B 80 86
- C 77 79
- C 70 76
- D 60 69
- F lt 59
7Homework projects
- Programming Environments
- Unix workstation lab.
- 1D39 (Sun Linux)
- 1D45 (Linux)
- All students should have an account on Computer
Science and Engineering Department Unix
workstations - All grading will be done on CSE Linux!
- Submission should be via Drop Box
- Make sure you understand how to submit (practice
first)! - Directions for submission will be posted on the
course home page with the first assignment.
8Project grading
- It is expected that everyone is a good programmer
- Comment your code!
- Your code should be readable, structured!
- 25 of the grade depends on the quality of the
code. - Is the code easy to understand?
- Is it easy to make a small change of the
functionality? - Can code handle unexpected input, exceptions?
- Programs must come with a makefile
- Java programs must come with a shell script that
starts them - Sets CLASSPATH to the right value
- Remember that I will try your programs in a
directory with a different name than you!
9Project grading
- 25 of the grade depends on documentation
- Documentations must contain
- Your name and student number
- How to use your programs
- Which program does what, which parameters are
needed, screenshots - A description of your programs design
- Documentations must not contain
- Your code in words
- After spending the whole weekend and today at my
girlfriends house trying to solve the exercises
for the Network Programming course which are due
today, I must confess that I did not succeed in
solving them all.
10Grading
- Horner code
- All submitted work should be yours!
- NO sharing of code
- Do not copy code from Internet
- Discussion is encouraged
11Email Policies
- Make sure you put your course (CSCE515) in the
subject of the message. -
- Remember that it is not my emergency if you need
help at the last minute. I may check my messages
in time to help you make a deadline, but this may
not necessarily be the case. - Ask specific question instead of general
question. - Bad example I dont know why it does not work?
- In general, I will answer quick questions sooner
than one that will take a long time to answer - In general I will monitor and respond to email
during office hours, but in-person students will
take precedence.
12Your Best Strategy
- Come to every lecture
- Read articles related to network protocols and
network programming - Do not wait till last minute to prepare for exam
or work on project - Enjoy the fun!
13Lectures need your help!
- Ask questions
- Correct Wenyuan! Extra credit!
- Make suggestions!
- Read something interesting and relevant to this
course? Announce it in class!
14Introduction
15What is network?
- The term network can refer to any interconnected
group or system. - A computer network is composed of multiple
computers connected together using a
telecommunication system. -
- communication system for connecting
end-systems - End-systems a.k.a. hosts
- PCs, workstations
- dedicated computers
- network components
- Interconnection may be any medium capable of
communicating information - Copper wire
- Lasers (optical fiber)
- Radio /Satellite link
- Cable (coax)
- Example Ethernet.
16Why network?
- Sharing resources
- Resources become available regardless of the
users physical location (server based,
peer2peer) - Load Sharing/utilization
- Jobs processed on least crowed machine
- Resource can be shared
- High reliability
- Alternative source of supply (multiple copies)
- Computer as a communication tools
17Wide variety of types of networks
- Circuit switched
- dedicated circuit per call
- performance (guaranteed)
- call setup required
- telephone system
- Packet switched
- data sent thru net in discrete chunks
- user A, B packets share network resources
- resources used as needed
- store and forward packets move one hop at a time
- The Internet (TCP/IP)
18What is Internet?
- What is internet?
- Network of networks
- What is the Internet?
- A global internet based on IP protocol
- Internet applications
- Email
- File transfer
- Newsgroup
- File sharing
- Resource distribution
- World wide web
- Video conference
- Gaming
19Emerging networks
- Embedded networks
- Every physical object is connected
- Open/close your garage via network
- Know which milk can is about to expire
- Sensor networks
- Physical space is instrumented and connected
- Detect presence of people in a room and set
temperature accordingly - Know exactly how many cars on Route 26
- Disposable networks
- One time use network
- Disaster recovery, smart dust
20Characteristics
- Lots of them (density)
- Cheap unreliable elements
- Run on batteries
- Location becomes a key attribute
- Information sensing around users
21Some terms
22 LAN - Local Area Network
- connects computers that are physically close
together ( lt 1 mile). - high speed
- multi-access
- Technologies
- Ethernet 10 Mbps, 100Mbps
- Token Ring 16 Mbps
- FDDI 100 Mbps
23WAN - Wide Area Network
- connects computers that are physically far apart.
long-haul network. - typically slower than a LAN.
- typically less reliable than a LAN.
- point-to-point
- Technologies
- telephone lines
- Satellite communications
24MAN - Metropolitan Area Network
- Larger than a LAN and smaller than a WAN
- - example campus-wide network
- - multi-access network
- Technologies
- coaxial cable
- microwave
25Network Protocols
26Whats a protocol?
- a human protocol and a computer network protocol
TCP connection req.
Hi
Hi
protocols define format, order of msgs sent and
received among network entities, and actions
taken on msg transmission, receipt
27Organization of air travel
Although this course is about network programming
(and not about networking in general), an
understanding of a complete network model is
essential.
28Organization of air travel a different view
- Layers each layer implements a service
- via its own internal-layer actions
- relying on services provided by layer below
29Distributed implementation of layer functionality
ticket (purchase) baggage (check) gates
(load) runway takeoff airplane routing
ticket (complain) baggage (claim) gates
(unload) runway landing airplane routing
arriving airport
Departing airport
intermediate air traffic sites
30Protocol Stack ISO OSI Model
Header encapsulation and stripping
Data
TH
NH
TH
ISO the International Standards
Organization OSI Open Systems Interconnection
Reference Model (1984)
31Communicating between End Hosts
interface
32Why layering?
- Divide a task into pieces and then solve each
piece independently (or nearly so). - Establishing a well defined interface between
layers makes porting easier. - Functions of each layer are independent of
functions of other layers - Thus each layer is like a module and can be
developed independently - Each layer builds on services provided by lower
layers - Thus no need to worry about details of lower
layers -- transparent to this layer - Major Advantages
- Code Reuse
- Eases maintenance, updating of system
33Programs Processes
- A program is an executable file.
- A process or task is an instance of a program
that is being executed. - A single program can generate multiple processes.
34Client - Server
- A server is a process - not a machine !
- A server waits for a request from a client.
- A client is a process that sends a request to an
existing server and (usually) waits for a reply.
35Client - Server Examples
- Server returns the time-of-day.
- Server returns a document.
- Server prints a file for client.
- Server does a disk read or write.
- Server records a transaction.
36Sample questions
- Difference?
- Subnet, a network, WAN
- Protocols vs. interface
37Assignment Next time
- Reading
- How NOT to go about a programming assignment
- TI Ch.1
- Next Lecture
- OSI model
- Data link layer