Hogyan állapítható meg, hogy a számítógép csatlakozik-e az internethez?

Újabban irigylésre méltó állandósággal a "Hogyan állapítható meg, hogy egy számítógép csatlakozik-e az internethez, vagy sem?" Gondoljunk erre a témára és magyarázzuk meg a hálózati interakciók néhány alapját.

Sokan észrevették a következő helyzetet: az MS Windows operációs rendszert futtató számítógépen hálózati kártya található. Tegyük fel, hogy a kártya meghajtó nincs megfelelően konfigurálva, vagy a számítógép nem fizikailag csatlakozik a hálózathoz. A rendszerindításkor a rendszer nem mutat hibát. Csak akkor, ha megpróbálta például bevinni a Hálózati Szomszédságot, megjelenik egy üzenet, amelyen a hálózat nem érhető el.

először is a szempontból a rendszer (vagyis a szoftvert egy része) nem lehet meghatározni, hogy abban a pillanatban, az adatátvitel is lehetséges (azaz van-e a hírhedt „kapcsolat”), és anélkül, hogy az átviteli;

Másodszor, a fentiekből kiindulva fel kell idézni a kérdést: "Van-e csomópont vagy hálózati szolgáltatás?" (azaz lehet-e adatokat ténylegesen továbbítani?)

A válasz rá, és elfoglalt.

Először is eloszlatjuk azoknak a meggyőződését, akik úgy gondolták, hogy a következő módszerek és funkciók felhasználhatók a kérdés megválaszolásához:

Annak érdekében, hogy ez a funkció célunkra haszontalan legyen, elegendő megnézni az MSDN leírását:

„Te nem hivatkozhat pusztán arra a tényre, hogy a InternetGetConnectedState visszatérő TRUE azt jelenti, hogy van egy érvényes aktív internetkapcsolat. Lehetetlen InternetGetConnectedState annak meghatározására, hogy az egész kapcsolatot az interneten működik anélkül, kérést küld a szervernek. Ez miért van Ha az InternetGetConnectedState visszaadja a TRUE parancsot, akkor megpróbál csatlakozni az alapértelmezett internetszolgáltatóhoz. "

„Te nem hivatkozhat pusztán arra a tényre, hogy ha f-CIÓ InternetGetConnectedState TRUE értékkel tér vissza, az azt jelenti, hogy van egy aktív internetkapcsolat. InternetGetConnectedState nem tudja megállapítani, hogy az internetkapcsolat működik hivatkozás nélkül a szerver.”

Az egyetlen hasznos dolog ebben a funkcióban az, hogy ha visszaadja az IGAZ, akkor ha megpróbál csatlakozni az internethez, akkor nem lesz felajánlva, hogy csatlakozzon hozzá először.

Funkció GetHostByName () - a gazdagépek felbontása.

A funkció által visszaadott eredmény - az MSDN szerint - annak sikeres befejezéséről csak azt mondja, hogy a DNS szolgáltatás helyesen van beállítva és elérhető a rendszerben. A DNS-kiszolgálók általában a szolgáltató helyi hálózatában vagy a helyi hálózatban találhatók, amelyhez számítógépünk csatlakozik (például a szervezeti hálózat). Bár kétségtelen, hogy a névszerverek az internet részévé válnak, mindkét esetben a gazdaszervezet sikeres felbontása csak a DNS-szerver elérhetőségéről szól, és semmi többet sem.

Egy adott szolgáltatóval folytatott telefonos kapcsolat tevékenységének meghatározása.

A lényeg ebben az esetben az, hogy a telefonos kapcsolat általában nincs semmi köze az internethez. Ez csak eszköz arra, hogy szoftvereink és hardverrendszerünket távoli szoftverekhez és hardver rendszerekhez csatlakoztassuk, de ne a hálózatokhoz. Más szóval - a felfedezés néhány aktív telefonos-vegyület csak azt mutatja, hogy a két, földrajzilag egymástól távol telepített számítógépek kommunikációs alkalmazásával alacsony szintű protokollok mezhmodemnoy kapcsolatot, és az egyik logikai protokollok Távoli elérés (PPP, SLIP, és mások) . Ez egyszerűen az egyik lehetséges kommunikációs csatorna két számítógép között, amely bármilyen célra felhasználható, beleértve az internetes csomópontokkal való interakciót is.

És most - az igazság.

A TCP / IP protokoll szempontjából csak két helyes megoldás létezik:

Használja az ICMP protokollt: ping, traceroute; (a csomópont elérhetőségével kapcsolatos kérdésre válaszol, de nem jelzi, hogy egy adott szolgáltatás elérhető-e ezen a csomóponton.). A kulcsfunkciók az IcmpSendEcho () (ICMP.DLL-ban implementálva), az InternetCheckConnection () (megvalósítva a WININET.DLL-ban)

Próbáljon meg csatlakozni egy bizonyos internetes webhelyhez. vagy nekünk, vagy szükséges legvalószínűbb futó pillanatában (keresők, helyszínek nagyvállalatok, stb), amely meghatározza a programban reakció hibák a hívás kapcsolatot jellemzők (a legmegbízhatóbb és megbízható módon, hogy ellenőrizze, hogy a rendelkezésre álló elemek és szolgáltatások) . A legfontosabb funkciója a kereslet - Connect () (megvalósított WS2_32.DLL)

Az ICMP API-t (1. elérési út) használó ICMP-példát a megfelelő cikk írja le.

A 2. útvonal megvalósításához a szabványos Delphi Internetről, a FastNet-ről (TClientSocket, TPowerSock) és az Indy csomag számos összetevőjéről készült készletek nagyon alkalmasak. Ugyanazt teheti meg, és saját algoritmust hajthat végre közvetlenül a Winsock API hívások használatával.

A fentiek röviden összefoglalva elmondhatjuk a következőket.

Internet definíció szerint - a globális hálózat, Ethernet hálózaton keresztül. „Connection” az interneten, ebből a szempontból, csak egy lehetséges (ami nem garantált) képes „kommunikálni” a számítógép (host), egy hálózati számítógép (node) egy másik hálózati készlet Internet-szolgáltatási megállapodások nyújtásával egy ilyen lehetőség az online - mindkét fél részéről. És ha egy ilyen funkció megvalósítható idején kamat (target számítógép / node „megfelel” vagy kísérletet connect'a ping'a), azt mondhatjuk, egy bizonyos valószínűsége, hogy „számítógép csatlakozik az internethez.”

Kapcsolódó cikkek