There are many possible approaches toward dealing with packet loss (se dịch - There are many possible approaches toward dealing with packet loss (se Việt làm thế nào để nói

There are many possible approaches

There are many possible approaches toward dealing with packet loss (several more of which are explored in the exercises at the end of the chapter). Here, we’ll put the burden of detecting and recovering from lost packets on the sender. Suppose that the sender transmits a data packet and either that packet, or the receiver’s ACK of that packet, gets lost. In either case, no reply is forthcoming at the sender from the receiver. If the sender is willing to wait long enough so that it is certain that a packet has been lost, it can simply retransmit the data packet. You should convince yourself that this protocol does indeed work.
But how long must the sender wait to be certain that something has been lost? The sender must clearly wait at least as long as a round-trip delay between the sender and receiver (which may include buffering at intermediate routers) plus whatever amount of time is needed to process a packet at the receiver. In many net-works, this worst-case maximum delay is very difficult even to estimate, much less know with certainty. Moreover, the protocol should ideally recover from packet loss as soon as possible; waiting for a worst-case delay could mean a long wait until error recovery is initiated. The approach thus adopted in practice is for the sender to judiciously choose a time value such that packet loss is likely, although not guaranteed, to have happened. If an ACK is not received within this time, the packet is retransmitted. Note that if a packet experiences a particularly large delay, the sender may retransmit the packet even though neither the data packet nor its ACK have been lost. This introduces the possibility of duplicate data packets in the sender-to-receiver channel. Happily, protocol rdt2.2 already has enough functionality (that is, sequence numbers) to handle the case of duplicate packets.
From the sender’s viewpoint, retransmission is a panacea. The sender does not know whether a data packet was lost, an ACK was lost, or if the packet or ACK was simply overly delayed. In all cases, the action is the same: retransmit. Implementing a time-based retransmission mechanism requires a countdown timer that can interrupt the sender after a given amount of time has expired. The sender will thus need to be able to (1) start the timer each time a packet (either a first-time packet or a retransmission) is sent, (2) respond to a timer interrupt (taking appropriate actions), and (3) stop the timer.
Figure 3.15 shows the sender FSM for rdt3.0, a protocol that reliably transfers data over a channel that can corrupt or lose packets; in the homework problems, you’ll be asked to provide the receiver FSM for rdt3.0. Figure 3.16 shows how the proto- col operates with no lost or delayed packets and how it handles lost data packets. In Figure 3.16, time moves forward from the top of the diagram toward the bottom of the diagram; note that a receive time for a packet is necessarily later than the send time for a packet as a result of transmission and propagation delays. In Figures 3.16(b)–(d), the send-side brackets indicate the times at which a timer is set and later times out. Several of the more subtle aspects of this protocol are explored in the exercises at the end of this chapter. Because packet sequence numbers alternate between 0 and 1, pro-tocol rdt3.0 is sometimes known as the alternating-bit protocol.
We have now assembled the key elements of a data transfer protocol. Check-sums, sequence numbers, timers, and positive and negative acknowledgment pack-ets each play a crucial and necessary role in the operation of the protocol. We now have a working reliable data transfer protocol!
3.4.2 Pipelined Reliable Data Transfer Protocols
Protocol rdt3.0 is a functionally correct protocol, but it is unlikely that anyone would be happy with its performance, particularly in today’s high-speed networks. At the heart of rdt3.0’s performance problem is the fact that it is a stop-and-wait protocol.
To appreciate the performance impact of this stop-and-wait behavior, consider an idealized case of two hosts, one located on the West Coast of the United States and the other located on the East Coast, as shown in Figure 3.17. The speed-of-light round-trip propagation delay between these two end systems, RTT, is approxi-mately 30 milliseconds. Suppose that they are connected by a channel with a trans-mission rate, R, of 1 Gbps (109 bits per second). With a packet size, L, of 1,000 bytes (8,000 bits) per packet, including both header fields and data, the time needed to actually transmit the packet into the 1 Gbps link is
Figure 3.18(a) shows that with our stop-and-wait protocol, if the sender begins sending the packet at t = 0, then at t = L/R = 8 microseconds, the last bit enters the channel at the sender side. The packet then makes its 15-msec cross-country jour- ney, with the last bit of the packet emerging at the receiver at t = RTT/2 + L/R = 15.008 msec. Assuming for simplicity that ACK packets are extremely small (so that we can ignore their transmission time) and that the receiver can send an ACK as soon as the last bit of a data packet is received, the ACK emerges back at the sender at t = RTT + L/R = 30.008 msec. At this point, the sender can now transmit the next message. Thus, in 30.008 msec, the sender was sending for only 0.008 msec. If we define the utilization of the sender (or the channel) as the fraction of time the sender is actually busy sending bits into the channel, the analysis in Figure 3.18(a) shows that the stop-and-wait protocol has a rather dismal sender utilization, Usender, of
That is, the sender was busy only 2.7 hundredths of one percent of the time! Viewed another way, the sender was able to send only 1,000 bytes in 30.008 mil-liseconds, an effective throughput of only 267 kbps—even though a 1 Gbps link was available! Imagine the unhappy network manager who just paid a fortune for a giga-bit capacity link but manages to get a throughput of only 267 kilobits per second! This is a graphic example of how network protocols can limit the capabilities provided by the underlying network hardware. Also, we have neglected lower-layer protocol-processing times at the sender and receiver, as well as the processing and queuing delays that would occur at any intermediate routers between the sender and receiver. Including these effects would serve only to further increase the delay and further accentuate the poor performance.
The solution to this particular performance problem is simple: Rather than oper-ate in a stop-and-wait manner, the sender is allowed to send multiple packets with-out waiting for acknowledgments, as illustrated in Figure 3.17(b). Figure 3.18(b) shows that if the sender is allowed to transmit three packets before having to wait for acknowledgments, the utilization of the sender is essentially tripled. Since the many in-transit sender-to-receiver packets can be visualized as filling a pipeline, this technique is known as pipelining. Pipelining has the following consequences for reliable data transfer protocols:
The range of sequence numbers must be increased, since each in-transit packet (not counting retransmissions) must have a unique sequence number and there may be multiple, in-transit, unacknowledged packets.
The sender and receiver sides of the protocols may have to buffer more than one packet. Minimally, the sender will have to buffer packets that have been trans-mitted but not yet acknowledged. Buffering of correctly received packets may also be needed at the receiver, as discussed below.
The range of sequence numbers needed and the buffering requirements will depend on the manner in which a data transfer protocol responds to lost, cor-rupted, and overly delayed packets. Two basic approaches toward pipelined error recovery can be identified: Go-Back-N and selective repeat.
3.4.3 Go-Back-N (GBN)
In a Go-Back-N (GBN) protocol, the sender is allowed to transmit multiple packets (when available) without waiting for an acknowledgment, but is constrained to have no more than some maximum allowable number, N, of unacknowledged packets in the pipeline. We describe the GBN protocol in some detail in this section. But before read-ing on, you are encouraged to play with the GBN applet (an awesome applet!) at the companion Web site.
Figure 3.19 shows the sender’s view of the range of sequence numbers in a GBN protocol. If we define base to be the sequence number of the oldest unacknowledged packet and nextseqnum to be the smallest unused sequence number (that is, the sequence number of the next packet to be sent), then four intervals in the range of sequence numbers can be identified. Sequence numbers in the interval [0,base-1] correspond to packets that have already been transmitted and acknowledged. The inter-val [base,nextseqnum-1] corresponds to packets that have been sent but not yet acknowledged. Sequence numbers in the interval [nextseqnum,base+N-1] can be used for packets that can be sent immediately, should data arrive from the upper layer. Finally, sequence numbers greater than or equal to base+N cannot be used until an unacknowledged packet currently in the pipeline (specifically, the packet with sequence number base) has been acknowledged.
0/5000
Từ: -
Sang: -
Kết quả (Việt) 1: [Sao chép]
Sao chép!
Có rất nhiều phương pháp có thể đối với đối phó với sự mất mát gói (nhiều hơn nữa trong đó được khám phá trong các bài tập cuối của chương). Ở đây, chúng tôi sẽ đưa gánh nặng của phát hiện và phục hồi từ gói dữ liệu bị mất trên người gửi. Giả sử rằng người gửi truyền dữ liệu gói và gói đó hoặc người nhận ACK của gói đó, bị mất. Trong cả hai trường hợp, không có trả lời là sắp tới tại người gửi từ người nhận. Nếu người gửi là sẵn sàng chờ đợi lâu dài đủ để cho chắc chắn rằng một gói dữ liệu đã bị mất, nó có thể chỉ đơn giản là retransmit gói dữ liệu. Bạn nên thuyết phục mình rằng giao thức này thực sự làm việc.Nhưng bao lâu người gửi phải chờ đợi để chắc chắn rằng một cái gì đó đã bị mất? Người gửi phải rõ ràng chờ ít miễn là một sự chậm trễ trọn vòng giữa người gửi và người nhận (có thể bao gồm việc đệm tại trung gian router) cộng với bất cứ điều gì khoảng thời gian cần thiết để xử lý một gói lúc người nhận. Trong nhiều mạng-công trình, sự trì hoãn tối đa tồi tệ nhất này là rất khó khăn thậm chí để ước tính, ít hơn nhiều biết chắc chắn. Hơn nữa, các giao thức nên lý tưởng phục hồi từ gói mất càng sớm càng tốt; chờ đợi cho một sự chậm trễ tồi tệ nhất có thể có nghĩa là một chờ đợi lâu dài cho đến khi khôi phục lỗi được khởi xướng. Cách tiếp cận như vậy được thông qua trong thực tế là cho người gửi để khôn ngoan lựa chọn một giá trị thời gian sao cho gói mất có khả năng, mặc dù không được bảo đảm, để xảy ra. Nếu một ACK không nhận được trong thời gian này, gói retransmitted. Lưu ý rằng nếu một gói kinh nghiệm một sự chậm trễ đặc biệt lớn, người gửi có thể retransmit gói mặc dù không gói dữ liệu ACK của nó, cũng không có bị mất. Điều này giới thiệu khả năng của gói dữ liệu trùng lặp dữ liệu trong các kênh người gửi đến người nhận. Hạnh phúc, giao thức rdt2.2 đã có đủ chức năng (có nghĩa là, số thứ tự) để xử lý trường hợp trùng lặp gói.Từ quan điểm của người gửi, retransmission là một liều thuốc. Người gửi không biết cho dù một gói dữ liệu bị mất, một ACK bị mất, hoặc nếu gói hoặc ACK chỉ đơn giản là quá chậm trễ. Trong mọi trường hợp, các hành động là như nhau: retransmit. Thực hiện một cơ chế dựa trên thời gian retransmission đòi hỏi một bộ đếm thời gian đếm ngược mà có thể làm gián đoạn người gửi sau khi một số tiền nhất định của thời gian đã hết hạn. Người gửi sẽ do đó cần để có thể (1) bắt đầu bộ đếm thời gian mỗi khi một gói (gói đầu tiên-thời gian hoặc một retransmission) được gửi, (2) đáp ứng với một bộ đếm thời gian gián đoạn (hành động thích hợp), và (3) dừng bộ đếm thời gian.Con số 3,15 cho thấy người gửi FSM cho rdt3.0, một giao thức đáng tin cậy chuyển các file dữ liệu qua một kênh có thể hỏng hoặc mất gói dữ liệu; trong vấn đề bài tập ở nhà, bạn sẽ được yêu cầu cung cấp nhận FSM cho rdt3.0. Con số 3,16 cho thấy làm thế nào proto-col hoạt động với không có gói dữ liệu bị mất hoặc bị trì hoãn và cách xử lý mất gói dữ liệu. Trong con số 3,16, thời gian di chuyển về phía trước từ phía trên cùng của biểu đồ về phía dưới cùng của biểu đồ; lưu ý rằng một thời gian nhận cho một gói là nhất thiết phải muộn hơn thời gian gửi cho một gói là kết quả của sự chậm trễ truyền và tuyên truyền. Trong con số 3.16(b)–(d), khung bên gửi cho biết thời gian mà tại đó một bộ đếm thời gian là thiết lập và các thời gian sau đó ra. Một số trong những khía cạnh tinh tế của giao thức này được khám phá trong các bài tập cuối của chương này. Bởi vì thứ tự gói số thay thế giữa 0 và 1, pro-tocol rdt3.0 đôi khi được gọi là giao thức bit xen kẽ.Bây giờ, chúng tôi đã tập hợp các yếu tố quan trọng của một giao thức truyền dữ liệu. Khoản tiền phòng, số thứ tự, khách tham quan, và thừa nhận tích cực và tiêu cực gói-ets mỗi đóng một vai trò rất quan trọng và cần thiết trong hoạt động của các giao thức. Chúng tôi bây giờ có một dữ liệu đáng tin cậy làm việc chuyển giao thức!3.4.2 pipelined đáng tin cậy dữ liệu chuyển giao thứcGiao thức rdt3.0 là một giao thức chức năng chính xác, nhưng nó không chắc rằng bất cứ ai muốn được hạnh phúc với hiệu quả của nó, đặc biệt là trong ngày hôm nay của mạng tốc độ cao. Tại Trung tâm hiệu suất rdt3.0 của vấn đề là một thực tế rằng nó là một giao thức dừng và chờ đợi.Để đánh giá cao tác động hiệu quả của hành vi này dừng lại và chờ đợi, hãy xem xét một trường hợp lý tưởng của hai máy chủ, đặt trên bờ biển phía tây của Hoa Kỳ và các khác nằm trên bờ biển phía đông, như minh hoạ trong hình 3,17. Sự chậm trễ trọn vòng tuyên truyền tốc độ của ánh sáng giữa các hệ thống hai kết thúc, RTT, là approxi mately 30 mili-giây. Giả sử rằng họ được kết nối bởi một kênh với một tỷ lệ trans-nhiệm vụ, R, của 1 Gbps (109 bit trên giây). Với một kích thước gói, L, 1000 byte (8.000 bit) cho một gói, bao gồm cả trường tiêu đề và dữ liệu, thời gian cần thiết để thực sự truyền tải gói vào 1 Gbps liên kết làCon số 3.18(a) cho thấy rằng với giao thức dừng và chờ đợi của chúng tôi, nếu người gửi bắt đầu gửi gói tin tại t = 0, sau đó n = L/R = 8 miligiây, bit cuối vào kênh ở phía người gửi. Gói tin sau đó làm cho nó jour xuyên quốc gia 15-msec-ney, với bit cuối cùng của gói mới nổi tại nhận tại t = RTT/2 + L/R = 15.008 msec. giả sử cho đơn giản rằng gói dữ liệu ACK rất nhỏ (do đó chúng tôi có thể bỏ qua thời gian truyền của họ) và những người nhận có thể gửi một ACK ngay sau khi nhận được bit cuối cùng của một gói dữ liệu , ACK nổi lên trở lại ở người gửi tại t = RTT + L/R = 30.008 msec. Tại thời điểm này, người gửi có thể truyền tải thư tiếp theo. Như vậy, trong 30.008 msec, người gửi đã gửi cho chỉ 0.008 msec. Nếu chúng tôi xác định việc sử dụng của người gửi (hoặc các kênh) là phần nhỏ của thời gian gửi là thực sự bận rộn gửi bit vào các kênh, các phân tích ở con số 3.18(a) cho thấy rằng giao thức dừng và chờ đợi có một sử dụng ảm đạm thay vì người gửi, Usender, củaĐó là, người gửi đã bận rộn chỉ 2,7 hundredths của một phần trăm của thời gian! Xem một cách khác, người gửi đã có thể gửi chỉ 1.000 byte trong 30.008 mil-liseconds, một băng thông hiệu quả của chỉ 267 kbps-mặc dù một 1 Gbps liên kết đã có sẵn! Hãy tưởng tượng trình quản lý mạng không hài lòng những người chỉ được thanh toán một tài sản cho một liên kết công suất giga-chút nhưng quản lý để có được một thông qua các chỉ 267 kilobits mỗi giây! Đây là một ví dụ đồ họa của cách mạng giao thức có thể giới hạn khả năng cung cấp bởi phần cứng mạng cơ bản. Ngoài ra, chúng tôi đã bỏ rơi thời gian xử lý giao thức lớp thấp hơn người gửi và người nhận, cũng như sự chậm trễ xử lý và xếp hàng nào xảy ra ở bất kỳ bộ định tuyến trung gian giữa người gửi và người nhận. Bao gồm cả những hiệu ứng này sẽ phục vụ chỉ để tăng thêm sự chậm trễ và tiếp tục nhấn mạnh tính năng bay kém.Các giải pháp cho vấn đề hiệu suất cụ thể này là đơn giản: thay vì hơn oper-ăn một cách dừng và chờ đợi, người gửi được phép gửi nhiều gói với ra chờ đợi cho acknowledgments, như minh hoạ trong hình 3.17(b). Tìm 3.18(b) cho thấy rằng nếu người gửi được cho phép để truyền tải gói dữ liệu ba trước khi cần phải đợi cho acknowledgments, việc sử dụng của người gửi về cơ bản tăng gấp ba lần. Kể từ khi các gói dữ liệu nhiều người gửi đến người nhận trong quá cảnh có thể được hình dung giống như điền vào một đường ống, kỹ thuật này được gọi là pipelining. Pipelining có những hậu quả sau cho đáng tin cậy dữ liệu chuyển giao thức:Phạm vi của các số thứ tự phải được tăng lên, kể từ khi mỗi gói tin trong quá cảnh (không kể truyền lại) phải có một số chuỗi duy nhất và có thể có nhiều, gói tin trong quá cảnh, unacknowledged.Mặt người gửi và người nhận của các giao thức có thể có để đệm hơn một gói. Tối thiểu, người gửi sẽ có cho các gói tin bộ đệm đã weren't xuyên nhưng không được công nhận. Đệm chính xác nhận được gói có thể cũng là cần thiết tại người nhận, như được thảo luận dưới đây.Phạm vi của các số thứ tự cần thiết và các yêu cầu đệm sẽ phụ thuộc vào cách mà trong đó một giao thức truyền dữ liệu đáp ứng bị mất, cor-rupted và gói quá chậm trễ. Hai phương pháp tiếp cận cơ bản về hướng phục hồi pipelined lỗi có thể được xác định: Go-Back-N và chọn lọc lại.3.4.3 go-Back-N (GBN)Trong một giao thức Go-Back-N (GBN), người gửi được cho phép để truyền tải gói dữ liệu nhiều (nếu có) mà không cần chờ đợi cho một sự thừa nhận, nhưng đã được cố định có không nhiều hơn một số số tối đa cho phép, N, unacknowledged gói trong các đường ống. Chúng tôi mô tả các giao thức GBN một số chi tiết trong phần này. Nhưng trước khi đọc-ing ngày, bạn được khuyến khích để chơi với applet GBN (một applet awesome!) tại trang Web của bạn đồng hành.Con số 3,19 Hiển thị của người gửi xem phạm vi của các số thứ tự trong một giao thức GBN. Nếu chúng tôi xác định căn cứ là số thứ tự của gói unacknowledged lâu đời nhất và nextseqnum là không sử dụng chuỗi số nhỏ nhất (có nghĩa là, là một dãy số của gói tin tiếp theo được gửi), sau đó khoảng thời gian bốn trong phạm vi của số thứ tự có thể được xác định. Số thứ tự trong khoảng thời gian [0, cơ sở-1] tương ứng với gói đã được truyền và công nhận. Inter-val [cơ sở, nextseqnum-1] tương ứng với gói dữ liệu mà đã được gửi nhưng chưa được công nhận. Số thứ tự trong khoảng thời gian [nextseqnum, cơ sở + N-1] có thể được sử dụng cho các gói dữ liệu có thể được gửi ngay lập tức, nên dữ liệu đến từ lớp trên. Cuối cùng, số thứ tự lớn hơn hoặc bằng với cơ sở + N không thể được sử dụng cho đến khi một gói dữ liệu unacknowledged hiện nay trong các đường ống (cụ thể, gói với chuỗi số cơ bản) đã được công nhận.
đang được dịch, vui lòng đợi..
Kết quả (Việt) 2:[Sao chép]
Sao chép!
Có nhiều phương pháp có thể đối phó với mất gói tin (nhiều hơn trong số đó được khám phá trong các bài tập ở phần cuối của chương này). Ở đây, chúng tôi sẽ đặt gánh nặng của việc phát hiện và phục hồi từ các gói tin bị mất trên người gửi. Giả sử rằng người gửi truyền đi một gói dữ liệu và một trong hai gói dữ liệu đó, hoặc ACK của người nhận của gói tin đó, bị mất. Trong cả hai trường hợp, không có trả lời là sắp tới ở người gửi từ người nhận. Nếu người gửi là sẵn sàng chờ đợi đủ lâu để nó chắc chắn là một gói tin đã bị mất, nó chỉ đơn giản là có thể truyền lại các gói dữ liệu. Bạn nên thuyết phục bản thân rằng giao thức này thực sự làm việc.
Nhưng bao lâu người gửi phải chờ đợi để chắc chắn rằng một cái gì đó đã bị mất? Người gửi phải chờ đợi rõ ràng ít nhất là dài như một sự chậm trễ chuyến đi vòng quanh giữa người gửi và người nhận (có thể bao gồm đệm tại router trung gian) cộng với bất cứ số lượng thời gian cần thiết để xử lý một gói tin ở người nhận. Trong nhiều net-công trình, trường hợp xấu nhất trì hoãn tối đa này là rất khó khăn ngay cả để ước tính, ít nhiều biết một cách chắc chắn. Hơn nữa, các giao thức lý tưởng nên phục hồi từ mất gói tin càng sớm càng tốt; chờ đợi cho một trường hợp xấu nhất có thể chậm trễ có nghĩa là chờ đợi khá lâu cho đến khi khôi phục lỗi được bắt đầu. Cách tiếp cận như vậy được thông qua trong thực tế là cho người gửi để sáng suốt lựa chọn một giá trị thời gian như vậy mà mất gói tin là có khả năng, mặc dù không được bảo đảm, như đã xảy ra. Nếu một ACK không được nhận trong thời gian này, các gói tin được truyền lại. Lưu ý rằng nếu một gói tin bị chậm trễ đặc biệt lớn, người gửi có thể truyền lại các gói tin mặc dù cả hai gói dữ liệu cũng không ACK của nó đã bị mất. Này giới thiệu các khả năng của các gói dữ liệu trùng lặp trong các kênh gửi đến người nhận. Hạnh phúc, giao thức rdt2.2 đã có đủ chức năng (có nghĩa là, số thứ tự) để xử lý các trường hợp của các gói tin trùng lặp.
Từ quan điểm của người gửi, truyền lại là một thuốc chữa bách bệnh. Người gửi không biết liệu một gói dữ liệu đã mất, một ACK bị mất, hoặc nếu các gói tin ACK hoặc chỉ đơn giản là quá chậm. Trong tất cả các trường hợp, các hành động là như nhau: truyền lại. Thực hiện một cơ chế truyền lại dựa trên thời gian đòi hỏi một đồng hồ đếm ngược có thể gián đoạn cho người gửi sau khi một số tiền nhất định của thời gian đã hết. Do đó người gửi sẽ cần để có thể (1) bắt đầu đếm thời gian mỗi lần một gói (hoặc một gói tin lần đầu hoặc phát lại) được gửi, (2) đáp ứng với một bộ đếm thời gian gián đoạn (có những hành động thích hợp), và (3 ) dừng bộ đếm thời gian.
Hình 3.15 cho thấy các FSM người gửi cho rdt3.0, một giao thức truyền tải dữ liệu đáng tin cậy trên một kênh có thể bị hỏng hoặc bị mất gói tin; trong các bài tập về nhà, bạn sẽ được yêu cầu cung cấp các FSM thu cho rdt3.0. Hình 3.16 cho thấy cách các col nguyên thủy hoạt động không có gói tin bị mất hoặc bị trì hoãn và làm thế nào nó handle mất gói dữ liệu. Trong hình 3.16, thời gian di chuyển về phía trước từ phía trên cùng của sơ đồ phía dưới cùng của biểu đồ; lưu ý rằng nhận được thời gian cho một gói tin là nhất thiết phải muộn hơn thời gian gửi cho một gói như là một kết quả của việc truyền tải và lan truyền sự chậm trễ. Trong hình 3.16 (b) - (d), dấu ngoặc đơn gửi-side cho biết thời gian mà một bộ đếm thời gian được thiết lập và thời gian sau đó ra. Một số trong những khía cạnh tinh tế hơn của giao thức này được khám phá trong các bài tập ở phần cuối của chương này. Bởi vì số thứ tự gói tin luân phiên giữa 0 và 1, pro-tocol rdt3.0 đôi khi được gọi là giao thức xen-bit.
Chúng tôi đã tập hợp các yếu tố chính của một giao thức truyền dữ liệu. Kiểm tra-tiền, số thứ tự, giờ, và sự thừa nhận tích cực và tiêu cực pack-ETS từng đóng một vai trò rất quan trọng và cần thiết trong hoạt động của các giao thức. Bây giờ chúng ta có một giao thức truyền dữ liệu đáng tin cậy làm việc!
3.4.2 pipeline đáng tin cậy chuyển giao dữ liệu giao thức
giao thức rdt3.0 là một giao thức có chức năng chính xác, nhưng nó không chắc rằng mọi người sẽ được hạnh phúc với hiệu quả của nó, đặc biệt là trong các mạng tốc độ cao ngày nay. Tại trung tâm của vấn đề hiệu suất của rdt3.0 là một thực tế rằng nó là một giao thức stop-and-wait.
Để đánh giá các tác động hiệu quả của các hành vi dừng-và-chờ đợi này, hãy xem xét một trường hợp lý tưởng hóa của hai máy, một nằm trên Tây Bờ biển của Hoa Kỳ và các khác nằm trên bờ biển Đông, như thể hiện trong hình 3.17. Tốc độ của ánh sáng-round-trip delay tuyên truyền giữa hai hệ thống kết thúc, RTT, là xấp xỉ-30 mili giây. Giả sử rằng chúng được kết nối bởi một kênh với một tỷ lệ xuyên nhiệm vụ, R, của 1 Gbps (109 bit mỗi giây). Với một gói kích thước, L, 1.000 byte (8.000 bit) cho mỗi gói, bao gồm cả lĩnh vực tiêu đề và dữ liệu, thời gian cần thiết để thực sự truyền tải các gói dữ liệu vào các liên kết 1 Gbps là
hình 3.18 (a) cho thấy rằng với chúng tôi dừng-và giao thức -wait, nếu người gửi bắt đầu gửi các gói tin tại t = 0, sau đó tại t = L / R = 8 micro, các bit cuối cùng đi vào kênh ở phía người gửi. Các gói sau đó làm cho ney 15 msec của nó xuyên quốc gia jour-, với các bit cuối cùng của gói mới nổi ở người nhận tại t = RTT / 2 + L / R = 15,008 msec. Giả sử vì đơn giản rằng ACK gói là rất nhỏ (vì vậy mà chúng ta có thể bỏ qua thời gian truyền của họ) và rằng người nhận có thể gửi một ACK ngay khi bit cuối cùng của một gói dữ liệu được nhận, ACK nổi lên trở lại ở người gửi tại t = RTT + L / R = 30,008 msec. Tại thời điểm này, người gửi có thể truyền tải thông điệp tới. Như vậy, trong 30,008 msec, người gửi đã gửi cho chỉ 0.008 ms. Nếu chúng ta xác định việc sử dụng của người gửi (hoặc kênh) là phần nhỏ thời gian gửi thực sự là bit gửi bận rộn vào các kênh, các phân tích trong hình 3.18 (a) cho thấy rằng các giao thức stop-and-wait có khá ảm đạm sử dụng người gửi, Usender, trong
đó là, người gửi là bận rộn chỉ có 2,7 phần trăm của một phần trăm của thời gian! Được xem một cách khác, người gửi đã có thể gửi chỉ 1.000 byte trong 30,008 triệu-liseconds, một thông lượng hiệu quả của chỉ 267 kbps-mặc dù một liên kết 1 Gbps đã có sẵn! Hãy tưởng tượng người quản lý mạng không hài lòng người chỉ cần trả một tài sản cho một liên kết có dung giga-bit nhưng quản lý để có được một thông lượng chỉ 267 kilobits mỗi giây! Đây là một ví dụ đồ họa như thế nào giao thức mạng có thể hạn chế khả năng được cung cấp bởi các phần cứng mạng cơ bản. Ngoài ra, chúng tôi đã bỏ qua lớp thấp hơn lần giao thức chế biến ở người gửi và người nhận, cũng như việc xử lý và sự chậm trễ xếp hàng có thể xảy ra ở bất kỳ router trung gian giữa người gửi và người nhận. Bao gồm các hiệu ứng sẽ chỉ phục vụ để tăng thêm sự chậm trễ và tiếp tục nhấn mạnh hiệu suất kém.
Các giải pháp cho vấn đề này hiệu suất đặc biệt là đơn giản: Thay vì oper-ăn một cách stop-and-wait, người gửi được phép gửi nhiều gói với-ra chờ đợi những lời cảm ơn, như minh họa trong hình 3.17 (b). Hình 3.18 (b) cho thấy rằng nếu người gửi được phép chuyển ba gói tin trước khi phải chờ đợi những lời cảm ơn, việc sử dụng của người gửi được về cơ bản tăng gấp ba lần. Kể từ người gửi đến người nhận các gói dữ liệu nhiều quá cảnh có thể được hình dung như là điền vào một đường ống dẫn, kỹ thuật này được gọi là pipelining. Pipelining có những hậu quả sau đây cho các giao thức truyền dữ liệu đáng tin cậy:
Phạm vi của các số thứ tự phải được tăng lên, kể từ (truyền lại không đếm) mỗi gói, quá cảnh phải có một dãy số duy nhất và có thể có nhiều, quá cảnh, các gói tin không được thừa nhận.
Các bên gửi và người nhận trong các giao thức có thể phải đệm nhiều hơn một gói. Tối thiểu, người gửi sẽ phải đệm gói tin đã được trans-đệ trình nhưng chưa được thừa nhận. Đệm của các gói tin nhận được một cách chính xác cũng có thể cần thiết ở người nhận, như được thảo luận dưới đây.
Phạm vi của các số thứ tự cần thiết và yêu cầu buffering sẽ phụ thuộc vào cách thức mà một giao thức truyền dữ liệu đáp ứng mất, cor-rupted, và các gói tin quá chậm . Hai cách tiếp cận cơ bản để pipeline phục hồi lỗi có thể được xác định: Go-Back-N và lặp lại chọn lọc.
3.4.3 Go-Back-N (GBN)
Trong một Go-Back-N (GBN) giao thức, người gửi được phép chuyển nhiều các gói dữ liệu (nếu có) mà không cần chờ đợi một sự thừa nhận, nhưng bị hạn chế như không có nhiều hơn một số số lượng tối đa cho phép, N, các gói dữ liệu không được thừa nhận trong các đường ống. Chúng tôi mô tả các giao thức GBN ở một số chi tiết trong phần này. Nhưng trước khi đọc-ing trên, bạn được khuyến khích để chơi với các applet GBN (một applet awesome!) Tại trang web đồng.
Hình 3.19 cho thấy quan điểm của người gửi hàng loạt các số thứ tự trong một giao thức GBN. Nếu chúng ta định nghĩa cơ bản là số thứ tự của các gói tin không được thừa nhận lâu đời nhất và nextseqnum là số thứ tự không sử dụng nhỏ nhất (có nghĩa là, số thứ tự của gói tin tiếp theo được gửi), sau đó bốn khoảng thời gian trong khoảng từ số thứ tự có thể được xác định. Số thứ tự trong khoảng [0, cơ sở-1] tương ứng với các gói tin đã được truyền và nhận. Các liên val [cơ sở, nextseqnum-1] tương ứng với gói tin đã được gửi đi nhưng chưa được thừa nhận. Số thứ tự trong khoảng [nextseqnum, cơ sở + N-1] có thể được sử dụng cho các gói tin có thể được gửi ngay lập tức, dữ liệu sẽ đến từ các lớp trên. Cuối cùng, số thứ tự lớn hơn hoặc bằng với cơ sở + N không thể được sử dụng cho đến khi một gói tin không được thừa nhận hiện nay trong các đường ống (cụ thể, các gói tin với cơ sở số thứ tự) đã được công nhận.
đ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 ©2024 I Love Translation. All reserved.

E-mail: