Sabtu, 27 September 2014

TCP / IP


Udah lama nih ga nyatet pelajaran di blog ini.. Coret coret dikit tentang TCP / IP yuk. Aku nyontek dari berbagai ebook. Dari ebooknya Pak Melwin Syafrizal, dari http://opensource.telkomspeedy.com/ juga.

Sedikit ya tentang TCP / IP
TCP / IP merupakan pengetahuan dasar bagi seorang administrator jaringan. Banyak orang yang mengesampingkan pentingnya mempelajari TCP / IP. Padahal TCP / IP adalah awal dari segala hal tentang jaringan komputer.

Langsung saja ke pembahasan.

1. Apa yang dimaksud dengan TCP / IP
TCP / IP adalah sekumpulan protokol yang terdapat dalam jaringan komputer yang digunakan untuk pertukaran data antar komputer. Digunakan juga sebagai protokol standar pada jaringan internet yang menghubungkan banyak komputer yang berbeda dengan jenis mesin maupun sistem operasinya.

2. Arsitektur dan Protokol Jaringan TCP / IP
Dalam arsitektur jaringan komputer terdapat suatu lapisan-lapisan (layer) yang memiiliki tugas spesifik serta nmemiliki protokol tersendiri. ISO (International Standard Organization) telah mengeluarkan suatu standar untuk arsitektur jaringan komputer yang dikenal dengan nama Open System Interconnection (OSI). Standar tersebut terdiri dari 7 lapisan yang menjalankan fungsi komunikasi antara 2 komputer. Dalam TCP / IP hanya terdapat 5 lapisan sbb.
 
OSI TCP / IP
Application Layer Application Layer
Presentation Layer
Session Layer
Transport Layer Transport Layer
Network layer Internet Layer
Data Link Layer Network Access Layer
Physical Layer Physical Layer


Walaupun jumlahnya berbeda namun semua fungsi dari lapisan lapisan OSI telah tercakup oleh arsitektur TCP /IP. Rincian masing masing layer arsitektur TCP /IP adalah sebagai berikut:

Physical Layer merupakan lapisan terbawah yang mendefinisikan besaran fisik seperti media komunikasi, tegangan, arus, dsb. Lapisan ini dapat bervariasi bergantung pada media komunikasi pada jaringan yang bersangkutan. TCP / IP bersifat fleksibel sehingga dapat mengintegralkan berbagai jaringan dengan media fisik yang berbeda.

Network Access Layer mempunyai fungsi serupa dengan data link layer pada OSI. Lapisan ini mengatur penyaluran data frame pada media fisik yang digunakan secara handal. Lapisan ini biasanya memberikan servis untuk deteksi dan koreksi kesalahan dari data yang ditransmisikan.

Internet 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 dimanapun berada. Beberapa tugas penting dari layer ini adalah:
  • Addressing yaitu 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 dari jenis media dan komputer yang digunakan
  • Routing yaitu menentukan kemana 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
Transport Layer mendefinisikan cara cara untuk melakukan pengiriman data antara end to end host secara handal. Lapisan ini menjamin bahwa informasi yang diterima pada sisi penerima adalah sama dengan informasi yang dikirimkan pada pengirim., Untuk itu, lapisan ini memiliki beberapa fungsi penting antara lain
  • Flow Control. Pengiriman data yang telah dipecah menjadi paket paket harus diatur sedemikian rupa agar pengirim tidak sampai mengirimkan data dengan kecepatan yang melebihi kemampuan penerima dalam menerima data.
  • Error Detection. Pengirim dan penerima juga melengkapi data dengen sejumlah informasi yang bisa digunakan untuk memeriksa data yang dikirimkan bebas dari kesalahan. Jika ditemukan kesalahan pada paket data yang diterima, maka penerima tidak akan menerima data tersebut., Pengirim akan mengirim ulang paket data yang mengandung kesalahan tadi dan delay akan terjadi.

Pada TCP/IP, protokol yang digunakan adalah Transmission Control Protocol (TCP) atau User Datagram Protocol (UDP) . TCP dipakai untuk aplikasi-aplikasi yang membutuhkan keutuhan data, sedangkan UDP digunakan untuk aplikasi yang membutuhkan panjang paket yang pendek dan tidak menuntut keutuhan data yang tinggi. TCP memilki fungsi flow control dan error dettection dan bersifat connection oriented. Sebaliknya pada UDP yang bersifat connectionless tidak ada mekanisme pemeriksaan data dan flow control. Untuk beberapa hal yang menyangkut efisiensi dan penyederhanaan , beberapa aplikasi memilih menggunakan UDP sebagai protokol. Contoh: Video Streaming.

Application Layer merupakan lapisan terakhir dalam arsitektur TCP/IP yang berfungsi mendefinisikan aplikasi-aplikasi yang dijalankan pada jaringan. Karena itu terdapat banyak protokol pada lapisan ini sesuai dengan banyaknya aplikasi TCP/IP yang dapat dijalankan. Contohnya adalah SMTP (Simple Mail Transfer Protocol) untuk pengiriman email. FTP (File Transfer Protocol) untuk aplikasi transfer file. HTTP (Hypertext Transfer Protocol) untuk distribusi news group dan lain-lain. Setiap aplikasi pada umumnya menggunakan protokol TCP dan IP sehingga keseluruhan keluarga protokol ini dinamai dengan TCP / IP.

3. Bagaimana TCP dan IP bekerja?

Seperti yang telah dikemukakan diatas, TCP dan IP hanyalah merupakan protokol yang bekerja pada suatu layer dan menjadi penghubung antara satu komputer dengan komputer lainnya dalam satu jaringan meskipun kedua komputer tersebut memiliki OS yang berbeda. Untuk lebih jelasnya kita ambil contoh dalam proses pengiriman email.

Dalam pengiriman email ada beberapa prinsip dasar yang harus dilakukan.
Pertama, mencakup hal umum seperti siapa yang mengirim, siapa yang menerima dan isi dari email tersebut.
Kedua, bagaimana cara agar email tersebut sampai ketujuannya dengan benar.

Dari konsep ini kita dapat mengetahui bahwa pengirim email memerlukan perantara yang memungkinkan emailnya sampai ke tujuan (layaknya Pak Pos), dan ini adalah tugas dari TCP/IP.

TCP merupakan connection-oriented yang berarti bahwa kedua komputer yang ikut serta dalam pertukaran data harus melakukan hubungan terlebih dahulu sebelum pertukaran data berlangsung (dalam hal ini email). Selain itu TCP juga bertanggung jawab untuk meyakinkan bahwa email tersebut akan sampai ke tujuan, memeriksa kesalahan dan mengirimkan 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 merutekan paket data didalam network. IP hanya bertugas sebagai kurur dari TCP dan mencari jalur yang terbaik dalam penyampaian datagram, IP tidak bertanggung jawab jika data tersebut tidak sampai dengan utuh (hal ini disebabkan IP tidak memilkiki informasi mengenai isi data yang dikirimkan), namun IP akan mengirimkan pesan kesalahan (error message) melalui ICMP, jika hal ini terjadi dan kemudian kembali ke sumber data

Karena IP hanya mengirimkan data tanpa mengetahui urutan data mana yang akan disusun berikutnya, maka hal ini menyebabkan IP mudah untuk dimodifikasi di daerah sumber dan tujuan datagram. Hal inilah yang menjadi penyebab banyaknya paket data yang hilang sebelum sampai ke tujuan.

Datagram dan paket sering dipertukarkan penggunaanyya. Secara teknis, datagram merupakan unit dari data yang tercakup dalam protokol. ICMP adalah singkatan dari Internet Control Message Protocol yang bertugas memberikan pesan-pesan kesalahan dan kondisi lain yang memerlukan perhatian khusus. Pesan ICMP dikirim jika terjadi masalah pada layer IP dan layer diatasnya (TCP dan UDP)


 
Akibat kegagalan mengirim pesan, Pesan kesalahan ICMP disampaikan ke sumber alamat pengirim.


Berikut adalah beberapa pesan potensial yang sering timbul:
  1. Destination Unreachable, terjadi jika host, jaringan, port, atau protokol tertentu tidak dapat dijangkau
  2. Time  Exceeded, terjadi dimana datagram tidak bisa dikirim karena time to live habis.
  3. Parameter Problem, terjadi kesalahan parameter dan letak oktet dimana kesalahan terdeteksi
  4. Source quench, terjadi karena router/host tujuan membuang datagram karena batasan ruang buffer atau karena datagram tidak dapat diproses
  5. Redirect, pesan ini memberi saran kepada host asal datagram mengenai router yang lebih tepat untuk menerima datagram tersebut
  6. Echo Request dan Echo Reply Message , pesan ini saling mempertukarkan data antara host.

4. Bagaimana bentuk format  header protokol UDP, TCP, dan IP?

4.1 UDP
User Datagram Protocol (UDP) adalah sebuah protocol yang bekerja pada transport layer, Protokol UDP memberikan alternatif transport untuk proses yang tidak membutuhkan pengiriman yang handal. UDP tidak handal karena tidak menjamin pengiriman data atau perlindungan duplikasi. UDP tidak mengurus masalah penerimaan aliran data dan pembuatan segmen sesuai untuk IP. Oleh karena itu, UDP menjadi protokol sederhana yang berjalan dengan kemampuan jauh dibawah TCP. Header UDP tidak mengandung banyak informasi.


Header protokol UDP yang ditetapkan dari 8 byte Protocol Control Information

  • Source Port adalah port asal dimana sistem mengirimkan datagram
  • Destination Port adalah port tujuan pada host penerima
  • Length berisikan panjang datagram dan termasuk data
  • Checksum bersifat optional yang berfungsi untuk meyakinkan bahwa data tidak akan mengalami rusak (corrupt)
4.2 TCP
TCP merupakan protokol yang bertanggung jawab untuk mengirimkan aliran data ke tujuannya secara handal, berurutan dan terdokumentasi dengan baik. Untuk memastikan diterimanya data, TCP menggunakan nomor urut segmen dan acknowledgement (jawaban).

Misalnya akan mengirim file berbentuk seperti:
-----------------------------------------------------

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 didepan 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.


Misal ada 3 orang mengirim file.TCP anda akan mengalokasikan nomor port 1000, 1002, dan 1002 untuk transfer file tersebut.



Header TCP

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 (destination port). Tentu saja jika ada datagram yang kembali maka source dam 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, keempat 1500 dan seterusnya.

Kemudian semua susunan oktet didalam datagram akan diperiksa keadaannya benar atau salah, dan biasa disebut dengan checksum. Hasilnya kemudian diletakan ke header TCP

Cheksum 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. Berikut adalah bentuk datagram tersebut.

Source Port Destination Port
Sequence Number
Acknowledgement Number
Data Offset Reserved URG window
ACK
PSH
RST
SYN
FIN
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 dibahas. Biasanya bagian header ini terlibat sewaktu hubungan berlangung.
  • Seperti acknowledgement number yang bertugas untuk menunggu jawaban apakah datagram yang dikirim sudah sampai atau belum. Jika tidak ada jawaban (aknowledgement) dalam batas waktu tertentu, maka data akan dikirim kembali.
  • Window berfungsi untuk mengontrol berapa banyak data yang bisa singgah dalam satu waktu. Jika window sudah terisi, ia akan segera lamngsung 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. Reserved selalu berisi nol, dicadangkan untuk penggunaan mendatang.
  • Control bit, ada 6 control bit yaitu
  1. URG, saat di set 1 ruang urgent pointer memiliki makna, set 0 dibatalkan,.
  2. ACK, saat di set ruang acknowledgement number memiliki arti
  3. PSH, memulai fungsi push
  4. RST, memaksa hubungan di reset
  5. SYN, melakukan sinkronasi nomor urutan untuk hubungan. Bila diset maka hubungan dibuka.
  6. FIN, hubungan tidak ada lagi.
4.3 IP

TCP akan mengirim setiap datagram dan meminta IP untuk mengirimkannya ke tujuan (tentu saja dengan cara memberitahukan 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 tentang pembagian tugas TCP dan IP). Jika IP melewati suatu gateway, maka ia kemudian akan menambahkan header miliknya.

Hal yang penting dari header ini adalah “source address”, “destination address”, “protocol number” dan “checksum”.

“Source address” merupakan alamat asal datagram, sedangkan “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. 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.

Meskipun awal bergeraknya IP berdasarkan perintah TCP, tetapi ada juga protokol tertentu (lain) yang dapat menggunakan/memerintah IP, dan kita harus memastikan IP menggunakan protokol apa untuk mengirim datagram tersebut. Berikut inilah tampilan header IP :


Jika kita misalkan IP header sebagai “I”, maka file sekarang akan berbentuk :
IT---- IT---- IT---- IT----- IT----- IT----- IT----- IT---- 
Berikut ini, ringkasan mengenai bagian header IP pada gambar 4.10 :

a. Total length, merupakan panjang keseluruhan datagram dalam oktet, termasuk header dan data IP.
b. Identification, digunakan untuk membantu proses penggabungan kembali pecahan-pecahan dari sebuah datagram.
c.  Flag,berisi tiga kontrol flag.
  •  Bit 0, dicadangkan, harus 0.
  •  Bit 1, tidak boleh pecah.
  •  Bit 2, masih ada fragment lagi.
d.  Fragment offset, menunjukan posisi fragment di dalam datagram.
e. Time to live, menunjukan batas waktu maksimal bagi sebuah datagram untuk berada pada jaringan.

Protokol IP sebenarnya merupakan protokol inti dari protokol TCP/IP, sebab seluruh data yang berasal dari layer diatasnya, harus melewati IP. Data tersebut diolah oleh IP dan dipancarkan sebagai paket IP agar sampai ketujuan.

Dalam melakukan pengiriman data, IP memang memiliki sifat yang dikenal dengan ketidakhandalan (unreliable), juga connectionless serta datagram delivery service.

Unreliable berarti IP tidak menjamin datagram sampai ketujuan, namun IP berjanji akan melakukan usaha sebaik mungkin (best effort delivery). Connectionless berarti ketika mengirimkan paket dari tempat asal ke tujuan, pengirim dan penerima paket sebelumnya tidak mengadakan perjanjian (handshake) terlebih dahulu. (TCP hanya melakukan kontak hubungan antar komputer tapi tidak mengatakan mau mengirimkan paket yang berbentuk apa). Datagram delivery service berarti setiap paket data (datagram) yang dikirim bersifat independen terhadap paket data yang lain. Akibatnya jalur yang ditempuh oleh IP untuk masing-masing paket bisa saja berbeda satu sama lain. Karena jalur tiap paket data berbeda, maka waktu tempuh dan urutan kedatangan tiap paket juga bisa berbeda dan tidak urut seperti urutan keberangkatan tiap paket tersebut.
8. Protocol-protocol dalam lingkungan keluarga TCP/IP

8.1 PPP (Point-to-Point Protocol)
Adalah data link protocol yang menyediakan akses dial-up melalui port serial. PPP dapat dijalankan pada beberapa link full-duplex dari POTS ke ISDN hingga jalur berkecepatan tinggi (T1, T3, dll.). Dikembangkan oleh Internet Engineering Task Force (IEEE) pada tahun 1991, dan menjadi populer untuk koneksi/akses Internet karena kualitasnya yang baik untuk membangun koneksi berkecepatan tinggi antar node komputer dengan dial-up networking melalui jalur komunikasi publik (PSTN).

Point to Point Protocol secara umum adalah apa yang digunakan untuk membuat hubungan dengan ISP anda melalui sebuah modem. PPP merupakan salah satu protokol yang menggunakan lebar data 64 Kbps (Bi-channel atau 2 saluran) untuk transmisinya. Multilink protokol PPP (MP, MPPP atau MLPPP) menjembatani dua atau lebih Bi-Channel untuk operasi berkecepatan tinggi. Contohnya, menggunakan Basic Rate service (BRI) ISDN, anda dapat menghasilkan 128 Kbps dengan Multilink PPP.

PPP merupakan gabungan protokol khusus yang terdapat pada paket Network Control Protocol lain, seperti: IPCP (IP over PPP) dan IPXCP (IPX over PPP).
PPP juga dapat digunakan untuk menggantikan sebuah driver adapter jaringan (network adapter), dan menggantikan remote user masuk kedalam jaringan (seperti laiknya seseorang masuk kedalam rumah). PPP dapat memutuskan dan menghubungi ulang panggilan yang sebelumnya gagal dilakukan.

PPP juga dapat menyediakan proteksi password menggunakan Password Authentication Protocol (PAP) dan yang lebih baik lagi seperti Challenge Handshake Authentication Protocol (CHAP).

8.2 SNMP (Simple Network Management Protocol)
Adalah sebuah protokol yang digunakan untuk memantau dan meng-kontrol jaringan dari tempat lain (jauh). Data dilewatkan dari SNMP agent, yang berupa hardware atau software yang melaporkan suatu aktifitas/proses pada beberapa perangkat jaringan seperti hub, router, bridge, dll. Monitoring ini melalui console dari workstation.

Agent mengembalikan informasi yang terdapat pada MIB (Management Information Base), yang merupakan sebuah struktur data yang menggambarkan data apa yang diperoleh dari perangkat dan apa yang dapat dikontrol (dimatikan, dihidupkan dll).

Awalnya digunakan hanya pada UNIX system, SNMP akhirnya digunakan secara luar pada berbagai flatform yang ada. SNMP 2 telah menyediakan peningkatan yang mencakup keamanan dan RMON (Remote Monitoring) MIB, yang menyediakan umpan balik yang baik dari SNMP console.

8.2 SLIP (Serial Line IP)
Sebuah data link protocol untuk dial-up access ke jaringan TCP/IP. Biasanya digunakan untuk mendapatkan akses internet. SLIP mengirimkan paket IP melalui serial link (dial up atau private line).
Masih ada banyak lagi protocol-protocol yang termasuk dalam lingkungan protocol TCP/IP.