"Merhaba, Amigo!"

"Merhaba, Bilaabo!"

"Bugün bana hangi yeni şeyi anlatacaksın?"

"Pek çok şey. Ama başlangıç ​​olarak, sanırım bir ağ ve İnternet ile çalışmayı tartışacağız. İlgilenir misiniz?"

"Evet. Galaktik İnternet süper havalı."

"Tamam ama biraz tarihle başlayalım. 21. yüzyılın başında durum şuydu..."

"İnternete bağlı her bilgisayarın benzersiz bir numarası vardı. Bu, 4 baytlık sıradan bir sayıydı. Buna IP adresi deniyor."

"Fakat insanların hafızası zayıf ve 2108458776 gibi bir şeyi hatırlamakta zorlanıyor, bu yüzden genellikle her baytı ayrı ayrı yazıyorlar."

"Dört baytlık 2108458776 sayısını ayrı baytlara ayırırsak 125.172.135.24 elde ederiz. Hatırlayacağınız gibi her bayt 8 bitten oluşur ve 0'dan 255'e kadar sayılar içerebilir."

"Yani, numarayı böyle mi yazıyoruz?"

"Evet. Dört baytlık sayıları bu şekilde yazıldığında (insanlar için) hatırlamak daha kolay oluyor."

"Aslında, yalnızca 4 bayt kullanma seçimi kısa sürede onlara acımasız bir oyun oynadı. İnternete bağlı cihazların sayısı o kadar hızlı arttı ki, kısa sürede sayıları tükendi."

"Bunu nasıl anladılar?"

"İnsanların tipik olarak yaptığı şeyi yaptılar."

"IP adresleri için yeni bir standart buldular ve buna gururla IPv6 adını verdiler."

"Benzersiz bir sayı oluşturmak için 4 bayt kullanan normal bir IP adresinin (IPv4 olarak adlandırılır) aksine, yeni standart 16 kullanır."

"Düşünsenize, insanlar sıradan bir sayıdaki (2108458776 gibi) 10 haneyi hatırlayamıyorlardı, bu yüzden onları 4 parçaya bölmek zorunda kaldılar ama sonra 16 bayttan oluşan sayıları kullanmayı düşündüler."

"Evet, bazen insanlar tuhaf oluyor."

"Evet. İnsanlar insandır."

"Bununla birlikte, içinde bulundukları çıkmazdan kurtuldular."

"Sayıları hatırlamaktan yoruldular ve onları kelimelerle değiştirmeye karar verdiler."

"Bu nasıl? Bana bir örnek verebilir misin?"

"Elbette web.mail.com , google.com , new.books.amazon.com , ..."

"Bu tür bir isme etki alanı denir."

"Bu internetin düzgün çalışması için, her alan adının IP adresini saklayan Alan Adı Sistemi (DNS) adı verilen özel bir tablo oluşturdular."

"İşte böyle çalışıyor."

1)  Kullanıcı tarayıcıya bir adres girer, örneğin web.mail.com .

2)  Tarayıcı DNS'ye erişir ve IP adresini almak için alan adını kullanır.

3)  Bu IP adresine gerekli URL'ye sahip bir istek gönderilir.

"Bu pek basit görünmüyor."

"Ancak bu yaklaşımın birkaç faydası var:"

" 1) İnsanlar, sözlü olarak ifade edilebilen isimleri hatırlamayı kolay buluyor."

" 2) Alan adları, bir adın başına alt alanlar eklenerek hiyerarşik olarak oluşturulabilir. Aynen Java'daki bir paket adı gibi."

" 3) Web sunucusunun IP adresini değiştirmeniz gerekirse, yalnızca DNS kaydını değiştirmeniz gerekir ve her şey eskisi gibi çalışır — kullanıcıların yeni bir adresi hatırlaması gerekmez."

"DNS şuna benzer:"

Alan adı IP adresi
posta.com 128.35.36.189
web.posta.com 145.12.17.13
yeni.mail.com 192.155.15.3
google.com.tr 92.117.151.100
google.com.tr 193.168.0.1
dokümanlar.google.com.tr 217.12.222.1

"Mantıklı."

"Her neyse, etki alanı bilgisayarın adıdır, ancak bizim bilgisayara değil, bilgisayardakilere ihtiyacımız var. URL'ler bunun için var."

"Başlangıçta, bir URL aslında başka bir bilgisayardaki bir dosyanın bağlantısıydı. Örneğin:"

Örnek
http://info.codegym.cc / user / info /profile.html
Tanım
http  , istemci-sunucu iletişimi protokolüdür.
info.codegym.cc  , bilgisayarın etki alanı adıdır
user/info/profile.html,  bilgisayardaki dosyanın yoludur

"Ağ geliştirmenin en başında, bir web sunucusu yalnızca bir yerde depoladığı dosyalara hizmet vermek için bir URL kullanabiliyordu. URL aslında dosyaya giden genel bir yoldu: bilgisayar adı + yol."

"Daha sonra web sunucuları kendi kendine dosya oluşturmaya başlayınca, URL'ler biraz değişti ve web sunucusuna yapılan bir istek haline geldi. İstek parametreleri de eklendi."

"Bugün bir URL'nin sonunda bir dosya uzantısı görmek nadirdir. "Modern bir URL, yalnızca parametrelere sahip benzersiz bir bağlantıdır. Genel bir dosya yolundan çok bir yöntem çağrısı gibi."

"Klasik modern bir URL şuna benzer:"

URL'yi ayrıştırma
http://codegym.cc / alpha /api/ contacts ? userid=13&filter=yok&sayfa=3
URL'nin bölümlerinin açıklaması
codegym.cc  alan adıdır — İnternet'teki bir bilgisayarın benzersiz adı (adresi).
http,  istemci-sunucu iletişimi için protokoldür
alpha/api/contacts,  web sunucusu isteği veya sunucudaki bir web sayfası için istektir
userid=13 & filter=none & page=3,  istek parametrelerini içeren bir dizedir

"Evet, hatırlıyorum. Geçenlerde bana URL'lerden bahsetmiştin."

"Limanlar konusunda da. Bir apartman örneğini kullandın."

"Bana 'http'nin ne olduğunu söylesen daha iyi olur. Her yerde 'protokol' yazdığını görüyorum ama bunun ne olduğu konusunda net değilim."

"Tamam. Daha fazla uzatmadan anlatacağım."

IP adresi, etki alanı, URL - 1

" HTTP, Hiper Metin Aktarım Protokolü anlamına gelir ve köprü metni aktarımı içindir . "

"Köprü metni nedir?"

"HTML'dir."

"Kabaca konuşursak, bir protokol iletişim için bir dizi kuraldır. Bir web sunucusuna hangi biçimde gönderilebilecek isteklerin yanı sıra web sunucusunun nasıl yanıt vermesi gerektiğini açıklar."

"Kısacası durum şu. İstemci ve sunucu arasında sıradan metin dosyaları veya dilerseniz büyük metin parçaları gönderiliyor. "

" Sunucuya bir istek gelir ve sunucu her isteğe bir yanıt verir."

"İşte böyle bir istek ve yanıtın örnekleri:"

Rica etmek
GET alpha/api/contacts HTTP/1.1
Host: codegym.cc
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5
Accept: text/html
Connection: close
Tanım
GET – request subtype
alpha/api/contacts – request to the web server
HTTP/1.1 – protocol version – HTTP/1.1
Host: codegym.cc – domain name
User-Agent: Mozilla/5 – unique browser name
Accept: text/html – requested document type: HTML
Connection: close – close the server connection after processing the request.

"İlk satır gerçek istektir. Aşağıda, 'başlık alanları' olarak da bilinen ek istek parametreleri yer alır."

"Ve işte bir yanıt örneği:"

Cevap
HTTP/1.1 200 OK
Date: Wed, 11 Feb 2009 11:20:59 GMT
Server: Apache
X-Powered-By: PHP/5.2.4-2ubuntu5wm1
Last-Modified: Wed, 11 Feb 2009 11:20:59 GMT
Content-Language: en
Content-Type: text/html; charset=utf-8
Content-Length: 1234
Connection: close
<html><body><a href="http://ample.com/about.html#contacts">Click here</a></body></html>
HTTP/1.1 200 OK - «200 OK» means everything is okay.
Date: Wed, 11 Feb 2009 - Date on which the request was processed
Server: Apache - Name of the web server
X-Powered-By: PHP - The server uses PHP
Last-Modified: Wed, 11 Feb 2009 - The time of the last update of the requested file
Content-Language: en - The language of the file
Content-Type: text/html; charset=utf-8This is an HTML-file with UTF-8 encoding
Content-Length: 1234 - The response is 1234 bytes long
Connection: close - The connection will be closed after the request is handled
<html><body><a href="http://ample - The HTML file itself.

"İki şeye dikkatinizi çekmek istiyorum:"

"Birincisi, ne talep ederseniz edin, sunucuya bir dosya isteği gibi görünür. Dosyanın sunucuda olması veya sunucunun isteğe yanıt olarak onu oluşturması fark etmez."

"İkinci olarak, dosyanın kendisi HTTP yanıtının bir parçası olarak gönderilir . Diğer bir deyişle, sunucunun yanıtının başında bazı ek veriler ve ardından sunulan dosyanın gövdesini görürüz. "

"Ne kadar ilginç! Her şeyi anladığımdan emin değilim. Bunu daha sonra tekrar okuyacağım."

"Ah, sana küçük ama ilginç bir şeyden daha bahsetmek istiyorum: kurabiyeler."

"Onlar ne?"

"HTTP protokolüne göre çerezler, sunucunun istemcide depolamak üzere istemciye gönderdiği küçük bilgi parçalarıdır. Sonraki isteklerin bir parçası olarak sunucuya geri gönderilirler. "

"Peki bunun anlamı ne?"

"Bir kullanıcının bir web sitesinin ana sayfasında oturum açtığını varsayalım. Sunucu, bu kullanıcı için sunucu üzerinde bir oturum nesnesi oluşturur ve istemciye benzersiz bir oturum numarası çerez olarak gönderilir. İstemciden istemciye bir sonraki istek sırasında sunucu, bu oturum numarası diğer tanımlama bilgileriyle birlikte sunucuya geri gönderilecek. Bu, sunucunun yeni istek gönderen kullanıcıyı tanıyabileceği anlamına gelir."

"Ne kadar ilginç!"

"Evet. Kendi servlet'lerinizi yazarken bu konuya daha yakından bakacağız. Ama şimdilik bir ara verelim."

"Sen ne dersen."