As suggested by Figure 3.19, the range of permissible sequence numbers dịch - As suggested by Figure 3.19, the range of permissible sequence numbers Việt làm thế nào để nói

As suggested by Figure 3.19, the ra

As suggested by Figure 3.19, the range of permissible sequence numbers for transmitted but not yet acknowledged packets can be viewed as a window of size N over the range of sequence numbers. As the protocol operates, this window slides forward over the sequence number space. For this reason, N is often referred to as the window size and the GBN protocol itself as a sliding-window protocol. You might be wondering why we would even limit the number of outstanding, unac-knowledged packets to a value of N in the first place. Why not allow an unlimited number of such packets? We’ll see in Section 3.5 that flow control is one reason to impose a limit on the sender. We’ll examine another reason to do so in Section 3.7, when we study TCP congestion control.
In practice, a packet’s sequence number is carried in a fixed-length field in the packet header. If k is the number of bits in the packet sequence number field, the range of sequence numbers is thus [0,2k – 1]. With a finite range of sequence numbers, all arithmetic involving sequence numbers must then be done using modulo 2k arithmetic. (That is, the sequence number space can be thought of as a ring of size 2k, where sequence number 2k – 1 is immediately followed by sequence number 0.) Recall that rdt3.0 had a 1-bit sequence number and a range of sequence numbers of [0,1]. Sev-eral of the problems at the end of this chapter explore the consequences of a finite range of sequence numbers. We will see in Section 3.5 that TCP has a 32-bit sequence number field, where TCP sequence numbers count bytes in the byte stream rather than packets.
Figures 3.20 and 3.21 give an extended FSM description of the sender and receiver sides of an ACK-based, NAK-free, GBN protocol. We refer to this FSM description as an extended FSM because we have added variables (similar to pro-gramming-language variables) for base and nextseqnum, and added operations on these variables and conditional actions involving these variables. Note that the extended FSM specification is now beginning to look somewhat like a programming-language specification. [Bochman 1984] provides an excellent survey of additional extensions to FSM techniques as well as other programming-language-based tech-niques for specifying protocols.
The GBN sender must respond to three types of events:
Invocation from above. When rdt_send() is called from above, the sender first checks to see if the window is full, that is, whether there are N outstanding, unacknowledged packets. If the window is not full, a packet is created and sent, and variables are appropriately updated. If the window is full, the sender simply returns the data back to the upper layer, an implicit indication that the window is full. The upper layer would presumably then have to try again later. In a real implementation, the sender would more likely have either buffered (but not immediately sent) this data, or would have a synchronization mechanism (for example, a semaphore or a flag) that would allow the upper layer to call rdt_send() only when the window is not full.
Receipt of an ACK. In our GBN protocol, an acknowledgment for a packet with sequence number n will be taken to be a cumulative acknowledgment, indicat-ing that all packets with a sequence number up to and including n have been cor-rectly received at the receiver. We’ll come back to this issue shortly when we examine the receiver side of GBN.
A timeout event. The protocol’s name, “Go-Back-N,” is derived from the sender’s behavior in the presence of lost or overly delayed packets. As in the stop-and-wait protocol, a timer will again be used to recover from lost data or acknowledgment packets. If a timeout occurs, the sender resends all packets that have been previ-ously sent but that have not yet been acknowledged. Our sender in Figure 3.20 uses only a single timer, which can be thought of as a timer for the oldest transmitted but not yet acknowledged packet. If an ACK is received but there are still additional transmitted but not yet acknowledged packets, the timer is restarted. If there are no outstanding, unacknowledged packets, the timer is stopped.
The receiver’s actions in GBN are also simple. If a packet with sequence num-ber n is received correctly and is in order (that is, the data last delivered to the upper layer came from a packet with sequence number n – 1), the receiver sends an ACK for packet n and delivers the data portion of the packet to the upper layer. In all other cases, the receiver discards the packet and resends an ACK for the most recently received in-order packet. Note that since packets are delivered one at a time to the upper layer, if packet k has been received and delivered, then all packets with a sequence number lower than k have also been delivered. Thus, the use of cumula-tive acknowledgments is a natural choice for GBN.
In our GBN protocol, the receiver discards out-of-order packets. Although it may seem silly and wasteful to discard a correctly received (but out-of-order) packet, there is some justification for doing so. Recall that the receiver must deliver data in order to the upper layer. Suppose now that packet n is expected, but packet n + 1 arrives. Because data must be delivered in order, the receiver could buffer (save) packet n + 1 and then deliver this packet to the upper layer after it had later received and delivered packet n. However, if packet n is lost, both it and packet n + 1 will eventually be retransmitted as a result of the GBN retransmission rule at the sender. Thus, the receiver can simply discard packet n + 1. The advantage of this approach is the simplicity of receiver buffering—the receiver need not buffer any out-of-order packets. Thus, while the sender must maintain the upper and lower bounds of its window and the position of nextseqnum within this window, the only piece of information the receiver need maintain is the sequence number of the next in-order packet. This value is held in the variable expectedseqnum, shown in the receiver FSM in Figure 3.21. Of course, the disadvantage of throwing away a correctly received packet is that the subsequent retransmission of that packet might be lost or garbled and thus even more retransmissions would be required.
Figure 3.22 shows the operation of the GBN protocol for the case of a window size of four packets. Because of this window size limitation, the sender sends pack-ets 0 through 3 but then must wait for one or more of these packets to be acknowl-edged before proceeding. As each successive ACK (for example, ACK0 and ACK1) is received, the window slides forward and the sender can transmit one new packet (pkt4 and pkt5, respectively). On the receiver side, packet 2 is lost and thus packets 3, 4, and 5 are found to be out of order and are discarded.
Before closing our discussion of GBN, it is worth noting that an implementa-tion of this protocol in a protocol stack would likely have a structure similar to that of the extended FSM in Figure 3.20. The implementation would also likely be in the form of various procedures that implement the actions to be taken in response to the various events that can occur. In such event-based programming, the various pro-cedures are called (invoked) either by other procedures in the protocol stack, or as the result of an interrupt. In the sender, these events would be (1) a call from the upper-layer entity to invoke rdt_send(), (2) a timer interrupt, and (3) a call from the lower layer to invoke rdt_rcv() when a packet arrives. The programming exercises at the end of this chapter will give you a chance to actually implement these routines in a simulated, but realistic, network setting.
We note here that the GBN protocol incorporates almost all of the techniques that we will encounter when we study the reliable data transfer components of TCP in Section 3.5. These techniques include the use of sequence numbers, cumulative acknowledgments, checksums, and a timeout/retransmit operation.
3.4.4 Selective Repeat (SR)
The GBN protocol allows the sender to potentially “fill the pipeline” in Figure 3.17 with packets, thus avoiding the channel utilization problems we noted with stop-and-wait protocols. There are, however, scenarios in which GBN itself suffers from performance problems. In particular, when the window size and bandwidth-delay product are both large, many packets can be in the pipeline. A single packet error can thus cause GBN to retransmit a large number of packets, many unnecessarily. As the probability of channel errors increases, the pipeline can become filled with these unnecessary retransmissions. Imagine, in our message-dictation scenario, that if every time a word was garbled, the surrounding 1,000 words (for example, a win-dow size of 1,000 words) had to be repeated. The dictation would be slowed by all of the reiterated words.
0/5000
Từ: -
Sang: -
Kết quả (Việt) 1: [Sao chép]
Sao chép!
Theo đề nghị của con số 3,19, phạm vi cho phép số thứ tự cho truyền nhưng chưa được công nhận các gói dữ liệu có thể được xem như là một cửa sổ của kích thước N trên khu vực của số thứ tự. Như giao thức hoạt động, cửa sổ này trình bày về phía trước trong chuỗi số không gian. Vì lý do này, N thường được gọi là kích thước cửa sổ và các GBN giao thức chính nó như là một giao thức cửa sổ trượt. Bạn có thể tự hỏi tại sao chúng tôi sẽ thậm chí hạn chế số lượng xuất sắc, unac knowledged gói với một giá trị của N tại địa điểm đầu tiên. Tại sao không cho phép một số lượng không giới hạn của gói tin như vậy? Chúng ta sẽ thấy trong phần 3.5 rằng kiểm soát dòng chảy là một lý do để áp đặt một giới hạn về người gửi. Chúng ta sẽ xem xét một lý do để làm như vậy trong phần 3.7, khi chúng tôi nghiên cứu TCP tắc nghẽn kiểm soát.Trong thực tế, một gói dữ liệu chuỗi số được thực hiện trong một lĩnh vực chiều dài cố định trong tiêu đề gói. Nếu k là số bit trong trường số thứ tự gói, phạm vi của các số thứ tự là như vậy [0, 2k-1]. Với một phạm vi hữu hạn của số thứ tự, tất cả số học liên quan đến số thứ tự sau đó phải được thực hiện bằng cách sử dụng theo modulo 2k số học. (Có nghĩa là, không gian chuỗi số có thể được dùng như một vòng kích thước 2k, nơi dãy số 2k-1 ngay sau đó là theo thứ tự số 0.) Nhớ lại rằng rdt3.0 có một số 1-bit chuỗi và một loạt các số thứ tự của [0,1]. Eral Sev của vấn đề ở phần cuối của chương này khám phá những hậu quả của một loạt hữu hạn các số thứ tự. Chúng ta sẽ thấy trong phần 3.5 TCP có một trường số 32-bit chuỗi, nơi mà số thứ tự TCP truy cập byte trong dòng byte chứ không phải là các gói dữ liệu.Con số 3,20 và 3,21 cho một mô tả FSM mở rộng của các bên người gửi và người nhận của một giao thức dựa trên ACK, NAK-Việt, GBN. Chúng tôi tham khảo này mô tả FSM là một FSM mở rộng bởi vì chúng tôi có thêm biến (tương tự như pro gramming ngôn ngữ biến) cho cơ sở và nextseqnum, và gia tăng các hoạt động trên các biến và có điều kiện hành động liên quan đến các biến này. Lưu ý rằng đặc điểm kỹ thuật FSM mở rộng bây giờ là bắt đầu trông giống như một đặc tả ngôn ngữ lập trình. [Bochman 1984] cung cấp một cuộc khảo sát tuyệt vời của tiện ích mở rộng thêm về kỹ thuật FSM khác lập trình-ngôn ngữ dựa trên công nghệ-niques để chỉ định giao thức.Người gửi GBN phải đáp ứng với ba loại sự kiện:Invocation từ phía trên. Khi rdt_send() được gọi là từ phía trên, người gửi đầu tiên kiểm tra để xem nếu cửa sổ là đầy đủ, có nghĩa là, cho dù có những gói dữ liệu xuất sắc, unacknowledged N. Nếu cửa sổ là không đầy đủ, một gói dữ liệu được tạo ra và gửi, và biến được cập nhật một cách thích hợp. Nếu cửa sổ là đầy đủ, người gửi chỉ đơn giản là trả về dữ liệu về lớp trên, một dấu hiệu tiềm ẩn cửa sổ là đầy đủ. Lớp trên có lẽ là sau đó có thể thử lại sau. Một thực hiện thật, người gửi nhiều khả năng sẽ có hoặc đệm (nhưng không phải ngay lập tức gửi) dữ liệu này, hoặc sẽ có một cơ chế đồng bộ hóa (ví dụ, semaphore một hoặc một lá cờ) mà sẽ cho phép lớp trên gọi rdt_send() chỉ khi cửa sổ không đầy đủ.Nhận được một ACK. Trong giao thức GBN của chúng tôi, một sự thừa nhận cho một gói với chuỗi số n sẽ được thực hiện để là một sự thừa nhận tích lũy, indicat-ing mà tất cả các gói dữ liệu với một số chuỗi lên đến và bao gồm n đã cor-rectly đã nhận được lúc người nhận. Chúng tôi sẽ trở lại để vấn đề này ngay khi chúng tôi kiểm tra phía nhận của GBN.Một sự kiện thời gian chờ. Giao thức của tên, "Go-Back-N," có nguồn gốc từ hành vi của người gửi sự hiện diện của gói dữ liệu bị mất hoặc bị trì hoãn quá. Như trong các giao thức dừng và chờ đợi, một bộ đếm thời gian một lần nữa sẽ được sử dụng để phục hồi từ dữ liệu bị mất hoặc thừa nhận gói. Nếu một thời gian chờ xảy ra, người gửi thời tất cả các gói dữ liệu mà đã là previ-ously gửi nhưng mà đã không được được ghi nhận. Chúng tôi gửi trong hình 3,20 sử dụng chỉ là một thời gian duy nhất, mà có thể được dùng như một bộ đếm thời gian cho gói dữ liệu truyền nhưng không được công nhận lâu đời nhất. Nếu một ACK được nhận nhưng có được bổ sung vẫn còn truyền nhưng chưa ghi nhận các gói dữ liệu, bộ đếm thời gian khởi động lại. Nếu không có không có gói dữ liệu nổi bật, unacknowledged, bộ đếm thời gian được dừng lại.Hành động của người nhận trong GBN cũng rất đơn giản. Nếu một gói với chuỗi num-ber n nhận được một cách chính xác và là theo thứ tự (có nghĩa là, các dữ liệu cuối gửi đến lớp trên đến từ một gói với chuỗi số n-1), người nhận sẽ gửi một ACK cho gói n và cung cấp phần dữ liệu của gói tin cho lớp trên. Trong tất cả các trường hợp khác, người nhận loại bỏ gói và thời một ACK cho gói trong thứ tự đặt mới nhận được. Lưu ý rằng kể từ khi gói tin được chuyển giao một lúc một thời gian cho lớp trên, nếu gói k đã được nhận và giao hàng, sau đó tất cả các gói dữ liệu với một số thứ tự thấp hơn k cũng đã được chuyển giao. Vì vậy, việc sử dụng các hoạt động cùng cumula acknowledgments là một sự lựa chọn tự nhiên cho GBN.Trong của chúng tôi giao thức GBN, người nhận loại bỏ ra thứ tự gói. Mặc dù nó có vẻ ngớ ngẩn và lãng phí để bỏ gói một cách chính xác nhận (nhưng ra thứ tự), có một số biện minh để làm như vậy. Nhớ lại rằng người nhận phải cung cấp dữ liệu để lớp trên. Cho rằng bây giờ mà gói n dự kiến, nhưng gói n + 1 đến. Bởi vì dữ liệu phải được phân phối theo thứ tự, người nhận có thể đệm (save) gói n + 1 và sau đó cung cấp gói này cho lớp trên sau khi nó sau đó đã nhận được và gửi gói n. Tuy nhiên, nếu n gói bị mất, cả nó và gói n + 1 sẽ cuối cùng được retransmitted là kết quả của quy tắc retransmission GBN lúc người gửi. Do đó, người nhận chỉ đơn giản là có thể loại bỏ gói n + 1. Lợi thế của phương pháp này là sự đơn giản của nhận đệm — người nhận không cần đệm bất kỳ gói dữ liệu ra trật tự. Vì vậy, trong khi người gửi phải duy trì phía trên và thấp hơn giới hạn của các cửa sổ của nó và vị trí của nextseqnum trong cửa sổ này, mảnh thông tin người nhận, chỉ cần duy trì là số thứ tự của gói tin trong thứ tự tiếp theo. Giá trị này được tổ chức trong biến expectedseqnum, thể hiện trong nhận FSM trong hình 3,21. Tất nhiên, những bất lợi của ném đi một gói tin nhận được một cách chính xác là retransmission gói đó, tiếp theo có thể được bị mất hoặc bị cắt xén và do đó truyền lại hơn sẽ được yêu cầu.Con số 3,22 cho thấy hoạt động của các giao thức GBN cho trường hợp của một kích thước cửa sổ của bốn gói. Vì hạn chế kích thước cửa sổ này, người gửi gửi gói-ets 0 đến 3 nhưng sau đó phải chờ đợi cho một hoặc nhiều của các gói dữ liệu được acknowl cạnh trước khi tiếp tục. Như mỗi ACK kế tiếp (ví dụ, ACK0 và ACK1) được nhận, các trang trình bày cửa sổ chuyển tiếp và người gửi có thể truyền tải một gói mới (pkt4 và pkt5, tương ứng). Ở phía bên nhận, gói 2 bị mất và do đó gói 3, 4 và 5 có thứ tự và được loại bỏ.Trước khi đóng cửa của chúng tôi thảo luận về GBN, nó là đáng chú ý rằng một implementa-tion của giao thức này trong một chồng giao thức nào có khả năng có một cấu trúc tương tự như FSM mở rộng trong hình 3,20. Việc thực hiện sẽ cũng có khả năng là trong các hình thức của các thủ tục thực hiện các hành động được thực hiện để đáp ứng với các sự kiện khác nhau mà có thể xảy ra. Trong chương trình dựa trên sự kiện, pro-cedures khác nhau được gọi là (invoked) hoặc bằng cách khác quy trình trong ngăn xếp giao thức, hoặc như là kết quả của một ngắt. Ở người gửi, những sự kiện này sẽ là (1) một cuộc gọi từ các tổ chức trên lớp để gọi rdt_send(), (2) một bộ đếm thời gian gián đoạn, và (3) một cuộc gọi từ các lớp thấp hơn để gọi rdt_rcv() khi một gói dữ liệu đến. Các bài tập lập trình ở phần cuối của chương này sẽ cung cấp cho bạn một cơ hội để thực sự thực hiện các thói quen trong một thiết lập mô phỏng, nhưng thực tế, mạng.We note here that the GBN protocol incorporates almost all of the techniques that we will encounter when we study the reliable data transfer components of TCP in Section 3.5. These techniques include the use of sequence numbers, cumulative acknowledgments, checksums, and a timeout/retransmit operation.3.4.4 Selective Repeat (SR)The GBN protocol allows the sender to potentially “fill the pipeline” in Figure 3.17 with packets, thus avoiding the channel utilization problems we noted with stop-and-wait protocols. There are, however, scenarios in which GBN itself suffers from performance problems. In particular, when the window size and bandwidth-delay product are both large, many packets can be in the pipeline. A single packet error can thus cause GBN to retransmit a large number of packets, many unnecessarily. As the probability of channel errors increases, the pipeline can become filled with these unnecessary retransmissions. Imagine, in our message-dictation scenario, that if every time a word was garbled, the surrounding 1,000 words (for example, a win-dow size of 1,000 words) had to be repeated. The dictation would be slowed by all of the reiterated words.
đang được dịch, vui lòng đợi..
Kết quả (Việt) 2:[Sao chép]
Sao chép!
Theo đề nghị của hình 3.19, phạm vi của số thứ tự cho phép đối với các gói tin truyền nhưng chưa thừa nhận có thể được xem như là một cửa sổ có kích thước N trong dãy số thứ tự. Như các giao thức hoạt động, cửa sổ này trượt về phía trước trên không gian số thứ tự. Vì lý do này, N thường được gọi là kích thước cửa sổ và các giao thức GBN chính nó như là một giao thức trượt cửa sổ. Bạn có thể tự hỏi tại sao chúng tôi thậm chí sẽ hạn chế số lượng, gói unac-knowledged xuất sắc cho một giá trị của N ở nơi đầu tiên. Tại sao không cho phép một số lượng không giới hạn của các gói tin như vậy? Chúng ta sẽ thấy trong phần 3.5 rằng kiểm soát dòng chảy là một trong những lý do để áp đặt một giới hạn về người gửi. Chúng tôi sẽ kiểm tra một lý do để làm như vậy trong Phần 3.7, khi chúng ta nghiên cứu điều khiển tắc nghẽn TCP.
Trong thực tế, số thứ tự của gói tin được thực hiện trong một lĩnh vực chiều dài cố định trong tiêu đề gói. Nếu k là số bit trong trường số thứ tự gói, phạm vi của số thứ tự do đó là [0,2k - 1]. Với một phạm vi hữu hạn của dãy số, tất cả số học liên quan đến số thứ tự sau đó phải được thực hiện bằng cách sử dụng số học modulo 2k. (Nghĩa là, không gian số thứ tự có thể được dùng như một chiếc nhẫn cỡ 2k, nơi mà số thứ tự 2k - 1 là ngay lập tức theo sau chuỗi số 0.) Nhớ lại rdt3.0 rằng đã có một số thứ tự 1-bit và một loạt các số thứ tự của [0,1]. Sev-Eral trong những vấn đề ở phần cuối của chương này khám phá những hậu quả của một phạm vi hữu hạn của dãy số. Chúng ta sẽ thấy trong phần 3.5 rằng TCP có một dãy số 32-bit, nơi mà số thứ tự TCP đếm byte trong dòng byte thay vì các gói tin.
Hình 3.20 và 3.21 cho một mô tả FSM mở rộng của bên gửi và người nhận của một ACK- dựa, NAK-miễn phí, giao thức GBN. Chúng tôi tham khảo mô tả FSM này như một FSM kéo dài bởi vì chúng tôi đã bổ sung thêm các biến (tương tự như biến pro-gramming ngôn ngữ) cho cơ sở và nextseqnum, và các hoạt động bổ sung vào các biến này và hành động có điều kiện liên quan đến các biến này. Lưu ý rằng các đặc điểm kỹ thuật FSM mở rộng hiện đang bắt đầu trông hơi giống như một đặc điểm kỹ thuật lập trình ngôn ngữ. [Bochman 1984] cung cấp một cuộc khảo sát tuyệt vời của phần mở rộng thêm với các kỹ thuật FSM cũng như ngôn ngữ lập trình dựa trên công nghệ-kỹ khác để xác định các giao thức.
Các GBN người gửi phải trả lời ba loại sự kiện:
Gọi từ trên cao. Khi rdt_send () được gọi từ trên cao, người gửi đầu tiên kiểm tra để xem nếu cửa sổ là đầy đủ, đó là, liệu có tồn tại nổi bật, các gói tin không được thừa nhận. Nếu cửa sổ là không đầy đủ, một gói tin được tạo ra và gửi đi, và biến được cập nhật một cách thích hợp. Nếu cửa sổ đầy, người gửi chỉ đơn giản trả lại dữ liệu vào các lớp trên, một dấu hiệu ngầm rằng cửa sổ là đầy đủ. Các lớp trên có lẽ sau đó sẽ phải thử lại sau. Trong một thực tế thực hiện, người gửi sẽ nhiều khả năng đã hoặc đệm (nhưng không phải ngay lập tức gửi) dữ liệu này, hoặc sẽ có một cơ chế đồng bộ (ví dụ, một semaphore hoặc một lá cờ) mà sẽ cho phép các lớp trên để gọi rdt_send () chỉ khi cửa sổ không phải là đầy đủ.
Tiếp nhận một ACK. Trong giao thức GBN của chúng tôi, một sự thừa nhận cho một gói tin với số thứ tự n sẽ được xem là một sự thừa nhận tích lũy, indicat-ing rằng tất cả các gói tin với một số thứ tự lên đến và bao gồm n đã cor-rectly nhận được ở người nhận. Chúng tôi sẽ quay trở lại vấn đề này trong thời gian ngắn khi chúng tôi kiểm tra phía thu của GBN.
Một sự kiện timeout. Tên của giao thức, "Go-Back-N," có nguồn gốc từ hành vi của người gửi trong sự hiện diện của các gói dữ liệu bị mất hoặc quá chậm. Như trong các giao thức stop-and-wait, một bộ đếm thời gian một lần nữa sẽ được sử dụng để phục hồi từ dữ liệu bị mất hoặc các gói tin xác nhận. Nếu một thời gian chờ xảy ra, người gửi sẽ gửi lại tất cả các gói tin đã được previ-ously gửi nhưng chưa được thừa nhận. Người gửi chúng tôi trong hình 3.20 chỉ sử dụng một bộ đếm thời gian duy nhất, mà có thể được coi như một bộ đếm thời gian cho các gói tin truyền lâu đời nhưng chưa được thừa nhận. Nếu một ACK được nhận nhưng vẫn có thêm truyền nhưng không gói tin chưa được xác nhận, hẹn giờ đã được khởi động lại. Nếu không có, các gói tin không được thừa nhận nợ, hẹn giờ dừng lại.
Hành động của máy thu trong GBN cũng rất đơn giản. Nếu một gói tin với chuỗi num-ber n nhận được một cách chính xác và là theo thứ tự (có nghĩa là, các dữ liệu giao cuối cùng để các lớp trên đến từ một gói có số thứ tự n - 1), người nhận sẽ gửi một ACK cho gói n và cung cấp phần dữ liệu của gói tin đến các lớp trên. Trong tất cả các trường hợp khác, người nhận sẽ loại bỏ gói và gửi lại một ACK cho vừa nhận được hầu hết các gói tin trong trật tự. Lưu ý rằng kể từ khi gói tin được chuyển giao một lúc một thời gian để các lớp trên, nếu gói k đã được nhận và gửi, sau đó tất cả các gói tin với một số thứ tự thấp hơn k cũng đã được chuyển giao. Vì vậy, việc sử dụng các báo nhận cumula-chính kịp thời là một sự lựa chọn tự nhiên cho GBN.
Trong giao thức GBN của chúng tôi, người nhận sẽ loại bỏ out-of-order gói. Mặc dù nó có vẻ ngớ ngẩn và lãng phí để loại bỏ một cách chính xác nhận (nhưng out-of-order) gói tin, có một số lý do để làm như vậy. Nhớ lại rằng người nhận phải cung cấp dữ liệu để các lớp trên. Giả sử bây giờ mà gói n dự kiến, nhưng gói n + 1 đến. Bởi vì dữ liệu phải được giao theo đơn đặt hàng, người nhận có thể đệm (lưu) gói n + 1 và sau đó cung cấp gói tin này đến các lớp trên sau khi nó đã sau đó đã nhận và chuyển giao gói tin n. Tuy nhiên, nếu gói n bị mất, cả nó và gói n + 1 cuối cùng sẽ được truyền lại như một kết quả của việc phát lại quy tắc GBN ở người gửi. Vì vậy, người nhận chỉ đơn giản là có thể loại bỏ gói tin n + 1. Ưu điểm của phương pháp này là sự đơn giản của receiver buffering-người nhận không cần đệm bất kỳ out-of-order gói. Như vậy, trong khi người gửi phải duy trì các giới hạn trên và dưới của cửa sổ của nó và vị trí của nextseqnum trong cửa sổ này, các thông tin duy nhất nhận cần duy trì là số thứ tự của các gói tin trong trật tự tiếp theo. Giá trị này được tổ chức tại các expectedseqnum biến, thể hiện trong các FSM nhận trong hình 3.21. Tất nhiên, những bất lợi của vứt đi một gói tin nhận được một cách chính xác là việc phát lại tiếp theo của gói tin đó có thể bị mất hoặc bị cắt xén và do đó thậm chí nhiều hơn truyền lại sẽ được yêu cầu.
Hình 3.22 cho thấy các hoạt động của giao thức GBN cho trường hợp của một kích thước cửa sổ bốn gói. Do giới hạn kích thước cửa sổ này, người gửi sẽ gửi gói-ETS 0 thông qua 3 nhưng sau đó phải chờ đợi cho một hoặc nhiều hơn các gói tin được acknowl lưỡi trước khi tiếp tục. Khi mỗi ACK liên tiếp (ví dụ, ACK0 và ACK1) được nhận, cửa sổ trượt về phía trước và người gửi có thể truyền tải một gói tin mới (pkt4 và pkt5, tương ứng). Về phía người nhận, gói 2 bị mất và do đó các gói 3, 4, và 5 được tìm thấy sẽ được ra khỏi trật tự và được bỏ.
Trước khi kết thúc cuộc thảo luận của chúng ta về GBN, nó là đáng chú ý là một implementa-tion của giao thức này trong một giao thức ngăn xếp có khả năng sẽ có một cấu trúc tương tự như của các FSM mở rộng trong hình 3.20. Việc thực hiện cũng sẽ có khả năng được ở dạng các thủ tục khác nhau mà thực hiện các hành động được thực hiện để đáp ứng với các sự kiện khác nhau có thể xảy ra. Trong lập trình dựa trên sự kiện như vậy, nhiều pro-cedures được gọi (gọi) hoặc bằng các thủ tục khác trong giao thức ngăn xếp, hoặc như là kết quả của một ngắt. Trong người gửi, những sự kiện này sẽ là: (1) một cuộc gọi từ các thực thể lớp trên để gọi rdt_send (), (2) một giờ gián đoạn, và (3) một cuộc gọi từ các lớp thấp hơn để gọi rdt_rcv () khi một gói tin đến. Các bài tập lập trình ở phần cuối của chương này sẽ cung cấp cho bạn một cơ hội để thực sự thực hiện các thói quen trong một mô phỏng, nhưng thực tế, thiết lập mạng.
Chúng tôi lưu ý ở đây là các giao thức GBN kết hợp gần như tất cả các kỹ thuật mà chúng ta sẽ gặp phải khi chúng ta nghiên cứu thành phần truyền tải dữ liệu đáng tin cậy của TCP trong phần 3.5. Những kỹ thuật này bao gồm việc sử dụng các số thứ tự, các báo nhận tích lũy, tổng kiểm tra, và một hoạt động thời gian chờ / truyền lại.
3.4.4 Selective Repeat (SR)
Các giao thức GBN cho phép người gửi có khả năng "điền vào các đường ống" trong hình 3.17 với các gói tin, do đó tránh các vấn đề về sử dụng kênh chúng tôi đã lưu ý với các giao thức stop-and-wait. Tuy nhiên, kịch bản trong đó GBN bản thân bị vấn đề hiệu suất. Đặc biệt, khi kích thước cửa sổ và sản phẩm băng thông chậm trễ là cả lớn, nhiều gói tin có thể được trong các đường ống. Một lỗi gói duy nhất do đó có thể gây ra GBN để truyền lại một số lượng lớn các gói tin, nhiều khi không cần thiết. Là xác suất của lỗi kênh tăng lên, các đường ống có thể bị lấp đầy với những truyền lại không cần thiết. Hãy tưởng tượng, trong kịch bản thông điệp chính tả của chúng tôi, rằng nếu mỗi lần một từ đã bị cắt xén, xung quanh 1.000 từ (ví dụ, một kích thước win-dow 1.000 từ) phải được lặp đi lặp lại. Các chính tả sẽ bị chậm lại bởi tất cả các từ lặp lại.
đang được dịch, vui lòng đợi..
 
Các ngôn ngữ khác
Hỗ trợ công cụ dịch thuật: Albania, Amharic, Anh, Armenia, Azerbaijan, Ba Lan, Ba Tư, Bantu, Basque, Belarus, Bengal, Bosnia, Bulgaria, Bồ Đào Nha, Catalan, Cebuano, Chichewa, Corsi, Creole (Haiti), Croatia, Do Thái, Estonia, Filipino, Frisia, Gael Scotland, Galicia, George, Gujarat, Hausa, Hawaii, Hindi, Hmong, Hungary, Hy Lạp, Hà Lan, Hà Lan (Nam Phi), Hàn, Iceland, Igbo, Ireland, Java, Kannada, Kazakh, Khmer, Kinyarwanda, Klingon, Kurd, Kyrgyz, Latinh, Latvia, Litva, Luxembourg, Lào, Macedonia, Malagasy, Malayalam, Malta, Maori, Marathi, Myanmar, Mã Lai, Mông Cổ, Na Uy, Nepal, Nga, Nhật, Odia (Oriya), Pashto, Pháp, Phát hiện ngôn ngữ, Phần Lan, Punjab, Quốc tế ngữ, Rumani, Samoa, Serbia, Sesotho, Shona, Sindhi, Sinhala, Slovak, Slovenia, Somali, Sunda, Swahili, Séc, Tajik, Tamil, Tatar, Telugu, Thái, Thổ Nhĩ Kỳ, Thụy Điển, Tiếng Indonesia, Tiếng Ý, Trung, Trung (Phồn thể), Turkmen, Tây Ban Nha, Ukraina, Urdu, Uyghur, Uzbek, Việt, Xứ Wales, Yiddish, Yoruba, Zulu, Đan Mạch, Đức, Ả Rập, dịch ngôn ngữ.

Copyright ©2025 I Love Translation. All reserved.

E-mail: