스피드체크는 측정 방식을 투명하게 공개합니다.
Cloudflare의 Anycast 속도 측정 엔드포인트를 사용합니다. 일반적으로 네트워크에서 가까운 Cloudflare 엣지에 연결되지만, 실제 접속 서버와 네트워크 경로는 통신사 라우팅과 접속 환경에 따라 달라질 수 있습니다.
HTTPS 병렬 다중 스트림(5개)으로 데이터를 내려받으며, 파일 크기를 점진적으로 키워 회선 대역폭을 포화시킵니다. 200ms 간격으로 순간 속도를 샘플링하고, 최근 샘플의 중앙값을 실시간 표시합니다. 측정 상한은 15초입니다. 8초가 지난 뒤, 최근 2초 구간과 그 직전 2초 구간의 속도 중앙값 차이가 5% 이내이고 하락 중이 아닐 때 조기 종료합니다. 순간 속도는 샘플마다 흔들리는 게 정상이므로 개별 샘플이 아니라 구간 중앙값을 비교합니다. 최종값은 측정 마지막 4초 구간 샘플의 중앙값입니다.
측정 서버로 데이터를 전송하는 방식이며 3개 병렬 스트림을 사용합니다. 느린 회선에서도 정확히 측정되도록 전송 단위를 128KB에서 시작해 회선 속도에 따라 최대 8MB까지 조정합니다. 다운로드 결과 표시 후 백그라운드에서 약 8초간 측정됩니다.
다운로드를 시작하기 전에, 소요 시간이 짧은 요청을 순차적으로 최대 8회 보내 왕복 시간(RTT)을 측정합니다. 요청을 동시에 보내면 서로 줄을 서면서 RTT가 왜곡되므로 순차로 보냅니다. 첫 요청 1회는 연결 수립 시간이 섞일 수 있어 결과에서 제외합니다. 느린 회선에서 다운로드 시작이 늦어지지 않도록 총 1.8초의 예산을 두고, 예산을 넘기면 최소 4개 표본만 확보하고 중단합니다. 핑은 RTT의 중앙값, 지터는 연속한 RTT 사이 차이의 평균입니다. 다운로드가 회선을 채운 상태의 지연은 이와 별개로 측정합니다 — 유휴 상태의 지연과 부하 중 지연은 다른 값이므로 섞지 않습니다.
브라우저 기반 측정은 기기 성능, Wi-Fi 환경, 동시 사용 중인 앱, 시간대별 혼잡의 영향을 받습니다. 정확한 값이 필요하면 유선(랜선) 연결 상태에서 다른 사용을 멈추고 2~3회 반복 측정한 값을 참고하세요. 측정값은 회선의 이론상 최대치가 아니라 측정 시점의 실효 속도입니다.
1Mbps 미만은 Kbps 단위로 표시합니다. 등급 라벨과 용도별 적합도는 스트리밍·화상회의·게임 서비스의 공개 권장 대역폭을 기준으로 한 절대 속도 판정이며, 향후 실측 데이터가 축적되면 지역·통신사 평균 비교를 제공할 예정입니다.
연결 하나로는 빠른 회선을 다 채우지 못합니다. 데이터를 보내고 받았다는 확인을 주고받는 구조라, 서버가 멀수록 한 연결이 한 번에 보낼 수 있는 양에 한계가 생깁니다. 회선은 여유로운데 연결 하나가 그 여유를 다 쓰지 못하는 상황이 생기는 것입니다.
그래서 다운로드는 연결 다섯 개, 업로드는 세 개를 동시에 엽니다. 연결을 더 늘리면 값이 조금 더 올라갈 수는 있지만, 측정 자체가 회선을 과도하게 점유해 같은 집의 다른 기기를 방해합니다. 다섯 개는 회선을 채우면서도 측정이 끝나면 곧바로 원래대로 돌아오는 선에서 고른 값입니다.
측정 중에는 순간적으로 값이 튀는 구간이 반드시 생깁니다. 다른 기기가 잠깐 데이터를 쓰거나, 무선 구간에 간섭이 끼거나, 서버 쪽 경로가 잠시 붐비는 경우입니다. 평균을 쓰면 이런 한 번의 튐이 전체 결과를 끌어올리거나 끌어내립니다.
중앙값은 값을 크기순으로 늘어놓았을 때 한가운데 있는 값이라, 튄 값 하나가 결과를 좌우하지 못합니다. 핑도 같은 이유로 중앙값을 씁니다. 대신 지터는 값이 얼마나 흔들리는지를 보는 지표이므로, 연속한 응답 시간의 차이를 평균 내어 따로 계산합니다.
측정을 시작하면 처음 몇 초는 실제 회선 속도보다 빠르게 보이는 구간이 있습니다. 앞서 열어 둔 연결이 남아 있거나 중간 장비에 데이터가 미리 쌓여 있으면, 그것이 빠져나가는 동안은 회선이 실제로 낼 수 있는 속도보다 높은 값이 나옵니다. 페이지를 새로고침하고 바로 다시 측정할 때 특히 그렇습니다.
이 구간은 값이 흔들리지 않고 안정적이기까지 해서, 짧게 재고 끝내면 그 값을 최종 결과로 확정하게 됩니다. 그래서 최소 8초는 측정하고, 최근 2초 구간과 그 직전 2초 구간의 중앙값이 서로 5% 이내로 맞아떨어지며 속도가 내려가는 중이 아닐 때만 조기 종료합니다. 최종값도 측정 마지막 4초 구간에서 뽑습니다. 초반 구간을 결과에서 확실히 빼기 위해서입니다.
여러 측정 사이트에서 각각 다른 값이 나오는 것은 정상입니다. 서비스마다 측정 서버의 위치가 다르고, 연결을 몇 개나 여는지, 얼마나 오래 재는지, 어느 구간의 값을 최종값으로 쓰는지가 모두 다르기 때문입니다. 서버가 가까울수록, 연결을 많이 열수록, 짧게 잴수록 값은 높게 나오는 경향이 있습니다.
지연(핑) 값의 차이는 더 큽니다. 회선이 비어 있을 때 재는지, 다운로드로 회선을 채운 상태에서 재는지에 따라 결과가 몇 배까지 달라집니다. 스피드체크는 다운로드를 시작하기 전에 회선이 비어 있는 상태에서 핑을 잽니다. 회선이 꽉 찼을 때의 지연은 성격이 다른 값이라 섞지 않습니다.
그래서 서비스 간 절대값을 비교하는 것보다, 같은 서비스에서 조건을 맞춰 반복 측정한 값의 변화를 보는 편이 훨씬 유용합니다. 공유기를 옮기거나 바꾼 뒤 같은 자리에서 다시 재 보는 식입니다.
브라우저에서 하는 측정이라 기기 성능과 브라우저 상태의 영향을 받습니다. 오래된 기기에서는 회선이 빨라도 그 기기가 처리할 수 있는 한계까지만 나옵니다. 또한 측정은 특정 경로 하나를 따라 이루어지므로, 그 경로가 붐비면 다른 경로를 쓰는 서비스는 멀쩡한데 측정값만 낮게 나올 수 있습니다.
통신사와의 분쟁에 쓰려면 통신사가 정한 측정 조건과 절차를 따로 확인해야 합니다. 이 측정값은 원인을 좁히는 출발점으로는 충분하지만, 그 자체가 계약 이행 여부를 가리는 근거가 되지는 않습니다. 관련 내용은 이용약관에 정리해 두었습니다.
지금은 절대 속도만으로 등급을 판정합니다. 측정 표본이 쌓이면 같은 지역·같은 통신사의 실제 측정값과 비교해 ‘우리 집이 주변보다 느린가’를 알려주는 것이 목표입니다. 그때는 표본 수와 집계 기간을 함께 공개해, 숫자가 어느 정도 신뢰할 만한지 직접 판단할 수 있게 할 계획입니다.