Catatan Teknis zhaoJian

Solusi untuk masalah jaringan di Ubuntu Fedora CentOS dan sistem Linux lainnya - hanya bisa mengakses Baidu

Teknologi ~2852 kata · 8 menit baca - dilihat

Pertama-tama, izinkan saya memperkenalkan informasi latar belakang tentang masalah ini.

Paket TCP tipikal memiliki bidang jendela dengan ukuran jendela maksimum 64 KB. Pada masa awal perkembangan Internet, sebagian besar sistem tidak memiliki kemampuan untuk memproses data yang lebih besar dari ini, sehingga ukuran ini sudah cukup, tetapi untuk aplikasi bandwidth saat ini, ukuran ini sudah terlalu kecil.

Untuk mengatasi masalah ini, pada tahun 1992 diusulkan sebuah solusi yang disebut window scaling, yang menyediakan opsi perluasan jendela TCP tambahan yang berisi faktor skala 8-bit. Nilai opsi ini menentukan seberapa besar jendela seharusnya, dan diimplementasikan dengan menggeser beberapa bit dari nilai ukuran jendela. Misalnya, jika faktor skala diatur ke 5, maka ukuran jendela harus digeser 5 bit atau dikalikan dengan 32.

Opsi window scaling meningkatkan definisi jendela TCP dari 16 bit menjadi 32 bit. Ini tidak dicapai dengan mengubah header TCP, yang masih menggunakan 16 bit, tetapi dengan mendefinisikan opsi yang melakukan operasi penskalaan pada 16 bit tersebut.

Pada kernel 2.6.16 dan yang lebih lama, faktor skala default adalah 0, sehingga ukuran jendela tidak ditingkatkan. Pada kernel 2.6.17, faktor skala diatur ke 7. Idealnya, ini seharusnya tidak menimbulkan masalah. Tetapi dalam praktiknya, beberapa router yang “rusak” menulis ulang opsi TCP window scaling - mereka mengatur faktor skala ke 0 tetapi kemampuan pemrosesan aktual dari opsi tersebut tidak berubah.

Pada dasarnya, ini berarti beberapa situs web tidak dapat diakses dari sistem yang menggunakan kernel 2.6.17 dan yang lebih tinggi. Dari sudut pandang pengembang kernel, mereka akan menganggap bahwa router-router tersebut rusak dan perlu diganti. Pada kenyataannya, router-router ini mungkin masih dapat digunakan selama bertahun-tahun sebelum diperbaiki atau diganti.

Salah satu cara untuk mengatasi masalah ini adalah mengatur ulang opsi window scaling dari kernel Linux. Meskipun ini tidak akan memperbaiki router yang rusak, jika Anda terpengaruh oleh masalah window scaling, metode ini dapat memungkinkan sistem Anda terhubung ke situs remote.

Solusinya adalah dengan mengedit file /etc/sysctl.conf dan menambahkan baris berikut:

net.ipv4.tcp_window_scaling = 0

Hapus tanda # di awal

Ini akan sepenuhnya menonaktifkan fungsi window scaling, yang akan memungkinkan Anda terhubung ke beberapa situs yang sebelumnya tidak dapat Anda akses. Benar atau salah, pengembang kernel menolak untuk membatalkan perubahan ini, oleh karena itu menggunakan opsi ini memungkinkan Anda menonaktifkan fungsi window scaling Anda sendiri untuk kembali ke pengaturan default sebelum 2.6.17, dan Anda juga dapat terhubung ke situs-situs yang tidak dapat dijangkau tersebut dan meyakinkan mereka bahwa mereka harus mencari dan mengganti router yang rusak.

Bagikan:

Komentar