Hálózati terminológia (WinHTTP)

A Microsoft Windows HTTP-szolgáltatásokat (WinHTTP) használó alkalmazások fejlesztésekor fontos tisztában lenni az alábbi fogalmakkal és terminológiával, amelyek általában a hálózatkezeléshez és különösen a HTTP protokollhoz kapcsolódnak.

HTTP-tranzakciók

HA HTTP-tranzakciókkal dolgozik, a hálózat más részein lévő másik számítógéppel cserél információkat. A kicserélt információk lehetnek szövegeket vagy multimédiás tartalmakat tartalmazó fájlok, vagy adatbázis-lekérdezések eredményei. A hálózaton keresztül kicserélt információkat erőforrásnak nevezzük. Általában az erőforrást küldő számítógép a kiszolgáló, az erőforrást fogadó számítógép pedig egy ügyfél. Azonban az ügyfél is közzétehet adatokat egy kiszolgálón. Néha egy HTTP-tranzakció egy középső rétegbeli kiszolgálót is magában foglal. A középső rétegbeli kiszolgálók több erőforrást gyűjtenek össze más kiszolgálókról, egyetlen erőforrásba állítják össze az információkat, és elküldik az erőforrást az ügyfélnek.

Az erőforrás HTTP protokoll használatával történő beszerzésének folyamata megköveteli, hogy az ügyfél és a kiszolgáló között üzenetek sorozata legyen kicserélve. Az ügyfél egy erőforrást kérő üzenet küldésével kezdi meg a tranzakciót. Ezt az üzenetet HTTP-kérésnek vagy néha csak kérésnek nevezzük. A HTTP-kérések a következő összetevőkből állnak.

  • Metódus, egységes erőforrás-azonosító (URI), protokoll verziószáma
  • Fejlécek
  • Entitás törzse

Amikor egy kiszolgáló kérést kap, egy üzenet visszaküldésével válaszol az ügyfélnek. A kiszolgáló által küldött üzenetet HTTP-válasznak nevezzük. A HTTP-válasz a következő összetevőkből áll.

  • Protokoll verziószáma, állapotkódja, állapotszövege
  • Fejlécek
  • Entitás törzse

A válasz vagy azt jelzi, hogy a kérés nem dolgozható fel, vagy a kért információkat adja meg. A kérelem típusától függően ez lehet egy erőforrással kapcsolatos információ, például annak mérete és típusa, vagy lehet az erőforrás egy része vagy egésze. A válasznak a kért erőforrás egy részét vagy egészét tartalmazó részét "válaszadatoknak" vagy "entitástörzsnek" nevezzük, és a válasz nem fejeződik be, amíg az összes válaszadat meg nem érkezik.

A HTTP-tranzakciókról és a HTTP-protokollról további információt RFC 2616, Hypertext Transfer Protocol – HTTP/1.1 című cikkben talál.

Proxykiszolgálók

Bár az ügyfél által küldött kérelmet végül a célkiszolgáló fogadja, néha a tranzakció először egy proxykiszolgálón halad át. A proxy elfogja a kérést, és akár módosíthatja is a kérést, mielőtt elküldené a kiszolgálónak. Amikor a kiszolgáló válaszol, a válasz a proxyn is áthalad, mielőtt továbbítanák az ügyfélnek. A proxy módosíthatja a válasz fejléceit.

A hálózati tranzakciók elfogásával és fordításával a proxyk a következő műveletekre képesek:

  • Az ügyfél védelme a potenciálisan veszélyes tranzakciók monitorozásával.
  • Engedélyezze az ügyfél számára, hogy olyan protokollokkal kommunikáljon, amelyeket az ügyfélszoftver esetleg nem implementál.
  • Átjáróként viselkedik egy magánhálózat és egy nyilvános hálózat között.

A WinHTTP API tartalmaz egy proxykonfigurációs eszközt, amely lehetővé teszi a WinHTTP számára a HTTP-tranzakciókat elfogó proxykiszolgálókra vonatkozó információk megadását. További információ a proxykonfigurációs eszköz használatáról: ProxyCfg.exe, proxykonfigurációs eszköz.

Szinkron és aszinkron módok

Két programozási modell áll rendelkezésre az erőforrások hálózaton keresztüli beszerzéséhez a WinHTTP használatával – a szinkron és aszinkron modellek használatával. Szinkron modellben a függvények vagy metódusok hívása nem fejeződik be, amíg a kért művelet be nem fejeződik, vagy amíg hiba nem történik. Ha például az alkalmazás szinkron módon kér le egy erőforrást a WinHTTP használatával, az nem folytatódik a következő lépéssel, amíg a kért adatok meg nem érkeznek.

Az aszinkron modell viszont lehetővé teszi, hogy az alkalmazás más feladatokat is végrehajtson, miközben megvárja az erőforrás lekérését. Ha egy másik WinHTTP-függvényt vagy metódust hív meg, és egy korábbi művelet még nem fejeződött be, a függvény hibát ad vissza. A WinHTTP aszinkron használata esetén a komponensobjektum-modell (COM) eseményei és visszahívásai elérhetők, amelyek értesítik az alkalmazást a HTTP-művelet előrehaladásáról.

Hitelesítés

A hitelesítés az a folyamat, amellyel egy HTTP-proxy vagy HTTP-kiszolgáló ellenőrzi a felhasználó bejelentkezési adatait, mielőtt engedélyezi az erőforrásokhoz való hozzáférést. Az interneten különböző hitelesítési sémákat használnak. A rendszer általában összehasonlítja a felhasználó nevét és jelszavát egy engedélyezett listával, és ha a rendszer egyezést észlel, a hozzáférés a felhasználó engedélylistájában megadott mértékben lesz engedélyezve.

A WinHTTP-függvények a HTTP-munkamenetek kiszolgáló- és proxyhitelesítését is támogatják. A WinHTTP a következő hitelesítési sémákat támogatja: Basic, Digest (lásd RFC 2617), NTLM-hitelesítési, Egyeztetés/ Kerberosés Microsoft Passport 1.4. A hitelesítéssel kapcsolatos részletes információkért, valamint a Microsoft Visual C++ alkalmazásokban való hitelesítésre vonatkozó példaért lásd Hitelesítés a WinHTTP-bancímű témakört.

Az alapszintű és a Passport-hitelesítéssel kapcsolatos biztonsági megfontolásokról további információt WinHTTP biztonsági megfontolásokcímű témakörben talál.