![[Top bar]](../../common/images/Topbar-tr.gif)
![[Bottom bar]](../../common/images/Bottombar-tr.gif) 
| ![[Photo de 
l'auteur]](../../common/images/Charles-V.jpg)  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: | 
![[Illustration]](../../common/images/illustration129.gif)
Ö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