본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.


재전송 타이머

편집 원본 편집
Retransmission Timer
  • 송신측은 매 세그먼트를 전송할 때 마다 재전송 타이머 가동
    • 정해진 시간(RTO, Retransmission Timeout) 내 수신 확인응답(ACK)이 안되면 재전송
  • 타이머는 동적(dynamic) 또는 적응적(adaptive)으로 조정
Persistence Timer
  • 주기적으로 송신하는 Window Probe 패킷의 송신 주기를 처리하는 타이머
  • 세그먼트 전송 중단 후 전송 재개를 알리는 ack 의 손실로 교착상태에 빠지는 것을 방지

시간 대기 타이머

편집 원본 편집
Time-waited Timer
  • TCP 연결 종료 후에 이 기간 동안 만 연결을 유지
  • 이전 연결 종료 전의 어떤 패킷이 늦게, 중복지연 도착하게되는 것을 방지
    • 이 기간 동안 중복지연된 패킷이 오면 폐기함

연결 유지 타이머

편집 원본 편집
Keepalive Timer
  • 이미 설정된 연결이 오랫동안 휴지 상태에 있지 않도록 하기 위함
    • 통상 2시간 동안 아무런 패킷도 오지 않으면,
    • 또는 프로브(Probe) 패킷을 75초 간격으로 10번 송신하고도 응답이 없으면
  • TCP 표준에 공식적인 언급 없으나 일반적으로 사용
  • 리눅스에서는 커널 변수로 정한다. 값을 바꾸는 방법은 리눅스 sysctl
커널 변수 뜻 기본값
net.ipv4.tcp_keepalive_time 마지막 데이터 뒤 첫 프로브를 보내기까지 기다리는 시간(초). 곧 쉬고 있는 연결을 확인 없이 유지하는 시간 7200 (2시간)
net.ipv4.tcp_keepalive_intvl 프로브 사이 간격(초) 75
net.ipv4.tcp_keepalive_probes 응답 없이 보낼 프로브 수. 모두 실패하면 연결을 끊는다 9
  • 3시간으로 늘리려면 echo 10800 > /proc/sys/net/ipv4/tcp_keepalive_time 또는 sysctl -w net.ipv4.tcp_keepalive_time=10800. 단위가 초이므로 3 을 넣으면 3초다
  • keepalive 는 소켓에 SO_KEEPALIVE 옵션을 켠 연결에만 적용된다
  • net.ipv4.tcp_fin_timeout 은 keepalive 와 관계없이 FIN_WAIT2 상태를 기다리는 시간(기본 60초)이다 → TCP 연결 상태