::: 강좌/소스/문서 :::

강좌/소스/문서 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  김영대(2004-07-13 21:11:16, Hit : 9482, Vote : 1761
 http://www.howto.pe.kr
 [참고] TCP 에서 사용되는 내부 타이머

1.Retransimission timeout
  RTO(Retransmissiom Timeout)은 TCP 패킷의 전송 후, 그 승인 세그먼트(ACK)의 수신까지 걸리는
  시간이 미리 설정한 시간 간격(RTT보다 약간 크게)을 초과하는지를 알아보기 위해 측정되어진다.  
  이 경우 패킷은 재전송 되어야 한다. 실제에 있어서 이 시간 간격은 고정된 것이 아닌데, 고정된 시간
  간격을 가지고서는 서로 다른 지연 시간을 갖는 네트워크들 사이에서 TCP가 작업을 할 수가 없기때문
  이다.  
  예를 들어 Ethernet와 다수의 게이트웨이를 가진 병렬 연결을 비교하면, 그 비율이 천단위의
  값을 가진다.  따라서 TCP의 모든 패킷에 대하여 전송과 승인 세그먼트의 수신 사이의 시간
  (Round Trip Time, RTT)이 측정되어진다.  이 값은, 극값을 제거하고 증가하거나 감소한 지연시간에
  단계적으로 대응하도록 조절하는 공식에 대입되어진다.  이 결과로 얻어지는 것이 세그먼트 교환에서
  발생하는 지연시간의 평균인 SRTT(Smoothed Round Trip Time)이다.  이 시간값은 지연의 예측에
  사용하기 위해 또 다시 일정 기준에 따라 변환된다.  
  
  아래는 RFC 793에 명세되어있는 두 공식을 보여준다.  
  재전송이후 재전송 타이머는 다시 측정을 개시하며 RTO는 대체로 12배까지 지수적으로 증가한다.  
  이러한 증가가 아무런 효과를 얻지 못하는 경우 연결이 훼손되었을 것이라고 추측되어진다.

    SRTT: S = αS + (1-α)R
    RTO: T = min(U, max(L, βS))
    Key
     S ≡ Smoothed round trip time
     R ≡ Round trip time
     T ≡ Retransmission timeout(for example, 3o seconds)
     U ≡ Maximum time limit(for example, 1 second)
     α  ≡ Smoothing factor(for example, 0.9)
     β  ≡ Sacling factor(for example, 2.0)

2.Persistence timer
  TCP상의 데이타의 교환에 있어서 이론적으로 수신 윈도우의 크기가 0이되고 윈도우를 재개 시키려는
  세그먼트가 동시에 분실되는 것이 가능하다.  결과적으로 양 TCP개체는 무한대기 상태에 빠지게된다.  
  이러한 사태에 대한 대책이 persistence timer인데, 이것은 일정한 시간간격으로 상대편인 수신개체가
  다시 준비상태가 되었는지를 검사하는 작은(1바이트) TCP 세그먼트를 전송한다.  앞서 말한 것처럼
  윈도우의 크기가 0이고 음의 억놀리지먼트(acknowledgement)가 돌아오는 경우  또는 윈도우의 크기는
  이보다 큰 값을 가지는 경우에는 양의 억놀리지먼트가 돌아온 이후에 새로운 데이타를 전송하기 시작한다.

3.Quiet timer
  TCP의 설계자들은 매우 신중한 사람들로서 그들은 이미 사용되어진 TCP 세그먼트가 네트워크에
  남아서 발생시킬 수 있는 연결상의 혼란을 방지하고자 하였다.  따라서 TCP 연결의 종료이후 MSL
  (Maximum Segment Lifetime)의 2배의 시간이 경과한 후에만 포트 번호가 사용가능해지도록 하였다.  
  MSL은 IP에서 사용되는 TTL항목에 해당한다.
  UNIX 사용자들은 연결의 종료직후 동일한 상대편(즉 동일한 포트 번호)과 연결을 재개하는 경우 이
  대기 시간을 확인할 수 있다.  시스템은 사용자에게 포트 번호가 여전히 작업중임을 알려준다.  
  새로운 연결의 설정은 대략 30초 정도가 지나야 가능하다.

4.Keep-alive timer and idle timer
  여기서는 우리는 원래의 TCP 명세에서는 볼 수 없었지만 UNIX 시스템에서 구현된 2개의 타이머에
  대하여 알아보겠다.  이 두개의 타이머는 서로 연관이 되어있다.  Keep-alive timer는 상대 TCP로의
  연결이 여전히 존재하는지를 검사하기 위해 일정한 시간간격동안 빈 패킷을 전송한다.  상대 TCP가
  응답하지 않는 경우 idle timer가 종료한 이후 연결을 제거한다.  응용 프로그램은 socket 인터페이스의
  KEEP-ALIVE 옵션을 이용하여 이 타이머를 활성화시킨다.(setsockopt() 소켓 함수의 SO_KEEPALIVE
  옵션으로 설정)
  
   ---------------------------------------------
            타이머                               (초)
   ---------------------------------------------  
    Retransmission Timeout          Dynamic
    Persistence timer                    5
    Quiet timer                             30
    Keep-alive timer                     45
    Idle timer                               360

  TCP 타이머에 주어진 값들을 위에 나타내었다. 타이머의 지속 시간은 주어진 값으로 항상 설정되는 것이
  아니라 개개의 TCP의 개체들에 따라 서로 다른 값을 가진다.  위에서 보여준 값들은 4.3BSD과 그 이전의
  UNIX시스템의 TCP들의 구현에서 얻어진 것이다.

  
주) 윗글의 출처를 찾지 못하여 저자명을 게재하지 못하였습니다





8   [네트워크/보안] [참고] TCP 에서 사용되는 효율향상 알고리즘  김영대 2004/07/16 9624 1912
  [네트워크/보안] [참고] TCP 에서 사용되는 내부 타이머  김영대 2004/07/13 9482 1761
6   [네트워크/보안] [강좌] ucd-snmp 설치  김영대 2003/11/29 8169 1607
5   [네트워크/보안] [소스] 비동기 timeout read()/write()  김영대 2003/07/29 6839 1571
4   [네트워크/보안] [참고] 다중연결(multiple sockets) 서버의 구현방법 종류  김영대 2003/07/17 9866 2063
3   [네트워크/보안] [소스] 멀티캐스트를 이용한 채팅 프로그램  김영대 2003/03/19 10052 1903
2   [네트워크/보안] [소스] 간단한 채팅 클라이언트/서버  김영대 2003/03/13 10897 1707
1   [네트워크/보안] [소스] Multi Chatting Server  김영대 2003/03/12 7481 1599

1
 

Copyright 1999-2017 Zeroboard / skin by zero