RTT(왕복 시간)란?

Round-Trip Time의 약자. 데이터를 보내고 나서 그 응답이 돌아올 때까지의 시간. 신호가 거리를 전파하는 시간과 도중 기기에서의 처리나 대기 시간을 포함한다. TCP의 재전송 타임아웃 계산이나 연결 설정에 걸리는 시간(왕복 횟수×RTT)을 생각할 때 쓰며, ping으로 측정할 수 있다. 광섬유 안에서 빛은 약 20만 km/s로 나아가므로, 1,000 km 떨어지면 왕복만으로 약 10 ms가 걸린다.

일본어 명칭: RTT(往復遅延時間)

RTT(왕복 시간)은(는) 네트워크 기초, 웹 기술 기초, 암호 기술의 기초와 응용 등 3개 분야의 연습 문제 9개에 나와요.

분야: 네트워크 기초

도전해 보기: RTT(왕복 시간) 관련 문제

RTT(왕복 시간)가 100 ms인 웹 서버에 HTTPS(TCP 위의 TLS 1.3)로 새로 접속하여, 첫 요청을 보내고 응답을 받기 시작할 때까지 걸리는 시간에 가장 가까운 것은? DNS 이름 해석은 끝났으며, 서버의 처리 시간과 데이터 전송 시간은 무시한다.

  1. A약 100 ms
  2. B약 300 ms
  3. C약 200 ms
정답과 해설 보기

정답: B. 약 300 ms

먼저 TCP의 3-way 핸드셰이크에 1왕복이 걸립니다(클라이언트는 마지막 ACK와 함께 TLS의 첫 메시지를 보낼 수 있습니다). 다음으로 TLS 1.3 핸드셰이크에 1왕복, 그 후 HTTP 요청과 응답에 1왕복이 걸려 합계 3왕복, 3 × 100 = 300 ms입니다. TLS 1.2에서는 키 교환에 2왕복이 걸리므로 4왕복인 400 ms가 됩니다. 이 대기 시간은 거리로 정해지는 RTT의 횟수로 결정되므로 회선의 대역폭을 늘려도 짧아지지 않습니다. HTTP/3에서 사용되는 QUIC은 전송 계층과 암호의 핸드셰이크를 1왕복으로 합치고, 재접속할 때는 첫 왕복에서 데이터를 보내는 방법(0-RTT)도 제공합니다.

TCP의 수신 윈도가 65536바이트로 일정하고 RTT가 10 ms인 연결에서, 회선의 대역폭은 충분히 크고 손실도 없다고 하자. 이 연결로 얻을 수 있는 처리량의 상한에 가장 가까운 것은?

  1. A약 52 Mbps
  2. B약 6.6 Mbps
  3. C약 524 Mbps
정답과 해설 보기

정답: A. 약 52 Mbps

윈도 제어에서는 ACK가 돌아올 때까지의 1왕복(RTT) 동안 보낼 수 있는 것이 최대 윈도의 양뿐입니다. 그래서 처리량의 상한은 윈도 ÷ RTT = 65536바이트 × 8 ÷ 0.01 s ≈ 52.4 Mbps(약 52 Mbps)가 되며, 회선이 1 Gbps라도 이 이상은 나오지 않습니다. 고속이면서 먼 회선을 다 쓰려면 대역폭과 RTT의 곱(대역폭-지연 곱) 이상의 윈도가 필요합니다. 예를 들어 1 Gbps, RTT 10 ms라면 10^9 × 0.01 = 10^7비트 = 1.25 MB입니다. TCP 헤더의 윈도 필드는 16비트로 최대 65535바이트이지만, 윈도 스케일 옵션으로 크게 할 수 있습니다.

해설 속 RTT(왕복 시간)

RTT(왕복 시간)이(가) 나오는 문제 (9)

  1. RTT(왕복 시간)가 100 ms인 웹 서버에 HTTPS(TCP 위의 TLS 1.3)로 새로 접속하여, 첫 요청을 보내고 응답을 받기 시작할 때까지 걸리는 시간에 가장 가까운 것은? DNS 이름 해석은 끝났으며, 서버의 처리 시간과 데이터 전송 시간은 무시한다.
  2. TCP의 수신 윈도가 65536바이트로 일정하고 RTT가 10 ms인 연결에서, 회선의 대역폭은 충분히 크고 손실도 없다고 하자. 이 연결로 얻을 수 있는 처리량의 상한에 가장 가까운 것은?
  3. RTT가 50 ms, 대역폭이 100 Mbps인 회선에서 10 KB의 응답을 받는 요청을, 이전 응답을 다 받은 뒤 다음 요청을 보내는 방식으로 100회 반복한다. 걸리는 시간에 가장 가까운 것은? 1회당 시간은 RTT에 응답의 전송 시간(데이터량÷대역폭)을 더한 것으로 하고, 1 KB = 1000바이트, 서버의 처리 시간은 무시한다.
  4. RTT가 40 ms인 웹 서버에서 HTML 하나와 거기서 참조하는 이미지 4개를 하나씩 차례로 가져온다. TCP 연결 설정에 1왕복, 각 요청과 응답에 1왕복이 걸린다고 하고, 데이터 전송 시간, 서버의 처리 시간, TLS, 연결 종료는 고려하지 않는다. 객체마다 새로운 TCP 연결을 여는 경우와 하나의 TCP 연결을 재사용하는 지속 연결의 경우에 걸리는 시간의 차이는?
  5. 1.5 MB의 텍스트 데이터를 gzip으로 3분의 1 크기로 압축하여 보낸다. 대역폭이 10 Mbps, RTT가 100 ms이고, 데이터를 보내기 시작하기 전에 TCP 연결, TLS 핸드셰이크, HTTP 요청에 합쳐서 3왕복이 걸린다고 한다. 1 MB = 10^6바이트로 하고, 압축과 압축 해제 시간, 헤더, TCP의 혼잡 제어에 의한 대기는 무시한다. 데이터를 다 받을 때까지의 시간에 가장 가까운 것은?
  6. TLS 1.3의 0-RTT(이전 연결에서 얻은 사전 공유 키를 사용하여, 첫 메시지와 함께 '얼리 데이터'를 보내는 방법)의 주의점으로 올바른 것은?
  7. TCP에서 연결을 설정하는 3-way 핸드셰이크에서 주고받는 패킷의 순서로 올바른 것은?
  8. TCP의 송신 측이 세그먼트가 손실되었다고 판단하여 재전송하는 계기로 올바른 것은?
  9. TLS 1.3(RFC 8446)에서 TLS 1.2로부터 바뀐 점으로 올바른 것은?

관련 용어

TCP(전송 제어 프로토콜) TLS HTTP(하이퍼텍스트 전송 프로토콜) 3-way 핸드셰이크(Three-way Handshake) 전방향 안전성(Forward Secrecy) 패킷(Packet) HTTPS DNS(도메인 네임 시스템) QUIC 처리량(Throughput)

용어집으로 돌아가기