49
전전 전전 전전전전 전전전 2013.05.08 [email protected]

전송 제어 프로토콜

  • Upload
    stevie

  • View
    108

  • Download
    1

Embed Size (px)

DESCRIPTION

전송 제어 프로토콜. 박신애 2013.05.08 [email protected]. Content. 전송 제어 프로토콜 TCP 서비스 바이트 번호 지정 순서번호 세그먼트 연결 흐름제어 어리석은 윈도우 신드롬 오류제어 TCP 타이머 혼잡제어. 전송 제어 프로토콜. 전송 제어 프로토콜 Transmission Control Protocol ( TCP ) 연결 지향 프로토콜 신뢰성 있는 프로토콜 신뢰성은 있지만 복잡한 전송 프로토콜. 전송 제어 프로토콜. 포트번호 - PowerPoint PPT Presentation

Citation preview

Page 1: 전송 제어 프로토콜

전송 제어 프로토콜박신애[email protected]

Page 2: 전송 제어 프로토콜

Content• 전송 제어 프로토콜• TCP 서비스• 바이트 번호 지정• 순서번호• 세그먼트• 연결• 흐름제어• 어리석은 윈도우 신드롬• 오류제어• TCP 타이머• 혼잡제어

Page 3: 전송 제어 프로토콜

전송 제어 프로토콜• 전송 제어 프로토콜

▫ Transmission Control Protocol ( TCP )▫ 연결 지향 프로토콜▫ 신뢰성 있는 프로토콜▫ 신뢰성은 있지만 복잡한 전송 프로토콜

Page 4: 전송 제어 프로토콜

전송 제어 프로토콜• 포트번호

▫ TCP 또한 전송층 주소로 포트번호 사용Port

Protocol Description

7 Echo Echoes a received datagram back to the sender

9 Discard Discard any datagram that is re-ceived

11 Users Active users13 Daytime Returns the data and the time17 Quote Returns a quote of the day19 Chargen Returns a string of characters20 FTP,Data File Transfer Protocol (data connec-

tion)21 FTP,CTR File Transfer Protocol (control con-

nection)

Port Protocol Description23 TELNET Terminal Network25 SMTP Simple Mail Transfer Pro-

tocol53 DNS Domain Name Server67 BOOTP Bootstrap Protocol79 Finger Finger80 HTTP Hypertext transfer Proto-

col111 RPC Remote Procedure Call

표 1. TCP 에서 사용되는 잘 알려진 포트들

Page 5: 전송 제어 프로토콜

TCP

TCP 서비스• 스트림 전송 서비스

▫ UDP 와 달리 스트림 지향 프로토콜▫ 두 프로세스간 데이터 운반 할 수 있는 가상의 ‘튜브’ 연결▫ ‘ 튜브’를 통해 바이트 흐름으로 데이터를 전달 및 수신

TCP

Sending Process Receiving Process

Stream of bytes

Page 6: 전송 제어 프로토콜

TCP 서비스• 송신 및 수신 버퍼

▫ 송신과 수신이 같은 속도로 데이터를 처리 불가▫ TCP 는 저장을 위한 원형 배열 버퍼가 필요

TCPTCP

Sending Process Receiving Process

Page 7: 전송 제어 프로토콜

TCP 서비스• 바이트와 세그먼트

▫ 전송층에서 TCP 는 세그먼트로 전송▫ 다수의 바이트를 묶어 그룹화 한 패킷을 세그먼트라 함▫ 세그먼트는 동일한 크기로 전송되지 않음

TCPTCP

Sending Process Receiving Process….

Segment N Segment 1

Page 8: 전송 제어 프로토콜

TCP 서비스• 전이중 서비스

▫ TCP 는 데이터가 동시에 양방향으로 전달 가능• 연결 지향 서비스

▫ TCP 는 연결 지향 서비스로 다음과 같은 과정으로 동작1. A 의 TCP 는 B 의 TCP 를 통지하고 B 의 TCP 로부터 동의를 얻는다 .2. A 의 TCP 와 B 의 TCP 는 양방향으로 데이터를 교환한다 .3. 양쪽에 송신 할 데이터가 없는 경우 두 TCP 는 버퍼를 제거한다 .

• 신뢰성 있는 서비스▫ 확인 응답 기법으로 데이터 도착을 확인

Page 9: 전송 제어 프로토콜

바이트 번호 지정• 바이트의 번호 지정

▫ 세그먼트에는 추정을 위한 세그먼트 번호를 위한 영역 없음▫ 바이트 번호인 순서번호와 확인 응답 번호 영역이 존재

• 바이트 번호▫ 연결 상태에서 전송되는 모든 데이터 바이트에 TCP 번호 부여▫ 0 부터 시작하지 않으며 0~4294967295 사이의 임의 번호로 시작▫ 흐름 및 오류 제어에 사용

Page 10: 전송 제어 프로토콜

순서번호• 순서번호

▫ TCP 는 각 세그먼트에 순서번호 할당▫ 세그먼트에 운반되는 첫 번째 바이트 번호

• ( 문제 ) TCP 연결이 6000byte 를 전송할 때 , 첫 번째 바이트는 10010 번호가 부여되어있다 . 첫 4 개 세그먼트는 1000 byte 를 나머지는 2000byte 운반할 때 순서번호는 ?▫ 세그먼트 1 -> 순서번호 : 10010▫ 세그먼트 2 -> 순서번호 : 11010▫ 세그먼트 3 -> 순서번호 : 12010▫ 세그먼트 4 -> 순서번호 : 13010▫ 세그먼트 5 -> 순서번호 : 14010

Page 11: 전송 제어 프로토콜

순서번호• 확인 응답 번호

▫ 수신한 바이트의 확인을 위해 확인 응답 번호 사용▫ 확인 응답 번호는 수신해야 하는 다음 바이트 번호로 지정

• 주의▫ 5642 번까지 수신하고 5643 번호로 확인 응답 번호를 전송했을 때

5643 byte 를 수신했다는 의미가 아님을 주의 한다 .▫ 첫 번째 byte 의 번호가 0 부터 시작하지 않기 때문 .

Page 12: 전송 제어 프로토콜

세그먼트• 세그먼트

▫ TCP 를 사용하는 두 장치 사이에 데이터 전송 단위▫ 20~60 byte 헤더와 데이터로 구성

Page 13: 전송 제어 프로토콜

세그먼트• 세그먼트

Source port address (16bits )Destination port address (16bits )

Sequence number ( 32bits )

Acknowledgment number ( 32bits )

Window size(16bits )fin

syn

rst

psh

ack

urg

HLEN

(4bits)

Re-served(6bits)

Urgent pointer (16bits )Checksum (16bits )

Options and padding

Header Data

Page 14: 전송 제어 프로토콜

세그먼트• 세그먼트

▫ 발신지 포트 : 전송 호스트에 있는 응용 프로그램의 포트 번호▫ 목적지 포트 : 수신 호스트에 있는 응용 프로그램의 포트 번호▫ 순서번호 : 세그먼트에 포함된 첫 데이터 바이트에 할당된 번호▫ 확인 응답 번호 : 송신자로부터 받기를 기대하는 바이트 번호▫ 헤더길이 ( HLEN )

20~60byte 가 될 수 있으며 , 5(5*4=20)~15(15*4=60) 사이의 값▫ 윈도우 크기 : 상대방이 유지해야 하는 바이트 단위의 윈도우 크기▫ 긴급 지시자 : 긴급 플래그 설정 시 유효하며 긴급 데이터 번호지정▫ 제어 ( control )

여섯 개의 다른 제어 비트 또는 플래그 비트를 정의

Page 15: 전송 제어 프로토콜

세그먼트• 세그먼트

▫ 윈도우크기 ( window size ) 상대방 쪽이 유지해야 하는 바이트 단위의 윈도우 크기

▫ 긴급 지시자 ( urgent pointer ) 긴급 플래그가 설정되었을 때만 유효하며 긴급 데이터 번호지정

▫ 제어 ( control ) 여섯 개의 다른 제어 비트 또는 플래그 비트를 정의

Page 16: 전송 제어 프로토콜

세그먼트• 세그먼트

▫ 제어 (control): 여섯 개의 다른 제어 비트 또는 플래그 비트를 정의flag DescriptionURG The value of the urgent pointer field is validACK The value of the acknowledgment field is validPSH Push the dataRST The connection must be resetSYN Synchronize sequence numbers during con-

nectionFIN Terminate the connection

표 2. 제어 항에서의 플래그 설명

Page 17: 전송 제어 프로토콜

연결• 연결 설정

▫ TCP 는 전이중 모드로 데이터를 전송▫ 연결 설정을 위해서는 네 단계가 필요▫ 두 번째와 세 번째를 합쳐 세 단계로 연결 설정가능▫ 세 단계 연결을 삼방향 핸드셰이크 (three way handshke) 라 함

Page 18: 전송 제어 프로토콜

연결• 연결 설정

seq: 1200 ack:--

seq: 4800

ack:1201

seq: 1201 ack:4801

Segment 1: SYN

Segment 2:

SYN+ACK

Segment 3: ACK

Time Time삼방향 핸드 셰이크 연결 설정

Page 19: 전송 제어 프로토콜

연결• 연결 종료

▫ 양방향 연결을 종료하기 위해 네 단계 필요▫ ( 주의 ) 한 쪽에서 연결을 종료해도 다른 한쪽은 데이터 송신 가능

Page 20: 전송 제어 프로토콜

연결• 연결 종료

seq: 2500 ack:--

seq: 7000

ack:2501

seq: 2502 ack:7002

Segment 1: FIN

Segment 2: ACK

Segment 4: ACK

Time Time 네 단계 연결 종료

seq: 7001

ack:2501Segment 3: FIN

Page 21: 전송 제어 프로토콜

연결• 연결 재설정

▫ 현재 연결이 훼손되었을 때 재설정 요청▫ 연결 재설정은 세가지 경우 중 한가지 경우에 발생

1. TCP 가 존재하지 않은 포트의 연결 요청을 받은 경우 다른 쪽 TCP 는 요청을 무효로 하는 RST 세그먼트를 보낼 수 있다 .2. 한쪽의 비정상 적인 상황 때문에 연결 중지를 위해 RST 세그먼트를 보낼 수 있다 .3. TCP 가 오랫동안 유휴상태인 것을 발견하여 연결을 없애기 위해 RST 세그먼트를 보낼 수 있다 .

Page 22: 전송 제어 프로토콜

흐름제어• 슬라이딩 윈도우 프로토콜

▫ 흐름 제어를 위한 바이트 단위의 윈도우▫ 전송된 바이트의 확인 응답이 오면 버퍼의 윈도우 위치가 이동

211 210 209 208 207 206 205 204 203 202 201 200

Can be sent immediatelySent, not ac-knowledged

Sent and ac-knowledged.

recycledEmpty to be

fill by process

Occupied part of the buffer

Next byte to be sent

Page 23: 전송 제어 프로토콜

흐름제어• 수신자 윈도우

▫ 수신자가 수신 가능 한 바이트 크기를 말함▫ 수신 버퍼 전체 크기 – 수신된 크기 = 수신자 윈도우

199 198 197 196 195 194

Occupied part of the bufferConsumed and

recycledEmpty, to receive more

bytes from network

13 ( 수신 전체 버퍼 크기 ) – 6( 수신된 크기 ) = 7 ( 수신된 윈도우 크기 )

Page 24: 전송 제어 프로토콜

흐름제어• 송신자 윈도우

▫ 수신자 윈도우 크기보다 작거나 같을 때 흐름제어 가능▫ 확인 응답이 되지 않은 바이트와 송신 가능한 바이트

211 210 209 208 207 206 205 204 203 202 201 200

Size = receiver window

Next byte to be sent

Page 25: 전송 제어 프로토콜

흐름제어• 송신 윈도우의 이동

211 210 209 208 207 206 205 204 203 202 201 200

Size = receiver window

211 210 209 208 207 206 205 204 203

Size = receiver window

1. 2 byte 송신2. 203 확인 응답 수신

a. before

b. after

Page 26: 전송 제어 프로토콜

흐름제어• 송신자 윈도우 확장

▫ 수신 프로세스가 수신 데이터보다 빠르게 처리될 때 수신자 윈도우 크기가 확장 됨▫ 수신자 윈도우 크기 확장으로 송신자 윈도우 확장

• 송신자 윈도우 축소▫ 수신 프로세스가 수신 데이터보다 느리게 처리될 때 수신자 윈도우 크기가 축소 됨▫ 수신자 윈도우 크기 축소로 송신자 윈도우 축소

Page 27: 전송 제어 프로토콜

흐름제어• 송신자 윈도우 종료

▫ 수신자 버퍼가 완전히 채워져 수신자 윈도우 크기가 0 일 때▫ 0 이 수신되면 송신자 윈도우 종료▫ 종료된 송신자 윈도우는 어떤 데이터도 송신 불가

Page 28: 전송 제어 프로토콜

어리석은 윈도우 신드롬• 어리석은 윈도우 신드롬

▫ 데이터를 느리게 만들거나 수신 측에서 늦게 처리하거나 혹은 둘 다 일 경우 매우 작은 세그먼트로 데이터를 송신하는 결과를 초래 하여 운용 효율성을 감소 시킬 수 있는 상황을 말함

Page 29: 전송 제어 프로토콜

어리석은 윈도우 신드롬• 송신자에 의해 생성된 신드롬

▫ 한 바이트만으로 세그먼트가 만들어져 송신되는 문제 발생▫ 데이터를 한 바이트로 전송하지 못하도록 하여 문제 해결▫ Nagle 의 알고리즘

송신 윈도우 크기가 1byte 일지라도 송신 응용프로그램으로 부터 받은 첫 데이터를 세그먼트로 송신 한다 . 확인 응답 메시지가 도착 할 때까지 송신 버퍼에 축적 후 송신하거나 최대 크기 세그먼트가 채워지면 송신한다 .

Page 30: 전송 제어 프로토콜

어리석은 윈도우 신드롬• 수신자에 의해 생성된 신드롬

▫ 한 번에 한 바이트씩 처리하는 문제 발생▫ Clark 의 해결방법

데이터 도착 즉시 확인 응답 세그먼트 축적하기에 충분한 공간이 있거나 버퍼의 절반이 비어 있을 때까지

0 값의 윈도우 크기를 통지▫ 확인 응답 지연

데이터 도착 즉시 확인 응답 하지 않음 균형을 위해 확인 응답은 500ms 이상 지연 되면 안됨

Page 31: 전송 제어 프로토콜

오류제어• 오류제어

▫ 손상 , 유실 , 순서가 어긋난 것들과 중복 세그먼트를 찾아내는 기법▫ 검사합 , 확인 응답 , 시간종료 (time-out) 로 컨트롤▫ ( 주의 ) TCP 는 부정적인 확인 응답이 없음

Page 32: 전송 제어 프로토콜

오류제어• 유실 또는 손상 세그먼트

▫ 손상 세그먼트는 목적지에서 폐기▫ 유실 세그먼트는 목적지에 도착하지 못한 세그먼트▫ 발신지와 목적지 관점에서 유실 또는 손상세그먼트는 동일

Page 33: 전송 제어 프로토콜

오류제어• 유실 또는 손상 세그먼트

seq:1201, 200 bytes

ack:1601

Segment 1

Time Time

seq:1401, 200 bytes

Segment 2

seq:1601, 200 bytes

Segment 3

seq:1601, 200 bytes

Segment 3, retransmitted

ack:1801

OKOK

time-out

OK

Page 34: 전송 제어 프로토콜

오류제어• 중복 세그먼트

▫ 다른 세그먼트로 수신된 동일한 순서번호를 갖는 세그먼트 폐기• 순서 없는 세그먼트

▫ 순서가 어긋나게 수신된 세그먼트▫ 뒤의 세그먼트가 먼저 도착 시 앞의 세그먼트들이 모두 도착 후 확인 응답 송신▫ 확인 응답이 늦어져 재전송 되더라도 중복 세그먼트는 폐기되어 문제 발생하지 않음

Page 35: 전송 제어 프로토콜

오류제어• 유실된 확인 응답

seq:1201, 200 bytes

Time Time

seq:1401, 200 bytesseq:1601, 200 bytes

Acknowledgment lost

ack:1801

OKOKOK

ack:1601

Page 36: 전송 제어 프로토콜

TCP 타이머• TCP 타이머

Timers

Retransmis-sion Persistence Keep-alive Time-waited

Page 37: 전송 제어 프로토콜

TCP 타이머• 재전송 타이머 (Retransmission)

▫ 유실되거나 폐기된 세그먼트를 제어하기 위하여 확인 응답 대기 시간을 처리하는 타이머▫ 동작 방법

TCP 가 세그먼트 하나를 전송할 때 재전송 타이머 생성 타이머가 종료되기 전 확인 응답을 수신하면 해당 타이머 제거 타이머가 종료된다면 세그먼트 재전송 후 타이머 재생성

Page 38: 전송 제어 프로토콜

TCP 타이머• 재전송 타이머 (Retransmission)

▫ 재전송 시간계산 각 연결의 경로와 길이가 달라 동일한 재전송 시간을 사용할 수 없음 네트워크 환경이 유동적이어서 단일 연결을 위해서도 재전송 시간은 고정될 수 없음 왕복 시간 (round-trip time, RTT) 를 기반으로 동작 생성

재전송 시간 = 2 x RTT

Page 39: 전송 제어 프로토콜

TCP 타이머• 재전송 타이머 (Retransmission)

▫ RTT 계산 TCP 타임스탬프 값 사용 세그먼트 하나를 전송하여 확인 응답이 올 때까지의 왕복시간으로 사용 아래 식으로 계산 α 의 일반적인 값은 90%

▫ Karm 알고리즘 ( 문제 ) 세그먼트가 확인 응답이 없어 재전송된 후 도착한 확인 응답이 재전송에 대한 응답인지 원래의 세그먼트의 응답인지 알 수 없음 ( 해결 ) 세그먼트 송신 후 재전송 없이 확인 응답을 수신할 때까지 RTT 값 갱신하지 않음

RTT = α( 이전 RTT)+(1-α)( 현재 RTT)

Page 40: 전송 제어 프로토콜

TCP 타이머• 영속 타이머 (Persistence Timer)

▫ 송신 TCP 가 0 크기 윈도우 확인 응답을 수신하면 영속 타이머 시작▫ 영속 타이머 종료 후 프로브 (probe) 세그먼트 송신▫ 프로브 (probe) 세그먼트

1byte 만을 갖는 세그먼트 확인 응답 수신되지 않으며 , 수신데이터를 위한 순서번호 계산 무시 수신 TCP 에게 확인 응답이 손실되어 재전송이 필요하다는 경고 메시지

Page 41: 전송 제어 프로토콜

TCP 타이머• 연결 유지 타이머 (keep-alive Timer)

▫ 오랫동안 유휴 연결 방지를 위해 일부 구현에 사용▫ 동작 방법

서버와 클라이언트가 연결이 되면 타이머 시작 클라이언트는 서버에게 연결 유지 연락을 송신 서버는 타이머 재 설정 만약 타이머가 종료되었다면 클라이언트에 프로브 세그먼트 송신 프로브 세그먼트 송신 후 클라이언트에 연락 없으면 연결 종료 보통 타이머는 2 시간이며 , 프로브 세그먼트는 75 초 간격으로 10 번 송신

• 시간 대기 타이머▫ 연결을 종료하는 동안 사용되는 타이머

Page 42: 전송 제어 프로토콜

혼잡제어• 혼잡

▫ 혼잡이 발생하는 원인1. 라우터의 패킷 처리 속도보다 더 빠르게 패킷 수신2. 라이터에서의 패킷 손실로 송신 TCP 는 확인 응답 수신 불가3. 송신 TCP 세그먼트 재전송4. 재전송에 의해 혼잡현상이 심해짐• 혼잡 윈도우

▫ 송신자의 윈도우 크기는 네트워크의 혼잡에 의해서 결정될 수 있음실제 윈도우 크기 = 최소치 ( 수신자 윈도우 크기 , 혼잡 윈도우 크기 )

Page 43: 전송 제어 프로토콜

혼잡제어• 혼잡 회피 (Congestion Avoidence)

▫ 혼잡을 회피하기 위한 송신 TCP 의 전략▫ 종류

슬로우 스타트 (slow start) 덧셈 증가 (additive increase) 곱셈 감소 (multiplicative decrease) 빠른 재전송 (fast retransmit) 빠른 복구 (fast recovery)

Page 44: 전송 제어 프로토콜

혼잡제어• 혼잡회피

▫ 슬로우 스타트 혼잡 윈도우 크기를 최대 세그먼트 크기로 설정 임계치 (threshold) 를 윈도우 크기의 반으로 설정 확인 응답 수신마다 혼잡 윈도우 크기를 두 배로 증가 ( 주의 ) 혼잡 윈도우 크기 증가가 느리다는 뜻으로 프로세스는 전혀 느리지 않음

▫ 덧셈 증가 혼잡 회피를 위해 지수적인 증가를 늦춰야 함 임계치에 도달 후 여러 세그먼트의 확인 응답이라도 한 세그먼트 만큼 크기 증가 타임 아웃 되거나 수신자 윈도우 크기와 같을 때까지 계속 됨

Page 45: 전송 제어 프로토콜

혼잡제어• 혼잡회피

▫ 곱셈감소 혼잡 발생 시 혼잡 윈도우 크기 감소 필요 송신 TCP 는 세그먼트 유실 시 혼잡 짐작 가능 타임 아웃 발생 시 임계치를 이전 혼잡 윈도우 크기의 절반으로 재설정 혼잡 윈도우 크기는 하나의 최대 세그먼트 크기부터 재시작

Page 46: 전송 제어 프로토콜

혼잡제어• 혼잡회피

▫ 곱셈감소

Page 47: 전송 제어 프로토콜

혼잡제어• 혼잡회피

▫ 빠른 재전송 (fast restransmit) 현 순서의 세그먼트가 아닌 그 후의 세그먼트가 도착했을 경우 송신 TCP 에 duplicate ack 를 보냄 순서대로 도착 후 확인 응답 ack 를 보냄 만약 확인 응답이 아닌 duplicate ack 를 연속적으로 수신한다면 손실 가능성이 높아 재전송 타이머 종료 후 재전송

Page 48: 전송 제어 프로토콜

혼잡제어• 혼잡회피

▫ 빠른 복구 (fast recovery) 보통 빠른 재전송 후 슬로우 스타트가 동작한다 . 빠른 복구에선 혼잡 윈도우 크기를 반으로 줄인 후 선형 증가

Page 49: 전송 제어 프로토콜

감사합니다 .