Jumat, 13 Juli 2012

TCP/IP



Memahami tentang protokol jaringan, seperti halnya dua orang yang berlainan bangsa, maka untuk berkomunikasi memerlukan penerjemah/interpreter atau satu bahasa yang dimengerti kedua belah pihak. Dalam dunia komputer dan telekomunikasi interpreter identik dengan protokol. TCP/IP (Transmission Control Protocol/Internet Protocol) merupakan salah satu jenis protokol jaringan yang dapat memberikan keleluasaan dalam berkomunikasi antara satu komputer dengan komputer lainnya dalam satu jaringan walaupun platform yang digunakan pada komputer-komputer tersebut berbeda satu sama lain. 

Seperti skenario berikut ini: jika "komputer A" mengirim suatu paket ke "komputer B", IP (Internet Protocol) dari kedua komputer berada didalam IP-header dari paket tersebut, yaitu IP tujuan (dari komputer B) dan IP sumber (dari komputer A). Router yang berada diantara kedua host akan memeriksa IP-header tersebut dan melakukan masquerade paket tersebut ke segment berikutnya. Jika terjadi kesalahan dalam pengiriman tersebut, contohnya host tujuan tidak dapat dicapai, suatu ICMP (Internet Control Message Protocol) digunakan untuk mengirim pesan kesalahan sehingga kesalahan tersebut dapat diperbaiki (dan paket tersebut harus dikirim ulang).

Terkait dengan skenario pengiriman paket tersebut, beberapa protokol yang terlibat adalah IP dan ICMP. Berdasarkan hal itu akan dibahas mengenai peran aktif  IP dan ICMP yang terdapat pada protokol TCP/IP dalam hal pengiriman paket dari source ke destination. Selain itu juga dibahas tentang cara kerja masing-masing protokol ini serta hubungannya terkait proses pengiriman yang dimaksud di atas.

TCP/IP (Transmission Control Protocol/Internet Protocol


TCP/IP merupakan protokol yang melandasi internet dan jaringan dunia atau dengan kata lain kumpulan dari protokol-protokol yang digunakan untuk mengatur komunikasi data di dalam jaringan internet.  TCP/IP terdiri dari berbagai protokol yang masing-masing bertanggung jawab atas bagian-bagian tertentu pada proses komunikasi data, dimana protokol yang satu tidak perlu mengetahui cara kerja protokol yang lain, sepanjang bisa menerima dan mengirim data. 

TCP/IP digunakan untuk komunikasi antar komputer yang berada pada tempat yang jauh atau komunikasi data Wide Area Network (WAN). Semua komputer yang berhubungan dengan internet akan berkomunikasi dengan menggunakan protokol ini. Penggunaan protokol ini dapat menghubungkan berbagai jenis komputer dengan sistem operasi komputer yang berbeda antara komputer satu dengan yang lain.

Aspek lain yang penting dari TCP/IP adalah membentuk suatu standarisasi dalam komunikasi. Tiap-tiap bentuk fisik suatu jaringan memiliki teknologi yang berbeda-beda, sehingga diperlukan pemrograman atau fungsi khusus untuk digunakan dalam komunikasi. TCP/IP memberikan fasilitas khusus yang bekerja di atas pemrograman atau fungsi khusus tersebut dari masing-masing fisik jaringan. Sehingga bentuk arsitektur dari fisik jaringan akan tersamarkan dari pengguna dan pembuat aplikasi jaringan. Dengan TCP/IP, pengguna tidak perlu lagi memikirkan bentuk fisik jaringan untuk melakukan sebuah komunikasi.

Sebagai contoh pada Gambar dibawah, untuk dapat berkomunikasi antar 2 (dua) jaringan, diperlukan komputer yang terhubung dalam suatu perangkat yang dapat meneruskan suatu paket data dari jaringan yang satu ke jaringan yang lain. Perangkat tersebut disebut Router. Selain itu router juga digunakan sebagai pengarah jalur (routing).

Cara Kerja TCP/IP

Memecahkan masalah pengiriman data ke dalam bentuk masalah yang lebih kecil merupakan tujuan dari penggunaan TCP/IP. Ide pembuatan protokol ini sama dengan ide pada pemrograman, yaitu masalah yang besar akan dipecahkan dengan cara memecah masalah tersebut menjadi masalah yang kecil. TCP/IP ini dapat diibaratkan sebagai protokol kenegaraan yang membagi tugasnya masing-masing dari penerimaan tamu hingga kepulangannya dan daftar acara yang disusun harus melalui protokol resmi. Begitu pula dengan TCP/IP membagi tugas masing-masing protokol menjadi beberapa bagian yang tiap bagiannya mempunyai tugas sendiri-sendiri, namun kesemua bagian tersebut harus selalu bekerja sama satu dengan yang lainnya dan tiap-tiap protokol tidak harus saling mempengaruhi protokol yang lain. Karena pekerjaan protokol ini harus selesai dengan baik dan tepat, maka setelah tugas-tugasnya selesai akan dilanjutkan oleh protokol berikutnya dengan tugas yang lain.

Berdasarkan hal tersebut, maka secara umum cara kerja TCP/IP adalah layer-layer dan protokol yang terdapat dalam arsitektur jaringan TCP/IP menggambarkan fungsi-fungsi dalam komunikasi antara dua buah komputer. Setiap lapisan menerima data dari lapisan di atas atau dibawahnya, kemudian memproses data tersebut sesuai fungsi protokol yang dimilikinya dan meneruskannya ke lapisan berikutnya. Ketika dua komputer berkomunikasi, terjadi aliran data antara pengirim dan penerima melalui lapisan-lapisan di atas. Pada pengirim, aliran data adalah dari atas ke bawah.

Layer pada TCP/IP

TCP/IP dibentuk dalam beberapa lapisan (layer). Dengan dibentuk dalam layer atau lapisan, akan mempermudah untuk pengembangan dan pengimplementasiannya. Antar layer dapat berkomunikasi ke atas maupun ke bawah dengan suatu penghubung interface. Tiap-tiap layer memiliki fungsi dan kegunaan yang berbeda dan saling mendukung layer diatasnya. Pada protokol TCP/IP dibagi menjadi 4 layer seperti ditunjukkan pada Gambar 2. Terkait dengan topik pembahasan pada makalah ini, maka selanjutnya hanya akan dibahas tentang Internetwork layer (lapisan internet).

Layer Internet TCP/IP


Layer atau lapisan ini berfungsi untuk menentukan rute yang dilalui oleh data. Layer ini menyediakan logical addressing (pengalamatan logika) dan path determination (penentuan rute tujuan).  Internetwork Layer mendefinisikan bagaimana hubungan dapat terjadi antara dua pihak yang berada pada jaringan yang berbeda seperti Network Layer pada OSI. Pada jaringan Internet yang terdiri atas puluhan juta host dan ratusan ribu jaringan lokal, lapisan ini bertugas untuk menjamin agar suatu paket yang dikirimkan dapat menemukan tujuannya dimana pun berada. Oleh karena itu, lapisan ini memiliki peranan penting terutama dalam mewujudkan internetworking yang meliputi wilayah luas. Beberapa tugas penting pada lapisan ini adalah:

  1. Addressing, yakni melengkapi setiap datagram dengan alamat Internet dari tujuan. Alamat pada protokol inilah yang dikenal dengan Internet Protocol Address (IP Address). Karena pengalamatan (addressing) pada jaringan TCP/IP berada pada level ini (software), maka jaringan TCP/IP independen pada jenis media dan komputer yang digunakan.
  2. Routing, yakni menentukan ke mana datagram akan dikirim agar mencapai tujuan yang diinginkan. Fungsi ini merupakan fungsi terpenting dari Internet Protocol (IP). Sebagai protokol yang bersifat connectionless, proses routing sepenuhnya ditentukan oleh jaringan. Pengirim tidak memiliki kendali terhadap paket yang dikirimkannya untuk bisa mencapai tujuan. Router-router pada jaringan TCP/IP lah yang sangat menentukan dalam penyampaian datagram dari penerima ke tujuan.

Terdapat beberapa protokol yang bertanggung jawab dalam proses pengiriman paket ke alamat yang tepat seperti ditunjukkan pada Gambar dibawah antara lain:

  1. IP (Internet Protocol)  : untuk transmisi paket data (mengirimkan data ke alamat yang dituju).
  2. ICMP (Internet Connection Message Protocol) : untuk informasi kondisi jaringan, contoh: ping, traceroute.
  3. ARP (Address Resolution Protocol) : untuk mendapatkan informasi MAC Address dari IP yang diketahui.
  4. RARP (Reserve ARP): untuk mendapatkan informasi IP dari MAC Address yang diketahui.

IP (Internet Protocol)

Protokol Internet (Internet Protocol / IP) adalah protokol lapisan jaringan (network layer dalam OSI Reference Model) atau protokol lapisan internetwork (internetwork layer dalam DARPA Reference Model) yang digunakan oleh protokol TCP/IP untuk melakukan pengalamatan dan routing paket data antar host-host di jaringan komputer berbasis TCP/IP. Versi IP yang banyak digunakan adalah IP versi 4 (IPv4) dan digantikan oleh IP versi 6 (dibahas ditulisan lain).

IP (Internet Protocol) berfungsi untuk mengirimkan data ke alamat yang dituju secara tepat, namun IP tidak menjamin data sampai dengan selamat ke tempat tujuan. IP hanya akan menjalankan tugasnya dengan sebaik-baiknya agar data sampai ke tempat tujuannya. Apabila pada pertengahan jalan data yang dikirim mengalami hal-hal yang tidak diharapkan, seperti komputer pada tempat tujuan sedang tidak aktif atau  dimatikan dan jalur pengiriman terputus, maka protokol IP hanya akan memberitahukan kepada ICMP bahwa telah terjadi masalah dalam pengiriman data ke tempat tujuan. 

Dalam IP antara pengirim dengan penerima tidak mengadakan perjanjian terlebih dahulu untuk pengiriman data. Setiap paket data yang dikirim adalah independen terhadap paket data yang lain (datagram delivery service). Hal ini dapat menyebabkan jalur yang ditempuh oleh masing-masing paket data IP ke tujuannya bisa jadi berbeda satu dengan yang lainnya karena jalur yang ditempuh berbeda, kedatangan paket pun bisa jadi tidak berurutan. 

IP memberikan fungsi routing pada jaringan dalam pengiriman data. IP (Internet Protocol) melihat alamat dari tiap paket kemudian dengan menggunakan routing table menentukan kemana selanjutnya paket itu dikirim melalui jalur terbaik. Sebuah paket IP akan membawa data aktual yang dikirimkan melalui jaringan dari satu titik ke titik lainnya. Metode yang digunakannya adalah connectionless yang berarti ia tidak perlu membuat dan menjaga sebuah koneksi tetap ada. Selain itu, protokol ini juga tidak menjamin penyampaian data (unreliable), tapi hal ini diserahkan kepada protokol pada lapisan yang lebih tinggi (lapisan transport). Cara kerja protokol IP dapat dianalogikan seperti ditunjukkan pada Gambar berikut ini. 

Datagram IP

Jika dianalogikan prinsip kerja dari IP kira-kira seperti cara kerja kantor pos pada proses pengiriman surat. Surat yang dimasukan pengirim ke kotak pos akan diambil oleh petugas pos dan kemudian akan dikirim melalui route yang random, dimana si pengirim maupun si penerima surat tidak mengetahui jalur perjalanan surat tersebut. Juga jika pengirim mengirimkan dua surat yang ditujukan pada alamat yang sama pada hari yang sama, belum tentu akan sampai bersamaan karena mungkin surat yang satu akan mengambil route yang berbeda dengan surat yang lain. Di samping itu, tidak ada jaminan bahwa surat akan sampai ditangan tujuan, kecuali jika pengirim mengirimkannya menggunakan surat tercatat. Prinsip di atas digunakan oleh Internet Protokol, dimana “surat” diatas dikenal dengan sebutan datagram.

IP mengirimkan paket-paket data dalam bentuk datagram, dimana format-nya dapat dilihat pada Gambar dibawah. Sebuah datagram IP terdiri atas header IP dan muatan IP (payload). Header IP menyediakan dukungan untuk memetakan jaringan (routing), identifikasi muatan IP, ukuran header IP dan datagram IP, dukungan fragmentasi, dan juga IP Options. Sedangkan payload atau muatan IP berisi informasi data yang dikirimkan. Sebelum dikirimkan di dalam saluran jaringan, datagram IP akan “dibungkus” (encapsulation) dengan header protokol lapisan antarmuka jaringan dan trailer-nya, untuk membuat sebuah frame jaringan.
 
Setiap datagram terdiri dari beberapa field yang memiliki fungsi tersendiri dan memiliki informasi yang berbeda-beda. Gambar dibawah menunjukkan struktur header IP untuk versi 4 dan 6, dimana terdapat perbedaan antara keduanya namun tidak akan diuraikan pada pembahasan ini. Karena informasi yang disampaikan dalam pembahasan ini hanya terkait tentang prinsip kerja protokol IP yang melakukan pengiriman paket data dalam bentuk datagram

Fragmentasi

Dalam perjalanannya menuju tujuan, paket data akan melewati berbagai macam interface yang berbeda. Dimana masing-masing interface memiliki kemampuan yang berbeda untuk mengirimkan frame data. Kemampuan ini disebut Maximum Transfer Unit (MTU). Batas maksimum data dapat ditempatkan dalam 1 frame. IP dapat memisahkan atau memecahkan data yang terkirim menjadi sebesar MTU. Proses pemisahan ini disebut fragmentasi (fragmentation).

Fragmentasi IP terjadi ketika sebuah host sumber atau router harus mentransmisikan sebuah datagram IP dalam sebuah saluran jaringan di mana nilai Maximum transmission unit (MTU) yang dimilikinya lebih kecil dibandingkan ukuran datagram IP, datagram IP yang akan ditransmisikan tersebut harus dipecah ke dalam beberapa fragmen.

Router atau host yang mengirimkan data akan memecah data yang hendak ditransmisikan, dan proses fragmentasi dapat berlangsung beberapa kali. Selanjutnya host yang dituju akan menyatukan kembali fragmen-fragmen itu seperti halnya sebelum dipecah. Dapat diperluas dengan menggunakan fitur IP Options dalam header IPv4. Fitur yang dapat ditambahkan contohnya adalah kemampuan untuk menentukan jalur yang harus diikuti oleh datagram IP melalui sebuah internetwork IP.
Field-field dalam header IP yang berguna untuk fragmentasi terdiri dari tiga buah field. Field-field  tersebut berguna untuk menunjukkan apakah sebuah datagram IP harus difragmentasi atau tidak, yaitu:

1. Field identification

Digunakan untuk mengelompokkan semua fragmen dari sebuah datagram IP dalam sebuah kelompok. Host pengirim akan mengeset nilai field ini, dan nilai ini tidak akan beruba selama proses fragmentasi berlangsung. Field ini selalu diset (memiliki nilai) meskipun datagram IP tidak boleh diset dengan menggunakan bit flag Dont Fragment (DF).

2. Field Flag 

yang memiliki dua buah nilai:

  1. Don't fragment (DF): Flag ini akan diset ke nilai "0" untuk mengizinkan fragmentasi dilakukan, atau nilai "1" untuk mencegah fragmentasi dilakukan terhadap datagram IP. Dengan kata lain, fragmentasi akan terjadi jika flag DF ini bernilai "0". Jika fragmentasi dibutuhkan untuk meneruskan datagram IP (akibat ukuran datagram IP yang lebih besar dibandingkan dengan ukuran maximum transmission unit (MTU)) dan flag DF ini diset ke nilai "1", maka router akan mengirimkan pesan "ICMP Destination Unreachable-Fragmentation Needed And DF Set" kepada host pengirim, sebelum router tersebut akan mengabaikan datagram IP tersebut.
  2. More Fragments (MF): Flag ini akan diset ke nilai "0" jika tidak ada fragmen lainnya yang mengikuti fragmen yang bersangkutan (berarti tanda bahwa fragmen tersebut merupakan fragmen terakhir), atau diset ke nilai "1" jika ada tambahan fragmen yang mengikuti fragmen tersebut (berarti tanda bahwa fragmen tersebut bukanlah fragmen terakhir).

3. Field Fragment Offset

Field ini akan diset untuk mengindikasikan posisi fragmen yang bersangkutan terhadap muatan IP yang belum difragmentasikan. Field ini akan digunakan untuk mengurutkan kembali semua fragmen pada saat proses penyatuan kembali menjadi sebuah datagram IP yang utuh di pihak penerima. Ukurannya adalah 13 bit, sehingga mendukung nilai hingga 8191 saja. Mengingat ukuran muatan IP terbesar adalah 65515 byte (216-20), sedangkan ukuran field ini adalah 13 bit, maka field ini tidak dapat digunakan untuk mengindikasikan byte offset. Karenanya setiap nilai field fragment offset harus merepresentasikan nilai 3 bit. Dengan demikian, field Fragment Offset pun dapat didefinisikan dalam blok-blok berukuran 8 byte yang disebut sebagai Fragment block.

Selama fragmentasi dilakukan, muatan IP akan dipecah ke dalam fragmen-fragmen dengan menggunakan batasan 8 byte dan nilai maksimum fragment block (8 byte) diletakkan pada setiap fragmen. Field Fragment Offset pun diset untuk mengindikasikan permulaan fragment block untuk fragmen tersebut dibandingkan dengan muatan IP yang belum difragmentasi.

Setiap fragmen yang difragmentasi oleh router, header IP akan disalin dan beberapa field berikut  ini akan diubah selama fragmentasi oleh router antara lain:
  1. Header length: Bisa berubah atau tidak bergantung pada keberadaan IP Options, dan juga apakah IP Options tersebut disalin ke semua fragmen atau hanya fragmen pertama saja.
  2. Time-to-Live (TTL): selalu dikurangi 1.
  3. Total Length: Diubah untuk merefleksikan perubahan pada header IP yang baru dan tentunya muatan IP yang baru.
  4. Flag More Fragment akan diset ke angka 1 untuk fragmen pertama atau fragmen pertengahan, atau nilai 0 untuk fragmen terakhir.
  5. Fragment Offset: Diset untuk mengindikasikan posisi fragmen di dalam fragment block relatif terhadap muatan IP yang belum difragmentasi.
  6. Header Checksum: dihitung ulang berdasarkan field yang berubah di dalam header IP.
  7. Field "identification": tidak berubah untuk setiap fragmen.

Pengalamatan IP

Berdasarkan Gambar diatas dapat dilihat bahwa Header IP mengandung informasi yang dibutuhkan untuk menentukan rute paket data yang harus dilalui oleh paket data, yang mencakup alamat IP sumber (source IP address) dan alamat IP tujuan (destination IP address). Anatomi alamat IP terbagi menjadi dua bagian, yakni alamat jaringan (network address) dan alamat node (node address/host address). Penyampaian paket antar jaringan (umumnya disebut sebagai proses routing), dimungkinkan karena adanya alamat jaringan tujuan dalam alamat IP.

Dalam membantu pencapaian pengiriman paket data ke komputer tujuan, maka IP menggunakan skema pengalamatannya sendiri yang disebut sebagai “IP address”.  IP address ini digunakan untuk melaksanakan proses routing paket data ke network yang sesuai. Setiap komputer dalam jaringan TCP/IP harus diberikan IP address. Alamat IP merupakan alamat yang ditetapkan untuk sebuah komputer yang berpartisipasi dalam jaringan komputer dengan memanfaatkan IP untuk komunikasi antar node-nya. Biasanya berupa deretan angka biner antara 32-bit (untuk IPv4) sampai 128-bit (untuk IPv6) yang dipakai sebagai alamat identifikasi untuk tiap komputer host dalam jaringan internet. Walaupun alamat IP disimpan sebagai angka biner, mereka biasanya ditampilkan agar memudahkan manusia menggunakan notasi, seperti 208.77.188.166 (untuk IPv4), dan 2001: db8: 0:1234:0:567:1:1 (untuk IPv6).

Pemberian alamat logikal IPv4 pada suatu network menggunakan pengalamatan 32 bit yang berarti 4 oktet. Gambar dibawah merupakan gambaran pemberian alamat pada setiap interface perangkat (termasuk router) :

Selain bertugas untuk pengalamatan, Internet Protocol juga memiliki tugas routing paket data antara jaringan, alamat IP dan menentukan lokasi dari node sumber dan node tujuan dalam topologi dari sistem routing. Untuk tujuan ini, beberapa bit pada alamat IP yang digunakan untuk menunjuk sebuah subnetwork. Jumlah bit ini ditunjukkan dalam notasi CIDR, yang ditambahkan ke alamat IP, misalnya, 208.77.188.166/24.

Dalam aliran paket, host hanya mengetahui alamat yang ada pada area lokalnya saja. Jika alamat tujuan tidak ada di area lokalnya, dia akan mengoper paket tersebut ke default gateway jaringannya (biasanya berupa interface router). Sesampainya di router, alamat tujuan akan diperiksa. Dalam router terdapat routing table yang merupakan daftar jalur yang dimilikinya. Table routing digunakan untuk  menentukan arah dari berbagai direct route dapat dilihat dari list akan interface. Sedangkan untuk list jaringan dan gatewaynya dapat dikonfigurasi kemudian. List tersebut digunakan untuk fasilitas IP routing. Informasi tersebut disimpan dalam suatu tabel yang disebut tabel arah (Routing Table).

Router adalah satu-satunya jalan agar network kita bisa berkomunikasi dengan network lainnya seperti ditunjukkan pada Gambar 8. Router merupakan alat yang berfungsi sebagai gateway yang menghubungkan 1 network ke network lainnya. Perlu diingat bahwa tanpa router, perangkat-perangkat hanya bisa berkomunikasi dalam area lokal (LAN) masing-masing. Selain itu membagi sebuah network yang besar menjadi beberapa sub-network. Ini disebut subnetting.

2 komentar: