TCP/IP (Transmission Control Protocol/Internet Protocol) merupakan salah satu perangkat lunak jaringan komputer (networking software) yang terdapat dalam sistem, dan dipergunakan dalam komunikasi data dalam local area network (LAN) maupun Internet. TCP/IP menjadi satu nama karena fungsinya selalu bergandengan satu sama lain dalam komunikasi data.
TCP/IP merupakan suatu model protokol komunikasi data yang sangat memberikan perubahan besar pada dunia komunikasi dan komputer. Protokol TCP/IP ini dapat memberikan suatu standar yang diakui secara internasional dan digunakan sebagai acuan dalam pengembangan dunia komputer khususnya pada jaringan komputer. Dimana protokol ini dapat memberikan keleluasaan dalam berkomunikasi antara komputer satu dengan komputer lainnya dalam satu jaringan walapun komputer tersebut menggunakan platform sistem operasi yang berbeda. TCP/IP ini mempunyai 5 layer. Berbeda dengan OSI Model yang mempunyai 7 layer. Adapun layer tersebut antara lain Physical Layer, Network Access Layer, Internet Layer, Transport Layer dan Application Layer. Kelima layer tersebut mempunyai fungsi dan tanggung jawabnya masing-masing seperti halnya layer yang ada pada OSI Model tersebut.
Komputer yang terhubung ke internet berkomunikasi dengan protokol ini. Karena menggunakan bahasa yang sama, yaitu protokol TCP/IP, perbedaan jenis komputer dan sistem operasi tidak menjadi masalah. Komputer PC dengan sistem operasi Windows dapat berkomunikasi dengan komputer Sun-SPARC yang menjalankan Solaris. Jadi, jika sebuah komputer menggunakan protokol TCP/IP dan terhubung ke internet, maka komputer tersebut dapat berhubungan langsung dengan komputer lain dibelahan dunia manapun yang juga terhubung dengan internet.
Konsep TCP/IP berawal dari kebutuhan DoD (Departement of Defense) AS akan suatu komunikasi di antara berbagai variasi komputer yang telah ada. Komputer-komputer DoD ini seringkali harus berhubungan antara satu organisasi peneliti dengan organisasi peneliti lainnya, dan harus tetap berhubungan sehingga pertahanan negara tetap berjalan selama terjadi bencana, seperti ledakan nuklir. Oleh karenanya pada tahun 1969 dimulailah penelitian terhadap serangkaian protokol TCP/IP. Di antara tujuan-tujuan penelitian ini adalah sebagai berikut :
- Terciptanya protokol-protokol umum, DoD memerlukan suatu protokol yang dapat ditentukan untuk semua jaringan.
- Meningkatkan efisiensi komunikasi data.
- Dapat dipadukan dengan teknologi WAN (Wide Area Network) yang telah ada.
- Mudah dikonfigurasikan.
Protokol-protokol TCP/IP dikembangkan lebih lanjut pada awal 1980 dan menjadi protokol-protokol standar untuk ARPAnet pada tahun 1983. Protokol-protokol ini mengalami peningkatan popularitas di komunitas pemakai ketika TCP/IP digabungkan menjadi versi 4.2 dari BSD (Berkeley Standard Distribution) UNIX. Versi ini digunakan secara luas pada institusi penelitian dan pendidikan dan digunakan sebagai dasar dari beberapa penerapan UNIX komersial, termasuk SunOS dari Sun dan Ultrix dari Digital. Karena BSD UNIX mendirikan hubungan antara TCP/IP dan sistem operasi UNIX, banyak implementasi UNIX sekarang menggabungkan TCP/IP.
Beberapa Layanan dari TCP/IP
Berikut ini adalah beberapa layanan yang dikerjakan oleh TCP/IP ;
- Pengiriman file (file transfer). File Transfer Protokol (FTP) memungkinkan pengguna komputer yang satu untuk dapat mengirim ataupun menerima file ke komputer jaringan. Karena masalah keamanan data, maka FTP seringkali memerlukan nama pengguna (user name) dan password, meskipun banyak juga FTP yang dapat diakses melalui anonymous, alias tidak berpassword.
- Remote login. Network terminal Protokol (telnet) memungkinkan pengguna komputer dapat melakukan log in ke dalam suatu komputer didalam suatu jaringan. Jadi hal ini berarti bahwa pengguna menggunakan komputernya sebagai perpanjangan tangan dari komputer jaringan tersebut.
- Computer mail. Digunakan untuk menerapkan sistem elektronik mail.
- Network File System (NFS). Pelayanan akses file-file jarak jauh yang memungkinkan klien-klien untuk mengakses file-file pada komputer jaringan jarak jauh walaupun file tersebut disimpan secara lokal.
- Remote execution. Memungkinkan pengguna komputer untuk menjalankan suatu program di dalam komputer yang berbeda. Biasanya berguna jika pengguna menggunakan komputer yang terbatas, sedangkan ia memerlukan sumber yang banyak dalam suatu system komputer. Ada beberapa jenis remote execution, ada yang berupa perintah-perintah dasar saja, yaitu yang dapat dijalankan dalam system komputer yang sama dan ada pula yang menggunakan "prosedure remote call system", yang memungkinkan program untuk memanggil subroutine yang akan dijalankan di system komputer yang berbeda. (sebagai contoh dalam Berkeley UNIX ada perintah "rsh" dan "rexec").
- Name servers. Nama database alamat yang digunakan pada internet.
Arsitektur dalam TCP/IP
Dikarenakan TCP/IP adalah serangkaian protokol di mana setiap protokol melakukan sebagian dari keseluruhan tugas komunikasi jaringan, maka tentulah implementasinya tak lepas dari arsitektur jaringan itu sendiri. Arsitektur rangkaian protokol TCP/IP mendefinisikan berbagai cara agar TCP/IP dapat saling menyesuaikan.
Karena TCP/IP merupakan salah satu lapisan protokol OSI* (Open System Inter-connections), berarti bahwa hierarki TCP/IP merujuk kepada 7 lapisan OSI tersebut. Berikut adalah model referensi OSI 7 lapisan, yang mana setiap lapisan menyediakan tipe khusus pelayanan jaringan :
Application layer | <Lapisan OSI 1> | Application layer |
Presentation layer | <Lapisan OSI 2> | Presentation layer |
Session layer | <Lapisan OSI 3> | Session layer |
Transport layer | <Lapisan OSI 4> | Transport layer |
Network layer | <Lapisan OSI 5> | Network layer |
Data link layer | <Lapisan OSI 6> | Data link layer |
Physical layer | <Lapisan OSI 7> | Physical layer |
Model dengan menggunakan lapisan ini merupakan sebuah konsep yang penting karena suatu fungsi yang rumit yang berkaitan dengan komunikasi dapat dipecahkan menjadi sejumlah unit yang lebih kecil. Tiap lapisan bertugas memberikan layanan tertentu pada lapisan diatasnya dan juga melindungi lapisan diatasnya dari rincian cara pemberian layanan tersebut. Tiap lapisan harus transparan sehingga modifikasi yang dilakukan atasnya tidak akan menyebabkan perubahan pada lapisan yang lain. Lapisan menjalankan perannya dalam pengalihan data dengan mengikuti peraturan yang berlaku untuknya dan hanya berkomunikasi dengan lapisan yang setingkat. Akibatnya sebuah lapisan pada satu sistem tertentu hanya akan berhubungan dengan lapisan yang sama dari sistem yang lain. Proses ini dikenal sebagai Peer process. Dalam keadaan sebenarnya tidak ada data yang langsung dialihkan antar lapisan yang sama dari dua sistem yang berbeda ini. Lapisan atas akan memberikan data dan kendali ke lapisan dibawahnya sampai lapisan yang terendah dicapai. Antara dua lapisan yang berdekatan terdapat "interface" (antarmuka). Interface ini mendifinisikan operasi dan layanan yang diberikan olehnya ke lapisan lebih atas. Tiap lapisan harus melaksanakan sekumpulan fungsi khusus yang dipahami dengan sempurna. Himpunan lapisan dan protokol dikenal sebagai "arsitektur jaringan". Pengendalian komunikasi dalam bentuk lapisan menambah overhead karena tiap lapisan berkomunikasi dengan lawannya melalui "header". Walaupun rumit tetapi fungsi tiap lapisan dapat dibuat dalam bentuk modul sehingga kerumitan dapat ditanggulangi dengan mudah.
Prinsip kerja TCP/IP
Seperti yang telah dikemukakan di atas TCP/IP hanyalah merupakan suatu lapisan protokol (penghubung) antara satu komputer dengan yang lainnya dalam network, meskipun ke dua komputer tersebut memiliki OS yang berbeda. Untuk mengerti lebih jauh marilah kita tinjau pengiriman sebuah email. Dalam pengiriman email ada beberapa prinsip dasar yang harus dilakukan. Pertama, mencakup hal-hal umum berupa siapa yang mengirim email, siapa yang menerima email tersebut serta isi dari email tersebut. Kedua, bagaimana cara agar email tersebut sampai pada tujuannya.Dari konsep ini kita dapat mengetahui bahwa pengirim email memerlukan "perantara" yang memungkinkan emailnya sampai ke tujuan (seperti layaknya pak pos). Dan ini adalah tugas dari TCP/IP. Antara TCP dan IP ada pembagian tugas masing-masing.
TCP merupakan connection-oriented, yang berarti bahwa kedua komputer yang ikut serta dalam pertukaran data harus melakukan hubungan terlebih dulu sebelum pertukaran data (dalam hal ini email) berlangsung. Selain itu TCP juga bertanggung jawab untuk me-nyakinkan bahwa email tersebut sampai ke tujuan, memeriksa kesalahan dan mengirim-kan error ke lapisan atas hanya bila TCP tidak berhasil melakukan hubungan (hal inilah yang membuat TCP sukar untuk dikelabuhi). Jika isi email tersebut terlalu besar untuk satu datagram, TCP akan membaginya kedalam beberapa datagram.
IP bertanggung jawab setelah hubungan berlangsung, tugasnya adalah untuk meroute data packet di dalam network. IP hanya bertugas sebagai kurir dari TCP dalam penyam-paian datagram dan "tidak bertanggung jawab" jika data tersebut tidak sampai dengan utuh (hal ini disebabkan IP tidak memiliki informasi mengenai isi data yang dikirimkan) maka IP akan mengirimkan pesan kesalahan ICMP. Jika hal ini terjadi maka IP hanya akan memberikan pesan kesalahan (error message) kembali ke sumber data. Karena IP "hanya" mengirimkan data "tanpa" mengetahui mana data yang akan disusun berikutnya menyebabkan IP mudah untuk dimodifikasi daerah "sumber dan tujuan" datagram. Hal inilah penyebab banyak paket hilang sebelum sampai kembali ke sumber awalnya.
Kata-kata Datagram dan paket sering dipertukarkan penggunaanya. Secara teknis, datagram adalah kalimat yang digunakan jika kita hendak menggambarkan TCP/IP. Datagram adalah unit dari data, yang tercakup dalam protokol.
ICPM adalah kependekan dari Internet Control Message Protocol yang bertugas memberikan pesan dalam IP. Berikut adalah beberapa pesan potensial sering timbul.
- Destination unreachable, terjadi jika host,jaringan,port atau protokol tertentu tidak dapat dijangkau.
- Time exceded, dimana datagram tidak bisa dikirim karena time to live habis.
- Parameter problem, terjadi kesalahan parameter dan letak oktert dimana kesalahan terdeteksi.
- Source quench, terjadi karena router/host tujuan membuang datagram karena batasan ruang buffer atau karena datagram tidak dapat diproses.
- Redirect, pesan ini memberi saran kepada host asal datagram mengenai router yang lebih tepat untuk menerima datagram tersebut.
- Echo request dan echo reply message, pesan ini saling mempertukarkan data antara host.
UDP memberikan alternatif transport untuk proses yang tidak membutuhkan pengiriman yang handal. Seperti yang telah dibahas sebelumnya, UDP merupakan protokol yang tidak handal, karena tidak menjamin pengiriman data atau perlindungan duplikasi. UDP tidak mengurus masalah penerimaan aliran data dan pembuatan segmen yang sesuai untuk IP.Akibatnya, UDP adalah protokol sederhana yang berjalan dengan kemampuan jauh dibawah TCP. Header UDP tidak mengandung banyak informasi, berikut bentuk headernya;
++++++++++++++++++++++++++++++++++++++
+ Source Port + Destination Port +
++++++++++++++++++++++++++++++++++++++
+ Length + Checksum +
++++++++++++++++++++++++++++++++++++++
- Source port, adalah port asal dimana system mengirimkan datagram.
- Destination port, adalah port tujuan pada host penerima.
- Length, berisikan panjang datagram dan termasuk data.
- Checksum, bersifat optional yang berfungsi utk meyakinkan bahwa data tidak akan mengalami kerusakan (korup).
TCP
Seperti yang telah dibahas sebelumnya, TCP merupakan protokol yang handal dan bertanggung jawab untuk mengirimkan aliran data ke tujuannya secara handal dan berurutan. Untuk memastikan diterimanya data, TCP menggunakan nomor urutan segmen dan acknowlegement (jawaban). Misalkan anda ingin mengirim file berbentuk seperti berikut ;
----------------------------------------------------------
TCP kemudian akan memecah pesan itu menjadi beberapa datagram (untuk melakukan hal ini, TCP tidak mengetahui berapa besar datagram yang bisa ditampung jaringan. Biasanya, TCP akan memberitahukan besarnya datagram yang bisa dibuat, kemudian mengambil nilai yang terkecil darinya, untuk memudahkan).---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
TCP kemudian akan meletakan header di depan setiap datagram tersebut. Header ini biasanya terdiri dari 20 oktet, tetapi yang terpenting adalah oktet ini berisikan sumber dan tujuan “nomor port (port number)” dan “nomor urut (sequence number)”. Nomor port digunakan untuk menjaga data dari banyaknya data yang lalu lalang. Misalkan ada 3 orang yang mengirim file. TCP anda akan mengalokasikan nomor port 1000, 1001, dan 1002 untuk transfer file. Ketika datagram dikirim, nomor port ini menjadi “sumber port (source port)” number untuk masing-masing jenis transfer.Yang perlu diperhatikan yaitu bahwa TCP perlu mengetahui juga port yang dapat digunakan oleh tujuan (dilakukan diawal hubungan). Port ini diletakan pada daerah “tujuan port (destination port)”. Tentu saja jika ada datagram yang kembali, maka source dan destination portnya akan terbalik, dan sejak itu port anda menjadi destination port dan port tujuan menjadi source port.Setiap datagram mempunyai nomor urut (sequence number) masing-masing yang berguna agar datagram tersebut dapat tersusun pada urutan yang benar dan agar tidak ada datagram yang hilang. TCP tidak memberi “nomor” datagram, tetapi pada oktetnya. Jadi jika ada 500 oktet data dalam setiap datagram, datagram yang pertama mungkin akan bernomor urut 0, kedua 500, ketiga 1000, selanjutnya 1500 dan eterusnya. Kemudian semua susunan oktet didalam datagram akan diperiksa keadaannya benar atau salah, dan biasa disebut dengan “checksum”. Hasilnya kemudian diletakan ke header TCP. Yang perlu diperhatikan ialah bahwa checksum ini dilakukan di kedua komputer yang melakukan hubungan. Jika nilai keberadaan susunan oktet antara satu checksum dengan checksum yang lain tidak sama, maka sesuatu yang tidak diinginkan akan terjadi pada datagram tersebut, yaitu gagalnya koneksi. Jadi inilah bentuk datagram tersebut ;
++++++++++++++++++++++++++++++++++++++++++++++++
+ Source Port + Destination port +
++++++++++++++++++++++++++++++++++++++++++++++++
+ Sequence number +
++++++++++++++++++++++++++++++++++++++++++++++++
+ Acknowledenganment number +
++++++++++++++++++++++++++++++++++++++++++++++++
+ Data + |U|A|P|R|S|F| +
+ offset+Reserved |R|C|S|S|Y|I| Window +
+ + |G|K|H|T|N|N| +
++++++++++++++++++++++++++++++++++++++++++++++++
+ Checksum | Urgent pointer +
++++++++++++++++++++++++++++++++++++++++++++++++
+ data anda ------ sampai 500 oktet berikut +
+ ------------ +
Jika kita misalkan TCP header sebagai “T”, maka seluruh file akan berbentuk sebagai berikut :T---- T---- T---- T---- T---- T---- T---- T---- T---- T---- T----
Ada beberapa bagian dari header yang belum kita bahas. Biasanya bagian header ini terlibat sewaktu hubungan berlangsung.- Seperti 'acknowledenganement number' misalnya, yang bertugas untuk menunggu jawaban apakah datagram yang dikirim sudah sampai atau belum. Jika tidak ada jawaban (acknowledenganement) dalam batas waktu tertentu, maka data akan dikirim lagi.
- Window berfungsi untuk mengontrol berapa banyak data yang bisa singgah dalam satu waktu. Jika Window sudah terisi, ia akan segera langsung mengirim data tersebut dan tidak akan menunggu data yang terlambat, karena akan menyebabkan hubungan menjadi lambat.
- Urgent pointer menunjukan nomor urutan oktet menyusul data yang mendesak. Urgent pointer adalah bilangan positif berisi posisi dari nomor urutan pada segmen. Reser-ved selalu berisi nol. Dicadangkan untuk penggunaan mendatang.
- Control bit (samping kanan reserved, baca dari atas ke bawah). Ada enam kontrol bit :
- URG, Saat di set 1 ruang urgent pointer memiliki makna, set 0 diabaikan.
- ACK saat di set ruang acknowledenganement number memiliki arti.
- PSH, memulai fungsi push.
- RST, memaksa hubungan di reset.
- SYN, melakukan sinkronisasi nomor urutan untuk hubungan. Bila diset maka hubungan di buka.
- FIN, hubungan tidak ada lagi.
IP
TCP akan mengirim setiap datagram ke IP dan meminta IP untuk mengirimkannya ke tujuan (tentu saja dengan cara mengirimkan IP alamat tujuan). Inilah tugas IP sebenarnya. IP tidak peduli apa isi dari datagram, atau isi dari TCP header. Tugas IP sangat sederhana, yaitu hanya mengantarkan datagram tersebut sampai tujuan (lihat bahasan sebelumnya). Jika IP melewati suatu gateway, maka ia kemudian akan menambahkan header miliknya. Hal yang penting dari header ini adalah “source address” dan “Destination address”, “protocol number” dan “checksum”. “source address” adalah alamat asal datagram. “Destination address” adalah alamat tujuan datagram (ini penting agar gateway mengetahui ke mana datagram akan pergi). “Protocol number” meminta IP tujuan untuk mengirim datagram ke TCP. Karena meskipun jalannya IP menggunakan TCP, tetapi ada juga protokol tertentu yang dapat menggunakan IP, jadi kita harus memastikan IP menggunakan protokol apa untuk mengirim datagram tersebut. Akhirnya, “checksum” akan meminta IP tujuan untuk meyakinkan bahwa header tidak mengalami kerusakan. Yang perlu dicatat yaitu bahwa TCP dan IP menggunakan checksum yang berbeda.
Berikut inilah tampilan header IP :
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ version + IHL + Type of Service + Total Length +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ identification + Flag + Fragment Offset +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Time to live + Protocol + Header Checksum +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Source Address +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Destination Address +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ TCP header, kemudian data ------- +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Jika kita misalkan IP header sebagai “I”, maka file sekarang akan berbentuk :IT---- IT---- IT---- IT----- IT----- IT----- IT----- IT----Selanjutnya berikut ringkasan mengenai bagian header :
- Total length, merupakan panjang keseluruhan datagram dalam oktet, termasuk header dan data IP.
- Identification, digunakan untuk membantu proses penggabungan kembali pecahan-pecahan dari sebuah datagram.
- Flag,berisi tiga kontrol flag.
- bit 0, dicadangkan, harus 0.
- Bit 1, tidak boleh pecah.
- Bit 2, masih ada fragment lagi.
- Fragment offset, menunjukan posisi fragment di dalam datagram.
- Time to live, menunjukan batas waktu maksimal bagi sebuah datagram untuk berada pada jaringan.
- Option.