인터넷 성능 결정하는 지표로는 속도, 지연, 손실률이 있다. 아래에서 더 자세하게 살펴볼 예정이니, 일단 간단하게 설명하면 다음과 같다.
속도: 대역폭, 비트전송률(단위 시간당 비트를 얼마나 보내는가) 단위는 일반적으로 bps (bits per second)이지만 바이트로 표현될 때도 있기 때문에 잘 구분해야 함('b'가 소문자면 비트, 대문자면 바이트). 측정 방법은 수 MB의 파일을 전송해서 시간당 몇 비트 또는 바이트를 받았는지 확인함.
지연 단방향 지연시간 또는 왕복 지연 시간(= 실제 사용자 체감 시간)을 측정함. 일반적으로 갈 때와 올 때의 경로가 다를 수 있기 때문에 단방향을 따로 구분하는 것. 측정 대상은 종단간(ping), 구간별(traceroute)임.
손실률 중요함. n개의 패킷을 보냈는데 몇 개의 패킷이 손실됐는지. 이메일이나 파일같이 100% 받아야 하는 경우, 만약 10% 손실이 되는 구간이 있다면 데이터를 보낼 때 110%를 전송하여 100% 받을 수 있도록 할 수 있음. 하지만 그만큼 더 낭비가 될 수 있고 시간도 느려짐.
링크의 대역폭 (물리적 용량) 링크의 대역폭은 네트워크 연결의 물리적 용량을 나타냄. "이더넷 100Mbps 대역폭" = 이더넷 링크의 최대 전송 속도가 100Mbps
두 개의 컴퓨터 사이 대역폭 (병목지점의 대역폭) 여러 개의 링크가 연결된 경로 사이 전송을 봄. 전송 경로 중에서 가장 낮은 대역폭을 가진 링크, 속도가 제일 느린 구간을 측정함. 속도는 링크의 오류율, 전파지연, 라우터 큐잉시간 등의 변수, 전송 프로토콜과 오류 제어 방식에 의해 변동될 수 있음!
지연시간 (Latency)
전송시간(transmission delay): 1개의 비트가 컴퓨터(또는 스마트폰)에서 전송되는 시간 내 컴퓨터가 1Kbps 네트워크 카드를 갖고 있을 때 이를 뒤집으면 1/Kbps, 즉 1비트 전송시 0.0001초(1ms) 걸림 -> "내 컴퓨터가 갖고 있는 네트워크 카드의 대역폭에 따라서 결정됨"
전파시간(propagation delay): 컴퓨터와 컴퓨터 사이, 거리에 따른 시간 전파지연 시간 = 거리 / 속도 ex. 구리선에서 1비트가 1초에 2*10^8 meter 속도로 이동할 때, 1000km 떨어진 두 컴퓨터 사이 1비트의 이동시간, 즉 전파지연 시간을 구하면 100km / 2*10^9 meter/s = 5ms가 나옴 -> 거리가 변수!
큐잉시간(queueing delay): 컴퓨터 네트워크 카드 + CPU(NPU), 큐에서 얼마나 기다리는가 클라이언트, 서버, 라우터에서 발생함. 무선 LAN에서는 발생하지 않음! (네트워크 카드가 있다면 오버플로우가 다 걸릴 수 있음. 선은 아니고...)
처리시간(processing delay): 컴퓨터 네트워크 카드 + CPU(NPU) 패킷 헤더 20바이트 분석하는 시간! 경로 테이블 찾는 시간도 포함됨.
내 컴퓨터가 딱 내보내는 순간까지가 전송, 내 컴퓨터를 떠나는 순간부터 서버까지 가는게 전파라고 생각하면 됨
손실률
패킷 단위 전송을 가정하여 측정한다. 예를 들어 100개의 패킷을 보냈을 때 99개의 패킷이 전송에 성공했다면 손실률은 1%이다.
손실률은 여러 가지 도구로 측정할 수 있는데, 그 중 가장 간단한 건 "ping"이다. ping www.~~로 확인 가능!
ping www.google.com
웹 사이트 성능 측정
지연시간 측정 브라우저 내 개발자 도구를 이용해서 웹 페이지가 뜨는 시간, 즉 web page load time(PLT)를 측정할 수 있음 모든 브라우저에 다 포함되어 있는 API!
TCP 연결 마찬가지로 개발자 도구를 통해 웹 페이지 1개가 얼마나 많은 객체와 TCP 연결을 사용하는지 확인해 볼 수 있음
브라우저 최적화
Document-aware optimization (CSS, JS, html 등의 우선순위)
예측 최적화 사용자가 클릭하는 사이트를 다 기록하여 자주 가는 곳의 DNS를 미리 함 예를 들어 학교 홈페이지에서 "공지사항" 부분을 자주 본다면, 관련 domain name을 미리 룩업! (Domain Name Lookup) IP 주소를 빨리 알면 바로 보낼 수 있기 때문
자원 미리 가져오기
DNS 미리 하기
TCP 연결 미리 하기 TCP 연결 자체가 딜레이가 걸리기 때문에 미리 하거나 연결 수를 줄이는게 좋음
웹 페이지 렌더링 미리 하기 요즘은 이미지, 동영상 등 렌더링하는 객체 아주 많기 때문에 아주 느림. 하지만 가져온 걸 미리 백그라운드에서 렌더링하면 출력하는 속도가 빨라질 수 있음