TCP spojeni, send() a ztracena data
Petr Janda
janda na netbox.cz
Pátek Červenec 7 07:36:24 CEST 2006
On Wed, Jul 05, 2006 at 08:04:35AM +0200, Ladislav Vaiz wrote:
>
> Petr Janda wrote:
>
> >- mam tcp spojeni, kterym posilam data prostrednictvim send()
> >- pokud druhej konec upadne, tak send() vrati pocet odeslanych byte,
> > data odejdou ze sitovky (druha strana posle RST), a ja se nikdy
> > nedovim, ze nedorazily na misto
> >- dalsi volani send uz zjisti, ze data nejsou. Neni to ani o poctu
> > paketu (kdyz poslu vice dat, nz MTU), tak se ztrati vsechno z jednoho
> > volani send() )
> >
> >Jak se tyto pripady resi - napisu si vlastni potvrzovani (tak nejak jsem
> >si myslel, ze o tohle se postara TCP)?
> >
> >
> TCP je "transportní" vrstva - buď přenese data nebo se rozpadne
> spojení. Nikde se ale nedozvíte, kolik dat se přeneslo, než se to
> rozpadlo. Musíte si implementovat vlastní "relační" vrstvu, která bude
> mezi daty přenášet značky a potvrzovat je. Protože se data přenáší
> sekvenčně, tak v okamžiku přijetí potvrzení víte, že všechna data
> před značkou byla přijata.
> La'd"a
>
Diky, vygooglil jsem to chvili po tom, co jsem poslal dotaz. Moje
blbost, kdybych premyslel, tak na to musim prijit taky, ale to vedro
(jeste ze to mam na co svest :-)
S pozdravem
Petr Janda
--
email: janda_at_netbox_dot_cz
Další informace o konferenci Linux