1. 어리석은 윈도우 신드롬 (SWS, Silly Window Syndrome)
ㅇ 송신,수신측 응용 프로그램이 데이터 처리 단위가 작거나 저속일 때,
- 예를들면,
. 송신측이 저속으로 1 바이트 씩 발생시키거나,
. 수신측이 저속으로 1 바이트 씩 처리하는 경우에,
- 데이터 1 바이트 전송을 위해,
. 최소 IP 및 TCP의 헤더가 각각 20 바이트 씩 총 40 바이트가 부가적으로 붙여짐
. 즉, 전송하기 위해 배 보다 배꼽이 더 큰 비 효율적인 현상이 발생되는데,
- 이를 어리석은 윈도우 신드롬(SWS) 현상이라고 함
. 이는 네트워크의 자원을 낭비하는 결과가 됨
ㅇ 송신측 SWS 문제점 해결 방안 : Nagle 알고리즘 (매우 단순함)
- 처음에는, 응용 프로그램쪽에서 1개 바이트 만 전송 요청하더라도 이를 송신하나,
- 그 다음부터는, 누적시켜가며,
. 수신측 ACK가 올 때까지 또는 최대 MSS(Maximum Segment Size)까지 채울 때까지 송신 보류함
- 이로써, 네트워크 속도 및 응용 프로그램 속도를 맞추는 역할을 하게 됨
ㅇ 수신측 SWS 문제점 해결 방안 : Clark's solution 또는 Delayed Acknowledgment
- Clark's solution
. 일단, 수신 즉시 ACK를 보내서 송신측에 잘받았다는 소식을 전하나,
. 이때, 슬라이딩 윈도우 크기를 0(zero)로 셋팅하여 보내서, 수신 처리 속도가 늦음을 알림
. 최소 수신 버퍼의 1/2 이상 또는 MSS 정도를 채울 정도까지 기다린 후에야, 윈도우 크기 늘림
- Delayed Acknowledgment
. 수신 즉시 ACK를 보내지 않고, 수신 버퍼가 넉넉할 때까지 지연시키는 단순한 방식
. 단, 단순하지만 괜히 재전송 횟수 만 키워 네트워크 혼잡에 기여할 수도 있음
. 따라서, 기본 500 ms 보다 더 길게 ACK를 지연 못하도록 규칙을 정함