The Transport Layer

advertisement
Lectured by: Nguyễn Lê Duy Lai
HCM City University of Technology
2/14/2011
1
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
HCM City University of Technology
2/14/2011
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
HCM City University of Technology
2/14/2011
4

The network, transport, and application
layers
HCM City University of Technology
2/14/2011
5

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)
HCM City University of Technology
2/14/2011
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
HCM City University of Technology
2/14/2011
7


TPDU (Transport Protocol Data Unit):
messages sent from transport entity to
transport entity
The nesting of TPDUs, packets, and frames
HCM City University of Technology
2/14/2011
8
A state diagram for a
simple connection
management scheme:
Italics: packet arrivals
Solid lines: client's state
sequence
Dashed lines: server's
state sequence.
HCM City University
2/14/2011
of Technology
9

The socket primitives used in Berkeley
UNIXfor TCP (Internet programming)
HCM City University of Technology
2/14/2011
10


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
HCM City University of Technology
2/14/2011
11

Addressing

Connection Establishment

Connection Release

Flow Control and Buffering

Multiplexing

Crash Recovery
HCM City University of Technology
2/14/2011
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
HCM City University of Technology
2/14/2011
13


Application
addresses on a
host: Ports
TSAPs, NSAPs and
transport
connections
HCM City University
2/14/2011
of Technology
14
HCM City University of Technology
2/14/2011
15

Three-way handshake

(a) Normal operation. (b) Old CONNECTION REQUEST
appearing out of nowhere. (c) Duplicate CONNECTION
REQUEST and duplicate ACK
HCM City University of Technology
2/14/2011
16

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
HCM City University of Technology
2/14/2011
17


Asymmetric release
is the way the
telephone system
works
Abrupt
disconnection with
loss of data
HCM City University
2/14/2011
of Technology
18


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
HCM City University of Technology
2/14/2011
20
(a) Normal case of a three-way handshake (b) final ACK
lost
HCM City University of Technology
2/14/2011
21

(c) Response lost. (d) Response lost and
subsequent DRs lost
HCM City University of Technology
2/14/2011
22

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
HCM City University of Technology
2/14/2011
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
HCM City University of Technology
2/14/2011
25




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
HCM City University of Technology
2/14/2011
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
HCM City University of Technology
2/14/2011
27




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)
HCM City University of Technology
2/14/2011
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-topoint
Push and urgent data
HCM City University of Technology
2/14/2011
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
HCM City University of Technology
2/14/2011
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
HCM City University of Technology
2/14/2011
34
HCM City University of Technology
2/14/2011
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
HCM City University of Technology
2/14/2011
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
HCM City University of Technology
2/14/2011
37
(a) TCP connection establishment in the normal
case.
(b) Call collision.
HCM City University of Technology
2/14/2011
38




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
HCM City University of Technology
2/14/2011
39
HCM City University of Technology
2/14/2011
40
HCM City University of Technology
2/14/2011
41


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
HCM City University of Technology
2/14/2011
44
HCM City University of Technology
2/14/2011
45

Client operations

Identify server IP and port

Create UDP socket

Setup connection to server

Send/receive data

Close connection
HCM City University of Technology
2/14/2011
46

Server operations

Create and register socket

Listen and wait for incoming connections

Accept connection

Send/receive data

Close connection
HCM City University of Technology
2/14/2011
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
HCM City University of Technology
2/14/2011
48
HCM City University of Technology
2/14/2011
49
InetAddress
 ServerSocket
 Socket
 URL
 URLConnection
 DatagramSocket

HCM City University of Technology
2/14/2011
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()
HCM City University of Technology
2/14/2011
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()
HCM City University of Technology
2/14/2011
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

HCM City University of Technology
2/14/2011
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
HCM City University of Technology
2/14/2011
54
Socket accept() throws IOException.
 void close() throws IOException
 InetAddress getInetAddress()
 int getLocalPort()
 void setSoTimeout(int timeout) throws
SocketException

HCM City University of Technology
2/14/2011
55
Download