Netstat
A netstat (network statistics, hálózati statisztika) egy parancssori eszköz, amely megjeleníti a hálózati kapcsolatokat (kimenő és bejövő kapcsolatot egyaránt), az irányítótáblákat, és más egyéb hálózati statisztikákat. Az alkalmazás elérhető Unix, Unix-szerű, és Windows NT alapú operációs rendszereken. Hálózati problémák megtalálására, továbbá a hálózat forgalmának és teljesítményének mérésére használják.[1]
Paraméterek
[szerkesztés]Az ehhez a parancshoz használt paramétereket kötőjel (-) előzi meg, ritkábban pedig perjel (/).
-a
: megjelenít minden aktív kapcsolatot, illetve azokat a TCP és UDP portokat, amelyeken a számítógép „fülel”.-b
: megjeleníti azon bináris (futtatható) programok nevét, amelyek beleavatkoztak a kapcsolatok létrejöttébe, vagy „fülelnek” egy porton. Mac OS X rendszeren, ha ezt kombináljuk a-i
kapcsolóval, megkapjuk a forgalmazott byte-k mennyiségét.-e
: megjeleníti az ethernet statisztikákat, mint pl. a küldött és fogadott bájtok mennyiségét. Ez a paraméter kombinálható a-s
kapcsolóval.-f
: megjeleníti az idegen címek teljesen minősített tartományneveit (fully qualified domain names, FQDN). (Csak a Windows Vista, vagy újabb operációs rendszeren érhető el.)-g
: megjeleníti az IPv4 és IPv6 multicast csoporttagság-információit. (Csak újabb operációs rendszereken.)-i
: megjeleníti a hálózati interfészeket, és azok statisztikáit. (Nem elérhető Windows alatt.)-n
: megjeleníti az aktív TCP kapcsolatokat, ugyanakkor a címek és portszámok numerikusan kerülnek kijelzésre, semmiképp nem határozza meg azok neveit.-m
: megjeleníti a STREAM statisztikákat.-o
: megjeleníti az aktív TCP kapcsolatokat, és a kapcsolatokhoz tartozó folyamatok ID (PID) számát is. A PID alapján megtalálható az alkalmazás a Windows Feladatkezelő Folyamatok fülén. A paraméter kombinálható a-a, -n
és-p
kapcsolókkal is. A paraméter elérhető Microsoft Windows CP, Server 2003 (és Server 2000, egy hotfix[2] alkalmazásával) alatt.-p
: Windows és BSD: megjeleníti a kapcsolatokat a protokollok alapján jellemezve. Jelen esetben a protokoll lehet TCP, UDP, TCPv6, vagy UDPv6.-p
: Linux: megjeleníti, hogy melyik csatlakozót melyik folyamat használja (hasonló, mint a -b kapcsoló Windows alatt) (csak rootként hajtható végre).-p
: Solaris: megjeleníti a kapcsolatokat a protokollok alapján jellemezve. Jelen esetben a protokoll lehet IP, IPv6, ICMP, ICMPv6, IGMP, UDP, TCP, vagy RAWIP.-r
: megjeleníti az IP irányító tábla(útválasztó tábla tartalmát (megegyezik a route print paranccsal Windows alatt).-s
: megjeleníti a protokollokra vetíthető statisztikákat. Alapértelmezetten a TCP, UDP, ICMP, és IP protokollok statisztikái jelennek meg. Ha a Windows XP-re az Ipv6 protokoll telepítve van, IPv6-on keresztül kapjuk meg a TCP és UDP statisztikáit, továbbá megjelenik az ICMPv6 és az IPv6 protokoll statisztikája is. A-p
kapcsolóval beállíthatjuk, hogy mely protokollokra vonatkozva kapjuk meg a jelentést.-v
: amikor együtt használják a-b
kapcsolóval, megjeleníti a kapcsolat létrehozásában szerepet játszó, vagy a porton „fülelő” alkalmazások sorát.Intervallum
: újra megjeleníti a kiválasztott információkat minden intervallum-másodpercben. A CTRL+C megnyomásával megállítható a folyamatos kijelzés. Ha a paraméter el lett hagyva, a netstat csak egyszer jeleníti meg az információkat.-h
(unix)/?
(windows) : megjeleníti a súgófájlt a parancssorban.
Lekérhető statisztikák
[szerkesztés]A netstattal a következő statisztikákat kérhetjük le:
- Proto – a protokoll neve (TCP vagy UDP)
- Local Address – a helyi számítógép IP címe, és a port száma, amely ezt a címet használja. A helyi számítógép neve megfelel az IP címnek és a portszámnak, kivéve ha a -n kapcsoló is meg lett adva. Ha a port még nem megállapított, a port száma csillaggal van helyettesítve.
- Foreign Address – a távoli számítógép IP címe, és portszáma, amelyhez csatlakozó kapcsolódik. A távoli számítógép neve megfelel az IP címnek és a portszámnak, kivéve ha a -n kapcsoló is meg lett adva. Ha a port még nem megállapított, a port száma csillaggal van helyettesítve.
- State – jelzi a TCP kapcsolat állapotát. A lehetséges állapotok a következők: CLOSE_WAIT, CLOSED, ESTABLISHED, FIN_WAIT_1, FIN_WAIT_2, LAST_ACK, LISTEN, SYN_RECEIVED, SYN_END és TIME_WAIT. A TCP kapcsolat állapotairól további információk az RFC 793 alatt találhatóak.
A kijelzett állapotok listája:[3]
- SYN_SEND vagy SYN_SENT (SYN_KÜLDÉS): Aktív nyitás: a gazdagépen futó alkalmazás összeköttetés létesítését kezdeményezte.
- SYN_RECEIVED SYN_FOGADÁS): A szerver felé SYN, azaz összeköttetési kérés érkezett. A kapcsolat nyugtázásra vár.
- ESTABLISHED (ÉLŐ / LÉTREHOZVA): A kliens megkapta a szerver SYN-jét, a kapcsolat kiépült. A normális adatátvitel állapota.
- LISTEN (FIGYEL): A gazdagépen futó szerverprogram várakozó állapotban van, kész a kapcsolatok fogadására.
- FIN_WAIT_1 (FIN_VÁRÁS_1): Aktív lezárásra utal: a portot kezelő alkalmazás bejelentette, hogy nincs szüksége tovább a kapcsolatra.
- TIME_WAIT vagy TIMED_WAIT (IDŐZÍTETT_VÁRÁS): A kliens ebbe a státuszba kerül aktív lezárás után. A kapcsolat vár, hogy az összes csomag kihaljon.
- CLOSE_WAIT (LEZÁRÁS_VÁRÁS): Passzív lezárásra utal, a szerver megkapta az első FIN-t a klienstől. A kapcsolat a TCP architektúra magasabb szintjén lévő alkalmazástól várja a kapcsolat bontását.
- FIN_WAIT_2 (FIN_VÁRÁS_2): A kliens megkapta a visszaigazolást a szervertől az első FIN-jéről.
- LAST_ACK (UTOLSÓ_NYUGTA): A szerver elküldte a saját FIN-jét, vár, míg az összes csomag meg nem hal.
- CLOSED (LEZÁRT): Nincs összeköttetés. Véges állapotú gép esetében ez az állapot a kezdő állapot. Minden összeköttetés ebből az állapotból indul.
Példák
[szerkesztés]A TCP vagy UDP protokollok statisztikájának megtekintéséhez üsse be az alábbi parancsok közül az egyiket:
netstat -sp tcp netstat -sp udp
Az aktív TCP kapcsolatok, és folyamatok azonosítójának 5 másodpercenként frissülő listájáért üsse be az alábbi parancsot (Microsoft Windows esetén csak XP és 2003 alatt működik, illetve a hotfix-el ellátott Windows 2000-n):
netstat -o 5
Mac OS X verzió:
netstat -w 5
Az aktív TCP kapcsolatok, és folyamatok azonosítójának numerikus listájáért a következő parancsot üsse be (Microsoft Windows esetén csak XP és 2003 alatt működik, illetve a hotfix-el ellátott Windows 2000-n):
netstat -no
Az összes, folyamat által megnyitott port listája a folyamatok ID PID-jével előhívható az alábbi paranccsal:
netstat -ao | grep ”pid”
Hiányossága
[szerkesztés]A netstat néhány verziójából hiányzik a határozott elválasztó a printf-alapú kimenetben, így a numerikus mezők egybefolynak, és a kimeneti adat megsérül.
Platformspecifikus észrevételek
[szerkesztés]Linux alatt a nyers adatok gyakran megszerezhetőek a /proc/net/dev könyvtárból, így megkerülhető a printf-kimenet által generált adatsérülés.
Windows platformon a netstat információak elérhetőek a GetTcpTable és a GetUdpTable funkciók meghívásával az IP Helper API-ban, vagy az IPHLPAPI.DLL-ben. Az így kapott információ tartalmazza a helyi és távoli számítógép IP-címeit, helyi és távoli portjait, és (a GetTcpTable-l) a TCP státusz kódjaik. Mellékesen a parancssoros netstat.exe eszköz a Windows-al együtt érkezik, de elérhetőek GUI alapú netstat programok is. Ugyancsak Windows alatt a parancs csak akkor érhető el, ha az Internet Protokoll (TCP/IP) a Hálózati Kapcsolatok részénél telepítve lett a hálózati eszközhöz.
Mac OS X 10.5 esetén az -o kapcsoló nem elérhető. Az ezen verziójú OS X alatt az /Applications/Utilities mappa tartalmaz egy hálózati kiegészítő programot, a Network Utility-t, amely Netstat opciója egy GUI-val rendelkező eszköz, Ping, Lookup, Traceroute, Whois, Finger és Port Scan lehetőségekkel.
Kapcsolódó szócikkek
[szerkesztés]- lsof -i
- ss[halott link] – egy eszköz, amely a csatlakozók vizsgálatára szolgál az iproute2-ből; gyakorlatilag a netstat helyettesítője
Jegyzetek
[szerkesztés]További információk
[szerkesztés]- Net-Tool a berliOS project oldala
- Ports & Services Database
- Microsoft TechNet Netstat article – a netstat.exe parancssoros program dokumentációja
- The netstat Command (Linux) – a netstat használata Linux alatt
- From linux-ip.net a kimenet komplexebb magyarázata