17 15-2 TCP 특징

Download Report

Transcript 17 15-2 TCP 특징

Chapter 15
Transmission
Control
Protocol
(TCP)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
1
▣학습목표(OBJECTIVES):
 TCP를 신뢰성 있는 스트림 배달 서비스를 제공하는
프로토콜로써 소개한다.
 TCP 특징을 정의하고 UDP의 특징과 비교한다.
 TCP 세그먼트의 형식과 필드를 정의한다.
 TCP가 제공하는 연결 지향 서비스와 연결 설정 및 연결 종료
단계에서 교환되는 세그먼트를 설명한다.
 TCP의 상태 천이 다이어그램 및 시나리오를 설명한다.
 흐름 제어와 오류 제어에 사용되는 TCP 윈도우를 설명한다.
 TCP에서 수신 윈도우가 송신 윈도우의 크기를 조절하는 흐름
제어 구현 방법을 알아본다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
2
▣학습목표(OBJECTIVES) (계속):
 데이터 전송 단계 동안에 TCP에서 사용하는 오류 제어와
FSM을 설명한다.
 TCP에서 네트워크의 혼잡을 조절하는 다양한 방법을
알아본다.
 TCP에서 사용하는 타이머 종류와 목적을 알아본다.
 TCP의 옵션과 SACK 옵션을 이용하여 TCP에서 제공하는
선택적 확인응답 제공 방법을 알아본다.
 TCP 패키지의 배치도 및 단순화된 의사 코드를 설명한다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
3
Chapter
Outline
Http://netwk.hannam.ac.kr
15.1
15.2
15.3
15.4
15.5
15.6
15.7
15.8
15.9
15.10
15.11
15.12
TCP Services
TCP Features
Segment
A TCP Connection
State Transition Diagram
Windows in TCP
Flow Control
Error Control
Congestion Control
TCP Timers
Options
TCP Package
HANNAM UNIVERSITY
4
15-1 TCP 서비스
TCP/IP 프 로 토 콜 모 음 에 서 TCP 와 다 른
프로토콜과의 관계는 그림 15.1에 나타나 있다.
TCP는 응용 계층과 네트워크 계층 사이에 위치하고
있으며, 응용 프로그램과 네트워크 동작 사이의
매개체로서 사용된다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
5
Topics Discussed in the Section
 Process-to-Process Communication
 Stream Delivery Service
 Full-Duplex Communication
 Multiplexing and Demultiplexing
 Connection-Oriented Service
 Reliable Service
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
TCP/IP 프로토콜 그룹
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
7
▣ TCP가 제공하는 서비스
프로세스 대 프로세스 통신
스트림 배달 서비스
연결지향 서비스
신뢰성 서비스
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
8
▣ 프로세스 대 프로세스 통신
TCP-대-IP
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
9
▣ 프로세스 대 프로세스 통신
포트 번호 이용
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
10
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
11
스트림 배달(Stream delivery)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
12
▣ 스트림 배달 서비스
TCP는 스트림 기반 프로토콜
바이트 스트림 형태로 데이터 송수신
두 개의 프로세스가 가상의 튜브로 연결
송신 프로세스는 바이트 스트림 생성(쓰기), 수신
프로세스는 바이트 스트림 소비(읽기)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
13
송신(Sending) 과 수신(receiving) 버퍼(buffer)
 송/수신이 동일한 속도로 이루어지지 않을
때 버퍼가 필요
Stream of bytes
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
14
TCP 세그먼트(segment)
일련의 바이트를 세그먼트라는 패킷으로 그룹화
IP 계층에 전달
Segment N
H
Http://netwk.hannam.ac.kr
Segment 1
H
HANNAM UNIVERSITY
15
▣ TCP가 제공하는 서비스
전이중 통신(양방향 데이터 송수신)
다중화와 역다중화
연결지향 서비스
두 TCP간에 가상 연결 설정
양방향 데이터 교환
연결 종료
신뢰성 서비스 – 확인응답 메커니즘 이용
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
16
15-2 TCP 특징
앞 절에서 언급한 서비스를 제공하기 위해서 이번
절에서는 TCP에서 가지고 있는 특징에 대해서
간략히 살펴보고, 뒷부분에서 자세히 살펴본다.




번호화 시스템 (Numbering System)
흐름 제어 (Flow Control)
오류 제어 (Error Control)
혼잡 제어 (Congestion Control)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
17
▣ 번호화 시스템
바이트 번호- 모든 데이터 바이트에 번호 부여
송신 순서 번호 – 세그먼트에 있는 첫 번째 바
이트에 순서번호 할당
확인응답 번호 – 자신이 수신하기를 기대하는
다음 바이트 번호
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
18
Note
각 방향으로 전송되는 데이터 바이트는
TCP에 의해서 번호가 매겨진다.
번호는 임의로 생성된 값에서 시작한다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
19
Example 15.1
TCP 연결이 5,000바이트의 파일을 전송한다고 가정하자. 첫
번째 바이트는 10,001의 번호를 가지고 있다. 만일 각각이
1,000바이트를 가지는 5개의 세그먼트에 의해서 데이터가
전달된다면, 각 세그먼트의 순서 번호는 어떻게 되는가?
Solution
다음은 각 세그먼트의 순서 번호를 보여준다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
20
Note
세그먼트 내의 순서 번호 필드의 값은 그
세그먼트에 포함되는 첫 번째 데이터
바이트의 번호를 나타낸다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
21
Note
세그먼트 내의 확인응답 번호의 값은
수신하기를 기대하는 다음 바이트의 번호를
나타낸다.
확인응답 번호는 누적이다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
22
15-3 세그먼트(SEGMENT)
TCP를 자세히 살펴보기 전에, TCP 패킷 자체에
대 해 서 살 펴 보 기 로 하 자 . TCP 에 서 의 패 킷 을
세그먼트라고 한다.
 형식(Format)
 캡슐화(Encapsulation)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
23
TCP 세그먼트 형식
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
24
▣TCP 세그먼트 형식
발신지 포트 번호(source port address)
목적지 포트 번호(destination port address)
순서 번호(sequence number)
확인 응답 번호(acknowledgement number)
헤더길이(header length) : 4 바이트 워드 값
제어(control) : 제어 또는 플래그
예약(reserved)
윈도우 크기(window size)
검사합(checksum)
긴급 포인터(urgent pointer)
옵션(option)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
25
제어 필드(Control field)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
26
TCP 세그먼트에 추가되는 의사헤더(Pseudoheader)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
27
Note
TCP에서의 검사합의 포함은 필수 사항이다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
28
캡슐화(Encapsulation)
TCP
header
Application-layer data
IP
header
Frame
header
TCP payload
IP payload
Data-link layer payload
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
29
15-4 TCP 연결
TCP는 연결 지향 프로토콜이다. 연결 지향 전송 프로토콜은
발신지와 목적지 간에 가상 경로를 설정한다. 하나의 메시지에
속 하 는 모 든 세 그 먼트 들 은 이러 한 가 상 경 로 를 통 하 여
전송된다. 전체 메시지를 하나의 단일 가상 경로를 이용하여
전송함으로써, 손상되거나 손실된 프레임의 재전송뿐만 아니라
확인응답 등의 처리도 가능하게 된다. 비연결형 프로토콜인 IP
서비스를 이용하는 TCP가 어떻게 연결 지향을 제공할 수
있는지 궁금할 것이다. 요점은 TCP 연결은 실제가 아닌
가상이라는 것이다. TCP는 상위 단계에서 동작한다. TCP는
수신측에게 각각의 세그먼트를 전송하기 위하여 IP의 서비스를
이용하지만, TCP 자체에서 연결을 제어한다. 손실되거나
훼손된 세그먼트는 재전송된다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
30
 TCP 연결
 연결 설정(Connection Establishment)
 데이터 전송(Data Transfer)
 연결 종료(Connection Termination)
 연결 리셋(Connection Reset)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
31
 TCP 연결 설정
3단계 핸드쉐이크(three-way handshake)
클라이언트와 서버 응용 프로그램간 연결
서버부터 시작(수동 개방(passive open))
클라이언트부터 시작(능동 개방(active open))
 클라이언트는 SYN 플래그가 1로 설정된 SYN 세그먼트 전송
 서버는 SYN와 ACK 플래그가 1로 설정된 세그먼트 전송
 단순한 ACK 세그먼트 전송
동시 개방
SYN 플러딩 공격
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
32
3단계(three-way) 핸드쉐이크를 이용한 연결 설정
seq: 8000
UAPRS F
SYN
seq: 15000
ack: 8001
nd: 5000
U A P R S F rw
SYN + ACK
seq: 8000
ack: 15001
UAPRS F
rwnd: 10000
ACK
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
33
Note
SYN 세그먼트는 데이터를 전달하지는
않지만 하나의 순서 번호를 소비한다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
34
Note
SYN+ACK 세그먼트는 데이터를
전달하지는 않지만 하나의 순서 번호를
소비한다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
35
Note
ACK 세그먼트는 데이터를 전달하지 않는
경우에는 순서 번호를 소비하지 않는다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
36
데이터 전송(Data Transfer)
Connection Termination
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
37
▣ 데이터 전송
양 방향 데이터 전송
데이터 전송과 확인응답을 동시에 전송
(piggyback)
푸싱(pushing) 데이터
푸쉬 비트를 설정하여 푸쉬 동작 요구
윈도우가 다 찰 때까지 기다리지 않는다는 것
긴급 데이터
URG 비트를 1로 설정, 긴급을 알림
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
38
3단계(three-way) 핸드쉐이크를 이용한 연결 종료
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
39
Note
데이터를 포함하지 않는 FIN 세그먼트는
하나의 순서 번호를 소비한다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
40
▣ 절반-닫기(half-close)
한쪽에서는 데이터를 수신하면서 데이터 전송
종료 가능
어느 쪽이든 요청 가능
서버가 모든 데이터를 수신한 후에 처리를 시
작하는 경우 발생(예:정렬(sort))
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
41
절반-닫기(Half-Close)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
42
Note
데이터를 포함하지 않는 FIN+ACK
세그먼트는 하나의 순서 번호를 소비한다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
43
15-5 STATE TRANSITION DIAGRAM
연결 설정, 연결 종료, 그리고 데이터 전송 기간
동안 발생하는 여러 가지의 이벤트들을 관리하기
위하여, TCP 소프트웨어는 그림 15.13에 나타나
있는 것과 같이 유한 상태 기기(FSM: Finite State
Machine)를 이용하여 구현된다.
시나리오(Scenario)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
44
상태 천이 다이어그램(State transition diagram)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
45
Note
FSM 내의 ESTABLISHED로 표시된 상태는
사실 두 개의 서로 다른 조합의 상태이며,
각각은 클라이언트와 서버의 데이터 전송을
위한 것이다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
46
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
47
연결설정과 반-닫기 종료 천이 다이어그램
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
48
연결 설정과 반-닫기 종료의 시간 축 다이어그램
TCP/IP Protocol Suite
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
49
일반적인 시나리오의 천이 다이어그램
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
50
일반적인 시나리오의 시간 축 다이어그램
TCP/IP Protocol Suite
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
51
동시 개방(Simultaneous open)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
52
동시 닫기(Simultaneous close)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
53
연결 거절(Denying a connection)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
54
연결 중단(Aborting a connection)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
55
15-6 TCP 윈도우
TCP에서의 데이터 전송과 흐름 제어, 오류 제어,
그리고 혼잡 제어와 같은 문제를 다루기 전에 먼저
TCP에서 사용되는 윈도우에 대해서 살펴보고자 한다.
TCP는 데이터 전송을 위한 각 방향에 대해서 (송신
윈도우와 수신 윈도우의) 두 개의 윈도우를 사용하며
따라서 양방향 통신을 위하여 네 개의 윈도우가
필요하다. 그렇지만 여기에서는 설명을 간단히 하기
위하여 통신이 (클라이언트로부터 서버로의)
단방향으로 이루어지는 상황을 고려한다. 양방향
통신은 두 개의 단방향 통신과 피기배킹을 이용하면
유추할 수 있다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
56
TCP에서 송신 윈도우( Send window)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
57
TCP에서 수신 윈도우(receive window)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
58
15-7 흐름 제어(FLOW CONTROL)
13장에서 설명한 것과 같이, 흐름 제어(flow
control)는 생산자가 데이터를 만드는 속도와
소비자가 데이터를 사용하는 속도의 균형을 맞추는
것이다. TCP는 흐름 제어와 오류 제어를 구별한다.
이 절에서는 오류 제어를 무시하고 흐름 제어에
대해서 설명한다. 임시적으로 일단 송신과 수신 TCP
사이에 설정된 논리 채널은 에러가 없다고 가정한다.
그림 15.24는 송신측과 수신측 사이의 단방향
데이터 전송의 경우를 보여주며, 13장에서 언급한
것과 같이, 양방향 데이터 전송은 단방향의
경우로부터 유추할 수 있다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
59
Topics Discussed in the Section
 Opening and Closing Windows
 Shrinking of Windows
 Silly Window Syndrome
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
60
TCP에서 데이터 흐름과 흐름 제어 피드백
Messages
are pushed
1
5
Flow control
feedback
3 Messages
are pulled
2
Segements are pushed
4
Flow control feedback
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
61
흐름 제어의 예
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
62
Example 15.2
그림 15.26은 몇몇 구현에서 이러한 필수사항에 대한 이유를 보여준다.
그림의 a 부분은 마지막 확인응답과 rwnd 값을 보여준다. 그림 b
부분은 송신측에서 206에서 214까지의 바이트를 전송한 경우를
보여준다. 206~209바이트는 확인응답되었기 때문에 제거되었다.
그렇지만 rwnd가 새로운 값인 4로 광고되었다. 즉, 210 + 4 < 206 +
12가 된다. 송신 윈도우가 축소되면 문제가 발생한다. 이미 전송된
바이트 214는 윈도우의 외부에 있다. 수신측에서는 바이트 210부터
바이트 217 중에서 어떤 것이 이미 전송되었는지를 알 수 없기 때문에
앞에서 언급한 관계식은 수신측에서 윈도우의 오른쪽 벽을 유지할 수
있도록 한다. 이러한 상황을 방지하기 위한 한 가지 방법은 수신측에서
윈도우 내에 충분한 버퍼 공간이 있기 전까지는 피드백의 전송을
연기하는 것이다. 다시 말하면, 수신측에서는 위에서 언급한 관계식을
충족하도록 하기 위해서 수신 프로세스가 좀 더 많은 바이트를
소비하기 전까지 기다리는 것이다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
63
Figure 15.26
Http://netwk.hannam.ac.kr
Example 15.2
HANNAM UNIVERSITY
64
15-8 오류 제어(ERROR CONTROL)
TCP는 신뢰성 있는 전송 계층 프로토콜이다. 즉
데이터 스트림을 TCP로 전달하는 응용
프로그램은 TCP가 전체 스트림을 순서에 맞고
오류 없이, 또한 부분적인 손실이나 중복 없이
상대편에 있는 응용 프로그램에게 전달할
것이라고 확신한다는 것을 의미한다.
TCP에서의 오류 제어는 세 가지 간단한
도구인 검사합(checksum),
확인응답(acknowledgment ), 그리고 타임-아웃
(time-out ) 등을 통하여 수행된다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
65
Topics Discussed in the Section
 Checksum
 Acknowledgment
 Retransmission
 Out-of-Order Segments
 FSMs for Data Transfer in TCP
 Some Scenarios
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
66
Note
ACK 세그먼트는 순서 번호를
소비하지 않으며
확인응답되지도 않는다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
67
Note
데이터는 순서에 어긋나게 도착할 수 있고
또한 수신 TCP에서 일시적으로 보관할 수
있다. 그렇지만 TCP는 세그먼트가 순서에
어긋나게 프로세스로 전달되지 않도록 한다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
68
Note
TCP는 선택적 반복 프로토콜의 최상의
모델이다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
69
TCP 송신측의 단순화된 FSM
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
70
수신측의 단순화된 FSM
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
71
정상적인 동작(Normal operation)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
72
손실된 세그먼트(Lost segment)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
73
Note
수신 TCP는 순서에 맞는 데이터만을
프로세스에게로 전달한다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
74
빠른 재전송(Fast retransmission)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
75
확인응답 손실(Lost acknowledgment)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
76
세그먼트를 재전송함으로써 교정되는 확인응답 손실
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
77
Note
확인응답이 손실되는 경우에
적절히 처리되지 못하면
교착상태에 빠질 수 있다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
78
15-9 혼잡 제어(CONGESTION CONTROL)
13장에서 혼잡 제어에 대해서 간략히 설명하였다.
TCP 의 혼 잡 제 어 는 개 방 루 프 (open-loop) 와 폐
루프(closed-loop) 메커니즘 모두를 기반으로 한다.
TCP는 혼잡을 방지하고 또한 혼잡이 발생한 후에는
혼잡을 감지하고 또한 혼잡에서 빠져나올 수 있도록
혼잡 윈도우와 혼잡 정책을 이용한다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
79
▣ 혼잡 제어
혼잡 윈도우
실제 윈도우 크기 = minimum(rwnd,cwnd)
혼잡 제어 원칙
느린 시작: 지수 증가
혼잡 회피: 가산 증가
혼잡 감지: 지수 감소
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
80
Topics Discussed in the Section
 Congestion Window
 Congestion Policy
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
81
느린 시작(Slow start), 지수 증가(exponential increase)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
82
Note
느린 시작 알고리즘에서
혼잡 윈도우의 크기는
임계치에 도달하기 전까지는
지수적으로 증가한다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
83
혼잡 회피(Congestion avoidance), 가신 증가(additive increase)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
84
Note
혼잡 회피 알고리즘에서
혼잡이 감지되기 전까지는
혼잡 윈도우의 크기는
가산적으로 증가한다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
85
TCP 혼잡 정책 요약
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
86
혼잡(Congestion) 예
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
87
15-10 TCP 타이머(TIMER)
TCP의 동작을 순조롭게 수행하기 위하여, TCP는
다음과 같이 4가지의 타이머를 이용한다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
88
▣ 재전송 타이머
한 세그먼트에 대한 확인응답을 기다리는 시
간인 재전송 타임아웃(RTO) 값 설정
송신 버퍼의 맨 앞 세그먼트 전송이 타이머 구동
타이머가 만료되면 세그먼트 재전송, 타이머 다시
구동
누적 확인응답된 세그먼트 버퍼에서 삭제
버퍼가 빈 경우 타이머 정지
왕복 시간(RTT)
측정된 TTT: 세그먼트에 대한 확인응답 수신에 걸
리는 시간
재전송 시간 = 2 * RTT(round-trip time)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
89
Note
TCP에서는 어느 한 순간에는 오직 하나의
RTT 측정만이 진행된다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
90
Example 15.3
가상적인 예를 살펴보자. 그림 15.39는 연결의 일부분을
보여준다. 그림에서는 연결 설정과 데이터 전송 단계의
일부분을 보여준다.
1. SYN 세그먼트가 전송될 때에는 RTTM, RTTS, 그리고 RTTD
값은 설정되지 않는다. RTO의 값은 (초기값인) 6.00초로
설정된다. 다음은 각 변수의 값들을 보여준다.
2. SYN+ACK 세그먼트가 도착하면 RTTM이 측정되며 1.5초의
값을 가진다. 다음은 각 변수들의 값을 보여준다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
91
Example 15.3 Continued
3. 첫 번째 데이터 세그먼트가 전송될 때 새로운 RTT 측정이
시작된다. 송신자가 ACK 세그먼트를 전송할 때에는 RTT
측정을 하지 않는다. 왜냐하면 ACK 세그먼트는 순서 번호를
소비하지 않으며 또한 타임-아웃 타이머도 설정되지 않기
때문이다. 이미 측정이 진행 중이기 때문에, 두 번째 데이터
세 그 먼 트 에 대 해 서 도 RTT 측 정 을 하 지 않 는 다 . ACK
세그먼트가 도착하면 그 다음 RTTM을 계산한다. 비록 ACK
세그먼트의 수신이 두 개의 세그먼트를 누적해서
확인응답해주기는 하지만, 이 세그먼트가 도착하면 첫 번째
세그먼트에 대한 RTTM 값을 계산한다. 각 변수들의 값은
다음과 같이 계산된다:
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
92
Figure 15.39
Http://netwk.hannam.ac.kr
Example 15.3
HANNAM UNIVERSITY
93
Note
TCP에서는 새로운 RTO의 계산에
재전송 세그먼트의 RTT는
고려하지 않는다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
94
Example 15.4
그 림 15.40 에 서 는 앞 선 예 제 의 연 속 으 로 , 세 그 먼 트 가
재전송되어서 Karn 알고리즘이 적용된 예를 보여준다.
T 이 그림에서 첫 번째 세그먼트가 전송되었지만 손실되었다.
RTO 타 이 머 는 4.74 초 이 후 에 만 료 된 다 . 세 그 먼 트 는
재전송되고, RTO 타이머는 앞선 RTO 값의 두 배인 9.48초로
설정된다. 시간 초과가 발생하기 전에 ACK를 수신하였다. (Karn
알고리즘에 의거하여) 새로운 RTO 값을 계산하기 위해서는 새
세그먼트를 전송하고 ACK를 수신할 때까지 기다려야 한다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
95
Figure 15.40
Http://netwk.hannam.ac.kr
Example 15.4
HANNAM UNIVERSITY
96
▣ TCP 타이머
 Karn 알고리즘
 전송된 세그먼트에 대해 확인 응답되지 않아 재전송된 경우
 이전 세그먼트에 대한 확인응답인지 재전송에 대한 확인응
답인지 여부 판단이 애매하다
 RTT 값은 재전송 없이 확인응답 수신 전까지 변동이 없음
 영속 타이머(persistence timer)
 윈도우 크기가 0 인 경우를 처리하기 위한 타이머
 수신 TCP가 윈도우 크기 0 을 통보했는데, 송신 TCP가 이에
대한 확인응답을 보냈지만 수신 TCP가 이를 수신하지 못함
 양쪽 TCP가 서로 기다리는 교착상태(deadlock) 해결
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
97
▣ TCP 타이머
Keepalive 타이머
두 TCP 간에 설정된 연결이 오랫동안 휴지(idle)
상태에 있는 것을 방지하기 위한 타이머
시간-종료 : 2 시간
2 시간이 지나도록 세그먼트를 수신하지 못하면
75초 간격으로 10 개의 프루브(probe) 전송
응답이 없으면 다운으로 간주하고 연결 종료
시간-대기 타이머(time-waited timer)
연결 종료 동안에 사용
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
98
15-11 옵션(OPTION)
TCP 헤더에는 최대 40바이트의 옵션 정보가 있을 수
있다. 이러한 옵션 정보들은 목적지에게 부가 정보를
전달하거나 또는 다른 옵션의 정렬을 맞추기 위하여
사용된다. 옵션은 단일 바이트 옵션과 다중 바이트
옵션의 두 범주로 나누어 질 수 있다. 첫 번째 범주에는
옵션 종료(end of option)과 무 동작(no operation)의
두 가지 유형의 옵션이 있다. 두 번째 범주에는 최대
세그먼트 크기(maximum segment size), 윈도우 확장
인자(window scale factor), 타임스탬프(timestamp),
SACK-허용 및 SACK 등 다섯 가지 유형의 옵션이
있다(그림 15.41 참조).
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
99
옵션(Option)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY 100
옵션 종료(End-of-option) 옵션
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
101
Note
EOP는 단지 한번만 사용할 수 있다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY 102
무-동작(No-operation) 옵션
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
103
Note
NOP는 한번 이상 사용할 수 있다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY 104
최대 세그먼트 크기 옵션
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
105
Note
MSS 값은 연결 설정 단계에서 결정되며,
연결이 유지되어 있는 동안에는
변경될 수 없다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY 106
윈도우 확장 인자(Window-scale-factor) 옵션
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
107
Note
윈도우 확장 인자는 연결 설정 과정에서만
결정될 수 있으며, 연결이 유지되어 있는
동안에는 변경될 수 없다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
108
타임스탬프 (Timestamp) 옵션
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY 109
Note
타임스탬프 옵션의 하나의 응용은 왕복
시간(RTT)를 계산하는 것이다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
110
Example 15.5
다음 그림은 한쪽 끝에서 왕복 시간을 계산하는 예를 보여준다.
다른 쪽에서 RTT를 계산하고자 한다면 모든 것을 뒤집으면 된다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
111
Note
타임스탬프 옵션은 순서 번호 겹침
방지(PAWS: Protection Against
Wrapped Sequence Number)
를 위해서도 사용될 수 있다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
112
SACK-허용, SACK 옵션
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
113
Example 15.6
순서에 어긋난 블록을 리스트하기 위하여 어떻게 SACK 옵션을
사용하는지를 살펴보도록 한다. 다음 그림에서 한쪽 끝은 다섯
개의 세그먼트를 수신하였다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
114
Example 15.7
그림 15.50에 있는 예는 ACK와 SACK를 이용하여 어떻게 중복
세그먼트를 감지할 수 있는가를 보여준다. 이 그림에서는
(하나의 블록 내에) 여러 개의 순서에 어긋난 세그먼트와 하나의
중복 세그먼트가 있다. SACK는 중복 데이터를 보여주기 위하여
첫 번째 블록을 이용하고, 순서에 어긋난 데이터를 보여주기
위하여 그 다음 블록을 이용한다. 첫 번째 블록만이 중복
데이터를 위하여 사용될 수 있다는 것을 명심해야 한다.
자연적인 질문은 ACK와 SACK 값을 수신했을 때, 송신자는
어떻게 첫 번째 블록이 중복 데이터인지를 알 수 있는 가이다(이
예제와 이전 예제를 비교해보라). 답은 첫 번째 블록에 있는
바이트들은 ACK 필드에 의해서 이미 확인응답되었다는 것이다.
따라서 이 블록은 중복된 것임에 틀림없다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
115
Example 15.7
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
116
Example 15.8
그림 15.51의 예제는 순서가 어긋나게 들어온 세그먼트 중에서
중복이 발생하는 경우를 보여준다. 이 예에서, 세그먼트 중에
하나(4001:5000)는 중복되었다.
SACK 옵션은 먼저 이러한 중복 데이터를 알리고 그 다음에
순서에 어긋난 블록을 알린다. 중복 블록이 ACK에 의해서
아직까지 확인응답되지 않았고, 순서에 어긋난 블록의
일부분(4001:5000은 4001:6000의 일부분)이므로, 송신측은
이것은 중복 데이터라는 것을 알 수 있다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
117
Figure 15.51
Http://netwk.hannam.ac.kr
Example 15.8
HANNAM UNIVERSITY
118
15-12 TCP 패키지
TCP는 매우 복잡한 프로토콜이다. TCP는 상태 천이
다이어그램을 이용하는 스트림 서비스와 연결 지향
프로토콜이다. TCP는 흐름과 오류 제어를 이용한다. TCP는
실제의 코드가 수만 라인으로 이루어질 정도로 매우 복잡하다.
이 절에서는 간략한 기본-골격의 TCP 패키지에 대해서
언급하고자 한다. 이 절의 목적은 상태 천이 다이어그램으로
표현되는 TCP의 본질을 보여주는 데 있다.
TCP 패키지는 전송 제어 블록(TCB: transmission control
block)이라고 하는 테이블과 일련의 타이머, 그리고 메인 모듈,
입력 프로세스 모듈과 출력 프로세스 모듈로 이루어진 세 개의
소프트웨어 모듈로 이루어져 있다. 그림 15.52에는 이러한 다섯
개의 요소와 상호 관계가 나타나있다.
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
119
Topics Discussed in the Section
 Transmission Control Block TCBs
 Timers
 Main Module
 Input Processing Module
 Output Processing Module
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY 120
TCP 패키지
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
121
전송 제어 블록(TCB)
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
122
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
123
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
124
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
125
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
126
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
127
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
128
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
129
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
130
알림
연습문제 풀이해서
Report로 다음주까지(일주일 후)
제출해 주세요!
Http://netwk.hannam.ac.kr
HANNAM UNIVERSITY
131