Beranda » bagaimana » Bagaimana Server Web Mendengarkan Permintaan Baru?

    Bagaimana Server Web Mendengarkan Permintaan Baru?

    Saat mempelajari tentang server web dan cara kerjanya, Anda mungkin ingin tahu apakah mereka terus-menerus mendengarkan permintaan atau jika mereka menunggu sampai mereka menerima permintaan untuk bertindak. Dengan mengingat hal itu, posting Tanya Jawab SuperUser hari ini memiliki jawaban untuk memuaskan keingintahuan pembaca.

    Sesi Tanya Jawab hari ini datang kepada kami berkat SuperUser-subdivisi Stack Exchange, pengelompokan situs web Q&A berbasis komunitas.

    Tangkapan layar milik xmodulo / Linux Screenshot (Flickr).

    Pertanyaan

    SuperUser reader user2202911 ingin tahu bagaimana server web mendengarkan permintaan baru:

    Saya mencoba memahami detail 'tingkat yang lebih dalam' tentang cara kerja server web. Saya ingin tahu apakah server, katakanlah Apache, misalnya, terus melakukan polling untuk permintaan baru atau apakah itu bekerja dengan semacam sistem interupsi. Jika itu adalah interupsi, apa yang memicu interupsi itu? Apakah itu driver kartu jaringan?

    Bagaimana server web mendengarkan permintaan baru?

    Jawabannya

    Kontributor SuperUser, Greg Bowser memiliki jawaban untuk kami:

    Jawaban singkatnya adalah semacam sistem interupsi. Intinya, mereka menggunakan pemblokiran I / O, artinya mereka tidur (block) sambil menunggu data baru.

    1. Server membuat soket pendengaran dan kemudian memblokir sambil menunggu koneksi baru. Selama waktu ini, kernel menempatkan proses ke dalam tidur terputus nyatakan dan jalankan proses lainnya. Ini adalah poin penting; memiliki proses jajak pendapat secara terus menerus akan menghabiskan sumber daya CPU. Kernel dapat menggunakan sumber daya sistem dengan lebih efisien dengan memblokir proses sampai ada pekerjaan yang harus dilakukan.
    2. Ketika data baru tiba di jaringan, kartu jaringan mengeluarkan interupsi.
    3. Melihat ada gangguan dari kartu jaringan, kernel, melalui driver kartu jaringan, membaca data baru dari kartu jaringan dan menyimpannya dalam memori. (Ini harus dilakukan dengan cepat dan umumnya ditangani di dalam interrupt handler.)
    4. Kernel memproses data yang baru tiba dan mengaitkannya dengan soket. Suatu proses yang memblokir pada soket itu akan ditandai runnable, yang berarti sekarang layak untuk dijalankan. Itu tidak harus langsung berjalan (kernel mungkin memutuskan untuk menjalankan proses lainnya).
    5. Di waktu senggangnya, kernel akan membangunkan proses server web yang diblokir. (Karena sekarang bisa dijalankan.)
    6. Proses server web terus menjalankan seolah-olah tidak ada waktu berlalu. Panggilan sistem pemblokirannya kembali dan memproses data baru. Lalu lanjutkan ke langkah 1.

    Punya sesuatu untuk ditambahkan ke penjelasan? Berbunyi dalam komentar. Ingin membaca lebih banyak jawaban dari pengguna Stack Exchange yang mengerti teknologi lainnya? Lihat utas diskusi lengkap di sini.