Đó là một tinh tế quan trọng trong các thuật toán dừng và chờ đợi. Giả sử người gửi sẽ gửi một khung và nhận thừa nhận nó, nhưng cácthừa nhận đã bị mất hoặc bị trì hoãn trong đến. Tình hình này làminh họa trong thời hạn (c) và (d) ofFigure 2,17. Trong cả hai trường hợp, người gửilần ra và retransmits khung ban đầu, nhưng người nhận sẽ nghĩ rằngnó là khung hình tiếp theo, kể từ khi nó một cách chính xác nhận và công nhận cácframe đầu tiên. Điều này có tiềm năng gây ra các bản sao trùng lặp của một khungsẽ được chuyển giao. Để giải quyết vấn đề này, các tiêu đề cho một ngừng-và-chờ đợigiao thức thường bao gồm một số 1-bit chuỗi — có nghĩa là, trình tựsố có thể đưa vào các giá trị 0 và 1 — và số thứ tự được sử dụngcho mỗi khung thay thế, như minh hoạ trong hình 2,18. Vì vậy, khi cácngười gửi retransmits khung 0, người nhận có thể xác định rằng nó nhìn thấymột bản sao thứ hai của khung 0 chứ không phải là bản sao đầu tiên của khung 1 và do đó có thể bỏ qua nó (người nhận vẫn còn thừa nhận nó, trong trường hợp đầu tiên ACKđã bị mất).Thiếu sót chính của thuật toán dừng và chờ đợi là nó cho phépngười gửi có chỉ có một khung xuất sắc vào liên kết ở một thời gian,và điều này có thể đến nay dưới công suất của liên kết. Hãy xem xét, ví dụ,một liên kết 1.5 Mbps với 45-ms trọn vòng thời gian. Liên kết này có một sự chậm trễ ×băng thông các sản phẩm của 67,5 Kb, hoặc khoảng 8 KB. Kể từ khi người gửicó thể gửi chỉ có một khung cho mỗi RTT, và giả định một kích thước khung hình của 1 KB, điều nàyPETERSON-và-DAVIE 08-ch02-070-167-9780123850591 2011/11/1 14:16 trang 106 #37106 chương 2 nhận được kết nốiNgười gửiThời gian…NhậnKhung 0Khung 1Khung 0ACK 0ACK 1ACK 0■ Tìm 2,18 thời gian cho ngừng-và-chờ 1 chút chuỗi số.ngụ ý một tối đa là gửi lệBit trên một khung thời gian ÷ một khung= 1024 × 8 ÷ 0.045= 182 kbpshoặc khoảng một thứ tám của năng lực của liên kết. Để sử dụng liên kết đầy đủ, sau đó, chúng tôi đã cógiống như người gửi để có thể truyền tải tối đa tám khung trước khi phảichờ đợi cho một sự thừa nhận.Ý nghĩa của sự chậm trễ × băng thông sản phẩm là rằng nó đại diện cho cácsố lượng dữ liệu mà có thể trên đường vận chuyển. Chúng tôi muốn có thể gửinhiều dữ liệu mà không cần chờ đợi cho sự thừa nhận đầu tiên. Các nguyên tắc tại nơi làm việcđây thường được gọi là giữ ống đầy đủ. Các thuật toán trình bày trong cácsau hai phụ làm chính xác này.2.5.2 trượt cửa sổXem xét lại kịch bản trong đó liên kết có một sự chậm trễ × băng thôngCác sản phẩm của 8 KB và khung là 1 KB trong kích thước. Chúng tôi xin gửi đếnsẵn sàng để truyền tải khung thứ chín tại khá nhiều cùng một thời điểmrằng ACK cho khung đầu tiên đến. Các thuật toán cho phép chúng tôiPETERSON-và-DAVIE 08-ch02-070-167-9780123850591 2011/11/1 14:16 trang 107 #382.5 đáng tin cậy truyền 107Người gửiThời gian……Nhận■ Tìm 2,19 thời gian cho các thuật toán cửa sổ trượt.làm điều này được gọi là trượt cửa sổ, và một thời gian biểu minh họa được đưa ra trongCon số 2.19.Các thuật toán cửa sổ trượtCác thuật toán cửa sổ trượt hoạt động như sau. Trước tiên, người gửi chỉ định mộtChuỗi số, kí hiệu là SeqNum, để mỗi khung. Để bây giờ, hãy bỏ quamột thực tế rằng SeqNum được thực hiện bởi một lĩnh vực tiêu đề kích thước hữu hạn vàthay vì giả định rằng nó có thể phát triển vô hạn lớn. Người gửi duy trìba biến: kích thước cửa sổ gửi, biểu hiện SWS, cung cấp cho phía trênràng buộc về số lượng xuất sắc (unacknowledged) khung màngười gửi có thể truyền tải; LAR biểu thị số trình tự cuối cùngthừa nhận đã nhận được; và LFS biểu thị số thứ tự của cáckhung cuối gửi. Người gửi cũng duy trì sau bất biến:LFS − LAR ≤ SWSTình trạng này được minh họa trong hình 2.20.Khi một sự thừa nhận đến, người gửi di chuyển LAR sang phải,do đó cho phép người gửi để truyền tải một khung. Ngoài ra, người gửiđối tác một bộ đếm thời gian với mỗi khung nó truyền tải, và nó retransmits cáckhung nên bộ đếm thời gian hết hạn trước khi một ACK được nhận. Nhận thấy rằng cácngười gửi đã được sẵn sàng để đệm đến SWS khung vì nó phảichuẩn bị sẵn sàng để retransmit chúng cho đến khi họ được công nhận.Duy trì nhận ba biến sau: nhận kích thước cửa sổ, kí hiệu là RWS, cho cận trên về số lượng trong khung của trật tự nhận là sẵn sàng chấp nhận; LAF là bắt cácThứ tự số lượng chấp nhận được khung lớn nhất; và LFR là bắt cácPETERSON-và-DAVIE 08-ch02-070-167-9780123850591 2011/11/1 14:16 trang 108 #39108 chương 2 nhận được kết nối≤ SWSLAR LFS… …■ HÌNH 2.20 trượt cửa sổ trên người gửi.≤ RWSLFR LAF... ...■ HÌNH 2,21 trượt cửa sổ trên người nhận.Chuỗi số khung cuối nhận được. Người nhận cũng duy trìbất biến sau đây:LAF − LFR ≤ RWSTình trạng này được minh họa trong hình 2,21.Khi đến một khung với chuỗi số SeqNum, người nhậnsẽ hành động sau đây. Nếu SeqNum ≤ LFR hoặc SeqNum > LAF, sau đókhung bên ngoài cửa sổ của người nhận và nó được bỏ đi. Nếu LFR <SeqNum ≤ LAF, sau đó khung nằm trong cửa sổ của người nhận và nóđược chấp nhận. Bây giờ người nhận phải quyết định có hay không để gửimột ACK. Hãy để SeqNumToAck biểu thị số chuỗi lớn nhất chưacông nhận, như vậy mà tất cả các khung với chuỗi số ít hơnhoặc bằng SeqNumToAck đã được nhận được. Người nhận thừa nhận ofSeqNumToAck nhận được, ngay cả khi gói dữ liệu số cao cónhận được. Thừa nhận này được gọi là tích lũy. Nó sau đó đặtLFR = SeqNumToAck và điều chỉnh LAF = LFR + RWS.Ví dụ, giả sử LFR = 5 (tức là, cuối ACK nhận gửicho chuỗi số 5), và RWS = 4. Điều này ngụ ý rằng LAF = 9. Nênkhung 7 và 8 đến, họ sẽ được đệm vì chúng trong vòng cáccửa sổ của người nhận. Tuy nhiên, không có ACK cần phải được gửi vì khung 6 chưađến nơi. Khung 7 và 8 được cho là đã đến thứ tự. (Về mặt kỹ thuật,the receiver could resend an ACK for frame 5 when frames 7 and 8 arrive.)PETERSON-AND-DAVIE 08-ch02-070-167-9780123850591 2011/11/1 14:16 Page 109 #402.5 Reliable transmission 109
đang được dịch, vui lòng đợi..
