11장. RHEL for Real Time의 소켓 옵션


실시간 소켓은 UNIX 도메인 및 루프백 장치와 같은 두 프로세스 간 또는 네트워크 소켓과 같은 다른 시스템 간의 데이터 전송 메커니즘입니다.

TCP(Transmission Control Protocol)는 가장 일반적인 전송 프로토콜이며, 종종 일정한 통신이 필요하거나 우선 순위가 낮은 환경에서 소켓을 공동 배치하는 서비스에 대해 일관된 짧은 대기 시간을 달성하는 데 사용됩니다.

새로운 애플리케이션, 하드웨어 기능 및 커널 아키텍처 최적화를 통해 TCP는 변경 사항을 효과적으로 처리할 수 있는 새로운 접근 방식을 도입해야 합니다. 새로운 접근 방식은 불안정한 프로그램 동작을 유발할 수 있습니다. 기본 운영 체제 구성 요소가 변경되면 프로그램 동작이 변경되므로 주의해서 처리해야 합니다.

TCP에서 이러한 동작의 한 예는 작은 버퍼 전송 지연입니다. 이를 통해 하나의 네트워크 패킷으로 전송할 수 있습니다. TCP에 작은 쓰기를 버퍼링하고 한 번에 모두 보내는 것은 일반적으로 잘 작동하지만 대기 시간을 만들 수도 있습니다. 실시간 애플리케이션의 경우 TCP_NODELAY 소켓 옵션은 지연을 비활성화하고 준비된 즉시 작은 쓰기를 보냅니다.

데이터 전송에 대한 관련 소켓 옵션은 TCP_NODELAYTCP_CORK 입니다.

11.1. TCP_NODELAY 소켓 옵션

TCP_NODELAY 소켓 옵션은 나글의 알고리즘을 비활성화합니다. setsockopt sockets API 함수를 사용하여 TCP_NODELAY 를 구성하면 즉시 개별 패킷으로 여러 개의 작은 버퍼 쓰기가 전송됩니다.

보내기 전에 연속 패킷을 빌드하여 여러 논리 관련 버퍼를 단일 패킷으로 전송하면 대기 시간과 성능이 향상됩니다. 또는 메모리 버퍼가 논리적으로 관련이 있지만 연속적이지 않은 경우 I/O 벡터를 만들고 TCP_NODELAY 가 활성화된 소켓에서 writev 를 사용하여 커널에 전달할 수 있습니다.

다음 예제에서는 setsockopt 소켓 API를 통해 TCP_NODELAY 를 활성화하는 방법을 보여줍니다.

int one = 1;
setsockopt(descriptor, SOL_TCP, TCP_NODELAY, &one, sizeof(one));
참고

TCP_NODELAY 를 효과적으로 사용하려면 작고 논리적으로 관련된 버퍼 쓰기를 피하십시오. TCP_NODELAY 를 사용하면 작은 쓰기를 통해 TCP가 개별 패킷으로 여러 버퍼를 보내 전체 성능이 저하될 수 있습니다.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동