From 699d37c0d6cc46624f6055d96f8c2459da46ab9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=8F=84=ED=98=84?= <101170386+fe-dudu@users.noreply.github.com> Date: Tue, 25 Jun 2024 07:19:07 +0900 Subject: [PATCH] =?UTF-8?q?[ko]=20how=20browsers=20work=20=EC=B5=9C?= =?UTF-8?q?=EC=8B=A0=ED=99=94=20(#21845)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: kinndohyun Co-authored-by: kinndohyun <141594512+kinndohyun@users.noreply.github.com> --- .../ko/web/performance/how_browsers_work/index.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/files/ko/web/performance/how_browsers_work/index.md b/files/ko/web/performance/how_browsers_work/index.md index 57e77c6f86400a..8c649ef64053d4 100644 --- a/files/ko/web/performance/how_browsers_work/index.md +++ b/files/ko/web/performance/how_browsers_work/index.md @@ -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)