A legelterjedtebb protokollok áttekintése

A Unix/Linux szerverek üzemeltetése wikiből
(Változatok közti eltérés)
(v0,04)
(Külön oldalra költöztek az egyes protokollok)
1. sor: 1. sor:
 
Nézzük meg röviden, mit muszáj mindenképpen tudnunk az Internet alapvető protokolljairól.
 
Nézzük meg röviden, mit muszáj mindenképpen tudnunk az Internet alapvető protokolljairól.
   
== DNS ==
+
* [[A DNS működése]]
+
* [[A HTTP működése]]
A DNS, mint azt tudjuk, az a protokoll, ami az IP-címekhez neveket rendel, és fordítva.
 
Ennél persze többről van szó.
 
 
Fontos fogalom: ''autoritatív szerver''. Két megközelítés:
 
* Saját magát autoritatívnak gondolja, ha rendelkezik egy olyan adatbázissal, amelyben egy zóna (~domain) tartalma megtalálható.
 
* Mások autoritatívnak gondolják, ha a hierarchiában felette álló szerverek hozzá delegálnak egy domainre vonatkozó kérdéseket.
 
 
=== [http://cr.yp.to/djbdns/intro-dns.html A DNS-feloldás menete] ===
 
 
Legyen mondjuk az a kérdés, mi a <tt>www.bme.hu</tt> IP-címe. Hogy kezdjünk neki?
 
 
Mit jelent egyáltalán az, hogy a <tt>www.bme.hu</tt> IP-címe ez és ez?
 
 
Azt, hogy van valahol egy autoritatív szerver, amelyben a <tt>www.bme.hu</tt> névnek van egy <tt>A</tt> rekordja; a rekord tartalma az IP-cím.
 
 
A feloldás a következőképpen történik:
 
 
# Küldünk egy query-t (kérdést) az egyik root szervernek (amelynek a címét mindenki "tudja"), amelyben megkérdezzük, hogy <tt>A? www.bme.hu</tt>.
 
#* Erre ő, ha tudná a választ, mondhatná, hogy "hohó, ídös fiam, a www.bme.hu A rekordja nem más, mint 152.66.115.35".
 
#* De nem tudja, mert az ő feladata nem az, hogy minden gép címét tudja, hanem az, hogy tudja, kit kell megkérdezni.
 
#* Ezzel együtt fontos tudnunk, hogy akár meg is mondhatná a választ; ez a DNS egyik gyenge pontja. Bővebben később.
 
# A root szerver azt mondja, hogy ő nem tudja, de kérdezzük meg valamelyik .hu szervert, amelyeknek a nevét meg is mondja.
 
#* Emellett megmondja a nevekhez tartozó IP-ket is, ez a ''glue''.
 
#* Ha nem mondaná meg, esetleg bajban lennénk, mert a .hu szerverek neveit ugyan tudjuk, de a nekik küldendő DNS queryt az IP-címükre kell küldeni, amit valahonnan meg kell tudni...
 
# Megkérdezzük valamelyik .hu szervertől, mondjuk az ns.nic.hu-tól (193.239.148.62), hogy <tt>A? www.bme.hu</tt>.
 
#* Erre ő, ha tudná a választ, mondhatná, hogy "hohó, ídös fiam, a www.bme.hu A rekordja nem más, mint 152.66.115.35".
 
#* De nem tudja, mert az ő feladata nem az, hogy minden .hu alatti gép címét tudja, hanem az, hogy tudja, kit kell megkérdezni.
 
#* Ezzel együtt fontos tudnunk, hogy akár meg is mondhatná a választ; ez a DNS egyik gyenge pontja. Bővebben később.
 
# Az ns.nic.hu azt mondja, hogy ő nem tudja, de kérdezzük meg valamelyik bme.hu szervert, amelyeknek a nevét meg is mondja.
 
#* glue mint fent.
 
# Megkérdezzük valamelyik bme.hu szervertől, mondjuk a nic.bme.hu-tól (152.66.115.1), hogy <tt>A? www.bme.hu</tt>.
 
# A nic.bme.hu benyúl az adatbázisába, és azt mondja, hogy "hohó, ídös fiam, a www.bme.hu A rekordja nem más, mint 152.66.115.35, de ezt legfeljebb 4 óráig jegyezd meg!".
 
#* Merthogy minden DNS-rekordnak van egy TTL értéke, ennyi ideig szabad cache-elni.
 
 
Lássuk ugyanezt a parancssorból.
 
 
Előszőr használjuk a hagyományos mosóport, a host(1) programot:
 
 
<pre>
 
chardonnay:~% host -vvv -t a www.bme.hu 198.41.0.4
 
Trying "www.bme.hu"
 
Using domain server:
 
Name: 198.41.0.4
 
Address: 198.41.0.4#53
 
Aliases:
 
 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59973
 
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 6, ADDITIONAL: 6
 
 
;; QUESTION SECTION:
 
;www.bme.hu. IN A
 
 
;; AUTHORITY SECTION:
 
hu. 172800 IN NS NS.NIC.hu.
 
hu. 172800 IN NS NS2.NIC.FR.
 
hu. 172800 IN NS SUNIC.SUNET.SE.
 
hu. 172800 IN NS NS1.NIC.hu.
 
hu. 172800 IN NS NS2.NIC.hu.
 
hu. 172800 IN NS NS3.NIC.hu.
 
 
;; ADDITIONAL SECTION:
 
NS.NIC.hu. 172800 IN A 193.239.148.62
 
NS2.NIC.FR. 172800 IN A 192.93.0.4
 
SUNIC.SUNET.SE. 172800 IN A 192.36.125.2
 
NS1.NIC.hu. 172800 IN A 193.239.149.3
 
NS2.NIC.hu. 172800 IN A 193.6.16.1
 
NS3.NIC.hu. 172800 IN A 195.70.35.250
 
 
Received 251 bytes from 198.41.0.4#53 in 114 ms
 
</pre>
 
 
Látható, hogy megtudtuk, merre kell tovább érdeklődnünk, de magát a választ nem.
 
Nézzük tovább:
 
 
<pre>
 
chardonnay:~% host -vvv -t a www.bme.hu 193.239.148.62
 
Trying "www.bme.hu"
 
Using domain server:
 
Name: 193.239.148.62
 
Address: 193.239.148.62#53
 
Aliases:
 
 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50701
 
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 3, ADDITIONAL: 3
 
 
;; QUESTION SECTION:
 
;www.bme.hu. IN A
 
 
;; AUTHORITY SECTION:
 
bme.hu. 86400 IN NS ns.bme.hu.
 
bme.hu. 86400 IN NS nic.bme.hu.
 
bme.hu. 86400 IN NS ns2.pantel.net.
 
 
;; ADDITIONAL SECTION:
 
ns.bme.hu. 86400 IN AAAA 2001:738:2001:8001::2
 
nic.bme.hu. 86400 IN A 152.66.115.1
 
nic.bme.hu. 86400 IN AAAA 2001:738:2001:2001::2
 
 
Received 163 bytes from 193.239.148.62#53 in 2 ms
 
</pre>
 
 
Közeledünk, közeledünk. Végül:
 
 
<pre>
 
chardonnay:~# host -vvv -t a www.bme.hu 152.66.115.1
 
Trying "www.bme.hu"
 
Using domain server:
 
Name: 152.66.115.1
 
Address: 152.66.115.1#53
 
Aliases:
 
 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13192
 
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 5
 
 
;; QUESTION SECTION:
 
;www.bme.hu. IN A
 
 
;; ANSWER SECTION:
 
www.bme.hu. 14400 IN A 152.66.115.35
 
 
;; AUTHORITY SECTION:
 
bme.hu. 14400 IN NS ns2.pantel.net.
 
bme.hu. 14400 IN NS ns.bme.hu.
 
bme.hu. 14400 IN NS nic.bme.hu.
 
 
;; ADDITIONAL SECTION:
 
ns.bme.hu. 14400 IN A 152.66.116.1
 
ns.bme.hu. 14400 IN AAAA 2001:738:2001:8001::2
 
nic.bme.hu. 14400 IN A 152.66.115.1
 
nic.bme.hu. 14400 IN AAAA 2001:738:2001:2001::2
 
ns2.pantel.net. 35857 IN A 212.24.160.1
 
 
Received 211 bytes from 152.66.115.1#53 in 1 ms
 
</pre>
 
 
Most próbáljuk meg ugyanezt egy kevésbé ismert eszközzel, a dnsq nevűvel (a djbdns csomagban van):
 
 
<pre>
 
chardonnay:~% dnsq a www.bme.hu 198.41.0.4
 
1 www.bme.hu:
 
251 bytes, 1+0+6+6 records, response, noerror
 
query: 1 www.bme.hu
 
authority: hu 172800 NS ns.nic.hu
 
authority: hu 172800 NS ns2.nic.fr
 
authority: hu 172800 NS sunic.sunet.se
 
authority: hu 172800 NS ns1.nic.hu
 
authority: hu 172800 NS ns2.nic.hu
 
authority: hu 172800 NS ns3.nic.hu
 
additional: ns.nic.hu 172800 A 193.239.148.62
 
additional: ns2.nic.fr 172800 A 192.93.0.4
 
additional: sunic.sunet.se 172800 A 192.36.125.2
 
additional: ns1.nic.hu 172800 A 193.239.149.3
 
additional: ns2.nic.hu 172800 A 193.6.16.1
 
additional: ns3.nic.hu 172800 A 195.70.35.250
 
 
chardonnay:~% dnsq a www.bme.hu 193.239.148.62
 
1 www.bme.hu:
 
163 bytes, 1+0+3+3 records, response, noerror
 
query: 1 www.bme.hu
 
authority: bme.hu 86400 NS ns.bme.hu
 
authority: bme.hu 86400 NS nic.bme.hu
 
authority: bme.hu 86400 NS ns2.pantel.net
 
additional: ns.bme.hu 86400 28 \040\001\0078\040\001\200\001\000\000\000\000\000\000\000\002
 
additional: nic.bme.hu 86400 A 152.66.115.1
 
additional: nic.bme.hu 86400 28 \040\001\0078\040\001\040\001\000\000\000\000\000\000\000\002
 
 
chardonnay:~% dnsq a www.bme.hu 152.66.115.1
 
1 www.bme.hu:
 
211 bytes, 1+1+3+5 records, response, authoritative, weird ra, noerror
 
query: 1 www.bme.hu
 
answer: www.bme.hu 14400 A 152.66.115.35
 
authority: bme.hu 14400 NS ns2.pantel.net
 
authority: bme.hu 14400 NS ns.bme.hu
 
authority: bme.hu 14400 NS nic.bme.hu
 
additional: ns.bme.hu 14400 A 152.66.116.1
 
additional: ns.bme.hu 14400 28 \040\001\0078\040\001\200\001\000\000\000\000\000\000\000\002
 
additional: nic.bme.hu 14400 A 152.66.115.1
 
additional: nic.bme.hu 14400 28 \040\001\0078\040\001\040\001\000\000\000\000\000\000\000\002
 
additional: ns2.pantel.net 35704 A 212.24.160.1
 
</pre>
 
 
Talán látszik, hogy ennek az outputja scriptből könnyebben feldolgozható.
 
 
=== A DNS rekordtípusai ===
 
 
* A: név->IP
 
** <tt>www.bme.hu. IN A 152.66.115.35</tt>
 
* PTR: IP->név
 
** <tt>35.115.66.152.in-addr.arpa. IN PTR torpapa.eik.bme.hu.</tt>
 
** Azért így, hogy hierarchikusan lehessen delegálni,
 
* MX: melyik szerver fogadja a domainbe címzett leveleket
 
** <tt>bme.hu. IN MX 10 nic.bme.hu.</tt>
 
* NS: ki nameservere egy domainnek
 
** <tt>bme.hu. IN NS ns.bme.hu.</tt>
 
* SOA: a domain "tulajdonságai"
 
** <tt>bme.hu. IN SOA nic.bme.hu. hostmaster.bme.hu. 2006091400 43200 14400 2592000 86400</tt>
 
** elsődleges nameserver, hostmaster emailcíme, sorozatszám, refresh time, retry time, expire time, minimum time.
 
*** refresh time: ilyen gyakran frissítik magukat a secondaryk (vagy NOTIFY hatására, vagy ...)
 
*** retry time: ennyi időnként próbálkozik egy secondary, ha elsőre nem sikerült a frissítés
 
*** expire time: ha ennyi ideig nem volt kapcsolat a primaryval, a secondary tekintse elavultnak az adatokat és tagadja meg a választ
 
*** minimum time: korábban az alapértelmezett TTL, ma az NXDOMAIN (nincs ilyen cím) TTL-je
 
* TXT: megjegyzés
 
** Főleg RBL-ek használják: <tt>3.0.0.127.dnsbl.njabl.org. IN TXT "dial-up or dynamic -- 1035916206"</tt>, <tt>164.22.147.63.sbl.spamhaus.org. IN TXT "http://www.spamhaus.org/SBL/sbl.lasso?query=SBL44889"</tt>
 
* CNAME: átirányítás; minden, erre a névre vonatkozó queryvel kapcsolatban l. a másik megadott nevet.
 
** <tt>www.math.bme.hu. IN CNAME proof.math.bme.hu.</tt>
 
* HINFO: hardware info
 
** Ma már nem használják.
 
* stb.
 
 
=== A DNS-szolgáltatások típusai ===
 
 
A DNS igazából több, jól elkülöníthető szolgáltatás összessége. Ezek:
 
 
* Autoritatív DNS.
 
: Az autoritatív DNS-szervernek van egy adatbázisa, és az abban található adatokra vonatkozó kérdésekre válaszol. Más (pl. rekurzív) kérdésekre nem.
 
* Rekurzív, cache-elő DNS.
 
: Az ilyen szerver a DNS-fa rekurzív bejárását végzi el a kliensek számára, és az eredményeket cache-eli a gyorsabb kiszolgálás érdekében.
 
* Zónatranszfer (AXFR).
 
: Ez a szerver az autoritatív szerver adatbázisának replikálását végzi.
 
* Resolver stub library.
 
: Olyan függvénykönyvtár, amelyben a DNS-sel kapcsolatos funkciók vannak megvalósítva, hogy ne kelljen minden programban egyenként implementálni. Elsősorban rekurziv szerverrel kell tudnia szót érteni.
 
 
Ezekből az első hármat a BIND és a rá hasonlítani akaró szoftverek a közelmúltig összemosták.
 
 
=== Gyakori gondok a DNS-sel ===
 
 
* Poisoning
 
** Mára már nem igazán gond
 
* Glue hiánya
 
** foo.net IN NS ns.bar.com; bar.com IN NS ns.foo.net -> egyik se elérhető -> használjunk olyan nameservert, ami benne van abban a domainben, amire autoritatív, így glue-val átadható a címe is, nemcsak a neve
 
** Akkor is gond, ha nem ér körbe: sok query kell a feloldáshoz
 
* CNAME-láncok
 
* Lustaságból elhelyezett joker-bejegyzések (pl. *.com)
 
 
=== Ajánlott irodalom ===
 
 
* [http://cr.yp.to/djbdns/sample-office.html Esettanulmány], tűzfallal, kis belső hálózattal
 
* [http://cr.yp.to/djbdns/notes.html Megjegyzések a DNS működésével kapcsolatban]
 

A lap 2006. szeptember 15., 00:45-kori változata

Nézzük meg röviden, mit muszáj mindenképpen tudnunk az Internet alapvető protokolljairól.

Személyes eszközök