A csomagok sorrendje (tcp)

A csomagok természetesen különböző sorrendben jöhetnek. De a rendszermag az adatokat mindig helyes sorrendben adja meg az alkalmazásához.

Ie akkor is, ha a csomagok jönnek számú = 1, és hossza 1000 és szekvencia = 2501 és a hossza 500, a mag megértése, hogy valami hiányzik (hiányoznak 1500 byte közepén - a második számú, vagyis a bájtok számát, 2501 , és még mindig 1000 bájtos bájtok voltak), nem adjuk meg a második csomagot az alkalmazásrétegnek. És a hálózaton keresztül a kernel elküldi az ACK 1000-et, hogy megkapta az első csomagot, és arra utal, hogy nincs többé.

Amint a csomag a 1001-es szekvenciával és néhány hosszúsággal érkezik, akkor a rendszermagot kapja. Csomagot számú = 2501, bár ez a lényege a hosszú ideje már, a kérelmet nem adható addig, amíg minden 1500 byte 1001-2500 befogadó, nem éri el, hogy hány csomagot lehetnek elszórtan (legalább 1500 csomagok egy byte). Ha a köztes csomagok átvitelének időtúllépése során az alkalmazás soha nem fogja látni a csomagot a SEQ = 2501-vel, bár a fogadó rendszer rendszermagja volt.

(Szeretném felhívni a figyelmet arra a tényre, hogy a zsákok nem számozott vannak számozva byte számú mezőt a csomag - a sorszám az első bájt a csomag egy finomság: .. A számozás nem indul el a 0 és 1, de egy véletlen számot, amely meghatározza a feladó telepítésekor. A kapcsolat a csomagban a SYN zászlóval A fenti példát úgy kell érteni, hogy a SYN SEQ = 1-vel volt.

Vagyis a TCP esetében nem kell aggódnia a TCP-vel kapcsolatban. Ha a bájtokat az egyik végére egy bizonyos sorrendben írta a foglalatba, akkor a másik végén vagy pontosan ugyanabban a sorrendben kapja meg őket, vagy egyáltalán nem.

Ön esetében a rendszer viselkedését nem lehet előre jelezni; elégtelen adatokat szolgáltatott. Meg kell tudnod a seqno csomagot a "syn" zászlóval: 1, és nem vettél fel ilyen csomagot, vagy elfelejtetted megadni itt.

Feltételezve, hogy az első csomagot ebben az összefüggésben az igazi „első”, akkor szin-pack Ön esetében seqno volt egyenlő 1455343061, és az alkalmazás, hallgatni socket nem fog semmiféle adat és esemény ebből foglalat (például válassza a (. ) nem lesz újra, és ha jön vissza, akkor ez az aljzat nem lesz benne olvasható), míg a rendszer nem kap csomagot seq = 1455343061 átvételét követően, amely részletezi a fog adni a kérelmet, és ő majd hozzá ezt a számot a csomag mérete (ebben az esetben, - 1440), és a következő alkalmazás a csomagról adatokat fog kapni: seqno = 1455343061 + 1440 = 1455344501, amely A hálózatból nem jöhetett volna sorba.

még mindig válassza ki, hogyan fog visszatérni. a finomítás után a számok teorizációja - ne felejtsd el az rfc-t és azok implementációit.
Ráadásul a tcp syn (tcp-ről beszélsz, igen?) Nem lehet önkényes seqno, ez az "áramlás" kezdete.

Kapcsolódó cikkek