Shredingerტრანსპორტ ლეიერში (L4), ორ IP ჰოსტს შორის მონაცემების გადაცემის 2 გზა არსებობს. საიმედო/Reliable/TCP და არასაიმედო/Unreliable/UDP. ორივეს თავისი დანიშნულება აქვს და ორივე საჭიროა დატას ტიპის მიხედვით.
როდესაც ერთი ჰოსტი მეორეს უგზავნის სიტყვაზე mp3 ფაილს, გაგზავნისას მთლიანად როგორც ეგეთი ნაჭრად, საჭიროა მოხდეს ფაილის დანაწევრება. პირველ რიგში ხდება ფაილის სეგმენტირება და შემდეგ ნაწილ ნაწილ გადაგზავნა. შესაბამისად როდესაც Application/Presentation/Session შრეები გაამზადებენ დატას და გადაუგზავნიან ქვემოთ ტრანსპორტ შრეს, იქ ხდება არჩევა, reliable უნდა იყოს გადაცემა თუ unreliable. რადგან არ გვინდა რომ ფაილი დაზიანებული/უსრული მივიდეს ადრესატამდე, ამიტომ ფაილის მიმოცვლის პროგრამები დაწერილია ისე, რომ გამოიყენონ reliable/TCP ტრანსპორტად (ამის იქით სოფტის დეველოპერი უკვე აღარ ერევა და მონაცემთა გადაცემას ოპერაციული სისტემის network stack აგვარებს).
TCP-ს სჭირდება გადაცემის ისეთი ხერხი, რომელიც უზრუნველყოფს გზაში (ნებისმიერი მიზეზის გამო) დაკარგული ინფორმაციის ნაწილის აღდგენას. ამისათვის ადრესატმა პერიოდულად უნდა დაუდასტუროს გამგზავნს, რომ ყველაფერი რაც გაიგზავნა, მიიღო. წინააღმდეგ შემთხვევაში, ვერ მოხდება გზაში იმის გარკვევა დაიკარგა თუ არა გზაში ინფორმაცია. აი აქ მოდის Seq/Ack მექანიზმის მუღამი,
მაგალითად გადასაგზავნი დატასტრიმი (mp3 სიმღერა) დაიყო 100 სეგმენტად (ტრანსპორტ შრეში TCP PDU-ებს ჰქვია სეგმენტები, UDP - დატაგრამები) და შემდეგ გაიგზავნა IP შრეში სადაც მიერტყა IP header და გახდა პაკეტი, შემდეგ გაიგზავნა data-link შრეში გახდა ფრეიმი და საბოლოოდ გაიგზავნა ადრესატისკენ. TCP-ს პერსპექტივიდან, ძალიან გამარტივებულად რომ შევხედოთ, იქნება ასეთი მოქმედება:
პირველ რიგში მოხდება 3-way handshake SYN, SYN/ACK, ACK მიმდევრობით, რითიც ჰოსტები შეთანხმდებიან TCP სესიის (სოკეტის) შექმნაზე. შემდეგ ხდება მსგავსი პროცესი, გამგზავნის TCP პროტოკოლი, გაგზავნის დროს, ყველა თავის სეგმენტს დანომრავს უნიკალური
მიმდევრობითი seq ნომრით (რეალობაში გადაგზავნილი ბაიტების რაოდენობაა ხოლმე).
გადააგზავნა 4 სეგმენტი:
seq 1 სეგმენტი
seq 2 სეგმენტი
seq 3 სეგმენტი
seq 4 სეგმენტი
ადრესატისგან დაუბრუნდა ack 5 ეგ ნიშნავს იმას რომ ოთხივე სეგმენტი მიიღო და მზადაა მიიღოს დანარჩენი, შესაბამისად პროცესი გაგრძელდება:
seq 5 სეგმენტი
seq 6 სეგმენტი
seq 7 სეგმენტი
seq 8 სეგმენტი
მოუვა ack 9 და ა.შ. გადაცემის დასასრულამდე.
მაგრამ, მაგალითად გზაში მოხდა შეფერხება, შეიპერმა მოჭრა პაკეტები ან პაკეტლოსის გამო დაიკარგა seq 6 და 7. ამ დროს ადრესატისგან ისევ მოსდის პასუხი, ack, მაგრამ არა ack9, ამჯერად მისდის იმ seq ნომრების შესაბამისი ack, როლებიც ვერ მიიღო და გამგზავნი ხელახლა აგზავნის მათ. გადაცემის დასრულებისას, სესია იხურება FIN, ACK/FIN, ACK მიმდევრობით, რის შემდეგაც შეერთება წყდება.
კიდევ შეიძლება ლაპარაკი flow control-ზე, TCP windowing-ის სახით, რომელიც აკვირდება გაგზავნა-მიღების პროცესს და თუ მაგალითისთვის 5 გაგზავნილი სეგმენტი ყოველთვის მიიღება (რამოდენიმეჯერ მოუვიდა შეუფერხებლად ack), შემდეგ ნელ ნელა ზრდის გაგზავნილი სეგმენტების რაოდენობას, რითიც არეგულირებს "ფანჯარას", შემდეგ გარკვეული bandwidth-ის მიღწევისას, პროვაიდერის მხრიდან შეიპერი დაიწყებს ზედმეტი პაკეტების მოჭრას და მოუვა დაკარგული სეგმენტებზე მოთხოვნები, რის შემდეგაც ეგრევე გაგზავნის ფანჯარა დაპატარავდება. ამიტომაცაა ბრაუზერში რომ დაიწყებ გადმოწერას და დასაწყისში უცებ უაზროდ დიდ სიჩქარეს გიწერს და შემდეგ უცებ ჩამოვარდება, ამ პროცესის გვერდითი მოვლენაა


პ.ს. ამის ნახვა მარტივად შეგიძლია Wireshark ქსელურ ანალიზატორში. ოღონდ Wireshark იყენებს relative sequence ნომრებს, ბიტ სტრიმის დაწყების დროდან, იმისთვის რომ უფრო ადვილი იყოს აღქმა. ახალი ბიტსტრიმი ყოველთვის იქნება Seq0, როცა რეალურად შეიძლება რენდომად 5412312895 მიანიჭოს პროტოკოლმა

თავიდან უფრო მეტი თეორიაა, ვიდრე გართობა