Share via


TCP/IP 특성

TCP/IP에는 프로토콜이 표준화된 구현 요구 사항에 따라 작동할 수 있도록 하는 특성이 있습니다. 이러한 특성은 성능 저하를 초래하는 개발 선택 항목과 결합할 수 있습니다. 이러한 TCP/IP 특성이 애플리케이션에 미치는 영향은 애플리케이션이 트랜잭션인지 스트리밍인지에 따라 달라집니다.

트랜잭션 애플리케이션은 연결 설정 및 종료에 필요한 오버헤드의 영향을 받습니다. 예를 들어 이더넷 네트워크에 연결이 설정될 때마다 각각 약 60바이트 패킷 3개를 보내야 하며 교환에는 약 1개의 RTT가 필요합니다. 연결이 종료되면 4개의 패킷이 교환됩니다. 이는 각 연결에 대한 것입니다. 연결을 열고 닫는 애플리케이션은 각 발생 시 이러한 오버헤드가 발생하는 경우가 많습니다.

TCP/IP의 또 다른 측면은 연결이 설정될 때마다 발생하는 느린 시작입니다. 느린 시작은 해당 세그먼트의 승인을 받기 전에 보낼 수 있는 데이터 세그먼트 수에 대한 인위적인 제한입니다. 느린 시작은 네트워크 정체를 제한하도록 설계되었습니다. 수신기의 창 크기에 관계없이 이더넷을 통해 연결이 설정되면 느린 시작으로 인해 4KB 전송이 최대 3-4 RTT가 걸릴 수 있습니다.

Nagle 알고리즘이라는 TCP/IP 최적화는 연결에서 데이터 전송 속도를 제한할 수도 있습니다. Nagle 알고리즘은 한 번에 단일 문자를 보내는 텔넷과 같은 소량의 데이터를 보내는 애플리케이션에 대한 프로토콜 오버헤드를 줄이기 위해 설계되었습니다. 헤더가 많고 데이터가 적은 패킷을 즉시 보내는 대신 스택은 계속하기 전에 애플리케이션에서 더 많은 데이터 또는 승인을 기다립니다.

지연된 승인(일반적으로 지연된 ACK라고도 함)은 수신 쪽 애플리케이션에서 반환 데이터가 나올 때 승인을 보다 효율적으로 피기백할 수 있도록 TCP/IP로 설계되었습니다. 아쉽게도 이 데이터가 나오지 않고 송신 측이 승인을 기다리는 경우 송신당 약 200밀리초의 지연이 발생할 수 있습니다.

TCP 연결이 닫히면 닫기를 시작한 노드의 연결 리소스가 TIME-WAIT라는 대기 상태로 전환되어 중복 패킷이 네트워크에 남아 있는 경우 데이터 손상을 방지합니다. 이렇게 하면 양쪽 끝이 연결로 완료됩니다. 이로 인해 애플리케이션이 자주 연결을 열고 닫을 때 RAM 및 포트와 같은 연결당 필요한 리소스가 고갈될 수 있습니다.

지연된 ACK 및 기타 정체 방지 체계의 영향을 받는 것 외에도 스트리밍 애플리케이션은 수신 끝의 너무 작은 기본 수신 창 크기에 의해 영향을 받을 수 있습니다.

애플리케이션 동작

고성능 Windows 소켓 애플리케이션

Nagle 알고리즘