Telnetiranje na web poslužitelj

Web poslužitelj isporučuje klijentu stranice koristeći HTTP protokol. To je protokol aplikacijskog nivoa, specificiran dokumentom RFC2616. Iako je u navedenom dokumentu specificiran čitav niz metoda koje protokol nudi, u ovom članku navest ćemo kao primjer samo dvije - GET i HEAD.

Uobičajena uspostava veze na web poslužitelj ide tako da se klijent spoji na port usluge 80 i web poslužitelju uputi zahtjev za traženom stranicom. Ukoliko tražena stranica postoji, te ukoliko nema nekih drugih prepreka za isporuku, web poslužitelj šalje klijentu traženi dokument (ukoliko je bila riječ o html stranici) ili generiranu stranicu (ukoliko je u pitanju nekakav server-side jezik). Klijent prima niz znakova - HTML kod – te ih korisniku prikazuje na monitoru u obliku tražene stranice.

Korištenjem telneta moguće je kompletno obaviti opisanu proceduru. Jedini nedostatak je nemogućnost vizualnog uobličavanja stranice od strane telnet programa. Dakle, kao rezultat radnje dobije se niz znakova koji čine HTML kod.

Da previše ne teoretiziramo, pogledajmo primjer. Sve što nam je potrebno je otvoriti Command Prompt ili se ssh klijentom spojiti na linux poslužitelj. U komandnoj liniji upišemo naredbu:

telnet www.example.com 80<CR>

Napomene:
- www.example.com je domena rezervirana upravo za primjere (RFC2606). U praksi ju je potrebno zamijeniti sa stvarnim poslužiteljem.
- <CR> označava tipku Enter.

Ukoliko smo ovo uradili iz linux terminala dobijem sljedeći odziv:

stroj:/# telnet www.example.com 80<CR>
Trying 127.0.0.1...
Connected to www.example.com.
Escape character is '^]'.

Ako smo isto uradili iz Windows Command Prompta, u odzivu nam se pojavio samo trepereći kursor. Sada bi bio dobar trenutak za nekoliko kratkih uputa.

Prvo, bez obzira na to koji OS koristimo, i u jednom i u drugom slučaju kucanjem naredbe telnet pokrećemo telnet ljusku. Da bi komunicirali s telnet ljuskom potrebno je poslati tzv. escape karakter. Na računalima s hrvatskim postavkama taj karakter uobičajeno dobijemo istovremenim pritiskom tipki CTRL i č.

Drugo, kod windows telneta nije postavljen lokalni eho pa nam se prilikom tipkanja karakteri ne ispisuju na ekranu. Potrebno je ukucati CTRL+č, te nakon toga, u telnet ljusci upisati

set localecho<CR>
<CR>

Drugi Enter - u praznoj liniji - vraća nas u telnet konekciju.

Sada smo spremni za slanje naredbi web poslužitelju. Za početak je najjednostavnije uputiti običan zahtjev HTTP 1.0 protokolom - starijom i jednostavnijom verzijom protokola.

GET / HTTP/1.0

Kratak opis:
GET – komanda HTTP protokola kojom zahtjevamo dokument
/ - lokacija dokumenta - u ovom slučaju root web poslužitelja (index.html, index.php, ...)
HTTP/1.0 – ime i verzija protokola

Ispis komunikacije slijedi:

stroj:~$ telnet www.example.com 80
Trying 127.0.0.1...
Connected to www.example.com
Escape character is '^]'.
GET / HTTP/1.0

HTTP/1.1 200 OK
Date: Fri, 16 Mar 2007 13:43:30 GMT
Server: Apache/1.3.33 (Debian GNU/Linux) PHP/4.3.10-19 mod_ssl/2.8.22 OpenSSL/0.9.7e
Last-Modified: Fri, 02 Mar 2007 09:50:07 GMT
Accept-Ranges: bytes
Content-Length: 96
Connection: close
Content-Type: text/html

<html>
<head>
...
...
...
</html>

Connection closed by foreign host.
stroj:~$

Minimalna komunikacija naprednijom verzijom protokola zahtjeva dodatno tipkanje nekolicine parametara:

stroj:~$ telnet www.example.com 80
Trying 127.0.0.1...
Connected to www.example.com
Escape character is '^]'.
GET /index.html HTTP/1.1
Host:www.example.com
Connection:Close

HTTP/1.1 200 OK
Date: Fri, 16 Mar 2007 14:30:56 GMT
Server: Apache/1.3.33 (Debian GNU/Linux) PHP/4.3.10-19 mod_ssl/2.8.22 OpenSSL/0.9.7e
Last-Modified: Fri, 02 Mar 2007 09:50:07 GMT
Accept-Ranges: bytes
Content-Length: 96
Connection: close
Content-Type: text/html

<html>
<head>
...
...
...
</html>

Connection closed by foreign host.
stroj:~$

Postoji čitav niz dodatnih parametara definiranih dokumentom rfc2616, od kojih ćemo navesti samo nekolicinu važnijih:

Accept – tip podataka koje ste spremni prihvatiti
Accept-Charset – karakter set koji ste spremni prihvatiti
Accept-Language – jezici koje ste spremni prihvatiti
User-Agent – informacija o vašem pregledniku

Npr, promjenom polja User-Agent može se lažno predstaviti telnet program kao neki drugi preglednik:

User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)

Ukoliko želimo zatražiti od poslužitelja samo isporuku zaglavlja, to možemo uraditi naredbom HEAD:

stroj:~$ telnet www.example.com 80
Trying 127.0.0.1...
Connected to www.example.com
Escape character is '^]'.
HEAD / HTTP/1.1
Host: www.example.com
Connection: close

HTTP/1.1 200 OK
Date: Fri, 16 Mar 2007 14:35:00 GMT
Server: Apache/1.3.33 (Debian GNU/Linux) PHP/4.3.10-19 mod_ssl/2.8.22 OpenSSL/0.9.7e
Last-Modified: Fri, 02 Mar 2007 09:50:07 GMT
Accept-Ranges: bytes
Content-Length: 96
Connection: close
Content-Type: text/html

Connection closed by foreign host.
stroj:~$

Toliko o telnetiranju na port 80. Na kraju možemo samo konstatirati kako telnet klijent i nije baš neki dobar preglednik, ali je i više nego dovoljan za testiranje konekcije i odziva web poslužitelja.

Kuharice: 
Kategorije: 
Vote: 
0
No votes yet