SPEAKER: Mari kita bicara tentang yang lain protocol-- Transfer Hypertext Protokol, atau HTTP. Jadi kita bicarakan IP dan TCP dalam video sebelumnya. Dan mereka adalah protokol yang menentukan bagaimana informasi bergerak dari mesin ke mesin dan dari program ke program atau layanan untuk layanan melalui internet, melalui jaringan ini router dan mesin. Tapi itu biasanya tidak seluruh gambar, bukan? Biasanya ketika kita mengirim informasi, program ini itself-- ketika data menerima, katakanlah, misalnya, di email melalui TCP port 25 atau web permintaan halaman melalui port 80, biasanya ada sistem aturan ada untuk memproses apa yang baru saja diterima. Dan HTTP adalah contoh hanya protokol tersebut. HTTP adalah satu-satunya aplikasi protokol lapisan bahwa kita akan berbicara tentang. Tapi itu adalah satu set aturan mendikte bagaimana informasi yang akan ditransmisikan dan diproses melalui internet. Secara khusus, HTTP menentukan dengan tepat bagaimana kita harus membuat permintaan halaman web dan persis bagaimana server, mesin yang host halaman web, memberikan informasi yang kembali ke klien. Jadi protokol ini tidak benar-benar memiliki apa-apa hubungannya dengan bagaimana informasi bergerak dari titik A ke titik B. Ini benar-benar sistem aturan for-- itu pada dasarnya aturan keterlibatan untuk bekerja dengan halaman web, mirip dengan ketika seseorang gelombang tangan mereka pada Anda, Anda seharusnya gelombang kembali. Itu semacam protokol manusia konvensional. Protokol HTTP hanya mengatakan, jika Anda ingin meminta web Halaman, pastikan format yang penampilan Anda seperti this-- semacam format seperti surat bisnis, misalnya. Dan respon akan sama datang sesuai dengan protokol ini. Ada yang lain protokol lapisan aplikasi bahwa kita tidak akan berbicara tentang dalam video. Tapi ini termasuk hal-hal seperti Protokol File Transfer, Simple Mail Transfer Protocol untuk mengirim email, Distribusi data Layanan, Remote Desktop Protokol, RDP, yang digunakan jika Anda ingin akses jarak jauh komputer Anda dari komputer lain, XMPP, yang sering dikenal sebagai Jabber atau chatting, jadi ini adalah protokol untuk menggunakan layanan chatting. Dan ada banyak, banyak, banyak orang lain. Jadi setiap kali Anda menggunakan layanan, layanan mengharapkan informasi untuk terima-- permintaan menjadi terima-- dalam format tertentu sangat dan diperlukan untuk Informasi kembali kembali dalam format yang sangat khusus juga. Jadi mari kita kembali ke ilustrasi kami kita ingin berbicara ke internet. Jadi kami senang, dan kami ingin untuk pergi ke cats.com, kan? Jadi jika kita hanya berbicara dengan cats.com, kita mungkin mengatakan sesuatu seperti hey, saya bisa melihat halaman rumah Anda? Dan cats.com mungkin akan merespon, ya, pasti. Di sini Anda pergi. Jadi itu semacam manusia dari meminta-jawab. Apa yang terlihat seperti di HTTP? Nah, itu benar-benar jenis diterjemahkan cukup bersih untuk sesuatu seperti ini. Kita bisa mengatakan GET / HTTP / 1.1 dari host cats.com. Jadi pada dasarnya apa yang saya lakukan di sini adalah meminta halaman web www.cats.com/. Kami biasanya menghilangkan garis miring saat ini, tapi itu akan hanya berarti homepage cats.com ini. Oh, dan omong-omong, aku akan menjadi menggunakan versi HTTP 1.1 untuk berkomunikasi dengan Anda. Itu semacam analog dengan mengatakan, seperti, dengan cara, Aku akan berbicara dalam bahasa Prancis, atau dengan cara, Aku akan menjadi berbicara dalam bahasa Inggris. Itu hanya format protokol. Ini juga 1.0, yang merupakan tidak umum digunakan lagi. Jadi aku berbicara HTTP 1.1, dan Saya ingin www.cats.com/. Silakan itu untuk saya. Dan kemudian ada informasi lainnya, too-- dot, dot, dot sana, yang informasi tentang yang Anda begitu cats.com akan tahu di mana untuk mengirimkannya. Tapi ini adalah dua semacam bagian penting pada awal HTTP request-- seperti ketika Anda memulai surat yang Anda katakan, sayang, kosong. Hal ini sangat mirip dalam semangat untuk itu. Dan jika cats.com akan mengatakan, oh, yakin, di sini Anda pergi. Mereka mungkin menanggapi seperti this-- Saya juga menanggapi. Saya juga berbicara HTTP 1.1. Permintaan Anda disetujui, 200 OK. Apa yang akan Anda untuk terima HTML dan kemudian dot, dot, dot beberapa informasi tambahan. Dan di bagian paling bawah dari permintaan sebenarnya HTML, bahasa markup, yang isi homepage cats.com ini. Jadi HTTP / 1.1-- Saya mengakui Anda permintaan diterima melalui HTTP 1.1. Permintaan Anda disetujui. Saya dapat memberikan apa yang Anda inginkan, 200 OK. Anda akan menerima HTML. Dan kemudian inilah HTML yang Anda minta. Tapi kadang-kadang permintaan kami tidak selalu pergi cukup sesuai rencana. Dapatkah saya melihat halaman cats.html Anda? Nah, bagaimana jika mereka mengatakan, kami tidak memiliki halaman cats.html, yang tampaknya jenis realistis karena mereka cats.com. Anda akan berpikir mereka akan memiliki cats.html. Tapi OK. Jadi ini adalah semacam interaksi manusia konvensional kami sekarang telah dengan cats.com. Bagaimana yang menerjemahkan? Ini mungkin sesuatu yang akrab bagi Anda. Permintaan kami tampak persis sama, kecuali bukannya slash kita sekarang mendapatkan cats.html. Jadi sekarang apa yang pada dasarnya seluruh ini permintaan mengatakan ini tolong beri saya www.cats.com/cats.html. Jadi tuan rumah dan tengah bagian dari garis atas ada menunjukkan tepat apa halaman saya meminta. Tapi cats.com dalam kasus ini tidak akan untuk dapat merespon positif. Mereka tidak tahu kita bicarakan. Dan jadi ini adalah sesuatu yang Anda mungkin memiliki melihat HTTP before-- 1.1 404 Tidak Ditemukan. Saya tidak bisa menemukan apa yang Anda minta. By the way, aku akan memberikan kembali beberapa HTML, dan biasanya yang HTML adalah isi dari beberapa halaman 404. Dan dalam kasus cats.com, itu mungkin beberapa kucing lucu dalam keranjang dengan 404 wajah sedih di samping mereka, karena Anda akan menjadi sedih ketika Anda tidak mendapatkan halaman yang Anda cari. Itu semacam dasar-dasar apa protokol, permintaan protokol HTTP terlihat seperti. Mereka benar-benar mirip dengan bagaimana kita akan membuat interaksi yang sama dalam konvensi hanya manusia meminta sesuatu dan mendapatkan kembali atau menulis surat dan mengharapkan respon surat dalam format tertentu. Itu cukup banyak apa yang HTTP hanya canonicalizing untuk semua perangkat yang ingin akses halaman web, transfer hypertext. Jadi garis bentuk, ini Metode versi permintaan sasaran HTTP, disebut garis permintaan HTTP. Ini biasanya hal pertama yang ditransmisikan sebagai bagian dari permintaan HTTP atau jika Anda meminta HTTP. Ini semacam seperti, seperti yang saya katakan, mengatakan Sayang, kosong di bagian atas surat Anda. Mereka tahu bahwa Anda menulis surat untuk mereka. Jadi ini sangat mirip dengan mengatakan, saya tahu bahwa mereka membuat permintaan HTTP dan ini adalah format tertentu mereka minta. Versi HTTP mungkin selalu akan menjadi HTTP / 1/1. 1.0 juga ada tapi tidak benar-benar digunakan lagi. Untuk tujuan CS50, GET mungkin selalu apa yang akan menjadi menggunakan ketika Anda benar-benar membuat permintaan HTTP langsung. Tapi POST adalah pilihan lain yang kita tidak akan berbicara tentang sekarang. Dan kemudian permintaan-target apa halaman pada server host Anda ingin mendapatkan. Seperti yang saya katakan, bahwa nama host adalah garis yang terpisah, biasanya baris kedua dari permintaan secara keseluruhan. Dan begitu diambil bersama-sama, tuan rumah nama dan target permintaan menentukan spesifik sumber daya yang dicari. Dalam contoh kita 404 detik yang lalu, saya meminta lagi untuk www.cats.com, cats.com menjadi tuan rumah. Dan sejalan permintaan saya, Saya mengatakan /cats.html. Itu target permintaan saya. Jadi secara keseluruhan saya meminta untuk isi atau sumber daya terletak di www.cats.com/cats.html. Dan kemudian berdasarkan apakah sumber daya yang ada dan apakah server dapat memberikan sumber daya sesuai dengan klien permintaan, Anda mungkin mendapatkan berbagai kode status kembali. Beberapa kode status ini Anda telah melihat karena mereka bagian dari respon. Beberapa dari mereka, 200 OK, yang mungkin cukup diam. Anda mungkin pernah melihat halaman merespon 200 OK. Anda hanya mendapatkan halaman. Ini tidak seperti error 404, yang biasanya cukup jelas. Anda biasanya melihat bahwa ia mengatakan 404. Jadi mari kita bicara tentang apa yang beberapa dari mereka kode status mungkin. Sekali lagi, ketika server merespon kita, mereka akan merespon statusnya versi HTTP. Biasanya HTTP / 1.1. Apa kode status ini akan menjadi? Yah, kita mungkin mendapatkan sukses. Jadi dalam kategori sukses, kita mungkin mendapatkan kode 200 dengan OK teks. Apa artinya ini? Nah, semuanya baik. Anda membuat permintaan yang valid. Berikut adalah respons yang valid. Saya bisa memberikan apa yang Anda inginkan. Kadang-kadang Anda mungkin mendapatkan hal-hal lain bahwa Anda tidak akan melihat langsung tapi agak kegagalan. Mereka disebut pengalihan. Ada dua yang umum di sini. 301 Permanently-- Pindah apa ini pada dasarnya berarti adalah halaman sekarang di lokasi baru. Ini akan tinggal di sana selamanya. Dan kebanyakan browser akan otomatis mengarahkan Anda. Jadi Anda tidak akan pernah benar-benar melihat 301, baik, kecuali jika Anda menggunakan benar-benar out-of-date Browser, mungkin, karena 301 respon merupakan bagian dari dot, dot, dot dari 301 respon. Ia juga memberitahu Anda di mana halaman baru. Dan sehingga sebagian browser akan hanya mengarahkan Anda ke sana, dengan asumsi bahwa Anda ingin pergi ke sana. Kadang-kadang Anda juga akan mendapatkan 302 ditemukan. Dan yang satu ini Anda benar-benar mungkin masih melihat sesekali. Kadang-kadang halaman memindahkan sementara. Sehingga tidak akan dibangun ke permintaan mengatakan browser untuk secara permanen mengubah setiap saat ia melihat permintaan yang Anda membuat untuk mengubahnya ke sesuatu yang lain. Jadi Anda mungkin melihat 302 Ditemukan, yang pada dasarnya kata halaman ini tinggal di tempat lain. Tapi itu tidak akan tinggal di sana selamanya. Ini akhirnya akan mungkin pergi kembali ke tempat Anda pikirkan. Maka Anda akan mendapatkan hal-hal seperti kesalahan klien. Jadi ini adalah orang-orang yang telah Anda mungkin terlihat, sekarang. Anda mungkin belum melihat yang 200-an atau 300, tetapi Anda mungkin akrab dengan 400-an. Dan itulah yang akan kita bicarakan tentang dalam satu detik, 500-an juga. Anda mungkin akan melihat 401 tidak sah. Biasanya ini berarti Anda mencoba untuk mengakses halaman, tetapi Anda belum login. Jadi Anda mencoba dan pergi ke beberapa profil atau sesuatu di Facebook atau Anda mencoba dan akses some-- Anda sedang bekerja. Anda mencoba untuk mengakses sesuatu di internet kerja Anda, tapi kau belum login. Anda tidak dapat melihat halaman. Anda mungkin mendapatkan 401 tidak sah, yang berarti kita mungkin akan dapat memenuhi permintaan ini, tetapi pertama Anda harus login untuk melakukannya. Sebaliknya, Anda mungkin mendapatkan 403 Dilarang, yang itu tidak benar-benar masalah jika Anda login atau tidak. Permintaan ini tidak diperbolehkan. Sumber daya yang ada di server. Tapi Anda tidak diizinkan untuk mengaksesnya. Ini adalah file biasanya internal yang hidup pada server untuk berbagai alasan tetapi tidak dimaksudkan untuk menjadi diakses dari dunia luar, dan sehingga mereka dilarang. Mereka tinggal di sana. Saya tidak mengatakan saya tidak dapat menemukannya. Tapi aku mengatakan aku tidak bisa memberikannya kepada Anda. Dan itu tidak masalah jika Anda login atau tidak. Dan kemudian tentu saja, sangat umum 404 Tidak Ditemukan. File tidak ada di server. Saya ingin memuaskan permintaan Anda, tapi aku tidak bisa. Anda juga kadang-kadang melihat server kesalahan, yang paling umum pada umumnya menjadi 500 Internal Server Error, yang tidak benar-benar memberitahu Anda apa-apa sama sekali tentang apa yang salah. Tapi itu tidak benar-benar Anda membuat kesalahan dalam permintaan Anda. Ini sebenarnya server gagal untuk memenuhi permintaan entah bagaimana. Jadi 500 adalah respon umum. Anda juga akan melihat sesuatu seperti Service Unavailable, yang saya percaya adalah kode 503. Dan Gateway Timeout-- jika Anda pernah punya halaman hanya duduk di sana bongkar bongkar bongkar dan Anda tidak pernah tahu apakah itu akan beban dan kemudian akhirnya hanya says-- hanya menyerah. Itu 504 Gateway Timeout. Server ingin mengeksekusi permintaan Anda, tapi sesuatu yang tidak beres pada side-- Server bukan pada side-- Anda untuk menyebabkan yang menjadi masalah. Sekarang, kita bisa mengakhiri cerita di sini, tapi apa yang saya benar-benar akan lakukan sekarang adalah aku akan membuka browser saya dan menunjukkan bagaimana Anda mungkin bisa melihat beberapa kode status ini bahkan jika Anda umumnya tidak melihat mereka. Dan kita akan melakukannya dengan mengambil a melihat beberapa alat pengembang. Baiklah Jadi di sini saya sekarang dalam jendela browser saya. Dan saya ingin belajar sedikit tentang permintaan HTTP ini. Bagaimana cara tahu-- tentu kita tahu jika Halaman goes-- ketika sesuatu berjalan salah, kita mendapatkan 404. Kita semua telah melihat bahwa. Kita tidak perlu untuk menggambarkan bahwa. Tapi apa yang beberapa yang lain? Dan bagaimana kita akan melihat permintaan ini dalam tindakan? Sehingga hal pertama saya akan lakukan adalah membuka Developer Tools. Jadi Developer Tools yang dibangun menjadi browser paling modern dan memungkinkan kita untuk melihat hal-hal bahwa kita tidak sebaliknya see-- semacam informasi tambahan sedang dikirim bawah web kami permintaan. Saya menggunakan Google Chrome di sini. Dan untuk membuka Developer Tools di Chrome, Anda hanya menekan F-12, dan itu akan membuka itu di samping. Setelah saya ketik permintaan, saya akan memperbesar sehingga kita bisa melihat apa yang terjadi di sini. Tapi apa yang akan saya lakukan di browser saya bar is-- dan saya akan memperbesar lebih di sini- Aku akan membuat permintaan untuk www.google.com. Kita semua mungkin dibuat permintaan ini sebelumnya. Aku akan tekan Enter. Sekarang, di sini di Developer saya Alat, saya telah memilih tab Network. Dan Anda melihat banyak hal di sini. Lihatlah these-- 200 OK, 200 OK, beberapa kode status ini datang. Saya tidak tahu mengapa saya mendapatkan 302 Ditemukan. Saya tidak menyadari aku melihat satu itu. Tapi pada dasarnya melihat bahwa cukup banyak, dalam hal request-- Google saya Aku membuat sangat sederhana permintaan untuk halaman Google. Dan dalam proses memberikan permintaan saya, Google tampaknya telah membuat banyak permintaan lain atas nama saya. Tapi aku sudah membuat permintaan untuk mendapatkan Google Halaman dan saya mendapatkan banyak 200 Mengadakan. Saya tidak melihat 200 OK pada layar saya, tapi aku mendapatkan banyak permintaan yang telah dibuat. Satu lagi yang aku cukup yakin akan bekerja is-- bagi anda yang benar-benar tua-sekolah, Anda mungkin tahu bahwa Facebook adalah tidak selalu di Facebook.com. Pada hari-hari awal itu di wwww.thefacebook.com. Mereka tampaknya tidak bisa mendapatkan akses untuk Facebook.com cukup sebentar. Dan apa yang saya harapkan di sini adalah untuk mendapatkan informasi. Dan kita akan melihat apakah ini panci keluar. Apa yang saya harapkan di sini adalah untuk mendapatkan informasi bahwa Facebook telah pindah secara permanen dari thefacebook.com ke Facebook.com. Jadi aku mengharapkan suatu tempat dekat bagian atas permintaan saya lebih di Developer Tools saya untuk mendapatkan pemberitahuan 301 bahwa Facebook telah pindah secara permanen. Sekali lagi, saya tidak akan melihat 301 di layar browser saya. Dan karena itu adalah 301, itu langkah permanen. Browser saya, adalah bahwa itu browser modern, mungkin akan mengarahkan saya untuk Facebook.com pula. Tapi mari kita lihat apa yang terjadi. Dan sekarang aku akan pergi ke thefacebook.com. Dan ya, itu ada tepat di atas. Ini pergi, tapi itu ada. Mari saya gulir ke atas sini. Di sini di atas. Saya membuat permintaan untuk thefacebook.com, dan aku mendapat respon bahwa halaman ini telah pindah secara permanen. Dan kemudian 307 di sini adalah redirect internal. Dan jadi ini adalah apa yang sebenarnya telah pindah saya jauh lebih www.facebook.com akrab. Jadi kode respon ini dilakukan masih terjadi, bahkan jika kita tidak melihat mereka. Aku tidak akan menggambarkan 401, 403, 404, karena Anda mungkin pernah melihat orang-orang di berbagai titik. Dan 500, saya hanya akan menjadi jenis of-- kita akan beruntung jika mendapat 500 karena kita tidak tahu apa server saat ini di mana pun. Tapi kode ini melakukan ada, dan ada jalan untuk mengaksesnya bahkan jika kita tidak melihat mereka secara langsung pada sistem kami. Aku Doug Lloyd. Ini adalah CS50.