1 / 110

Chapter 15 Transmission Control Protocol (TCP)

Chapter 15 Transmission Control Protocol (TCP). 15.1 TCP Services. TCP/IP protocol suite. Well-known ports used by TCP. Stream Delivery. Stream Data Service (stream transport layer service) The sending TCP 1) accepts a stream of characters from sending application program

rchamp
Download Presentation

Chapter 15 Transmission Control Protocol (TCP)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter 15 Transmission Control Protocol(TCP)

  2. 15.1 TCP Services • TCP/IP protocol suite

  3. Well-known ports used by TCP

  4. Stream Delivery • Stream Data Service (stream transport layer service) • The sending TCP 1) accepts a stream of characters from sending application program 2) creates packets called segments, of appropriate size extracted from the stream 3) sends segments across the network • The receiving TCP 1) receives segments, extracts data from segments 2) orders segments if they have arrived out of order 3) delivers segments as a stream of characters to the receiving application program

  5. Stream Delivery (cont’d)

  6. Sending and receiving buffers • For stream delivery, • the sending and receiving TCPs use buffers • the sending TCP uses sending buffer to store the data coming from the sending application program. • the sending application program writes data to the buffer of the sending TCP • the receiving TCP receives the segments and stores them in a receiving buffer • the receiving application program uses the read operation to read the data from the receiving buffer. • Since the rate of reading can be slower than the rate of receiving, the data is kept in the buffer until the receiving application reads it completely.

  7. Sending and receiving buffers (cont’d)

  8. Segments • The IP layer, as a service provider for TCP, needs to send data in packets, not as a stream of bytes • At the transport layer, TCP groups a number of bytes together into a packet called a segment. • TCP adds a header to each segment and delivers the segment to the IP layer for transmission

  9. TCP Segments

  10. 15.2 TCP Features Numbering System Flow Control Error Control Congestion Control

  11. Numbering System • Byte numbers • All data bytes being transferred in each connection are numbered by TCP. • The numbering starts with a randomly generated number. • Number range for first byte : 0 ~ 2 32 -1 • If random number is 1,057 and total number 6,000bytes, the bytes are numbered from 1,057 to 7,056 • Byte numbering is used for flow and error control.

  12. Numbering System (cont’d) • Sequence number • After the bytes have been numbered, TCP assigns a sequence number to each segment that is being sent. • Sequence number for each segment is number of the first byte carried in that segment.

  13. Example15.1 Suppose a TCP connection is transferring a file of 5,000 bytes. The first byte is numbered 10,001. What are the sequence numbers for each segment if data are sent in five segments, each carrying 1,000 bytes? Solution The following shows the sequence number for each segment:

  14. Numbering System (cont’d) • Acknowledgment Number • The value of the acknowledgment field in a segment defines the number of the next byte a party expects to receives. The acknowledgment number is cumulative.

  15. 15.3 Segment TCP Segment Format

  16. Segment (cont’d) • Source port address • defining the port number of application program in the host that is sending the segment • Destination port address • defining the port number of application program in the host that is receiving the segment • Sequence number • defining the number assigned to the first byte of data contained in this segment • during the connection establishment, each party uses a random number generator to create an initial sequence number (ISN)

  17. Segment (cont’d) • Acknowledgment number • If the source of the segment has successfully received byte number x from the other party, it defines x+1 as the acknowledgment number • Header length • Indicating the number of 4-byte words in the TCP header • the value between 5 and 15 (20 and 60 bytes) • Reserved • For future use

  18. Segment (cont’d) • Control • Enabling flow control, connection establishment and termination, and mode of data transfer in TCP

  19. Segment (cont’d) • Window size • defining the size of the window, in bytes, that the other party must maintain. • maximum size of window : 65,535 bytes • Checksum : picture in next page • Urgent pointer • used when the segment contains urgent data • defining the number that must be added to the sequence number to obtain the number of the last urgent byte in the data section of the segment • Options : 40 bytes

  20. Pseudoheader added to the TCP segment • The use of the checksum in TCP is mandatory.

  21. Encapsulation A TCP segments is encapsulated in an IP datagram

  22. 15.4 A TCP Connection • TCP is connection-oriented • Establishes a virtual path between the source and destination • TCP connection is virtual, not physical • TCP uses the services of IP to deliver individual segments to the receiver, but it controls the connection itself • If a segment is lost or corrupted, it is retransmitted

  23. Connection Establishment using Three-way Handshake The server program tells its TCP to make a passive open The Client program issues a request for an active open.

  24. Connection Establishment using Three-way Handshake (cont’d) A SYN segment cannot carry data, but it consumes one sequence number. A SYN + ACK segment cannot carry data, but does consume one sequence number. An ACK segment, if carrying no data, consumes no sequence number.

  25. Data Transfer

  26. Data Transfer (cont’d) • Urgent data • To send urgent data • Use of URG bit set by sending TCP • Receiving TCP extracts the urgent data from the segment using urgent pointer

  27. Connection Termination using Three-way Handshake

  28. Connection Termination using Three-way Handshake (cont’d) The FIN segment consumes one sequence number if it does not carry data The FIN + ACK segment consumes one sequence number if it does not carry data

  29. Half-Close

  30. 15.5 State Transition Diagram To keep track of all the different events happening during connection establishment, connection termination, and data transfer, the TCP software is implemented as a finite state machine.

  31. State Transition Diagram (cont’d)

  32. State for TCP

  33. Scenarios • To understand the TCP state machines and the transition diagrams, we go through some scenario in this section. • Connection Establishment and half-Close Termination • Scenario where the server process issues a passive open and passive close, and the client process issues an active close.

  34. Transition Diagram for Connection and Half-close Termination

  35. Time-line diagram for previous Transition Diagrams

  36. Transition Diagram for a Common Scenario

  37. Time Line for a Common Scenario

  38. Simultaneous Open

  39. Simultaneous Close

  40. Denying a Connection

  41. Aborting a Connection

  42. 15.6 Windows in TCP • TCP uses two Windows • Send window and receive window • This means four windows for a bidirectional communication • To make simple, we make an assumption that communication is only unidirectional • The bidirectional communication can be inferred using two unidirectional communications with piggybacking

  43. Send Window in TCP

  44. Receive Window in TCP

  45. 15.7 Flow Control • In TCP, the sender window size is totally controlled by the receiver window value. However, the actual window size can be smaller if there is congestion in the network. • Some Points about TCP’s Sliding Windows: • The size of the window is the lesser of rwnd and cwnd • The source does not have to send a full window’s worth of data. • The window can be opened or closed by the receiver, but should not be shrunk. • The destination can send an acknowledgment at any time as long as it does not result in a shrinking window. • The receiver can temporarily shut down the window; the sender, however, can always send a segment of one byte after the window is shut down. • To prevent deadlock by proving

  46. Data Flow and Flow Control Feedbacks in TCP

  47. An example of flow control

  48. Example 15.2 Following figure shows the reason for the mandate in window shrinking. Part a of the figure shows values of last acknowledgment and rwnd. Part b shows the situation in which the sender has sent bytes 206 to 214. Bytes 206 to 209 are acknowledged and purged. The new advertisement, however, defines the new value of rwnd as 4, in which 210 + 4 < 206 + 12. When the send window shrinks, it creates a problem: byte 214 which has been already sent is outside the window. The relation discussed before forces the receiver to maintain the right-hand wall of the window to be as shown in part a because the receiver does not know which of the bytes 210 to 217 has already been sent. One way to prevent this situation is to let the receiver postpone its feedback until enough buffer locations are available in its window. In other words, the receiver should wait until more bytes are consumed by its process.

  49. Example 15.2 (cont’d)

  50. 15.8 Error Control • TCP is a reliable transport layer protocol • Application program that delivers a stream of data to TCP relies on TCP to deliver the entire stream to the application program on the other end in order, without error, and without any part lost or duplicated. • Error control in TCP is achieved through the use of three tools • Checksum • Acknowledgment • Time-Out

More Related