Skip to content

Commit

Permalink
[ko] how browsers work 최신화 (#21845)
Browse files Browse the repository at this point in the history
Co-authored-by: kinndohyun <[email protected]>
Co-authored-by: kinndohyun <[email protected]>
  • Loading branch information
3 people committed Jun 24, 2024
1 parent 52f66ee commit 699d37c
Showing 1 changed file with 7 additions and 7 deletions.
14 changes: 7 additions & 7 deletions files/ko/web/performance/how_browsers_work/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,19 +81,19 @@ HTTPS를 이용한 보안성있는 연결을 위해서는 또 다른 "핸드셰

위 예제에서, 요청은 확실히 14kb보다 작습니다. 하지만 아래에서 설명하는 것처럼 구문 분석되는 중에 브라우저가 링크를 만날 때까지 링크가 걸린 자원들은 요청되지 않습니다.

### TCP 슬로우 스타트 (TCP Slow Start) / 14kb rule
### 혼잡 제어(Congestion control) / TCP 슬로우 스타트 (TCP Slow Start)

첫 응답 패킷은 14kb입니다. 이는 네트워크 통신의 속도를 조절하는 알고리즘인 {{glossary('TCP Slow Start', 'TCP 슬로우 스타트')}}에 의해 정해진 것입니다. 슬로우 스타트는 네트워크의 최대 대역폭을 파악할 수 있을 때까지 점진적으로 데이터의 전송량을 증가시킵니다.
TCP 패킷은 전송 중에 세그먼트로 분할됩니다. TCP는 패킷의 순서를 보장하기 때문에 서버는 일정 개수의 세그먼트를 전송한 후 클라이언트로부터 ACK 패킷 형태로 승인을 받아야 합니다.

{{glossary('TCP Slow Start', 'TCP 슬로우 스타트')}} 방식에 따라, 첫 패킷을 받고난 이후에 서버는 다음 패킷의 사이즈를 두 배인 28kb로 늘립니다. 뒤 이은 패킷의 크기도 미리 정의한 임계치에 다다르거나, 혼잡의 징후가 나타나기 전까지 2배씩 커집니다.
서버가 각 세그먼트마다 ACK을 기다린다면 클라이언트로부터 빈번한 ACK이 발생하고, 이는 저부하 네트워크 상황에서도 전송 시간을 증가시킬 수 있습니다.

![TCP slow start](congestioncontrol.jpg)
반면, 한 번에 너무 많은 세그먼트를 보내면 사용량이 많은 네트워크는 클라이언트가 세그먼트를 받을 수 없어 계속 ACK만 응답하게 되고, 서버는 세그먼트를 계속 재전송해야 하는 문제가 발생할 수 있습니다.

첫 페이지의 로딩에 관련해서 14kb 법칙을 들어본적이 있나요? 초기 응답의 크기가 14kb인 이유는 TCP 슬로우 스타트 때문입니다. 그리고 웹 최적화를 할 때 초기 14kb 응답을 염두해야하는 것도 이 때문입니다. TCP 슬로우 스타트는 혼잡을 피하기 위해서 네트워크의 용량에 적당한 전송 속도를 찾고자 점진적으로 속도를 높여나갑니다.
전송되는 세그먼트 수의 균형을 맞추기 위해 {{glossary('TCP Slow Start', 'TCP 슬로우 스타트')}} 알고리즘을 사용하여 최대 네트워크 대역폭이 결정될 때까지 전송되는 데이터의 양을 점차적으로 늘리고 네트워크 부하가 높은 경우 전송되는 데이터의 양을 줄입니다.

### 혼잡 제어(Congestion control)
전송할 세그먼트 수는 혼잡 윈도우(CWND)의 값에 의해 제어되며, 이는 1, 2, 4, 또는 10 MSS(MSS는 이더넷 프로토콜 상에서 1500 바이트)로 초기화될 수 있습니다. 이 값은 클라이언트가 ACK으로 보내야 하는 바이트 수입니다.

서버가 TCP 패킷으로 데이터를 보내면서, 사용자의 클라이언트는 확인 응답(acknowledgements, ACKs)을 보내면서 데이터의 수신을 확인해줍니다. 연결은 하드웨어나 네트워크 상태에 따라서 제한된 용량만을 가지고 있습니다. 만약 서버가 패킷을 너무 빠르게 보내게 되면, 그 패킷들은 무시될 것입니다. 즉 확인 응답이 없을 것입니다. 서버는 이를 누락된 확인 응답으로 파악합니다. 혼잡 제어 알고리즘은 보내진 패킷의 흐름과 확인 응답을 바탕으로 전송 속도를 결정합니다.
ACK이 수신되면 혼잡 윈도우(CWND)의 값이 두 배로 증가하여 서버는 다음에 더 많은 세그먼트를 보낼 수 있게 됩니다. 반대로 ACK이 수신되지 않으면 혼잡 윈도우(CWND)의 값이 반으로 줄어듭니다. 이러한 메커니즘은 너무 많은 세그먼트를 보내거나 너무 적게 보내는 것 사이의 균형을 맞추게 합니다.

## 구문 분석(Parsing)

Expand Down

0 comments on commit 699d37c

Please sign in to comment.