chapter 15

131
HANNAM UNIVERSITY Http://netwk.hannam.ac.kr 1 Chapter 15 Chapter 15 Transmissi Transmissi on on Control Control Protocol Protocol (TCP) (TCP)

Upload: eliana-moody

Post on 01-Jan-2016

28 views

Category:

Documents


1 download

DESCRIPTION

Chapter 15. Transmission Control Protocol (TCP). 학습목표 (OBJECTIVES):. TCP 를 신뢰성 있는 스트림 배달 서비스를 제공하는 프로토콜로써 소개한다 . TCP 특징을 정의하고 UDP 의 특징과 비교한다 . TCP 세그먼트의 형식과 필드를 정의한다 . TCP 가 제공하는 연결 지향 서비스와 연결 설정 및 연결 종료 단계에서 교환되는 세그먼트를 설명한다 . TCP 의 상태 천이 다이어그램 및 시나리오를 설명한다 . - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 1

Chapter 15Chapter 15

TransmissiTransmissionon

ControlControlProtocolProtocol

(TCP)(TCP)

Page 2: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

▣학습목표학습목표 (OBJECTIVES):(OBJECTIVES):

2

TCP 를 신뢰성 있는 스트림 배달 서비스를 제공하는 프로토콜로써 소개한다 .

TCP 특징을 정의하고 UDP 의 특징과 비교한다 .

TCP 세그먼트의 형식과 필드를 정의한다 .

TCP 가 제공하는 연결 지향 서비스와 연결 설정 및 연결 종료 단계에서 교환되는 세그먼트를 설명한다 .

TCP 의 상태 천이 다이어그램 및 시나리오를 설명한다 .

흐름 제어와 오류 제어에 사용되는 TCP 윈도우를 설명한다 .

TCP 에서 수신 윈도우가 송신 윈도우의 크기를 조절하는 흐름 제어 구현 방법을 알아본다 .

Page 3: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

▣학습목표학습목표 (OBJECTIVES) ((OBJECTIVES) ( 계속계속 ):):

3

데이터 전송 단계 동안에 TCP 에서 사용하는 오류 제어와 FSM 을 설명한다 .

TCP 에서 네트워크의 혼잡을 조절하는 다양한 방법을 알아본다 .

TCP 에서 사용하는 타이머 종류와 목적을 알아본다 .

TCP 의 옵션과 SACK 옵션을 이용하여 TCP 에서 제공하는 선택적 확인응답 제공 방법을 알아본다 .

TCP 패키지의 배치도 및 단순화된 의사 코드를 설명한다 .

Page 4: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 4

Chapter Chapter OutlineOutline

15.1 TCP Services15.1 TCP Services15.2 TCP Features15.2 TCP Features15.3 Segment15.3 Segment15.4 A TCP Connection15.4 A TCP Connection

15.5 State Transition Diagram15.5 State Transition Diagram15.6 Windows in TCP15.6 Windows in TCP15.7 Flow Control15.7 Flow Control15.8 Error Control15.8 Error Control15.9 Congestion Control15.9 Congestion Control15.10 TCP Timers15.10 TCP Timers15.11 Options15.11 Options15.12 TCP Package15.12 TCP Package

Page 5: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 5

15-1 TCP 서비스

TCP/IP 프 로 토 콜 모 음 에 서 TCP 와 다 른 프로토콜과의 관계는 그림 15.1 에 나타나 있다 . TCP 는 응 용 계 층 과 네 트 워 크 계 층 사 이 에 위치하고 있으며 , 응용 프로그램과 네트워크 동작 사이의 매개체로서 사용된다 .

Page 6: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr6

Topics Discussed in the SectionTopics Discussed in the Section

Process-to-Process Communication Stream Delivery Service Full-Duplex Communication Multiplexing and Demultiplexing Connection-Oriented Service Reliable Service

Page 7: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 7

TCP/IP 프로토콜 그룹

Page 8: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

▣ TCPTCP 가 제공하는 가 제공하는 서비스서비스

프로세스 대 프로세스 통신

스트림 배달 서비스

연결지향 서비스

신뢰성 서비스

8

Page 9: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

▣ 프로세스 대 프로세스 통신프로세스 대 프로세스 통신

TCP- 대 -IP

9

Page 10: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

▣ 프로세스 대 프로세스 통신프로세스 대 프로세스 통신

포트 번호 이용

10

Page 11: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 11

Page 12: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 12

스트림 배달 (Stream delivery)

Page 13: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

▣ 스트림 배달 서비스스트림 배달 서비스

TCP 는 스트림 기반 프로토콜

바이트 스트림 형태로 데이터 송수신

두 개의 프로세스가 가상의 튜브로 연결

송신 프로세스는 바이트 스트림 생성 ( 쓰기 ), 수신

프로세스는 바이트 스트림 소비 ( 읽기 )

13

Page 14: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

송신송신 (Sending) (Sending) 과 수신과 수신 (receiving) (receiving) 버퍼버퍼(buffer)(buffer)

송 /수신이 동일한 속도로 이루어지지 않을 때 버퍼가 필요

14

Stream of bytes

Page 15: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

TCP TCP 세그먼트세그먼트 (segment)(segment)

일련의 바이트를 세그먼트라는 패킷으로 그룹화 IP 계층에 전달

15

Segment 1

H

Segment N

H

Page 16: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

▣ TCPTCP 가 제공하는 가 제공하는 서비스서비스

전이중 통신 ( 양방향 데이터 송수신 )

다중화와 역다중화

연결지향 서비스두 TCP 간에 가상 연결 설정양방향 데이터 교환연결 종료

신뢰성 서비스 – 확인응답 메커니즘 이용

16

Page 17: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

번호화 시스템 (Numbering System) 흐름 제어 (Flow Control) 오류 제어 (Error Control) 혼잡 제어 (Congestion Control)

17

15-2 TCP 특징

앞 절에서 언급한 서비스를 제공하기 위해서 이번 절에서는 TCP 에서 가지고 있는 특징에 대해서 간략히 살펴보고 , 뒷부분에서 자세히 살펴본다 .

Page 18: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

▣ 번호화 시스템번호화 시스템

바이트 번호 - 모든 데이터 바이트에 번호 부여

송신 순서 번호 – 세그먼트에 있는 첫 번째

바이트에 순서번호 할당

확인응답 번호 – 자신이 수신하기를 기대하는

다음 바이트 번호

18

Page 19: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 19

각 방향으로 전송되는 데이터 바이트는 TCP 에 의해서 번호가 매겨진다 .

번호는 임의로 생성된 값에서 시작한다 .

Note

Page 20: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 20

TCP 연결이 5,000 바이트의 파일을 전송한다고 가정하자 . 첫 번째 바이트는 10,001 의 번호를 가지고 있다 . 만일 각각이 1,000 바이트를 가지는 5 개의 세그먼트에 의해서 데이터가 전달된다면 , 각 세그먼트의 순서 번호는 어떻게 되는가 ?

Solution다음은 각 세그먼트의 순서 번호를 보여준다 .

Example 15.1Example 15.1

Page 21: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 21

세그먼트 내의 순서 번호 필드의 값은 그 세그먼트에 포함되는 첫 번째 데이터

바이트의 번호를 나타낸다 .

Note

Page 22: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 22

세그먼트 내의 확인응답 번호의 값은 수신하기를 기대하는 다음 바이트의 번호를

나타낸다 .

확인응답 번호는 누적이다 .

Note

Page 23: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 23

15-3 세그먼트 (SEGMENT)

TCP 를 자세히 살펴보기 전에 , TCP 패킷 자체에 대 해 서 살 펴 보 기 로 하 자 . TCP 에 서 의 패 킷 을 세그먼트라고 한다 .

형식 (Format) 캡슐화 (Encapsulation)

Page 24: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 24

TCP 세그먼트 형식

Page 25: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

▣TCPTCP 세그먼트 형식세그먼트 형식발신지 포트 번호 (source port address)목적지 포트 번호 (destination port address)순서 번호 (sequence number) 확인 응답 번호 (acknowledgement number)헤더길이 (header length) : 4 바이트 워드 값제어 (control) : 제어 또는 플래그예약 (reserved)윈도우 크기 (window size)검사합 (checksum)긴급 포인터 (urgent pointer)옵션 (option)

25

Page 26: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 26

제어 필드 (Control field)

Page 27: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 27

TCP 세그먼트에 추가되는 의사헤더 (Pseudoheader)

Page 28: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 28

TCP 에서의 검사합의 포함은 필수 사항이다 .

Note

Page 29: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 29

Frameheader

IPheader

Application-layer dataTCPheader

Data-link layer payload

IP payload

TCP payload

캡슐화 (Encapsulation)

Page 30: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 30

15-4 TCP 연결

TCP 는 연결 지향 프로토콜이다 . 연결 지향 전송 프로토콜은 발 신 지 와 목 적 지 간 에 가 상 경 로 를 설 정 한 다 . 하 나 의 메시지에 속하는 모든 세그먼트들은 이러한 가상 경로를 통하여 전송된다 . 전체 메시지를 하나의 단일 가상 경로를 이용하여 전송함으로써 , 손상되거나 손실된 프레임의 재전송뿐만 아니라 확인응답 등의 처리도 가능하게 된다 . 비연결형 프로토콜인 IP 서비스를 이용하는 TCP 가 어떻게 연결 지향을 제공할 수 있는지 궁금할 것이다 . 요점은 TCP 연 결 은 실 제 가 아 닌 가 상 이 라 는 것 이 다 . TCP 는 상 위 단계에서 동작한다 . TCP 는 수신측에게 각각의 세그먼트를 전송하기 위하여 IP 의 서비스를 이용하지만 , TCP 자체에서 연결을 제어한다 . 손실되거나 훼손된 세그먼트는 재전송된다 .

Page 31: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 31

TCP TCP 연결연결

연결 설정 (Connection Establishment) 데이터 전송 (Data Transfer) 연결 종료 (Connection Termination) 연결 리셋 (Connection Reset)

Page 32: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

TCP TCP 연결 설정연결 설정3 단계 핸드쉐이크 (three-way handshake)클라이언트와 서버 응용 프로그램간 연결서버부터 시작 ( 수동 개방 (passive open)) 클라이언트부터 시작 ( 능동 개방 (active open))

클라이언트는 SYN 플래그가 1 로 설정된 SYN 세그먼트 전송 서버는 SYN 와 ACK 플래그가 1 로 설정된 세그먼트 전송 단순한 ACK 세그먼트 전송

동시 개방SYN 플러딩 공격

32

Page 33: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 33

Connectionopened

PassiveopenActive

open

SYN

U A P R S F

seq: 8000

SYN + ACKU A P R S F

seq: 15000

ack: 8001rwnd: 5000

ACK

U A P R S F

seq: 8000ack: 15001

rwnd: 10000

3 단계 (three-way) 핸드쉐이크를 이용한 연결 설정

Page 34: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 34

SYN 세그먼트는 데이터를 전달하지는 않지만 하나의 순서 번호를 소비한다 .

Note

Page 35: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 35

SYN+ACK 세그먼트는 데이터를 전달하지는 않지만 하나의 순서 번호를

소비한다 .

Note

Page 36: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 36

ACK 세그먼트는 데이터를 전달하지 않는 경우에는 순서 번호를 소비하지 않는다 .

Note

Page 37: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 37

Sendrequest

Receive

Receive

Sendrequest

Sendrequest

Connection Termination

데이터 전송 (Data Transfer)

Page 38: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

▣ 데이터 전송데이터 전송

양 방향 데이터 전송 데이터 전송과 확인응답을 동시에 전송

(piggyback) 푸싱 (pushing) 데이터

푸쉬 비트를 설정하여 푸쉬 동작 요구윈도우가 다 찰 때까지 기다리지 않는다는 것

긴급 데이터URG 비트를 1 로 설정 , 긴급을 알림

38

Page 39: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 39

3 단계 (three-way) 핸드쉐이크를 이용한 연결 종료

Page 40: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 40

데이터를 포함하지 않는 FIN 세그먼트는 하나의 순서 번호를 소비한다 .

Note

Page 41: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

▣ 절반절반 -- 닫기닫기 (half-close)(half-close)

한쪽에서는 데이터를 수신하면서 데이터 전송

종료 가능

어느 쪽이든 요청 가능

서버가 모든 데이터를 수신한 후에 처리를

시작하는 경우 발생 ( 예 :정렬 (sort))

41

Page 42: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 42

절반 -닫기 (Half-Close)

Page 43: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 43

데이터를 포함하지 않는 FIN+ACK 세그먼트는 하나의 순서 번호를 소비한다 .

Note

Page 44: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 44

15-5 STATE TRANSITION DIAGRAM

연결 설정 , 연결 종료 , 그리고 데이터 전송 기간 동안 발생하는 여러 가지의 이벤트들을 관리하기 위하여 , TCP 소프트웨어는 그림 15.13 에 나타나 있는 것과 같이 유한 상태 기기 (FSM: Finite State Machine) 를 이용하여 구현된다 .

시나리오 (Scenario)

Page 45: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

상태 천이 다이어그램상태 천이 다이어그램 (State transition (State transition diagram)diagram)

45

Page 46: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 46

FSM 내의 ESTABLISHED 로 표시된 상태는 사실 두 개의 서로 다른 조합의

상태이며 , 각각은 클라이언트와 서버의 데이터 전송을 위한 것이다 .

Note

Page 47: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 47

Page 48: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

연결설정과 반연결설정과 반 -- 닫기 종료 천이 다이어그램닫기 종료 천이 다이어그램

48

Page 49: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

TCP/IP Protocol Suite

49

연결 설정과 반연결 설정과 반 --닫기 종료의 시간 축 다이어그램닫기 종료의 시간 축 다이어그램

Page 50: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 50

일반적인 시나리오의 천이 다이어그램일반적인 시나리오의 천이 다이어그램

Page 51: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

TCP/IP Protocol Suite

51

일반적인 시나리오의 시간 축 다이어그램일반적인 시나리오의 시간 축 다이어그램

Page 52: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 52

동시 개방동시 개방 (Simultaneous open)(Simultaneous open)

Page 53: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 53

동시 닫기동시 닫기 (Simultaneous close)(Simultaneous close)

Page 54: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 54

연결 거절연결 거절 (Denying a connection)(Denying a connection)

Page 55: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 55

연결 중단연결 중단 (Aborting a connection)(Aborting a connection)

Page 56: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 56

15-6 TCP 윈도우

TCP 에서의 데이터 전송과 흐름 제어 , 오류 제어 , 그리고 혼잡 제어와 같은 문제를 다루기 전에 먼저 TCP 에서 사용되는 윈도우에 대해서 살펴보고자 한다 . TCP 는 데이터 전송을 위한 각 방향에 대해서 (송신 윈도우와 수신 윈도우의 ) 두 개의 윈도우를 사용하며 따라서 양방향 통신을 위하여 네 개의 윈도우가 필요하다 . 그렇지만 여기에서는 설명을 간단히 하기 위하여 통신이 ( 클라이언트로부터 서버로의 ) 단방향으로 이루어지는 상황을 고려한다 . 양방향 통신은 두 개의 단방향 통신과 피기배킹을 이용하면 유추할 수 있다 .

Page 57: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 57

TCPTCP 에서 송신 윈도우에서 송신 윈도우 ( Send window) ( Send window)

Page 58: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 58

TCPTCP 에서 수신 윈도우에서 수신 윈도우 (receive window) (receive window)

Page 59: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 59

15-7 흐름 제어 (FLOW CONTROL)

13장에서 설명한 것과 같이 , 흐름 제어 (flow control) 는 생산자가 데이터를 만드는 속도와 소비자가 데이터를 사용하는 속도의 균형을 맞추는 것이다 . TCP 는 흐름 제어와 오류 제어를 구별한다 . 이 절에서는 오류 제어를 무시하고 흐름 제어에 대해서 설명한다 . 임시적으로 일단 송신과 수신 TCP 사이에 설정된 논리 채널은 에러가 없다고 가정한다 . 그림 15.24 는 송신측과 수신측 사이의 단방향 데이터 전송의 경우를 보여주며 , 13장에서 언급한 것과 같이 , 양방향 데이터 전송은 단방향의 경우로부터 유추할 수 있다 .

Page 60: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 60

Topics Discussed in the SectionTopics Discussed in the Section

Opening and Closing Windows Shrinking of Windows Silly Window Syndrome

Page 61: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 61

Messagesare pushed

1

Segements are pushed

2

Messagesare pulled

3

Flow control feedback

4

Flow controlfeedback5

TCPTCP 에서 데이터 흐름과 흐름 제어 피드백에서 데이터 흐름과 흐름 제어 피드백

Page 62: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 62

흐름 제어의 예 흐름 제어의 예

Page 63: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 63

그림 15.26 은 몇몇 구현에서 이러한 필수사항에 대한 이유를 보여준다 . 그림의 a 부분은 마지막 확인응답과 rwnd 값을 보여준다 . 그림 b 부분은 송신측에서 206 에서 214 까지의 바 이 트 를 전 송 한 경 우 를 보 여 준 다 . 206~209 바 이 트 는 확인응답되었기 때문에 제거되었다 . 그렇지만 rwnd 가 새로운 값인 4 로 광고되었다 . 즉 , 210 + 4 < 206 + 12 가 된다 . 송신 윈도우가 축소되면 문제가 발생한다 . 이미 전송된 바이트 214 는 윈도우의 외부에 있다 . 수신측에서는 바이트 210 부터 바이트 217 중에서 어떤 것이 이미 전송되었는지를 알 수 없기 때문에 앞에서 언급한 관계식은 수신측에서 윈도우의 오른쪽 벽을 유지할 수 있도록 한다 . 이러한 상황을 방지하기 위한 한 가지 방법은 수신측에서 윈도우 내에 충분한 버퍼 공간이 있기 전까지는 피드백의 전송을 연기하는 것이다 . 다시 말하면 , 수신측에서는 위에서 언급한 관계식을 충족하도록 하기 위해서 수신 프로세스가 좀 더 많은 바이트를 소비하기 전까지 기다리는 것이다 .

Example 15.2Example 15.2

Page 64: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 64

Figure 15.26Figure 15.26 Example 15.2Example 15.2

Page 65: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 65

15-8 오류 제어 (ERROR CONTROL)

TCP 는 신뢰성 있는 전송 계층 프로토콜이다 . 즉 데이터 스트림을 TCP 로 전달하는 응용 프로그램은 TCP 가 전체 스트림을 순서에 맞고 오류 없이 , 또한 부분적인 손실이나 중복 없이 상대편에 있는 응용 프로그램에게 전달할 것이라고 확신한다는 것을 의미한다 .

TCP 에서의 오류 제어는 세 가지 간단한 도구인 검사합 (checksum), 확인응답(acknowledgment ), 그리고 타임 - 아웃 (time-out ) 등을 통하여 수행된다 .

Page 66: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 66

Topics Discussed in the SectionTopics Discussed in the Section

Checksum Acknowledgment Retransmission Out-of-Order Segments FSMs for Data Transfer in TCP Some Scenarios

Page 67: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 67

ACK 세그먼트는 순서 번호를 소비하지 않으며

확인응답되지도 않는다 .

Note

Page 68: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 68

데이터는 순서에 어긋나게 도착할 수 있고 또한 수신 TCP 에서 일시적으로 보관할 수

있다 . 그렇지만 TCP 는 세그먼트가 순서에 어긋나게 프로세스로 전달되지

않도록 한다 .

Note

Page 69: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 69

TCP 는 선택적 반복 프로토콜의 최상의 모델이다 .

Note

Page 70: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 70

TCP TCP 송신측의 단순화된 송신측의 단순화된 FSM FSM

Page 71: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 71

수신측의 단순화된 수신측의 단순화된 FSM FSM

Page 72: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 72

정상적인 동작정상적인 동작 (Normal operation)(Normal operation)

Page 73: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 73

손실된 세그먼트손실된 세그먼트 (Lost segment)(Lost segment)

Page 74: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 74

수신 TCP 는 순서에 맞는 데이터만을 프로세스에게로 전달한다 .

Note

Page 75: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 75

빠른 재전송빠른 재전송 (Fast retransmission)(Fast retransmission)

Page 76: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 76

확인응답 손실확인응답 손실 (Lost acknowledgment)(Lost acknowledgment)

Page 77: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 77

세그먼트를 재전송함으로써 교정되는 확인응답 손실세그먼트를 재전송함으로써 교정되는 확인응답 손실

Page 78: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 78

확인응답이 손실되는 경우에 적절히 처리되지 못하면 교착상태에 빠질 수 있다 .

Note

Page 79: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 79

15-9 혼잡 제어 (CONGESTION CONTROL)

13 장에서 혼잡 제어에 대해서 간략히 설명하였다 . TCP 의 혼잡 제어는 개방 루프 (open-loop) 와 폐 루프(closed-loop) 메커니즘 모두를 기반으로 한다 . TCP는 혼잡을 방지하고 또한 혼잡이 발생한 후에는 혼잡을 감지하고 또한 혼잡에서 빠져나올 수 있도록 혼잡 윈도우와 혼잡 정책을 이용한다 .

Page 80: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

▣ 혼잡 제어혼잡 제어

혼잡 윈도우

실제 윈도우 크기 = minimum(rwnd,cwnd)

혼잡 제어 원칙느린 시작 : 지수 증가혼잡 회피 : 가산 증가혼잡 감지 : 지수 감소

80

Page 81: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 81

Topics Discussed in the SectionTopics Discussed in the Section

Congestion Window Congestion Policy

Page 82: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 82

cwnd

1

cwnd

2

RTT

cwnd

4

RTT

cwnd

8

RTT

느린 시작느린 시작 (Slow start), (Slow start), 지수 증가지수 증가 (exponential increase)(exponential increase)

Page 83: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 83

느린 시작 알고리즘에서 혼잡 윈도우의 크기는

임계치에 도달하기 전까지는 지수적으로 증가한다 .

Note

Page 84: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 84

혼잡 회피혼잡 회피 (Congestion avoidance), (Congestion avoidance), 가신 증가가신 증가 (additive increase)(additive increase)

Page 85: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 85

혼잡 회피 알고리즘에서 혼잡이 감지되기 전까지는

혼잡 윈도우의 크기는가산적으로 증가한다 .

Note

Page 86: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 86

TCP TCP 혼잡 정책 요약혼잡 정책 요약

Page 87: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 87

혼잡혼잡 (Congestion) (Congestion) 예예

Page 88: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 88

15-10 TCP 타이머 (TIMER)

TCP 의 동작을 순조롭게 수행하기 위하여 , TCP 는 다음과 같이 4 가지의 타이머를 이용한다 .

Page 89: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

▣ 재전송 타이머재전송 타이머 한 세그먼트에 대한 확인응답을 기다리는 시간인

재전송 타임아웃 (RTO) 값 설정송신 버퍼의 맨 앞 세그먼트 전송이 타이머 구동타이머가 만료되면 세그먼트 재전송 , 타이머 다시 구동누적 확인응답된 세그먼트 버퍼에서 삭제버퍼가 빈 경우 타이머 정지

왕복 시간 (RTT)측정된 TTT: 세그먼트에 대한 확인응답 수신에 걸리는

시간

재전송 시간 = 2 * RTT(round-trip time)

89

Page 90: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 90

TCP 에서는 어느 한 순간에는 오직 하나의 RTT 측정만이 진행된다 .

Note

Page 91: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 91

가상적인 예를 살펴보자 . 그림 15.39 는 연결의 일부분을 보여준다 . 그림에서는 연결 설정과 데이터 전송 단계의 일부분을 보여준다 .

1. SYN 세그먼트가 전송될 때에는 RTTM, RTTS, 그리고 RTTD 값은 설정되지 않는다 . RTO 의 값은 ( 초기값인 ) 6.00초로 설정된다 . 다음은 각 변수의 값들을 보여준다 .

2. SYN+ACK 세그먼트가 도착하면 RTTM 이 측정되며 1.5초의 값을 가진다 . 다음은 각 변수들의 값을 보여준다 .

Example 15.3Example 15.3

Page 92: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 92

3. 첫 번째 데이터 세그먼트가 전송될 때 새로운 RTT 측정이 시작된다 . 송신자가 ACK 세그먼트를 전송할 때에는 RTT 측정을 하지 않는다 . 왜냐하면 ACK 세그먼트는 순서 번호를 소비하지 않으며 또한 타임 - 아웃 타이머도 설정되지 않기 때문이다 . 이미 측정이 진행 중이기 때문에 , 두 번째 데이터 세그먼트에 대해서도 RTT 측정을 하지 않는다 . ACK 세그먼트가 도착하면 그 다음 RTTM 을 계산한다 . 비록 ACK 세그먼트의 수신이 두 개의 세그먼트를 누적해서 확인응답해주기는 하지만 , 이 세그먼트가 도착하면 첫 번째 세그먼트에 대한 RTTM 값을 계산한다 . 각 변수들의 값은 다음과 같이 계산된다 :

Example 15.3 Example 15.3 Continued

Page 93: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 93

Figure 15.39 Example 15.3

Page 94: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 94

TCP 에서는 새로운 RTO 의 계산에 재전송 세그먼트의 RTT 는

고려하지 않는다 .

Note

Page 95: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 95

그 림 15.40 에 서 는 앞 선 예 제 의 연 속 으 로 , 세 그 먼 트 가 재전송되어서 Karn 알고리즘이 적용된 예를 보여준다 .

T 이 그림에서 첫 번째 세그먼트가 전송되었지만 손실되었다 . RTO 타 이 머 는 4.74 초 이후에 만 료 된 다 . 세 그 먼 트 는 재전송되고 , RTO 타이머는 앞선 RTO 값의 두 배인 9.48초로 설정된다 . 시간 초과가 발생하기 전에 ACK 를 수신하였다 . (Karn 알고리즘에 의거하여 ) 새로운 RTO 값을 계산하기 위해서는 새 세그먼트를 전송하고 ACK 를 수신할 때까지 기다려야 한다 .

Example 15.4Example 15.4

Page 96: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 96

Figure 15.40 Example 15.4

Page 97: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

▣ TCP TCP 타이머타이머

Karn 알고리즘 전송된 세그먼트에 대해 확인 응답되지 않아 재전송된 경우 이전 세그먼트에 대한 확인응답인지 재전송에 대한

확인응답인지 여부 판단이 애매하다 RTT 값은 재전송 없이 확인응답 수신 전까지 변동이 없음

영속 타이머 (persistence timer) 윈도우 크기가 0 인 경우를 처리하기 위한 타이머 수신 TCP 가 윈도우 크기 0 을 통보했는데 , 송신 TCP 가

이에 대한 확인응답을 보냈지만 수신 TCP 가 이를 수신하지 못함

양쪽 TCP 가 서로 기다리는 교착상태 (deadlock) 해결

97

Page 98: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

▣ TCP TCP 타이머타이머

Keepalive 타이머두 TCP 간에 설정된 연결이 오랫동안 휴지 (idle)

상태에 있는 것을 방지하기 위한 타이머시간 -종료 : 2 시간2 시간이 지나도록 세그먼트를 수신하지 못하면 75초 간격으로 10 개의 프루브 (probe) 전송

응답이 없으면 다운으로 간주하고 연결 종료

시간 -대기 타이머 (time-waited timer)연결 종료 동안에 사용

98

Page 99: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 99

15-11 옵션 (OPTION)

TCP 헤더에는 최대 40 바이트의 옵션 정보가 있을 수 있다 . 이러한 옵션 정보들은 목적지에게 부가 정보를 전달하거나 또는 다른 옵션의 정렬을 맞추기 위하여 사용된다 . 옵션은 단일 바이트 옵션과 다중 바이트 옵 션 의 두 범주로 나 누 어 질 수 있 다 . 첫 번 째 범주에는 옵션 종료 (end of option) 과 무 동작 (no operation) 의 두 가지 유형의 옵션이 있다 . 두 번째 범주에는 최대 세그먼트 크기 (maximum segment size), 윈 도 우 확장 인 자 (window scale factor), 타임스탬프 (timestamp), SACK- 허용 및 SACK 등 다섯 가지 유형의 옵션이 있다 ( 그림 15.41 참조 ).

Page 100: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 100

옵션 (Option)

Page 101: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 101

옵션 종료 (End-of-option) 옵션

Page 102: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 102

EOP 는 단지 한번만 사용할 수 있다 .

Note

Page 103: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 103

무 - 동작 (No-operation) 옵션

Page 104: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 104

NOP 는 한번 이상 사용할 수 있다 .

Note

Page 105: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 105

최대 세그먼트 크기 옵션최대 세그먼트 크기 옵션

Page 106: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 106

MSS 값은 연결 설정 단계에서 결정되며 , 연결이 유지되어 있는 동안에는

변경될 수 없다 .

Note

Page 107: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 107

윈도우 확장 인자윈도우 확장 인자 (Window-scale-factor) (Window-scale-factor) 옵션옵션

Page 108: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 108

윈도우 확장 인자는 연결 설정 과정에서만 결정될 수 있으며 , 연결이 유지되어 있는

동안에는 변경될 수 없다 .

Note

Page 109: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 109

타임스탬프 타임스탬프 (Timestamp) (Timestamp) 옵션옵션

Page 110: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 110

타임스탬프 옵션의 하나의 응용은 왕복 시간 (RTT) 를 계산하는 것이다 .

Note

Page 111: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 111

다음 그림은 한쪽 끝에서 왕복 시간을 계산하는 예를 보여준다 . 다른 쪽에서 RTT 를 계산하고자 한다면 모든 것을 뒤집으면 된다 .

Example 15.5Example 15.5

Page 112: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 112

타임스탬프 옵션은 순서 번호 겹침 방지(PAWS: Protection Against

Wrapped Sequence Number)를 위해서도 사용될 수 있다 .

Note

Page 113: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 113

SACK-SACK-허용허용 , SACK , SACK 옵션옵션

Page 114: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 114

순서에 어긋난 블록을 리스트하기 위하여 어떻게 SACK 옵션을 사용하는지를 살펴보도록 한다 . 다음 그림에서 한쪽 끝은 다섯 개의 세그먼트를 수신하였다 .

Example 15.6Example 15.6

Page 115: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 115

그림 15.50 에 있는 예는 ACK 와 SACK 를 이용하여 어떻게 중복 세그먼트를 감지할 수 있는가를 보여준다 . 이 그림에서는 ( 하나의 블록 내에 ) 여러 개의 순서에 어긋난 세그먼트와 하 나 의 중복 세 그 먼 트 가 있 다 . SACK 는 중복 데 이 터 를 보여주기 위하여 첫 번째 블록을 이용하고 , 순서에 어긋난 데이터를 보여주기 위하여 그 다음 블록을 이용한다 . 첫 번째 블록만이 중복 데이터를 위하여 사용될 수 있다는 것을 명심해야 한다 . 자연적인 질문은 ACK 와 SACK 값을 수신했을 때 , 송신자는 어떻게 첫 번째 블록이 중복 데이터인지를 알 수 있는 가이다 ( 이 예제와 이전 예제를 비교해보라 ). 답은 첫 번째 블록에 있 는 바 이 트 들 은 ACK 필 드 에 의 해 서 이미 확인응답되었다는 것이다 . 따라서 이 블록은 중복된 것임에 틀림없다 .

Example 15.7Example 15.7

Page 116: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 116

Example 15.7Example 15.7

Page 117: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 117

그림 15.51 의 예제는 순서가 어긋나게 들어온 세그먼트 중에서 중복이 발생하는 경우를 보여준다 . 이 예에서 , 세그먼트 중에 하나 (4001:5000) 는 중복되었다 .

SACK 옵션은 먼저 이러한 중복 데이터를 알리고 그 다음에 순서에 어긋난 블록을 알린다 . 중복 블록이 ACK 에 의해서 아직까지 확인응답되지 않았고 , 순서에 어긋난 블록의 일부분(4001:5000 은 4001:6000 의 일부분 ) 이므로 , 송신측은 이것은 중복 데이터라는 것을 알 수 있다 .

Example 15.8Example 15.8

Page 118: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 118

Figure 15.51Figure 15.51 Example 15.8Example 15.8

Page 119: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 119

15-12 TCP 패키지

TCP 는 매우 복잡한 프로토콜이다 . TCP 는 상태 천이 다이어그램을 이용하는 스트림 서비스와 연결 지향 프로토콜이다 . TCP 는 흐름과 오류 제어를 이용한다 . TCP 는 실제의 코드가 수만 라인으로 이루어질 정도로 매우 복잡하다 .이 절에서는 간략한 기본 - 골격의 TCP 패키지에 대해서 언급하고자 한다 . 이 절의 목적은 상태 천이 다이어그램으로 표현되는 TCP 의 본질을 보여주는 데 있다 .TCP 패키지는 전송 제어 블록 (TCB: transmission control block) 이라고 하는 테이블과 일련의 타이머 , 그리고 메인 모듈 , 입력 프로세스 모듈과 출력 프로세스 모듈로 이루어진 세 개의 소프트웨어 모듈로 이루어져 있다 . 그림 15.52 에는 이러한 다섯 개의 요소와 상호 관계가 나타나있다 .

Page 120: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 120

Topics Discussed in the SectionTopics Discussed in the Section

Transmission Control Block TCBs Timers Main Module Input Processing Module Output Processing Module

Page 121: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 121

TCP TCP 패키지패키지

Page 122: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 122

전송 제어 블록전송 제어 블록 (TCB)(TCB)

Page 123: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 123

Page 124: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 124

Page 125: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 125

Page 126: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 126

Page 127: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 127

Page 128: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 128

Page 129: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 129

Page 130: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 130

Page 131: Chapter 15

HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr 131

연습문제 풀이해서

Report 로 다음주까지 ( 일주일 후 )

제출해 주세요 !

알림알림