Saya baru saja berdebat dengan seorang kolega saya dan berpikir saya hanya akan menjangkau para ahli dalam hal ini. Inilah skenarionya. Kami menggunakan situs web yang mengukur kecepatan koneksi Anda. Kami diuji menggunakan server yang jauh dari kami (Kami berada di Malaysia dan server berada di AS). Itu sekitar 2 Mbps. Kemudian kami mencoba dengan server di Singapura dan itu jauh lebih cepat (sekitar 15 Mbps). Rekan saya percaya itu karena jarak fisik sementara saya pikir itu tidak penting. Pemahaman saya adalah sekali Anda telah melakukan jabat tangan awal dan aliran data telah dimulai, tidak masalah di mana server berada dan hasilnya harus hampir sama. Apakah saya melewatkan sesuatu di sini? Bagaimana cara kerjanya?
22
Jawaban:
Anda berdua benar pada beberapa titik dalam sejarah, tetapi pemahaman Anda sebagian besar benar ... hari ini :). Ada beberapa faktor yang berubah antara jawaban yang diberikan teman Anda sebelumnya, dan kemampuan yang kami miliki saat ini.
Perbedaan dalam hasil yang Anda lihat dapat dipengaruhi oleh:
TCP Window Scaling: Efek bandwidth-delay
Seperti yang teman Anda sebutkan, implementasi TCP yang lebih lama menderita dari batasan yang diberlakukan oleh 16-bit asli yang menerima ukuran jendela di header TCP (ref RFC 793: Bagian 3.1 ); RWIN mengontrol berapa banyak data yang tidak diakui dapat menunggu dalam satu soket TCP. RWIN 16-bit menghargai jalur internet terbatas dengan produk penundaan bandwidth tinggi (dan banyak koneksi internet bandwidth tinggi saat ini akan dibatasi oleh nilai 16-bit).
Untuk nilai RTT yang tinggi, sebaiknya memiliki RWIN yang sangat besar. Misalnya, jika jalur Anda RTT dari Malaysia ke AS adalah sekitar 200 ms, TCP RWIN asli akan membatasi Anda hingga 2,6Mbps.
RFC 1323 mendefinisikan beberapa "Opsi TCP" untuk mengatasi keterbatasan ini; salah satu dari Opsi TCP adalah "skala jendela". Ini memperkenalkan faktor skala, yang mengalikan nilai RWIN asli, untuk mendapatkan nilai jendela penerimaan penuh; menggunakan opsi penskalaan jendela memungkinkan RWIN maksimum 1073725440 byte. Menerapkan perhitungan yang sama:
Perlu diingat bahwa TCP meningkatkan RWIN secara bertahap selama durasi transfer, asalkan packet loss tidak menjadi masalah. Untuk melihat kecepatan transfer yang sangat besar pada koneksi penundaan tinggi, Anda harus mentransfer file besar (sehingga TCP punya waktu untuk meningkatkan jendela) dan kehilangan paket tidak bisa menjadi masalah untuk koneksi.
Paket Hilang
Sirkuit internet di Samudra Pasifik terkadang sangat padat. Beberapa keluarga saya tinggal di Taiwan, dan kami secara rutin mengalami masalah ketika kami menggunakan Google Talk dengan mereka. Saya sering melihat paket loss lebih dari 0,5% ketika saya melakukan ping jalur DSL dari AS; jika Anda melihat sesuatu seperti kehilangan 0,5% ke server "lebih lambat", sangat mudah membatasi throughput pada satu soket TCP.
Streaming TCP paralel
FYI, beberapa situs web uji kecepatan menggunakan aliran TCP paralel untuk meningkatkan throughput ; ini mungkin mempengaruhi hasil yang Anda lihat, karena aliran TCP paralel secara dramatis meningkatkan throughput jika Anda memiliki beberapa paket-loss di jalan. Saya telah melihat empat stream TCP paralel sepenuhnya memenuhi modem kabel 5Mbps yang menderita kehilangan paket konstan 1%. Biasanya kehilangan 1% akan menurunkan throughput dari aliran TCP tunggal.
Bahan Bonus: Host Buffer tuning
Banyak implementasi OS yang lebih lama memiliki soket dengan buffer terbatas; dengan OS yang lebih lama (seperti Windows 2000), tidak masalah apakah TCP memungkinkan sejumlah besar data berada dalam penerbangan ... buffer socket mereka tidak disetel untuk mengambil keuntungan dari RWIN yang besar. Ada banyak penelitian yang dilakukan untuk mengaktifkan kinerja tinggi pada transfer TCP . Sistem operasi modern (untuk jawaban ini, kita dapat memanggil Windows Vista dan kemudian "modern") memasukkan mekanisme alokasi buffer yang lebih baik dalam implementasi buffer socket mereka.
sumber
Jawaban singkat: Ya, jarak berpengaruh pada bandwidth stream tunggal.
Internet telah mengembangkan cara untuk membatasi efek itu ... menunda ACK, penskalaan jendela, protokol lain :-) Tetapi fisika tetap menang pada akhirnya. Dalam hal ini, itu jauh lebih mungkin menjadi kemacetan jaringan umum karena begitu banyak hop - hanya dibutuhkan satu paket yang dijatuhkan untuk membunuh aliran TCP.
sumber
Meskipun sudah ada jawaban yang sangat baik untuk ini, saya ingin menambahkan: tidak, kecepatan tidak harus dipengaruhi oleh jarak dan ya, sangat sering kecepatan dipengaruhi oleh jarak , keduanya benar.
Mengapa demikian?
Sangat disederhanakan, semakin jauh jaraknya, semakin banyak "hop" terlibat dalam perjalanan melalui Internet. Bandwidth maksimum ditentukan oleh hop paling lambat dan lalu lintas yang disetujui. Dengan meningkatnya jarak dan distribusi kecepatan hop yang agak acak, probabilitas untuk mendapatkan kecepatan keseluruhan yang lebih lambat meningkat. Selain itu, fisika menghalangi dan meningkatkan latensi juga dapat memperlambat tautan.
Tapi ini tidak bisa diterima begitu saja. Teknologi memungkinkan kita membangun koneksi yang mencakup seluruh planet dari hampir semua bandwidth yang diinginkan. Namun, bandwidth dan jarak adalah musuh dan keduanya secara dramatis meningkatkan biaya koneksi, sekali lagi membuatnya lebih kecil kemungkinannya hanya untuk koneksi yang mungkin Anda butuhkan saat ini.
Tentu saja, ini terlalu disederhanakan tetapi pada kenyataannya, situasi ini adalah apa yang sangat sering Anda temukan. Dan lagi-lagi Anda tidak melakukannya ketika ada koneksi yang sangat cepat atau proxy distribusi hanya di tikungan - tetapi ketika semuanya instan kita jarang berpikir tentang kecepatan internet ...
sumber
Menurut Andrew Martin jawabannya adalah ya
sumber