Session Layer – OSI Layer Series

Session Layer adalah salah satu layer dalam model OSI Layer. Layer ini adalah layer kelima atau layer yang berada di bawah presentation layer dan di atas transport layer. Session layer termasuk ke dalam upper layer yang berada di lingkungan aplikasi.

Secara umum layer ini berhubungan dengan sesi / koneksi yang sedang atau akan terjadi antara client dan server. Beberapa fungsi yang spesifik terkait layer ini adalah:

  1. Memulai, merawat, dan mengakhiri sesi komunikasi jaringan
  2. Bertanggung jawab dalam pengenalan nama / identifikasi sehingga hanya bagian tertentu yang dapat berpartisipasi dalam sesi.
  3. Memberikan layanan sinkronisasi dengan merancang checkpoint dalam arus data. Jika sesi rusak, data setelah checkpoint yang perlu ditransmisikan.
  4. Mengatur siapa yang dapat mentransmisikan data pada suatu waktu tertentu dan dalam jangka waktu tertentu.
  5. Melakukan connect dan re-connect jika terdapat pesan interupsi; identifikasi nama dan sesi, serta meregister nama dalam informasi history.

Beberapa protokol yang menggunakan layer ini adalah:

  1. NetBIOS
  2. Names Pipes
  3. Mail Slots
  4. RPC
Advertisements

Presentation layer – OSI Layer Series

Presentation Layer adalah salah satu layer dalam model OSI Layer. Layer ini adalah layer keenam atau layer yang berada di bawah application layer dan di atas Session Layer. Presentation layer termasuk ke dalam upper layer yang berada di lingkungan aplikasi.

Secara umum layer ini melakukan pengubahan data yang dibutuhkan antara aplikasi dan jaringan. Beberapa fungsi yang lebih spesifik terkait layer ini adalah:

  1. Mentranslasi informasi aplikasi ke format jaringan, begitu juga sebaliknya
  2. Format berbeda dari beragam sumber dibuat ke format umumd an seragam yang dapat dipahami oleh OSI model
  3. Bertanggung jawab atas konversi protokol, konversi karakter, enkripsi dan dekripsi data, perluasan perinbtah grafis, kompresi data
  4. Mengatur standar untuk sistem berbeda agar bisa berkomunikasi tanpa-kelim untuk multi stack protocol
  5. Tidak selalu diimplementasikan dalam protokol jaringan

Sejauh yang saya ketahui (4 Maret 2012) tidak ada protokol yang berjalan di layer ini. Protokol ini benar-benar konseptual.

Application Layer – OSI Layer series

Application Layer adalah salah satu layer dalam OSI Layer model. Layer ini termasuk ke dalam kategori upper layer atau layer yang berinteraksi dekat dengan pengguna. Secara urutan, layer ini adalah layer yang berada di urutan paling atas, di atas Presentation Layer.

Secara umum layer ini menangani user interface. Lebih spesifik, fungsi-fungsi yang ditangani layer ini adalah:

  1. Sebagai layer yang digunakan aplikasi, terutama yang dirancang untuk berjalan di atas jaringan.
  2. Membuka peluang akses ke layanan jaringan yang mendukung aplikasi
  3. Merepresentasikan layanan yang secara langsung mendukung applikasi user
  4. Menangani akses jaringan, pengontrolan alur, dan recovery error

Beberapa protokol yang menggunakan layer ini adalah:

  1. DNS (Domain Name Service)
  2. FTP (File Transfer protocol)
  3. TFTP (Trivial File Transfer Protocol)
  4. BOOTP (BOOTstrap Protocol)
  5. SNMP (Simple Network Management Protocol)
  6. RLOGIN
  7. SMTP (Simple Mail Transfer Protocol)
  8. MIME
  9. NFS (Netfork File System)
  10. FINGER
  11. TELNET

Daftar Perintah FTP

Artikel ini adalah rangkuman dari perintah-perintah yang digunakan oleh protokol FTP. Perintah terurut sesuai abjad dari awal hingga akhir

No Perintah  Deskripsi
 1  ABOR  abort / membatalkan operasi transfer yang sedang berlangsung
 2  ACCT  mendapatkan informasi akun (account)
 3  ADAT  autentikasi data
 4  ALLO  alokasi sebagian disk dengan ukuran yang cukup untuk menerima file
 5  APPE  append / menambah file di akhir
 6  AUTH  mekanisme autentikasi
 7  CCC  menghapus Channel Command
 8  CDUP  mengubah ke parent directory
 9  CONF  Confidentiality Protection Command
 10  CWD  mengubah direktori kerja saat ini
 11  DELE  menghapus file
 12  ENC  Privacy Protected Channel
 13  EPRT  memberikan extended address dan port yang harus dihubungi
 14  EPSV  memasuki extended passive mode
 15  FEAT  mendapatkan daftar fitur yang diimplementasi server
 16  HELP  meminta bantuan tentang daftar perintah
 17  LANG  Language Negotiation
 18  LIST  mengembalikan informasi file atau direktori, jika tidak dispesfikasi maka informasi tentang direktori saat ini akan dikembalikan
 19  LPRT  memberikan informasi long address dan port untuk dihubungi
 20  LPSV  memasuki mode pasif dengan jangka waktu lama
 21  MDTM  mengembalikan waktu terakhir file diperbaharui
 22  MIC  Integrity Protected Command
 23  MKD  membuat direktori
 24  MLSD  mendaftar isi direktori jika direktori dinamai
 25  MLST  menyediakan data tentang objek tertentu jika diberikan pada perintah, bukan yang lain
 26  MODE  mengatur mode transfer (stream, block, atau compressed)
 27  NLST  mengembalikan daftar nama file di direktori tertentu
 28  NOOP  No Operation (dummy packet, digunakan agar koneksi terjaga / tak terputus)
 29  OPTS  memilih opsi / pilihan untuk sebuah fitur
 30  PASS  autentikasi password
 31  PASV  menggunakan passive mode untuk berkomunikasi
 32  PBSZ  Protection Buffer Size
 33  PORT  memberikan informasi spesifik tentang nomor port yang harus dihubungi
 34  PROT  Data Channel Protection Level
 35  PWD  menampilkan direktori saat ini
 36  QUIT  disconnect / putuskan sambungan ke server
 37  REIN  inisialisasi (reinitialize) koneksi
 38  REST  mengirimkan salinan dari file
 39  RMD  menghapus direktori
 40  RNFR  mengubah nama file dari (rename from)
 41  RNTO  mengubah nama file ke (rename to)
 42  SITE  mengirim perintah spesifik ke server
 43  SIZE  mengembalikan informasi ukuran file
 44  SMNT  mount file structure
 45  STAT  mengembalikan status terkini
 46  STOR  menerima data dan menyimpan data sebagai file dalam server
 47  STOU  menyimpan file secara unik (tak boleh ada file bernama sama)
 48  STRU  mengatur file transfer structure
 49  SYST  mengembalikan informasi jenis sistem
 50  TYPE  mengatur mode pengiriman (transfer mode) yaitu: ASCII atau binary
 51  USER  autentikasi username
 52  XCUP  mengganti parent dari direktori saat ini
 53  XMKD  membuat direktori
 54  XPWD  menampilkan direktori saat ini
 55  XRCP
 56  XRMD  menghapus direktori
 57  XRSQ
 58  XSEM  mengiri, jika tidak bisa akan dialihkan ke mail
 59  XSEN  mengirim (send) ke terminal

File Transfer Protocol

File Transfer Protocol (ftp) adalah suatu protocol atau set aturan yang digunakan untuk transfer data.  Lebih jauh lagi, FTp saat ini adalah protokol jaringan standard yang digunakan secara luas untuk berkirim data dari satu host ke host lain melintasi jaringan berbasis TCP.

FTP sering digunakan untuk mengunggah (upload) maupun mengunduh (download) halaman web, dan dokumen lainnya dari mesin lokal (yang digunakan sebagai mesin development) ke server web hosting publik. Tak jarang juga ftp digunakan untuk mengambil data dari server dan didevelop lebih lanjut di dalam mesin lokal.

Protokol FTp dibangun dengan arsitektur clientserver (tentu saja) dan menggunakan koneksi data dan kendali terpisah / berbeda antara client dan server. Pengguna ftp dapat melakukan otentikasi diri mereka, umumnya menggunakan username dan password. Tapi kadang juga ada beberapa ftp yang memperbolehkan user terkoneksi secara anonim.

Untuk membangun server yang mendukung ftp tentu saja kita memerlukan sebuah server ftp. Banyak aplikasi server ftp gratis, seperti: FileZilla FTP Server, vftp, wingftp, ApacheFTP, dan masih banyak lagi

Sedangkan untuk mesin client, kita dapat menggunakan FileZilla FTP Client, Total Commander, dll

Lihat juga perintah yang ada di protokol ftp yang ada di sini.

Pengenalan 7 Lapis OSI Layer

Open System interconnection (OSI) Layer adalah suatu standard yang umum digunakan dalam jaringan dewasa ini. Model OSI Layer menjelaskan bagaimana informasi bergerak dari satu komputer ke komputer lain melintasi media jaringan.

OSI Layer terdiri dari 7 layer (lapisan) konseptual. Masing-masing layer adalah suatu “kelompok” tugas yang lebih kecil dari skema besar. Pembagian ini tentu saja menyebabkan pembagian kerja yang lebih jelas dan juga lebih praktis sehingga setiap instrumen dapat dengan mudah dikelola.

Pembagian ketujuh layer tersebut dilihat dari aliran data saat pengiriman dan penerimaan data.

Tujuh layer tersebut adalah:

  1. Physical
  2. Data Link
  3. Network
  4. Transport
  5. Session
  6. Presentation
  7. Application

Secara garis besar, OSI Layer terbagi menjadi dua kategori atau kelompok, yaitu:

  1. Upper layer
  2. Lower layer

Upper layer (layer lebih tinggi) merupakan layer OSI yang berhubungan dengan lingkungan aplikasi. Semakin tinggi, layer ini semakin dekat berinteraksi dengan user.

Lower layer (layer lebih rendah)_ merupakan layer OSI yang menangani isu transportasi data. Layer-layer ini lebih dekat ke arah mesin, terutama Physical Layer yang langsung menangani media fisik jaringan, misal kabel, dan bertanggung jawab terhadap penempatan informasi dalam media.

Penjelasan lebih lengkap untuk masing-masing layer dapat ditemukan pada setiap artikel berikut:

  1. Application
  2. Presentation
  3. Session
  4. Transport
  5. Network
  6. Data Link
  7. Physical

Unicode??

Sering kita mendengar kata unicode.. Sebenarnya apa sih unicode itu? Nah artikel ini akan membahas sebagian tentang unicode. Penasaran?

Unicode, definisi dan spesifikasi

Unicode adalah sebuah kumpulan karakter yang universal. Unicode adalah standard yang dirancang untuk mengizinkan teks dan simbol dari semua sistem tulisan di dunia untuk ditampilkan serta dimanipulasi secara konsisten oleh komputer. Ia adalah sebuah standard, bukan encoding  Hingga saat ini, pengembangan unicode masih berjalan dan standard ini telah mengenali sekitar 110.000 simbol di seluruh dunia.

Unicode mengandung kumpulan karakter, kumpulan bagan kode untuk referensi visual, metodologi pengodean dan kumpulan standar penyandian karakter, deskripsi sifat karakter seperti huruf besar dan huruf kecil (termasuk arah penulisan dari kiri atau dari kanan), kumpulan data referensi berkas komputer, aturan normalisasi, dekomposisi, collation, dan rendering.

Versi terakhir unicode (tahun 2012) adalah Unicode 6.1

Unicode sebagai standard, UTF dan UCS sebagai encoding

Unicode sebagai standard, acuan terhadap daftar karakter yang ada dan dikenali. Terdapat beberapa mekanisme untuk memetakan dan menggunakan karakter yang ada di dalam unicode. Dikenallah Unicode Transformation Format (UTF) dan Universal Character Set (UCS) sebagai encoding (pengimplementasi unicode).

Bingung? Sebenarnya nggak terlalu sulit dipahami kok. Dibandingkan dengan tabel ASCII yang pernah saya bahas, unicode bersifat lebih luas lagi. Ia bukan hanya mengorganisir karakter yang ada tetapi juga memberikan informasi bagaimana direpresentasikan serta bagaimana karakteristik-karakteristiknya. Maksudnya adalah penulisan  huruf Arab dilakukan dari kanan ke kiri sementara huruf latin sebaliknya. Itulah yang  distandardkan oleh unicode.

Unicode Transformation Format sendiri ada beberapa macam, tapi yang dipakai saat ini adalah UTF-8 dan UTF-16.

Beberapa Jenis Programmable Chip

Dalam dunia digital, dikenal istilah chip elektronis. Chip adalah suatu modul digital yang dapat melakukan suatu fungsi atau kerja tertentu. Ada dua jenis chip / integrated circuit (IC), yaitu: ASIC (Application Specific Integrated Circuit) dan Programmable Circuit. ASIC adalah chip khusus yang diproduksi oleh pabrik untuk menyelesaikan persoalan khusus (spesifik terhadap masalah tertentu). Sementara Programmable Circuit adalah chip yang dapat dapat diprogram ulang untuk menjalankan fungsi atau rutin yang bervariasi tergantung kepada sang pemakai. Apa saja jenis programmable circuit yang ada?

FPGA

Field Programmable Gate Array (FPGA) adalah komponen elektronika yang dapat diprogram ulang. Komponen ini terdiri dari gerbang-gerbang logika yang tersusun sebagai array dengan hubungan antar gerbang yang dapat diatur langsung oleh programmer. Selain itu FPGA biasanya juga memiliki elemen memori yang telah tersemat. Salah satu produk FPGA yang terkenal berasal dari Altera.

Harga FPGA relatif lebih murah. Chip ini juga dapat diprogram sesuai kebutuhan (multi purpose).

CPLD

Complex Programmable Logic Device (CPLD) adalah piranti yang dapat diprogram dengan kompleksitas antara PAL dan FPGA. Secara arsitektural CPLD memberikan kedua fitur  dari kedua chip tersebut. Salah satu kemampuan CPLD adalah ia dapat langsung berjalan/ start up berkat adanya ROM internal.

PAL

Programmable Array of Logic (PAL) adalah chip sederhana yang dapat diprogram dengan 2 jenis gerbang logika sebagai penyusun logic array. Arsitektur PAL sangat sederhana. Gerbang-gerbang OR disusun membentuk array kemudian setiap input yang ada disusun melintang terhadap input ke gerbang.

Program Generik

Membaca judulnya agak aneh mungkin untuk orang awam. Tapi ini tak ada kaitannya dengan obat generik atau semacamnya. Bukan sama sekali.

Program generik adalah program yang ditulis sekali dan dapat dipakai berkali-kali untuk data beragam tanpa harus mengubah inti dari algoritma. Ya! Program generik dapat memberikan kita keleluasaan dengan hanya menulis kode umum hanya sekali dan selanjutnya kode tersebut dapat dipakai ulang untuk tipe data berbeda namun memiliki karakteristik yang sama.

Salah satu bahasa pemrograman terkenal yang mengimplementasikan pemrograman generik adalah C++. Di dalam bahasa C++, untuk membuat fungsi yang bersifat generik, kita hanya perlu menambahkan perintah template.

Template adalah mekanisme yang digunakan untuk mendukung pemrograman generik di C++. Cara kerjanya cukup sederhana, yakni dengan mengaburkan tipe data yang ingin diolah. Data yang akan diolah baru benar-benar diolah dan dilewatkan ke fungsi setelah pemanggilan. Mengerti?? Kalau nggak terima saja dulu, hehehe.

Umumnya sintaks untuk membuat fungsi generic adalah:

template<typename T> tipe_kembalian nama_fungsi(parameter)

Penjelasan:

  1. template: kata kunci untuk mendapatkan fitur template
  2. typename T: mengatakan bahwa tipe data yang akan dilewatkan nantinya akan digantikan oleh simbol T. Dengan kata lain, T akan “merepresentasikan” tipe data yang nantinya akan dilewatkan ke fungsi.

Contoh pemakaiannya adalah:

template<typename T> void swap(T& elemen1, T& elemen2) {

T elmt = elemen1;

elemen1 = elemen2;

elemen2 = elmt;

}

Static Member pada C++

Cukup lama nggak posting tentang programming. Artikel kali ini akan menilik tentang konsep static member  pada konsep OOP di C++.

Pengertian

Dalam C++, sebuah objek dapat memiliki data statik. Apa itu data statik? Data statik adalah data / variabel anggota yang dideklarasikan / diciptakan dalam lingkup kelas namun tak terikat oleh setiap objek yang diciptakan dari kelas tersebut. Dengan kata lain data tersebut dapat dipakai bersama oleh seluruh objek yang diciptakan dari kelas yang sama.

Karena karakteristik tersebut, sebuah data statik haruslah diperlakukan khusus. Untuk menggunakan data statik, kita harus menyediakan lokasi terlebih dahulu di stack (lihat artikel tentang stack dan heap) sebelum menciptakan objek apapun. Kita dapat melakukannya dengan melakukan deklarasi variabel seperti biasa di luar lingkup kelas yang bersangkutan. Contoh:

class Kelas {

public:

static int data_statik;

};

int Kelas::data_statik = 10;

Perhatikan bahwa meskipun kita mendefinisikan anggota di luar kelas, kita harus tetap memberitahu kepada compiler tentang lingkup dari variabel tersebut. Pada contoh di atas, lingkup kelas yang dimaksud adalah kelas:: yang artinya variabel statik data_statik merupakan anggota Kelas.

Setiap objek yang tercipta dapat memanipulasi data_statik seperti halnya memanipulasi data anggota kelas lainnya. Tak ada perlakuan khusus untuk manipulasi.

Ketika sebuah objek dari Kelas diciptakan, secara otomatis ia akan dapat mengakses data_statik. Karena variabel data_statik dipakai bersama, objek kedua yang diciptakan akan merasakan dampak jika objek pertama melakukan manipulasi terhadap data_statik.

Contoh:

Kelas A;

A.data_statik = 15;

Kelas B;

cout<<B.data_statik<,endl; // mencetak data_statik, seharusnya bernilai 15

Sedikit berbeda dengan data anggota kelas lainnya, variabel statik tidak dapat diinisialisasi di dalam konstruktor. Jika diinginkan inisialisasi, proses inisialisasi harus dilakukan saat variabel dideklarasikan (di luar kelas) seperti pada contoh.

Bagaimana jika datanya berupa tipe struktur?

Ada beberapa pendekatan yang dapat dilakukan. Pertama adalah inisialisasi seluruh field secara langsung. Contoh:

class Objek {

public:

struct titik {

int x, y;

};

static titik T;

};

Object::titik Object::T = {1,2};

Jangan pusing dengan deklarasi variabel statik di atas 😀

Kita mendeklarasikan struktur bernama titik di dalam kelas Object, karena itu untuk mengacu ke tipe tersebut kita harus menyertakan lingkup yang membungkusnya. Object::titik. Dengan demikian kita dapat memberitahu compiler bahwa kita menginginkan tipe yang didefinisikan di dalam kelas Object. Hal yang sama juga terjadi pada variabel T. Variabel tersebut berada di dalam lingkup Object sehingga kita perlu menyebutkan nama kelas Object.

Nah, inisialisasi dapat dilakukan dengan cara membuat sebuah tuple. Di dalam C++ dan juga C, data jamak seperti struct sebenarnya adalah peletakan data-data ke lokasi memori yang berdekatan. Dengan menuliskan data ke dalam { } berarti kita telah membentuk data jamak. Di contoh disebutkan bahwa data jamak yang kita letakkan adalah 1 dan 2. Nah coba lihat deklarasi dari struct sebelumnya. Field yang ada di dalam adalah dua buah integer yaitu x dan y. Urutan pendeklarasian adalah x kemudian y. Dengan cara seperti di atas, kita dapat menyalin nilai 1 ke variabel x dan nilai 2 ke variabel y. Semua sesuai urutan yang telah didefinisikan di dalam struktur. Tentu saja jika definisi struktur kita adalah

struct sesuatu {

char C; int i; float f;

};

Kita dapat melakukan inisialisasi dengan cara memberikan nilai {‘A’,10, 3.14}.

Catatan, cara ini juga dapat digunakan untuk melakukan menginisialisasi tipe data struktur secara umum.

Konstanta Statis

Data statik selain berupa variabel dapat juga berupa konstanta. Deklarasi konstanta statis dapat dilakukan pada C++. Efek ini tentu saja kita memiliki suatu konstanta did alam kelas yang dapat dipakai bersama oleh setiap objek.

Salah satu keistimewaaan konstanta statis, selain ia dapat dideklarasikan dengan cara yang sama seperti mendeklarasikan variabel statis ia juga dapat diinisialisasi di dalam kelas. Benar, teman-teman tak salah membaca. Sebuah konstanta statis dapat diinisialisasi di dalam kelas. Inilah salah satu karakteristik khusus konstanta. Lalu bagaimana penulisannya? Simak aja kode berikut:

class Object {

public:

static const int X = 10;

};

Dan tentu saja kita dapat mendeklarasikannya di luar lingkup kelas. Contohnya:

class Object {

public:

static const int X;

};

const int Object::X = 10;;