하나의 포트에만 데이터 포트를 잠글 때 여러 동시 FTP 세션 문제에 대한 명확하고 기술적 인 설명은 내가 가장 깊이 알고있는 것입니다. 작동 시간, 작동하지 않음, 권장되지 않는 이유 등
이것은 테스트하지 않았기 때문에 거친 추측 일 것입니다. 직접 시도해보고 놓친 다른 문제가 있는지 확인해야합니다.
수동 포트 범위를 하나의 단일 포트로 제한 할 수 있다고 가정 합니다 . 실제로이 질문 에서 작은 포트 범위가 실제로 사용됨을 알 수 있습니다 . 이론적으로 다중 동시 연결을 지원하려면 로컬 IP, 로컬 포트, 원격 IP, 원격 포트의 고유 한 4 가지 값만 필요합니다 . 이것은 서로 다른 연결을 식별하는 방법입니다.
서버의 포트를 하나의 단일 값으로 잠그면 클라이언트가 사용하는 포트만 남습니다. 클라이언트에 충분한 여유 임시 포트 풀이있는 한 문제가되지 않습니다 . 무거운 NAT를 사용하지 않는 한, 이것에 대해 걱정할 필요가 없습니다. 자, 이것이 순전히 이론적 인 것입니다 경고 : 서버에서 여러 포트를 사용하는 경우, 사용하도록 설정하여 가상의 동시 연결 수를 곱할 수 있습니다number of ports in range
하나의 포트 당 클라이언트 측 연결. 그러나 실제로 지원되지 않는 FTP 클라이언트 구현이 의심 스럽기 때문에 실제로는 발생하지 않습니다. 또한 클라이언트가 이런 식으로 임시 포트를 공유해야하고 새 포트를 열 수 없다면 처리해야 할 훨씬 더 심각한 문제가 있습니다. 따라서 이러한 관점에서 단일 포트를 사용하여 완전히 안전해야합니다.
단일 포트로는 충분하지 않은 이유를 생각해 봅시다 .
우선, 정말 버그가 많은 FTP 서버 구현이 클라이언트 데이터 전송을 식별하는 방법으로 로컬 포트 번호만을 사용하는 상황을 생각 해낼 수있었습니다. 다시 한번, 나는 괜찮은 FTP가 그렇게 할 것이라고 생각하지 않습니다.
실제 문제는 ( 그렇습니다. 위의 모든 것을 주요 위반으로 무시할 수 있습니다 ;-)) 수동 포트 범위는 권한이없는 범위에 있습니다.
즉, 선택한 포트 번호는 자체 예약되어 있지 않으며 실제로는 루트 권한이 필요없는 모든 사용자 프로세스가 FTP 서버보다 먼저이를 가져올 수 있습니다. 선택할 수있는 풍부한 포트 풀이있는 경우 임의의 무료 포트를 가져옵니다. 하나만 사용해야하는데 이미 사용중인 경우 전송을 제대로 처리 할 수 없습니다.
대답이 너무 추론적인 것 같으면 죄송합니다. 솔직히 말해서, 나는 당신이 단일 포트를 사용해서는 안되는 이유를 찾기 위해 열심히 노력 했으며 마지막 비트를 제외하고는 그에 대한 확실한 증거를 생각할 수 없었습니다. 그럼에도 불구하고 흥미롭고 도전적인 질문입니다.