Title: Networks
1Networks Communication(continued)
- CS-502Operating Systems
- (Slides include materials from Operating System
Concepts, 7th ed., by Silbershatz, Galvin,
Gagne, Modern Operating Systems, 2nd ed., by
Tanenbaum, and Distributed Systems Principles
Paradigms, 2nd ed. By Tanenbaum and Van Steen)
2Principal Abstraction Socket
- Originally created in BSD Unix
- Now, part of most operating systems
- Allows opening a connection between two processes
across network - Connection
- a serial conversation between two end points
- e.g., processes, threads, tasks on different
machines - organized as a sequence of messages or datagrams
- distinct from all other connections
- One of the four principal abstractions provided
by most modern operating systems
3Definition Protocol
- Formal set of rules that govern the formats,
contents, and meanings of messages from computer
to computer, process to process, etc. - Must be agreed to by all parties to a
communication - May be defined in terms of other protocols
4The OSI 7-layer model(in a nutshell)
Silbershatz, 16.6-16.7
5Annotated OSI 7-Layer Stack
Silbershatz, page 630
6Summary OSI 7-layer model
7Circular Definition
- Socket
- End point of a connection
- Usually used in pairs, one for each direction
- Comprises IP Address Port
- Connection
- A logical linkage between pairs of sockets at two
endpoints for purposes of a particular
communication between those endpoints - i.e., a serial conversation between endpoints
- Usually two-way
8Connection
- The backbone of most message-oriented
communication protocols - Each party retains knowledge of the other
- Each party retains information about state of the
other (vis a vis the protocol itself) - Each party knows if connection is broken
-
- Note some popular protocols are
connection-less - one side retains no state information about other
side
9Establishing a Connection
- Process a on machine m creates a socket
- OS assigns a new port number q to that socket
- Process a attempts to open a connection to
machine np - p is a well-known port
- Process b on machine n is listening on p
- Receives request from mq
- Process b forks a process or spawns a thread c to
talk with mq, then resumes listening on p - Thread/process c
- Creates a new socket r for this connection
- Replies to mq with return address nr
- a and c continue to communicate over this pair of
sockets until they are finished.
10Typical Client-Server Connection
- Create socket
- On server side
- Bind
- I.e., connect socket to port (usually
well-known port) - Listen
- Sit and wait for a communication to come in
- Accept
- Create new socket for purpose of responding to
this caller
11Notes
- Responder to request for connection does not have
to be the original server machine - Delegate workload to other server systems
- Systems often include a connection ID as part of
request to open connection - Unique or randomly chosen
- Reduces spoofing of server responses
- Unix/Linux will not re-use a socket within 30
seconds - To avoid confusion between old connection and new
12Reliable Connections
- Transport layer partitions messages into packets
- TCP Transmission Control Protocol
- Sequence number of current packet
- Sequence number of last packet received correctly
- Receiver keeps track of sequence of packets
- Reassembles in right order
- Notify sender of missing, broken packets
- Sender keeps copy of each packet until receipt
acknowledged - Retransmits packets if no acknowledgement
- Window defines how many packet buffers to
maintain for efficient transmission - Allows many packets in flight
13Reliable Connections (continued)
Packet i
Packet i1
Packet i2
Packet i3
recd i
Packet ik
time
14Reliable Connections (continued)
Packet i
Packet i1
Packet i2
Packet i3
recd i
recd i
Packet ik
time
15Reliable Connections (continued)
Packet i
Packet i1
Packet i2
Packet i3
recd i
recd i
Packet ik
recd i2
time
16Reliable Connections (continued)
Packet i
Packet i1
Packet i2
Packet i3
recd i
recd i
lost
Packet ik
recd i2
recd i2
time
17Reliable Connections (continued)
- If acknowledgement received for packet i
- Delete from buffer all packets ? i
- If no acknowledgement received within a
reasonable time for packet k - Retransmit from buffer all packets ? k
- Result
- Recovers from loss of packets
- Recovers from loss of acknowledgements
- Works well for reasonably reliable internet
- Doesnt work so well for noisy, unreliable
networks
18Reminder
- How do we know if a packet is received correctly?
- Cyclic Redundancy Check (CRC)
- Polynomial computed from packet header and body
- Usually 16 or 32 bits, computed by hardware
- Appended to message
- Recomputed on reception, compared with
transmitted CRC - Equal ? packet received correctly
19Examples of Connection-based Protocols
- Telnet (virtual terminal)
- 2-way communication by character stream
- Line-by-line organization
- SMTP (Simple Mail Transport Protocol)
- For sending mail
- Layered on top of telnet protocol
- POP (Post Office Protocol)
- For receiving your mail
- Layered on top of telnet protocol
- FTP (File Transfer Protocol)
- For transmitting ASCII or binary files
- Binary data transmission not layered on telnet
protocol
20Connection-less communication
- Some communication protocols dont need the
overhead of reliable connections - When some number of errors can be tolerated
- Where recovery from those errors is easy
- UDP User Datagram Protocol
- The internet connection-less protocol (layer 4)
- Breaks messages into packets
- Reassembles at destination
- Messages delivered completely or not at all
- Does not send acknowledgement of correct receipt
21Examples
- HTTP (HyperText Transport Protocol)
- Web server responds directly to requests
- If client does not get response, retries request
- NFS (Network File System)
- For access to files on servers as if they are
local - If client does not get response, retries request
- RPC (Remote Procedure Call)
- Next topic
22Summary
- Socket, connection
- Network stack, 7-layer model
- Establishing a connection
- Reliable transmission
- Reading assignment
- Silbershatz Chapter 16