Что: a3fe5e13b94f046837c3bdf1eae794a5a47250ee Когда: 2022-11-26 02:19:01+03:00 ------------------------------------------------------------------------ Темы: bittorrent ------------------------------------------------------------------------ NAT64/DNS64-дружелюбный BitTorrent клиент Прежде об этом мыслей у меня не было, но раз теперь у меня в руках клиент написанный на Go, с довольно простым и понятным кодом, то что мне мешает сделать его NAT64/DNS64-aware? Ведь только BitTorrent меня и останавливал (346e0efce2e89ae14cc328bf433d54c9520aa145) от попыток дома сделать IPv6-only сеть. В Си-шном коде я бы это точно за разумное время не осилил бы (желание бы пропало прежде). ------------------------------------------------------------------------ оставить комментарий: mailto:comment@blog.stargrave.org?subject=Re:%20NAT64%2FDNS64-%D0%B4%D1%80%D1%83%D0%B6%D0%B5%D0%BB%D1%8E%D0%B1%D0%BD%D1%8B%D0%B9%20BitTorrent%20%D0%BA%D0%BB%D0%B8%D0%B5%D0%BD%D1%82%20%28a3fe5e13b94f046837c3bdf1eae794a5a47250ee%29 ------------------------------------------------------------------------ комментарий 0: From: kmeaw Date: 2022-11-26 10:46:55Z > у меня в руках клиент написанный на Go Если речь про 99545affc42b3298475f3efb7c1fb33db114529b, то стоит быть аккуратным - этот клиент не умеет раздавать, ожидает от (HTTP-only) трекера поддержку compact-формата и всегда анонсирует download=0&upload=0. Такая комбинация особенностей может привести к бану на трекере. Ещё часть трекеров сломаются, потому что метод TorrentFile.buildTrackerURL перезаписывает RawQuery, а туда часто кладут passkey (?uk=AAAAAAAAAA). Некоторые трекеры также ожидают увидеть в query-параметрах помимо port ещё и ip/ipv6. Некоторые трекеры реализуют syncookie-подобную защиту, отвечая клиенту строкой типа "d14:failure reason10:greylisted8:retry in1:1e" - нужно уметь обрабатывать ошибки. А иногда отвечают 301 редиректом. Останется дописать поддержку UDP-трекеров, WebTorrent, перезапрос peers с трекера (но не чаще, чем раз в interval, иначе забанят), DHT (но с обработкой private flag, тут тоже могут забанить), peers6 для случая compact с IPv6, uTP. И, самое сложное, раздачу - пиры могут вести себя странно и плохо, и надо уметь банить их на своей стороне - трекер тут ничем не поможе. ------------------------------------------------------------------------ комментарий 1: From: kmeaw Date: 2022-11-26 10:51:38Z Прочитал следующую запись в блоге (8357328821a1a6859a268197a618554b875a87c6) и понял, что был не прав в своём предположении. Тогда все описанные мной проблемы уже решены. ------------------------------------------------------------------------ комментарий 2: From: Sergey Matveev Date: 2022-11-26 11:02:03Z Всё что касается трэкеров меня не сильно волнует. Так как массово все полагаются на DHT для обнаружения peer-ов. Ну судя по моему опыту. А на приватных трэкерах я был в последний раз наверное ещё до 2010-х. Мне не нравится например что он не отправляет трэкеру сообщение о том, что отключается, когда его останавливают. Конечно на трэкере по timeout-у мой peer всё равно вычистят, но было бы честнее сообщать. Ну и да, почти (то что я точно видел в коде и могу оценить) всё что вы написали -- реализовано. Более того, в документации не упоминается DHT IPv6 поддержка, но которую я вижу в их dht реализации, которая идёт отдельной библиотекой. ------------------------------------------------------------------------ комментарий 3: From: Sergey Matveev Date: 2022-11-26 11:07:25Z *** kmeaw [2022-11-26 10:46]: >WebTorrent А вот это я кстати вообще полностью выпилил. Ну не нравятся мне WebRTC и WebSocket и всё что с ними связано :-). На треть сокращает размер бинарника из-за этого. ------------------------------------------------------------------------ Сгенерирован: SGBlog 0.34.0