cuốn sách gpt4 ai đã làm

c - Lý do tùy chọn tỷ lệ cửa sổ TCP khác 0

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 09:58:41 25 4
mua khóa gpt4 Nike

Tôi đã đọc cái gì đó về Chia tỷ lệ cửa sổ TCP mọi thứ và BDP (không quá rõ ràng), tôi không thể tìm ra chính xác nguyên nhân khiến việc triển khai TCP của người gửi đặt WS khác 0, liệu chương trình máy khách ở chế độ người dùng có ảnh hưởng đến nó không? Tôi nghĩ về mặt logic, nó không thể dựa trên một số hoạt động truyền dữ liệu vì nó xảy ra trong giai đoạn SYN-SYN+ACK TCP.

Ai đó có thể giải thích từ góc độ lập trình về cách mã máy khách ở chế độ người dùng ảnh hưởng đến các tùy chọn mở rộng cửa sổ TCP (ví dụ: trong kết nối() trước khi gọi)? Làm thế nào để ngăn xếp TCP biết khi nào nên đặt WS thành giá trị khác 0?

Xin lỗi nếu điều đó là hiển nhiên.

câu trả lời hay nhất

Chỉ số mở rộng cửa sổ TCP rcv_wscale(Ví dụ: khi gửi SYN hoặc ĐỒNG HÀNH-ACK ) được tính toán trong nhân Linux dựa trên bộ đệm nhận của socket trong hàm tcp_select_initial_window() :

/* Nếu không có kẹp, hãy đặt kẹp ở cửa sổ có tỷ lệ tối đa có thể */
nếu (*window_clamp == 0)
(*window_clamp) = (65535 << 14);
dấu cách = phút(*window_clamp, dấu cách);

/* Định lượng việc cung cấp không gian thành bội số ms nếu có thể */
nếu (dấu cách > ms)
dấu cách = (dấu cách / mss) * mss;
//...
(*rcv_wscale) = 0;
nếu (wscale_ok) {
/* Đặt tỷ lệ cửa sổ trên cửa sổ tối đa có thể
* Xem RFC1323 để biết giải thích về giới hạn 14
*/
dấu cách = max_t(u32, dấu cách, sysctl_tcp_rmem[2]);
dấu cách = max_t(u32, dấu cách, sysctl_rmem_max);
dấu cách = min_t(u32, dấu cách, *window_clamp);
while (dấu cách > 65535 && (*rcv_wscale) < 14) {
dấu cách >>= 1;
(*rcv_wscale)++;
}
}

Đây làkhông gianLấy từtcp_full_space()dựa trênsk_rcvbuf.

Biết rằng bạn có thể tác động đến tính toán này bằng cách thay đổi kích thước của bộ đệm nhận:

int buflen = 12345;
if (setsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, &buflen, sizeof int) < 0)
perror("setsockopt():");
//...

Điều này mang lại cho bạn tỷ lệ bằng không (WS=0 hoặc cân 0).

PS hãy nhớ rằng về phía máy chủ, việc này phải được thực hiện trên ổ cắm nghe vì bạn không thể tác động đến nó sau khi bắt tay TCP.

Về lý do c - tùy chọn tỷ lệ cửa sổ TCP khác 0, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/58122062/

25 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress