Pages

Senin, 08 Oktober 2012

SPANNING TREE PROTOCOL


Spanning Tree Protocol (STP)


Spanning Tree Protocol adalah link layer networ protocol yang menjamin tidak adanya loop dalam topologi dari banyak bridge/switch dalam LAN. Kelebihan Spanning Tree Protocol (STP) antara lain :
  • Menghindari Trafic Bandwith yang tinggi dengan mesegmentasi jalur akses melalui switch
  • Menyediakan Backup / stand by path utk mencegah loop dan switch yang failed/gagal
  • Mencegah adanya looping
Cara Kerja Spanning Tree Protocol (STP)
  • Menentukan root bridge
    Root bridge dari spanning tree adalah bridge dengan bridge ID terkecil (terendah). Tiap bridge mempunyai ID yang unik dan ada priority number yang bisa dikonfigurasi. Dalam  membandingkan dua bridge ID, priority number yang pertama kali dibandingkan. Jika priority number antara kedua bridge tersebut sama, maka yang akan dibandingkan selanjutnya adalah MAC addresses. Jika switch AD dan CB mempunyai priority number yang sama, misalnya 15, maka switch AD yang akan dipilih menjadi root bridge maka switch CB priority numbernya harus di bawah atau kurang dari 15. Jika ingin switch CB yang ingin jadi root bridge, maka priority number switch AD harus lebih kecil dari 15.
  • Menentukan least cost paths ke root bridge.
    Spanning tree mempunyai properti yaitu pesan dari semua alat yang terkoneksi ke root bridge dengan cost jalur terendah jika sudah di hitung. Cost of traversing sebuah path adalah jumlah dari cost-cost dari segmen yang ada dalam path.
  • Non-aktifkan root path lainnya.
    Bila telah menentukan cost terendah untuk tiap path dari peralatan ke root bride, maka port yang aktif yang bukan root port diset menjadi blocked port. Pemblockan ini bertujuan untuk antisipasi jika root port tidak bisa bekerja dengan baik, maka port yang tadinya di blok akan di aktifkan dan kembali lagi untuk menentukan path baru.
Istilah dalam Spanning Tree Protocol (STP)
  • Root Bridge adalah bridge dengan bridge ID terbaik. Kuncinya adalah agar semua switch di network memilih sebuah root bridge yang akan menjadi titik fokus di dalam network tersebut. Semua keputusan lain seperti port mana yang akan di blok dan port mana yang akan di tempatkan dalam mode fowarding dalam network.
  • BPDU semua switch bertukar informasi yang digunakan dalam pemilihan root switch, seperti halnya dalam konfigurasi selanjutnya dari network. Setiap switch membandingkan parameter-parameter dalam Bridge Protocol Data Unit (BPDU) yang mereka kirim ke satu user terdekat dengan yang mereka peroleh dari user terdekat yang lain.
  • Bridge ID adalah bagaimana STP mengidentifikasi semua switch dalam network. ID ini ditentukan oleh sebuah kombinasi dari apa yang disebut bridge priority (yang bernilai 32.768 secara default pada semua switchj Cisco) dan alamat MAC dasar. Bridge dengan bridge ID terendah akan menjadi root bridge dalam network. STP mendefinisikan pesan yang disebut bridge protocol data units (BPDU), yang digunakan oleh switch untuk bertukar informasi satu sama lain. Pesan paling utama adalah Hello BPDU.
  • Nonroot bridge adalah semua bridge yang bukan root bridge. Nonroot bridge bertukar BPDU dengan semua bridge dan mengupdate topologi database STP pada semua switch, mencegah loop-loop dan menyediakan sebuah cara bertahan terhadap kegagalan link.
  • Root port selalu merupakan link yang terhubung secara langsung ke root bridge atau jalur terpendek ke root bridge. Jika lebih dari satu link terhubung ke root bridge maka sebuah cost dari port ditentukan dengan mengecek bandwidth dari setiap link. Port dengan cost paling rendah menjadi root port. Jika banyak link memiliki cost yang sama maka bridge dengan bridge ID diumumkan yang lebih rendah akan di gunakan. 
  • Designated port adalah sebuah port yang telah ditentukan sebagai cost yang terbaik (cost lebih rendah) daripada port yang lain. Sebuah designated port akan ditandai sebagai sebuah fowarding port (port yang akan mem forward frame).
  • Port Cost menentukan kapan sebuah link dari beberapa link yang tersedia digunakan di antara dua switch dimana kedua port ini bukan root port. Cost dari sebuah link ditentukan oleh bandwidth dari link.
  • Nondesignated port adalah port dengan sebuah cost yang lebih tinggi daripada designated port, yang akan ditempatkan di mode blocking. 
  • Fowarding port meneruskan atau memfoward frame.
  • Blocked port adalah port yang tidak meneruskan frame-frame, untuk menghindari loop-loop. Namun Blocked Port akan selalu mendengarkan frame.
  • Switch memperlakukan EtherChannel sebagai interface tunggal berkenaan dengan proses memforward frame seperti halnya juga STP. Ether Channel mengkombinasikan beberapa segment parallel yang memiliki kecepatan yang sama menjadi satu.  Hasilnya, jika salah satu link gagal, tapi salah satu link lain dalam EtherChannel masih beroperasi, maka STP tidak akan terjadi. EtherChannel juga menyediakan bandwidth yang lebih banyak. Trunk-trunk pada EtherChannel berada pada status forwarding semua atau blocking semua, karena STP memperlakukan semua trunk pada EtherChannel sebagai 1 trunk. Saat EtherChannel berada pada status forwarding, maka switch akan melakukan load-balance (membagi rata) traffik pada semua trunk, sehingga bandwidth yang tersedia jadi lebih banyak.
  • Port Fast memungkinkan switch untuk menempatkan sebuah interface kedalam status forwarding secara langsung tanpa harus menunggu 50 detik.
Ketika ada interface atau switch yang gagal beroperasi, maka topology STP akan berubah; dengan kata lain terjadi STP convergence, yaitu :
  • Interface yang tetap berada dalam status yang sama, maka tidak perlu ada perubahan.
  • Interface yang harus berubah dari forwarding menjadi blocking, maka switch akan langsung merubahnya menjadi blocking.
  • Interface yang harus berubah dari blocking menjadi forwarding, maka switch pertama kali akan mengubahnya menjadi listening, kemudian menjadi learning.Setelah itu interface akan diletakkan pada status forwarding.
Tulisan ini ditujukan untuk melengkapi keperluan tugas pada matakuliah manajemen jaringan dengan dosen Bapak Raka Yusuf yang dilakasanakan setiap hari senin jam 10.45 di ruangan D-401.
Kelompok : Dedy Yogi Saputera
                    Fakhreza Ulul Albab
                    Ipin

Selasa, 06 April 2010

Hanoi Tower

gan, w ada program C++ nih, 
namanya Hanoi Tower...
my writing see ya..



#include
#include
#include
#include
#include
void hanoi(int x, char dari,char ke,char aux)
{

if(x==1)
{
printf("Perpindahan Kepingan %c Dari %c\n",dari,ke);
}
else
{
hanoi(x-1,dari,aux,ke);
printf("Perpindahan Kepingan Dari %c Ke %c\n",dari,ke);
hanoi(x-1,aux,dari,ke);
}

}
void main()
{
int kepingan;
int perpindahan;

printf("Masukkan Banyaknya Keping Yang Ingin Dimainkan :");
scanf("%d",&kepingan);
perpindahan=pow(2,kepingan)-1;
printf("\nPerpindahan Yang Harus Dilakukan Adalah=%d \n",perpindahan);
hanoi(kepingan,'A','C','B');
getch();
}

Senin, 11 Januari 2010

Belajar Membuat Aplikasi Sms di Handphone J2ME

pagi2 gni mau ngasih informasi cara buat aplikasi sms di hamdphone J2ME


langsung ajah deh di simak di bawah ini:

Sebelum mempelajari sesuatu biasanya karena seseorang itu ingin bisa sesuatu juga, contoh belajar nyetir mobil agar nyetir mobil dan syukur syukur agar bisa beli mobil, belajar komputer dan internetan agar bisa FS-an, belajar pemrograman JAVA karena agar bisa dapet nilai yang bagus dari pak Dosen…hayah ga nyambung kabeh. sudah lupakan contoh contoh tadi.
Dulu awal aku belajar J2ME karena ingin bisa membuat aplikasi di handphone yang bisa kirim sms. Walopun udah sering belajar tapi ternyata masih sedikit kebisaanku dalam hal ini, tapi jangan putus asa, aku harus giat belajar…. oya bagi yang baru belajar sama seperti aku dibawah ini nanti ada source code aplikasi untuk kirim dan terima sms. masih sederhana sih. makanya ini hanya bagi yang baru belajar aja, liat aja sesuai dengan judulnya kan. Bagi yang udah master mohon koreksi ya jika ada yang salah. trus kalo ada yang mau belajar dan mendiskusikan source code yang aku buat ini, semoga ini bisa menjadi ajang buat diskusi. dan dibikin asik aja.
Ok. source codenya (beserta penjelasannya, walopun gak informatif banget tp lumayan lah) adalah :
001.import java.util.*;
002.import java.io.IOException;
003.import javax.microedition.io.*;
004.import javax.microedition.lcdui.*;
005.import javax.wireless.messaging.*;
006.import javax.microedition.midlet.*;
007. 
008./**
009.* @author MasWawa
010.* @see 
011.*/
012.public class smsKu extends MIDlet implements CommandListener, Runnable,
013.MessageListener {
014. 
015.Display display;
016.Form form;
017.List menuList; //list untuk menu awal
018.Command exitCom, replyCom, backCom, clrCom, sendCom; //macem macem command yg digunakan
019.TextBox textSmsMasuk, textSmsKeluar; //tempat untuk text sms yg masuk dan yg mau dikirim
020.TextField textNo; //untuk tempat memasukan no tujuan
021.String port, isiSmsKeluar; //port dan isi sms
022.Thread thread;
023.String[] connections;
024.boolean done;
025.MessageConnection smsconn;
026.Message msg;
027. 
028.public smsKu() {
029.display = Display.getDisplay(this);
030.form = new Form("sms-an Yuk");
031.exitCom = new Command("keluar", Command.EXIT, 1);
032.replyCom = new Command("balas", Command.SCREEN, 1);
033.backCom = new Command("Kembali", Command.BACK, 3);
034.clrCom = new Command("Hapus Tulisan", Command.OK, 2);
035.sendCom = new Command("Kirim", Command.OK, 1);
036.menuList = new List("Menu sms Ku", List.IMPLICIT);
037.port = "4321"; //port yang aku gunakan, silakan ganti sesuai keinginan masing masing
038.textSmsMasuk = new TextBox(null, null, 500, TextField.ANY);
039.textSmsKeluar = new TextBox("Silakan Menulis Sms", null,
040.500, TextField.ANY);
041.textNo = new TextField("Masukan Nomor Tujuan", "",
042.15, TextField.PHONENUMBER);
043.}
044. 
045.public void startApp() {
046.bukaKoneksi(); //disini membuka koneksi untuk siap menerima sms masuk
047.menu(); // bikin tampilan menu awal
048.}
049. 
050.public void pauseApp() {
051.}
052. 
053.public void destroyApp(boolean unconditional) {
054. 
055.//sebelum aplikasinya keluar ato mati koneksi ditutup dulu
056.done = true;
057.thread = null;
058.if (smsconn != null) {
059.try {
060.smsconn.close();
061.} catch (IOException e) {
062.}
063.}
064. 
065.//disini mati deh aplikasi kita
066.notifyDestroyed();
067.}
068. 
069.public void menu() { //membuat menu awal untuk sementara ini baru ada 3 menu dulu
070.menuList.append("Tulis Sms", null);//1. menu tulis sms baru
071.menuList.append("about", null);      //2. menu about (gak penting sih sebenarnya)
072.menuList.append("Keluar", null);     //3. menu untuk keluar aplikasi
073.menuList.addCommand(exitCom);  //add command keluar
074.menuList.setCommandListener(this);
075.display.setCurrent(menuList);
076.}
077. 
078.public void tulisSms() { //membuat textbox untuk menulis sms baru
079.textSmsKeluar.addCommand(sendCom); //add command untuk kirim
080.textSmsKeluar.addCommand(clrCom);  // add command untuk clear text
081.textSmsKeluar.addCommand(backCom); //add command untuk kembali kemenu awal
082.textSmsKeluar.setCommandListener(this);
083.display.setCurrent(textSmsKeluar);
084.}
085. 
086.public void masukNo() { //disini untuk memasukan nomor tujuan yang mau dikirimi sms
087.form.setTitle("Sms Siap dikirim"); //udah taukan yang ini?
088.form.append(textNo); //menambahkan textField untuk nomor tujuan
089.form.addCommand(backCom); //menambahkan command untuk kembali ke menu awal
090.form.addCommand(sendCom); //menambahkan command untuk mengirim
091.form.setCommandListener(this);
092.display.setCurrent(form);
093.}
094. 
095.public void kirim() { //disini sms yang udah ditulis dikirim dengan perintah dibawah ini
096.new Thread(new Runnable() {
097.//perhatiin ya
098.public void run() {
099.try {
100.String isiSms = isiSmsKeluar;
101.String noTujuan = textNo.getString();
102.String address = "sms://" + noTujuan + ":" + port;
103.MessageConnection smsConnKir = null;
104.Message isiSmsNya = null;
105.smsConnKir = (MessageConnection) Connector.open(address);
106.TextMessage txtmessage =
107.(TextMessage) smsConnKir.newMessage(MessageConnection.TEXT_MESSAGE);
108.txtmessage.setAddress(address);
109.txtmessage.setPayloadText(isiSms);
110.isiSmsNya = txtmessage;
111.smsConnKir.send(isiSmsNya);
112. 
113.} catch (Throwable t) {
114.t.printStackTrace();
115.}
116.}
117.}).start();
118.}
119. 
120.public void terima(String isi, String no, Date tgl) { //ini untuk tempat membaca sms yang masuk
121.String nonya = fixNomer(no);
122.textSmsMasuk = new TextBox("Sms dari:" + nonya + " " + tgl, isi,
123.isi.length(), TextField.ANY);
124.textSmsMasuk.addCommand(replyCom);
125.textSmsMasuk.addCommand(exitCom);
126.textSmsMasuk.setCommandListener(this);
127.display.setCurrent(textSmsMasuk);
128.}
129. 
130.public void bukaKoneksi() { //membuka koneksi agar bisa menerima sms yg masuk
131.String smsConnection = "sms://:" + port;
132.done = true;
133.thread = null;
134. 
135.try {
136.smsconn = (MessageConnection) Connector.open(smsConnection);
137.smsconn.setMessageListener(this);
138.} catch (IOException ioe) {
139.ioe.printStackTrace();
140.}
141. 
142.connections = PushRegistry.listConnections(true);
143. 
144.done = false;
145.thread = new Thread(this);
146.thread.start();
147.}
148. 
149.public void tutupKoneksi() { //untuk menutup koneksi sms
150.try {
151.smsconn.close();
152.} catch (IOException e) {
153.}
154.}
155. 
156.public String fixNomer(String no) {
157.//dari format no gini "sms://+6285XXXX" jadi "+6285XXX" gitu fungsinya disini itu
158. 
159.String hs = null;
160.hs = no.substring(6, no.length());
161.return hs;
162.}
163. 
164.public void commandAction(Command c, Displayable d) {
165.if (c == exitCom) {
166.destroyApp(true);
167.}
168.if (d == menuList) {
169.if (menuList.isSelected(0)) {
170.tulisSms();
171.} else if (menuList.isSelected(1)) {
172.Alert about = new Alert("About", "Aplikasi SMS buatan sendiri",
173.null, AlertType.INFO);
174.display.setCurrent(about);
175.} else if (menuList.isSelected(2)) {
176.destroyApp(true);
177.}
178.}
179.if (d == textSmsKeluar) {
180.if (c == sendCom) {
181.form.deleteAll();
182.masukNo();
183.} else if (c == clrCom) {
184.textSmsKeluar.setString("");
185.} else if (c == backCom) {
186.display.setCurrent(menuList);
187.}
188.}
189.if (d == textSmsMasuk) {
190.if (c == exitCom) {
191.display.setCurrent(menuList);
192.} else if (c == replyCom) {
193.tulisSms();
194.}
195.}
196.if (d == form) {
197.if (c == backCom) {
198.form.deleteAll();
199.display.setCurrent(textSmsKeluar);
200.} else if (c == sendCom) {
201.isiSmsKeluar = textSmsKeluar.getString();
202.textSmsKeluar.setString("");
203.kirim();
204.}
205.}
206.}
207. 
208.public void run() { //untuk menerima sms yang masuk
209.try {
210.msg = smsconn.receive();
211.String senderAddress = msg.getAddress();
212.Date waktuSms = msg.getTimestamp();
213.if (msg instanceof TextMessage) {
214.String isiSmsMasuk = ((TextMessage) msg).getPayloadText();
215.terima(isiSmsMasuk, senderAddress, waktuSms);//ini memasukan sms yg diterima ke textbox
216.}
217.tutupKoneksi();
218.bukaKoneksi();
219.} catch (IOException e) {
220.}
221.}
222. 
223.public void notifyIncomingMessage(MessageConnection conn) {
224.if (thread == null) {
225.done = false;
226.thread = new Thread(this);
227.thread.start();
228.}
229.}
230.}
setelah source code nya, biar afdol tak kasih juga scrinsutnya:
skrinsut1
diatas ini skrinsut awal saat aplikasi dijalankan. ada 3 menu. lumayankan kalo untuk belajar. besok di tambah lagi ada menu inboxnya. sengaja tak jalankan di dua emulator agar bisa dicoba buat kirim dan menerima sms. hp putih akan mencoba mengirim sms ke hp hitam. si putih tadi memilih menu “Tulis Sms”
skrinsut2
Sekarang si putih menulis pesan yang akan dikirimnya, si hitam stand by aja.
skrinsut3
Setelah dirasa cukup menulis pesannya, si putih memilih tomb0l kirim dan memasukan no tujuan punya si hitam. kemudian siputih menekan tombol kirim.
skrinsut4
kita liat setelah si putih menekan tombol kirim ga berapa lama sihitam menerima sms yang dikirim oleh si putih, dan di bacanya. Karena ditanyain kabarnya, si hitam ingin membalas sms dari siputih tadi. maka dia pilih tombol balas. si putih tentunya diem aja, karena menunggu balesan sms nya.
skrinsut5
Si hitam menulis sms balasannya, dah cukup menulis, si hitam tekan tombol kirim.
skrinsut6
si hitam memasukan no tujuan punya si putih, dan dikirim sms balesannya.
skrinsut7
Alhammdulillah sms balesan dari si hitam udah masuk ke si putih dan sedang dibaca oleh si putih.
Nah begitu seterusnya si putih kemudian membalas lagi, si hitam juga. mereka saling berbalas sms sampe pulsa mereka habis, selain itu juga jempol mereka udah capek ngetik sms. ceritanya sampe disini dulu.
Nah lo menu yang lain kok ga di peragakan juga? gak ah, bisa coba sendiri, namanya belajar kok jadi harus banyak coba coba sendiri kan?
diatas tadi sekilas source code untuk kirim dan terima sms dengan j2me, besok aplikasi diatas ditambah dengan menu inbox, outbox, trus menu settings…udah deh kebanyakan. untuk menyimpan Sms di inbox dan outbox enaknya pake database aja nih. pake RMS tentunya. jadi belajar dulu RMS y...
hihihihi
Sekian semoga bermanfaat.

Prinsip Dasar Pemrograman PHP

kali ini saya akanmembahas tentang 

Prinsip Dasar Pemrograman PHP


Sebelum lebih jauh mari kita kenali dulu struktur dan aturan dasar dalam pemrograman PHP. Dalam tutorial kali ini alat yang diperlukan yaitu:
  • Editor text yang bagus, bukan sekedar notepad. Tapi kita membutuhkan editor text yang memberikan kemudahan kepada kita misalnya text highliting, auto completion, line numbering dll. Penulis memakai Notepad++.
  • Browser: Firefox, opera atau IE
a. Awal dan Akhir Tags PHP
Pada contoh di bawah ini kita akan menggunakan sebagai akhir tags PHP. Semua karakter di dalam tags PHP ( sesudah ) akan diolah oleh intrepeter PHP. Sedangkan di luarnya ( sebelum ) akan diabaikan oleh intrepeter PHP.
Untuk jelasnya mari kita lihat contoh berikut:
  1. Lima ditambah lima sama dengan:   
  2.  

  3. Tiga ditambah tiga sama dengan :  
  4. print 3 + 3;  
  5. ?>  

  6.  
  7. "http://www.gecko.web.id">gecko  
  8. "http://www.gecko.web.id/watermark.jpg">  
Contoh di atas sama saja dengan kode HTML berikut:
  1. Lima ditambah lima sama dengan:   
  2. 10
  3. Tiga ditambah tiga sama dengan :  
  4. 6
  5. "http://www.gecko.web.id">gecko  
  6. "http://www.gecko.web.id/watermark.jpg">

Di PHP versi-versi terdahulu juga menggunakan short open tags. Tags ini masih berfungsi di PHP 5 akan tetapi dapat dinon aktifkan dengan merubah konfigurasi PHPnya. jadi lebih baik menggunanan
b. Whitespace
  1. "Hello"; print " World!"; ?
Perhatikan kode di atas. Sulit dibaca bukan? akan lebih baik apabila ditulis demikian.

  1. print "Hello";   
  2. print " World!";   
  3. ?> ;  
Lebih mudah dibaca bukan?
Berikut penulisan yang kurang pas, walaupun menghasilkan tampilan yang sama di browser

  1.   
  2. print "Hello";   
  3.   
  4. print " World!";   
  5.   
  6. ?> ;  
  7. Terlalu mengumbar enter heheheh.
  8. Kalau yang dibawah terlalu banyak spasinya.  

  9. print "Hello"           ;   
  10. print     " World!"     ;   
  11. ?> ;  
  12. kalo yang di bawah ini terlalu mepet. terlalu pelit spasi
  13. "empet-empetan jadi susah bacanya"; ?> ;  
c. Case-Sensitivity
Fungsi-fungsi di PHP tidak case sensitive. Jadi tidak ada perbedaan anatara penggunaan huruf besar dan kecil. Contoh di bawah ini menghasilkan output yang sama.
  1. // Empat baris script ini menghasilkan output yang sama  
  2.   
  3. print number_format(285266237);  
  4.   
  5. PRINT Number_Format(285266237);  
  6.   
  7. Print number_format(285266237);  
  8.   
  9. pRiNt NUMBER_FORMAT(285266237);  
Di beberapa sumber menyebutkan bahwa eksekusi fungsi dengan huruf kecil lebih cepat daripada fungsi yang ditulis dengan huruf besar atau ditulis menggunakan kombinasi huruf besar dan kecil. Jadi ga ada ruginya menggunakan huruf kecil saja, betul?
Catatan: Berbeda halnya kalau berurusan dengan file. Di server dengan mesin LINUX penamaan file adalah case sensitif. File dengan nama gecko.jpg berbeda dengan GECKO.JPG
d. Comment
Di PHP ada 2 macam comment:
  • single line comment
  • multi line comment
Single Line Comment bisa menggunakan # atau //
Contoh penggunaannya sebagai berikut:
  1. print "Belajar PHP bareng gecko"; //ini adalah komentar  
  2. //bisa juga ditulis di sini  
  3. print "Belajar menuliskan komentar di PHP"
    ; #bisa juga memakai tanda pagar  
  4. #menggunakan tanda pagar untuk komen  
  5. #ini juga masih komen  
  6. //belajar itu enaknya praktek langsung, betul????  
  7. ?> 
Multi line comment menggunakan tanda /* sebagai awal dan */ sebagai akhir komentar
Contoh penggunaannya sebagai berikut:
  1. echo 'ini kode PHP';  
  2. /* INI ADALAH CONTOH PENGGUNAAN KOMEN 
  3. di bagian ini masih komen 
  4. ini juga masih komen 
  5. emmmm.. belajar PHP menyenangkan yah... 
  6. - betul?? 
  7. -  walaupu ada kode PHP 
  8. di dalam juga masih di anggap komen. Betul??? 
  9.  tags HTML juga ga masalah 
  10. - tetep dianggap komen 
  11. INI AKHIR KOMENNYA> LIHAT TANDANYA */  
  12. echo 'Kalo ini sudah bukan komentar lagi';  
  13. ?> ;  
catatan: kalo HTML komennya seperti ini
  1.  
  2. echo 'hai..... aku ditulis pake PHP'; //hi aku komen PHP   
  3. ?> ;  
saudara-saudara sekalan...
mohon bimbingan nya untuk saya yang lebih baik dari hari k hari.....

comment nya jangan lupa y?