HTTP dikatakan tanpa kewarganegaraan. Artinya, tidak perlu menyimpan informasi untuk transmisi data.
Tetapi HTTP menggunakan TCP, yang berorientasi negara.
Jika demikian, bagaimana HTTP menjadi tanpa kewarganegaraan?
HTTP dikatakan tanpa kewarganegaraan. Artinya, tidak perlu menyimpan informasi untuk transmisi data.
Tetapi HTTP menggunakan TCP, yang berorientasi negara.
Jika demikian, bagaimana HTTP menjadi tanpa kewarganegaraan?
Jawaban:
HTTP tidak peduli tentang — dan tidak tergantung pada — protokol tingkat bawah mana pun yang digunakan untuk mentransportasinya sendiri, meskipun ia sendiri tidak memiliki kewarganegaraan.
Teknologi transportasi dapat berupa TCP, atau SPX lama Novell, atau SCTP, atau apa pun yang Anda impikan, dan HTTP masih akan berfungsi sama. HTTP memang membutuhkan streaming atau protokol yang berorientasi koneksi — dan tergantung pada URL yang bisa diatasi — tetapi tidak peduli bagaimana hal itu dilakukan.
Ini adalah salah satu alasan mengapa model layered atau network stack ada: Lapisan aplikasi tidak perlu memperhatikan lapisan yang lebih rendah.
Hanya karena protokol tingkat rendah stateful tidak berarti apa pun di atasnya secara otomatis menjadi stateful atau diharuskan stateful.
HTTP itu sendiri adalah stateless. Jadi itu berarti aplikasi harus mengimplementasikan layer lain di atas HTTP untuk menetapkan status. Ini biasanya dilakukan dengan cookie sesi.
"HTTP tidak memiliki kewarganegaraan" berarti bahwa setiap transaksi HTTP (pasangan permintaan-respons) dapat diproses secara independen dari negara mana pun dari pasangan permintaan-respons sebelumnya.
Untuk mengangkut pasangan permintaan-respons tertentu, Anda memerlukan protokol yang dapat membawa blok besar secara sewenang-wenang di sana dan blok besar secara sewenang-wenang, dan untuk melakukannya di atas lapisan dengan ukuran paket terbatas, TCP harus stateful.
Tetapi melintasi batas transaksi, tidak ada negara. Klien dapat menjatuhkan koneksi dan membuat yang baru untuk permintaan berikutnya. Bahkan itu adalah satu-satunya pilihan di versi awal dan masih berfungsi seperti itu jika klien tidak menyertakan Connection: keep-alive
header.
Permintaan selanjutnya juga dapat dengan mudah ditangani oleh server yang berbeda dan klien tidak akan pernah tahu, karena server tidak perlu mempertahankan status apa pun (kecuali jika aplikasi menambahkan statusnya sendiri di atas HTTP, biasanya dalam bentuk sesi; konsekuensinya komplikasi dalam load-balancing adalah hukumannya untuk membangun protokol stateful pada HTTP). Itu dimanfaatkan dalam server sibuk load-balancing.
can also easily be handled by different server and the client will never know
Meskipun secara teknis benar, ini menyesatkan karena banyak aplikasi web menggunakan sesi sticky, membutuhkan penyeimbang beban untuk merutekan permintaan di masa mendatang dari sesi penjelajahan yang sama ke server yang sama. Dari perspektif HTTP, sesi tidak relevan, tetapi kalimat terakhir Anda menyiratkan bahwa pengalaman pengguna akhir tidak akan terpengaruh, yang akan salah dengan sesi lengket.
Sifat "stateless" dari HTTP berarti bahwa pada lapisan ini , tidak ada informasi status yang dibuat atau digunakan.
Anda dapat melihat ini dalam beberapa contoh, misalnya dalam otentikasi HTTP, kredensial dikirim dengan setiap permintaan, dan koneksi persisten benar-benar hanya sebuah optimasi (yaitu jika saya mengirim kredensial, server lupa ini setelah permintaan, bahkan jika ia meninggalkan koneksi terbuka).
Sebaliknya, mekanisme login berbasis cookie adalah stateful, tetapi bukan bagian dari HTTP.
Anda harus memahaminya sebagai satu set boneka Rusia (atau kotak jika Anda mau) masing-masing membawa yang lain di dalam, itu adalah cara kerjanya: TCP membawa HTTP "di dalam" tetapi tidak peduli tentang itu atau fitur-fiturnya.
Untuk mendapatkan seluruh gambar, saya sarankan membaca tentang Model OSI karena membuatnya lebih jelas.
TCP duduk beberapa lapisan di bawah HTTP dalam model OSI, setiap lapisan sebenarnya sesuai dengan protokol yang berbeda.
Dalam kasus kami HTTP duduk di lapisan presentasi dan aplikasi dan TCP di lapisan transportasi. Atau jika Anda menggunakan Model TCP / IP baik TCP dan protokol IP duduk di lapisan Network Link dan HTTP di lapisan aplikasi dan presentasi.