TCP 대기(지연) 시간
대기시간이란?
대기 시간이란 일반적으로 사용자가 요청을 한 시점부터 해당 사용자에게 요청에 대한 응답을 받기 까지 걸리는 시간을 말한다(하나의 패킷이 출발지에서 도착지까지 가는데 걸리는 시간)
예를들어 첫번째 요청에서 14KB 만큼의 DNS 조회, TCP handshake, 보안 TLS 협상 등의 과정을 거치기 때문에 대기 시간이 길다. 이후 후속 요청은 서버에 대한 연결이 이미 설정이 되어 대기 시간이 줄어든다.
즉, 대기시간은 네트워크나 인터넷 연결의 지연 시간을 나타낸다.
대기시간이 짧다 ⇒ 지연이 없거나 거의 없음
대기시간이 길다 ⇒ 지연이 많다
한 개의 자원에 대한 대기 시간은 사소하지만, 웹사이트의 경우 여러 개의 요청을 포함(여러개의 CSS, Script, 미디어 파일에 대한 요청)한다. 이런 요청이 개수와 크기가 커질수록 높은 대기 시간이 사용자 경험에 미치게 된다.
네트워크 스로틀링
throttling : 목을 조르는 행위 ⇒ 무언가의 출력을 조절한다.
(밸브를 조절하는 광경을 연상)
개발자 도구를 활용하여 저대역폭 네트워크로 전환하면 대기 시간을 모방할 수 있다.

스로틀링 옵션을 통해 2G, 3G 혹은 다른 대역폭으로 전환할 수 있으며, 다운로드 속도, 업로드 속도, 최소 대기 시간, 데이터 패킷을 보내는 데 필요한 최소 타입이 포함이 된다.
네트워크 시간 측정
각 요청이 완료되는데 소요된 시간도 확인이 가능하다

위 사진은 267.5Kb인 SVG 이미지를 다운받는데 소요 된 네트워크 시간의 값을 나타낸다
Blocked : 요청이 대기열에 있을 때 네트워크 연결을 기다리는 시간. 동시에 너무 많은 HTTP 연결을 맺으려 할 때 발생하며 다른 연결이 해제될 때까지 다운로드를 하지 못하는데 이를 자원이 차단되었다고 한다.
DNS resolution : 도메인 이름을 IP주소로 변환하는 과정. 이러한 기능을 하는 서버를 DNS Resolver라고 부른다.
Connecting : TCP handshake를 완료하는데 걸린 시간. DNS처럼 필요로 하는 서버의 연결 개수가 많을수록 서버와의 연결을 생성하는데 걸리는 시간 또한 늘어난다.
TLS setup : TLS handshake 보안 연결을 수립하는데 걸린 시간
TLS(Transport Layer Security) handshake : 웹 브라우저와 서버 간의 통신 데이터를 암호화 하는 것.
TLS가 하는 일?
1.암호화 : 전송되는 데이터를 숨긴다
2.인증 : 정보를 교환하는 당사자가 요청된 당사자임을 보장한다
3.무결성 : 데이터가 위조/변조되지 않았는지 확인한다
TLS를 사용하는 웹사이트를 접속하면 Client-Serve간에 TLS Handshake가 시작된다
여기서 데이터를 주고 받기 전, 서버의 무결성을 확인하고 대칭키를 전달하는 과정 ⇒ TLS Handshake
* HTTPS는 HTTP 프로토콜 상위에서 TLS 암호화를 구현한 것.(HTTPS를 사용하는 웹사이트 ⇒ TLS 암호화 사용)
Sending : HTTP 요청을 서버로 전송하는데 걸린 시간
Waiting : 서버가 응답을 완료하는데 걸린 시간.
Receiving : 자원을 다운로드 받는 데 걸린 시간. (이미지가 캐싱되었다면 즉각적으로 완료될 수 있고, 스로틀링이 걸렸다면 77초가 걸렸을 수도 있다)
패킷손실
정의
네트워크에서 출발지와 목적지간에 라우팅 되는 데이터 단위
패킷의 구성 요소
헤더, 페이로드, 트레일러 세 부분으로 구성이 된다.
우편 패키지로 연상을 해볼때
* 헤더 ⇒ 상자와 봉투
: 소스 주소, 대상 주소, 프로토콜 및 패킷 번호가 포함
(패킷의 출처를 나타내는 소스 주소와, 수신 IP주소를 나타내는 대상 주소, 프로토콜 및 패킷 번호가 포함된다.)
* 페이로드 ⇒ 내용
: 패킷에 의해 전송되는 실제 데이터
* 트레일러 ⇒ 서명
: 네트워크 유형에 따라 다른데, 일반적인 트레일러는 수신 장치에 패킷 끝까지 도달했음을 알리는 CRC(Cyclic Redundancy Check)가 있다
CRC(cyclic redundancy check)는 네트워크 등을 통하여 데이터를 전송할 때 전송된 데이터에 오류가 있는지를 확인하기 위한 체크값을 결정하는 방식이다
네트워크 패킷 손실의 원인과 해결방법
네트워크에서 패킷 손실이 발생하면, 송신 측이 전송한 패킷이 수신 측에서 도착하지 않는 현상을 말한다.
이는 네트워크에서 전송되는 모든 데이터에 영향을 미치며, 인터넷, 이더넷, 무선 네트워크 등의 모든 네트워크에서 발생할 수 있다.
패킷 손실 원인
1. 네트워크 혼잡
(너무 많은 사람들이 한 번에 네트워크 연결을 사용하는 경우) 네트워크가 트래픽으로 정체되어 최대 용량에 도달할 때, 네트워크 장비에서 처리할 수 없는 많은 양의 데이터가 발생한다. 패킷은 전달된 순서를 기다리지만 연결이 너무 느려 더 이상 패킷을 저장할 수 없는 경우 네트워크 속도에 대처하기 위해 손실이 일어난다.
(오늘날의 애플리케이션은 데이터를 자동으로 재전송하거나, 전송 속도를 늦춰 손실된 패킷을 정상적으로 처리가 가능)
2. 스위치 및 라우팅 오류
패킷이 잘못된 경로로 전송되어 유실 가능
3. 보안 위협
네트워크에 대한 악성 바이러스 공격이 원인이 될 수 있다. 네트워크에 무단 액세스하고 서비스 거부를 실행하여 라우터의 로드가 증가하고 결과적으로 네트워크가 실패하도록 한다
4. 물리적인 손상
네트워크 케이블이나 장비에서 손상이 발생하면 패킷이 손실 가능
패킷 손실이 발생하면?
데이터 전송 속도가 느려지거나, 데이터 일부가 유실되어 전체적인 데이터 무결성에 문제가 생길 수 있다.
이런 현상은 인터넷 브라우저에서 웹 페이지 로딩이 지연되거나, 음성 통화나 비디오 통화에서 오디오와 영상이 깨져서 전달이 된다.
패킷 손실을 최소화하기 위한 방법
1. 물리적 연결 확인
2. 시스템 재시작
3. 소프트웨어 업데이트
또한
QoS(Quality of Service - 서비스 품질)솔루션을 고려해 한정된 네트워크 용량으로 트래픽을 제어하여 네트워크 대역폭을 조절하거나, 패킷의 우선순위를 정해 데이터 전송을 안정적으로 만든다
'주니어 개발자의 Desire! > NetWork' 카테고리의 다른 글
| 3, 4-way handshake / 패킷 교환 방식 (0) | 2023.04.08 |
|---|---|
| TCP/IP 4 Layer 응용 계층 (0) | 2023.03.25 |
| OSI 7 layer에 알아보자 (0) | 2023.03.19 |