Di browser web yang mendukung memiliki banyak tab, seperti Firefox, apakah tab yang berbeda yang pergi ke domain situs web yang berbeda menggunakan port khusus untuk setiap domain ?.
Atau apakah browser menggunakan port tunggal untuk mengelola semua tab dan karenanya semua domain ?.
networking
browser
port
tabs
yoyo_fun
sumber
sumber
Jawaban:
Apakah browser menggunakan port yang berbeda untuk terhubung ke situs web yang berbeda?
Ya mereka melakukanya.
Berikut ini contohnya, memperlihatkan koneksi Firefox saya saat ini (saya punya 9 tab terbuka) di Windows 7:
Catatan:
Anda dapat melihat bahwa semua port lokal berbeda.
Port jarak jauh biasanya 80 (HTTP), 443 (HTTPS) atau 8080 (HTTP Alternate).
HTTP
di Daftar nomor port TCP dan UDP untuk beberapa di antaranya.Proses lengkap rendering halaman web dijelaskan di bawah ini. Lihat khususnya langkah 5, 6, 13 dan 15 (yang dicetak tebal):
Secara umum rendering halaman web tunggal menggunakan beberapa koneksi, tidak semuanya akan ke alamat remote yang sama.
Ini karena halaman web sering menyertakan sumber daya yang dihosting di tempat lain (file javascript, dll).
Beberapa koneksi ke situs web yang sama (misalnya stackoverflow.com) juga memiliki port lokal yang berbeda (karena mereka adalah koneksi terpisah di tab berbeda yang merender halaman yang berbeda).
Merender halaman web - langkah demi langkah
catatan:
Sumber Merender halaman web - langkah demi langkah
sumber
Setiap koneksi ke situs web menggunakan soket yang berbeda dengan tujuan default port TCP 80 untuk HTTP biasa dan 443 untuk HTTPS. Agar soket menjadi unik, kombinasi dari alamat IP sumber, sumber port TCP, alamat IP tujuan dan port TCP tujuan harus berbeda.
Jika Anda memiliki beberapa koneksi ke situs web yang sama (dengan asumsi situs web hanya menggunakan 1 alamat IP) dari komputer yang sama, port TCP sumber yang berbeda harus digunakan. Dengan cara ini, setiap koneksi unik.
Namun, harus dicatat bahwa pada HTTP 1.1, semua koneksi bersifat persisten untuk periode waktu tertentu (kecuali dinyatakan sebaliknya). Ini berarti bahwa koneksi yang sama dapat digunakan kembali oleh browser Anda jika banyak sumber daya dari situs web yang sama diminta (misalnya file css / js). Ini juga berlaku jika Anda memiliki beberapa contoh situs web yang sama di browser Anda.
Jika Anda menggunakan Windows,
netstat -no -p TCP
perintah ini akan menunjukkan semua soket TCP aktif dan ID proses yang terkait, termasuk yang ada di browser Anda:Jika Anda menggunakan Unix / Linux (Debian dalam kasus ini), Anda dapat menggunakan perintah
netstat -ntp
atauss -t
:sumber
netstat -n
harus berfungsi di sebagian besar sistem operasi, termasuk Linux dan Mac OS.netstat -n -o
untuk melihat proses yang dibuat koneksi mana. Atau Anda dapat menjalankan tcpview SysInternal untuk melihat daftar dalam GUI, dengan nama proses dan ikon dan semuanya.Mengenai tab untuk situs web yang berbeda, tidak ada dalam TCP yang mengharuskan port lokal berbeda, selama tuple {IP lokal, port lokal, IP target, port target} unik. Untuk tab ke situs web yang sama, situasinya jauh lebih kompleks.
Browser, seperti perangkat lunak klien lainnya, menggunakan port lokal yang berbeda per koneksi keluar ke target yang sama. Secara umum itu akan membentuk beberapa koneksi ke situs web mana pun, untuk mengambil sumber daya yang disematkan seperti gambar, CSS, JavaScript, dll. Ini juga akan menyatukan koneksi tersebut untuk kemungkinan penggunaan kembali.
Tidak mungkin untuk mengatakan apakah tab yang berbeda untuk situs web yang sama, akan menggunakan koneksi berbeda , karena (a) biasanya tidak ada satu koneksi per tab, dan (b) tergantung pada waktu dan otentikasi, koneksi mungkin digunakan kembali di antara tab; dan karena itu tidak mungkin untuk mengidentifikasi koneksi itu maka tidak mungkin untuk mengidentifikasi port lokal juga.
sumber
Iya. Tidak, mungkin. Tergantung.
Pertama, browser dapat menggunakan salah satu dari strategi ini untuk koneksi:
Anda tidak memiliki cara untuk mengetahui strategi mana yang akan digunakan browser, meskipun menggunakan kumpulan koneksi (dan menggunakan kembali koneksi) adalah asumsi yang masuk akal.
Kedua, cara TCP bekerja, Anda memiliki port sumber, dan port tujuan untuk setiap koneksi. Sepasang sumber / alamat tujuan / port menentukan koneksi.
Anda selalu [1] menggunakan port yang terkenal (seperti 80 atau 443) untuk terhubung ke server (yang ia dengarkan pada alamat yang diiklankan), tetapi port lain dipilih secara acak. Jadi, tergantung dari sisi mana Anda melihat suatu koneksi, ia memiliki satu atau banyak port yang memungkinkan.
Dengan demikian, tab yang sama mungkin (dan biasanya akan) menggunakan beberapa port yang berbeda pada akhirnya, tetapi pada prinsipnya tab yang berbeda mungkin (jika koneksi dikumpulkan dan sumber daya yang berbeda di tab yang berbeda dimuat dari server yang sama) menggunakan port yang sama.
Karena pertanyaan secara eksplisit menyebutkan keluar , dalam kasus "normal", nomor port akan sama terlepas dari tab mana yang ada, atau salah satu dari dua port yang mungkin (80 dan 443). Meskipun tentu saja dimungkinkan untuk secara eksplisit meminta port yang berbeda (seperti 8080) dalam sebuah URL. Itu agak langka.
[1] Ya, tidak selalu ... tapi jangan terlalu rumit.
sumber