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