Файловый протокол на основе UDP
От: dimb82  
Дата: 29.11.11 16:56
Оценка:
Для текущего проекта понадобилась следующая функциональность. Имеется файловый сервер. Сервер может располагаться за NAT'ом. Каждый клиент, подключившийся к серверу, может иметь доступ только к одному заданному файлу. То есть каждый клиент работает только со своим файлом. Про файлы других клиентов он знать не должен. Набор операций для работы с файлом — это ReadFile, WriteFile и SetFilePointer. Шифрования трафика не требуется, но желательно, чтобы доступ к файлам осуществлялся по паролю/ключу.

Есть ли в природе известный протокол, который может предоставить требуемую функциональность или хотя бы часть её?
Re: Файловый протокол на основе UDP
От: Temoto  
Дата: 29.11.11 17:04
Оценка: 2 (1)
D>Для текущего проекта понадобилась следующая функциональность. Имеется файловый сервер. Сервер может располагаться за NAT'ом. Каждый клиент, подключившийся к серверу, может иметь доступ только к одному заданному файлу. То есть каждый клиент работает только со своим файлом. Про файлы других клиентов он знать не должен. Набор операций для работы с файлом — это ReadFile, WriteFile и SetFilePointer. Шифрования трафика не требуется, но желательно, чтобы доступ к файлам осуществлялся по паролю/ключу.

D>Есть ли в природе известный протокол, который может предоставить требуемую функциональность или хотя бы часть её?


HTTPS, SFTP; либо IPSec/VPN + любой протокол доступа к файлам: FTP, NFS, Samba (Windows file sharing). Во всех есть средства ограничинения доступа.
Re[2]: Файловый протокол на основе UDP
От: dimb82  
Дата: 29.11.11 17:05
Оценка:
T>HTTPS, SFTP; либо IPSec/VPN + любой протокол доступа к файлам: FTP, NFS, Samba (Windows file sharing). Во всех есть средства ограничинения доступа.

Обязательное требование, чтобы протокол базировался на UDP.
Re: Файловый протокол на основе UDP
От: Аноним  
Дата: 29.11.11 18:33
Оценка:
Здравствуйте, dimb82, Вы писали:


D>Есть ли в природе известный протокол, который может предоставить требуемую функциональность или хотя бы часть её?


нет такого протокола
udp при условиях когда оба учасника за натом — не пробивается, только при условии внешнего какого нибудь STUN сервера

при условии когда один за натом, а другой нет
то проболем нет, банальный sendto/recvfrom + чуть чуть подумать

вообще погуглите форум gamedev, для игровой индустрии всякие велосипеды уже придуманы в виде SDK
наверняка есть какой нибудь велосипед и для файловой передачи

но вообще советую сменить udp на tcp, тогда проблемы с NAT пропадут
да и что там того кода? на 10 строчек
Re[3]: Файловый протокол на основе UDP
От: watch-maker  
Дата: 29.11.11 19:38
Оценка: 2 (1)
Здравствуйте, dimb82, Вы писали:

T>>HTTPS, SFTP; либо IPSec/VPN + любой протокол доступа к файлам: FTP, NFS, Samba (Windows file sharing). Во всех есть средства ограничинения доступа.


D>Обязательное требование, чтобы протокол базировался на UDP.


Ну и используй, как написали, IPSec/VPN + whatever. VPN поможет проложить поверх UDP туннель, через который можно уже передавать трафик с использованием любого удобного протокола.
Re[2]: Файловый протокол на основе UDP
От: Pzz Россия https://github.com/alexpevzner
Дата: 29.11.11 21:12
Оценка:
Здравствуйте, Аноним, Вы писали:

А>но вообще советую сменить udp на tcp, тогда проблемы с NAT пропадут

А>да и что там того кода? на 10 строчек

С чего это они пропадут?
Re[3]: Файловый протокол на основе UDP
От: Pzz Россия https://github.com/alexpevzner
Дата: 29.11.11 21:13
Оценка:
Здравствуйте, dimb82, Вы писали:

T>>HTTPS, SFTP; либо IPSec/VPN + любой протокол доступа к файлам: FTP, NFS, Samba (Windows file sharing). Во всех есть средства ограничинения доступа.


D>Обязательное требование, чтобы протокол базировался на UDP.


Откуда такое требование?
Re: Файловый протокол на основе UDP
От: Pzz Россия https://github.com/alexpevzner
Дата: 29.11.11 21:14
Оценка:
Здравствуйте, dimb82, Вы писали:

D>Для текущего проекта понадобилась следующая функциональность. Имеется файловый сервер. Сервер может располагаться за NAT'ом. Каждый клиент, подключившийся к серверу, может иметь доступ только к одному заданному файлу. То есть каждый клиент работает только со своим файлом. Про файлы других клиентов он знать не должен. Набор операций для работы с файлом — это ReadFile, WriteFile и SetFilePointer. Шифрования трафика не требуется, но желательно, чтобы доступ к файлам осуществлялся по паролю/ключу.


Снаружи за NAT без помощи вспомогательного сервера не придешь. Чего этот сервер делает — пропускает через себя весь траффик или помогает проходить NAT — это отдельный вопрос.
Re[2]: Файловый протокол на основе UDP
От: dimb82  
Дата: 30.11.11 03:22
Оценка:
Планируется использовать отдельный сервер и NAT Traversal. Но это будет конечная фаза проекта, и, возможно, эту часть буду делать не я. От меня пока требуется реализовать требуемую функциональность на базе UDP безо всех сетевых наворотов, связанных с NAT.

В конечном виде должно быть примерно как у TeamViewer. То есть запускаем нашу программу на одном компьютере. Получаем адрес вида 999 999 999 и пароль. Имея этот адрес и пароль, другой компьютер подключается к нам и работает с конкретным файлом (пишет/читает).


D>>Для текущего проекта понадобилась следующая функциональность. Имеется файловый сервер. Сервер может располагаться за NAT'ом. Каждый клиент, подключившийся к серверу, может иметь доступ только к одному заданному файлу. То есть каждый клиент работает только со своим файлом. Про файлы других клиентов он знать не должен. Набор операций для работы с файлом — это ReadFile, WriteFile и SetFilePointer. Шифрования трафика не требуется, но желательно, чтобы доступ к файлам осуществлялся по паролю/ключу.


Pzz>Снаружи за NAT без помощи вспомогательного сервера не придешь. Чего этот сервер делает — пропускает через себя весь траффик или помогает проходить NAT — это отдельный вопрос.
Re[4]: Файловый протокол на основе UDP
От: dimb82  
Дата: 30.11.11 03:26
Оценка:
D>>Обязательное требование, чтобы протокол базировался на UDP.

Pzz>Откуда такое требование?


Требование в техническом задание. В дальнейшем для обхода NAT будет использоваться NAT Traversal. Но, скорее всего, сетевые навороты для работы с NAT, буду реализовывать не я, и будет это в самом конце проекта. От меня пока требуется реализовать требуемую функциональность на базе UDP без учёта проблем, связанных с NAT.
Re: Файловый протокол на основе UDP
От: LuciferSingapore Россия  
Дата: 30.11.11 03:32
Оценка: 2 (1)
Здравствуйте, dimb82, Вы писали:

http://www.codeproject.com/KB/IP/udt.aspx
http://code.google.com/p/reliabletransfer/
Re: Файловый протокол на основе UDP
От: мыщъх США http://nezumi-lab.org
Дата: 30.11.11 06:10
Оценка: 2 (1)
Здравствуйте, dimb82, Вы писали:


D>Есть ли в природе известный протокол, который может предоставить требуемую функциональность или хотя бы часть её?

интересный вопрос. еще бы и требовая к. потому как навскидку решение -- пробить тоннель на tcp over udp (есть готовые имплементации) и натянуть на него любой из уже обозначенных протоколов. самому писать ничего не потребуется. оверхид, конечно, будет, но не такой чтобы слишком. получается что в IP кладется UDP, а в него TCP. из плюсов можно отметить прозрачность тоннеля и надежность (т.к. это все-таки TCP, только завернутый в UDP, то доставка гарантируется и проблема потерь пакетов вышестоящий протокол не парит)

есть так же ftp на udp (готовые) без TCP-тоннелей.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[5]: Файловый протокол на основе UDP
От: Pzz Россия https://github.com/alexpevzner
Дата: 30.11.11 09:26
Оценка: 3 (1)
Здравствуйте, dimb82, Вы писали:

D>Требование в техническом задание. В дальнейшем для обхода NAT будет использоваться NAT Traversal. Но, скорее всего, сетевые навороты для работы с NAT, буду реализовывать не я, и будет это в самом конце проекта. От меня пока требуется реализовать требуемую функциональность на базе UDP без учёта проблем, связанных с NAT.


Сделаите IP tunnelling over UDP, а поверх него гоняйте обычные протоколы. Иначе вы потонете. Вы не знаете, во что ввязываетесь
Re[3]: Файловый протокол на основе UDP
От: Pzz Россия https://github.com/alexpevzner
Дата: 30.11.11 09:27
Оценка:
Здравствуйте, dimb82, Вы писали:

D>В конечном виде должно быть примерно как у TeamViewer. То есть запускаем нашу программу на одном компьютере. Получаем адрес вида 999 999 999 и пароль. Имея этот адрес и пароль, другой компьютер подключается к нам и работает с конкретным файлом (пишет/читает).


Адресов вида 999 999 999 не бывает
Re[6]: Файловый протокол на основе UDP
От: dimb82  
Дата: 30.11.11 16:29
Оценка:
Pzz>Сделаите IP tunnelling over UDP, а поверх него гоняйте обычные протоколы. Иначе вы потонете. Вы не знаете, во что ввязываетесь

Большое спасибо за совет. Я на самом деле не знаю, во что ввязываюсь Поэтому и спрашиваю совета у специалистов, чтобы потом с нуля всё не переделывать.
Re[4]: Файловый протокол на основе UDP
От: dimb82  
Дата: 30.11.11 16:31
Оценка:
Pzz>Адресов вида 999 999 999 не бывает

Это не IP адрес. В TeamViewer это называется ID. Имея пару ID/пароль можно подсоединиться к другому компьютеру. У нас должно быть что-то вроде этого.
Сервер TeamViewer преобразует этот ID уже в реальный адрес.
Re[7]: Файловый протокол на основе UDP
От: Pzz Россия https://github.com/alexpevzner
Дата: 30.11.11 16:40
Оценка: 2 (1)
Здравствуйте, dimb82, Вы писали:

Pzz>>Сделаите IP tunnelling over UDP, а поверх него гоняйте обычные протоколы. Иначе вы потонете. Вы не знаете, во что ввязываетесь


D>Большое спасибо за совет. Я на самом деле не знаю, во что ввязываюсь Поэтому и спрашиваю совета у специалистов, чтобы потом с нуля всё не переделывать.


На самом деле, вы замучаетесь делать NAT traversal, это весьма нетривиально и содержит много тонкостей и подводных камней.
Re[2]: Файловый протокол на основе UDP
От: std.denis Россия  
Дата: 07.12.11 12:02
Оценка:
и еще может http://rsdn.ru/forum/network/4045228.aspx
Автор: Ifrin
Дата: 19.11.10
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.