Download TCP - WordPress.com

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Point-to-Point Protocol over Ethernet wikipedia , lookup

RS-232 wikipedia , lookup

Remote Desktop Services wikipedia , lookup

Zero-configuration networking wikipedia , lookup

Airborne Networking wikipedia , lookup

Computer network wikipedia , lookup

Network tap wikipedia , lookup

AppleTalk wikipedia , lookup

Parallel port wikipedia , lookup

Net bias wikipedia , lookup

Multiprotocol Label Switching wikipedia , lookup

Asynchronous Transfer Mode wikipedia , lookup

Serial digital interface wikipedia , lookup

RapidIO wikipedia , lookup

Recursive InterNetwork Architecture (RINA) wikipedia , lookup

Wake-on-LAN wikipedia , lookup

Internet protocol suite wikipedia , lookup

Deep packet inspection wikipedia , lookup

Real-Time Messaging Protocol wikipedia , lookup

Cracking of wireless networks wikipedia , lookup

UniPro protocol stack wikipedia , lookup

IEEE 1355 wikipedia , lookup

TCP congestion control wikipedia , lookup

Transcript
The Transmission Control
Protocol (TCP)
Application Services
(Telnet, FTP, e-mail, WWW)
Reliable Stream
Unreliable Transport
Transport (TCP)
Service (UDP)
Connectionless Packet Delivery Service
(IP)
The Transmission Control
Protocol (TCP)
• TCP is a protocol that specifies:
– How to distinguish among multiple destinations on a
given machine
– How to initiate and terminate a stream transfer
– Format of the data and acknowledgments that two
computers exchange to achieve a reliable transfer
– Procedures the computers use to ensure that the data
arrives correctly
Distinguishing Among
Multiple Destinations
• Like UDP, TCP uses protocol ports to identify the
ultimate destination within a machine
• Unlike UDP, TCP defines a connection as the
fundamental abstraction for data transfer
• Connection:
– Virtual circuit
– Identified by a pair of endpoints
Initiating Stream Transfers
• Virtual Circuit - simulate a circuit switched
network over a packet-switched network
– Sender and receiver interact before transfer begins to
set up the connection
– Once the connection is established a stream transfer can
begin
– During the transfer, protocol software on the two
machines communicate to ensure that data is delivered
correctly
– Upon completion of the transfer the connection is
closed
Initiating Stream Transfers (cont)
• An endpoint for a TCP connection is defined by a
(host, port) pair
– Host = the IP address of for a host
– Port = a TCP port on that host
• A TCP connection is defined by a pair of
endpoints:
– Port 1037 on www.whitehouse.gov and port 76 on
viper.cs.virginia.edu:
• (198.137.240.91, 1037) and (128.143.137.17, 76)
Initiating Stream Transfers (cont)
• Multiple connections to same host:
– Port 1037 on www.whitehouse.gov and port 76 on
viper.cs.virginia.edu:
• (198.137.240.91, 1037) and (128.143.137.17, 76)
– Port 355 on falcon.cs.jmu.edu and port 801 on
viper.cs.virginia.edu:
• (134.126.10.30, 355) and (128.143.137.17, 801)
Initiating Stream Transfers (cont)
• Multiple connections to same port:
– Port 1037 on www.whitehouse.gov and port 444 on
viper.cs.virginia.edu:
• (198.137.240.91, 1037) and (128.143.137.17, 444)
– Port 355 on falcon.cs.jmu.edu and port 444 on
viper.cs.virginia.edu:
• (134.126.10.30, 355) and (128.143.137.17, 444)
• No ambiguity - connection identified by both
endpoints
Initiating Stream Transfers (cont)
• Both endpoints must agree to participate:
– Passive open - one application program contacts its
O.S. and indicates that it will accept an incoming
connection
– Active open - application program at other end contacts
its O.S. and requests a connection
• Both TCP software modules cooperate to establish
a connection
• Application programs can transmit data (TCP
provides reliability)
TCP Data Stream Format
• Data from application programs is a sequence of
octets (with no type associated)
• TCP divides data into segments for transmission
• Usually, each segment travels across the internet
in a single IP datagram
Review: Unreliable Packet
Delivery Service
• Benefits:
– Fast
– Cost-effective
• Drawbacks:
– Packet loss, corruption, delay, duplication, out-of-order
delivery
– Sender might transmit faster than receiver can receive
– Dictates a set packet size
The Need for a Reliable Stream
Delivery Service
• Application-level programmers don’t want:
– To have to provide reliability in each application
– To be constrained by fixed-size packets
• Application-level programmers do want:
–
–
–
–
Reliability
Unstructured, stream-oriented service
Full duplex virtual circuit connection
Buffered transfer
Providing Reliability with
Acknowledgments and Retransmissions
Sender
Network
Receiver
Send packet 1
Receive packet 1
Send ACK 1
Receive ACK 1
Send packet 2
Receive packet 2
Send ACK 2
Receive ACK 2
Packet Loss
Sender
Network
Receiver
Send packet 1
(Timeout)
Send packet 1
Receive packet 1
Send ACK 1
Receive ACK 1
ACK Loss
Sender
Network
Receiver
Send packet 1
Receive packet 1
Send ACK 1
(Timeout)
Send packet 1
Receive packet 1
(Discard)
Send ACK 1
Receive ACK 1
ACK Delayed
Sender
Network
Receiver
Send packet 1
Receive packet 1
(Timeout)
Send packet 1
Receive ACK 1
Receive ACK 1
(Discard)
Send ACK 1
Receive packet 1
(Discard)
Send ACK 1
A Problem
A simple positive acknowledgment protocol
wastes a substantial amount of network
bandwidth because it must delay sending a
new packet until it receives an
acknowledgment for the previous packet.
A Solution
Sender
Network
1
2
ACK1
3
ACK2
ACK3
Receiver
Sliding Windows
window
1
2
3
4
5
6
7
8
9
10
All packets inside the window can be transmitted
When an acknowledgment for packet 1 is received the
window slides to the right and allows the transmission
of packet 9:
1
2
3
4
5
6
7
8
9
10
Sliding Windows (cont)
• Receiver must keep a sliding window as well:
window
1
2
3
4
5
6
7
8
9
10
• After packet 1 is received and acknowledged:
1
2
3
4
5
6
7
8
9
10
Sliding Windows (cont)
1
2
3
4
5
6
7
8
9
10
• Conceptually partitions the packets into three
classes:
– Transmitted, received, and acknowledged packets
(outside and left of sliding window)
– Packets being transmitted (inside the window)
– Packets waiting to be transmitted (outside and right of
sliding window)
Sliding Windows (cont)
• Only unacknowledged packets are retransmitted
– Keep separate timer for each packet
• Performance:
– Depends on the window size and the speed of the
underlying network
– Note: sliding window protocol with window size = 1 is
the same as the simple positive acknowledgment
protocol we saw earlier
Sliding Windows: Performance
• Tuning the sliding window protocol
– Increase window size so that sender is transmitting
packets as fast as the network can carry them
– Eliminates network idle time
– Increases throughput (as compared to the simple
positive acknowledgment protocol)
Ideal Sliding Window
Performance
Sender
Network
Receiver
TCP - Efficient Transmission and
Flow Control
• Uses a specialized sliding window mechanism
• Multiple segments can be sent before an
acknowledgment arrives
– Efficient transmission
• Allows receiver to restrict transmission until it has
sufficient buffer space to accommodate more data
– Flow control
TCP Sliding Windows
• Operates at the octet level
• Octets of the data stream are numbered sequentially
1
2
3
4
Octets 1&2 have been
sent and acknowledged
5
6
7
8
9
Octets 7&8
can be sent
Octets 3-6 sent but
not acknowledged
10
TCP Sliding Windows
• Four per (full duplex) connection:
–
–
–
–
A sends to B
A receives from B
B sends to A
B receives from A
TCP Sliding Windows Flow Control
• Each window can vary in size over time
– Each ACK contains a window advisement
– Specifies how many additional octets of data
the receiver is willing to accept
– Sender increases or decreases sending window
sized based on the receiver’s advise
• Provides end-to-end flow control
TCP Sliding Windows Flow Control Example
• Sender transmits 3 octets
1
2
3
4
5
6
7
8
9
10
11
12
13
14
• Receives an ACK 3 with window advisement = 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
• Sender transmits 1 octet
1
2
3
4
5
6
7
8
9
10
11
12
13
14
TCP Sliding Windows Flow Control Example (cont)
• Receives an ACK 4 with window advisement = 7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
9
10
11
12
13
14
• Sender transmits 4 octets
1
2
3
4
5
6
7
8
• Receives an ACK 8 with window advisement = 4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Summary
• TCP is a transport protocol that specifies:
– How to distinguish among multiple destinations on a
given machine
– How to initiate and terminate a stream transfer
– Format of the data and acknowledgments that two
computers exchange to achieve a reliable transfer
– Procedures the computers use to ensure that the data
arrives correctly