ch01_06

Lemur zaprasza

Chapter 1Overview of TCP/IP 1.6 Transport LayerThe protocol layer just above the Internet Layer is the Host-to-Host
Transport Layer. This name is usually shortened to Transport
Layer. The two most important protocols in the Transport Layer are
Transmission Control Protocol (TCP)
and User Datagram Protocol (UDP).
TCP provides reliable data delivery service with end-to-end error detection
and correction. UDP provides low-overhead,
connectionless datagram delivery service.
Both protocols
deliver data between the Application Layer and the
Internet Layer. Applications programmers can choose whichever service
is more appropriate for their specific applications.1.6.1 User Datagram ProtocolThe User Datagram Protocol gives application programs direct access to
a datagram delivery service, like the delivery service that IP
provides. This allows applications to exchange messages over the
network with a minimum of protocol overhead.UDP is an unreliable, connectionless datagram protocol. As noted
previously, "unreliable" merely means that there are no techniques in the
protocol for verifying that the data reached the other end of the
network correctly. Within your computer, UDP will deliver data
correctly. UDP uses 16-bit Source Port
and Destination Port numbers
in word 1 of the message header, to deliver data to
the correct applications process.
Figure 1.8
shows the UDP
message format.Figure 1.8: UDP message formatWhy do applications programmers choose UDP as a data transport service?
There are a number of good reasons. If the amount of data being
transmitted is small, the overhead of creating connections and ensuring
reliable delivery may be greater
than the work of re-transmitting the entire data set. In this case,
UDP is the most efficient choice for a Transport Layer protocol.
Applications that fit a query-response model
are also excellent
candidates for using UDP. The response can be used as a positive
acknowledgment to the query. If a response isn't received within a
certain time period, the application just sends another query. Still
other applications provide their own techniques for reliable data delivery,
and don't require that service from the transport layer protocol.
Imposing another layer of acknowledgment on any of these types of
applications is inefficient.1.6.2 Transmission Control ProtocolApplications that require the transport protocol to provide reliable
data delivery use TCP because it
verifies that data is delivered across the network accurately and in
the proper sequence. TCP is a reliable,
connection-oriented, byte-stream protocol. Let's look at
each of the terms - reliable, connection-oriented, and byte-stream - in
more detail.TCP provides reliability
with a mechanism called Positive
Acknowledgment with Re-transmission (PAR).
Simply stated, a system
using PAR sends the data again, unless it hears from the remote system
that the data arrived okay. The unit of data exchanged between
cooperating TCP modules is called a segment
(see
Figure 1.9
Each segment contains a checksum
that the recipient uses to
verify that the data is undamaged. If the data segment is received
undamaged, the receiver sends a positive acknowledgment
back to the sender. If the data segment is damaged, the receiver
discards it. After an appropriate time-out period,
the sending TCP module re-transmits any segment for which no
positive acknowledgment has been received.Figure 1.9: TCP segment formatTCP is connection-oriented. It establishes a logical end-to-end
connection between the two communicating hosts. Control information,
called a handshake,
is exchanged between the two endpoints to
establish a dialogue before data is transmitted. TCP indicates the
control function of a segment by setting
the appropriate bit in the Flags field in word 4 of the segment header.The type of handshake used by TCP is called a three-way
handshake because three segments are exchanged.
Figure 1.10
shows the simplest form of the three-way handshake. Host A begins the
connection by sending host B a segment with the "Synchronize
sequence numbers" (SYN) bit set.
This segment tells host B
that A wishes to set up a connection, and it tells B what
sequence number host A will use as a starting number for
its segments. (Sequence numbers are used to keep data in the proper
order.) Host B responds to A with a segment that has
the "Acknowledgment" (ACK) and SYN bits set. B's segment
acknowledges the receipt of A's segment, and informs A which
Sequence Number host B will start with. Finally, host
A sends a segment that acknowledges receipt of B's segment,
and transfers the first actual data.Figure 1.10: Three-way handshakeAfter this exchange, host A's TCP has positive evidence that the
remote TCP is alive and ready to receive data. As soon as the
connection is established, data can be transferred. When the
cooperating modules have concluded the data transfers, they will
exchange a three-way handshake with segments containing the "No more
data from sender" bit (called the FIN bit)
to close the
connection. It is the end-to-end exchange of data that provides the
logical connection between the two systems.TCP views the data it sends as a continuous stream of bytes, not
as independent packets. Therefore, TCP takes care to maintain the
sequence in which bytes are sent and received.
The Sequence Number
and Acknowledgment Number fields
in the
TCP segment header keep track of the bytes.The TCP standard does not require that each system start numbering
bytes with any specific number; each system chooses the
number it will use as a starting point. To keep track of the data
stream correctly, each end of the connection must know the other end's
initial number. The two ends of the connection synchronize
byte-numbering systems by exchanging SYN segments during the handshake. The
Sequence Number field in the SYN segment contains the Initial
Sequence Number (ISN),
which is the starting point for the
byte-numbering system. For security reasons the ISN should be a
random number, though it is often 0.Each byte of data is numbered sequentially from the ISN, so the first
real byte of data sent has a sequence number of ISN+1. The
Sequence Number in the header of a data segment identifies the
sequential position in the data stream of the first data byte in the
segment. For example, if the first byte in the data stream was sequence
number 1 (ISN=0) and 4000 bytes of data have already been transferred,
then the first byte of data in the current segment is byte 4001, and
the Sequence Number would be 4001.The Acknowledgment Segment (ACK) performs two functions:
positive acknowledgment and flow control.
The acknowledgment tells the
sender how much data has been received, and how much more the receiver
can accept. The Acknowledgment Number is the sequence number of the next
byte the receiver expects to receive. The standard does not require
an individual acknowledgment for every packet. The acknowledgment
number is a positive acknowledgment of all bytes up to that number.
For example, if the first byte sent was numbered 1 and 2000 bytes have
been successfully received, the Acknowledgment Number would be 2001.The Window field contains the window,
or the number of bytes
the remote end is able to accept. If the receiver is capable of
accepting 6000 more bytes, the window would be 6000.
The window indicates to the sender that it can continue
sending segments as long as the total number of bytes that it sends
is smaller than the window of bytes that
the receiver can accept. The receiver controls
the flow of bytes from the sender by changing the size of the window.
A zero window tells the sender to cease transmission until it
receives a non-zero window value.Figure 1.11
shows a TCP data stream that starts with an Initial
Sequence Number of 0. The receiving system has received and acknowledged
2000 bytes, so the current Acknowledgment Number is 2001. The receiver
also has enough buffer space for another 6000 bytes, so it has
advertised a window of 6000. The sender is currently sending a segment
of 1000 bytes starting with Sequence Number 4001. The sender has
received no acknowledgment for the bytes from 2001 on, but continues
sending data as long as it is within the window. If the sender fills
the window and receives no acknowledgment of the data previously sent,
it will, after an appropriate time-out, send the data again starting
from the first unacknowledged byte.In
Figure 1.11
re-transmission would
start from byte 2001 if no further acknowledgments are received. This
procedure ensures that data is reliably received at the far end of the
network.TCP is also responsible for delivering data received from IP to the
correct application. The application that the data is bound for is
identified by a 16-bit number called the port number.
The Source Port
and Destination Port
are contained in the first word of the segment header.
Correctly passing data to and from
the Application Layer is an important part of what the Transport Layer
services do.Figure 1.11: TCP data stream1.5 Internet Layer1.7 Application Layer[ Library Home | DNS & BIND | TCP/IP | sendmail | sendmail Reference | Firewalls | Practical Security ]
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • teen-mushing.xlx.pl
  • Wątki
    Powered by wordpress | Theme: simpletex | © Lemur zaprasza