
Proyek dikembangkan di 1337 Khouribga Coding School.
Penulis: @jamiafathiya & @achrafelkhnissi & @abellaismail7
HTTP adalah singkatan dari Hypertext Transfer Protocol, yang merupakan protokol yang digunakan untuk mentransfer hypertext. Ini menimbulkan dua pertanyaan: apa itu protokol, dan apa itu hypertext? Dalam konteks ini, protokol adalah sistem aturan yang memungkinkan komunikasi informasi antara entitas yang berbeda, seperti komputer. Hypertext adalah istilah yang sudah ketinggalan zaman untuk teks yang ditampilkan pada layar komputer yang berisi hyperlink ke teks lain, yaitu, dokumen web. Oleh karena itu, protokol transfer hiperteks mengacu pada serangkaian aturan, server, dan browser yang digunakan untuk mentransfer dokumen web bolak -balik.
HTTP memungkinkan sesi, dan status tersimpan dibagi antara browser dan server. Jika seorang pengunjung menjelajahi galeri foto, browser dan server dapat bertukar informasi tentang lokasi pengunjung dalam urutan dengan memberikan informasi bolak -balik dalam bentuk cookie. Ketika halaman dimuat ulang, browser mengirim cookie ke server yang menunjukkan posisi terakhir yang dikunjungi, memungkinkan penonton untuk melanjutkan dari titik itu. Ini berarti bahwa walaupun HTTP tidak memiliki kewarganegaraan, itu tidak tanpa sesi.
| Ketentuan | Definisi |
|---|---|
| Browser | Aplikasi yang digunakan untuk mengakses dan menavigasi antara dokumen HTML. |
| Agen pengguna | Aplikasi yang bertindak atas nama pengguna, biasanya browser. |
| TCP | Pendek untuk protokol kontrol transmisi, salah satu protokol internet utama yang digunakan oleh World Wide Web, email, FTP, dan administrasi jarak jauh. |
| AKU P | Kependekan dari protokol internet. IP digunakan untuk mentransfer data antar komputer melalui jaringan. Setiap perangkat yang terhubung ke internet memiliki alamat IP. |
| Url | Kependekan dari Locator Sumber Daya Seragam, alamat yang menunjuk pada sumber daya di web. |
| DNS | Pendek untuk server nama domain. DNS membuat katalog semua URL nama domain dan mengarahkannya ke alamat IP server. |
| Sumber | File atau file yang tersedia di server saat mengikuti URL. |
| Server | Komputer di internet menjalankan beberapa bentuk aplikasi penyimpanan dan berbagi data, paling umum aplikasi server web. |
| Proxy | Layanan perangkat lunak atau perangkat keras bertindak sebagai orang tengah antara klien dan server. |
| Pasangan permintaan-respons | Klien dan server berkomunikasi melalui HTTP menggunakan pasangan permintaan-respons. Permintaan dikirim, dan tanggapan dikembalikan. |
| Header | Permintaan dan tanggapan menggunakan header HTTP untuk lulus informasi bolak -balik. |
| Metode Permintaan HTTP/kata kerja | Setiap permintaan HTTP berisi metode, juga dikenal sebagai kata kerja, yang menjelaskan tindakan apa yang ingin dilakukan pengirim pada sumber daya (misalnya, dapatkan, put, hapus). |
| Kode Respons Status | Kode numerik dalam rentang 100 hingga 500 yang menggambarkan jenis respons apa yang dikirim kembali ke klien. |
| Cache | Metode untuk menyimpan data pada klien atau server untuk mempercepat kinerja. |
| Tanpa kewarganegaraan | HTTP adalah stateless, yang berarti setiap permintaan dan respons unik, dan tidak ada negara yang disimpan. |
| Kue | Serangkaian data yang diputuskan antara klien dan server untuk membuat sesi stateful. |
| Sidang | Klien dan server dapat berbagi informasi tentang negara dengan memberikan informasi bolak -balik, membuat sesi. |


| Metode | Keterangan | Kesuksesan | Kegagalan |
|---|---|---|---|
| MENDAPATKAN | Dapatkan sumber daya yang ditentukan, jika tersedia | 200 OK | 404 tidak ditemukan |
| POS | Buat sumber daya baru dan tambahkan ke koleksi | 201 dibuat | 401 tidak sah, 409 konflik, 404 tidak ditemukan |
| MELETAKKAN | Perbarui berbasis sumber daya singleton yang ada | 200 OK | 401 tidak sah, 404 tidak ditemukan, metode 405 tidak diizinkan |
| Tambalan | Ubah Singleton Sumber berbasis atau ID yang ada | 200 OK | 401 tidak sah, 404 tidak ditemukan, metode 405 tidak diizinkan |
| MENGHAPUS | Hapus Sumber Sumber Daya Sinar atau ID (Anda tidak dapat menghapus kumpulan sumber daya) | 200 OK | 401 tidak sah, 404 tidak ditemukan |
| PILIHAN | Dapatkan opsi yang tersedia dari sumber ini | 200 OK | - |
| KEPALA | Dapatkan header respons dari sumber daya | 200 OK | 404 tidak ditemukan |
Bagian ini mencakup deskripsi fungsi yang diperlukan untuk membuat server web.
int getaddrinfo ( const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res); node : Nama host atau alamat IP server.
node NULL , alamat IP host lokal digunakan. service : Nomor port server.
service NULL , nomor port default untuk layanan yang diminta dalam hints digunakan. hints : Pointer ke struct addrinfo yang menentukan kriteria untuk memilih struktur alamat soket yang dikembalikan dalam daftar yang ditunjukkan oleh res .
hints NULL , maka daftar yang dikembalikan mencakup alamat soket untuk semua jenis soket, untuk semua keluarga protokol yang didukung oleh keluarga alamat dari simpul yang ditentukan, dan untuk alamat host lokal.struct addrinfo berikut ini digunakan:ai_family : Alamat keluarga. Konstanta berikut didefinisikan untuk bidang ai_family :AF_INET : Protokol Internet IPv4AF_INET6 : Protokol Internet IPv6AF_UNIX : komunikasi lokalAF_UNSPEC : tidak ditentukanai_socktype : Jenis soket. Konstanta berikut didefinisikan untuk bidang ai_socktype :SOCK_STREAM : Menyediakan aliran byte berbasis koneksi yang berurutan, andal, dua arah,. Mekanisme transmisi data out-of-band dapat didukung.SOCK_DGRAM : mendukung datagram (pesan tanpa koneksi, tidak dapat diandalkan dari panjang maksimum tetap).SOCK_RAW : Menyediakan akses protokol jaringan mentah.SOCK_RDM : Menyediakan lapisan datagram yang andal yang tidak menjamin pemesanan.SOCK_SEQPACKET : Menyediakan lapisan paket berurutan yang tidak menjamin pemesanan.ai_protocol : Protokol untuk soket. Konstanta berikut didefinisikan untuk bidang ai_protocol :IPPROTO_TCP : Protokol Kontrol TransmisiIPPROTO_UDP : Protokol Datagram PenggunaIPPROTO_RAW : antarmuka protokol mentahIPPROTO_IP : Protokol InternetIPPROTO_ICMP : Protokol Pesan Kontrol InternetIPPROTO_IGMP : Protokol Manajemen Grup InternetIPPROTO_IPV4 : Versi Protokol Internet 4IPPROTO_IPV6 : Protokol Internet Versi 6 res : Pointer ke daftar tertaut dari satu atau lebih struktur struct addrinfo yang berisi informasi respons tentang host.
Nilai pengembalian: Pada kesuksesan, nol dikembalikan. Pada kesalahan, -1 dikembalikan, dan errno diatur dengan tepat.
struct addrinfo :
struct addrinfo {
int ai_flags; // input flags
int ai_family; // socket protocol family
int ai_socktype; // socket type
int ai_protocol; // protocol for socket
socklen_t ai_addrlen; // socket address length
struct sockaddr *ai_addr; // socket address
char * ai_canonname; // service name
struct addrinfo *ai_next; // next item in the list
}; int socket ( int domain, int type, int protocol);domain : Domain komunikasi, yang menentukan semantik komunikasi dan keluarga protokol yang akan digunakan. Konstanta berikut didefinisikan untuk argumen domain :AF_INET : Protokol Internet IPv4AF_INET6 : Protokol Internet IPv6AF_UNIX : komunikasi lokalAF_UNSPEC : tidak ditentukantype : Semantik komunikasi. Konstanta berikut didefinisikan untuk argumen type :SOCK_STREAM : Menyediakan aliran byte berbasis koneksi yang berurutan, andal, dua arah,. Mekanisme transmisi data out-of-band dapat didukung.SOCK_DGRAM : mendukung datagram (pesan tanpa koneksi, tidak dapat diandalkan dari panjang maksimum tetap).SOCK_RAW : Menyediakan akses protokol jaringan mentah.SOCK_RDM : Menyediakan lapisan datagram yang andal yang tidak menjamin pemesanan.SOCK_SEQPACKET : Menyediakan lapisan paket berurutan yang tidak menjamin pemesanan.protocol : Protokol yang akan digunakan dengan soket. Biasanya hanya satu protokol yang ada untuk mendukung jenis soket tertentu dalam keluarga protokol yang diberikan, dalam hal ini protocol dapat ditentukan sebagai 0. Konstanta berikut didefinisikan untuk argumen protocol :IPPROTO_TCP : Protokol Kontrol TransmisiIPPROTO_UDP : Protokol Datagram PenggunaIPPROTO_SCTP : Protokol transmisi kontrol aliranIPPROTO_TIPC : komunikasi antar proses transparanIPPROTO_RAW : Paket IP mentaherrno diatur dengan tepat. int bind ( int sockfd, const struct sockaddr *addr, socklen_t addrlen);sockfd : Deskriptor file soket yang akan diikat.addr : Pointer ke struktur sockaddr yang berisi alamat yang akan terikat pada soket. Panjang dan format alamat tergantung pada keluarga alamat soket.addrlen : Ukuran, dalam byte, dari struktur alamat yang ditunjukkan oleh argumen addr .errno diatur dengan tepat. int listen ( int sockfd, int backlog);sockfd : Deskriptor file soket yang akan didengarkan.backlog : Panjang maksimum yang mana antrian koneksi yang tertunda untuk sockfd dapat tumbuh.errno diatur dengan tepat. int accept ( int sockfd, struct sockaddr *addr, socklen_t *addrlen);sockfd : Deskriptor file soket yang akan diterima.addr : Pointer ke struktur sockaddr . Struktur ini diisi dengan alamat soket sebaya, seperti yang diketahui oleh lapisan komunikasi. Format yang tepat dari alamat yang dikembalikan addr ditentukan oleh keluarga alamat soket. Ketika alamat yang dikembalikan terlalu panjang untuk dimuat dalam struktur sockaddr yang disediakan, alamatnya terpotong.addrlen : Pointer ke objek socklen_t yang pada input menentukan panjang struktur sockaddr yang disediakan, dan pada output menentukan panjang alamat yang disimpan.errno diatur dengan tepat. ssize_t recv ( int sockfd, void *buf, size_t len, int flags);sockfd : Deskriptor file soket yang akan diterima.buf : Pointer ke buffer di mana pesan harus disimpan.len : Panjang byte buffer yang ditunjuk oleh argumen buf .flags : Menentukan jenis penerimaan pesan. Nilai dibentuk dengan secara logis atau nol atau lebih dari nilai -nilai berikut:MSG_OOB : Proses data out-of-band.MSG_PEEK : Mengintip pesan yang masuk.MSG_WAITALL : tunggu permintaan penuh, kecuali soketnya tidak blokir.MSG_DONTWAIT : memungkinkan operasi nonblocking; Jika operasi akan diblokir, panggilan gagal dengan kesalahan EAGAIN atau EWOULDBLOCK .MSG_NOSIGNAL : Jangan menghasilkan SIGPIPE saat menulis ke pipa tanpa ada yang membacanya.recv() mengembalikan 0. pada kesalahan, -1 dikembalikan, dan errno diatur dengan tepat. ssize_t send ( int sockfd, const void *buf, size_t len, int flags);sockfd : Deskriptor file soket yang akan dikirim.buf : Pointer ke buffer yang berisi pesan yang akan dikirim.len : Panjang dalam byte pesan yang ditunjukkan oleh argumen buf .MSG_OOB : Proses data out-of-band.MSG_DONTROUTE : routing bypass, gunakan antarmuka langsung.MSG_DONTWAIT : memungkinkan operasi nonblocking; Jika operasi akan diblokir, panggilan gagal dengan kesalahan EAGAIN atau EWOULDBLOCK .MSG_NOSIGNAL : Jangan menghasilkan SIGPIPE saat menulis ke pipa tanpa ada yang membacanya.errno diatur dengan tepat. Umum
Permintaan HTTP
Respons http
CGI
Pengujian stres