Transcript UDP, TCP

TCP와 UDP
1
Chapter 3 outline




3.1 Transport-layer
services
3.2 Multiplexing and
demultiplexing
3.3 Connectionless
transport: UDP
3.4 Principles of reliable
data transfer

3.5 Connection-oriented
transport: TCP






segment structure
reliable data transfer
flow control
connection management
3.6 Principles of
congestion control
3.7 TCP congestion
control
2
Transport services와 protocols



양 종단 호스트 사이에서
응용 메시지의 전달을
담당한다.
transport protocol은 종단
호스트에서 동작한다.
응용 프로세스들은
transport protocol을
통해서 메시지를 전달



메시지를 쪼개서
segments로 전송
Segment에는 전달하는
응용 프로세스의 주소를
표시
수신 transport protocol은
수신한 세그먼트를 목적지
프로세스에 전달
application
transport
network
data link
physical
network
data link
physical
network
data link
physical
network
data link
physical
network
data link
physical
network
data link
physical
application
transport
network
data link
physical
3
비유
서울
부산
길수
보원
길수와 보원은 각각 기숙사에서 살고 있다. 보원은 길수에게 편지를 보낸다.
보원은 편지를 자신의 기숙사 메일함에 넣었다. 보원 기숙사의 우편 담당자는
모든 편지를 모아서 우체국에 보냈다.
마침내 보원의 편지는 길수의 기숙사에 도착했다. 길수 기숙사의 우편 담당자는 기숙사에
도착한 모든 편지를 수거하여 기숙사에 있는 각 학생들에게 편지를 전달했다.
이와 같이 보원이 보낸 편지가 길수에게 전달되었다.
Processes
메시지
Transport layer 주소
Transport-layer protocol
호스트 주소
호스트
길수와 보원
편지
장 길수, 이보원
우편 담당 책임자
기숙사 주소
기숙사
4
포트 번호(port number)

Transport layer에서 응용 프로세스를 구별하기
위해 사용하는 프로세스 주소를 포트 번호라고
한다.
5
포트 번호의 영역

포토 번호


Well known 포트 번호: 특정 프로세스에 이미 정해진
번호
임시 포트 번호: 그때 그때 프로세스에 할당되는 번호
6
IP 주소와 포트 번호
7
Transport layer(TL) protcols


TL은 응용 프로세스에 패킷을 전달할 때
프로세스가 신뢰할 수 있는 패킷을 전달할 수도
있고 혹은 Network layer(NL)로부터 받은 패킷을
그대로 전달할 수도 있다.
TCP



응용 프로세스가 신뢰할 수 있는 서비스를 제공한다.
따라서 에러 제어, 흐름 제어, 순서 제어 등의 작업을
수행해야 한다.
UDP

NL로부터 받은 패킷을 그대로 전달한다.
8
Chapter 3 outline




3.1 Transport-layer
services
3.2 Multiplexing and
demultiplexing
3.3 Connectionless
transport: UDP
3.4 Principles of reliable
data transfer

3.5 Connection-oriented
transport: TCP






segment structure
reliable data transfer
flow control
connection management
3.6 Principles of
congestion control
3.7 TCP congestion
control
9
UDP



UDP에서는 전달하는 정보 단위를 보통
datagram이라고 한다.
NL로부터 받은 datagram를 응용 해당
프로세스로 전달하는 일 만을 수행한다.
따라서 신뢰성 있는 전달을 요구하지 않는
서비스가 UDP를 이용한다.
10
UDP를 사용하는 서비스
11
UDP 헤더
12
Pseudoheader
13
Chapter 3 outline




3.1 Transport-layer
services
3.2 Multiplexing and
demultiplexing
3.3 Connectionless
transport: UDP
3.4 Principles of reliable
data transfer

3.5 Connection-oriented
transport: TCP






segment structure
reliable data transfer
flow control
connection management
3.6 Principles of
congestion control
3.7 TCP congestion
control
14
TCP

TCP의 주요 특징




연결형 방식(connection-oriented)
스트림(stream)으로 전달
수신한 패킷에 대해서 반드시 ACK 전송
신뢰성 있는 전송을 위해서 다음의 작업을
수행한다.




에러
흐름
순서
체증
제어
제어
보장
제어(congestion control)
15
TCP를 사용하는 서비스
16
스트림 전달 방식


TCP에서는 전달하는 정보 단위를
세그먼트(segment)라고 한다.(비교, IP에서는
패킷 혹은 데이터그램, Ethernet의 frame)
하지만 TCP는 세그먼트를 전송할 때 이것을
스트림의 전송으로 본다.
17
TCP에서의 세그먼트 전달
18
TCP 세그먼트의 헤더
19
Sequence number(SN)와 ACK number

SN은 세그먼트의 번호가 아니라 세그먼트가
데이터 스트림에서 위치하는 시작 바이트로
나타낸다.
20
TCP 연결: three-way handshake
21
연결 해제
22
ACK 전송

TCP는 받드시 받은 세그먼트에 대해서 ACK을
전송한다.
23
에러 제어

에러 제어

에러 검출



CRC
Checksum
에러 정정


Forward error correction
재전송(retransmission, ARQ)



Stop-and-Wait ARQ
Go-Back-N ARQ
Selective Repeat ARQ
Go-Back-N ARQ


Go-Back-N ARQ는
window가 허락하는
Retransmit
범위에서 프레임을
all frames
from I(4)
연속해서 전송한다.
그런데 프레임 전송에
에러가 발생하면
timeout
재전송을 해야
Retransmit
하는데…
from I(7)
I(0)
I(1) ACK(1)
I(2)
I(3)
I(4)
Error
I(5) NAK(4)
on I(4)
I(6)
I(4)
I(5)
I(6)
I(7)
I(0)
ACK(8) Error
I(1)
on ACK(8)
I(7)
I(0)
I(1)
I(2)
I(3)
.
.
.
Selective Repeat ARQ

현재의 window
크기의 범위 내에서
프레임을 계속
전송하는 것은 같지만
만약 에러가 발생해서
재전송을 해야 할 때
차이가 있다.
I(0)
I(1) ACK(1)
I(2)
I(3)
I(4)
Error
I(5) NAK(4)
on I(4)
I(6)
I(4)
I(7)
I(0)
I(1)
I(2)
ACK(2) Error
I(3)
on ACK(2)
I(4)
I(1)
I(5)
I(6)
I(7)
.
.
.
Retransmit
only I(4)
timeout
Retransmit
only I(1)
TCP 에러 제어

Selective Repeat와 거의 비슷하다.
27
에러 제어
28
TCP 흐름 제어

양 종단의 TCP는 흐름 제어를 수행한다.


수신 TCP의 버퍼가 넘치지 않도록 한다.
수신 TCP는 현재의 남아있는 버퍼 크기를
ACK을 전송할 때 window size 필드를
통해서 알려준다.

ACK은 세그먼트가 잘 도착했다는 것을
알려주는 것이고 window size는 현재의 버퍼
크기를 알려주는 것이다.
29
ACK로 충분한가?
window size = 3
0
1
2
3
0
1
2
3
I(0)
0
1
2
3
0
1
2
3
I(1)
I(2)
0
1
2
3
0
1
2
3
0
0
1
2
3
Window closed
0
1
2
3
Window closed
1
2
ACK(2)
0
1
2
3
0
1
2
0
3
1
2
3
0
1
2
3
I(3)
I(0)
0
1
2
3
0
1
2
3
3
I(1)
0
Window closed
ACKs not sent
1
2
3
0
1
2
3
0
1
Window closed, BUSY CONDITION
TIMEOUT
I(3)
Retransmit I(3),I(0),I(1)
I(0)
I(1)
Make the receiver’s state worse!!
30
ACK외에 buffer 크기를 알려줌
window size = 3
0
1
2
3
0
1
2
3
I(0)
0
1
2
3
0
1
2
3
I(1)
I(2)
0
1
2
3
0
1
2
3
0
0
1
2
3
Closing Window
0
1
2
3
Closing Window
1
2
ACK 2, CDT 3
0
1
2
3
0
1
2
0
3
1
2
3
0
1
2
3
I(3)
I(0)
0
1
2
3
0
1
2
3
0
Closing Window
ACK 1, CDT 0
TIMEER
3
I(1)
1
2
3
0
1
2
3
Closing Window, BUSY CONDITION
0
1
Not retransmit I(3),I(0),I(1)
ACK 1, CDT 2
0
1
2
3
0
1
2
3
Open Window
I(2)
I(3)
0
1
2
3
0
1
2
IDLE CONDITION
3
1
31
Chapter 3 outline




3.1 Transport-layer
services
3.2 Multiplexing and
demultiplexing
3.3 Connectionless
transport: UDP
3.4 Principles of reliable
data transfer

3.5 Connection-oriented
transport: TCP






segment structure
reliable data transfer
flow control
connection management
3.6 Principles of
congestion control
3.7 TCP congestion
control
32
Congestion Control
33
Congestion(체증, 혼잡)


망에 입력되는 트래픽 양이 망이 처리할 수 있는 한도를
초과할 경우 체증이 발생한다.
다음 그림은 단위 시간 당 입력되는 패킷의 수(input
load)와 단위 시간당 처리되는 패킷의 수(throughput),
그리고 패킷이 처리될 때 까지의 지연 시간(delay)
관계를 보여 주고있다.
34
TCP congestion control

Congestion의 발견(detection)



TCP는 송신한 패킷에 대해서 ACK을 수신한다.
만약 정해진 시간이 지날 때 까지 ACK이 도착하지
않으면 congestion이 발생한 것으로
판단하다.(timeout)
Rate control


TCP 호스트는 처음에는 적은 양의 패킷 전송을 하고
점차 양을 늘려나간다.(slow start)
Congestion이 발생한 것으로 판단되면 전송되는
패킷의 양을 초기 상태로 줄여서 다시
시작한다.(congestion avoidance)
35
Congestion control 파라메터

Awnd (advertised window by receiver)



초기 연결 설정 단계에서, TCP는 상대방 TCP에게
자신의 최대 버퍼 크기(초기 Awnd)를 알려준다.
세그먼트를 수신할 때 마다 TCP는 현재 자신의 버퍼
중 비어있는 공간의 크기(Awnd)를 알려준다.
Cwnd (congestion window)


TCP가 세그먼트를 전송할 때 ACK을 받지않고
연속해서 보낼 수 있는 세그먼트의 양을 결정한다.
즉, TCP 흐름 제어에 의하면 TCP는 Awnd 만큼
연속해서 세그먼트를 전송할 수 있다. 하지만
congestion control에 의해서 Awnd 만큼 전송할 수
없고 Cwnd 만큼 전송하게 된다.
36
Slow Start
initialize: cwnd = 1 (one maximum segment
size);
For each segment that is acknowleged
cwnd = cwnd + 1 until min(cwnd, awnd)
37
Congestion Avoidance


TCP는 timeout될 때까지 ACK을 받지 못하면
congestion avoidance를 수행한다.
Congestion Avoidance
If (segment timeout)
1. Set threshold = cwnd/2
2. Set cwnd = 1 and
restart “slow-start” until (cwnd = threshold)
3. If (cwnd  threshold)
cwnd = cwnd + 1 every roundtrip time
38
Slow Start와 Congestion Avoidance
20
Time out occurs
15
10
Threshold
5
1
2
3
4
5
6
7
8
9
10
11
12
13 14
15
16
Round-trip times
39
Fast Retransmit와 Fast Recovery

동일한 ACK을 3개 받을 경우

Fast Retransmit


Timeout되기 전이라도 바로 재전송한다.
Fast Recovery


Cwnd를 현재의 Cwnd의 반으로 줄인다.
그리고 줄인 Cwnd에서부터 linear하게 증가시킨다.
40
Fast Retransmit와 Fast Recovery
41
Cwnd의 변화 예
42