Connection Timeout과 Read Timeout의 차이점 (RTO, RTT)

Damongsanga·2024년 2월 12일
0

CS 스터디 중 나온 질문으로 "Connection Timeout과 Read Timeout의 차이점"을 설명하라는 질문에 대한 답을 하기 위해 공부한 내용을 정리해보았다. 둘의 차이를 맛집으로 예시를 든 것이 재미있었다.
하지만 그것보다 재미있던건 설 연휴 마지막의 늦잠.. 행복..

  • Connection Timeout

    • 서버, 클라이언트 간 종단을 연결하는데 소요되는 최대 시간
    • 해당 시간을 넘기게 되면 연결 할 수 없는 것으로 판단하고 에러가 발생
      💡 맛집을 찾아가서 줄을 섰는데 하루가 다 가도록 줄이 줄어들지 않는 경우
  • Read Timeout

    • 연결된 종단 간에 데이터를 주고 받을 때 소요되는 최대 시간
    • 클라이언트가 서버에 접속은 하였으나 서버가 로직을 수행하는 시간이 너무 길어 제대로 응답을 못준 상태로 클라이언트가 연결을 해제하는 것
      💡 맛집을 어떻게어떻게 줄 서서 들어갔는데 시킨 메뉴가 도저히 나오지 않아서 못 먹고 나오는 경우
  • 어떻게 설정하는 것이 좋은가?

    • 패킷 유실은 장애 상황이 어니어도 발생할 수 있다.
    • 그런데 만약 실제로 장애 상황이 발생하여 패킷이 유실될 때 최대한 빠르게 조치하기 위해서는 Timeout 값을 짧게 주는 것이 좋다
    • 하지만 너무 짧게 주면 간헐적으로 발생되는 패킷 유실에 대해 너무 민감하게 반응해버리게 된다

❓ 그러면 어느정도로 Timeout 시간을 지정하는 것이 좋은가??

⇒ "한 번의 패킷 유실정도는 재전송을 통해 해결할 수 있는 수준의 타임아웃" 을 주는 것이 좋다

  • Connection Timeout
    • 핸드 쉐이크 과정에서 SYN, SYN+ACK, ACK 패킷이 유실되었을 때, 총 3가지 경우를 고려해보면 될 것이다
  • Read Timeout
    • 기본적으로 Connection Timeout에 비해 짧게 설정한다
    • 이는 RTO(Retransmission Timeout)가 RTT(Round Trip Time)를 기준으로 만들어져 1초보다 짧기 때문
  • RTO : 타이머가 작동하는 시간
    - 첫 SYN 패킷은 정보가 없음으로 initRTO라는 지정된 값으로 사용하며, 리눅스는 1초이다
    - 따라서 기본적으로 어플리케이션에서의 타임아웃은 1초 이상으로 설정한다
    - 이미 맺은 세션의 재전송은 RTT 기반으로 1초 미만이겠지만, Handshake를 맺는데에는 최소 1초 이상은 걸리기 때문
    - 그러나 커넥션 풀을 사용한다면 initRTO가 발생할 일이 없기 때문에 더 작은 값으로 설정해도 된다

  • RTT : 네트워크 통신을 하는 두 노드 간에 패킷이 전달되는데 소요된 시간
    - 종단간 거리가 멀면 값이 커진다
    - ping 리눅스 명령어로 확인할 수 있다

    ping -c 3 www.google.com
  • time이 실제 패킷이 왕복하는데 걸린 시간이고 ttl은 IP 패킷 수명이다

    64 bytes from 142.250.206.196: icmp_seq=0 ttl=114 time=31.094 ms
    64 bytes from 142.250.206.196: icmp_seq=1 ttl=114 time=38.236 ms
    64 bytes from 142.250.206.196: icmp_seq=2 ttl=114 time=30.828 ms
    
    --- www.google.com ping statistics ---
    3 packets transmitted, 3 packets received, 0.0% packet loss
    round-trip min/avg/max/stddev = 30.828/33.386/38.236/3.431 ms

참조

https://alden-kang.tistory.com/20
https://brunch.co.kr/@alden/15

profile
향유하는 개발자

0개의 댓글

관련 채용 정보