Apakah browser membuat koneksi TCP baru untuk setiap permintaan HTTP?

23

Jadi saya tahu bahwa HTTP pada dasarnya hanya sebuah protokol teks melalui TCP, dan bahwa TCP berbasis negara / koneksi. Itu berarti bahwa browser harus terhubung melalui TCP ke server sebelum melakukan permintaan HTTP. Pertanyaan kemudian: apakah browser biasanya membuat koneksi TCP baru untuk setiap permintaan HTTP?

Browser hanya bisa membuka permintaan TCP dan tetap hidup selama pengguna masih menjelajah di server itu, tetapi kemudian server harus menggunakan sejumlah besar koneksi maksimum untuk mengatasinya. Tetapi sekali lagi, jika browser membuat koneksi untuk setiap permintaan, dan pengguna banyak browsing di server yang sama, itu akan tampak seperti sia-sia. Bagaimana cara kerjanya? Mungkin melalui penggunaan timer?

Xeon06
sumber

Jawaban:

30

Dalam HTTP / 0.9 (tidak digunakan lagi), setiap permintaan menggunakan koneksi TCP yang terpisah, dan akhir dari respon ditandai dengan menutup koneksi.

Dalam HTTP / 1.0, koneksi terpisah masih merupakan standar resmi. Namun, Connection: Keep-Aliveheader permintaan " " tidak resmi tetapi sangat didukung dapat digunakan untuk meminta koneksi persisten jika server mendukungnya.

Dalam HTTP / 1.1, koneksi persisten menjadi default , dan perilaku permintaan tunggal yang lama harus diminta secara eksplisit. Biasanya beberapa (2–5) koneksi persisten digunakan.

(Secara opsional, permintaan dapat dilakukan pipelined , meskipun ini ternyata sulit untuk diimplementasikan dan menciptakan lebih banyak masalah daripada yang dipecahkannya (pemblokiran head-of-line, dll.), Jadi tidak ada yang menggunakan pipelining HTTP / 1.x.)

HTTP / 2 (alias SPDY ) dirancang khusus untuk melipatgandakan banyak permintaan secara bersamaan. Ini memiliki lapisan / paket packetization yang memungkinkan tanggapan untuk tiba dalam urutan apa pun dan bahkan secara bersamaan.

Sumber: Artikel Wikipedia dan RFC 2616 bagian 8.1 .

grawity
sumber
Artikel menarik lainnya yang menyebutkan developer.mozilla.org/en-US/docs/Web/HTTP/… yang
Ganp Satpute
6

Ada tajuk "Connection: Keep-Alive". Lihat enwiki untuk detailnya.

Anda dapat menggunakan Wireshark untuk menangkap dan menganalisis koneksi dan melihat semua header.

Vi.
sumber
Kenapa Wireshark bukannya Fiddler?
Pacerier
3
Fiddler adalah 1. Bukan perangkat lunak Sumber Terbuka; 2. Khusus Windows.
Vi.