Điểm:-1

Hiểu cửa sổ nhận TCP

lá cờ co

Tôi hiện đang tìm hiểu về TCP, đặc biệt là khía cạnh cửa sổ nhận. Tôi đã đọc từ nhiều nguồn về nó, và có một số điều tôi muốn chắc chắn rằng mình hiểu.

Từ những gì tôi đã học được, các người nhận quảng cáo một "cửa sổ nhận", đó là - và đây là nơi tôi bị nhầm lẫn - số byte mà người gửi được phép gửi mà không được xác nhận, hay nói cách khác, dữ liệu trong chuyến bay.

Bây giờ, nếu tôi thử nghĩ về nó, mục tiêu chính của chúng ta trong điều khiển luồng là đảm bảo rằng người gửi sẽ không gửi nhiều hơn mức mà người nhận có thể xử lý, tức là chúng ta muốn ngăn chặn tình huống trong đó người gửi gửi dữ liệu mà người nhận sẽ phải loại bỏ vì nó sẽ không có nơi cất giữ!

Theo logic này, tôi tin rằng cửa sổ nhận phải tương ứng với kích thước của bộ đệm nhận (không biết có giống hoàn toàn không, nhưng dù sao thì kích thước cửa sổ phải là dẫn xuất của bộ đệm nhận) và lý do mà chúng tôi đang giới hạn dữ liệu trong chuyến bay được gửi bởi người gửi là - nếu người gửi sẽ gửi nhiều hơn kích thước cửa sổ (một lần nữa là dẫn xuất của bộ đệm nhận) và người nhận chưa xác nhận một số dữ liệu (cập nhật kích thước cửa sổ), thì đó có thể là tình huống mà đầu nhận không theo kịp - tức là, đầu nhận sẽ nhận dữ liệu nhanh hơn tốc độ mà ứng dụng tiêu thụ có thể xử lý dữ liệu, dẫn đến các phân đoạn bị loại bỏ (hy vọng điều đó rõ ràng).

Nhưng, đọc bài này, @DavidShwartz đang nói rằng mục đích của dữ liệu trong chuyến bay KHÔNG phải để tránh làm đầy bộ đệm, mà là để xử lý sự chậm trễ được giới thiệu bởi kênh liên lạc. Mà tôi không hiểu lắm.

Vấn đề là mọi nguồn nói về chủ đề này đều không giải thích được mối liên hệ giữa mục đích chung của kiểm soát luồng và điều với dữ liệu trong chuyến bay.

Ai đó có thể giải thích điều này chi tiết hơn?

lá cờ ky
Xin chào! Câu hỏi hay, tôi không thể giải thích rõ hơn cho bạn... có thể trang này tốt hơn https://networkengineering.stackexchange.com/
djdomi avatar
lá cờ za
Các yêu cầu đề xuất sản phẩm, dịch vụ hoặc tài liệu học tập là lạc đề vì chúng thu hút các câu trả lời chất lượng thấp, cố chấp và spam, đồng thời các câu trả lời nhanh chóng trở nên lỗi thời. Thay vào đó, hãy mô tả vấn đề kinh doanh mà bạn đang giải quyết, nghiên cứu bạn đã thực hiện và các bước đã thực hiện để giải quyết vấn đề đó.
digijay avatar
lá cờ mx
@djdomi: không chắc điều này có lạc đề không, anh ấy không yêu cầu tài liệu học tập mà là yêu cầu chi tiết về đặc tả tcp.
Điểm:2
lá cờ br

Nó làm cả hai.

Cửa sổ nhận bị giới hạn bởi không gian bộ đệm có sẵn, nhưng điều này không đáng quan tâm lắm với hầu hết các máy thu.

Chức năng quan trọng khác của cửa sổ nhận là trải rộng quá trình truyền theo thời gian để nó không phải là một đợt bùng nổ lớn gồm mười gói liên tiếp, sau đó là khoảng lặng cho đến khi tất cả dữ liệu này được xác nhận, sau đó là một đợt khác.

Thay vào đó, một cơ chế có tên là "TCP khởi động chậm" sẽ tăng dần cửa sổ nhận khi dữ liệu được truyền, sao cho quá trình truyền kéo dài kết thúc bằng một luồng gói được đặt cách đều nhau và xác nhận cho gói đến ngay sau thời gian khi gói tiếp theo ở cuối cửa sổ sẽ phải ra ngoài.

Khi luồng đó đã được thiết lập, cửa sổ sẽ tăng thêm để cho phép các gói bị mất được thay thế mà không bị đình trệ.

Một luồng tốt đạt được nếu kích thước cửa sổ tăng tuyến tính cho đến điểm đạt đến lượng dữ liệu chưa được xác nhận trong chuyến bay, tức là độ trễ truyền nhân với tốc độ truyền.

Lý do điều này không thể được giải quyết chỉ bằng các xác nhận là do các gói từ một cụm có nhiều khả năng bị loại bỏ trên đường đi (việc loại bỏ các gói là cách mạng biểu thị tắc nghẽn), vì vậy việc bắt đầu kết nối sẽ khó khăn hơn rất nhiều trước khi cuối cùng hội tụ trên một dòng chảy ổn định.

Nếu bộ đệm nhận nhỏ hơn lượng dữ liệu chưa được xác nhận trong chuyến bay, thì cửa sổ nhận sẽ chạm trần và luồng sẽ không đồng đều, trừ khi ngăn xếp nhận bù đắp cho điều này bằng các xác nhận bị trì hoãn -- nhưng đây là một tình huống không điển hình.

Effie avatar
lá cờ ne
1) khởi động chậm tcp không liên quan gì đến cửa sổ máy thu. kiểm soát luồng và kiểm soát tắc nghẽn là hai điều riêng biệt. bắt đầu chậm làm tăng cửa sổ tắc nghẽn. và cửa sổ người gửi được đặt ở mức tối thiểu của cửa sổ người nhận và cửa sổ tắc nghẽn. 2) kiểm soát tắc nghẽn sẽ không ngăn chặn sự bùng nổ của các gói. cách thức hoạt động của nó, nó hoạt động khi nhận được ACK, vì vậy nếu vì bất kỳ lý do gì mà ACK được tổng hợp, thì các gói sẽ được gửi đi. Bạn cần một cơ chế riêng, được gọi là tạo nhịp cho việc này. 3) các gói bị mất bị đình trệ, chúng có thể bị đình trệ một nửa rtt, nhưng chúng có thể bị đình trệ rất nhiều (ví dụ: mất đuôi).
Effie avatar
lá cờ ne
"Luồng tốt đạt được nếu kích thước cửa sổ tăng tuyến tính cho đến điểm đạt đến lượng dữ liệu chưa được xác nhận trong chuyến bay, tức là độ trễ truyền nhân với tốc độ truyền.", tuyên bố này vô nghĩa, bởi vì cửa sổ là lượng dữ liệu trong chuyến bay hoặc số lượng dữ liệu có thể có trong chuyến bay.
Điểm:2
lá cờ ne
  1. dữ liệu trong chuyến bay là một thuật ngữ chung được sử dụng để chỉ dữ liệu đã được gửi nhưng chưa được xác nhận. Bởi vì từ quan điểm của người gửi, dữ liệu này ở đâu đó trong mạng. cửa sổ người gửi là lượng dữ liệu có thể trong chuyến bay, tức là lượng dữ liệu mà người gửi có thể gửi trước khi nhận được ACK cho phân đoạn đầu tiên của cửa sổ.

  2. những gì đã nói trong bài đăng được liên kết là, tôi nghĩ cách diễn đạt khá kém về lý do tại sao có một cửa sổ (tức là, một số gói) trong chuyến bay, trái ngược với chỉ một.

hãy thử tưởng tượng điều gì sẽ xảy ra nếu bạn chỉ gửi một gói và sau đó đợi ACK và so sánh nó với điều gì sẽ xảy ra nếu bạn gửi 10 gói cùng một lúc và sau đó đợi ACK. Nhiệm vụ kiểm tra khá phổ biến là tính toán tốc độ truyền dữ liệu. Bạn sẽ thấy, nếu độ trễ giữa người gửi và người nhận là rất nhỏ (ví dụ: về mặt vật lý, họ ở gần giống như trong cùng một tòa nhà) thì việc gửi một gói tại một thời điểm sẽ hoạt động tốt. nếu độ trễ là đáng kể, thì việc gửi dữ liệu một gói tại một thời điểm sẽ rất kém hiệu quả.

  1. bây giờ, nếu người gửi chỉ gửi các gói mà không liên quan đến những người tham gia khác trong mạng, thì khả năng cao là các gói này sẽ bị hủy và do đó tài nguyên (tại người gửi, trong mạng, có thể tại người nhận) chỉ bị lãng phí. Vì lý do này, cửa sổ người gửi của TCP có thể thay đổi và phụ thuộc vào hai cơ chế: Kiểm soát lưu lượngđiều khiển tắc nghẽn.

Kiểm soát luồng thực hiện những gì bạn đã mô tả. Mục tiêu của nó là không làm quá tải máy thu. Vì vậy, người nhận chỉ cho người gửi biết lượng dữ liệu có thể chấp nhận. cái này gọi là cửa sổ thu (khác với cửa sổ người gửi). Nói một cách chính xác, đó là khoảng trống trong bộ đệm máy thu của hệ điều hành. Ứng dụng được kết hợp gián tiếp ở đây, vì nếu ứng dụng không lấy dữ liệu từ bộ đệm của máy thu, thì sẽ không có dung lượng nào được giải phóng.

Có kiểm soát tắc nghẽn để đảm bảo rằng người gửi không làm quá tải mạng.Đó là một chủ đề lớn và phức tạp. Tuy nhiên, những gì được mô tả trong câu trả lời khác là kiểm soát tắc nghẽn và nó không liên quan gì đến cửa sổ máy thu. Có một cái gọi là cửa sổ tắc nghẽn, ước tính (hoặc nên ước tính) lượng dữ liệu mà mạng có thể truyền mà không bị quá tải, (nghĩa là làm rơi gói tin).

Cửa sổ người gửi là mức tối thiểu của cửa sổ người nhận và cửa sổ tắc nghẽn, để người gửi không làm quá tải người nhận hoặc mạng.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.