Bu makalenin farklı dillerde bulunduğu adresler: English Castellano Deutsch Francais Italiano Nederlands Russian Turkce |
by Charles vidal Yazar Hakkında: Chairman of a gastronomical lug in Paris. Yazar, Açık Kod sisteminin ve GNU'nun ardındaki felsefeyi benimsemiştir, çünkü bu felsefe bilgi paylaşımına yardımcı olmaktadır. Yazar ayrıca boş zamanlarında saksafon çalmaktan hoşlanır. İçerik: |
Özet:
Bu makale en çok kullanılan web sunucusu olan Apache hakkında olup iki bölüm olarak hazırlanmış tüm anlatımın ilk kısmıdır. Bu bölümde, WWW 'nin kısa bir tarihini tanımlarken ikinci bölümde HTTP protokolüne bir giriş yapacağım.
Apache, bu ücretsiz WEB
sunucusu projesinin ismidir. Apache ismi hafif bir tartışmanın
ortasında kalmıştır. Bazıları ismin "a
patchy server" 'dan geldiğini iddia ederler
çünkü başlangıçta sayısız yama(patch)dan
oluşturulmuştur (yine bir hacker taktiği :) ). Diğer bir kesim
ise duruma daha ciddi bir hava ile yaklaşmaktadır. Bu kesime göre
proje ismi Apache kabilesinden esinlenerek yaratılmıştır. Her
durumda ortama yüksek uyum gücüne sahip bir kabile!
Apache şu anda internette en çok kulanılan WEB sunucusudur. O,
consortium w3 tarafından
standartlaştırılan HTTP
protocol (1.1) 'e uyumludur.
1999 'da yapılan bir Net sunucuları
araştırması,
Apache WEB sunucusunun tüm sunucular içinde %60,05 lik bir
kullanım payına sahip olduğunu göstermektedir.
Bir WEB sunucusu sunucu-istemci (anatar-kilit gibi) ikilisinin
"sunucu" tarafını oluşturur. Bir sunucu "WEB
istemcileri" 'den gelen istemlere yanıt verir. Öreneğin,
lynx WEB gezginlerinde olduğu gibi :-).
Üç parçaya ayrılmış bir satırlık yazıdır :
Cevap istem tipine bağlı olarak bir gövde ve bir başlık kısımları olmak üzere oluşturulur.
>telnet www.linuxfocus.org 80 Trying 213.239.9.21... Connected to nova.linuxfocus.org. Escape character is '^]'. GET / HTTP/1.0 <return> <return> HTTP/1.1 200 OK Date: Mon, 27 Sep 1999 21:23:20 GMT Server: Apache/1.3.3 (Unix) (Red Hat/Linux) Last-Modified: Sun, 26 Sep 1999 16:40:44 GMT ETag: "4b005-1616-37ee4c8c" Accept-Ranges: bytes Content-Length: 5654 Connection: close Content-Type: text/html <PAGE HTML> |
Bu cevap ne diyor?
Telnet ile bağlanma işlemi tamamlandıktan sonra "GET /
HTTP/1.0" istemine cevap verilmeye başlanıyor. İlk satır
(HTTP/1.1 200 OK) kullanılan protokolü ve sunucunun dönüş
değerini gösteriyor (dönüş değerinin 400 den büyük
olması bir hata olduğuna işaret eder). Bu satırı tarih,
sunucunun sürüm numarası , URL üzerinde yapılan son
değişikliğin tarihi (ki bu tarih istemcinin URL 'de yer alan
dosyaların zaten onun cache(gizli saklama bölgesi) inde yer alıp
almadığını bilmesini sağlar). "Content-Length" ifadesi
gönderilen cevabın uzunluğunu belirtir (benzer şekilde bir CGI
(Common Gateway Interface) betiğine yapılacak istemden alınacak
cevap böyle bir ifade içermez) ve son olarak "Content-Type" ifadesi
istemciye cevap verilirken kullanılan MIME tipini gösterir (text,
html, images ...).
Bu tam olarak bir açıklama sayılmaz. Bazı satırlar hala
bende gizli kaldı ;-)
Şimdi de bir hata durumunda neler olacağına bakalım :
>telnet www.linuxfocus.org 80 Trying 213.239.9.21... Connected to nova.linuxfocus.org. Escape character is '^]'. get / HTTP/1.0 <return> <return> HTTP/1.1 501 Method Not Implemented Date: Mon, 27 Sep 1999 21:22:03 GMT Server: Apache/1.3.3 (Unix) (Red Hat/Linux) Allow: GET, HEAD, OPTIONS, TRACE Connection: close Content-Type: text/html |
Gördüğünız gibi, başlık "HTTP/1.1 501 Method Not
Implemented (HTTP/1.1 metodu yerine getirilemedi)" diyerek durumu
yeterince açıkladı zaten ;-)
HTTP -bu örnekte de gördüğümüz gibi- gerçekten çok
basit bir protokoldür.
>telnet www.linuxfocus.org 80 Trying 213.239.9.21... Connected to nova.linuxfocus.org. Escape character is '^]'. GET / < return > < return > |
Apache sunucusunun içinde neler oluyor ?
Telnet komutunu kullanarak www.linuxfocus.org (IP adresi 195.53.25.1) 'a
80. port(giriş kapısı diyebiliriz herhalde :) ) 'undan
bağlandıktan sonra (port 80 http sunucular için standart port
kabul edilir) sunucu her hangi bir istem için beklemeye geçer. GET/
komutu ile beraber iki return(devam-enter) işareti verirsiniz.
Neden iki return(devam) işareti ?
İlk return işaretinden sonra verilen son return işareti
sunucuya boş bir satır gönderir. Sunucu boş satırı
gördüğünde istemin tamamlandığını anlar.
Sunucu isteme istek dosyası (index.html) ile cevap verir. TCP/IP
bağlantısı istek dosyasını transferinden hemen sonra
kapatılacaktır.
Gördüğünüz gibi, istemci ve sunucu arasında kullanılan dil gerçekten çok basittir ancak HTTP/1.0 sürümü yerine HTTP/1.1 sürümünü kullandığınızda isteminiz için zorluk biraz artacaktır.
GET / HTTP/1.0< return > < return > HTTP/1.1 200 OK Date: Tue, 24 Aug 1999 22:25:11 GMT Server: Apache/1.3.3 (Unix) (Red Hat/Linux) Last-Modified: Sun, 01 Aug 1999 11:50:52 GMT ETag: "4b005-1462-37a4349c" Accept-Ranges: bytes Content-Length: 5218 Connection: close Content-Type: text/html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> ....fakat 1.1 'i kullanmak şu sonuçları verir :
GET / HTTP/1.1 <return > < return > HTTP/1.1 400 Bad Request Date: Tue, 24 Aug 1999 22:24:59 GMT Server: Apache/1.3.3 (Unix) (Red Hat/Linux) Connection: close Transfer-Encoding: chunked Content-Type: text/html <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <HTML><HEAD> <TITLE>400 Bad Request</TITLE> </HEADBODY> <H1>Bad Request</H1> Your browser sent a request that this server could not understand.<P> client sent HTTP/1.1 request without hostname (see RFC2068 section 9, and 14.23): </P> </BODY></HTML>Yeni HTTP/1.1 protokolünü kullanmak daha fazla bilgi alanı kullanılmasını gerektirir. Bu protokol birçok satır üzerinden yapılandırılmaktadır. Bu ilave satırlar daha kesin bilgiler iletilmesini sağlarken diğer yandan iletişimin kalitesini yükseltir.
Örnek :
GET / HTTP/1.0< return > Host:www.linuxfocus.org< return > < return > [...]Bu durum birçok istemci-sunucu çiftinde sorunsuz işlemektedir. Sunucu istemi cevaplarken :
WEB sunucusu WEB istemcisi ile sorgulanan URL (Uniform Request Locator) arasında bir arayüzdür - bu özet tabiki sunucunun yalnızca URL için kullanılabileceği anlamına gelmez. Ayrıca sunucu URI, URN bulmak içinde kullanılabilir. Aslında basitçe hepsi aynı şeylerdir - ve Apache sunucusu işletim sistemi üzerinde çalışmaktadır.. WEB istemcisi kendi istemlerini gönderir ve sunucuda isteme sunulabilecek uygun bir URL ile cevap verir.
İstemci tarafından gönderilen bazı istemler bazı durumlarda direkt olarak sunucu tarafından cevaplanmaz. Sunucu istemi bir diğer programa aktarabilir ve programın döndürdüğü dönüş değerini istemciye cevap olarak iletebilir. Bu duruma CGI betikleri örnek olarak gösterilebilir.
|
Bu WEB
sayfaları LinuxFocus Editör Takımı tarafından
hazırlanmaktadır.
© Charles vidal LinuxFocus.org 2000 Linuxfocus 'a hata bildirmek yada bir yorum göndermek için buraya tıklayınız |
Çeviri bilgisi:
|
2000-05-01, generated by lfparser version 1.5