이 문서는 Google Cloud Translation API를 사용해 자동 번역되었습니다.
어떤 문서는 원문을 읽는게 나을 수도 있습니다.
TCP 창 크기: TCP가 네트워크 조건에 적응하는 방법
TCP(전송 제어 프로토콜)는 인터넷 프로토콜(IP) 제품군에서 가장 널리 사용되는 프로토콜입니다. 네트워크에 연결된 장치 간에 데이터를 안정적으로 전송할 책임이 있습니다. 이를 달성하기 위해 TCP는 혼잡 및 대기 시간과 같은 네트워크 조건에 적응하여 데이터 전송을 최적화합니다. TCP가 이를 수행하는 한 가지 방법은 TCP 창 크기를 사용하는 것입니다. 이 기사에서는 TCP 창 크기가 무엇인지, 어떻게 작동하는지, 네트워크 성능을 향상시키기 위해 어떻게 조정할 수 있는지 살펴보겠습니다.
TCP 창 크기는 승인을 받기 전에 장치 간에 전송할 수 있는 데이터의 양을 결정하는 값입니다. 즉, 발신자에게 더 이상 데이터 전송을 중지하라고 알리기 전에 수신자가 수락할 수 있는 데이터의 양입니다. TCP 창 크기는 TCP 핸드셰이크 프로세스 중에 발신자와 수신자 간에 협상됩니다. 바이트로 표현되며 TCP 헤더에 저장됩니다.
보낸 사람이 받는 사람에게 10,000바이트의 데이터를 전송하려고 한다고 가정해 보겠습니다. 보낸 사람은 TCP 창 크기가 1,500바이트인 데이터 세그먼트를 보내는 것으로 시작합니다. 이는 수신자가 승인을 보내기 전에 최대 1,500바이트의 데이터를 수락할 수 있음을 의미합니다. 수신자가 첫 번째 세그먼트를 확인하면 송신자는 TCP 창 크기가 1,500바이트인 다른 세그먼트를 보냅니다. 이 프로세스는 10,000바이트의 데이터가 모두 전송될 때까지 계속됩니다. 그런 다음 수신자는 모든 데이터가 수신되었음을 확인하기 위해 발신자에게 최종 승인을 보냅니다.
TCP 창 크기는 고정된 값이 아닙니다. 데이터 전송을 최적화하기 위해 발신자와 수신자가 조정할 수 있습니다. 보낸 사람이 데이터 세그먼트를 보낼 때 일정 시간 내에 승인을 받을 것으로 예상합니다. 보낸 사람이 해당 시간 내에 승인을 받지 못하면 세그먼트가 손실된 것으로 간주하고 세그먼트를 다시 전송합니다. 이로 인해 네트워크 정체가 발생하고 데이터 전송 속도가 느려질 수 있습니다.
혼잡을 피하기 위해 TCP는 발신자와 수신자 간의 왕복 시간(RTT)을 모니터링합니다. RTT는 송신자가 세그먼트를 보내고 수신자가 수신하고 수신자가 확인하는 데 걸리는 시간입니다. TCP는 RTT를 사용하여 TCP 창 크기를 동적으로 조정합니다. RTT가 짧으면 네트워크가 혼잡하지 않다는 의미이며 TCP는 더 많은 데이터를 전송할 수 있도록 TCP 창 크기를 늘립니다. RTT가 길면 네트워크가 혼잡하다는 의미이며 TCP는 혼잡을 피하기 위해 TCP 창 크기를 줄입니다.
네트워크 성능을 향상시키기 위해 TCP 창 크기를 조정하는 방법에는 여러 가지가 있습니다. 한 가지 방법은 최대 세그먼트 크기(MSS)를 늘리는 것입니다. MSS는 단일 세그먼트에서 전송할 수 있는 최대 데이터 양입니다. MSS를 높이면 각 세그먼트에서 더 많은 데이터를 전송할 수 있으므로 전송해야 하는 세그먼트 수를 줄이고 전송 효율성을 높일 수 있습니다.
MSS를 늘리려면 네트워크 인터페이스의 최대 전송 단위(MTU)를 수정해야 합니다. MTU는 네트워크를 통해 전송할 수 있는 가장 큰 패킷 크기입니다. MTU는 네트워크 하드웨어와 네트워크 프로토콜에 의해 결정됩니다. 대부분의 네트워크 인터페이스에는 1,500바이트의 기본 MTU가 있습니다. MTU를 더 큰 값(예: 9,000바이트)으로 늘려 MSS를 늘릴 수 있습니다. Linux에서 이를 수행하려면 ifconfig
명령을 사용하여 네트워크 인터페이스의 MTU를 설정할 수 있습니다.
TCP 창 크기를 조정하는 또 다른 방법은 TCP 버퍼 크기를 수정하는 것입니다. TCP는 버퍼를 사용하여 전송되었지만 아직 확인되지 않은 데이터를 저장합니다. TCP 버퍼 크기를 늘리면 버퍼에 더 많은 데이터를 저장할 수 있으므로 재전송 횟수를 줄이고 네트워크 성능을 향상시킬 수 있습니다.
TCP 버퍼 크기를 수정하려면 TCP 구성 파일을 편집해야 합니다. Linux에서 TCP 구성 파일은 /etc/sysctl.conf
에 있습니다. 다음 매개변수의 값을 수정하여 TCP 버퍼 크기를 늘릴 수 있습니다.
tcp_rmem
: This parameter defines the minimum, default, and maximum size of the receive buffer.
tcp_wmem
: 이 매개변수는 전송 버퍼의 최소, 기본 및 최대 크기를 정의합니다.
tcp_mem
: 이 매개변수는 TCP 버퍼에서 사용할 수 있는 총 메모리 양을 정의합니다.
TCP 창 크기는 TCP 혼잡 제어 메커니즘의 중요한 구성 요소입니다. 이를 통해 TCP는 네트워크 조건에 적응하고 데이터 전송을 최적화할 수 있습니다. TCP 창 크기, MSS 및 TCP 버퍼 크기를 조정하면 네트워크 성능이 크게 향상될 수 있습니다. 네트워크 상태를 모니터링하고 이에 따라 TCP 창 크기를 조정하여 안정적인 데이터 전송을 보장하십시오.