Pertanyaan lain diajukan mengenai penggunaan alamat IP untuk mengidentifikasi masing-masing klien. Saya rasa saya mengerti mengapa alamat IP tidak cukup. Tetapi bagaimana dengan soket, yang memiliki lebih banyak informasi dan, dari apa yang saya pahami, adalah benar? Tidak bisakah itu berpotensi digunakan sebagai pengganti cookie?
17
Jawaban:
Soket mengidentifikasi koneksi . Cookie biasanya digunakan untuk mengidentifikasi pengguna . Jika saya membuka dua tab browser untuk SE.SE, saya akan memiliki dua koneksi dan dengan demikian dua soket. Tapi saya ingin pengaturan saya bertahan di keduanya. (Bahkan, biasanya, browser membuka beberapa soket untuk satu halaman untuk mempercepat waktu pemuatan halaman; Saya yakin sebagian besar browser memiliki nilai maksimum default antara 4 dan 10 soket per halaman.)
Dan yang sebaliknya dapat terjadi juga: jika saya menutup tab browser saya, pengguna lain pada mesin dapat membuka tab browser untuk SE.SE, dan mungkin mendapatkan quadruple yang sama (source_ip, source_port, target_ip, target_port), dalam hal ini , dia akan mendapatkan semua pengaturan saya.
sumber
Soket TCP dirancang agar stateful sehingga secara umum mereka digunakan untuk mengidentifikasi sesi. Protokol seperti SSH dan ftp melakukan hal ini.
HTTP dirancang untuk menjadi tanpa kewarganegaraan dan setiap koneksi hanya dikaitkan dengan sumber daya yang akan diunduh. Setelah sumber daya diunduh, soket TCP yang digunakan permintaan HTTP ditutup. Alasan asli untuk ini adalah kesederhanaan. Tetapi efek sampingnya adalah server HTTP yang menjalankan situs web modern dapat menangani pengguna yang jauh lebih banyak daripada server berbasis soket seperti SSH atau ftp.
Jadi soket tidak dapat digunakan karena HTTP akan menutup soket setelah mengunduh halaman web.
Tentu saja, mengatakan HTTP akan menutup soket per sumber daya adalah menyederhanakan hal-hal karena HTTP memiliki fitur seperti pipelining dan koneksi persisten yang dapat mengunduh banyak sumber daya per soket. Tapi itu hanya optimasi. Setelah semuanya diunduh, browser Anda akan menutup soket setelah batas waktu tertentu.
HTTP pada awalnya dirancang sebagai protokol sederhana untuk mengunduh file HTML. Browser lama juga dapat mengunduh file HTML dari protokol lain seperti Gopher dan ftp. Karena itu, tidak ada alasan untuk membuat HTTP stateful karena file HTML hanyalah file teks sederhana.
Setelah formulir web diperkenalkan dan halaman HTML dapat mengirim data kembali ke halaman web server mulai perlu sesi. Dengan demikian cookie dibuat untuk memperkenalkan kembali status ke protokol stateless yang ditransmisikan melalui lapisan transfer stateful yang ditransmisikan melalui lapisan jaringan stateless. Jadi lapisan aplikasi lengkap adalah:
Saat ini kami memiliki soket web yang dapat menyimpan satu soket terbuka dari halaman web Anda ke server. Jadi dengan websockets Anda dapat menggunakan soket lagi untuk mengidentifikasi pengguna karena websocket itu sendiri stateful. Tetapi dalam kebanyakan kasus Anda masih akan membutuhkan cookie untuk halaman html utama yang memuat javascript yang memulai websocket.
sumber