Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.06;
Скачать: CL | DM;

Вниз

Передача данных по сети...   Найти похожие ветки 

 
Knight ©   (2004-11-23 16:28) [0]

Вот везде пишется, что несколько мелких пакетов могут объединяться в один и, наоборот, один большой может разбиваться на несколько мелких... типа, клиент должен сам отслеживать данные. Это не проблема если используються ServerSocket-ClientSocket... А если это UDP-бродкаст? Как, только-что зашедшему в сеть клиенту, разобраться в этой каше?


 
Digitman ©   (2004-11-23 16:44) [1]


> Вот везде


где это "везде" ?
чушь не пори уже ..


> несколько мелких пакетов могут объединяться в один и, наоборот,
> один большой может разбиваться на несколько мелких


"пакет" "пакету" - рознь


> не проблема если используються ServerSocket-ClientSocket


если ведешь речь о поточном протоколе - так и говори .. а не начинай тут с абстрактных никчемных "прелюдий" ... ибо - словоблудие


> если это UDP-бродкаст?


UDP не является поточно-ориентированным протоколом, и к сабжу он не имеет отношения


> Как, только-что зашедшему в сеть клиенту, разобраться в
> этой каше?


никакой каши нет и быть не может
ибо каждое событие приема отражает факт приема одного конкретного UDP-сообщения


 
Knight ©   (2004-11-23 19:03) [2]


> [1] Digitman ©   (23.11.04 16:44)
> где это "везде" ?
> чушь не пори уже ..

фи какие мы грубые... %(
Как везде читаю... так и пишу, чтобы разобраться... может действительно, что-то не так понял... :)


> UDP не является поточно-ориентированным протоколом, и к
> сабжу он не имеет отношения

Вот как-раз он и имеет к сабжу основное отношение, т.к. с поточно-ориентированными проблем нет и во всех примерах и статьях основной упор делается именно на них... а вот бродкаст, как-то, остаётся за бортом.


 
Verg ©   (2004-11-23 20:47) [3]


> фи какие мы грубые... %(
> Как везде читаю... так и пишу, чтобы разобраться... может
> действительно, что-то не так понял... :)


Да уж здесь, в "сетях", все как в Армии. :)))

А по теме... А ты о чем вообще?


> ServerSocket-ClientSocket


Открой справку, почитай, что

TServerSocket listens for requests for TCP/IP connections from other machines, and establishes connections when requests are received.
TClientSocket specifies a desired connection to a TCP/IP server, manages the connection when it is open, and terminates the connection when the application is through.

Бродкасты бывают только не в TCP.


> а вот бродкаст, как-то, остаётся за бортом.


Да, бродкастом до конца даже Windows не научалась пользоваться. Все дело в спорности самой концепции. Бродкаст - это вред для сети. Конкретный вред. Бродкаст отмниамет ресурсы у всех участников сети. Без исключения, 99% участникам этой сети ничего не давая. Это как создать TIME_CRITICAL поток и решать в нем квадратные уравнения или играть в "крестики нолики"....


 
Knight ©   (2004-11-23 21:38) [4]


> [3] Verg ©   (23.11.04 20:47)
> Открой справку, почитай, что
>
> TServerSocket listens for requests for TCP/IP connections

Это не интересует...


> Да, бродкастом до конца даже Windows не научалась пользоваться.
> Все дело в спорности самой концепции. Бродкаст - это вред
> для сети. Конкретный вред. Бродкаст отмниамет ресурсы у

А вот бродкаст интересует... если из всей сети пакет идет 1-му проценту, то понятное дело вред... а если пакет предназначен для 99-ти, а то и 100-та процентам? имхо... проще послать всем и сразу, чем индивидуально каждому... к тому же верную инфу получит только первый, а все последующие будут получать всё более и более устаревшую...


 
Piter ©   (2004-11-23 23:26) [5]

Digitman ©   (23.11.04 16:44) [1]
где это "везде" ?
чушь не пори уже ..


действительно, это часто говорят, имея в виду фрагментацию TCP пакетов.

Ты какой-то злой. Тебе бы отдохнуть что ли? Я сейчас оффтоплю, но хочу сказать, что отлично к тебе отношусь и уважаю. Но на самом деле - неприятно, Knight задал относительно нормальный вопрос, а ты так наехал - как будто про иконку в трее спросили...


 
Verg ©   (2004-11-24 07:46) [6]


> [4] Knight ©   (23.11.04 21:38)


Тогда конкретизируй свой вопрос.


> к тому же верную инфу получит только первый, а все последующие
> будут получать всё более и более устаревшую...


Если вообще получит. Никто ж не гарантировал.


 
Verg ©   (2004-11-24 08:21) [7]


> [5] Piter ©   (23.11.04 23:26)


> действительно, это часто говорят, имея в виду фрагментацию
> TCP пакетов.


Когда говорят "фрагментация", имеется ввиду IP.
У TCP нет пакетов, есть сегменты - это порции потока, которые инкапсулируются в IP. Дробя поток на сегменты любая уважающая себя реализация TCP не допускает того, чтобы размер результирующей IP датаграммы вместе с канальным уровнем превышал MTU.
Фрагментация же IP датаграмм (неважно что они в себе несут, хоть UDP, хоть TCP, хоть ICMP, да хоть что) может происходить на "изломах" MTU. На маршрутизаторах соединяющих сети с разной физикой, с разным MTU.

С другой стороны, никто не мешает мне отправить UDP датаграмму размером больше MTU. Вот тут и будет происходить IP-фрагментация (разборка). Реально в сеть полетят несколько IP датаграмм.
Способ же разборки/сборки описан в стандарте на IP.
Сборка фрагментов производится сетевым ядром и на "выходе", т.е.  приложение (в сокет)  получает уже полностью восстановленную (собранную) датаграмму соответсвующего протокола. Либо, не получает вовсе, если например один из фрагментов потерялся.


 
Knight ©   (2004-11-24 10:04) [8]


> Verg ©   (24.11.04 08:21) [7]

Честно говоря, я всегда думал, что кто разобрал тот должен и собрать... т.е. данные должны передаваться тому, кто должен получить, в том же виде как было отправлено... т.е. если поломал, сделай, как було...

А потом столкнулся с сетью и начал читать... и оказалось, что всё не так. Что приложение само должно, сперва отправить размер данных, и собирать до тех пор пока объём полученных пакетов не будет раверен этому размеру... Возник следующий вопрос: а есди размер последнего пакета будет снова небольшой, то может к нему приклеиться следующая команда? И если может, то как программе, которая была загружена во время отправки данных, разобраться что где?
---
ЗЫ:


 
Verg ©   (2004-11-24 10:07) [9]


> [8] Knight ©   (24.11.04 10:04)


Ты сначала определись - о каком протоколе идет речь. О TCP или о UDP ?


 
Knight ©   (2004-11-24 10:11) [10]

ЗЫ: Многие знания преумножают скорби...


 
Knight ©   (2004-11-24 10:54) [11]


> Verg ©   (24.11.04 10:07) [9]
> Ты сначала определись - о каком протоколе идет речь. О TCP
> или о UDP ?

Лишь бы широковещательно... а так UDP :)


 
Verg ©   (2004-11-24 11:23) [12]

Широковещательно - только UDP

Для UDP так:
отправил датаграмму -  может быть получил датаграмму. Если получил, то получил точно такую же, какую отправил. Никакие датаграммы не разбиваются, никакие не склеиваются. Фрагментация, о которой шла речь существует на уровне IP и для программиста сокетов является скрытым механизмом.
Последовательность доставки датаграмм, да и сама доставка не гарантирована.

Широковещательные датаграммы маршрутизаторами не передаются вовсе. Т.е. могут передаваться только в пределах одного сегмента сети.


 
Knight ©   (2004-11-24 12:39) [13]

> Verg ©   (24.11.04 11:23) [12]
> Широковещательно - только UDP
Ну это, прозвучало ещё в вопросе... в качестве UDP-бродкаста... :)

> Для UDP так:
> отправил датаграмму -  может быть получил датаграмму.
Выведется следующая.

> Если получил, то получил точно такую же, какую отправил. Никакие
> датаграммы не разбиваются, никакие не склеиваются. Фрагментация,
Ну вот и всё... что м требовалось узнать.

> Широковещательные датаграммы маршрутизаторами не передаются
> вовсе. Т.е. могут передаваться только в пределах одного
> сегмента сети.
А мне больше и не надо... %)

Спасибо. Вопрос закрыт :)


 
Digitman ©   (2004-11-24 12:41) [14]


> Knight ©   (24.11.04 10:54) [11]
> Лишь бы широковещательно... а так UDP :)


приношу извинения за резкость в реакции на вопрос.

но в станд.справке по winsock-транспорту с использованием, например, таких message-oriented-протоколов как UDP, нет ни слова ни о каких-то там "разбиениях/склеиваниях" чего-то там.

отсюда и реакция на высказывание человека, не сподобившегося даже стандартную справку почитать перед тем как задать вопрос, но ничтоже сумняшеся заявляющего, что что-то там "везде пишется".


 
Knight ©   (2004-11-24 15:47) [15]

> Digitman ©   (24.11.04 12:41) [14]
> приношу извинения за резкость в реакции на вопрос.
Извинения приняты... %)

> но в станд.справке по winsock-транспорту с использованием,
> например, таких message-oriented-протоколов как UDP, нет
> ни слова ни о каких-то там "разбиениях/склеиваниях" чего-то
> там.
> отсюда и реакция на высказывание человека, не сподобившегося
> даже стандартную справку почитать перед тем как задать вопрос,

Просто статьи и примеры с толку сбили... везде фрагментация-фрагментация... вот и решил уточнить... Точно так же когда-то искал, как чат написать, что не статья, что не пример, везде Клиент-Сервер, а о том запузырить этот сервер в одноранговой сети в которой любой работает по схеме "вошёл-вышел" ни слова... так и плюнул на это дело, потому как... забадали на... :)


 
Digitman ©   (2004-11-24 16:30) [16]


> забадали на


не лучший аргумент в пользу темы вопроса.


> статьи и примеры с толку сбили


начинать нужно со станд.справки.
когда что-то там неясно (согласен - не такой уж редкий случай) - бегом сюда с КОНКРЕТНЫМ вопросом, что сие в борландовской (или майкрософтовской) интерпретации для простого смертного программера означает ..

все остальные оправдания приняты быть не могут... по определению того что программер - это не кодер, а некое существо с работающим таки мозжечком.


 
Piter ©   (2004-11-24 19:33) [17]

Verg ©   (24.11.04 11:23) [12]
Если получил, то получил точно такую же, какую отправил


а в UDP есть контроль целостности пакета? То есть, может UDP датаграмма дойти, но искаженной?


 
Verg ©   (2004-11-24 20:34) [18]


> То есть, может UDP датаграмма дойти, но искаженной?


Нет, не может.
Если, правда, отправляющая сторона не заплнила полое контрольной суммы в UDP датаграммы нулем. В этом случае премник не будет ее проверять, и соответственно уровень приложений может получить искаженную датаграмму.


 
Verg ©   (2004-11-24 20:35) [19]


> а в UDP есть контроль целостности пакета?


Есть - контрольная сумма пакета UDP.


 
Knight ©   (2004-11-24 23:34) [20]


> [16] Digitman ©   (24.11.04 16:30)
> не лучший аргумент в пользу темы вопроса.

"Забадали на"... относится к чату... Давно было... и не очень нужно... так, для общего развития смотрел. Щас столкнулся с програмингом под сеть более плотно... вот и рою по нескольким направлениям сразу, а т.к., везде где поднимается тема фрагментации, не встретил оговорки, что другим протоколам она не имеет отношения (кроме справки), решил уточнить.

ЗЫ: Приношу извинения за не очень корректный вопрос... задавал в конце рабочего дня, поэтому доводить было некогда... как сформулировалось, так и выдал в прямой эфир %)

Ешё раз всем спасибо за пояснения... дальше сам :)



Страницы: 1 вся ветка

Текущий архив: 2005.02.06;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.029 c
14-1105704415
Santa][P
2005-01-14 15:06
2005.02.06
COPDZone


4-1103546978
lovres
2004-12-20 15:49
2005.02.06
Как узнать запущено ли приложение? Подскажите функцию


14-1105429185
leonidus
2005-01-11 10:39
2005.02.06
Не открываются chm-файлы


3-1104619964
Некто
2005-01-02 01:52
2005.02.06
Сообщение о дубликате записи


1-1106300584
Мила
2005-01-21 12:43
2005.02.06
Закрывается программа





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский