GNU/Linux >> Znalost Linux >  >> Linux

Zjištění, zda byla doručena zpráva přes tcp

Nechat příjemce poslat zpět potvrzení je nejlepší způsob, i když se to "cítí trapně". Pamatujte, že IP může rozdělit vaše data do více paketů a znovu je sestavit, a to by se dalo udělat vícekrát během přenosu, pokud různé směrovače v cestě mají různé MTU, takže vaše pojetí „paketu“ a TCP se nemusí lišit.

Mnohem lepší je poslat svůj „paket“, ať už je to řetězec, serializovaný objekt nebo binární data, a nechat přijímače, aby provedl všechny kontroly, které potřebuje, aby tam byl, a pak poslat zpět potvrzení.


Odesílající TCP ví, kdy jsou data potvrzena druhým koncem, ale jediným důvodem, proč to dělá, je to, že ví, kdy může data zlikvidovat (protože někdo jiný je nyní zodpovědný za to, že je dostane do aplikace na druhé straně). ).

Obvykle tyto informace odesílající aplikaci neposkytuje, protože (navzdory zdání) by to ve skutečnosti neznamenalo hodně k odesílající aplikaci. Potvrzení neznamená, že přijímající aplikace data získala a udělala s nimi něco rozumného – znamená pouze to, že se o to odesílající TCP již nemusí starat. Data mohou být stále přenášena – například v rámci zprostředkujícího proxy serveru nebo v přijímajícím zásobníku TCP.

„Úspěšně přijatá data“ je ve skutečnosti koncept na úrovni aplikace – to, co znamená, se liší v závislosti na aplikaci (například pro mnoho aplikací by mělo smysl považovat data za „přijatá“ až poté, co byla synchronizována na disk na přijímajícím zařízení. postranní). To znamená, že to musíte implementovat sami, protože jako vývojář aplikace jste opravdu jediný, kdo může vědět, jak to pro vaši aplikaci dělat rozumně.


Linux
  1. Linux – Záchrana dat z náhodného formátu na oddílu Ext4?

  2. hledání jedinečných hodnot v datovém souboru

  3. Vysoce výkonné programování TCP Socket v .NET C#

  1. Btrfs přes mdadm raid6?

  2. Výhody Arch Linuxu oproti Kali Linuxu

  3. Zjištění, s jakými parametry byl program spuštěn

  1. Systém zamrzne, když mu dojde paměť

  2. Je možné vystavit TCP tunel v Linuxu jako speciální znakové zařízení?

  3. Kopírování dat přes SSH tunel přes více přeskoků