GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
Host: net.tutsplus.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cookie: PHPSESSID=r2t5uvjq435r4q7ib3vtdjq120
Pragma: no-cache
Cache-Control: no-cache
Yukarıda örnek bir HTTP GET request mesajı görüyoruz. Bu mesajı satır satır inceleyelim.
Request line
GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
1.satırda GET metodu ile servera bir web sayfası almak istediğimizi belirtiyoruz.
GET metodunu takip eden adreste yani "Request-uri" kısmında da hangi adresteki sayfayı istediğimizi söylüyoruz.
En sondaki HTTP/1.1 ile de formalite icabı istemci olarak kullandığımız HTTP versiyonunu servera bildiriyoruz.
Host
Host: net.tutsplus.com
2.satırda Host headerı ile DNS domain name belirterek hangi domain'den bu sayfayı istediğimize açıklık getiriyoruz.
Bunun sebebi aynı serverda birden fazla domain host ediliyor olabilir. Bu yüzden de serverın hangi domain'i kastettiğimizi bilmesi gerekiyor.
İşte tam olarak bu zorunluluktan dolayı sunucuya yapılan isteklerde bulunması gereken Request line dışındaki tek zorunlu header Host headerıdır.
Bu bilgiyi 1.satırdaki path ile birleştirince URL ortaya çıkıyor.
Burada browserın ne olduğu ver versiyon bilgisi veriliyor.
Burada hangi içerik türlerini kabul ettiğimizi belirtiyoruz.
Burada hangi dilleri kabul ettiğimizi belirtiyoruz.
Burada kabul ettiğimiz karakter seti bildiriyoruz.
Burada belirtilen süre boyunca yeniden tcp connection oluşturmaya gerek kalmadan istekte bulunabilmek istediğimizi belirtiyoruz (= HTTP pipelining).
Eğer keepalive değeri belirtmezsek her istekte tekrardan yeni bir tcp bağlantısı oluşturulur.
Burada tcp bağlantısını keepalive headerinda belirttiğimiz şekilde açık tutmak istediğimizi belirtiyoruz. Eğer connection: close olsaydı hemen bağlantı kapatılacaktı.
Burada bir cookie bilgisi gönderiyoruz.
Bu mesajda Request line ve Host dışında opsiyonel headerlardan 4 tanesi eklenmiş.
İlk iki satır ile istediğimiz sayfanın URLsini host ile request-uri yi birleştirerek görebiliriz:
www.test101.com/docs/index.html sayfasını istiyoruz.
Accept headerı ile kabul edilen dosya türleri arasında gif ve jpeg imajları da bulunduğunu,
Accept-language headerı ile en-us dilini kabul ettiğimizi,
Accept-encoding headerı ile gzip, deflate kodlama türlerini kabul ettiğimizi,
User-Agent headerı ile de Mozilla 4.0 tarayıcısı kullandığımızı ,
servera bildiriyoruz.
Boş satır ile de mesaj son buluyor.
Bunun sebebi aynı serverda birden fazla domain host ediliyor olabilir. Bu yüzden de serverın hangi domain'i kastettiğimizi bilmesi gerekiyor.
İşte tam olarak bu zorunluluktan dolayı sunucuya yapılan isteklerde bulunması gereken Request line dışındaki tek zorunlu header Host headerıdır.
Bu bilgiyi 1.satırdaki path ile birleştirince URL ortaya çıkıyor.
User-Agent
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)Burada browserın ne olduğu ver versiyon bilgisi veriliyor.
Accept
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Burada hangi içerik türlerini kabul ettiğimizi belirtiyoruz.
Accept-language
Accept-Language: en-us,en;q=0.5Burada hangi dilleri kabul ettiğimizi belirtiyoruz.
Accept-charset
Accept-Encoding: gzip,deflateBurada kabul ettiğimiz karakter seti bildiriyoruz.
Keep-alive
Keep-Alive: 300Burada belirtilen süre boyunca yeniden tcp connection oluşturmaya gerek kalmadan istekte bulunabilmek istediğimizi belirtiyoruz (= HTTP pipelining).
Eğer keepalive değeri belirtmezsek her istekte tekrardan yeni bir tcp bağlantısı oluşturulur.
Connection
Connection: keep-aliveBurada tcp bağlantısını keepalive headerinda belirttiğimiz şekilde açık tutmak istediğimizi belirtiyoruz. Eğer connection: close olsaydı hemen bağlantı kapatılacaktı.
Cookie
Cookie: PHPSESSID=r2t5uvjq435r4q7ib3vtdjq120Burada bir cookie bilgisi gönderiyoruz.
Pragma
Pragma: no-cacheCache-control
Cache-Control: no-cacheBir başka request örneği:
GET /docs/index.html HTTP/1.1 Host: www.test101.com Accept: image/gif, image/jpeg, */* Accept-Language: en-us Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) (blank line)
Bu mesajda Request line ve Host dışında opsiyonel headerlardan 4 tanesi eklenmiş.
İlk iki satır ile istediğimiz sayfanın URLsini host ile request-uri yi birleştirerek görebiliriz:
www.test101.com/docs/index.html sayfasını istiyoruz.
Accept headerı ile kabul edilen dosya türleri arasında gif ve jpeg imajları da bulunduğunu,
Accept-language headerı ile en-us dilini kabul ettiğimizi,
Accept-encoding headerı ile gzip, deflate kodlama türlerini kabul ettiğimizi,
User-Agent headerı ile de Mozilla 4.0 tarayıcısı kullandığımızı ,
servera bildiriyoruz.
Boş satır ile de mesaj son buluyor.
Hiç yorum yok:
Yorum Gönder