멀티플 동시 연결 이주는 장점 중 하나는 비둘기와 브라이언이 언급 한 동일한주의 사항에 따라 TCP 수신 창이 너무 작아지는 문제를 더 잘 극복 할 수 있다는 것입니다.
이 원리는 bandwidth delay product입니다. (자세한 설명은 here입니다.)
간략한 요약 : 대기 시간이 긴 고 대역폭 환경에서 TCP와 같은 안정적인 통신은 주어진 시간에 비행중인 데이터의 양에 의해 제한되는 경우가 많습니다. 대역폭 지연 제품이 각 연결에 개별적으로 적용되므로 여러 연결이이 문제를 해결하는 한 가지 방법입니다.
자세한 내용은 다음을 고려하십시오. 초당 10^8 비트 (10 메가 비트/초)의 대역폭과 100ms (0.1 초)의 왕복 지연이 있습니다. 따라서 첫 번째 비트의 확인 응답이 보낸 사람에게 돌아 오기 전에 최대 10^7 비트 (10 메가 비트 = ~ 1.25MB)의 데이터가 전송 될 수 있습니다.
이것은 OS의 TCP 스택에 따라 다르지만 일반적으로 TCP 수신 창 크기는 64KB입니다. 이는 엔드 투 엔드 대역폭을 최대한 활용할 수있을만큼 너무 작습니다. 일단 64kbytes (512kbits)의 데이터가 보내지면, 송신 프로세스는 수신자로부터 어떤 데이터가 소비되었다는 것을 알리는 창 업데이트를 기다렸다가 더 이상의 데이터를 유선에 전송합니다.
여러 개의 TCP 세션을 열면 각 TCP 세션마다 고유 한 보내기/받기 버퍼가 있다는 사실로이 문제를 해결할 수 있습니다.
물론 인터넷에서 TCP 창 크기, 경합 등으로 인해 실제 사용 가능한 종단 간 대역폭을 결정하기가 어렵습니다. 몇 가지 샘플 수치를 제공 할 수 있다면 더 많은 것을 돕는다.
다른 옵션은 소켓을 만들 때 OS 설정을 사용하여 전체적으로 또는 소켓 옵션을 사용하여 소켓별로 기본 수신 창을 설정하는 것입니다.
내 응용 프로그램은 응용 프로그램 수준의 대화가 필요없이 데이터를 단방향으로 전송합니다. 데이터를 원격 소켓으로 밀어 넣기 만하면됩니다. – JtR
나는 아마 여기서 외출 할 것이지만, 그렇게 어려운 것이 아니라면 가장 확실한 방법은 재판을 준비하는 것이다. 그것은 가능성이 거기에있는 것처럼 확실히 들린다. 주어진 한 가지 방법이다. – dove
안정적인 (연결 기반) 소켓을 찾으십니까? 그렇지 않은 경우 TCP가 아닌 UDP를 사용하는 것이 도움이 될 수 있습니까? – AshtonKJ