Saya memiliki pemahaman dasar tentang cara kerja HTTP . Saya mengerti klien (browser web) membuat permintaan dan server merespons kembali permintaan tersebut. Namun, hal yang saya tidak mengerti adalah bagaimana server web tahu kapan klien membuat permintaan?
Jika seseorang memanggil saya telepon saya berdering dan saya diberitahu. Demikian pula bagaimana server web mendapatkan pemberitahuan tentang permintaan tersebut?
Jawaban:
Ada banyak lapisan untuk ini. Dan yang terpenting, banyak dari mereka dapat dipertukarkan.
Misalnya, Anda dapat memiliki jaringan kabel coax, ethernet, atau Wi-Fi di tingkat fisik. HTTP berfungsi di atas semua itu, tetapi masing-masing memiliki penanganan muatan yang sedikit berbeda.
HTTP berfungsi di atas protokol lain, yang disebut TCP, yang pada gilirannya lebih atau kurang berjalan di atas protokol lain, yang disebut IP (saat ini sebagian besar dalam dua varian - IPv4 dan IPv6).
Jadi server HTTP mendaftarkan alamat IP (seperti
184.38.45.1
, atau paling sering "apa saja"), bersama dengan port TCP (80
menjadi default untuk HTTP, tetapi secara umum apa saja dari1
ke65535
), dengan sistem operasi. Sekarang, server HTTP memberi tahu OS untuk melakukan ping ketika data (atau pesan lain) datang. OS tahu kapan itu terjadi, karena driver kartu antarmuka jaringan mengatakan itu. Dan driver NIC diceritakan oleh NIC sendiri, yang sebenarnya memiliki perangkat lunak sendiri untuk menginterpretasikan sinyal listrik pada kabel jaringan (atau sinyal nirkabel di udara dll., Anda mendapatkan ide).Catatan :
Jika Anda ingin tahu lebih banyak tentang bagaimana NIC dapat memulai komunikasi dengan driver / OS, Anda mungkin ingin mencari info dasar tentang gangguan perangkat keras - pada dasarnya, apa pun yang sedang dilakukan CPU dihentikan, dan aliran program beralih ke interupsi handler routine - sepotong kode yang sangat sederhana yang menangani memberitahukan sistem, dan kemudian segera mengembalikan kontrol kembali ke hal asli yang dilakukan CPU. Bahkan, mungkin menjawab banyak pertanyaan tentang cara kerja bagian dalam OS dan komputer itu sendiri - seperti bagaimana sistem operasi dapat "mencuri" CPU dari menjalankan aplikasi dan mengocok sumber daya CPU antara berbagai aplikasi yang berjalan pada saat yang sama, bahkan jika mereka tidak bekerja.
Kembali ke bisnis:
Dalam analogi telepon manual Anda, bayangkan ponsel Anda tidak benar-benar berdering. Untuk mengetahui jika Anda melakukan upaya panggilan telepon, Anda harus melihat layar secara berkala dan memeriksa. Untuk membuatnya lebih mudah dikelola untuk server HTTP (karena sudah ada beberapa lapisan yang melakukan pemeriksaan berkala), Anda dapat benar-benar memblokir upaya pemeriksaan.
Jadi, alih-alih memeriksa, melihat tidak ada di sana dan memeriksa lagi, Anda pada dasarnya terus melihat layar sepanjang waktu. Namun, pada dasarnya Anda memiliki seluruh sistem terpisah untuk menangani ini (dalam kasus Anda, pusat pendengaran, yang memeriksa getaran udara untuk informasi yang berguna, cincin), sehingga sebenarnya tidak memerlukan perhatian Anda (waktu CPU).
Ini lebih ditingkatkan dengan teknik yang memungkinkan Anda untuk memonitor banyak koneksi sekaligus (IOCP). Ini semakin dekat dan dekat dengan sistem dering telepon - Anda memiliki ruangan dengan sepuluh ribu telepon, tetapi Anda hanya peduli dengan yang berdering saat ini, yang lain tidak memperhatikan Anda.
sumber
Komputer menggunakan konsep yang disebut "port", analog dengan "ekstensi" untuk switchboard telepon: Klien tidak hanya "memanggil" alamat IP server, tetapi juga mengirimkan permintaan ke port tertentu di server itu.
Ada ribuan port ( daftar wikipedia ), mis. Port 80 adalah default untuk HTTP.
Kuncinya adalah bahwa suatu program, misalnya server web, dapat mendaftar sendiri untuk mendengarkan pada port tertentu. Kemudian OS akan meneruskan semua permintaan yang masuk pada port itu ke program itu.
Maksud dari memiliki beberapa port adalah bahwa Anda dapat memiliki beberapa layanan yang berjalan pada server yang sama pada saat yang sama, dengan menggunakan port yang berbeda mereka tidak akan saling mengganggu.
sumber
Server web diberitahu dengan proses berikut
Katakanlah server web mendengarkan pada port 80, ketika permintaan dari klien datang pada port 80, ia akan menerima koneksi dengan system call accept (). Panggilan ini biasanya diblokir sampai klien terhubung dengan server.
Kemudian Dengarkan koneksi dengan panggilan sistem listen () dan Ikat soket ke alamat menggunakan panggilan sistem bind ().
Atlast membuat soket dengan panggilan sistem soket ().
Semoga ini membantu!
sumber
Anda memiliki direktori / var / log / apache2 dengan direktori berikut:
Ini terkait dengan yang Anda inginkan dari klien, dan cara memberi tahu, sms, email, dan sebagainya.
Saran saya:
Anda dapat membuat server log dan mengirim setiap log Anda seperti server mail, server dns, server web dan sebagainya, Kemudian Anda dapat menguraikannya, Bahkan server yang sama menggunakan db dan Anda dapat menjalankan kueri.
sumber
Saya kira server web register memanggil kembali fungsi dengan port.
Sehingga setiap kali sesuatu diterima pada port tertentu, sistem akan memanggil fungsi panggil yang terdaftar sebelumnya. Di dalam panggilan itu kembali, mungkin mengatur acara atau sesuatu seperti itu dan kemudian server web akan memiliki utas khusus menunggu acara itu. Utas ini akan menjalankan dan mengantri permintaan ini ke daftar permintaan utama yang sudah diproses oleh server web.
Apa yang saya berikan di sini adalah pandangan yang sangat dangkal & makro dari hal-hal yang terjadi. Untuk jawaban yang lebih tepat mari kita tunggu sampai para ahli masuk.
sumber