Sobes.tech
Middle

რა შეგიძლიათ თქვათ TCP ფანჯარაზე?

sobes.tech AI

პასუხი AI-სგან

TCP ფანჯარა (ან TCP მიღების ფანჯარა) — ეს არის მონაცემთა ნაკადის მართვის მექანიზმი TCP პროტოკოლში. იგი განსაზღვრავს მონაცემთა მოცულობას, რომელსაც გამგზავნი შეუძლია გადმოსცეს, არ ელოდოს მიღების დამადასტურებას (ACK). ფანჯრის ზომა დინამიურად ადაპტირებს, თავიდან აცილებს მიმღების ბუფერის გადატვირთვას და მართავს გადაცემის სიჩქარეს.

ძირითადი მახასიათებლები:

  • ნაკადის მართვა: მთავარი ფუნქცია - არ დაუშვას გამგზავნმა გადმოსცეს მონაცემები უფრო სწრაფად, ვიდრე მიმღებმა შეძლოს დამუშავება.
  • ფანჯრის ზომა: გამოაცხადება TCP სეგმენტში ("Window Size" ველზე) და მიუთითებს, რამდენი ბაიტი მზად არის მიმღებმა მიიღოს, დაწყებული შემდეგი ელოდებადი ბაიტიდან.
  • დინამიურობა: ფანჯრის ზომა შეიძლება შეიცვალოს კავშირის პროცესში, მიმღების ბუფერის დატვირთვის მიხედვით.
  • მიღების ბუფერი: რეალური ფანჯრის ზომა შეზღუდულია მიმღების მხარის მიღების ბუფერის ზომით.
  • ფანჯრის მასშტაბირება (Window Scaling): TCP-ის ოპცია, რომელიც საშუალებას აძლევს გამოიყენოს უფრო დიდი ზომის ფანჯრები (მდე 1 გბ) მაღალი სიჩქარის ქსელებისთვის ან დიდი ლოდინის დროს, გამოყენებით გამზრდელს, რომელიც გამოაცხადა კავშირის დამყარების დროს (SYN/SYN-ACK).
  • "Slim Window" სინდრომი: სიტუაცია, როდესაც ფანჯრის ზომა ძალიან მცირე ხდება, რაც შეიძლება გამოიწვიოს მონაცემთა არასათანადოდ გადაცემას.
  • Zero Window: თუ მიმღების ბუფერი სრულად არის სავსე, ფანჯრის ზომა გამოაცხადებს როგორც 0. გამგზავნელმა უნდა შეჩეროს მონაცემთა გადაცემა, გამოკლებული Keep-Alive სეგმენტის (თუ ოპცია ჩართულია), და ხელახლა უნდა გამოაგზავნოს ბოლო სეგმენტი ფანჯრის ზომის განახლებისთვის.
// TCP სათაურის მაგალითი, სადაც მითითებულია ფანჯრის ზომა
// ("Window Size" ველი)
// წყაროს პორტი: 12345
// დანიშნულების პორტი: 80
// სექვენს ნომერი: 1000
// აღიარების ნომერი: 2000
// მონაცემთა გადახრის ოდენობა: 20 ბაიტი (5 სიტყვა)
// შენახული: 0
// ფლიგარები: [ACK, PSH]
// ფანჯრის ზომა: 65535 // მაქსიმალური ზომა გარეშე მასშტაბირებას
// შემოწმება: 0xABCD
// სასწრაფო პოინტერ: 0