왕복 시간(RTT)이란?
임의의 웹사이트 URL 주소가 주어졌을 때, 해당 웹사이트의 왕복 시간(Round Trip Time, RTT)을 계산해 보겠습니다.
RTT(Round Trip Time)란 신호를 전송하는 데 걸린 시간과 그 신호에 대한 응답(확인 메시지)을 수신하는 데 걸린 시간을 합한 총 소요 시간을 의미합니다. 이 시간에는 두 지점 간의 신호 전파 시간도 포함됩니다.
일반 사용자는 IP 주소로 핑(ping)을 보내는 방법을 통해 자신의 왕복 시간을 확인할 수 있습니다.
RTT에 영향을 미치는 요소
왕복 시간은 다음과 같은 다양한 요소의 영향을 받습니다.
- 전송 매체의 종류(무선, 광섬유 등)
- 회선 내 인터페이스의 유무
- 출발지에서 목적지까지 거치는 노드(라우터)의 개수
- 네트워크 트래픽의 양
- 출발지와 목적지 사이의 물리적 거리
- 요청(request)의 개수
일반적으로 왕복 시간은 밀리초(ms) 단위로 측정되지만, 이번 예제에서는 결과를 초 단위로 출력하겠습니다.
예제
입력: www.tutorialspoint.com
출력: Time taken: 0.3676435947418213
입력: www.indiatoday.in
출력: Time taken: 0.4621298224721691
문제 해결 접근 방법
- RTT를 계산할 URL 문자열을 입력받습니다.
- URL에 요청을 보내기 전의 시간을 기록하여 변수에 저장합니다.
- 요청을 전송합니다.
- 응답(acknowledgement)을 받은 후의 시간을 기록합니다.
- 두 시간의 차이를 구하면 RTT를 얻을 수 있습니다.
알고리즘
시작
1단계 -> time 모듈 임포트
2단계 -> requests 모듈 임포트
3단계 -> 함수 정의 def roundtriptime(url):
t1 = time.time() 설정
req = requests.get(url) 설정
t2 = time.time() 설정
t = str(t2-t1) 설정
소요 시간 출력
4단계 -> url = "https://www.tutorialspoint.com" 초기화
5단계 -> roundtriptime(url) 함수 호출
종료
구현 코드 (Python)
import time
import requests
# 왕복 시간(RTT)을 계산하는 함수
def roundtriptime(url):
# 신호를 보낸 시점의 시간
t1 = time.time()
req = requests.get(url)
# 응답(acknowledgement)을
# 받은 시점의 시간
t2 = time.time()
# 총 소요 시간
t = str(t2 - t1)
print("Time taken:" + t)
# URL 주소
url = "https://www.tutorialspoint.com"
roundtriptime(url)
실행 결과
Time taken: 0.3676435947418213
위 코드에서는 time.time()을 사용해 요청 전후의 타임스탬프를 기록하고, 그 차이를 통해 해당 웹사이트까지의 왕복 시간을 초 단위로 계산합니다. 네트워크 상태나 서버 응답 속도에 따라 실행할 때마다 결과 값이 달라질 수 있다는 점에 유의하세요.