Protokol HTTP (HyperText Transfer Protocol) merupakan protokol yang digunakan untuk mengirimkan informasi melalui web. Versi paling mutakhir protokol HTTP adalah HTTP versi 1.1. Protokol ini distandardisasi dan dikembangkan oleh Internet Engineering Task Force (IETF) dan World Wide Web Consortium (W3C).

HTTP merupakan protokol yang berada pada sisi application layer. Untuk detail komunikasi antar jaringan HTTP menyerahkannya pada protokol TCP/IP. Sehingga dalam terminologi jaringan protokol HTTP berjalan diatas TCP, HTTP menggunakan TCP (Transmission Control Protocol ) untuk mengirimkan data dan TCP sendiri berjalan diatas layer IP (Internet Protocol). (Gourley, 2002)

Koneksi HTTP bersifat connectionless dan stateless. Connectionless berarti server tidak selalu menahan koneksi untuk setiap klien, dengan kata lain setelah selesai mengirimkan respon maka server akan langsung menutup koneksi. Kondisi ini menyebabkan HTTP menjadi stateless sehingga server selalu menganggap request yang datang dari klien sebagai request baru meskipun datang dari klien yang sama. Hal ini menyebabkan aplikasi berbasis web perlu mengimplementasikan session yang salah satunya memanfaatkan fitur HTTP Cookie.

Komunikasi antara klien dan server pada protokol HTTP dilakukan dengan menggunakan mode teks bukan dengan format biner. Sehingga hanya dengan utilitas seperti telnet sudah dapat dilakukan komunikasi dengan server. Berikut penulis contohkan bagaimana mengambil halaman utama dari website http://sicyca.stikom.edu/ menggunakan telnet. Penulis menggunakan telnet pada sistem operasi Ubuntu Linux, namun perintah tersebut juga dapat digunakan pada hampir semua sistem operasi.

$ telnet sicyca.stikom.edu 80
Trying 222.124.29.243... 
Connected to sicyca.stikom.edu. 
Escape character is '^]'. 
GET / HTTP/1.1 
Host: sicyca.stikom.edu

HTTP/1.1 200 OK 
Date: Mon, 02 Apr 2012 04:14:01 GMT 
Server: Microsoft-IIS/6.0 
X-Powered-By: ASP.NET 
Content-Length: 1706 
Content-Type: text/html 
Set-Cookie: ASPSESSIONIDSSTRRQRB=LBBNGAJAMMDNMJBNKGDJHOLO; path=/ 
Cache-control: private 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
<head> 
<title>Sicyca >> Sistem Informasi Cyber Campus <<</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
</head> 
[----- cut -----]

Pada perintah diatas penulis menginstruksikan telnet untuk melakukan koneksi ke sicyca.stikom.edu pada port 80 (port umum untuk web server). Setelah koneksi terjadi penulis mengirimkan berturut-turut kombinasi karakter berikut:

  1. GET / HTTP/1.1 diikuti karakter CRLF (Carriage Return & Line Feed, pada keyboard umumnya dinamakan tombol Enter).
  2. Host: sicyca.stikom.edu diikuti dua kali CRLF.
  3. Karena server telah menerima dua kali karakter CRLF (baris kosong) maka server berasumsi header yang dikirimkan klien telah selesai dan waktunya untuk membalas request tersebut berupa HTTP response. Hal tersebut terlihat ketika aplikasi telnet menampilkan string HTTP/1.1 200 OK yang merupakan suatu format HTTP response jika suatu resource tersedia.