А кто вам сказал что в моей реализации есть незащищенная часть?
нет смысла задействовать всю мощь чипа и укрывать протокол обмена целиком (какими либо данными по какому либо протоколу). Достаточно укрывать только критически важные части
А кто вам сказал что в моей реализации есть незащищенная часть?
нет смысла задействовать всю мощь чипа и укрывать протокол обмена целиком (какими либо данными по какому либо протоколу). Достаточно укрывать только критически важные части
UDP и соединение? Что-то Вы путаетесь в показаниях.UDP сервер примнимает соединение.
Охх...UDP и соединение? Что-то Вы путаетесь в показаниях.
В UDP-протоколе нет понятия "соединение".
Я ничего не путаю. Я знаю что в UDP нет понятия "соединение".Вы в данном случае путаете понятия непосредственного протокола, и логики, которую можно создать на его основе.
"Смешались в кучу люди кони...".Один из атрибутов соединения является гарантированная доставка пакета.
Как видно из отквоченного - Вы совершенно не понимаете как работает и TCP тоже. Читайте доки - TCP работает совсем не так. Не надо тут позориться ещё и поучая кого-то.Возьмем один поток данных где на каждый пакет нужно получить подтверждение от сервера (как это происходит с TCP).
Вы просто запоминаете порядковый номер пакета, его хеш сумму и отправляете серверу.
Включаете таймер (который вам необходим) и ждете ответа.
Таймер вышел, ответа нет? - Повторяем запрос.
Никого не поучал и "всех тут" в заблуждене не вводил - вел беседу с вами.Я ничего не путаю. Я знаю что в UDP нет понятия "соединение".
А путаете всех здесь Вы, называя какой-то протокол, ходящий поверх UDP, именем "UDP".
Если один протокол ходит поверх второго, то это не значит что второй протокол имеет свойства первого.
"Смешались в кучу люди кони...".
"Гарантированная доставка" не имеет никакого отношения к соединению. Это вещи абсолютно перпендикулярные друг другу, как мокрое и круглое.
Как видно из отквоченного - Вы совершенно не понимаете как работает и TCP тоже. Читайте доки - TCP работает совсем не так. Не надо тут позориться ещё и поучая кого-то.
TCP - это байт-ориентированный протокол, а не пакетно-ориентированный. Никаких "номеров пакета" там нет. Никакие хеш-суммы тоже нет надобности запоминать. И ждать какого-то ответа в TCP тоже не нужно. За первым сегментом можно сразу отправлять следующий, если позволяет окно.
Да и "запросов" и "ответов" в TCP тоже нет, как понятия. Как и неких мифических ASK-пакетов.
Вобщем - читайте учебники, рано Вам ещё взрослых дядь тут поучать.....
Я вам ответил что это заблуждение.В 2018 году вкладываться есть смысл только в модули в полном объеме поддерживающие современные протоколы ssl/tls потому что проблема с it безопасностью будет только усугубляться и в облаках без ssl уже сейчас делать нечего.
Поясните пожалуйста что такое синхронизация блоков, лучше ссылкой на rfc.UDP пересылает блоком и не реализует синхронизацию блоков в точке приема.
Хоть что там применяют, но в протоколе UDP подтверждений нет. А какой протокол ходит поверх UDP - там может быть что угодно. Только это уже не UDP.Если посмотрите в инете то к удивлению обнаружите что в системах реального времени и автоматизации стали широко использовать UDP с подтверждением как альтернативу TCP но более быстрой реакцией на событие.
Может не будем передёргивать? Откройте глаза и посмотрите внимательнее кто это писал. И не надо мне приписывать чужих слов!Вот вы писали:
Я вам ответил что это заблуждение.
Товарищ Чайник, идите учите матчасть и хватит тут светить своим невежеством. Ваше невежество видно в каждом посте.По поводу байт - ориентированности ну это уже ни к чему было. Такое ощущение что я с вами как с человеком общаюсь, а вы просто хам и невежда.
Ещё раз: для TCP-сокета пересылаемые через него данные - это поток байт. Ни о каких пакетах он не знает. Если нужна пакетная передача через TCP-сокет, то для этого используют какой-либо протокол поверх TCP, который кодирует последовательность пакетов -> в поток байт на входе в TCP-сокет, и декодирует обратно поток байт на выходе из сокета -> в последовательность пакетов. TCP при этом не знает ни о каких пакетах, для него это просто поток байт. А пакеты есть уже на уровне того, более верхнего протокола.Соединение в TCP необходимо для сборки данных пересылаемых пакетами
И что доказывает эта куча вываленного хлама? Вашу некомпетентность разве что? Ну так вы её уже во всей красе очередной раз показали.для особо ленивых и тем кто не может искать в интернете
информация к размышлению
Реализация Reliable Udp протокола для .Net
да уж.... Ещё в доказательство приведите мнение бабок у подъезда.
Нет у вас никакого опыта. Одни бредни. А в ответ на просьбу привести доказательство своим же собственным словам - обиженное надувание щёк и: "я больше с тобой не играю".так как предпочитаю рассказывать свой опыт а не пересказывать интернет и давать ленивым ссылки где искать.
Для вас это похоже - навсегда. Неизлечимо...Н да если человек дурак, то это надолго.
Я считал, что немножко имею представление о транспорте tcp и очень удивлен отсутствием “мифических” пакетов, просто решил посмотреть так ли это. Поднял tcp сервер на порту 8888, который просто принимает запросы на соединения и больше ничего не делает.Как видно из отквоченного - Вы совершенно не понимаете как работает и TCP тоже. Читайте доки - TCP работает совсем не так. Не надо тут позориться ещё и поучая кого-то.
TCP - это байт-ориентированный протокол, а не пакетно-ориентированный. Никаких "номеров пакета" там нет. Никакие хеш-суммы тоже нет надобности запоминать. И ждать какого-то ответа в TCP тоже не нужно. За первым сегментом можно сразу отправлять следующий, если позволяет окно.
Да и "запросов" и "ответов" в TCP тоже нет, как понятия. Как и неких мифических ASK-пакетов.
Вобщем - читайте учебники, рано Вам ещё взрослых дядь тут поучать.....
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
11:05:36.424182 IP (tos 0x10, ttl 55, id 63910, offset 0, flags [DF], proto TCP (6), length 60)
my-client.ru.47850 > my-server.ru.8888: Flags [S], cksum 0xb2c2 (correct), seq 3257422953, win 29200, options [mss 1338,sackOK,TS val 16100815 ecr 0,nop,wscale 7], length 0
11:05:36.424248 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 60)
my-server.ru.8888 > my-client.ru.47850: Flags [S.], cksum 0x80dc (incorrect -> 0xcd57), seq 815724895, ack 3257422954, win 28960, options [mss 1460,sackOK,TS val 715297072 ecr 16100815,nop,wscale 6], length 0
11:05:36.456545 IP (tos 0x10, ttl 55, id 63911, offset 0, flags [DF], proto TCP (6), length 52)
my-client.ru.47850 > my-server.ru.8888: Flags [.], cksum 0x6c55 (correct), seq 1, ack 1, win 229, options [nop,nop,TS val 16100824 ecr 715297072], length 0
11:06:22.382396 IP (tos 0x10, ttl 55, id 63912, offset 0, flags [DF], proto TCP (6), length 651)
my-client.ru.47850 > my-server.ru.8888: Flags [P.], cksum 0xbec6 (correct), seq 1:600, ack 1, win 229, options [nop,nop,TS val 16112311 ecr 715297072], length 599
11:06:22.382464 IP (tos 0x0, ttl 64, id 26712, offset 0, flags [DF], proto TCP (6), length 52)
my-server.ru.8888 > my-client.ru.47850: Flags [.], cksum 0x80d4 (incorrect -> 0x0f4a), seq 1, ack 600, win 472, options [nop,nop,TS val 715308562 ecr 16112311], length 0
11:06:41.735106 IP (tos 0x10, ttl 55, id 63913, offset 0, flags [DF], proto TCP (6), length 52)
my-client.ru.47850 > my-server.ru.8888: Flags [F.], cksum 0xfd53 (correct), seq 600, ack 1, win 229, options [nop,nop,TS val 16117151 ecr 715308562], length 0
11:06:41.773634 IP (tos 0x0, ttl 64, id 26713, offset 0, flags [DF], proto TCP (6), length 52)
my-server.ru.8888 > my-client.ru.47850: Flags [.], cksum 0x80d4 (incorrect -> 0xe970), seq 1, ack 601, win 472, options [nop,nop,TS val 715313410 ecr 16117151], length 0
11:06:41.821763 IP (tos 0x0, ttl 64, id 26714, offset 0, flags [DF], proto TCP (6), length 52)
my-server.ru.8888 > my-client.ru.47850: Flags [F.], cksum 0x80d4 (incorrect -> 0xe963), seq 1, ack 601, win 472, options [nop,nop,TS val 715313422 ecr 16117151], length 0
11:06:41.854003 IP (tos 0x10, ttl 55, id 41314, offset 0, flags [DF], proto TCP (6), length 52)
my-client.ru.47850 > my-server.ru.8888: Flags [.], cksum 0xea38 (correct), seq 601, ack 2, win 229, options [nop,nop,TS val 16117181 ecr 715313422], length 0
И что? Всё штатно и согласно "Машине состояний TCP". Так и должно быть.В 11:05:36 устанавливаю соединение с сервером и вижу от клиента syn, от сервера syn/ack и от клиента ack. В общем всё как положено.
В 11:06:22 клиентом отправляю несколько сот байтов, в дампе вижу на эти байты от сервера зачем-то отправляется ack.
В 11:06:41 на клиенте закрываю соединение, в дампе всё как положено, клиент fin, сервер fin/ack, сервер fin и клиент fin/ack
Там куда вы меня направилиИ ждать какого-то ответа в TCP тоже не нужно. За первым сегментом можно сразу отправлять следующий, если позволяет окно.
Да и "запросов" и "ответов" в TCP тоже нет, как понятия. Как и неких мифических ASK-пакетов.
И что?Тогда совсем не понятно что означает Там куда вы меня направили
Тайм-ауты и повторные передачи TCP пишут про подтверждение получения данных.
Вам радоваться надо, что ваше соединение не с Google Chrome. На посылку ему FIN/АСК вы получите только ACK, а FIN он не даст очень продолжительное время, пока не сочтет, что тайм-аут Keep-Alive истек и истекло кол-во проб Keep-Alive со своими тайм-аутами проверки (в совокупности это обычно к 2-м часам ). А открытая страница в Chrome плодит от 3-х таких соединений с вашим сервером, пока не закроете Chrome.В 11:06:41 на клиенте закрываю соединение, в дампе всё как положено, клиент fin, сервер fin/ack, сервер fin и клиент fin/ack
Есть подтверждения, что "недошло" :Хоть что там применяют, но в протоколе UDP подтверждений нет. А какой протокол ходит поверх UDP - там может быть что угодно. Только это уже не UDP.
Или приведите ссылку на RFC где сказано про эти "подтверждения".
А при чем тут HTTP keep-alive и HTTP close? TCP FIN что отменен или полузакрытый TCP для web HTTP соединения - это норма?"Connection: close" носит декларативный характер, к сожалению по rfc7230 так и не нашел однозначного толкования для случая когда клиент говорит что keep-alive а сервер ему отвечает close