Computer networks 1 - Lecture 8: The transport layer
Get socket information
InetAddress getInetAddress()
int getPort()
InetAddress getLocalAddress()
int getLocalPort()
Using output and input Streams
public OutputStream getOutputStream() throws
IOException
public InputStream getInputStream() throws
IOException
55 trang |
Chia sẻ: nguyenlam99 | Lượt xem: 852 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Computer networks 1 - Lecture 8: The transport layer, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Computer Networks 1
Lectured by: Nguyễn Lê Duy Lai
2/14/2011
HCM City University of
Technology 1
Lecture 8:
The Transport Layer
Reference: Chapter 6 - “Computer Networks”,
Andrew S. Tanenbaum, 4th Edition, Prentice Hall,
2003.
2/14/2011 HCM City University of Technology 2
The Transport Services
Elements of Transport Protocols
A Simple Transport Protocol
The Internet Transport Protocols: UDP
The Internet Transport Protocols: TCP
Performance issues
Outline
2/14/2011
HCM City University of
Technology 3
Transport Layer task is to provide reliable, cost-effective data transport
from the source machine to the destination machine, independently of
the physical network or networks currently in use
Services Provided to the Upper Layers
Transport Service Primitives
Berkeley Sockets
An Example of Socket Programming:
An Internet File Server
The Transport Services
2/14/2011
HCM City University of
Technology 4
The network, transport, and application layers
Services Provided to the Upper
Layers
2/14/2011 5
HCM City University of
Technology
The connection-oriented transport service, connections have three
phases: establishment, data transfer, and release
The connectionless transport service
Why are there two distinct layers?
The transport code runs entirely on the users' machines
The network layer mostly runs on the routers (which are operated
by the carrier)
Types of Transport Services
2/14/2011
HCM City University of
Technology 6
The transport layer must provide some operations to application
programs
Each transport service has its own interface
The primitives for a simple transport service
Transport Service Primitives
2/14/2011 7
HCM City University of
Technology
TPDU (Transport Protocol Data Unit): messages sent from transport
entity to transport entity
The nesting of TPDUs, packets, and frames
Transport Protocol Data Unit
2/14/2011 8
HCM City University of
Technology
Transport Service State Diagram
A state diagram for a
simple connection
management scheme:
Italics: packet arrivals
Solid lines: client's state
sequence
Dashed lines: server's
state sequence.
2/14/2011 9
HCM City University of
Technology
The socket primitives used in Berkeley UNIXfor TCP (Internet
programming)
Berkeley Sockets
2/14/2011 10
HCM City University of
Technology
Server code can be compiled and run on any UNIX system connected to
the Internet
Client code can then be compiled and run on any other UNIX machine
SERVER_PORT
BUF_SIZE
Server: setsockopt, bind, listen, accept, send, receive, close
Client: socket, connect, send, receive, close
Ex: An Internet File Server
2/14/2011
HCM City University of
Technology 11
Addressing
Connection Establishment
Connection Release
Flow Control and Buffering
Multiplexing
Crash Recovery
Elements of Transport
Protocols
2/14/2011
HCM City University of
Technology 12
Transport protocols resemble the data link protocols?
Yes: Dealing with error control, sequencing, and flow control, among
other issues
No: dissimilarities between the environments in which the two
protocols operate (physical channel and the entire subnet)
Potential existence of storage capacity in the subnet
Buffering and flow control
A comparison needed...
2/14/2011
HCM City University of
Technology 13
Addressing
Application addresses
on a host: Ports
TSAPs, NSAPs and
transport connections
2/14/2011 14
HCM City University of
Technology
Initial Connection Protocol
2/14/2011
HCM City University of
Technology 15
Three-way handshake
(a) Normal operation. (b) Old CONNECTION REQUEST appearing out
of nowhere. (c) Duplicate CONNECTION REQUEST and duplicate ACK
Connection Establishment
2/14/2011 16
HCM City University of
Technology
The problem occurs when the network can lose, store, and duplicate
packets
The existence of delayed duplicates
A machine losing all memory
Guarantee not only that a packet is dead, but also that all
acknowledgements to it are also dead
Connection Establishment
Issues
2/14/2011
HCM City University of
Technology 17
Asymmetric Connection Release
Asymmetric release is
the way the telephone
system works
Abrupt disconnection
with loss of data
2/14/2011 18
HCM City University of
Technology
Symmetric release treats the connection as two separate unidirectional
connections and requires each one to be released separately
A host can continue to receive data even after it has sent a
DISCONNECT TPDU
Avoiding data loss
Determining that all the work has been done and the connection
should be terminated is not so obvious
Sophisticated Release Protocol
2/14/2011
HCM City University of
Technology 19
If either blue army attacks by itself, it will be
defeated, but if the two blue armies attack
simultaneously, they will be victorious
In fact, it can be proven that no protocol exists that
works
The Two-Army Problem
2/14/2011 20
HCM City University of
Technology
(a) Normal case of a three-way handshake (b) final ACK
lost
Symmetric Connection Release
2/14/2011
HCM City University of
Technology 21
(c) Response lost. (d) Response lost and subsequent
DRs lost
Continue...
2/14/2011 22
HCM City University of
Technology
If the network service is unreliable, the sender must
buffer all TPDUs sent, just as in the data link layer
The receiver may maintain a single buffer pool shared by
all connections
When a TPDU comes in, an attempt is made to
dynamically acquire a new buffer
Flow control mechanism must be applied at the sender to
prevent it from having too many unacknowledged TPDUs
outstanding at once
Sliding window flow control scheme in which the sender
dynamically adjusts the window size to match the
network's carrying capacity
Flow Control and Buffering
2/14/2011
HCM City University of
Technology 23
UDP – User Datagram Protocol
Connection-less service
Useful in client-server situations: Remote Procedure Call, real-time
AV streaming
TCP – Transmission Control Protocol
Connection-oriented service
Reliable byte stream services over unreliable network
Most widely used in Internet
The Internet Transport
Protocols
2/14/2011
HCM City University of
Technology 24
UDP transmits segments consisting of an 8-byte header
followed by the payload
Two ports serve to identify the end points within the
source and destination machines
UDP Header
2/14/2011 25
HCM City University of
Technology
Source port is primarily needed when a reply must be sent back to the
source
When a UDP segment arrives, its payload is handed to the process
attached to the destination port
The UDP length field includes the 8-byte header and the data
The UDP checksum is optional and stored as 0 if not computed
UDP Segment
2/14/2011
HCM City University of
Technology 26
Does:
Providing an interface to the IP protocol
Demultiplexing multiple processes using the ports
Does Not:
Flow control
Error control
Retransmission upon receipt of a bad segment
UDP Does and Does Not Do...
2/14/2011
HCM City University of
Technology 27
Trying to arrange request-reply interactions on networks to be
cast in the form of procedure calls
Allowing programs to call procedures located on remote hosts
Information can be transported from the caller to the callee in
the parameters and can come back in the procedure result
Remote Procedure Call
2/14/2011 28
HCM City University of
Technology
Step 1: Client calling the client stub with the
parameters pushed onto the stack
Step 2: Client stub packing the parameters into a
message and making a system call to send the
message (marshaling)
Step 3: Kernel sending the message from the client
machine to the server machine
Step 4: Kernel passing the incoming packet to the
server stub
Step 5: Server stub calling the server procedure with
the unmarshaled parameters
RPC Steps
2/14/2011
HCM City University of
Technology 29
Internet radio, Internet telephony, music-on-demand,
videoconferencing, video-on-demand, and other multimedia
applications
The Real-Time Transport
Protocol
2/14/2011 30
HCM City University of
Technology
An internetwork differs from a single network:
different topologies, bandwidths, delays, packet
sizes, and other parameters
TCP was specifically designed to provide a reliable
end-to-end byte stream over an unreliable
internetwork
TCP transport entity, either a library procedure, a
user process, or part of the kernel
TCP breaks user data stream up into pieces not
exceeding 64 KB (in practice, 1460 data bytes)
Introduction to TCP
2/14/2011
HCM City University of
Technology 31
Sender and receiver need to create connection end-
points first, called sockets
Each socket is addressed by the host IP address (32
bits) and a port number (16 bits)
A TCP connection must be explicitly established
between sockets
Port numbers < 1024 are reserved (well-known
ports)
TCP connections are full-duplex and point-to-point
Push and urgent data
TCP Service Model
2/14/2011
HCM City University of
Technology 32
A single daemon, called inetd (Internet daemon) in
UNIX, attach itself to multiple ports
When first incoming connection, inetd forks off a
new process and executes the appropriate daemon in
it, letting that daemon handle the request
Inetd learns which ports it is to use from a
configuration file
The system administrator can set up the system to
have permanent daemons
TCP Daemons
2/14/2011
HCM City University of
Technology 33
The sending and receiving TCP entities exchange
data in the form of segments
Two limits restrict the segment size:
65,515-byte IP payload
Maximum transfer unit (MTU): 1500 bytes
Basic protocol used by TCP entities is the sliding
window
Segments can arrive out of order, delayed, timed out
Each byte in the stream has its own unique offset
TCP Segment
2/14/2011
HCM City University of
Technology 34
The TCP Segment Header
2/14/2011
HCM City University of
Technology 35
Source port and Destination port: identify the local end points
of the connection
Sequence number: every byte of data is numbered in a TCP
stream
Acknowledgement number: specifies the next byte expected
TCP header length: tells how many 32-bit words are contained
in the TCP header
URG bit: is set to 1 if the Urgent pointer is in use
ACK bit: is set to 1 to indicate that the Acknowledgement
number is valid
PSH bit: indicates PUSHed data
Explanation
2/14/2011
HCM City University of
Technology 36
RST bit: is used to reset a connection
SYN bit: is used to establish connections
FIN bit: is used to release a connection
Window size: field tells how many bytes may be sent starting at the
byte acknowledged
Checksum field: checksums the header, the data, and the conceptual
pseudoheader
Options: provides a way to add extra facilities
Explanation (cont')
2/14/2011
HCM City University of
Technology 37
(a) TCP connection establishment in the normal
case.
(b) Call collision.
TCP Connection Establishment
2/14/2011 38
HCM City University of
Technology
Each simplex connection is released independently
Either party can send a TCP segment with the FIN bit set
To avoid the two-army problem, timers are used
If a response to a FIN is not forthcoming within two maximum packet
lifetimes, the sender of the FIN releases the connection
TCP Connection Release
2/14/2011
HCM City University of
Technology 39
TCP Connection Management
Modeling
2/14/2011
HCM City University of
Technology 40
Window Management in TCP
2/14/2011
HCM City University of
Technology 41
TCP attempts to achieve this goal by dynamically manipulating the
window size
Detecting congestion was difficult
Two potential problems exist: network capacity and receiver capacity
Each sender maintains two windows: negotiated window, and
congestion window
Slow start: test the size of congestion window
TCP Congestion Control
2/14/2011
HCM City University of
Technology 42
Internet Congestion Algorithm
2/14/2011
HCM City University of
Technology 43
Client operations
Identify server IP and port
Create UDP socket
Send/receive data to server
Close socket
Server operations
Create socket and register with the system
Read client messages and respond to client
Client-Server Application with
UDP (1)
2/14/2011
HCM City University of
Technology 44
Client-Server Application with
UDP (2)
2/14/2011
HCM City University of
Technology 45
Client operations
Identify server IP and port
Create UDP socket
Setup connection to server
Send/receive data
Close connection
Client-Server Application with
TCP (1)
2/14/2011
HCM City University of
Technology 46
Server operations
Create and register socket
Listen and wait for incoming connections
Accept connection
Send/receive data
Close connection
Client-Server Application with
TCP (2)
2/14/2011
HCM City University of
Technology 47
Concurrent server operations
Create and register socket
Listen and wait for incoming connections
Accept connection and spawn new thread to
handle the connection
Listen and wait for new connection
Thread operations
Send/receive data through connection
Close connection
Client-Server Application with
TCP (3)
2/14/2011
HCM City University of
Technology 48
Client-Server Application with
TCP (4)
2/14/2011
HCM City University of
Technology 49
InetAddress
ServerSocket
Socket
URL
URLConnection
DatagramSocket
Java API: java.net package
2/14/2011
HCM City University of
Technology 50
Class used for internet addresses (Internet Protocol)
Use methods: getLocalHost, getByName, or
getAllByName to create an InetAddress instance:
public static InetAddess InetAddress.getByName(String
hostname)
public static InetAddess [] InetAddress.getAllByName(String
hostname)
public static InetAddess InetAddress.getLocalHost()
To get the host IP address or host name:
getHostAddress()
getHostName()
InetAddress class
2/14/2011
HCM City University of
Technology 51
To describe a socket
To create a socket
Socket(InetAddress address, int port)
Socket(String host, int port)
Socket(InetAddress address, int port, InetAddress, localAddr, int
localPort)
Socket(String host, int port, InetAddress, localAddr, int localPort)
Socket()
Socket Class (1)
2/14/2011
HCM City University of
Technology 52
Get socket information
InetAddress getInetAddress()
int getPort()
InetAddress getLocalAddress()
int getLocalPort()
Using output and input Streams
public OutputStream getOutputStream() throws
IOException
public InputStream getInputStream() throws
IOException
Socket Class (2)
2/14/2011
HCM City University of
Technology 53
Used for a server side socket
Create a ServerSocket
ServerSocket(int port) throws IOException
ServerSocket(int port, int backlog) throws IOException
ServerSocket(int port, int backlog, InetAddress bindAddr) throws
IOException
ServerSocket Class (1)
2/14/2011
HCM City University of
Technology 54
Socket accept() throws IOException.
void close() throws IOException
InetAddress getInetAddress()
int getLocalPort()
void setSoTimeout(int timeout) throws SocketException
ServerSocket Class (2)
2/14/2011
HCM City University of
Technology 55
Các file đính kèm theo tài liệu này:
- cn1_lecture08_0594.pdf