PEL / 2016 TCP/IP 완벽가이드 - II-8 부전송계층 TCP 프로토콜 - 명세인 (sein@pel.smuc.ac.kr) 상명대학교프로토콜공학연구실
목차 TCP 개요 TCP 원리와일반동작 연결의수립, 관리종료 TCP 메시지포맷과데이터송신 TCP 신뢰성과흐름제어 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 2
TCP 개요 TCP 개요 RFC 793 에서 TCP(Transmission Control Protocol) 버전 4 를정의 모든세부동작을설명하지않으며, 다른문서에서추가적으로기술 초기의 TCP 는 Transmission Control Program 이라불리고 RFC 675 에서공식화 원래 TCP 는현재의 TCP 와 IP 기능을모두수행 RFC 793 에서 TCP 와 IP 로분리되면서 Program 이 Protocol 로변경 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 3
TCP 개요 TCP 에서지원하는기능 주소지정, 다중화 / 다중연결 포트번호와소켓쌍으로다중연결을식별 여러애플리케이션이동시에 TCP 를사용할수있도록포트번호로구별하고다중화 연결수립, 유지, 종료와양방향성 신뢰성, 승인기능 각데이터에대해승인기능을제공 ( 누적될수도있음 ) 스트림기반전송 데이터흐름, 연결성관리 TCP 개요 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 4
TCP 개요 TCP 개요 TCP 기능의한계 보안 TCP 는어떠한보안도보장하지않음 다른수단을추가하여보안 메시지경계 TCP 는연속스트림으로메시지송신 각메시지의경계는애플리케이션에서구현 통신보장 여러흐름제어, 혼잡회피기능을제공하지만이는추가적으로해결할수있는옵션 TCP 를사용하면 100% 의신뢰도를가질수있다는개념이아님 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 5
목차 TCP 개요 TCP 원리와일반동작 연결의수립, 관리종료 TCP 메시지포맷과데이터송신 TCP 신뢰성과흐름제어 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 6
TCP 원리와일반동작 TCP 의데이터관리와처리 스트림기반 애플리케이션이전송을원하는모든데이터는 TCP 에서옥텟스트림으로인식 TCP 데이터패키징 ( 세그먼트 ) 애플리케이션에서받은데이터는 IP 를이용해서전송 IP 를사용할수있도록 TCP 세그먼트라는분리된메시지로나눔 세그먼트의최대크기 (MSS: Maximum Segment Size) 를협상하여사용 IP 에서불필요한단편화를막음 TCP 를사용하면서전송의효율을높여줌 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 7
TCP 원리와일반동작 TCP 의데이터관리와처리 TCP 데이터식별, 순서번호 신뢰성이란모든데이터에대해서승인이제공되어야함 TCP 에서각바이트는순서번호를할당받고, 이번호를통해목적장비에서데이터순서, 모든데이터승인을제공 TCP 데이터구분 애플리케이션수준에서필요한데이터의의미에대한구분은애플리케이션에서직접구현되어야함 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 8
TCP 원리와일반동작 TCP 슬라이딩윈도우승인체계 프로토콜을신뢰할수있으려면피드백 ( 승인 ) 이필요 재전송을사용하는긍정승인 (PAR: Positive Acknowledgment with Retransmission) 의기본동작 전송에대한응답이오기까지특정타이머를가짐 응답이오면타이머초기화 타이머가만료되면재전송 A B,,, TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 9
TCP 원리와일반동작 TCP 슬라이딩윈도우승인체계 프로토콜을신뢰할수있으려면피드백 ( 승인 ) 이필요 PAR 개선 옥텟단위로보내지않고세그먼트단위로보냄 각세그먼트의마지막옥텟의순서번호를이용해개별승인 송신한계라는인자를기준으로승인중인최대옥텟수를제한 TCP 에서는슬라이딩윈도우 (Sliding Window) 기법을사용 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 10
TCP 슬라이딩윈도우승인체계 프로토콜을신뢰할수있으려면피드백 ( 승인 ) 이필요 개선된 PAR TCP 원리와일반동작 2 1 4 A 1 2 1, 3 2, 4 3 4 1, 1 2, 2 B 3, 3, 4 5, 6 5, 6, 5, 6 2...... TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 11
TCP 원리와일반동작 TCP 슬라이딩윈도우승인체계 프로토콜을신뢰할수있으려면피드백 ( 승인 ) 이필요 슬라이딩윈도우 TCP 전송스트림의개념적구분 슬라이딩윈도우를사용하기위해스트림바이트에할당된순서번호를 동기화 (Synchronization) 해야함 송신자측범주구분표와그림 범주내에서전송된세그먼트크기는가변적 개념자의준 범주 1 O O. 범주 2 O X. 범주 3 X X O 범주 4 X X X... 28... 31 32... 45 46... 51 52... 57... 1 2 3 4 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 12
TCP 원리와일반동작 TCP 슬라이딩윈도우승인체계 프로토콜을신뢰할수있으려면피드백 ( 승인 ) 이필요 슬라이딩윈도우 모든송신윈도우를사용한경우 송신자가전송하도록허용된최대바이트수 = 범주 2 + 범주 3... 28... 31 32... 45 46... 51 52... 57... 1 2 4 승인이수신되어윈도우를이동... 28... 31 32... 36 37... 51 52... 57 58... 1 2 3 4 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 13
TCP 원리와일반동작 TCP 슬라이딩윈도우승인체계 프로토콜을신뢰할수있으려면피드백 ( 승인 ) 이필요 슬라이딩윈도우 빠진승인처리 세그먼트각각에대한승인이아니기때문에중간승인이빠지면이미수신받은세그먼트도재전송해야될수있음 X O... 28... 31 32... 45 46... 51 52... 57... 1 2 4 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 14
TCP 원리와일반동작 TCP 포트, 연결과연결식별 소켓개념 IP 주소와 Port 번호쌍으로식별되는연결 소켓개념을사용하여한클라이언트에서같은서버로다중접속, 여러클라이언트들이서버로다중접속하는것을모두유일하게식별하고독립적으로관리 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 15
목차 TCP 개요 TCP 원리와일반동작 연결의수립, 관리종료 TCP 메시지포맷과데이터송신 TCP 신뢰성과흐름제어 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 16
연결의수립, 관리, 종료 TCP 의동작과유한상태머신 FSM 유한상태머신 (FSM: Finite State Machine) 이란상태, 전이, 이벤트, 행동등의프로토콜이처할수있는모든상태를정의하고설명하는이론적도구 상태 : 특정시간에프로토콜소프트웨어의상황 전이 : 상태에서상태로움직이는행위 이벤트 : 전이를발생시킨사건 행동 : 이벤트에대한반응, 전이하기전에하는행동 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 17
연결의수립, 관리, 종료 TCP 의동작과유한상태머신 FSM TCP 의 FSM SYN(Synchronize) 메시지 : 연결을초기화하고수립, 장비간옥텟순서번호를동기화 FIN(Finish) 메시지 : TCP 세그먼트에 FIN 비트로장비가연결을종료하고싶다는것을알림 ACK(Acknowledgment): 승인메시지, SYN, FIN 메시지를승인 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 18
연결의수립, 관리, 종료 TCP 의동작과유한상태머신 FSM 간단한 TCP FSM 그림 대칭적으로동작하지않음 LISTEN SYN SYN+ACK TCB CLOSED TCB SYN TCP 연결준비 SYN-RECEIVED 개 SYN 개 ACK SYN-SENT ACK SYN SYN+ACK ESTABLISHED, FIN FIN ACK FIN-WAIT-1 CLOSE-WAIT FIN ACK FIN ACK FIN FIN-WAIT-2 CLOSING LAST-ACK FIN ACK FIN ACK FIN ACK TIME-WAIT TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 19
TCP 연결준비 연결의수립, 관리, 종료 수립된각연결에대한데이터저장 전송제어블록 (TCB: Transmission Control Block) 연결을식별하기위한두소켓번호, 수신, 송신데이터를가지고있는버퍼포인터, 승인에대한정보, 승인하지못한순서번호, 현재윈도우크기등을추적하는변수저장 연결개방 능동개방 TCP 를사용하는클라이언트가능동역할을맡아 SYN 메시지를전송, 연결을시작 수동개방 TCP 를사용하는서버가특정클라이언트로부터연결이오도록명시하거나, 모든클라이언트의연결을기다림 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 20
TCP 연결준비 연결의수립, 관리, 종료 연결준비 클라이언트와서버는개방을수행하는동안 TCB 를생성, 각연결을고유하게식별 서버의경우소켓번호를명시하지않은 TCB 를생성하고클라이언트의능동개방을기다림 TCB 는연결이완전히종료되고 CLOSED 상태가되면없어짐 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 21
연결의수립, 관리, 종료 TCP 연결수립과정 : 쓰리웨이핸드셰이크 연결수립기능 접촉에의한통신시작 순서번호동기화 TCP 연결의동작을제어하기위한인자교환 연결에사용하는제어메시지 SYN: 연결을초기화, 순서번호를동기화 ACK: 세그먼트를받았다는승인메시지 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 22
연결의수립, 관리, 종료 TCP 연결수립과정 : 쓰리웨이핸드셰이크 쓰리웨이핸드셰이크 (Three Way Handshake) CLOSED CLOSED 개 : TCB SYN TCB 개 : LISTEN SYN-SENT SYN ACK SYN, SYN+ACK SYN-RECEIVED ESTABLISHED SYN+ACK, ACK SYN ACK ACK ESTABLISHED TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 23
연결의수립, 관리, 종료 TCP 연결수립과정 동시개방연결수립과정 A B CLOSED CLOSED SYN-SENT 개 : TCB SYN SYN 개 : TCB SYN-SENT SYN-RECEIVED SYN, ACK SYN, ACK SYN-RECEIVED ACK ACK ESTABLISHED ESTABLISHED TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 24
연결의수립, 관리, 종료 TCP 연결수립, 순서번호동기화와인자교환 TCP 순서번호 다른연결에서온세그먼트와섞이지않도록초기순서번호를잘선택해야함 전통적으로초기순서번호 (ISN: Initial Sequence Number) 는 4μs 마다증가하는 32 비트카운터로 ISN 을정함 최근의 TCP 는무작위 ISN 을사용 TCP 인자교환 연결단계에서교환할수있는인자 윈도우크기인자 선택적승인허용 대체체크섬방식 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 25
연결의수립, 관리, 종료 TCP 연결수립, 순서번호동기화와인자교환 TCP 순서번호동기화 CLOSED CLOSED 개 : TCB SYN TCB 개 : LISTEN SYN-SENT SYN ACK SYN, SYN+ACK SYN-RECEIVED ESTABLISHED SYN+ACK, ACK SYN ACK ACK ESTABLISHED TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 26
연결의수립, 관리, 종료 TCP 연결관리, 문제처리 슬라이딩윈도우를사용하면두장비모두무한정 ESTABLISHED 상태 연결을종료하려면두장비중하나가연결종료를결정하거나문제가발생하여연결방해 TCP 초기화기능 한장비는 ESTABLISHED 상태, 다른장비는 CLOSED 상태나다른임시상태가되어반개방연결상태를 RST(Reset) 플래그로초기화 세그먼트를보낸장비와연결을맺고있지않는경우 잘못됐거나부정확한순서번호, 승인번호필드를가진메시지를수신한경우 연결을기다리는프로세스가없는포트로 SYN 메시지를받은경우 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 27
연결의수립, 관리, 종료 TCP 연결관리, 문제처리 초기화세그먼트처리 RST 비트가설정된세그먼트를받으면, 장비는연결을초기화하여재개방할수있도록함 장비가 LISTEN 상태였다면초기화메시지를무시 현재 SYN-RECEVIED 상태지만 LISTEN 상태에있었다면 LISTEN 상태로되돌아감 이외의상황에서초기화메시지를받으면연결을끊고 CLOSED 상태로돌아감, 상위계층에연결이끊김을알림 TCP 킵얼라이브메시지 TCP 소프트웨어에서선택적으로킵얼라이브메시지를구현할수있음 표준에서는아무것도하지않음 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 28
TCP 연결종료 연결의수립, 관리, 종료 연결종료의요구사항 두장비모두연결이종료되어야함 링크에어떠한데이터도남지않아야함 정상연결종료 ESTABLISHED FIN, FIN, ACK, ESTABLISHED FIN-WAIT-1 ACK FIN 의 의 ( ) CLOSE-WAIT FIN-WAIT-2 ACK 의 FIN FIN 준, LAST-ACK TIME-WAIT FIN, ACK FIN ACK ACK CLOSED (MSL: Maximum Segment) 의 CLOSED TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 29
TCP 연결종료 연결의수립, 관리, 종료 TIME-WAIT 상대장비가 ACK 를받았다는것을확신하기위해충분한시간을둠, ACK 가사라졌다면재전송 한연결의종료와다음연결시작에간격을둠 동시연결종료 ESTABLISHED FIN-WAIT-1 FIN, FIN, ESTABLISHED FIN-WAIT-1 CLOSING 의 FIN, ACK ACK 의 FIN, CLOSING ACK TIME-WAIT ACK TIME-WAIT (MSL: Maximum Segment) 의 (MSL: Maximum Segment) 의 CLOSED CLOSED TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 30
목차 TCP 개요 TCP 원리와일반동작 연결의수립, 관리종료 TCP 메시지포맷과데이터송신 TCP 신뢰성과흐름제어 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 31
TCP 메시지포맷, 데이터송신 TCP 메시지 ( 세그먼트 ) 포맷 의미 0 8 16 24 32 0 - - 선택사항목록끝, TCP 헤더끝과맞지않는경우사용 1 - - 없음, 선택사 항사 채워 32 경계 맞 춤 2 4 최 세그먼 크 값 연결요청 (SYN) 만사용 3 3 윈도우크 매우큰윈도우사용하는경우데터값을 2 로사용 4 2 - 선택적허용 지 (ACK) (URG) 1 1 1 ~... ~ N N 5 가변 선택적으로 하는 데터블록 14 3 체체크섬알고즘체체크섬요청, 표준아닌른알고즘을사용하도록협 15 가변 체체크섬 표준 16 로 표현할 없는체 크섬 경우 필 드 사용 ~ ~ 0 6 (URG) (ACK) (FIN) (PSH) (RST) (SYN) N TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 32
TCP 메시지포맷, 데이터송신 TCP 체크섬계산과가상헤더 TCP 는체크섬계산에가상헤더를포함 출발지, 목적지주소가일치해야체크섬을계산할수있음 어떤이유에의해다른프로토콜을통해목적 TCP 로송신한경우검출 세그먼트의일부가빠진다면길이값에차이가생겨검출 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 33
TCP 메시지포맷, 데이터송신 TCP 최대세그먼트길이 (MSS) 한세그먼트에넣을데이터의크기는현재윈도우상태를고려해야함 각 TCP 장비는현재윈도우크기와세그먼트크기의한계가있음 MSS 선택 과부하관리 : TCP 헤더길이와실제데이터의길이비율을충분히효율적으로사용할수있는길이로설정 IP 단편화 : TCP 세그먼트는 IP 데이터그램으로묶이며, 최대송신단위 (MTU) 에의한추가적인단편화가없는 MSS 값선택 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 34
TCP 메시지포맷, 데이터송신 TCP 최대세그먼트길이 (MSS) TCP 기본 MSS IP 네트워크최소 MTU 는 576 바이트이고, IP 헤더 TCP 헤더로사용하는바이트를제외한 MSS 표준은 536 바이트 MSS 값명시 표준 MSS 크기가모든네트워크에적합한것은아님 IPsec 등의사용에의한헤더필드가더필요한경우 세그먼트가지나는네트워크의 MTU 가 576 보다큰경우 536 보다크거나작은 MSS 를사용할수있고, 반드시명시해야함 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 35
TCP 메시지포맷, 데이터송신 TCP 슬라이딩윈도우송신과승인 전송카테고리표 카테고 의미 1 했고받음 2 했지만받지못함 3 자는준 됨, 하지못함 4 자가준 되지않음, 하지못 바 수신카테고리표 카테고 의미 1+2 했고받음 3 자는준됨, 아직하지못바 4 자가준되지않았고하지도못바 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 36
TCP 메시지포맷, 데이터송신 TCP 슬라이딩윈도우송신과승인 송신 (SND) 포인터 송신비확인 (SND.UNA) 송신했지만아직승인되지않은첫번째데이터의순서번호 전송카테고리 2 의첫번째바이트를가리킴 송신다음 (SND.NXT) 다음바이트의순서번호 전송카테고리 3 의첫번째바이트를가리킴 송신윈도우 (SND.WND) 송신윈도우의크기, 특정시점에승인없이보낼수있는바이트의수 SND.UNA+SND.WND= 전송카테고리 4 의첫바이트 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 37
TCP 메시지포맷, 데이터송신 TCP 슬라이딩윈도우송신과승인 송신 (SND) 포인터 SND.WND = 20 SND.UNA+SND.WND-SND.NXT 32+20-46 = 6... 28... 31 32... 45 46... 51 52... 57... 카테고 1 카테고 2 카테고 3 카테고 4 SND.UNA = 32 SND.NXT = 46 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 38
TCP 메시지포맷, 데이터송신 TCP 슬라이딩윈도우송신과승인 수신 (RCV) 포인터 수신다음 (RCV.NXT) 상대장비에서받으려고하는다음바이트의순서번호 수신카테고리 3 의첫번째바이트를가리킴 수신윈도우 (RCV.WND) 상대장비에세광고한수신윈도우의크기 대체로이번연결에서사용하는버퍼의남은양을말함 RCV.WND = 20... 28... 31 32... 45 46... 51 52... 57... 카테고 1+2 카테고 3 카테고 4 RCV.NXT = 32 SND.NXT = 46 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 39
TCP 메시지포맷, 데이터송신 TCP 슬라이딩윈도우송신과승인 슬라이딩윈도우방식의실제복잡도 중복송신 새로운요청을보내면서승인 다중세그먼트승인 둘이상의세그먼트를동시에승인할수있음 ( 중복승인 ) 윈도우크기조절 윈도우크기조절을통한흐름제어구현 송신실패 송신된세그먼트가사라지는경우재송신 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 40
TCP 메시지포맷, 데이터송신 TCP 슬라이딩윈도우송신과승인 슬라이딩윈도우방식의실제복잡도 작은윈도우문제회피 너무작은세그먼트를보내지않기위한회피기술이필요 작은세그먼트를보내면성능이떨어지고바보윈도우증후군이나타남 혼잡처리와회피 기본적인슬라이딩윈도우방식을수정하여인터네트워크의혼잡을회피할수있도록함 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 41
TCP 메시지포맷, 데이터송신 TCP 밀어넣기기능 애플리케이션이데이터를즉시보내야하는경우 TCP 로데이터를보낸후 TCP 의밀어넣기명령을사용 밀어넣기명령을받은 TCP 는보낼수있는모든데이터를모아세그먼트를생성하고, 제어필드의 PSH 비트를설정후전송 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 42
TCP 메시지포맷, 데이터송신 TCP 긴급기능 전송중인데이터에문제가있어중지하거나우선순위의차이를주기위한기능 긴급기능을사용하면 TCP 는특별한세그먼트를만들고 URG 비트를설정한후밀어넣기기능도같이사용 긴급포인터를이용해세그먼트내의긴급데이터와일반데이터를구분 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 43
목차 TCP 개요 TCP 원리와일반동작 연결의수립, 관리종료 TCP 메시지포맷과데이터송신 TCP 신뢰성과흐름제어 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 44
TCP 의신뢰성과흐름제어 TCP 세그먼트재전송과재전송큐 재전송큐를이용한재전송관리 세그먼트를전송하면복사본을재전송큐에삽입하고타이머로관리 타이머만료전에승인이온다면해당세그먼트를재전송큐에서제거 타이머가만료되면해당세그먼트를재전송 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 45
TCP 의신뢰성과흐름제어 TCP 세그먼트재전송과재전송큐 누적승인을이용한재전송관리 승인메시지를보낼때수신받은마지막순서번호 +1 을전송 특정세그먼트가빠진경우승인을보내지않음 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 46
TCP 의신뢰성과흐름제어 TCP 세그먼트재전송과재전송큐 기본적인 TCP 재전송그림 RCV.WND = 560 RCV.NXT = 1 4., ACK RCV.WND = 560 80 120 RCV.NXT = 201 6. 의 4, ACK RCV.WND = 560 80 120??? 140 RCV.NXT = 201 X SND.UNA = 560 SND.NXT = 1 1. 1 80 (1~80) 2. 2 120 (81~200) 3. 3 160 (201~360) 5. 4 140 (361~500) SND.UNA = 1 80 120 160 140 7. 1,2 ACK SND.UNA = 201 SND.NXT = 501 80 120 160 140 9. 3, 3, 4 ACK RCV.WND = 560 80 120 160 140... SND.NXT = 501 8. 3-10. 3,4 ACK SND.UNA = 501 RCV.NXT = 501 80 120 160 140... SND.NXT = 501 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 47
TCP 의신뢰성과흐름제어 TCP 비연속적승인처리와선택적승인 (SACK) 고속네트워크이거나신뢰할수없는물리네트워크의경우누적승인으로인한문제가발생 누적승인은승인번호필드값보다작은모든세그먼트를승인하지만세그먼트가순서대로오지않을수있음 비연속적승인처리 타이머가만료된세그먼트만재전송, 다른세그먼트는제대로전송되는경우효율적 승인받지못한모든세그먼트재전송, 재전송이필요치않은경우비효율적 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 48
TCP 의신뢰성과흐름제어 TCP 비연속적승인처리와선택적승인 (SACK) 선택적승인 (SACK: Selective Acknowledgment) 연결수립시선택적승인허용선택사항을사용한협상이필요 재전송큐를수정하여세그먼트가선택적으로승인되었을경우 SACK 비트를 1 로설정한플래그를가짐 승인받지못한세그먼트의타이머가만료된경우 SACK 비트가 0 인세그먼트를재전송 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 49
TCP 의신뢰성과흐름제어 TCP 적응형재전송과재전송타이머 재전송타이머의값은왕복시간 (RTT: Round-Trip Time) 보다약간크면이상적 연결거리의차이 물리네트워크의신뢰도, 성능차이실제거리차이등을반영 일시적인지연시간과변동성 일시적인인터네트워크부하에따른지연시간변화 RTT 계산에기반한적응형재전송 평균적인지연시간을계산 새 RTT = α 예전 RTT + ((1 α) 가장최근에측정한 RTT) α 는부드럽게하는상수 1~0 값을가짐 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 50
TCP 의신뢰성과흐름제어 TCP 적응형재전송과재전송타이머 모호한승인 RTT 의계산의개념은세그먼트를전송한시간과승인이돌아온시간의차 세그먼트를전송하고, 타이머가만료되어서재전송한후도착한승인에대한 RTT 계산의문제 RTT 계산수정과칸알고리즘 Phil Karn 알고리즘 재전송에타이머계산과평균 RTT 계산을분리 ( 모호한승인해결 ) 세그먼트를재전송할시백오프를통해 RTT 를두배증가시킨시간값을가짐 재전송이성공할때까지증가하지만한계치가있음 재전송이발생하지않는일반적인상황이되어 RTT 를계산할때까지백오프된 RTT 사용 ( 과부화된상황해결 ) TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 51
TCP 의신뢰성과흐름제어 TCP 윈도우크기조절과흐름제어 서버와클라이언트는서로수신할수있는윈도우크기를조절할수있음 ( 기본적인흐름제어 ) 서버가더이상수신하는바이트를처리하지못할경우윈도우크기를 0 으로만들수있음 ( 수신윈도우닫기 ) TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 52
TCP 의신뢰성과흐름제어 TCP 윈도우관리문제 서버의과부하에의해자체적인윈도우감소와수신된윈도우에의한실제적인서버의수신윈도우감소에대한정보를클라이언트에게전송 클라이언트는서버자체적인윈도우감소정보를알려주는메시지를받기전에추가적인세그먼트를보내는경우데이터손실이생길수있고, 재전송해야함 ( 비효율 ) 위와같은문제때문에 TCP 에서는서버가윈도우크기를감소시키지못하게함 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 53
TCP 의신뢰성과흐름제어 TCP 윈도우관리문제 수신윈도우닫기문제 서버의수신윈도우가닫히면클라이언트는서버의윈도우개방세그먼트를받을때까지기다려야함 클라이언트는주기적으로탐사세그먼트를서버에보내현재윈도우크기를응답받을수있음 윈도우개방세그먼트가클라이언트에게전송된다고보장할수없기때문, 만약전송되지못하면서버는연결에문제가있다고인식하고연결종료 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 54
TCP 의신뢰성과흐름제어 TCP 바보윈도우증후군 (SWS: Silly Window Syndrome) 최소세그먼트의크기를지정하지않아서생기는문제 수신되는세그먼트를처리하는속도가늦는경우윈도우가닫히게되고윈도우를 1 바이트크기로개방하게되어 TCP 의효율을급격히떨어트림 바보윈도우증후군회피알고리즘 수신자 SWS 회피 윈도우의끝을움직이는최소단위를지정 MSS 파라미터또는버퍼의절반중작은것으로결정 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 55
TCP 의신뢰성과흐름제어 TCP 바보윈도우증후군 (SWS: Silly Window Syndrome) 바보윈도우증후군회피알고리즘 송신자 SWS 회피와네이클알고리즘 세그먼트를적절한크기가되도록기다리게해서송신 TCP 에제한을두는 Nagle 알고리즘 송신자가보내고승인받지못한데이터가없다면애플리케이션이원하는방식으로데이터를전송 ( 일반적이상황 ) 승인받지못한데이터가있는경우송신된데이터가모두승인되거나 MSS 크기만큼데이터가모이지않는다면송신하지않음 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 56
TCP 의신뢰성과흐름제어 TCP 혼잡처리와혼잡회피알고리즘 TCP 는 3 계층을통해실질적인데이터를전송 인터네트워크에서과부하가생기면세그먼트가제대로전송되지않을수있고, 승인받지못한데이터를계속재전송하면혼잡붕괴 (Congestion Collapse) 현상이발생 TCP 혼잡처리방식 느린시작 두장비가연결이수립되자마자데이터를전송할수있음 인터네트워크가바쁜상황이었다면혼잡을가중시키므로현대 TCP 에서초기에세그먼트를보내는속도를제한 MSS 크기의세그먼트하나만송신하고이후송신윈도우크기만큼보내거나네트워크혼잡을알게될때까지점점더많이전송 네트워크혼잡을알게되면혼잡회피기능을사용 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 57
TCP 의신뢰성과흐름제어 TCP 혼잡처리와혼잡회피알고리즘 TCP 혼잡처리방식 혼잡회피 혼잡이발생한경우세그먼트를보내는속도를재빨리떨어트리는알고리즘 다시혼잡이일어나지않도록느린시작알고리즘을이용해송식속도를증가 빠른재송신 비연속적인세그먼트수신시중간에빠진세그먼트를알리는메시지를 3 번이상받으면정상적인재송신큐과정을생략하고사라진세그먼트를재전송 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 58
TCP 의신뢰성과흐름제어 TCP 혼잡처리와혼잡회피알고리즘 TCP 혼잡처리방식 빠른회복 잃어버린세그먼트를재송신하기위해빠른재송신을사용할때장비는혼잡회피방법을이용해전송율을증가시킴 특정세그먼트만도착하지못했으므로네트워크가그다지혼잡하지않다고판단할수있음 TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 59
감사합니다! TCP/IP 완벽가이드 Protocol Engineering Lab., Sangmyung University 60