Cara kerja server web. Cara kerja server web. Server Web dan Server Aplikasi Dasar

21.05.2020 Windows dan disk

Tujuan kuliah: mendefinisikan konsep "server web" dan membentuk gagasan tentang cara kerja mekanisme ini.

Pada kuliah sebelumnya, kita membahas fungsi protokol HTTP. Sekarang mari kita lihat bagaimana alat yang membuat interaksi yang dijelaskan sebelumnya bekerja. Inti dari fungsi aplikasi web adalah konsep seperti: server web. Server web adalah program yang menerima permintaan HTTP yang masuk, memproses permintaan tersebut, menghasilkan respons HTTP, dan mengirimkannya kembali ke klien. Algoritma umum dari operasi server web dapat direpresentasikan sebagai berikut (tindakan yang diproses oleh server web ditandai dengan warna hijau).

Setelah pengguna mengakses sumber daya tertentu menggunakan protokol HTTP, klien (biasanya browser) membuat permintaan HTTP ke server web. Biasanya, nama simbolis server ditunjukkan (misalnya, "http://www.microsoft.com") - dalam hal ini, browser terlebih dahulu mengubah nama ini menjadi alamat IP menggunakan layanan DNS. Setelah itu, pesan HTTP yang dihasilkan dikirim ke server web menggunakan protokol HTTP. Dalam pesan ini, browser menunjukkan sumber daya mana yang akan diunduh dan informasi tambahan apa pun. Tugas server web adalah mendengarkan pada port TCP tertentu (biasanya port 80) dan menerima semua pesan HTTP yang masuk. Jika data yang masuk tidak sesuai dengan format pesan HTTP, maka permintaan diabaikan dan pesan kesalahan dikembalikan ke klien.

Dalam kasus yang paling sederhana, ketika permintaan HTTP tiba, server web harus membaca isi file yang diminta dari perangkat keras, mengemas kontennya ke dalam respons HTTP, dan mengirimkannya ke klien. Jika file yang diperlukan tidak ditemukan di hard disk, server web akan menghasilkan kesalahan yang menunjukkan kode status 404 dan mengirim pesan ini ke klien. Versi server web ini disebut situs statis. Dalam hal ini, tidak ada kode program yang dijalankan di sisi server, kecuali untuk kode program server web itu sendiri. Namun, skenario kerja seperti itu semakin tidak dapat digunakan, dan digantikan oleh aplikasi web yang lengkap. Perbedaan antara aplikasi tersebut adalah bahwa dokumen HTML dan sumber daya lainnya tidak disimpan di server sebagai data yang tidak dapat diubah. Sebaliknya, server menyimpan kode yang dapat menghasilkan data ini pada saat permintaan diproses. Tentu saja, beberapa sumber daya (seperti file gaya berjenjang, gambar, dll.) dapat disimpan sebagai konten statis, tetapi sumber utama halaman HTML dihasilkan selama pemrosesan. Dalam hal ini, server web, saat memproses permintaan HTTP, harus mengacu pada kode program yang harus menghasilkan konten. Mengingat hal di atas, algoritma operasi server web akan terlihat sebagai berikut.


Salah satu tugas terpenting yang diselesaikan saat membangun server web adalah tugas memastikan skalabilitas (yaitu, kemungkinan peningkatan jumlah pengguna yang dilayani) dan perlindungan dari serangan eksternal. Karena server web beroperasi di lingkungan terbuka - Internet global - sering kali dapat diakses dari mana saja. Ini membuat server web rentan beban berat dan potensi serangan. Serangan paling umum pada server web adalah menyerang server web dengan sejumlah besar permintaan dan frekuensi tinggi. Dalam hal ini, server web tidak akan dapat memproses semua permintaan dengan cepat, dan ini dapat mempengaruhi kinerja server web untuk pengguna nyata. Server web yang menjalankan beberapa kode program eksternal, dengan pengecualian kode program dari server web itu sendiri, sangat rentan terhadap serangan semacam itu. Biasanya, untuk memerangi serangan seperti itu, semua permintaan yang berasal dari alamat IP tertentu akan diblokir. Selain itu, dalam kasus seperti itu, Anda harus berhati-hati dalam mengoptimalkan kode aplikasi, misalnya, menggunakan caching - dalam hal ini, saat memproses setiap permintaan, beban pada prosesor pusat akan lebih sedikit, yang secara signifikan dapat mempersulit tugas penyerang. .

Tidak jarang beberapa situs web independen di-host di server web yang sama. Terlebih lagi, semua situs web ini berbagi alamat IP yang sama. Itu. server web yang hanya memiliki satu alamat IP dapat meng-host beberapa situs web di dalamnya, dan setiap situs web tersebut akan dikaitkan dengan alamatnya sendiri (misalnya, situs web dapat ditemukan di satu server web: "microsoft.com" , "gotdotnet.ru ", "techdays.ru", dll.). Bagaimana ini menjadi mungkin? Fenomena seperti itu disebut hosting maya. Untuk memahami cara kerjanya, mari kita lihat kembali proses interaksi antara klien dan server. Browser mengirimkan permintaan HTTP ke alamat IP server web yang terkait dengan nama domain. Resolusi alamat IP dilakukan dengan menggunakan layanan DNS. Namun, terlepas dari kenyataan bahwa permintaan terkirim, menggunakan alamat IP yang diterima, klien menentukan header HTTP tambahan "Host", yang menentukan nama asli situs web. Dengan informasi ini, server web dapat membatasi akses ke beberapa situs web dan masih menggunakan alamat IP yang sama. Ini sangat poin penting karena jika Anda harus mendaftarkan alamat IP terpisah untuk setiap nama domain, maka ruang alamat protokol IP (v.4) akan cepat habis, dan biaya hosting situs web di Internet global akan jauh lebih tinggi. Agar lebih jelas, mari kita lihat cara kerja virtual hosting dengan sebuah contoh. Katakanlah Anda memiliki server web dengan alamat IP 85.51.210.22. Server ini menghosting beberapa situs web: mysite1.com, mysite2.com, mysite3.com. server DNS dikonfigurasi sehingga masing-masing nama domain ini menunjuk ke satu alamat IP, 85.51.219.22. Mari kita lihat permintaan HTTP apa yang akan dihasilkan browser saat mengakses setiap situs. Saat mengakses situs "mysite1.com", permintaan HTTP mungkin terlihat seperti ini.


Saat mengakses situs "mysite2.com", permintaan HTTP akan terlihat berbeda.


Saat menganalisis permintaan HTTP, terlihat jelas bahwa header HTTP "Host" berbeda di setiap permintaan. Dengan demikian, menjadi jelas bahwa server web mem-parsing header ini dan mengirimkan konten situs yang sesuai ke klien. Secara skematis, proses ini dapat direpresentasikan sebagai berikut.


Skema serupa dari hosting virtual digunakan oleh sebagian besar perusahaan yang meng-host situs web di Internet. Karena dalam hal ini satu server fisik dapat meng-host sejumlah besar situs yang sama sekali berbeda, maka metode ini adalah salah satu yang termurah. Namun, dalam kerangka hosting virtual, biasanya dilarang untuk dijalankan berbagai layanan dan layanan, dan ada juga batasan pada tingkat penggunaan CPU. Ini berarti bahwa jika situs web menggunakan terlalu banyak sumber daya server, pemilik situs ditawarkan untuk meningkatkan ke paket yang lebih mahal (dengan sumber daya yang lebih khusus), atau jika ambang batas yang diizinkan terlampaui, situs web diblokir untuk sementara waktu. . Karena terkadang server membutuhkan sejumlah besar sumber daya, atau di dalam server ini perlu dijalankan aplikasi tambahan atau jasa hosting maya mungkin tidak selalu digunakan. Dalam hal ini, mereka biasanya menyewa dedicated server - fisik atau virtual. Namun, ini adalah jenis aplikasi web hosting yang lebih mahal di Internet, sehingga hosting virtual sering digunakan.

Seperti disebutkan sebelumnya, skenario paling sederhana untuk server web adalah menerima permintaan HTTP, memprosesnya, membaca file yang diinginkan dari hard disk, menghasilkan respons HTTP dan mengirimkannya ke klien. Skenario seperti itu adalah yang paling sederhana, namun kenyataannya semakin jarang. Faktanya adalah bahwa dengan pendekatan ini, konten yang dikirimkan ke klien bersifat statis (yaitu tidak berubah dari permintaan ke permintaan). Namun, jika Anda ingin membangun aplikasi web, maka konten halaman HTML yang dikirimkan ke klien harus berubah tergantung pada berbagai kondisi eksternal (parameter kueri, konten basis data, waktu pemrosesan permintaan, jenis pengguna, dll.). Dalam hal ini, diperlukan untuk menjalankan kode program eksternal (dalam kaitannya dengan server web) yang mengimplementasikan logika aplikasi web. Kode ini harus disimpan terpisah dari kode server web itu sendiri, karena kode aplikasi akan berbeda dari satu aplikasi ke aplikasi berikutnya, tetapi server web akan sama. Dengan demikian, kode program yang memproses permintaan HTTP dan menghasilkan respons HTTP dapat dibagi secara kondisional menjadi dua bagian:

  • kode program yang mengimplementasikan fungsi layanan untuk interaksi melalui protokol HTTP (kode program dari server web itu sendiri);
  • kode program yang mengimplementasikan logika aplikasi web tertentu (logika bisnis, akses ke DBMS, dll.).

Karena kode aplikasi web biasanya dikemas ke dalam modul terpisah dan dikirimkan secara independen, mekanisme untuk interaksi kedua bagian ini diperlukan, yaitu. antarmuka interaksi. Dalam hal ini, antarmuka interaksi adalah seperangkat aturan di mana server web dan aplikasi akan berinteraksi satu sama lain. Sebenarnya, skema pemrosesan permintaan mungkin terlihat seperti ini.


Secara historis, ada dua jenis utama antarmuka interaksi aplikasi eksternal dan server web - CGI dan ISAPI.

CGI(Common Gateway Interface) - cara paling awal interaksi antara server web dan aplikasi web. Ide dasar yang mendasari CGI adalah ketika permintaan HTTP berikutnya tiba, server web memulai pembuatan yang baru. proses dan meneruskan semua data permintaan HTTP yang diperlukan. Setelah proses ini selesai, itu berakhir, meneruskan hasilnya kembali ke server web. Karena server web dan aplikasi adalah proses yang berbeda dari sudut pandang sistem operasi, alat komunikasi antar proses (IPC) digunakan untuk bertukar informasi di antara mereka - sering kali ini variabel lingkungan, pipa bernama, dll. Keuntungan utama dari CGI adalah proses web server dan aplikasi terisolasi satu sama lain dan jika terjadi masalah pada aplikasi web, maka proses aplikasi yang akan gagal, sedangkan proses web server itu sendiri akan terus berfungsi. .

Di sisi lain, kebutuhan untuk membuat proses baru setiap kali memerlukan biaya tambahan untuk membuat proses (membuat proses adalah operasi yang mahal dari sudut pandang sistem operasi) dan mentransfer data melintasi batas proses. Fakta ini merupakan kelemahan serius dan memiliki dampak signifikan pada skalabilitas aplikasi web (kemampuan untuk memproses jumlah besar permintaan masuk).

ISAPI(API Server Internet) - cara alternatif interaksi antara web server dan aplikasi web. Tidak seperti CGI, ketika berinteraksi dalam antarmuka ISAPI, ketika permintaan berikutnya tiba, server web memulai pembuatan baru mengalir dalam proses utama di mana server web sedang berjalan. Karena, dari sudut pandang sistem operasi, membuat utas lebih murah daripada membuat proses, aplikasi semacam itu lebih terukur dalam praktiknya. Ini juga menyederhanakan interaksi antara server web dan aplikasi web karena menggunakan ruang alamat tunggal dalam sistem operasi (karena semua kode berjalan dalam proses yang sama). Namun, jika terjadi masalah serius dengan aplikasi web yang berkomunikasi dengan server web dalam ISAPI, server web juga berpotensi untuk dihentikan. Karena server web dan aplikasi web berjalan dalam proses yang sama, memang demikian halnya. Oleh karena itu, pengembang kode server web yang mendukung ISAPI harus memberikan perhatian khusus pada masalah ini.

Sampai saat ini, cara paling umum bagi server web untuk berinteraksi dengan aplikasi web adalah antarmuka ISAPI, karena menyediakan kinerja paling optimal dalam hal overhead dan skalabilitas. Namun, ketika menjalankan beberapa aplikasi web pada server web yang sama, ada potensi bahaya dari satu aplikasi mengganggu yang lain. Ketika datang ke perusahaan yang menghosting aplikasi web di server mereka, dapat terjadi bahwa situs web perusahaan pesaing dihosting di server web yang sama pada saat yang bersamaan. Dalam hal ini, secara teoritis, salah satu perusahaan dapat dengan sengaja mengunggah kode yang akan merusak server web dan dengan demikian semua situs web yang dihosting di server web tersebut tidak dapat diakses. Untuk menghindari situasi ini, pendekatan gabungan digunakan - untuk setiap aplikasi, kumpulan aplikasi dapat dibuat, yang merupakan proses terpisah di mana aliran beroperasi untuk memproses permintaan HTTP yang masuk dari pengguna. Dalam hal ini, jika salah satu aplikasi berisi kode yang menghentikan proses dengan kesalahan, maka hanya proses aplikasi ini yang akan dihentikan. Selain itu, setiap kumpulan aplikasi berisi satu set utas yang dibuat dan disiapkan sebelumnya. Ini diperlukan agar tidak membuang waktu membuat utas pada saat permintaan masuk tiba. Kumpulan utas yang dibuat sebelumnya disebut kolam benang. Biasanya, server web memantau setiap kumpulan aplikasi dan jika gagal, server web memulai kembali prosesnya.

Selain fungsi dan mekanisme server web di atas, fungsinya sering kali mencakup tugas terkait tambahan. Tugas-tugas ini termasuk otentikasi dan otorisasi pengguna, pencatatan server (untuk debugging server web), dukungan untuk beberapa situs web di satu server (hosting bersama), dukungan untuk koneksi aman melalui protokol HTTPS, dll. Fungsi-fungsi ini dalam setiap kasus bergantung dari server web penerapan.

Saat ini, ada sejumlah besar implementasi server web yang berbeda. Salah satu server web yang paling populer dan serbaguna adalah server web open source Apache. Itu dibuat untuk bekerja di lingkungan Linux, ada juga implementasi untuk bekerja di bawah Windows. Berbagai variasi lain telah dibangun di atasnya, seperti Apache Tomcat untuk menjalankan aplikasi web berbasis Java. Produk paling serius lainnya di bidang ini adalah server web. Microsoft Internet Layanan Informasi (IIS), yang berjalan dalam operasi Sistem Windows. Biasanya, server web ini menjalankan aplikasi berbasis ASP.NET (dan teknologi terkait), serta aplikasi PHP dan situs web statis. Saat membangun aplikasi web berbasis ASP.NET, kami akan menggunakan IIS 7. Terakhir, ada proyek lain yang lebih kecil untuk mengembangkan server web, seperti Nginx. Proyek ini dikembangkan oleh salah satu pengembang Rambler untuk mengoptimalkan kinerja ini mesin pencari. Selanjutnya, proyek tersebut ternyata sangat sukses sehingga digunakan untuk bekerja di aplikasi lain. Biasanya Nginx digunakan ketika diperlukan untuk membangun infrastruktur yang sarat muatan.

Ringkasan singkat

Server web adalah program yang memproses permintaan HTTP yang masuk dan menghasilkan respons HTTP. Dalam kasus yang paling sederhana, server web mentransmisikan ke klien konten file yang terletak di hard drive server. Ketika diperlukan untuk menghasilkan tanggapan HTTP berdasarkan beberapa logika program, kode program eksternal disertakan. Antarmuka CGI dan ISAPI digunakan untuk menghubungkan kode program eksternal. PADA saat ini Yang paling menjanjikan adalah penggunaan antarmuka ISAPI karena skalabilitasnya yang lebih tinggi. Di dalam server web, kumpulan aplikasi dibuat (untuk setiap aplikasi web, proses terpisah di dalam OS, yang mencakup beberapa utas untuk memproses permintaan). Ada banyak implementasi web server, untuk aplikasi ASP.NET web server Microsoft Internet Information Services (IIS) biasanya digunakan.

pertanyaan tes

  • Apa itu aplikasi web?
  • Apa itu peramban?
  • Jelaskan siklus pemrosesan permintaan ke aplikasi web dari klien.
  • Mengapa Anda membutuhkan teknologi pengembangan aplikasi web (seperti ASP.NET, PHP, Ruby On Rails, dll.).
  • Bagaimana cara kerja protokol HTTP dan untuk apa?
  • Apa itu header pesan HTTP dan untuk apa?
  • Apa isi pesan HTTP?
  • Bagaimana header dipisahkan dari isi pesan dalam pesan HTTP?
  • Apa itu metode permintaan HTTP?
  • Apa itu kode status respons HTTP?
  • Berikan contoh HTTP request dan HTTP response headers.
  • Apa perbedaan antara algoritma enkripsi simetris dan yang asimetris?
  • Bagaimana cara kerja protokol HTTPS yang aman?
  • Apa itu server web?
  • Berdasarkan antarmuka apa server web dan aplikasi web dapat berinteraksi?
  • Bagaimana CGI berbeda dari ISAPI?
  • Apa itu hosting virtual?
  • Apa itu kumpulan aplikasi?
  • Sebutkan implementasi server web yang paling populer.
  • Server web apa yang menjalankan aplikasi ASP.NET?

Server web adalah server yang menerima permintaan HTTP dari klien, biasanya browser web, dan menyediakan mereka dengan tanggapan HTTP, biasanya bersama dengan halaman HTML, gambar, file, aliran media, atau data lainnya. Server web adalah tulang punggung World Wide Web.

Server web disebut perangkat lunak, yang menjalankan fungsi server web, dan langsung ke komputer yang menjalankan perangkat lunak ini.

Klien, yang biasanya merupakan browser web, mengirimkan permintaan ke server web untuk sumber daya yang diidentifikasi oleh URL. Sumber daya adalah halaman HTML, gambar, file, aliran media, atau data lain yang dibutuhkan klien. Sebagai tanggapan, server web mengirimkan data yang diminta ke klien. Pertukaran ini terjadi melalui protokol HTTP.

Tindakan pengguna akhir utama di Internet adalah "menavigasi ke halaman Web". Pada tingkat yang paling umum, ini menyiratkan kerja sama pasangan aplikasi:

Peramban web seperti Firefox atau Internet Explorer, yang menunjukkan dalam bentuk yang dapat dibaca manusia halaman yang diminta, yang diterimanya dari ...

Server Web, biasanya terletak di mesin jarak jauh, yang merespons permintaan halaman dengan aliran data dalam format HTML atau yang serupa.

Peramban ditangani oleh pengguna yang mendekati pemilihan dan analisis mereka dengan hati-hati. Sebaliknya, server hanya dapat dilihat oleh staf teknis situs. Selain itu, meskipun ada banyak server Web yang berbeda, sekitar 90% dari semua situs, menurut sebuah studi baru-baru ini oleh Netcraft, dijalankan hanya pada dua di antaranya - Apache dan Internet Information Server (IIS). Kedua server ini adalah produk yang dirancang dengan baik dengan tidak hanya daftar fitur built-in yang sangat panjang, tetapi juga aftermarket yang berkembang untuk buku, add-on, konsultasi, penyedia, dan sebagainya.

Server web dievaluasi terhadap berbagai: parameter yang paling penting:

Efisiensi: seberapa cepat ia menanggapi permintaan?

Skalabilitas: Apakah server terus berjalan dengan andal ketika banyak pengguna mengaksesnya secara bersamaan?

Keamanan: Apakah server hanya melakukan apa yang seharusnya dilakukan? Fitur apa yang ditawarkannya untuk otentikasi pengguna dan enkripsi aliran komunikasi? Apakah penggunaannya membuat aplikasi atau host tetangga lebih rentan?

Kesehatan: Apa mode kegagalan server dan darurat?

Kepatuhan.

Fleksibilitas: Dapatkah server dikonfigurasi untuk menerima sejumlah besar permintaan, atau halaman dinamis, membutuhkan perhitungan yang signifikan, atau otentikasi yang kompleks, atau...?

Persyaratan platform: Platform apa yang dapat digunakan server? Apakah dia hadir? persyaratan khusus ke platform perangkat keras?


Manageability: Apakah server mudah dipasang dan dirawat? Apakah kompatibel dengan standar organisasi untuk logging, auditing, costing, dll?

Server web yang dikenal:

· Apache adalah server web gratis yang paling umum digunakan dalam sistem operasi mirip UNIX;

IIS dari Microsoft, didistribusikan dengan sistem operasi server dari keluarga Windows

nginx adalah server web gratis

lighttpd adalah server web gratis.

· Google Web Server - server web berbasis Apache dan dimodifikasi oleh Google.

· Resin adalah server aplikasi web gratis.

· Cherokee adalah server web gratis yang dikelola hanya melalui antarmuka web.

Rootage adalah server web yang ditulis dalam java.

· THTTPD adalah server web yang sederhana, kecil, cepat dan aman.

Server Web Ringan

Biasanya, "ringan" berarti sederhana, mudah dipasang, terpelihara dengan baik, tidak menuntut, dan stabil - lebih kecil dan tidak terlalu rumit dibandingkan Apache dan IIS, yang menjadi agak berat dalam upaya memuaskan pasar mereka yang besar.

Server yang cukup ringan membuka peluang yang tidak tersedia bagi para pemimpin pasar dan alternatif "berat" lainnya. Misalnya, seluruh server dapat ditampung dalam satu file. Ini nyaman bagi pengembang, Anda dapat bereksperimen dengan ide-ide baru dengan menjalankannya di server ringan yang membutuhkan beberapa detik untuk menginstal. Juga, karena sifatnya yang tidak menuntut, server yang ringan berfungsi dengan sukses pada mesin yang tidak tahan dengan beban IIS.

Server Web yang kecil dan ringan juga bekerja dengan baik pada komputer industri dalam sistem jarak jauh, di lingkungan yang keras, atau dalam kondisi daya rendah. Dalam situasi ini, keuntungan besar adalah dapat memproses halaman Web dengan beberapa jenis aplikasi yang tidak memerlukan banyak kinerja atau ruang disk; ini berarti bahwa mesin jarak jauh dapat memiliki konsol manajemen berbasis web bawaan tanpa kerumitan pengembangan dan overhead Apache.

Hampir semua server Web ringan memiliki tingkat keterbukaan tertentu sumber. Jika kita memerlukan perilaku server Web tertentu, maka server yang dijelaskan di bawah ini sangat kecil sehingga mudah dimengerti dan karenanya diperbaiki. Server Web ini adalah bahan awal yang sangat baik untuk proyek-proyek di mana server Web tertanam dalam perangkat keras khusus atau dalam aplikasi khusus yang dirancang untuk berjalan di komputer. tujuan umum. Mereka juga banyak digunakan di situs web biasa:

· YouTube menggunakan lighttpd untuk mengirimkan konten yang diarsipkan seperti video dengan cepat;

· cdServe berjalan pada CD "Jerman Woodworking Machinery and Tools";

· LiteSpeed ​​​​telah "check in" di twitter, www.funnyoride.com, www.airliners.com, WordPress.com, fanfiction.com, SlashGear, www.forumactif.com dan situs web terkenal lainnya;

· OpenSUSE, RubyOnRails, MarkaBoo dan beberapa situs terkenal lainnya mengandalkan Mongrel;

· thttpd bekerja di ht.com, mtv.com, The Drudge Report, garfield.com, dll.

Server ringan memainkan peran mereka bahkan di pusat komputasi nyata, termasuk situs solid yang tercantum di atas dan tidak hanya mereka. Terutama situs berkinerja tinggi mengelompokkan operasi mereka untuk memanfaatkan caching, proxy, dan sebagainya. Situs berbasis Apache, misalnya, mungkin memiliki arsitektur di mana gambar yang berubah secara perlahan dikirimkan melalui server Web "minimalis" dari server khusus berkas sistem. Apa yang sebenarnya dilihat pengguna akhir adalah hasil kerja tim Apache dan satu atau lebih server Web tambahan, masing-masing memainkan peran yang unggul. Desain ini dapat memberikan hasil yang sangat cepat dengan biaya minimal untuk perhitungan.

Meskipun mereka memiliki banyak kesamaan, ada perbedaan dalam kategori ini. Sebagian besar server Web ringan ditulis dalam C, tetapi ada sejumlah implementasi yang berhasil dalam bahasa lain, termasuk Erlang, Java, Lisp, Lua, Perl, Python, dan Tcl.

Semua server Web ringan lebih kecil dan lebih mudah dikonfigurasi daripada Apache. Beberapa dari mereka lebih cepat dari Apache, beberapa lebih cepat; di tempat lain, penekanannya adalah pada keamanan, operasi tanpa gangguan selama beban kerja berat, skalabilitas, atau penghematan memori. Bagaimanapun, mereka dapat sepenuhnya dipahami, yang sudah tidak realistis untuk Apache.

Server Web yang sangat kecil meliputi:

· Server Cheetah, berisi kurang dari seribu baris dalam C.

· DebuMote, server Web yang sangat kecil yang diimplementasikan dalam satu sumber Tcl, berukuran sekitar 3000 byte.

· fnord membutuhkan waktu kurang dari 20K, tergantung pada platform dan konfigurasi. Meskipun ukurannya kecil, ia mendukung shared hosting, CGI, dan keep-alive.

· ihttpd, dengan kurang dari 800 baris C, dapat menyajikan halaman, termasuk CGI, melalui inetd.

· mattows mendukung CGI dengan hanya 600 baris C.

· renyah, meskipun ukurannya kecil - sekitar 30 KB - mendukung sejumlah besar bahasa skrip, termasuk bahasa tumpukan khusus yang disebut Sy.

Ukurannya yang kecil tidak menghalangi penggunaan serius dari server ini; fnord, misalnya, menangani ribuan koneksi bersamaan.

· cghttpd adalah server Web minimal yang dapat dilihat sebagai percobaan dalam menggunakan fitur asinkron yang tersedia di kernel seri 2.6 Linux.

· gelaphttpd– server HTTP/1.1 utas tunggal yang cepat.

· Gatling dirancang khusus untuk kinerja tinggi. Mendukung FTP, IPv6, shared hosting, CGI, dll.

· Kernux adalah modul kernel Linux yang menyediakan eksekusi daemon HTTP.

· lighttpd adalah server Web paling populer kelima di dunia. Ini dioptimalkan untuk koneksi bersamaan yang tinggi: Skenario tipikal adalah menggunakan lighttpd sebagai server offload untuk menyajikan konten statis...

· Server Web LiteSpeed adalah server Web komersial ringan yang berfokus pada kinerja dan keamanan. LiteSpeed ​​​​Technologies Inc. mengklaim percepatan enam kali untuk konten statis dan kinerja yang sedikit lebih sederhana untuk halaman yang ditafsirkan.

· Miniatur JWS, juga dikenal sebagai tjws, adalah server Web berbasis Java yang menangani servlet, JSP, dan ribuan koneksi bersamaan dalam 77 kilobyte. Penulisnya menggambarkannya sebagai "10% lebih cepat dari Apache 2.x."

· Patek adalah server HTTP/1.1 berkinerja tinggi yang ditulis dalam Erlang.

Banyak server Web diimplementasikan sebagai kelas atau perpustakaan yang dirancang agar sesuai dengan aplikasi besar. Yang menarik di antaranya adalah:

· EHS– "tertanam server HTTP," kelas C++ yang dirancang untuk disematkan dalam aplikasi C++ besar; dan

· Server Web TCL Tertanam, server Web paling sederhana yang mendukung SSL dan Otentikasi Dasar, dan sangat cepat - menurut pengukuran penulis, tidak kalah cepat dari lighttpd dan AOLserver. Berisi kurang dari seratus baris Tcl.

pada bahasa python beberapa server Web telah diterapkan yang mengisi ceruk yang tidak biasa, termasuk:

· cdServer adalah server http Python kecil dan sederhana "dirancang untuk menyajikan konten (statis) dari CD-ROM". Ini memiliki kemampuan terbatas dalam menyajikan konten dinamis. Kami memiliki beberapa proyek yang melibatkan pengiriman "live CD" yang tidak mudah rusak dan alat seperti cdServer sangat penting bagi mereka.

· edna adalah server MP3 berbasis HTTP yang cerdas dengan Python.

Ada server Web ringan menarik lainnya yang diimplementasikan di Perl dan bahasa lain yang kurang terkenal:

· Camlserv adalah server Web lengkap yang ditulis dalam ocaml dan ditujukan untuk "halaman Web yang sangat interaktif". Ini cocok dengan beberapa ribu baris ocaml, yang sebagian besar dikhususkan untuk fitur khusus bekerja dengan MySQL dan HTML.

· dhttpd log mengakses dalam format yang sama dengan Apache. Memiliki penerjemah Perl bawaan untuk mendukung CGI, shared hosting, IPv6, manajemen keluaran dan fitur keamanan.

· DNHTTPD ditulis dalam Perl untuk UNIX. Ini mendukung host virtual, koneksi SSL, CGI dan banyak lagi.

· Jelly Bean adalah Perl Object Server yang ditulis dalam Perl dan berdasarkan HTTP.

· lns.http– lingkungan web umum pada LISP HTTP/1.1.

· Anjing kampung adalah perpustakaan dan server untuk HTTP yang ditulis dalam Ruby.

· Nanoweb adalah server Web yang cepat dan stabil yang ditulis dalam PHP. Ini memiliki daftar fitur yang luas, termasuk kepatuhan HTTP/1.1 penuh, kontrol klik, otentikasi, hosting bersama, kompatibilitas SSL, dan banyak lagi.

· Naridesh- ditulis dalam server Web Perl.

· malaikat terbuka- ditulis dalam Perl. Keamanan.

· Xavante– Server web HTTP/1.1 ditulis dalam Lua.

· XSP ditulis dalam C# dan bertindak sebagai host ASP.NET.

Dunia web server bukan hanya Apache dan IIS, masih banyak lagi. Anda memiliki berbagai solusi alternatif yang Anda inginkan, cukup kecil untuk dipahami sepenuhnya, namun cukup cepat untuk aplikasi serius.

Internet telah memasuki kehidupan kita dengan kecepatan yang luar biasa. Dia menjinakkan semua orang untuk dirinya sendiri tanpa kecuali, menjeratnya dengan jaringnya dan tidak akan membiarkan kita pergi. Menggulir melalui lusinan, ratusan halaman situs setiap hari, hanya sedikit orang yang berpikir tentang apa jaringan Internet global ini, bagaimana cara kerjanya, apa arti istilah ini atau lainnya. Hari ini kita akan berbicara tentang apa itu server web, untuk apa, fungsi apa yang dijalankannya.

Apa yang dimaksud dengan istilah webserver? Kumpulan server web adalah tulang punggung Internet. Tanpa mereka, tidak akan ada world wide web. Pengguna tidak akan dapat berkomunikasi satu sama lain, menemukan informasi yang mereka butuhkan, memulai dan memelihara situs dan blog mereka. Server web dapat berupa komputer atau program khusus yang bertindak sebagai server.

Fungsi server web

Tugas utama server web adalah menerima permintaan HTTP dari pengguna, memprosesnya, dan menerjemahkannya ke dalam kode komputer digital. Kemudian keluarkan respons HTTP, ubah dari jutaan nol dan satu menjadi gambar, aliran media, huruf, halaman HTML.

Setiap server web, untuk kenyamanan penggunaannya oleh pengguna, harus memiliki browser web yang nyaman. Ini mengirimkan permintaan ke server web, diubah menjadi URL sumber daya Internet.

Bersama fitur standar, beberapa server web memiliki server tambahan. Jadi, misalnya, perangkat lunak terkait dapat merekam jumlah akses pengguna ke sumber daya tertentu dan mencatatnya dalam log terpisah. Dan mereka juga dapat mendukung HTTPS, yang penting untuk koneksi yang aman antara situs dan pengguna. Seringkali server web diinstal bersama dengan server email. Ini memungkinkan pengguna untuk dengan cepat membuka halaman surat langsung dari situs dengan mengklik hanya satu hyperlink.

Untuk apa server web?

Seperti yang sudah dijelaskan di atas, server web dibutuhkan oleh setiap orang yang menggunakan Internet untuk bertukar informasi. Namun, pada umumnya, perlu untuk mengatasinya bukan ke seseorang, tetapi ke program dan perangkat. Sebagai contoh, program antivirus sering meminta server untuk mencari jaringan dan memperbarui database mereka. Bekerja sama secara aktif dengan server web Handphone, TV, dan perangkat lain yang memiliki akses ke Internet. Dalam hal ini, program dapat dikonfigurasi untuk pembaruan otomatis. Kemudian partisipasi pengguna dalam proses ini akan praktis tidak perlu. Tetapi beberapa database yang diperbarui masih lebih baik dikendalikan oleh Anda sendiri.

Server web paling terkenal

Server web yang paling terkenal dan tersebar luas adalah Microsoft IIS dan Apache. Yang paling populer adalah Apache. Perangkat lunaknya digunakan oleh lebih dari 60% dari semua yang ada. Ini sebagian besar disebabkan oleh fakta bahwa Apache gratis. Pengembang terus-menerus menganalisis kesalahan produk mereka dan menghilangkannya. Kerugian dari program ini adalah, pada umumnya, ditujukan untuk pemrogram dan pengguna profesional, sehingga cukup sulit untuk memelihara dan mengkonfigurasinya.

Sebaliknya, Microsoft berusaha membuat server web IIS-nya dapat diakses oleh pemahaman pengguna rata-rata. Semua pengaturannya dapat dilakukan tanpa spesialis. Sangat mungkin bahwa program ini akan dapat mengejar pesaingnya dengan nama India dalam hal jumlah pengguna.

Baik Apache dan IIS bekerja dengan baik dengan banyak sistem operasi, seperti Mac OS, Linux, berbagai modifikasi Microsoft Windows dan banyak lagi. Kedua server web ini stabil dalam operasi, memiliki kecepatan yang baik, Anda dapat menghubungkan modul tambahan ke mereka.

Jika Anda tertarik dengan pengembangan web, maka Anda pasti telah menemukan definisi seperti server web.

Apa itu server web?

Mari kita coba memahami masalah ini.

Hal pertama yang harus dipahami. Server web itu mudah program komputer. Yang diinstal pada sistem operasi apa pun dan mulai melakukan beberapa tindakan tertentu. Dengan demikian, Anda dapat menginstal program ini bahkan di komputer tempat Anda menonton video ini, apa pun sistem operasi yang telah Anda instal.

Untuk apa program ini? Mengapa kita membutuhkan server web?

Tugas utama server web adalah menerima permintaan HTTP, memprosesnya, dan mengeluarkan respons HTTP.

Apa saja permintaan dan tanggapan HTTP ini?

Kami menghadapi ini setiap hari dan sebagian besar program utama, yang memungkinkan Anda untuk bekerja dengan permintaan dan tanggapan HTTP - ini adalah peramban biasa yang dipasang di . kami sistem operasi (Google Chrome, Peramban Yandex, Firefox, Internet Explorer, dll.).

Itu. permintaan ke server web dan tanggapan dari itu yang terjadi melalui protokol HTTP. Ini adalah seperangkat aturan khusus yang memungkinkan browser dan server web untuk berkomunikasi.

Tentunya, Anda dapat memperhatikan hal itu saat mengetik beberapa alamat di bilah alamat browser. Sebelum domain situs, protokol di mana situs web beroperasi pertama kali ditunjukkan. Baik http atau https.

Yang paling penting untuk dipahami adalah bahwa setelah Anda memasukkan alamat situs web ke bilah alamat browser Anda dan menekan tombol Enter, permintaan ke server web mulai dijalankan.

Ini adalah server web yang menangani permintaan ini. Server web ini dapat diinstal pada komputer yang sama tempat browser diinstal. Juga, server web ini dapat diinstal di beberapa tempat lain, komputer lain di Internet. Tidak ada perbedaan di sini. Sederhananya, dengan bantuan browser, kami mengakses server web ini dan mendapatkan respons.

Dan menurut respons http yang diterima, browser menampilkan konten halaman web. Respons yang dikirimkan server web berisi semua informasi yang diperlukan agar browser dapat menampilkan halaman web. Dalam bentuk yang dikandung oleh pengembang situs web.

Server web adalah program yang menghubungkan dengan teknologi server.

Tugas server web adalah menerima permintaan dari klien HTTP, memahami file mana permintaan itu terjadi, memproses file ini dan mengeluarkan respons ke klien.

Anda perlu ingat bahwa server web adalah penghubung antara bahasa pemrograman sisi server. Sebagai contoh, bahasa PHP. database.

Harus diingat bahwa database adalah teknologi (program) yang terpisah dan bukan milik server web.

Itu. server web menerima permintaan, meneruskannya ke beberapa bahasa pemrograman sisi server, atau segera menerima file tertentu. Semua ini diproses di server. Server menerima respons dari layanan terkait dan sudah mengirim respons ke program yang mengirim permintaan ke sana.

Anda perlu memahami bahwa kami dapat membuat permintaan HTTP tidak hanya dari browser. Ini dapat dilakukan melalui baris perintah, melalui aplikasi server tertentu, dan sebagainya.

Selain itu, tugas web server adalah membuat log error dan pengaksesan file (log).

Server web berikutnya adalah otentikasi dan otorisasi pengguna. Server web memungkinkan Anda untuk menentukan siapa yang mengaksesnya, apakah dia memiliki akses ke file apa pun.

Jika server web tidak memiliki akses ke file apa pun, maka server web hanya menolak akses ke file tersebut.

Server web juga berisi pengaturan tentang bagaimana dan file apa yang harus diproses di server web. Apa yang harus dilakukan dengan folder apa pun. Secara umum, semua aturan ini berisi server web.

Karena server web adalah program reguler, maka program ini dapat dirilis oleh berbagai pengembang. Itu. perusahaan yang berbeda dapat, menurut algoritme mereka, mengembangkan server web yang bekerja dengan satu atau lain cara.

Mungkin server web paling populer yang tersedia saat ini adalah server web seperti: Apache, IIS, Nginx.

Sebenarnya, itu semua tentang server web. Yang paling penting untuk dipahami tanpa masuk ke detail. Server web hanyalah semacam program yang memungkinkan Anda menerima permintaan HTTP dan mengeluarkan tanggapan HTTP.

Jika Anda tertarik dengan cara kerja proses ini, atau jika Anda ingin tahu tentang mekanisme khusus yang memungkinkan Anda menjelajahi Internet, kami sarankan Anda membaca artikel ini. Dari situ Anda dapat mengetahui bagaimana server WEB memberikan Halaman web ke rumah pengguna, sekolah dan kantor. Jadi, mari kita mulai!

Katakanlah seorang pengguna sedang duduk di depan komputer, menjelajahi halaman WEB, dan kemudian seorang teman memanggilnya dan berkata:

“Kau tahu, aku baru saja membaca artikel yang bagus! Masukkan URL ini dan baca sendiri. Ini adalah halamannya.

Pengguna memasukkan URL yang didiktekan dan mengklik tombol "Go". Dan lihatlah, di mana pun URL ini berada, halaman tersebut muncul di layar monitor.

Diagram berikut, pada tingkat yang paling sederhana, memberikan gambaran tentang urutan kejadian yang mengakibatkan halaman yang dipilih ditampilkan di layar monitor:

Browser pengguna telah membuat koneksi ke server WEB, meminta halaman yang diinginkan dan menerimanya.

Apa yang terjadi tanpa pengguna sadari

  1. Browser membagi URL menjadi tiga bagian:
  • Protokol ("http").
  • Nama server ("situs").
  • Nama file ("server web.htm").
  • Browser menghubungi server nama dan menerjemahkan nama server " " ke dalam alamat IP yang digunakan untuk berkomunikasi dengan mesin server.
  • Kemudian browser, menggunakan alamat IP yang diterima, menghubungi server yang tepat pada port 80 (Kita akan membicarakan port nanti di artikel ini).
  • Sesuai dengan protokol HTTP, browser mengirim permintaan GET ("GET") ke server, yang membutuhkan file "/web server.htm" untuk dikirim. (Perhatikan bahwa browser dapat mengirim cookie bersama dengan permintaan GET - lihat artikel tentang cara kerja cookie untuk detailnya.)
  • Server kemudian mengirim browser teks HTML untuk halaman WEB. (Mungkin juga ada cookie di header halaman yang dikirim dari server ke browser.)
  • Peramban mempertimbangkan tag HTML dan menampilkan halaman pada layar monitor. Jika Anda belum tertarik dengan detail proses ini sebelumnya, maka Anda akan menemukan banyak istilah baru dalam deskripsi. Untuk memahami detail dari keseluruhan proses, Anda perlu mengetahui apa itu alamat IP, port, protokol ... Arti dari istilah-istilah ini akan dijelaskan secara rinci di bawah ini.
  • Jadi apa itu "Internet"? adalah jutaan komputer yang terhubung dalam jaringan besar jaringan komputer. Berkat jaringan, komputer dapat saling berkomunikasi. Anda dapat menyambungkan komputer di rumah ke Internet menggunakan modem saluran telepon, perangkat DSL, atau modem kabel. Perangkat ini berkomunikasi dengan Penyedia Layanan Internet (ISP). Komputer perusahaan atau universitas biasanya dilengkapi dengan papan antarmuka jaringan(kartu antarmuka jaringan, NIC) yang menghubungkannya langsung ke jaringan area lokal (LAN) yang sesuai. Perusahaan dapat menghubungkan jaringan lokal ke peralatan ISP menggunakan kecepatan tinggi saluran telepon, misalnya, garis T1. Saluran T1 dapat mengirimkan sekitar 1,5 juta bit per detik, sedangkan saluran konvensional yang menggunakan modem hanya dapat mengirimkan 30.000 hingga 50.000 bit per detik.

    ISP terhubung ke ISP yang lebih besar, dan ISP terbesar memiliki tulang punggung serat optik secara nasional atau regional. Tulang punggung dunia dibentuk dengan bantuan jalur komunikasi serat optik, kabel bawah laut, dan saluran satelit (beberapa peta tulang punggung Internet yang menarik dapat ditemukan di Atlas of Cyberspace). Dengan demikian, setiap komputer yang terhubung ke Internet dapat berkomunikasi dengan setiap komputer lain di Internet.

    Klien dan server

    Secara umum, semua mesin di Internet dapat dibagi menjadi dua jenis: server dan klien. Mesin yang menyediakan layanan ke mesin lain disebut server (misalnya, server WEB atau server FTP). Mesin yang digunakan untuk berkomunikasi dengan server untuk menerima layanan disebut klien. Saat pengguna terhubung ke Yahoo! di yahoo.com untuk melihat halaman, Yahoo! mengalokasikan mesin (dan mungkin sekelompok mesin yang sangat besar) untuk digunakan di Internet untuk melayani permintaan pengguna tersebut. Oleh karena itu, Yahoo! menyediakan pengguna dengan layanan servernya. Mesin pengguna, di sisi lain, kemungkinan besar tidak menyediakan layanan kepada orang lain di Internet. Oleh karena itu, ini disebut mesin pengguna, atau klien. Mungkin begitu, dan merupakan praktik umum bahwa satu mesin adalah server dan klien pada saat yang sama, tetapi dalam kasus kami, kami akan mengasumsikan bahwa sebagian besar mesin bertindak sebagai server atau klien.

    Mesin server menyediakan satu atau lebih layanan di Internet. Program khusus dapat berjalan di mesin server, berkat itu ia dapat menjalankan fungsi server WEB, server Surel dan server FTP. Klien yang berkomunikasi dengan mesin server memiliki tujuan tertentu, sehingga mereka mengarahkan permintaan mereka ke server dengan program khusus yang sesuai yang berjalan di mesin server umum. Misalnya, jika pengguna di mesinnya berjalan peramban web, kemungkinan besar akan menghubungi server WEB di mesin server. Aplikasi pengguna Telnet mencoba berkomunikasi dengan server Telnet, aplikasi email menghubungi server email, dan seterusnya...

    Nama domain dan pembeliannya

    Karena kenyataan bahwa sulit bagi orang untuk mengingat kumpulan angka yang membentuk alamat IP, dan dengan kebutuhan untuk kadang-kadang mengubah alamat, semua server Internet juga diberi nama yang mudah digunakan, yang disebut nama domain. orang lebih mudah mengingat nama situs daripada alamat 209.116.69.66.

    Nama situs terdiri dari tiga bagian:

    • Nama host (www).
    • Nama domain (sd-perusahaan).
    • nama domain level tertinggi(ru).

    Pendaftar

    Nama domain dalam domain .com ditangani oleh registrar VeriSign. VeriSign juga mengontrol nama domain .bersih. Domain lain (seperti PRO, BIZ dan ORG) dikelola oleh registrar lain (yaitu RegistryPro, NeuLevel dan Public Interest Registry). VeriSign menghasilkan nama tingkat atas dan memastikan bahwa semua nama dalam domain tingkat atas adalah unik. Selain itu, VeriSign berisi kontak informasi setiap situs dan memiliki database pengguna. Nama host dihasilkan oleh perusahaan yang menyediakan domain. Nama host "www" sangat umum, tetapi saat ini banyak tempat yang tidak mencantumkannya atau menggantinya dengan nama host lain yang menunjuk ke lokasi tertentu di situs. Misalnya, dalam nama domain Encarta Encyclopedia Microsoft, encarta.msn.com, "encarta" mengacu pada nama host alih-alih www.

    Agar semua mesin ini bekerja dengan baik, setiap mesin di Internet diberikan alamat unik, yang disebut alamat IP. IP mendukung Protokol Internet, dan alamat adalah angka 32-bit yang biasanya direpresentasikan sebagai empat "oktet" dalam "desimal bertitik". Alamat IP tipikal terlihat seperti ini: 216.27.61.137

    Empat angka dalam alamat IP disebut oktet karena dapat berkisar dari 0 hingga 255, yaitu 2 pangkat delapan dari kemungkinan per oktet.

    Alamat IP unik

    Setiap mesin di Internet diberi alamat IP yang unik. Server diberi alamat IP statis yang jarang berubah. Untuk komputer rumah yang berkomunikasi dengan Internet, alamat IP sering diberikan oleh ISP pada saat koneksi. Alamat IP ini unik selama sesi ini - saat berikutnya mesin terhubung, mungkin diberikan alamat yang berbeda. Dengan demikian, ISP hanya perlu mengalokasikan satu alamat IP per modem selama operasinya di Internet, daripada alamat terpisah untuk setiap klien.

    Pengguna yang mesinnya menjalankan Windows bisa mendapatkan banyak informasi tentang koneksi Internet komputer mereka, termasuk alamat IP dan nama host saat ini, dengan menggunakan perintah WINIPCFG.EXE (IPCONFIG.EXE untuk Windows 2000/XP). Pada mesin UNIX, untuk mengetahui alamat IP mesin, ketik garis komando nslookup, serta nama mesin ini, misalnya, SD 1 - yaitu, semuanya akan terlihat seperti ini: "nslookup sd1.su". Anda dapat menentukan nama mesin Anda menggunakan perintah hostname. (Informasi lebih rinci tentang alamat IP dapat diperoleh dari informasi Komite Alamat Digital di Internet).

    Sebuah mesin di Internet biasanya hanya membutuhkan alamat IP untuk berkomunikasi dengan server. Misalnya, Anda dapat mengetikkan URL 209.116.69.66 ke dalam browser Anda dan menyambung ke mesin yang menghosting server WEB situs PCWork. Untuk berkomunikasi dengan beberapa server, alamat IP saja tidak cukup, tetapi untuk sebagian besar server besar ini sudah cukup - masalah ini akan dibahas lebih detail nanti.