이 글에서는 Python을 활용하여 왕복 시간(RTT, Round Trip Time)을 측정하는 방법을 알아봅니다.
RTT란 무엇인가?
RTT(Round Trip Time)는 신호가 목적지까지 도달한 후 다시 돌아오기까지 걸리는 전체 시간을 의미합니다. 즉, 요청 신호를 보낸 순간부터 상대방이 보낸 확인(Acknowledge) 신호를 수신한 시점까지의 시간입니다. RTT 값이 작을수록 네트워크 연결이 빠르고 안정적이라고 판단할 수 있습니다.
RTT에 영향을 주는 주요 요인
RTT 측정 결과는 다음과 같은 다양한 조건에 따라 달라질 수 있습니다.
- 송신 측의 데이터 전송 속도 — 대역폭이 넓을수록 RTT가 짧아집니다.
- 전송 매체의 특성 — 광케이블, 동축 케이블, 무선 등 매체 종류에 따라 전파 속도가 다릅니다.
- 송신자와 수신자 간의 물리적 거리 — 거리가 멀수록 신호 이동 시간이 길어집니다.
- 송신자와 수신자 사이의 노드(라우터) 수 — 중간 경유지가 많을수록 지연이 누적됩니다.
- LAN 내 트래픽 양 — 네트워크 혼잡도가 높으면 응답이 늦어집니다.
- 중간 지점에서 처리되는 요청의 수 — 서버 부하 상태에 따라 처리 시간이 변동됩니다.
Python 예제 코드
Python의 time 모듈과 requests 라이브러리를 사용하면 간단하게 RTT를 측정할 수 있습니다. 먼저 requests 라이브러리가 설치되어 있어야 합니다(pip install requests).
import time
import requests
import sys
def find_roundtriptime(url):
initial_time = time.time() # 요청을 보낸 시각 기록
request = requests.get(url)
ending_time = time.time() # 응답을 수신한 시각 기록
elapsed_time = str(ending_time - initial_time)
print('The Round Trip Time for {} is {}'.format(url, elapsed_time))
find_roundtriptime(sys.argv[1])
코드 설명:
time.time()함수로 요청 직전과 응답 수신 직후의 타임스탬프를 각각 기록합니다.- 두 시각의 차이를 계산하면 해당 URL에 대한 왕복 시간(초 단위)을 구할 수 있습니다.
- 명령줄 인자(
sys.argv[1])로 측정하고 싶은 웹사이트 주소를 전달합니다.
실행 결과
$ python3 319.RoundTripTime.py https://www.tutorialspoint.com/
The Round Trip Time for https://www.tutorialspoint.com/ is 0.8301455974578857
$ python3 319.RoundTripTime.py https://www.google.com
The Round Trip Time for https://www.google.com is 0.5217089653015137
위 실행 결과에서 볼 수 있듯이, 같은 환경에서도 접속 대상 서버의 위치와 응답 속도에 따라 RTT 값이 크게 달라집니다. 참고로 Linux나 macOS에서 제공하는 ping 명령어와 유사한 원리이며, Python 코드로 구현하면 측정 결과를 자동화하거나 로그로 저장하는 등 더 유연하게 활용할 수 있습니다.