Chapter 12 Transmission Control Protocol (TCP) Mi-Jung Choi

Download Report

Transcript Chapter 12 Transmission Control Protocol (TCP) Mi-Jung Choi

Chapter 12
Transmission Control
Protocol (TCP)
Mi-Jung Choi
Dept. of Computer Science and Engineering
[email protected]
1
Contents
12.1
TCP SERVICES
12.2
TCP FEATURES
12.3
SEGMENT
12.4
A TCP CONNECTION
12.5
STATE TRANSITION DIAGRAM
12.6
FLOW CONTROL
12.7
ERROR CONTROL
12.8
CONGESTION CONTROL
12.9
TCP TIMERS
12.10
OPTIONS
12.12
TCP PACKAGE
2
Objectives
 Be able to name and understand the services offered by TCP
 Understand TCP’s flow and error control and congestion control
 Be familiar with the fields in a TCP segment
 Understand the phases in a connection-oriented connection
 Understand the TCP transition state diagram
 Be able to name and understand the timers used in TCP
 Be familiar with the TCP options
3
TCP/IP Protocols
4
TCP/IP Functions
 To create a process-to-process communication (using port numbers)
 To create a flow control mechanism at the transport level (using
sliding window)
 To create a error control mechanism at the transport level (using
Ack packet, time-out, retransmission)
 Sequence control mechanism
 A connection oriented, reliable transport protocol
5
12.1 TCP SERVICES
 We explain the services offered by TCP to the processes at the
application layer
 The topics discussed in this section include:
Process-to-Process Communication
Stream Delivery Service
Full-Duplex Communication
Connection-Oriented Service
Reliable Service
6
Process-to-Process Communication
 For client/server communication
we must define the
 Local host
 Local client program
 Remote host
 Remote server program
7
PROCESS-TO-PROCESS COMMUNICATION (cont.)
 Port numbers :
~ mentioned in UDP chapter
8
PROCESS-TO-PROCESS COMMUNICATION (cont.)
 Well-known port in TCP
Port
Protocol
Description
7
Echo
Echoes a received datagram back to the sender
9
Discard
Discards any datagram that is received
11
Users
Active users
13
Daytime
Returns the date and the time
17
Quote
Returns a quote of the day
19
Chargen
Returns a string of characters
20
FTP,data
File transfer Protocol for data
21
FTP,control
File transfer Protocol for control
23
TELNET
Terminal Network
25
SMTP
Simple Mail Transfer Protocol
53
DNS
Domain Name Server
67
BOOTP
Bootstrap protocol
79
Finger
finger
80
HTTP
Hypertext Transfer Protocol
111
RPC
Remote Procedure Call
9
Example 1
As we said in Chapter 11, in UNIX, the well-known ports are stored in a
file called /etc/services. Each line in this file gives the name of the
server and the well-known port number. We can use the grep utility to
extract the line corresponding to the desired application. The following
shows the ports for FTP.
$ grep ftp /etc/services
ftp-data
ftp-control
20/tcp
21/tcp
10
PROCESS-TO-PROCESS COMMUNICATION (cont.)
 Socket addresses
~ a combination of IP address and port number
~ to make a connection for each end
~ to need a pair of socket addresses: client and server socket address
These four pieces of information are part of the IP header (IP
address) and TCP header (port number)
11
12.1 TCP SERVICES (cont.)
 Stream delivery service
Sending and receiving buffers
Segments
 Full-Duplex service
piggybacking
 Connection-Oriented service
A virtual connection (not physical connection)
 Reliable service
Reply acknowledge packet
12
Stream delivery
Sending TCP
~ receives data as a stream of bytes from application process using sending
buffer
~ make data to appropriate segments and transfer to network
Receiving TCP
~ receives segments using receiving buffer
~ reassemble segments to data and send data as a stream of bytes to
application process
13
Sending and receiving buffers
 The sending process and the receiving process may not produce and
consume data at the same speed, TCP needs buffers for storage
14
TCP segments
 IP layer, as a service provider for TCP, needs to send data in packets,
not as a stream of bytes.
 TCP groups a number of bytes together into a packet called segment
15
UDP vs. TCP communication
응용
응용
응용
응용
TCP
송신버퍼
TCP
수신버퍼
segment
응용
segment
segment
segment
응용
응용
UDP
응용
UDP
다중화
역다중화
datagram
datagram
datagram
datagram
16
12.2 TCP FEATURES
 To provide the services mentioned in the previous section, TCP has
several features that are briefly summarized in this section.
 The topics discussed in this section include:
Numbering System
Flow Control
Error Control
Congestion Control
17
Numbering system
TCP keeps track of the segment being transmitted or
received using sequence number and acknowledge number
These number is used for flow and error control
The bytes of data being transferred in each connection
are numbered by TCP
The numbering starts with a randomly generated number
(b/w 0 ~ 232-1)
18
Numbering system
When TCP receives bytes of data from the process and
stores them in sending buffer
After numbering the bytes, TCP assigns sequence
number to each segment that is being sent
The value of the sequence number field in a segment
defines the number of the first data byte contained in that
segment
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
19
Example 2
 Suppose a TCP connection is transferring a file of 5000 bytes. The first byte is
numbered 10001. What are the sequence numbers for each segment if data is sent
in five segments, each carrying 1000 bytes?
 Solution:
The following shows the sequence number for each segment:
Segment 1 ➡ Sequence Number: 10,001 (range: 10,001 to 11,000)
Segment 2 ➡ Sequence Number: 11,001 (range: 11,001 to 12,000)
Segment 3 ➡ Sequence Number: 12,001 (range: 12,001 to 13,000)
Segment 4 ➡ Sequence Number: 13,001 (range: 13,001 to 14,000)
Segment 5 ➡ Sequence Number: 14,001 (range: 14,001 to 15,000)
20
12.3 SEGMENT
A packet in TCP is called a segment
The topics discussed in this section include:
•Format
•Encapsulation
21
12.3 SEGMENT
 The unit of data transfer b/w 2 devices using TCP is a segment
22
12.3 SEGMENT (cont.)
 Segment
source port address : the port number of the application program in
the sender’s host
destination port address : the port number of the application
program in the receiver’s host
sequence number : the number of the 1st byte of data in this segment
acknowledgement number : the byte number that the receiver is
expecting to receive from the other party
header length : 4 bytes
control :
window size: 16 bits
checksum : all segment including pseudo-header
urgent pointer :
option :
23
12.3 SEGMENT (cont.)
 Control
Flag
----URG
ACK
PSH
RST
SYN
FIN
Description
-------------Urgent pointer field is valid
Acknowledgment field is valid
Push the data
Connection must be reset
Synchronize sequence numbers
Terminate the connection
24
12.3 SEGMENT (cont.)
 Control
URG: 긴급 포인터가 유효함
ACK: 확인 응답 번호가 유효함
PSH: 수신측은 데이터를 가능한 빨리 응용으로 보내야 함
RST: 연결을 재설정
SYN: 연결을 초기화히기 위해 순서 번호를 동기화
FIN: 송신측이 데이터 전송을 종료함
25
Pseudoheader added to the TCP datagram
The inclusion of the checksum in TCP is mandatory
26
Encapsulation and decapsulation
27
12.4 TCP CONNECTION
 TCP is connection-oriented. A connection-oriented transport protocol
establishes a virtual path between the source and destination. All of the
segments belonging to a message are then sent over this virtual path. A
connection-oriented transmission requires three phases: connection
establishment, data transfer, and connection termination.
 The topics discussed in this section include:
Connection Establishment
Data Transfer
Connection Termination
Connection Reset
28
12.4 TCP CONNECTION
 TCP: connection oriented
 Establishment the VC b/w source TCP and destination
 Connection establishment and termination
 Connection establishment
3 단계 수행
1)
2)
3)
호스트 A는 호스트 B에게 연결 설정 세그먼트를 전송(초기화 정보)
호스트 B는 호스트 A에게 확인응답 세그먼트 와 초기화 정보 세그먼트 전송
호스트 A는 호스트 B에게 확인응답 세그먼트 전송
 Connection termination
4단계 수행
1)
2)
3)
4)
호스트 A는 연결 종료를 알리고 세그먼트 전송
호스트 B는 A의 요구에 대해 확인 응답하는 세그먼트 전송
호스트 B는 연결 종료를 알리는 세그먼트 전송
호스트 A는 B의 요구에 대해 확인응답
29
Connection establishment using three-way handshaking
30
Connection establishment using three-way handshaking
 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.
31
Data transfer
The FIN segment consumes one sequence number if it does not carry data
32
Connection termination using three-way handshaking
The FIN + ACK segment consumes one sequence number if it does not carry data
33
Half Close
 One end stops sending
data while still receiving
data.
Normally initiated by
client.
It can occur when the
server needs all data
before processing can
begin
 Sorting example
The client, after sending
all data to be sorted, can
close the connection in
the outbound direction.
However, the inbound
direction must remain
open to receive the sorted
data.
34
Connection Reset
 The TCP at end may deny a connection request, may abort a
connection, or may terminate an idle connection. All of these are
done with the RST (reset) flag.
Denying a connection
Aborting a connection
Terminating an idle connection
35
12.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.
The topics discussed in this section include:
•Scenarios
36
12.5 STATE TRANSITION DIAGRAM
 finite state machine
At any moment, the machine is in one of the state
 TCP states
State
----CLOSED
LISTEN
SYN-SENT
SYN-RCVD
ESTABLISHED
FIN-WAIT-1
FIN-WAIT-2
CLOSING
TIME-WAIT
CLOSE-WAIT
LAST-ACK
Description
-------------There is no connection
The server is waiting for calls from the client
A connection request is sent; waiting for acknowledgment
A connection request is received
Connection is established
The application has requested the closing of the connection
The other side has accepted the closing of the connection
Both sides have decided to close simultaneously
Waiting for retransmitted segments to die
The server is waiting for the application to close
The server is waiting for the last acknowledgment
37
STATE TRANSITION DIAGRAM
server
client
SYN
SYN +ACK
ACK
data
ack
FIN
ACK
FIN
ACK
- state : ovals
- Transition from one to another
state : directed line
- values on line
input / output
- Dotted line : server
- Solid line : client
- Thin line : unusual situation
38
Connection scenario
The common value for MSL
(Maximum Segment Lifetime)
is between 30 seconds and 1
minute
39
STATE TRANSITION DIAGRAM
Client states
Server states
40
Connection termination using three-way handshake
41
Simultaneous Open
42
Simultaneous Close
43
Denying a Connection
44
Aborting a connection
45
TCP OPERATION
Encapsulation and decapsulation
46
TCP OPERATION (cont.)
 Buffering
47
TCP OPERATION (cont.)
 Multiplexing and demultiplexing
48