Მიმოხილვა Socket პროგრამირების კომპიუტერული ქსელში

სოკეტი არის კომპიუტერული ქსელის პროგრამირების ერთ-ერთი ყველაზე ფუნდამენტური ტექნოლოგია. სოკეტების ქსელის პროგრამული უზრუნველყოფა საშუალებას იძლევა, დაუკავშირდნენ ქსელური აპარატურისა და ოპერაციული სისტემების სტანდარტული მექანიზმების გამოყენებას.

მიუხედავად იმისა, რომ ეს შეიძლება ჟღერდეს, როგორც კიდევ ერთი თვისება ინტერნეტ პროგრამული უზრუნველყოფა, socket ტექნოლოგია არსებობდა დიდი ხნით ადრე ვებ. და ბევრი დღევანდელი ყველაზე პოპულარული ქსელის პროგრამული უზრუნველყოფა დაეყრდნობა სოკეტებს.

რა სოკეტების შეუძლია გააკეთოს თქვენი ქსელი

Socket წარმოადგენს ერთ კავშირი ზუსტად ორ ცალი პროგრამული უზრუნველყოფის (ე.წ. წერტილი-ის წერტილი კავშირი) შორის. ორზე მეტი პროგრამული უზრუნველყოფა შეუძლია დაუკავშირდეს კლიენტს / სერვერს ან განაწილებულ სისტემებს მრავალჯერადი სოკეტების გამოყენებით. მაგალითად, ბევრი ვებ ბრაუზერის შეიძლება ერთდროულად დაუკავშირდეს ერთი ვებ სერვერის მეშვეობით ჯგუფის სოკეტების გააკეთა სერვერზე.

Socket- ზე დაფუძნებული პროგრამული უზრუნველყოფა, ჩვეულებრივ, ქსელზე ორ ცალკეულ კომპიუტერზე მუშაობს, მაგრამ სოკეტების გამოყენება შეიძლება გამოყენებულ იქნას ადგილობრივ ( ინტერპროცესო ) კომუნიკაციაზე ერთ კომპიუტერზე. სოკეტების არის bidirectional , რაც იმას ნიშნავს, რომ ორივე მხარეს კავშირი შეუძლია როგორც გაგზავნის და მიღების მონაცემები. ზოგჯერ ერთი განაცხადი, რომელიც კომუნიკაციას იწყებს, უწოდებს "კლიენტს" და სხვა "სერვერს", მაგრამ ეს ტერმინოლოგია იწვევს გაურკვევლობას იმაში, რომ თანხმობა გაუკეთოს ქსელს და ზოგადად თავიდან უნდა იქნას აცილებული.

სოკეტების API და ბიბლიოთეკები

არსებობს რამდენიმე ბიბლიოთეკა, რომელიც ახორციელებს სტანდარტულ პროგრამულ ინტერფეისებს (APIs) ინტერნეტში. პირველი ძირითადი პაკეტი - Berkeley Socket Library კვლავ ფართოდ გამოიყენება UNIX სისტემებზე. კიდევ ერთი ძალიან გავრცელებული API არის Windows Sockets (WinSock) ბიბლიოთეკა Microsoft ოპერაციული სისტემები. სხვა კომპიუტერულ ტექნოლოგიებთან შედარებით, სოკეტების APIs საკმაოდ მოწიფულია: WinSock უკვე გამოიყენება 1993 წლიდან და 1982 წლიდან ბერკელის სოკეტები.

სოკეტების APIs შედარებით მცირე და მარტივი. წერა () და მჭიდრო () . ფაქტობრივი ფუნქცია გამოიყენებს გამოყენებას პროგრამირების ენაზე და სქემის ბიბლიოთეკაში.

Socket ინტერფეისის ტიპები

Socket ინტერფეისები შეიძლება დაიყოს სამ კატეგორიად:

  • Stream სოკეტების, ყველაზე გავრცელებული ტიპის, მოითხოვს, რომ ორი საკომუნიკაციო მხარეები პირველად შეიქმნება სოკეტის კავშირი, რის შემდეგაც ნებისმიერი მონაცემები გაივლის ამ კავშირი გარანტირებულია ჩასვლა იმავე მიზნით, რომელშიც იგი გაიგზავნა - ე.წ. კავშირი ორიენტირებული პროგრამირების მოდელი.
  • Datagram სოკეტების გთავაზობთ "კავშირი ნაკლები" სემანტიკა. Datagrams, კავშირები არის დაფარული ვიდრე აშკარა როგორც ნაკადს. ნებისმიერ მხარეს უბრალოდ აგზავნის datagrams როგორც საჭიროა და ელოდება მეორე პასუხი; შეტყობინებები შეიძლება გადაწყდეს გადაცემის ან მიღებული ბრძანებით, მაგრამ ეს არის განაცხადის პასუხისმგებლობა და არა სოკეტების ამ პრობლემების მოგვარება. დანამატის სოკეტების განმახორციელებელმა პროგრამებმა შეიძლება წარმოადგინონ ეფექტურობის გაზრდა და დამატებითი მოქნილობა ნაკადი სოკეტების გამოყენებით შედარებით, მათი გამოყენება გარკვეულ სიტუაციებში.
  • მესამე ტიპის სოკეტი - ნედლეული სოკეტი - გვერდის ავლით ბიბლიოთეკის ჩამონტაჟებული სტანდარტული პროტოკოლების მხარდაჭერა, როგორიცაა TCP და UDP . Raw სოკეტების გამოიყენება საბაჟო დაბალი დონის პროტოკოლის განვითარებას.

ქსელის მხარდაჭერა ქსელის პროტოკოლებში

თანამედროვე ქსელური ქსელები, როგორც წესი, გამოიყენება ინტერნეტ პროტოკოლებთან ერთად - IP, TCP და UDP. ინტერნეტ პროტოკოლისთვის საკაბელო ქსელების დანერგვა ბიბლიოთეკები იყენებენ TCP ნაკადების, UDP- სთვის datagrams- ისთვის და IP- ს თვითნებური სოკეტებისთვის.

ინტერნეტთან კომუნიკაციის მიზნით, IP Socket ბიბლიოთეკები იყენებენ IP მისამართს კონკრეტული კომპიუტერების იდენტიფიცირებაში. ინტერნეტის ბევრ ნაწილს დასახელების სერვისებთან მუშაობა, ისე, რომ მომხმარებლებს და სოკეტების პროგრამულ უზრუნველყოფას შეიძლება კომპიუტერებთან მუშაობდნენ ( მაგალითად , "thiscomputer.wireless.about.com") მისამართით ( მაგალითად , 208.185.127.40). Stream და datagram sockets ასევე იყენებენ IP პორტის ნომრებს, რათა განასხვავონ ერთმანეთისგან მრავალი განაცხადი. მაგალითად, ვებ ბრაუზერები ინტერნეტში ვიცი, რომ გამოიყენოთ პორტი 80 როგორც ნაგულისხმები for Socket კომუნიკაციების ვებ სერვერები.