제 20 장 TCP 대용량 데이터 흐름
목 차 개요 일반적인 데이터 흐름 슬라이딩 윈도우 윈도우 크기 PUSH 플래그 저속 출발 대용량 데이터 처리율 긴급모드
1. 개요 슬라이딩 윈도우 프로토콜 PUSH 플래그 저속시작(slow start) 대용량 데이터 처리율
2. 일반적인 데이터 흐름 두가지의 전송예제 및 전송절차 고속송신자, 저속송신자
Timer 작동 svr .1056 bsdi .7777 SYN 1305814529:1305814529(0) win 4096,<mss 1024> SYN 1367249409:1367249409(0) ack 1305814530,win 4096<mss 1024> 1, win 4096 PSH 1:1025(1024) PSH 1025:2049(1024) PSH 2049:3073(1024) 2049, win 4096 6145, win 4096 1 2 7 8 3 4 5 9 PSH 4097:5121(1024) 3073, win 3072 PSH 3073:4097(1024) PSH 5121:6145(1024) PSH 6145:7169(1024) 4097, win 4096 FIN 1:1(0) 8194, win 4096 FIN 8193:8193(0) Ack 2, win 4096 15 20 19 18 17 16 PSH 7169:8193(1024) 8193, win 4096 10 13 12 11 0.0 0.002185 (0.0022) 0.007295 (0.0051) 0.017868 (0.0106) 0.022699 (0.0048) 0.027650 (0.0050) 0.027799 (0.0001) 0.031881 (0.0041) 0.034789 (0.0029) 0.039276 (0.0045) 0.044618 (0.0053) 0.050326 (0.0057) 0.055286 (0.0050) 14 0.055441 (0.0002) 0.061742 (0.0063) 0.066206 (0.0045) 0.066850 (0.0006) 0.068216 (0.0014) 0.069358 (0.0011) 0.075414 (0.0061) 6 Timer 작동
전송절차 1. 송신자는 먼저 3개의 데이터 세그먼트(4 부터 6)를 전송 2. 3개의 세그먼트 4, 5, 6은 차례로 도착하여, 수신된 순서대로 IP의 입력 큐에 놓여진다 3. TCP가 세그먼트 4를 처리할 때 연결은 지연된 ACK를 생성하기 위해 표시 4. TCP는 다음 세그먼트(5)를 처리하고, 이 시점에서, TCP에는 2개의 해결되지 않은 세그먼트를 가지고 있으므로 2049의 응답이 생성(세그먼트 7)되고 이 연결에 대한 지연된 ACK 플래그는 해제. 5. TCP가 다음 입력 세그먼트(6)을 처리하고, 연결은 다시 지연된 ACK를 위해 표시 6. 세그먼트 9가 도착하기 전에 ACK 타이머가 작동하여 3073에 대한 ACK(세그먼트 8)가 생성
전송절차(계속) 7. 세그먼트 8은 3072바이트의 윈도우를 광고한다. 이것은 TCP 수신 버퍼에 응용이 아직 읽지 않은 1024바이트의 데이터가 남아있다는 것을 의미 8. 세그먼트 11, 12, 13이 도착해서 IP 입력 큐에 놓여진다. 9. 세그먼트 11이 TCP에 의해 처리될 때 연결은 지연 ACK에 대해 표시 10. 세그먼트 12가 처리될 때, 세그먼트 11과 12의 ACK가 생성되고 (세그먼트 14), 이 연결을 표시하는 ACK 플래그는 해제 11. 세그먼트 13은 다시 연결의 지연 ACK를 설정하지만, 타이머가 작동하기 전에 세그먼트 15가 처리되고, 이것에 의해 즉시 ACK가 송신된다(세그먼트 16).
고속 송신자, 저속 수신자 고속 송신자(sparc 시스템)와 저속 수신자(80386과 저속 이더넷) 간의 전송
윈도우 갱신 (window update)
3. 슬라이딩 윈도우
3. 슬라이딩 윈도우(계속) 닫힘 열림 줄어듬 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 1024 1025 2048 2049 3072 3073 4096 5121 6144 4097 5120 7169 8192 6145 7168 세그먼트 2 에서 광고된 윈도우 4, 5, 6 송신된 데이터 7 확인응답 8 9 10 11, 12, 13 14 15 16
4. 윈도우 크기 수신 프로세스에 의해 제어 4.2BSD : 2,048 BYTE 4.3BSD : 4,096 BYTE SunOS 4.1.3, BSD/386, SVR4 : 4,096 BYTE Solaris 2.2, 4.4BSD, AIX3.2 :8192 ~ 16,384 BYTE
5. PUSH 플래그 버퍼에 저장된 데이터가 MSS보다도 작아도 TCP는 데이터를 전송 수신측에서도 이 데이터를 신속하게 응용 프로세스에게 전달 오늘날에는 사용하지 않는다.
6. 저속출발 다른 LAN상의 호스트간 데이터 전송시 또다른 하나의 윈도우가 필요 : 밀집 윈도우 밀집 윈도우는 송신자에 의한 흐름 제어 밀집윈도우는 기하급수적으로 증가
7. 대용량 데이터 처리율
대역폭-지연 산출 파이프 용량(비트) = 대역폭(비트/초) x 왕복시간(초) 문제 - 미국지역(RTT는 약 60ms)을 연결하고 있는 T1 전화회선(1,544,000 비트/초)의 대역폭-지연 산출은 ? 해답 - 11,580byte = T1(1,544 비트/초) x 0.06(초)
대역폭-지연 산출(계속) RTT와 파이프용량 관계 대역폭과 파이프용량 관계
밀집(Congestion) 큰파이프에서 작은 파이프로 보내질때 발생
긴급모드 일반 데이터 스트림에 긴급 데이터를 보내는 것 - telnet, rlogin으로서 대화식 사용자가 인터럽트 키를 눌렀을때(26장) - ftp로서 인터럽트 키가 파일 전송을 중지시킬때(27장)
긴급모드(계속)
긴급모드(계속) sun % sock -v -i -n6 -S8192 -U5 bsdi 5555 SO_SNDBUF = 8192 TCP_MAXSEG = 1024 wrote 1024 bytes wrote 1 bytes of urgent data
긴급모드(계속) 긴급모드로 들어갈때 마지막 2개의 세그먼트를 쓴 후 종단의 연결을 종료할때 1 sun.1035 > bsdi.5555: P 1:1025(1024) ack 1 win 4096 2 sun.1035 > bsdi.5555: P 1025:2049(1024) ack 1 win 4096 3 sun.1035 > bsdi.5555: P 2049:3073(1024) ack 1 win 4096 4 bsdi.5555 > sun.1305: . ack 3073 win 1024 5 sun.1035 > bsdi.5555: P 3073:4097(1024) ack 1 win 4096 6 sun.1035 > bsdi.5555: . ack 1 win 4096 urg 4098 7 sun.1035 > bsdi.5555: . ack 1 win 4096 urg 4098 8 sun.1035 > bsdi.5555: . ack 1 win 4096 urg 4098 9 sun.1035 > bsdi.5555: . ack 1 win 4096 urg 4098 10 sun.1035 > bsdi.5555: . ack 1 win 4096 urg 4098 11 bsdi.5555 > sun.1305: . ack 4097 win 0 12 sun.1305 > bsdi.5555: . ack 1 win 4096 urg 4098 13 bsdi.5555 > sun.1305: . ack 4097 win 2048 14 sun.1305 > bsdi.55555: . 4097:5121(1024) ack 1 win 4096 urg 4098 15 sun.1305 > bsdi.55555: . 5121:6145(1024) ack 1 win 4096 16 bsdi.5555 > sun.1305: . ack 4097 win 4096 긴급모드로 들어갈때 마지막 2개의 세그먼트를 쓴 후 종단의 연결을 종료할때 4번째줄의 ACK에 대한 수신에 의해 생성
긴급모드(계속)