Saturday, July 25, 2020

Dasar-dasar Jaringan Komputer (Tulisan & Video)

Bagi yang ingin belajar jaringan komputer dari dasar, saya sarankan mengikuti link ini (ada versi tulisan dan video di dalamnya)

#NetworkFundamentals
Part 1: OSI
aditya.hananto.net/2020/05/network-fundamentals-osi-model_12.html

Part 2: IP protocol
aditya.hananto.net/2020/05/network-fundamentals-ip-internet.html

Part 3: IPv4 header
aditya.hananto.net/2020/05/network-fundamentals-ipv4-header.html

Part 4: ARP
aditya.hananto.net/2020/05/network-fundamentals-ARP-protocol.html

Part 5: ICMP
aditya.hananto.net/2020/05/network-fundamentals-icmp.html

Part 6: TCP & UDP
aditya.hananto.net/2020/05/network-fundamentals-tcp-udp.html

Part 7: TCP header
aditya.hananto.net/2020/05/network-fundamentals-tcp-header.html

Part 8: TCP window size
aditya.hananto.net/2020/05/net-fundamentals-tcp-window-size.html

selain tulisan blog di atas, Anda juga belajar jaringan komputer dari dasar pada playlist video tutorial CCNA 2020 dari IndoNetworkers Community

Cisco CCNA 2020 (Mei 2020: 8 videos)
https://www.youtube.com/watch?v=LiMdHeaS4zY&list=PLkiWVEWnNVJ_iqcj-IZ5Uxn6YZzfsnjtq

Cisco CCNA 2020 (Juni 2020: 6 videos)
https://www.youtube.com/watch?v=KnikGDYy2G0&list=PLkiWVEWnNVJ_h6qnEgQ-k8iar4UvJJcG7


Selamat belajar, Rekan-rekan semua
Semoga bermanfaat dan jangan lupa untuk tetap semangat di tengah pandemi ini :)

#StaySafe
#StayHealthy
#StayStrong

Friday, July 3, 2020

Tutorial EVE-NG part 3: membuat Lab Cisco ASA Firewall di EVE-NG #BelajarJaringanKomputer

Pada tulisan dan video kali ini, saya akan membahas mengenai langkah-langkah untuk membuat Lab Cisco ASA Firewall di EVE-NG:

1. Upload image qcow2 Cisco ASAv ke EVE-NG VM menggunakan SFTP client seperti WinSCP, Filezilla client.

2. SSH ke EVE-NG menggunakan ssh client seperti putty

3. Fix Permissions untuk image ASAv yang baru kita upload /opt/unetlab/wrappers/unl_wrapper -a fixpermissions 

4. Agar console Cisco ASAv bisa diakses menggunakan telnet (bukan vnc), lakukan langkah-langkah sebagai berikut di command line Linux:

cd /opt/unetlab/addons/qemu/asav-992-100
apt install libguestfs-tools
guestfish -a virtioa.qcow2
 run

mount /dev/sda2 /
touch /use_ttyS0
umount /
exit

5. akses EVE-NG VM menggunakan web browser seperti Firefox

6. Buat lab Cisco ASA dan akses console menggunakan telnet client seperti putty

Video Tutorial EVE-NG Part 2



Tutorial EVE-NG sebelumnya:
Part1: Instalasi EVE-NG
https://aditya.hananto.net/2020/06/tutorial-eve-ng-part-1-instalasi.html

Part 2: Upload OS image & membuat Lab di EVE-NG
https://aditya.hananto.net/2020/07/tutorial-eve-ng-part-2-upload-image.html

~AHa
#BelajarJaringanKomputer
#StaySafe
#StayHealthy
#StayProductive

Wednesday, July 1, 2020

Tutorial EVE-NG part 2: upload OS image & membuat Lab di EVE-NG

Sebelumnya pada Tutorial EVE-NG part 1, telah dibahas bagaimana cara instalasi EVE-NG, kini di part 2 dibahas mengenai cara upload image Cisco Router & Switch serta cara membuat Lab di EVE-NG.

Setelah EVE-NG running, maka berikutnya kita upload OS image yang akan di-emulate (misal Cisco vIOS router & Switch) menggunakan SFTP client. Selanjutnya membuat Lab Topology dengan web browser untuk mengakses EVE-NG.

Tutorial EVE-NG part 2: upload OS image & membuat Lab
https://youtu.be/iI1IdFQcLR0

Tutorial sebelumnya (part 1): Instalasi EVE-NG https://youtu.be/lC4NfhCFtVk

~AHa
#BelajarJaringanKomputer
#StaySafe
#StayHealthy
#StayProductive

Sunday, June 28, 2020

Tutorial EVE-NG part 1: Instalasi EVE-NG untuk Home Lab Jaringan Komputer

Untuk membangun Home Lab pertama kali ketika belajar jaringan komputer, biasanya kita menggunakan Cisco Packet Tracer yaitu simulator lab gratis dari Cisco.

Nah jika Anda ingin membangun Home Lab yang lebih advance, yang bisa menjalankan real OS image (seperti Cisco IOS, Juniper Junos, dll) bukan sekedar simulasi, maka salah satu tools favorit saya adalah EVE-NG (www.eve-ng.net)

Pada kesempatan kali ini, saya akan membahas cara instalasi VM EVE-NG dari awal.

Pra-instalasi EVE-NG
Sebelumnya, silahkan download semua tools yg dibutuhkan utk praktek lab menggunakan EVE-NG
1. Vmware player (gratis)
https://my.vmware.com/en/web/vmware/downloads/details?downloadGroup=PLAYER-1556&productId=800&rPId=47861

2. VM EVE-NG (Community edition/gratis)
https://mega.nz/file/4pU2wIhQ#jmfEhGMNM_1gGj6qfN_WcGglI-7vxvkW_m1uRxIjYEQ
https://drive.google.com/uc?id=1kSumfMzsKqXq4IF3G8h_z6cxdojXYpkq&export=download


Langkah-langkah instalasi EVE-NG di vmware player/workstation:
1. Install vmware player/workstation
2. buka Vmware player/workstation
3. Extract file EVE-COMM-VM.zip
4. klik File — Open
5. pilih ovf EVE-NG yg telah di-extract
6. import ovf tersebut, tunggu hingga selesai
7. pastikan Network Adapter = NAT
8. Memory utk VM = 4 GB atau lebih (paling minim 2 GB)
9. Power-on/Start EVE-NG VM
10. setelah booting, pastikan ada IP address di atas login
11. login menggunakan user: root
password: eve
12. Ikuti wizard/setup menu ketika awal menyalakan EVE-NG
13. buka web browser, masukkan ip address EVE-NG
14. login menggunakan user: admin
password: eve
15. tampilan awal EVE-NG setelah login, seharusnya masih kosong, karena kita belum membuat Lab
16. untuk mematikan VM EVE-NG, ketik di command-Line VM: # poweroff

Done, sekarang EVE-NG kita telah up & running :)

Video tutorial:
youtu.be/lC4NfhCFtVk
mirror: youtu.be/36vrfgnqrnY

Sunday, May 31, 2020

Network Fundamentals: TCP Window Size #BelajarJaringanKomputer

Seperti yang telah kita bahas di  tulisan tentang TCP & UDP, kita tahu TCP (Transmission Control Protocol) adalah connection-oriented protocol yang berarti bahwa TCP melacak berapa banyak data yang telah dikirimkan. Pengirim akan mengirimkan beberapa data dan penerima harus membalas dengan Acknowledgement. Ketika pengirim tidak menerima Acknowledgement dari penerima maka pengirim akan mengirim ulang data tersebut.

TCP menggunakan "windowing" yang berarti bahwa pengirim akan mengirim satu atau lebih segment data dan penerima akan membalas dengan Acknowledgement untuk satu atau semua segment. Saat kita memulai koneksi TCP, host akan menggunakan receive buffer untuk menyimpan data secara sementara sebelum aplikasi dapat memprosesnya.

Ketika penerima mengirim Acknowledgement, ia akan memberi tahu pengirim berapa banyak data yang dapat ditransmisikan sebelum penerima akan mengirim Acknowledgement. Itu disebut window size. Pada dasarnya, window size menunjukkan besarnya receive buffer.

Biasanya koneksi TCP akan dimulai dengan window size kecil dan setiap kali ada Acknowledgement yang berhasil, window size akan meningkat.

Mari kita lihat sebuah contoh:

Di contoh tsb, PC1 mengirim satu segment dan PC2 membalas dengan mengirim Acknowledgement. Karena Acknowledgement berhasil, maka window size akan meningkat:

Kini PC1 mengirim dua segment sekaligus dan PC2 akan membalas dengan satu Acknowledgement. Semuanya berjalan dengan lancar sehingga window size akan meningkat lagi:
Kini PC1 mengirim empat segment sekaligus dan PC2 merespons dengan satu Acknowledgement.

Pada contoh di atas, window size terus meningkat selama penerima mengirimkan Acknowledgement untuk semua segment dari pengirim atau ketika window size mencapai batas maksimum tertentu. Ketika penerima tidak mengirim Acknowledgement dalam periode waktu tertentu (disebut round trip time) maka window size akan berkurang.

Ketika sebuah interface mengalami congestion (kemacetan) maka ada kemungkinan paket IP akan di-drop. Untuk mengatasinya, TCP memiliki algoritma yang berhubungan dengan congestion control. Salah satunya disebut TCP slow start.

Congestion bisa terjadi ketika sebuah interface harus mengirimkan lebih banyak data daripada yang bisa ditangani. Queue (antrian) akan mencapai batasnya dan paket akan di-drop.

Dengan TCP slow start, window size awalnya akan bertambah secara eksponensial (window size menjadi dua kali lipat) tetapi ketika paket yang di-drop, window size akan dikurangi menjadi satu segment. Kemudian akan bertambah lagi secara eksponensial sampai window size menjadi setengah dari ukuran window size ketika congestion terjadi. Setelah itu, window size akan bertambah secara linear, bukan secara eksponensial.

Ketika sebuah interface mengalami congestion, mungkin semua koneksi TCP Anda akan mengalami TCP slow start. Paket akan di-drop dan kemudian semua koneksi TCP akan memiliki ukuran window size yang kecil. Ini disebut TCP global synchronization. Begini tampilannya:


Garis merah, kuning dan biru adalah tiga koneksi TCP yang berbeda. Koneksi TCP ini dimulai pada waktu yang berbeda dan setelah beberapa saat, interface mengalami congestion dan semua segment di koneksi-koneksi TCP tersebut di-drop. Kemudian yang terjadi adalah window size semua koneksi TCP ini akan turun ke satu dan setelah congestion pada interface reda, maka window size semua koneksi TCP akan meningkat lagi.

Jika interface kemudian menjadi padat lagi, ukuran window size turun kembali ke satu dan kejadian di atas berulang kembali. Hasil dari ini adalah kita tidak bisa menggunakan semua bandwidth yang tersedia pada interface. Anda dapat melihat garis putus-putus di atas, yang menunjukkan bahwa rata-rata utilisasi bandwidth pada interface tidak terlalu tinggi.

Untuk mencegah congestion yang berimbas pada TCP global synchronization, kita dapat menggunakan RED (Random Early Detection) yang merupakan salah satu mekanisme pada QoS (Quality of Service). Ini adalah fitur yang melakukan drop paket "secara acak" dari TCP stream berdasarkan jumlah paket dalam Queue (antrian) dan tanda ToS (Type of Service) yang ada pada IP header. Ketika paket di-drop sebelum Queue (antrian) penuh, kita dapat menghindari TCP global synchronization.

Hasil akhirnya akan terlihat seperti ini:


Dapat disimpulkan, ketika kita menggunakan RED (random early detection), pemanfaatan rata-rata utilisasi interface akan meningkat.

Kesimpulan
Anda sekarang telah melihat bagaimana TCP menggunakan window size untuk memberi tahu pengirim berapa banyak data yang bisa dikirim sebelum menerima Acknowledgement. Saya juga telah menunjukkan kepada Anda sebuah contoh bagaimana window size digunakan ketika penerima tidak dapat memproses receive buffer-nya tepat waktu.

Tidak seperti TCP, UDP adalah protokol connectionless dan hanya akan terus mengirim segment data tanpa menunggu Acknowledgement dan tanpa window size. Karena alasan ini, Anda mungkin ingin membatasi traffic UDP Anda atau bakal ada kemungkinan terjadi TCP starvation ketika terjadi congestion.

Semoga tulisan ini dapat memudahkan dalam memahami TCP window size. Jika ada pertanyaan, jangan ragu untuk bertanya di kolom komentar di bawah ya.

Selamat belajar dan tetap semangat di tengah pandemi ini :)

~AHa
#NetworkFundamentals
#StayAtHome
#StaySafe
#StayHealthy

[Video] Spanning-Tree Protocol (STP) #IndoNetworkers #BelajarJaringanKomputer

Mungkin Anda pernah mendengar STP (Spanning-Tree Protocol) ketika membahas jaringan komputer, tapi Anda merasa masih belum memahami betul mengenai:
• Apakah itu STP?
• Untuk apa digunakan STP?
• Kapan perlu STP?
• Bagaimana cara kerja STP?
• Apakah perbedaan antara STP, RSTP, MSTP, VSTP, PVST & RPVST ?
• dan masih banyak pertanyaan lain tentang STP di benak Anda

Kebetulan pada hari Sabtu 30 mei 2020, saya berkesempatan berbagi ilmu mengenai STP di event Online Sharing Session bareng komunitas IndoNetworkers. Dan bagi Anda yang ketinggalan mengikuti event ini, bisa menonton video rekamannya di bawah :)

Semoga bisa membantu dalam belajar & tetap semangat di tengah pandemi ini :)

~AHa
#BelajarJaringanKomputer
#StayAtHome
#StaySafe
#StayHealthy

Friday, May 29, 2020

Network Fundamentals: TCP header #BelajarJaringanKomputer

TCP (Transmission Control Protocol) adalah protokol transport yang reliable karena membuat koneksi sebelum mengirim data apa pun dan semua yang dikirim harus dibalas dengan Acknowledgement oleh penerima. Dalam tulisan kali ini, kita akan melihat lebih dekat TCP header dan semua field-nya yang berbeda. Begini tampilannya:


Mari kita bahas tiap field satu per satu.

1) Source Port (16 bits): berisi nomor port pengirim.
2) Destination Port (16 bits): berisi nomor port penerima.
3) Sequence number (32 bits): menunjukkan berapa banyak data yang dikirim selama sesi TCP. Ketika Anda membuat koneksi TCP baru (3-way handshake) maka Sequence number awal adalah nilai 32 bit yang random (acak). Penerima akan menggunakan Sequence Number ini dan mengirimkan Acknowledgement. Aplikasi untuk analisis protokol/data seperti Wireshark, sering menggunakan Relative Sequence Number nomor urut relatif) 0 untuk semua segment pertama, karena lebih mudah dibaca daripada beberapa angka random (acak) yang besar (biasanya ribuan).
4) Acknowledgement number (32 bits): digunakan oleh penerima untuk meminta segment TCP berikutnya. Nilai ini akan menjadi Sequence number dari lawan yang bertambah 1.
5) DO (4 bits): juga dikenal sebagai panjang header. Ini menunjukkan panjang TCP header, sehingga kita tahu di mana data (payload) dimulai.
6) RSV (3 bits): field yang di-reserved. Saat ini tidak digunakan dan selalu bernilai 0.
7) Flag (9 bits): disebut juga Control bits. Kita menggunakannya untuk membuat koneksi, mengirim data dan mengakhiri koneksi.
  • URG: urgent pointer. Ketika bit URG di-set, artinya segment data ini harus diperlakukan sebagai prioritas dibandingkan data lainnya.
  • ACK: digunakan untuk acknowledgment.
  • PSH: sebagai fungsi push. Ini memberi tahu aplikasi bahwa data harus segera ditransmisikan.
  • RST: untuk me-reset koneksi, ketika Anda menerima ini, maka Anda harus segera mengakhiri koneksi. Ini hanya digunakan ketika ada unrecoverable error (error yang tidak dapat dipulihkan) dan ini bukan cara normal untuk mengakhiri koneksi TCP.
  • SYN: digunakan untuk memulai 3-way handshake dan juga digunakan untuk mengatur Sequence number awal.
  • FIN: bit akhir ini digunakan untuk mengakhiri koneksi TCP. TCP bersifat full duplex sehingga kedua belah pihak harus menggunakan bit FIN untuk mengakhiri koneksi. Ini adalah metode normal untuk mengakhiri koneksi.
8) Window (16 bits): menentukan berapa Byte yang ingin diterima oleh penerima. Ini digunakan oleh penerima untuk memberi tahu pengirim bahwa ia ingin menerima lebih banyak data daripada yang saat ini diterimanya. Hal ini dilakukan dengan menentukan jumlah Byte di atas Sequence number di field Acknowledgement.
9) Checksum (16 bits): digunakan sebagai checksum untuk memeriksa apakah header TCP yang diterima itu OK atau tidak.
10) Urgent Pointer (16 bits): digunakan ketika bit URG telah di-set, Urgent pointer digunakan untuk menunjukkan di mana data yang urgent berakhir.
12) Options: field ini bersifat opsional dan panjangnya antara 0 s.d. 320 bits.

Untuk melihat field-field ini pada sebuah TCP segment, kita bisa menggunakan wireshark. Berikut adalah contoh segment-segment TCP yang digunakan dalam 3-way handshake.


 TCP SYN dari Client ke Server:


TCP SYN-ACK dari Server ke Client:


TCP ACK dari Client ke Server:



Di atas Anda dapat melihat Source & Destination port. Sequence number bernilai 0 tetapi wireshark memberitahu kita bahwa ini adalah Relative Sequence number (segment pertama diberi nilai 0 oleh Wireshark). Pada kenyataannya, Sequence number bernilai sangat besar pada segment TCP di atas. Anda juga dapat melihat bit SYN/ACK telah di-set pada field flag, Window size, Checksum dan Urgent pointer.

TCP adalah protokol yang cukup kompleks, tetapi semoga tulisan ini membantu memahami seperti apa tampilan header TCP dan fungsi masing-masing field.

Jika Anda memiliki pertanyaan, jangan ragu untuk meninggalkan komentar di bawah ya :)

Semoga bermanfaat dan tetap semangat di tengah pandemi ini :)

~AHa

Thursday, May 28, 2020

IndoNetworkers Community Class: Spanning-Tree Protocol (STP) #BelajarJaringanKomputer

#EVENT
IndoNetworkers Sharing Session #BelajarJaringanKomputer

Mau belajar dasar-dasar jaringan komputer secara GRATIS?
Yuk join sesi berbagi ilmu jaringan komputer dari komunitas IndoNetworkers pada hari/tanggal:

Topik: Spanning-Tree Protocol (STP, RSTP, PVST, RPVST)

Waktu: Sabtu 30 mei 2020, pukul 1 siang WIB

Durasi: 90 - 120 menit

Bagaimana cara joinnya?
1. Klik https://t.me/BelajarJaringanKomputer untuk bergabung ke grup Telegram "Belajar Jaringan Komputer"
2. Link untuk join online class akan di-share di grup tersebut (nanti hanya butuh Web Browser untuk mengikuti kelas)

Sesi sharing Komunitas IndoNetworkers ini bersifat gratis 100%, Anda bisa ganti dengan sedekah untuk membantu sesama :)

Sampai berjumpa di grup Telegram "Belajar Jaringan Komputer" dan sesi Online Sharing ini :)

IndoNetworkers Community

www.IndoNetworkers.org
info@IndoNetworkers.org
t.me/BelajarJaringanKomputer
facebook.com/IndoNetworkers
twitter.com/IndoNetworkers
youtube.com/c/KomunitasIndoNetworkers

Network Fundamentals: TCP & UDP #BelajarJaringanKomputer

Dalam tulisan ini, kita akan melihat protokol di layer transport OSI yaitu TCP dan UDP. Jika pada tulisan sebelumnya tentang protokol IP dan paketnya, Anda tahu bahwa kita memerlukan protokol transport untuk mengirim paket IP tersebut.

Saya ingin fokus pada protokol transport yang paling sering digunakan:
  • TCP (Transmission Control Protocol)
  • UDP (User Datagram Protocol)
Jadi mengapa kita memiliki 2 protokol transport yang berbeda di sini? Kapan kita membutuhkan salah satunya?

Jawaban singkatnya adalah:
TCP adalah protokol yang bersifat reliable (dapat diandalkan).
UDP adalah protokol yang bersifat unreliable (tidak dapat diandalkan) atau best effort (upaya terbaik).

Tidak bisa diandalkan alias Unreliable, Anda mungkin berpikir mengapa saya ingin transportasi data yang tidak dapat diandalkan? Apakah itu masuk akal? Saya akan menceritakan sedikit cerita untuk menjelaskan perbedaan antara kedua protokol tersebut.

Anda mau men-download sebuah file berukuran 10 GB dan setelah mengunduh 9 GB, ada yang tidak beres dan beberapa IP packet tidak berhasil sampai ke komputer Anda. Segera setelah seluruh download selesai, Anda mencoba membuka file tersebut dan Anda mendapatkan banyak error (karena sebagian isi file tidak sampai ke komputer Anda). Hal ini membuat pengorbanan waktu dan bandwidth Anda untuk men-download beberapa GB terasa sia-sia, padahal sebagian besar data telah di-download dengan baik.

Oleh sebab itu,  Anda membutuhkan sebuah protokol transport yang bisa memastikan bahwa pengiriman data dari pengirim (misal server) ke komputer Anda itu reliable (handal), nah itulah sebabnya kita menggunakan TCP. Jika beberapa IP packet tidak sampai ke komputer Anda, Anda ingin memastikan data ini akan dikirim ulang ke komputer Anda.

Dalam cerita kedua, Anda adalah seorang network engineer yang ingin mengimplementasikan Voice over IP di perusahaan Anda dan  menyingkirkan semua telepon analog. Tetapi setelah VoIP diimplementasikan, para user mengeluh karena kualitas panggilan telepon kini menjadi lebih buruk. Anda menghubungi vendor solusi VoIP tersebut dan Anda mendapatkan informasi bahwa vendor berpikir untuk menggunakan protokol transportasi yang dapat diandalkan (reliable) seperti TCP karena kita ingin panggilan telepon dapat diandalkan (reliable) bukan?

Ternyata itu adalah cara berpikir yang salah! TCP melakukan koreksi kesalahan (error correction) yang berarti bahwa data yang tidak berhasil sampai ke komputer Anda akan dikirim ulang (retransmission). Sangatlah aneh jika Anda berbicara dengan seseorang di telepon dan Anda mendengar sesuatu yang mereka katakan beberapa detik yang lalu? Komunikasi via telepon seharusnya bersifat real-time, jadi kita tidak menginginkan pengiriman ulang (retransmission). Lebih baik mengirim paket VoIP dan kehilangan beberapa paket yang error, daripada mengirimnya kembali setelah itu. Codec VoIP juga dapat memperbaiki kehilangan paket (packet loss) hingga tingkat tertentu. Dalam contoh ini (komunikasi VoIP), kita ingin menggunakan protokol yang unreliable/best effort, yaitu UDP.



Pertama-tama Anda melihat Tipe Koneksi. TCP bertipe connection-oriented yang artinya akan membuat koneksi terlebih dahulu, baru kemudian mulai mentransfer data. UDP bertipe connectionless, yang artinya akan langsung mulai mengirim dan tidak peduli apakah data tsb diterima oleh tujuan atau tidak. Koneksi yang disiapkan oleh TCP disebut "3-way handshake" yang akan kita bahas sebentar lagi.

Sequencing berarti menggunakan nomor urut. Jika Anda men-download file yang besar, Anda perlu memastikan bahwa Anda dapat mengembalikan semua segment itu dalam urutan yang benar. Seperti yang Anda lihat di tabel, UDP tidak menawarkan fitur ini, tidak ada nomor urut pada UDP.

Lalu bagaimana dengan VoIP? Bukankah kita harus mengembalikan segment-segment itu di sisi penerima? Ya, sebenarnya hal itu kita lakukan, karena kalau tidak maka kita akan mendapatkan beberapa percakapan aneh (karena suara yang diterima tidak berurutan). UDP tidak menawarkan fitur pengurutan/sequencing ini. Tapi ada sedikit rahasia, yaitu untuk VoIP itu bukan hanya UDP yang kita gunakan, tetapi juga menggunakan RTP yang menawarkan pengurutan/sequencing serta beberapa fitur lainnya yang kita perlukan untuk VoIP.

Mari kita lihat UDP header:
Anda dapat melihat betapa sederhananya UDP header, terdapat nomor (logical) port pengirim dan tujuan (digunakan untuk mengetahui data ini untuk aplikasi yang mana), ada checksum dan panjang/length.

Mari kita simpulkan apa yang sekarang kita ketahui tentang UDP:

  • beroperasi pada layer transport OSI.
  • protokol connectionless: tidak membuat koneksi, hanya mengirim data. Analoginya seperti kita mengirim surat.
  • Protokol yang bersifat unreliable/best effort.
  • Tidak ada fitur error-recovery.

Sekarang mari kita lihat apa yang bisa ditawarkan TCP kepada kita. Pertama-tama karena TCP adalah protokol yang reliable, TCP akan membuat koneksi sebelum memulai pengiriman data. Proses membuat koneksi ini disebut "3-way handshake". 

Contohnya ada 2 komputer yang ingin saling mengirim data menggunakan TCP. Client PC ingin mengirim data ke Server dengan cara yang reliable, sehingga menggunakan TCP. Berikut ini proses membuat koneksi dengan 3-way handshake:
1. Client PC mengirim SYN segment dengan random (acak) sequence number (misal 3456) ke server 
2. Server membalas dengan mengirim SYN-ACK segment dengan random sequence number (misal 4100) dan ACK number yang ditambahkan 1 dari sequence number lawannya (yaitu 3457)
3. Client PC membalas dengan mengirim ACK segment dengan ACK number yang ditambahkan 1 dari sequence number lawannya (yaitu 4101)

Setelah TCP 3-way handshake ini sukses, maka Client PC bisa melakukan upload/download file dari server.

Selain 3-way handshake ini, TCP juga mempunyai fitur lain yaitu Flow Control. 

Apa itu Flow Control
Perangkat jaringan beroperasi pada kecepatan data yang berbeda karena berbagai faktor seperti CPU dan bandwidth yang tersedia. Flow control digunakan ketika perangkat pengirim mempunyai kecepatan yang jauh lebih cepat daripada yang dapat ditangani oleh penerima. TCP menggunakan mekanisme sliding window untuk menerapkan flow control. Sliding window menggunakan window size yaitu seberapa banyak segment yang bisa dikirim kepada penerima, sebelum penerima mengirim ACK kepada pengirim. Jadi window size itu menunjukkan ukuran buffer pada penerima. Mengenai Window Size ini kan saya bahas di tulisan lain yah :)

Kesimpulan:
  • Pada layer 4 (transport) OSI ada 2 protokol yang sering kita gunakan yaitu TCP & UDP (selain kedua protokol ini, sebenarnya masih ada protokol lain seperti SCTP).
  • TCP digunakan oleh aplikasi yang membutuhkan reliability, seperti download file, email, browsing web.
  • UDP digunakan oleh aplikasi yang membutuhkan kecepatan (real-time), seperti VoIP, video streaming.
  • Sebagian besar aplikasi yang kita gunakan (seperti HTTP, HTTPS, SSH, Telnet, SMTP, POP3), menggunakan protokol TCP di layer 4 dan protokol IP di layer 3, sehingga kita sering mendengar istilah TCP/IP.

Agar lebih mudah memahami TCP & UDP, Anda bisa menonton video saya yang membahas TCP & UDP di: https://youtu.be/k4DfVCJOA4w?t=1965

Semoga bisa membantu dalam memahami topik Network Fundamentals dan jika ada pertanyaan, silahkan ketik di kolom komentar :)


Tetap semangat :)

AHa

Wednesday, May 27, 2020

Network Fundamentals: ICMP #BelajarJaringanKomputer

ICMP (Internet Control Message Protocol) adalah protokol jaringan yang digunakan untuk diagnostik dan manajemen jaringan. Contoh ICMP yang sering kita gunakan adalah utilitas "ping" yang menggunakan ICMP echo request dan ICMP echo reply. Ketika port tertentu tidak dapat dijangkau, ICMP bisa mengirim pesan error ke pengirim. Contoh lain dari aplikasi yang menggunakan ICMP adalah traceroute.

ICMP message dibungkus dalam IP packet sehingga ada orang yang mengatakan bahwa ICMP adalah protokol layer 4 seperti UDP atau TCP. Namun, karena ICMP adalah bagian penting dari protokol IP, ia biasanya dianggap sebagai protokol layer 3.

Header yang digunakan ICMP sangat sederhana, seperti inilah tampilannya:


8 bits/1 Byte pertama menentukan tipe ICMP message. Misalnya, tipe 8 digunakan untuk ICMP echo request dan tipe 0 digunakan untuk ICMP echo reply. Tipe 3 untuk destination unreachable.

8 bits/1 Byte kedua disebut code, menentukan kode atau jenis dari setiap ICMP message. Misalnya, destination unreachable memiliki 16 kode berbeda. Ketika Anda melihat kode 0 itu berarti bahwa jaringan tujuan tidak dapat dijangkau, sementara kode 1 berarti bahwa host tujuan tidak dapat dijangkau.

Kolom ketiga adalah 16 bits (2 Bytes) yang digunakan untuk checksum, untuk mengecek apakah header ICMP error atau tidak. Seperti apa field-field lain yang tersisa dari header? Itu bergantung pada tipe ICMP message yang digunakan.

Jika Anda tertarik, berikut adalah daftar lengkap semua kode dan tipe ICMP.

Untuk menunjukkan kepada Anda beberapa contoh ICMP, mari kita lihat beberapa ICMP message yang sering digunakan, menggunakan Wireshark.

1. ICMP echo
PC-X mau mengirim paket ICMP echo (ping) ke server 1.1.1.1, untuk mengetahui apakah server 1.1.1.1 bisa membalas ICMP echo dari PC-X

C:\Users\PC-X>ping 1.1.1.1

Pinging 1.1.1.1 with 32 bytes of data:
Reply from 1.1.1.1: bytes=32 time=72ms TTL=58
Reply from 1.1.1.1: bytes=32 time=85ms TTL=58
Reply from 1.1.1.1: bytes=32 time=27ms TTL=58
Reply from 1.1.1.1: bytes=32 time=158ms TTL=58

Ping statistics for 1.1.1.1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 27ms, Maximum = 158ms, Average = 85ms

Dari hasil capture Wireshark, kita bisa melihat ICMP echo (ping) request yang dikirim ke server 1.1.1.1. ICMP echo (ping) request mempunyai tipe 8 dan kode 0.

Sedangkan ICMP echo (ping) Reply dari server 1.1.1.1 ke PC-X, mempunyai tipe 0 dan kode 0.


2. Destination Unreachable
PC-X mencoba mengirim ICMP echo (ping) ke server 110.5.105.30, tapi ternyata server tsb tidak bisa dicapai (unreachable) karena alasan tertentu (misalnya sedang shutdown, restart, dll).

C:\Users\PC-X>ping 110.5.105.30

Pinging 110.5.105.30 with 32 bytes of data:
Reply from 202.62.12.98: Destination host unreachable.
Reply from 202.62.12.98: Destination host unreachable.
Reply from 202.62.12.98: Destination host unreachable.
Reply from 202.62.12.98: Destination host unreachable.

Ping statistics for 110.5.105.30:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

Hasil capture Wireshark, ICMP Destination Unreachable mempunyai tipe 3 dan kode 1 untuk Host Unreachable.

3. Traceroute
PC-X mengirim ICMP echo (ping) ke server 8.8.8.8 menggunakan TTL terkecil yaitu 1 dan secara bertahap dinaikkan hingga mendapat reply/balasan dari server 8.8.8.8, dengan tujuan untuk mendapatkan informasi mengenai hop-by-hop yang dilalui dari PC-X hingga sampai ke server 8.8.8.8


C:\Users\PC-X>tracert  8.8.8.8

Tracing route to 8.8.8.8 over a maximum of 30 hops
  1    14 ms    11 ms    12 ms  10.158.0.1
  2   145 ms   139 ms   219 ms  202.73.96.26
  3   168 ms   143 ms   141 ms  202.73.96.25
  4    32 ms    24 ms    28 ms  116.68.231.150
  5    34 ms    33 ms    29 ms  111.95.246.130
  6    38 ms    44 ms    28 ms  74.125.242.33
  7    26 ms    24 ms    68 ms  72.14.232.101
  8    33 ms    34 ms    67 ms  8.8.8.8
Trace complete.

Hasil capture Wireshark, ini adalah paket ICMP yang dikirim PC-X ke 8.8.8.8, dengan TTL terkecil yaitu 1. TTL ini selalu dikurangi 1 ketika transit di sebuah router. Terlihat bahwa paket ICMP mempunyai Protocol ID = 1.


Ketika sampai di router pertama (gateway terdekat), TTL 1 tsb dikurangi menjadi 0, sehingga paket di-drop oleh router dan router tersebut mengirim ICMP TTL exceeded message kepada pengirim (PC-X). ICMP TTL exceeded mempunyai tipe 11 dan kode 0.


Kesimpulan:
Kita telah membahas mengenai kegunaan ICMP, seperti apa header-nya dan beberapa contoh ICMP message yang sering kita gunakan. Jika ada pertanyaan, silahkan tulis di kolom komentar :)

Agar lebih mudah memahami tentang ICMP, sebaiknya tonton video saya yang membahas mengenai ICMP di: https://youtu.be/k4DfVCJOA4w?t=1290

Semoga bermanfaat & tetap semangat untuk belajar :)

-AHa-

Monday, May 25, 2020

IndoNetworkers Online Class (Jun '20): CCNA & JNCIA #BelajarJaringanKomputer


Dikarenakan masih banyaknya permintaan akan kelas CCNA & JNCIA-Junos pada bulan Romadhon yang lalu, maka IndoNetworkers Community kembali mengadakan kelas training online sekaligus berdonasi untuk kegiatan amal "Sembako untuk Pekerja Harian" sebagai bagian dari kegiatan komunitas dalam  #BersamaLawanCorona

1) JNCIA-Junos
Tanggal 1 - 5 juni 2020
jam 9.00 - 12.00 WIB

2) Cisco CCNA
Tanggal 1 - 5 juni 2020
jam 13.00 - 17.00 WIB

Para peserta training hanya perlu menggunakan web browser (Chrome, Firefox, Edge) untuk mengikuti kelas ini.

Biaya sukarela/seikhlasnya*, mulai dari Rp 49.000 hingga Rp 599.000
*10% akan disumbangkan untuk kegiatan amal "Sembako untuk Pekerja Harian" https://kitabisa.com/campaign/sembakopekerjaharian

Registrasi: http://IndoNetworkers.org/register

*Jika ingin GRATIS karena ketiadaan dana untuk training, silahkan menghubungi info@IndoNetworkers.org

info selengkapnya di: https://www.IndoNetworkers.org
---

AHa


Dasar-dasar Jaringan Komputer (Tulisan & Video)

Bagi yang ingin belajar jaringan komputer dari dasar, saya sarankan mengikuti link ini (ada versi tulisan dan video di dalamnya) #NetworkF...