09. ინტერნეტი
შესავალი
ისტორია
1969 წელს UCLA-ის სტუდენტი ARPANET-ის ქსელში სტენფორდს დაუკავშირდა.და მეორე ცდაზე მესიჯი "login" გააგზავნა.
(რამდენი ბაიტი იქნებოდა ეს მესიჯი?)
ARPANET არის პირველი კომპიუტერული ქსელი. ამ დროს მასში ოთხი უნივერსიტეტის კომპიუტერი იყო ჩართული. დაკავშირების შემდეგ შეეცადა სისტემაში შესულიყო, და login-ბრძანების აკრეფვისას სტენფორდის სისტემა 'დაიქრაშა'. დაახლოებით ერთ საათში მიმღები კომპიუტერის პარამეტრების შეცვლის შემდეგ მცდელობა წარმატებით დასრულდა. სურათზე ხედავთ მიმღები კომპიუტერის მსგავს მოდელს.
მოცემულობა და შეზღუდვები
4 ცალი კომპიუტერიდან 50 მილიარდამდე:
- დღეში 8 ბაიტიდან წამში 100 000 გეგაბაიტამდე
- 100 000 000 000 000-ჯერ მეტი
ანუ დღეს ერთ წამში ას ტრილიონჯერ მეტი მონაცემები გაიგზავნა, ვიდრე ინტერნეტის პირველ დღეს. დღის რიცხვს ჩვენი ტვინი კიდევ უფრო ვერ აღიქვამს (ასევე მაგდენ ნოლიანს რა ქვია, ვერ ვიხსენებ). დღეში კი კიდევ 60x60x24=86,400-ჯერ უფრო მეტი.
ერთი ინტერნეტ პაკეტი პლანეტის ერთი ბოლოდან მეორემდე 10-20 კომპიუტერს გაივლის და ამას 0.1 მილიწამსაც კი არ ანდომებს
და მნიშვნელოვანია ისიც, რომ ამ ყველა კომპიუტერს შორის სხვადასხვა კავშირია. ჯერ wifi-თ უკავშირდები შენს როუტერს, რომელიც სახლში დგას. როუტერი უკავშირდება მოდემს, რომელიც ანაწილებს ინტერნეტ კავშირს შენობაში. შეიძლება ქუჩაზე ჯერ ოპტიკური კაბელი არ არის, ანუ რაღაც მომენტში გადაერთვება ერთიდან მეორეზე. თუ ოკეანის გადაღმა გზავნით, თითქმის მთელი ევროპის პაკეტებთან ერთად იგზავნება უზარმაზარი ტრანს ატლანტიკური კაბელით.
მთავარი პრინციპები
როგორ არის შესაძლებელი, რომ ინტერნეტი ასეთი მასშტაბური, მრავალფეროვანი და სწრაფი იყოს? და უფრო მეტიც, ნახევარი საუკუნის წინ შექმნილი მოდელს დღეს მილიარდობით მოწყობილობა უპრობლემოდ იყენებდეს? მთავარი მიზეზი ის არის, რომ ინტერნეტისთვის საჭირო ფუნქციები დაყოფილია ერთმანეთისგან მკაცრად იზოლირებულ შრეებად, ისე, რომ სხვადასხვა პრობლემების გადაჭრებმა ერთმანეთს ხელი არ შეუშალონ/არ შეზღუდონ. ამ შრეების გაცნობის შემდეგ უკეთ გაიგებთ რაზე ვსაუბრობ. ნებისმიერი დიდი და რთული სისტემის შექმნისას აუცილებელია შემადგენელი ელემენტები რაც შეიძლება მინიმალისტური იყოს. ეს სტრატეგია ხშირად გამოიყენება კომპიუტერულ მეცნიერებებში (გაიხსენეთ დეკომპოზიცია).
თითოეულ შრეს აქვს ორი მთავარი კომპონენტი
ინტერფეისი
პასუხისმგებლობა, რომლის შესრულებასაც პირდება შრე (ან სერვისი, ფუნქცია). ინტერფეისი პასუხობს კითხვას რა და არა როგორ. ინტერფეისს სრული თავისუფლება აქვს, როგორც უნდა ისე შეასრულოს ნაკისრები ვალდებულება. განსაზღვრული (რასაც უნდა დაემორჩილოს) არის მხოლოდ მოცემულობა და შედეგი. რაც უფრო პატარა და კარგად განსაზღვრულია პასუხისმგებლობა, უფრო მეტ სხვადასხვა პრობლემაზე შეგვიძლია გამოვიყენოთ ეს სერვისი.
პროტოკოლი
წინასწარ შეთანხმებული პრინციპები, რომლითაც ერთი შრის ორი სუბიექტი ერთმანეთს უკავშირდება. მაგალითად, იმისთვის, რომ wifi კავშირი გვგქონდეს, გვჭირდება wifi სიგნალის გამცემი და ჩვენს კომპიუტერზე ან ტელეფონზე მისი მიმღები. Wifi-ს bluetooth-ით ვერ დავუკავშირდებით. მიუხედავად იმისა, რომ ეს ორი პროტოკოლი ერთი და იმავე პასუხისმგებლობას ასრულებს (მონაცემთა გადაცემა ერთი მოწყობილობიდან მეორეში), მათ ერთმანეთის არ ესმით.
პრობლემები, რომლებიც უნდა გადავჭრათ
ლექციის ბოლოს, მნიშვნელოვანია იცოდეთ ინტერნეტის რომელი შრე არის პასუხისმგებელი თითოეული საკითხების მოგვარებაზე:
- გავგზავნოთ ბიტები და ბაიტები ანალოგი სიგნალით
- გავიგოთ ყველაზე მოკლე გზა ერთი კომპიუტერიდან მეორემდე
- დავშალოთ მესიჯი ინტერნეტ პაკეტებად და სწორი თანმიმდევრობით ავაწყოთ
- მივანიჭოთ მოწყობილობებს მისამართი
- გამოვიყენოთ bandwidth
- სხვადასხვა მედიუმის/პროვაიდერის გამოყენება კავშირისთვის
- დაკარგული პაკეტების პოვნა/აღდგენა
- კავშირის დაზიანების პოვნა/აღდგენა
ინტერნეტის შრეები
1. Physical layer
ციფრული და ანალოგური ინფორმაციის პრინციპები
- ანალოგი - ის, რაც ფიზიკურად არსებობს
- ციფრული - რიცხვებში კონვერტირებული ანალოგი
მათ დასაკავშირებლად გვჭირდება მოწყობილობა, რომელიც დააკონვერტირებს ინფორმაციას.
მაგალითები
- სურათის გადაღება ფირზე ანალოგი ოპერაციაა, დასკანერებისას ვაკეთებთ კონვერტირებას png-ში
- ოპტიკურ კაბელში 1 და 0-ების გაგზავნა ხდება სინათლის სიმძლავრით. მაღალი სინათლე - 1, დაბალი - 0
- აუდიოს ვინილზე ჩაწერა ანალოგი ოპერაციაა, ხოლო მიკროფონით ბიტებად და ბაიტებად გარდაქმნისთვის გვჭირდება მოწყობილობა, რომელიც გადააკონვერტირებს ტალღას რიცხვებში
- wifi სიგნალი არის ფიზიკური ტალღა, wifi card კი აკონვერტირებს რიცხვსა და ტალღას შორის
პასუხისმგებლობა
ფიზიკური შრის მოვალეობაა ციფრული სიგნალის ანალოგურში (და პირიქით) გადათარგმნა
ჩიპის გამოყენებით მიღებული ინფორმაციის წაკითხვა/ჩაწერა ისევე შეიძლება, როგორც მეხსიერებიდან - უბრალოდ 1 და 0-ების მიმდევრობას ვიღებთ.
პროტოკოლები
- dsl
- Bluetooth
- ethernet/wifi
- usb
- infra red
usb განსაკუთრებით მძლავრი პროტოკოლია, დააკვირდით რამდენი სრულიად განსხვავებული მოწყობილობა იყენებს - პორტატული დრაივი, პრინტერი, MIDI.
ერთი პროტოკოლით ორ მოწყობილობას შორის კავშირისთვის აუცილებელია ორივე მოწყობილობას ქონდეს adc/dac (analog to digital/digital to analog) ბარათი. მაგალითად, თუ ლეპტოპს wifi ბარათი არ აქვს, wifi ქსელში ვერ ჩავერთვებით. თუ router-ს wifi ფუნქცია არ აქვს (და მხოლოდ შნურის შესაერთებელი აქვს), ლეპტოპზე wifi-თ ვერ დავუკავშირდებით, მხოლოდ შნურით
2. Data Link layer - ბმული
თუ გვჭირდება 50 მილიარდი კომპიუტერი დავაკავშიროთ, პირველი, რასაც უნდა შევაცადოთ, არის 2 კომპიუტერის დაკავშირება.
პასუხისმგებლობები
- ფიზიკურ შრეზე დაკავშირებულ ორ მოწყობილობას შორის ინფორმაციის მიმოცვლა
- ფიზიკურ შრეზე დაკარგული ინფორმაციის აღმოჩენა/კორექტირება
- ინფორმაციის დასაწყისის და დასასრულის მონიშვნა (რომ უწყვეტად მიდიოდეს კავშირი). რამდენიმე სხვადასხვა გზავნილის დაჯგუფება (და შემდეგ განცალკევება), რომ ფიზიკური კავშირი მაქსიმალური ეფექტურობით იყოს გამოყენებული.
3. Network Layer - ქსელი
რადგანაც ფიზიკური კავშირის პრობლემა მოგვარებულია, შეგვიძლია დავივიწყოთ, ქსელში რომელი ორი წყვილი რა გზითაა დაკავშირებული. აქ უბრალოდ იმაზე უნდა ვიფიქროთ, ყველაზე სწრაფი გზით როგორ მოვაგვაროთ ჩამოთვლილი პრობლემები.
პასუხისმგებლობები
- ქსელის ორ წერტილს (კომპიუტერს) შორის ყველაზე მოკლე (სწრაფი) გზის პოვნა
- ქსელის დატვირთვის გადანაწილება
პროტოკოლები
მხოლოდ ერთი - IP
აქამდე განხილული შრეები მხოლოდ ორი კომპიუტერის დაკავშირებას ეხება. ქსელში ბევრი კომპიუტერი შედის და ერთმა მესიჯმა რამდენიმე მათგანი უნდა გაიაროს. ამისთვის მნიშნველოვანია, რომ ყველამ იცოდეს სად გადააგზავნოს მესიჯი. ამიტომ ინტერნეტში ქსელის ერთი პროტოკოლი არსებობს - IP მისამართი, უნიკალური იდენთიფიკატორი, რომელიც ქსელში ჩართულ ყველა კომპიუტერს აქვს.
გზის პოვნა ორ მოწყობილობას შორის
ყველაზე მნიშვნელოვანი გზის გამოთვლაა. ყველა გადამრთველმა რომ ყველა დანარჩენთან გზა გამოთვალოს და დაიმახსოვროს, ორ პრობლემას წააწყდება:
- არ ეყოფა დრო და ადგილი მეხსიერებაში
- ეს გზა ყოველ წამს იცვლება და ასეულობით წელი რომც არ ჭირდებოდეს ამ გამოთვლას, ერთ წამში უკვე უსარგებლო იქნებოდა.
ამიტომ იმის მაგივრად, რომ მთლიანი გზა დაიმახსოვრონ, ინტერნეტში თითოეულ გადამრთველს აქვს ცხრილი სხვა მისამართების და იმახსოვრებს მხოლოდ შემდეგ გაჩერებას ამ მისამართის (ან მისამართების ჯგუფის გზაზე). დაფიქრდი, ერთი ქალაქიდან მეორეში ქალაქში კონკრეტულ მისამართზე რომ მიდიოდე. გაგიჭირდება ვინმეს პოვნა, ვინც მთლიანი გზა დეტალურად იცის. ეს გადამრთველები ასევე პერიოდულად ამოწმებენ, რამდენად გადატვირთული არიან მათი მეზობლები და მხოლოდ ახლო გარემოზე დაკვირვების გზით ცდილობენ პაკეტთა ნაკადის განაწილებას.
ზემოთა სურათის ცოდნა არაა სავალდებულო
რატომ არის საჭირო მესიჯების დაყოფა პაკეტებად?
რაც შეეხება გზავნილის ზომას, დიდი გზავნილის პატარებად დაყოფა ნიშნავს, რომ ქსელში სხვადასხვა გზით შეძლებენ წასვლას და უფრო მალე მივა ყველა ერთად, ვიდრე ერთი მეორის დალოდებისას. კიდევ რამდენიმე სხვა მიზეზის გამო, ინტერნეტ პაკეტები საკმაოდ მცირეა და მესიჯების დიდი (მაგრამ არა ყველა) ნაწილი უნდა დაიშალოს და მიღებისას აიწყოს.
ინტერფეისის შეზღუდვები
დაკარგული პაკეტების თავიდან გაგზავნა ორი მიზეზის გამო არ გვაწყობს: 1. მეხსიერება 2. დრო
ძალიან დიდი მეხსიერება დაჭირდება რამდენიმე მილიარდ გადამრთველს, რომ გამავალი პაკეტები შეინახონ. ასევე, დიდი ზომის მონაცემთა დისკზე შესანახად ჩაწერა/წაშლა წამში ასჯერ არც ისე სწრაფია.
ყველა გადართვა ორჯერ უფრო მეტ ხანს გაგრძელდება, რადგან შეფერხება იქნება დასტურის მოლოდინში. ამის გამო, ეს პრობლემა შემდეგი შრის მოსაგვარებელია.
4. ტრანსპორტი
პასუხისმგებლობები
- პაკეტების დანომვრა, აწყობა
- დაკარგული პაკეტების აღმოჩენა და თავიდან გაგზავნა
ამ პრობლემის მოგვარების ორი მთავარი გზა (პროტოკოლი) არსებობს:
პროტოკოლები
TCP
- ინფორმაციის მიმოცვლამდე კომპიუტერები ამოწმებენ კავშირს (3 way handshake)
- თითოეული ინტერნეტ პაკეტის გაგზავნის შემდეგ ელოდები დასტურს (ასევე ინტერნეტ პაკეტად გამოგზავნილ მესიჯს).
რა შემთხვევებში არის ეს პროცედურა ზედმეტი?
- ვიდეო ზარი - 2 წამის წინანდელი ნათქვამი რაში გვჭირდება?
კავშირის და ყოველი პაკეტის დასტურის გზავნა და ლოდინი დროის მხრივ ძვირი ოპერაციებია და ყოველთვის არ ღირს.
UDP
ინტერნეტ პაკეტს აგზავნი და წარმატებებს უსურვებ :)
თუ არ ვამოწმებთ მივიდა თუ არა, აბა საიდან იგებენ აპლიკაციები, რომ ცუდი კავშირი გვაქვს?
5. აპლიკაცია
კომპიუტერულ პროგრამებს ახლა ისღა დარჩენიათ, გადაწყვიტონ რომელი პროტოკოლი უნდათ - tcp თუ udp და როგორმე გაიგონ მესიჯის მიმღების IP მისამართი. სხვა ყველაფერი მათი საზრუნავი აღარაა.