NACK vs. ACK? Mikor kell használni az egyiket a másik felett?
On január 1, 2021 by adminSzemély szerint nem is érzem úgy, hogy szükség lenne az ACK-ra. Gyorsabb, ha csak NACK (n) -t küldünk az elveszett csomagokért hogy minden fogadott csomaghoz ACK-t küldjön. Tehát mikor / mely helyzetekben használná az ACK-t a NACK és a viceversa helyett?
Hozzászólások
- Tudna adni még néhány kontextust arról, amit ' beszél? Általános kérdéseket, vagy a TCP-t kérdezi, vagy ??
- Általános hálózati kérdés, amely nem kapcsolódik a TCP-hez, az UDP-hez vagy bármely más meghatározott területhez.
Válasz
Az ACK oka az, hogy a NACK egyszerűen nem elegendő. Mondjuk, hogy X szegmensből származó adatfolyamot küldök neked (mondjuk 10-et az egyszerűség kedvéért).
Rossz a kapcsolatod, és csak az 1., 2., 4. és 5. szegmenst kapod. A számítógép elküldi a NACK-et a 3. szegmenshez, de nem veszi észre, hogy a 6–10-es szegmenseknek kell lenniük, és nem NACK-e azokat.
Tehát újra elküldöm a 3. szegmenst, de akkor a számítógépem tévesen úgy véli, hogy az adatok sikeresen elküldve.
Az ACK-k bizonyos fokú biztosítékot nyújtanak arra, hogy a szegmens megérkezett a célhoz.
Ha azt szeretné, hogy az alkalmazás az adatok és az újraküldések sorrendjével foglalkozzon, egyszerűen választhatja a felhasználást. olyan protokoll, mint az UDP (például, mint a TFTP).
Megjegyzések
- Jó válasz. De nem sikerült ' t csak az első csomagot jelöljük meg speciális csomagként – ez magában foglalná az elküldött szegmensek számát.
- Ez továbbra is az a probléma, hogy a küldő nem tudja, hogy az adatok beérkeztek-e. nincs ACK a folyamatban, ha a feladó nem ' nem hall semmit, csak azt kell feltételeznie, hogy az összes adatot megkapta, még akkor is, ha a teljes adatfolyam elveszett. Az ACK biztosítja, hogy az adatokat megkapta.
Válasz
Az egész a veszteség valószínűségének eloszlásába és forgalmi mintázat.
Vegyünk például egy tipikus vezeték nélküli kapcsolatot, állandó 10-30% -os veszteségaránnyal. Ha ellenőrzi az egyes fogadott képkockákat (például a 802.11abg), akkor gyorsan észleli, ha egy keret elveszett, így nem veszít időt arra, hogy megvárja az időkorlátot.
Ha inkább a NAK-ot választotta, akkor függ a forgalmi mintától: – Ha egyetlen kérés csomagot küld, és választ vár, és ez a kérelem elvész, akkor időtúllépésnek kell lennie, amely lejár, ha nem kap választ. – Ha csak egy csomagfolyamot küld egy többnyire némított címzettnek, akkor elfogadható, ha csak akkor kapunk NAK-ot, amikor a címzett megkapja a következő csomagot. De ez azt jelenti, hogy a címzettnek át kell rendeznie a csomagokat, és a feladónak nyomon kell követnie az elküldött üzenetek nagy lemaradását.
(találd ki, hogy a 802.11n milyen megoldást választ? Mindkettőt. A vevő változót küld -a kapott keretek hosszúságú bitképe)
Most vegyen egy tipikus internetes hálózatot: Közel 0% -os csomagveszteséget szenved, amíg valami rossz történik, és közel 100% -os csomagveszteséget szenved egy bizonyos ideig, bizonyos exponenciális terjesztési törvények betartásával, a 200 ms-os megszakítástól a másfél percig.
Az egyes csomagok feltárása értelmetlennek tűnik egy nem veszteséges hálózatban, mindaddig, amíg figyelembe nem veszi az esetet, amikor a kapcsolat megszakad: esetleg nem kap hosszabb ideig ACK-t vagy NACK-ot, és a vevő általában nem küld semmit, amíg a link vissza nem áll.
Ha az ACK-t használja, a feladó leállítja a küldését és megtartja a lemaradását amíg a kapcsolat helyre nem áll. Ha inkább NACK-et használ, akkor a vevő végül elmondhatja, hogy hosszú ideje nem kapta meg azt a csomagot, amely leesett a feladó lemaradásából, és a kapcsolat lényegében helyrehozhatatlan.
Válasz
Az ACK-k hasznosak a csúszó ablakprotokollokban, lehetővé teszik az A adó számára, hogy tisztában legyen azzal, hogy a távoli B fogadta az elküldött adatokat. Az A adó tovább folytathatja a következő küldést adatok – mindaddig, amíg az átviteli ablaktábla meg nem telik (a távoli küldött, de még nem nyugtázott adatokból).
Az ACK-k lényegesebbnek tekinthetők, mint a NAK-ok. A NAK-ok egyszerűen gyorsabb helyreállítást tesznek lehetővé abban az esetben, ha az A által küldött csomagot / blokkot nem fogadja B, és B valamilyen módon észleli, hogy hiányzik egy csomag / blokk.
Teljesen kivitelezhető egy megbízható átvitelt támogató protokoll megtervezése és áramlásszabályozás csak ACK esetén, NAK nélkül (az adó által történő újraküldéssel abban az esetben, ha az adó nem tér vissza van egy ACK, minden esetben szükséges továbbviteli mechanizmus).
Válasz
Az egyik legfontosabb dolog, amit szeretnék hozzáadni itt, a TCP-ben, NEM küldtünk ACK-t MINDEN FOGADOTT CSOMAGért.
Az ACK-kat azonban csak a UTOLSÓBAN FOGADOTT CSOMAGOKRA küldjük.
Javítson ki, ha tévedek.
Megjegyzések
- Ez egy pontig igaz.Például a csak ACK vagy RST jelzővel rendelkező szegmensekhez nincs szükség ACK-ra. Továbbá, ha késleltetett ACK-k vannak használatban, akkor nem biztos, hogy minden szegmensben van ACK, de általában ehhez megköveteli, hogy minden más szegmenshez ACK-t küldjön. Sok TCP-kapcsolat azonban nem használ késleltetett ACK-kat, és minden adatot hordozó szegmenshez küld egy ACK-t.
Vélemény, hozzászólás?