TCP는 인터넷에서 가장 일반적으로 사용되는 전송 계층 프로토콜 중 하나입니다. 하지만 TCP는 데이터를 전송할 때 일정한 오버헤드를 발생시키기 때문에, 때로는 불필요한 부담이 될 수 있습니다.
TCP의 주요 오버헤드는 다음과 같습니다.
1. 헤더 오버헤드: TCP는 패킷 헤더를 사용하여 데이터를 전송합니다. TCP 헤더는 송신자 및 수신자의 IP 주소, 포트 번호, 시퀀스 번호, 확인 응답 번호 등의 정보를 포함합니다. 이러한 헤더 정보가 추가되면 데이터 전송 시에 오버헤드가 발생합니다.
2. 연결 설정 및 해제 오버헤드: TCP는 연결 기반 프로토콜입니다. 따라서 송신자와 수신자 간에 연결을 설정하고, 데이터 전송이 완료되면 연결을 해제해야 합니다. 이러한 연결 설정 및 해제 과정에서도 오버헤드가 발생합니다.
3. 느린 시작 및 혼잡 제어 오버헤드: TCP는 데이터 전송 시에 느린 시작 및 혼잡 제어 기법을 사용하여 데이터 전송 속도를 제어합니다. 이러한 기법을 사용하면 데이터 전송이 안정적으로 이루어질 수 있지만, 전송 시간이 느려지는 오버헤드가 발생합니다.
4. ACK 오버헤드: TCP는 데이터 전송 시에 수신자가 받은 데이터를 확인 응답(ACK) 메시지를 보내어 송신자에게 전달합니다. 이러한 ACK 메시지를 전송할 때도 오버헤드가 발생합니다.
이러한 TCP 오버헤드는 일반적으로 매우 작지만, 대용량 데이터를 전송하는 경우 오버헤드가 증가하여 전송 시간을 늘리는 문제가 발생할 수 있습니다. 따라서 TCP를 사용할 때는 적절한 전송 크기와 대역폭, 네트워크 지연 시간 등을 고려하여 최적의 전송 성능을 확보해야 합니다.
업무 중 대용량 실시간 시세를 처리하는 프로세스가 있었다....
"그럼 단건씩 보내는 것보다 묶어서 보내는게 TCP 오버헤드 감소 효과가 있겠네??"
최고의 컨설던트 chatGPT성님에게 질문했다...
[chatgpt 답변]
TCP 오버헤드를 줄이는 방법 중 하나는 여러 작은 데이터 패킷을 보내는 대신, 묶어서 보내는 것입니다. 이렇게 데이터를 패킷화하면 패킷 헤더의 크기는 그대로 유지되지만, 데이터 전송 시에 발생하는 TCP 오버헤드는 줄어들게 됩니다.
예를 들어, 1바이트의 데이터를 전송하는 경우에도 TCP는 패킷 헤더를 추가하므로 전송 비용이 증가합니다. 하지만 1,000바이트의 데이터를 한꺼번에 전송하면 패킷 헤더에 대한 오버헤드는 유지되지만, 전체 데이터 전송 시간은 단일 바이트 전송 시간보다 훨씬 짧아집니다.
따라서, TCP 오버헤드를 줄이기 위해서는 가능한 경우에는 묶어서 보내는 것이 좋습니다. 하지만, 데이터를 너무 많이 묶어서 보낼 경우에는 혼잡 제어가 적용되어 데이터 전송이 느려질 수 있으므로 적절한 크기의 데이터 묶음을 선택하는 것이 중요합니다.
실제로 패킷를 더 묶어서 보내는 것으로 프로그램을 수정했고 확실히 효과가 있었다....YES
Shared Queue란 ??? (0) | 2023.03.08 |
---|---|
프로세스와 쓰레드의 차이 (0) | 2023.03.07 |
Linux Top 커맨드 "RES"의 의미 (0) | 2023.03.06 |