WELLCOME TO MY WORLD

terimakasih kepada pengunjung yang bersedia mampir di blog saya........................
selamat menjelajah........

Kamis, 08 Juli 2010

CLIENT WINDOWS JOIN KE DOMAIN CONTROLLER UBUNTU

Pastikan dahulu bahwa computer client yang bersangkutan sudah mendapatkan IP dari DHCP Server yang sudah dibuat,
Setting tiap client agar NetBIOS selalu dilewatkan TCP/IP, caranya : Control Panel >> Network Connection >> Click Kanan Local Area Connection >> Pilih Properties
Cari Internet Protocol (TCP/IP) dan pilih kemudian click Properties.
Pilih Advanced.
Pilih Tab WINS dan NetBIOS setting pilih ke “Enable NetBIOS over TCP/IP dan Click “OK”.
Setting DNS Suffix di tiap client klo tadi sudah membuat DNS Server untuk client, caranya Control Panel >> System
Pilih / click Computer Name, boleh isi Computer Descipption semisal “Graphic & Product Designer”
Click Change dan isi Computer name sesuai yang didaftarkan semisal “opikdesign”
Click More… isi Primary DNS Suffix computer tersebut semisalnya “dns.persegi.net” Dan beri tanda centang pada “Change primary DNS suffix when domain membership changes”
Click OK dan OK lagi
Click OK dan OK lagi. Kemudian computer di restart…
Pilih No dahulu, jangan restart dahulu. Setting join ke PDC di tiap client, caranya : Control Panel >> System
Pilih / click Computer Name, boleh isi Computer Descipption semisal “Graphic & Product Designer”
Click pilih Domain dan isi nama PDC‐nya semisal yang sudah dibuat “dns.persegi.net”.
Nantinya akan ditanyakan Username dan Password, masukkan username dan password administrator yang sudah dibuat diatas, hal ini masukkan “sysadmin”.
Click OK dan OK lagi
Click OK dan OK lagi. Kemudian computer di restart.
Lakukan Restart.
Setelah restart, maka computer client melakukan login sesuai account‐nya yang sudah dibuat.

DHCP SERVER

• Install dhcp3 server‐nya,
# apt-get install dhcp3-server
• Setelah diinstall, lakukan seting pada DHCP3 Server, Kita sebelumnya sudah mencatat MAC‐ADDRESS dari seluruh hardware Ethernet maupun wifi client yang kemudian diberikan IP sesuai ketentuan MAC‐ADDRESS; contoh computer A dengan MAC 00:AA:BB:CC:DD:11 akan selalu mendapat IP 192.168.0.123. Jadi disini bisa dipahami seharusnya, coba lihat keterangan bertulis tebal

Edit file conf pada DHCP3 yaitu file /etc/dhcp3/dhcpd.conf,
# pico /etc/dhcp3/dhcpd.conf
Rubah menjadi :
ddns-update-style none;
subnet 192.168.0.0 netmask 255.255.255.0 {
option broadcast-address 192.168.0.255;
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.0.1;
option domain-name "dns.persegi.net"; #sesuaikan keinginan
option routers 192.168.0.1;
option netbios-name-servers 192.168.0.1;
default-lease-time 600;
max-lease-time 604800;
log-facility local7;
host opikdesign.dns.persegi.net {
hardware ethernet 00:22:15:3C:14:A1;
fixed-address 192.168.0.100;
}
host dhani.dns.persegi.net {
hardware ethernet 00:11:5B:78:D3:E8;
fixed-address 192.168.0.101;
}
host farah.dns.persegi.net {
hardware ethernet 00:16:EC:1E:2F:9E;
fixed-address 192.168.0.102;
}
host siti.dns.persegi.net {
hardware ethernet 00:13:D4:CB:69:0F;
fixed-address 192.168.0.103;
}
}
• Lakukan restart DHCP3‐server dengan:
# /etc/init.d/dhcpd3-server restart
Akan muncul dilayar:
Starting DHCP server dhcpd3 [ OK ]

CONFIGURE UBUNTU DHCP CLIENT
Setting ubuntu desktop sebagai DHCP klien. Ikuti perintah berikut ini.
Save and exit the file
# nano /etc/network/interfaces
auto lo eth0
iface eth0 inet dhcp
iface lo inet loopback
# /etc/init.d/networking restart
# sudo dhclient
# tail -n 15 /var/lib/dhcp3/dhclient.*.leases

MEMBUAT FOLDER SHARING BERSAMA

• Sekarang tambahan direktori share yang akan dipakai oleh seluruh user :
# mkdir -p /home/shares/allusers
# chown -R root:users /home/shares/allusers/
# chmod -R ug+rwx,o+rx-w /home/shares/allusers/
• Ubah juga pada /etc/samba/smb.conf, tambahkan baris berikut :
[allusers]
comment = All Users
path = /home/shares/allusers
valid users = @users
force group = users
create mask = 0660
directory mask = 0771
writable = yes
• lalu restart samba kembali :
# /etc/init.d/samba restart

MEMPERBAIKI WINS SERVER PADA SAMBA

Adanya WINS Server ini membantu agar NetBIOS (Nama Komputer Client) tidak hilang di jaringan, berfungsi untuk mem‐reply NetBIOS yang dilewatkan melalui TCP/IP sebagai alternative broadcast.
• Disini saya hanya memberi contoh beberapa client sebagai nama computer antara lain opikdesign, dhani, farah dan siti yang kemudian bisa disesuaikan dengan kondisi yang ada.
Edit file /etc/hosts kemudian masukkan nama host computer client dan ip‐nya untuk pencarian dengan metode hosts file,
Buat file /etc/samba/lmhosts dan masukkan nama host computer client dan ip seperti diatas untuk pencarian dengan metode lmhosts file.
Lakukan restart jaringan dan samba…

# /etc/init.d/networking restart
# /etc/init.d/winbind stop
# /usr/sbin/samba restart
# /etc/init.d/winbind start
• Buat Bash Script agar tiap interval 15menit akan mem‐restart daemon winbindd, snmb dan nmbd. buat file /sbin/wins dengan script sebagai berikuT:
#!/bin/sh
# Script ini untuk memrestart Winbindd dan Samba (snmb & nmbd)
# agar semua NetBIOS komputer client dapat di refresh.
PATH=/sbin:/bin:/usr/sbin:/usr/bin
[ -r /etc/default/winbind ] && . /etc/default/winbind
[ -r /etc/default/samba ] && . /etc/default/samba
RUN_MODE="daemons"
DAEMON_WINBINDD=/usr/sbin/winbindd
PIDDIR_WINBINDD=/var/run/samba
WINBINDPID=$PIDDIR_WINBINDD/winbindd.pid
PIDDIR_SAMBA=/var/run/samba
NMBDPID=$PIDDIR_SAMBA/nmbd.pid

SMBDPID=$PIDDIR_SAMBA/smbd.pid
INTERVAL=900
unset TMPDIR
test -x $DAEMON_WINBINDD || exit 0
test -x /usr/sbin/nmbd -a -x /usr/sbin/smbd || exit 0
. /lib/lsb/init-functions
while : ; do
#
# winbind stop
#
log_daemon_msg "Stopping the Winbind daemon" "winbind"
start-stop-daemon --stop --quiet --oknodo --exec $DAEMON_WINBINDD
log_end_msg $?
sleep 2
#
# samba stop
#
log_daemon_msg "Stopping Samba daemons"
log_progress_msg "nmbd"
start-stop-daemon --stop --quiet --pidfile $NMBDPID
sleep 1
if [ -f $NMBDPID ] && ! ps h `cat $NMBDPID` > /dev/null
then
rm -f $NMBDPID
fi
if [ "$RUN_MODE" != "inetd" ]; then
log_progress_msg "smbd"
start-stop-daemon --stop --quiet --pidfile $SMBDPID
sleep 1
if [ -f $SMBDPID ] && ! ps h `cat $SMBDPID` > /dev/null
then
rm -f $SMBDPID
fi
fi
log_end_msg 0
sleep 2
#
# samba start
#
log_daemon_msg "Starting Samba daemons"
install -o root -g root -m 755 -d $PIDDIR_SAMBA
NMBD_DISABLED=`testparm -s --parameter-name='disable netbios' 2>/dev/null`
if [ "$NMBD_DISABLED" != 'Yes' ]; then
log_progress_msg "nmbd"
if ! start-stop-daemon --start --quiet --oknodo --exec /usr/sbin/nmbd -- -D
then
log_end_msg 1
exit 1
fi
fi
if [ "$RUN_MODE" != "inetd" ]; then
log_progress_msg "smbd"
if ! start-stop-daemon --start --quiet --oknodo --exec /usr/sbin/smbd -- -D; then
log_end_msg 1
exit 1
fi
fi
log_end_msg 0
sleep 2
#
# winbind start
#
log_daemon_msg "Starting the Winbind daemon" "winbind"
mkdir -p /var/run/samba/winbindd_privileged || return 1
chgrp winbindd_priv $PIDDIR_WINBINDD/winbindd_privileged/ || return 1
chmod 0750 $PIDDIR_WINBINDD/winbindd_privileged/ || return 1
start-stop-daemon --start --quiet --oknodo --exec $DAEMON_WINBINDD --
$WINBINDD_OPTS
log_end_msg $?
#
# Repeat
#
sleep $INTERVAL
done
kemudian beri attribute 755 agar bisa dijalankan kemudian jalankan dengan mengirim Signal HUP agar berjalan terus menurus setiap nilai interval yang ditentukan.
# chmod 0755 /sbin/wins
# nohup /sbin/wins &
Terakhir agar script ini berjalan saat server pertama kali restart/booting, masukkan ke dalam /etc/rc.local, edit file /etc/rc.local kemudian tambahkan :
nohup /sbin/wins &
Fungsi utamanya adalah di script ini, memperbaiki Bug yang terdapat pada WINS Server berbasis Samba tidak sama dengan WINS Server di Windows NT/2000/2003 Server terdapat interval untuk mem‐refresh NetBios

INSTALL DAN SETING DNS SERVER DENGAN BIND9 SEBAGAI POISONING LOCAL

Sebelumnya, ada baiknya kita mengenal macam type DNS Record;
Address Records; Merekam sebuah pemetaan IP Address ke dalam sebuah nama host. Cara seperti ini yang paling umum digunakan.
www IN A 111.222.333.444
Alias Records; Membuat sebuah alias terhadap CNAME karena tidak dapat membuat CNAME pointing didalam CNAME Record. mail IN CNAME www
www IN A 111.222.333.444
Mail Exchange Records; Menunjukkan email harus dikirim kemana, harus menujukkan ke A Record (Address Record) bukan CNAME (Alias Record) Record.
@ IN MX mail.domain.com
mail IN A 111.222.333.444
Name Server Record; Menentukan server yang akan digunakan untuk melayani layanan hosting, harus menujukkan ke A Record
(Address Record) bukan CNAME (Alias Record) Record.
@ IN NS ns.domain.com
ns IN A 111.222.333.444
• Instalasi Bind9
# apt-get install bind9
• Selanjutnya kita memulai konfigurasi Bind9, sebelumnya kita tentukan nama domainnya
semisalnya dns.persegi.net dan kemudian dapat diganti sesuai keinginan.
• Buka file /etc/bind/named.conf.options; file tersebut berisi DNS forward ditujukan kemana, maka itu karena kita memakai telkomspeedy maka diarahkan IP DNS Telkom dan ditambah OpenDNS. Namun kita membuat Domain Controller tersebut tidak dengan internet maka bisa diabaikan.
rubah isinya menjadi:
options {
directory "/var/cache/bind";
forwarders {
202.134.1.5;
202.134.0.155;
202.134.0.5;
202.134.2.5;
202.134.1.10;
203.130.208.18;
203.130.206.250;
203.130.196.6;
203.130.196.155;
203.130.196.5;
222.124.204.34;
203.130.208.18;
208.67.222.222;
208.67.220.220;
};
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
• Buka file /etc/bind/named.conf.local; file yang berisi dimana letak file zona yang berisi DNS Record local. tambah atau edit isinya menjadi:
include "/etc/bind/zones.rfc1918";
zone "dns.persegi.net" {
type master;
file "/etc/bind/db.dns.persegi.net";
};
zone "0.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192";
};
include "/etc/bind/rndc.key";
• Kemudian duplicate file db local sesuai nama file yang disebutkan
/etc/bind/named.conf.local.
# cp /etc/bind/db.local /etc/bind/db.dns.persegi.net
# cp /etc/bind/db.local /etc/bind/db.192
• Edit file /etc/bind/db.dns.persegi.net
edit isinya menjadi seperti dibawah ini namun jangan lupa masukan nama computer merah) :
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA ns.dns.persegi.net. mail.dns.persegi.net. (
2009022605 ;Serial
604800 ;Refresh
86400 ;Retry
2419200 ;Expire
604800 ) ;Negative Cache TTL
;
localhost IN A 127.0.0.1
@ IN NS ns.dns.persegi.net.
ns IN A 192.168.0.1
www IN CNAME ns
@ IN CNAME 192.168.0.1
persegi IN A 192.168.0.1
opikdesign IN A 192.168.0.100
dhani IN A 192.168.0.101
farah IN A 192.168.0.102
siti IN A 192.168.0.103
sebuah tips:
Banyak orang menggunakan tanggal terakhir edited sebagai seri dari zona, seperti
2009022605 yang yyyymmddss (di mana seri serial)
• Edit file /etc/bind/db.192
edit isinya menjadi seperti dibawah ini namun jangan lupa masukan nama computer merah) diikuti nama domain :
;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA ns.dns.persegi.net. mail.dns.persegi.net. (
2009022603 ;Serial
604800 ;Refresh
86400 ;Retry
2419200 ;Expire
604800 ) ;Negative Cache TTL
;
@ IN NS ns.
10 IN PTR ns.dns.persegi.net.
20 IN PTR persegi
30 IN PTR opikdesign.dns.persegi.net
40 IN PTR dhani.dns.persegi.net
50 IN PTR farah.dns.persegi.net
60 IN PTR siti.dns.persegi.net
• Edit file /etc/hosts dan tambahkan dns.persegi.net karena kedua domain ini diaktifkan sebagai host pula. Jangan lupa nama computer client maupun yang diikutin domain sebagai DNS Poisoning edit isinya menjadi:
127.0.0.1 localhost
192.168.0.1 persegi dns.persegi.net
192.168.0.100 opikdesign opikdesign.dns.persegi.net
192.168.0.101 dhani dhani.dns.persegi.net
192.168.0.102 farah farah.dns.persegi.net
192.168.0.103 siti siti.dns.persegi.net
• Edit file /etc/resolv.conf edit isinya menjadi: search dns.persegi.net
nameserver 192.168.0.1
nameserver 127.0.0.1
• Restart jaringan dan bind9…
# /etc/init.d/bind9 restart
• Untuk menguji bind9, kita perlu menginstall repository dnsutils, install repository tersebut
# apt-get install dnsutils
/etc/bind/db.192
# named-checkzone dns.persegi.net /etc/bind/db.dns.persegi.net
kalau settingan tidak ada masalah hasilnya… akan muncul serial yang buat.
# named-checkzone dns.persegi.net /etc/bind/db.192
kemudian baru menguji dengan command dig… kita mencoba untuk local‐nya dulu…
# dig localhost
atau bisa juga menguji dengan perintah nslookup…
# nslookup
> set type=any
> dns.persegi.net
setelah itu lakukan pula test pada localhost
> localhost

INSTALASI SAMBA DAN SETING DOMAIN CONTROLLER

• pertama install repository samba dan accesorisnya :
# apt-get install samba
• Konfigurasi /etc/samba/smb.conf sebagai berikut :
[global]
workgroup = dns.persegi.net # –> bisa diganti
netbios name = persegi # –> bisa diganti
server string = %h server (Samba, Ubuntu) # –> bisa diganti
passdb backend = tdbsam
security = user
username map = /etc/samba/smbusers
name resolve order = wins lmhosts bcast hosts
domain logons = yes
preferred master = yes
domain master = yes
wins support = yes
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE
SO_RCVBUF=8192 SO_SNDBUF=8192
os level = 65
path = /var/tmp
lm announce = yes
lm interval = 10
# Useradd scripts
add user script = /usr/sbin/useradd -m %u
delete user script = /usr/sbin/userdel -r %u
add group script = /usr/sbin/groupadd %g
add machine script = /usr/sbin/useradd -s /bin/false/ -d /var/lib/nobody %u
idmap uid = 50-9999999999
idmap gid = 50-9999999999
# sync smb passwords woth linux passwords
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n .
passwd chat debug = yes
unix password sync = yes
# set the loglevel
log level = 3
[homes]
comment = Home
valid users = %S
read only = no
browsable = no
[netlogon]
comment = Network Logon Service
path = /home/samba/netlogon
admin users = Administrator
valid users = %U
read only = no
[profile]
comment = User profiles
path = /home/samba/profiles
valid users = %U
create mode = 0600
directory mode = 0700
writable = yes
browsable = no
• Buat beberapa direktori berikut sebagai domain logon dan profile :
# mkdir /home/samba
# mkdir /home/samba/netlogon
# mkdir /home/samba/profiles
# mkdir /var/spool/samba
# chmod 777 /var/spool/samba/
# chown -R root:users /home/samba/
# chmod -R 771 /home/samba/
# touch /home/samba/netlogon/logon.cmd

File /home/samba/netlogon/logo.cmd dapat diisi script yg bisa jalan pertama kali user login
• Lalu restart samba
# /etc/init.d/samba restart
• Membuat user administrator jaringan, sebaiknya jangan menggunkana user root dan lebih baik membuat unix‐user baru lagi dan unix‐group :
# groupadd netadmin
# useradd sysadmin -m -G netadmin –d /home/samba/profiles/sysadmin
# passwd sysadmin
Enter new UNIX password:
Retype new UNIX password:
# smbpasswd -a sysadmin
New SMB password:
Retype new SMB password:
Untuk mempermudah, password unix dan samba lebih baik disamakan. Kemudian buat group untuk users dan nogroup
# groupadd users
# groupadd nogroup
• buat file /etc/samba/smbusers dgn isi file : sysadmin = Administrator mengartikan bahwa user sysadmin = user administrator pada windows.
• Test drive, apakah settingan kita sudah benar :
# smbclient -L localhost -U%
akan menghasilkan output :
Domain=[DNS.PERSEGI.NET] OS=[Unix] Server=[Samba 3.3.2]
Sharename Type Comment
--------- ---- -------
netlogon Disk Network Logon Service
print$ Disk Printer Drivers
cdrom Disk Samba server's CD-ROM
share Disk Ubuntu File Server Share
IPC$ IPC IPC Service (persegi server (Samba, Ubuntu))
Domain=[DNS.PERSEGI.NET] OS=[Unix] Server=[Samba 3.3.2]
Server Comment
--------- -------
PERSEGI persegi server (Samba, Ubuntu)
Workgroup Master
--------- -------
DNS.PERSEGI.NET PERSEGI
• lalu kita setup domain group untuk windows, jalankan perintah :
net groupmap add ntgroup="Domain Admins" unixgroup=netadmin
net groupmap add ntgroup="Domain Users" unixgroup=users
net groupmap add ntgroup="Domain Guests" unixgroup=nogroup
• Tambah user linux dan user samba dengan cara :
A.Admin Classes, contoh tambah user “opikdesign” sebagai “administrator”user linux :
# useradd opikdesign -m -G netadmin –d /home/samba/profiles/opikdesign
user samba :
#smbpasswd -a opikdesign
New SMB password:
Retype new SMB password:
edit file /etc/samba/smbusers dan tambahkan: opikdesign = Administrator
B. User Classes, contoh tambah user “dhani” sebagai “users” .user linux :
# useradd dhani -m -G users –d /home/samba/profiles/dhani
user samba :
#smbpasswd -a dhani
New SMB password:
Retype new SMB password:
edit file /etc/samba/smbusers dan tambahkan:
dhani = dhani
• Sekarang tambahan direktori share yang akan dipakai oleh seluruh user :
# mkdir -p /home/shares/allusers
# chown -R root:users /home/shares/allusers/
# chmod -R ug+rwx,o+rx-w /home/shares/allusers/

APACHE WEB SERVER

Web server adalah sebuah bentuk server yang khusus digunakan untuk menyimpan halaman website atau homepage. Komputer dapat dikatakan web server jika komputer tersebut memiliki suatu program server yang disebut Personal Web Server (PWS). Macam-macam web server antara lain :
1. Apache (Open Source)
2. Xitami
3. IIs
4. PWS (Personal web Server)
Website (Situs Web) merupakan alamat (URL) yang berfungsi sebagai tempat penyimpanan data dan informasi dengan berdasarkan topik tertentu situs atau web dapat dikategorikan menjadi 2 yaitu :
Web statis, yaitu : Web yang berisi atau menampilkan informasi-informasi yang sifatnya statis (tetap)
Web Dinamis, yaitu : Web yang menampilkan informasi serta dapat berinteraksi dengan user yang bersifat dinamis.

Web server menggunakan protocol yang disebut dengan HTTP (HyperText Transfer Protocol). Anda mempunyai banyak pilihan di dunia open source, tergantung pada keperluan Anda. Salah satu web server yang sangat terkenal dan menjadi standar de facto setiap distribusi Linux, yaitu Apache.Apache adalah nama web server yang dibuat berbasiskan kode sumber dan ide-ide yang ada pada web server leluhurnya, yaitu web server NCSA. Sesuai namanya, web server NCSA dibuat oleh National Center for Supercomputing Applications. Tidak seperti poryek leluhurnya yang dibiayai oleh pemerintah Amerika, web server Apache dikembangkan oleh sekelompok programer yang bekerja tanpa dibayar oleh siapapun. Mereka mengerjakan proyek ini dengan berbagai macam alasan, akan tetapi alas an yang paling mendasar adalah mereka senang jika perangkat lunak mereka digunakan oleh banyak orang.
Apache adalah web server yang kompak, modular, mengikuti standar protokol HTTP, dan tentu saja sangat digemari. Kesimpulan ini bisa didapatkan dari jumlah pengguna yang jauh melebihi para pesaingnya. Sesuai hasil survai yang dilakukan oleh Netcraft, bulan Januari 2005 saja jumlahnya tidak kurang dari 68% pangsa web server yang berjalan di Internet. Ini berarti jika semua web server selain Apache digabung, masih belum bias mengalahkan jumlah Apache. Saat ini ada dua versi Apache yang bisa dipakai untuk server produksi, yaitu versi mayor 2.0 dan versi mayor 1.3. Anda bisa menggunakan salah satu dari keduanya. Tapi sangat dianjurkan Anda memakai versi 2.0.
Mengapa kita harus memilih Apache? Tentu itu pertanyaan yang terfipkir dalam benak Anda. Ya, tentu saja kita harus mempunyai alasan untuk segala hal, termasuk memilih Apache sebagai web server pilihan. Mungkin daftar berikut bisa menjadi jawabannya.
Arsitektur modular.
Mendukung banyak sistem operasi, termasuk di dalamnya adalah Windows
NT/2000/XP dan berbagai varian Unix.
Mendukung IP versi 6 (Ipv6).
Mendukung CGI (Common Gateway Interface) dan SSI (Server Side Include).
Mendukung otentifi kasi dan kontrol akses.
Mendukung SSL (Secure Socket Layer) untuk komunikasi terenkripsi.
Konfi gurasi yang mudah dipahami.
Mendukung Virtual Host.
Pesan kesalahan multi bahasa dan bias dimodifikasi

FTP

File Transfer Protocol (FTP) didefinisikan sebagai protokol untuk mengirim dan menerima file antara host (dalam ARPANET), dengan fungsi utama dari FTP adalah mengirim dan menerima file dengan efisien dan handal antara host dan mengijinkan penggnaan yang nyaman dari kemampuan untuk penyimpanan file secara remote.
Tujuan dari FTP adalah:
Untuk mempromosikan share file (yang dapat berupa program komputer dan data).
untuk memacu penggunaan komputer remote secara tidak langsung atau implisit (via perangkat lunak)
untuk melindungi pengguna dari variasi dalam sistem penyimpanan file diantara host.
untuk mengirim dan menerima data secara handal dan efisien.
FTP adalah bagian dari protocol TCP/IP dan menggunakan TCP sebagai transport layer.Dalam penggunaannya. FTP menggunakan protocol lain untuk salah satu koneksinya. Protocol telnet digunakan pada koneksi kontrol. terdapat dua cara untuk mengimplementasikan hal ini:
Pertama, interpreter protocol pengguna atau interpreter protocol server dapat mengimplementasikan aturan-aturan dari protocol telnet secara langsung di prosedur mereka sendiri.
Kedua, interpreter protokol pengguna atau interpreter protokol server dapat mengunakan modul telnet yang telah ada di sistem.
Pada pendekatan pertama, keunutngannya terdapat efisiensi eksekusi dan indepedensi implementasi dari perangkat lunak FTP. Sedangkan dari pendekatan kedua, didapat kemudahan dari implementasi, pengguna ulang kode, dan perograman modular. Pada pelaksananya, FTP tergantung dari bagian yang sangat kecil dari protokol telnet, jadi perndekatan pertama tidaklah harus melibatkan banyak kode.
File ditarsfer hanya melalui koneksi data. Koneksi kontrol digunakan untuk mentransfer atau antara host. perintah-perintah transfer data termasuk perintah MODE yang menspesifisikan bagaimana bit dari data akan ditransimisikan, dan perintah STRU (STRUcture) dan TYPE, yang digunakan untuk mendefinisikan bagaimana data akan direpresentasikan. Transmisi dan representasi secara mendasar berbeda tetapi mode transmisi stream tergantung pada attribut struktur file dan jika mode transmisi "compressed" digunakan, sifat dari byte pengisi tergantung pada tipe representasi.
Representasi data ditangani pada FTP denganseorang penggunana menspesifikasikan sebuah tipe representasi. Tipe ini dapat secara implicit (seperti dalam ASCII atau EBDIC) atau secara eksplisit (seperti dalam local byte) mendefinisikan sebuah ukuran byte untuk interpretasi yang akan diacukan sebagai “ukuran byte logik”. Harus diperhatikan bahwa hal ini tidak berhubungan dengan ukuran byte yang digunakan untuk transmisi melalui koneksi data, yang disebut “ukuran byte transfer”, dan keduanya seharusnya tidak dibingungkan. Sebagai contoh, NVT-ASCII mempunyai ukuran byte logic delapan bit. Jika tipenya adalah Local byte, maka perintah TYPE mempunyai parameter kedu wajib yang menspesifikasikan ukuran byte logik. Ukuran byte transfer selalu delapan bit.
Jalur komunikasi dari interpreter protocol pengguna ke interpreter protocol server dibangun sebagai sebuah koneksi TCP dari pengguna ke port server standar. Interpreter protocol pengguna bertanggungjawab untuk mengirimkan perintah FTP dan menginterpretasikan perintah-perintah. Mengirim balasan, dan mengarah proses transfer datanya untuk membuat koneksi data dan mentransfer data. Jika pihak kedua dalam transfer data (proses transfer pasif) adalah proses transfer data pengguna, maka ia dikendalikan melalui protocol internal dari host FTP pengguna; jika ia adalah sebuah proses transfer sata server kedua, maka ia dikendalikan dengan interpreter protokolnya sendiri dengan perintah dari interpreter protocol pengguna.

FILE SHARING (SAMBA)

File sharing merupakan salah satu fitur yang sekarang telah dimiliki oleh berbagai macam sistem operasi, terutama sistem operasi yang mendukung sistem jaringan. Metode/teknologi yang digunakan untuk melakukan sharing ada berbagai macam. Bisa jadi kita menggunakan teknologi ftp, http, peer to peer dan juga sharing resouce seperti folder dan file secara langsung. Untuk yang disebutkan terakhir, bagi para pengguna sistem operasi windows dapat dengan mudah menyettingnya dengan klik kanan lalu pilih “Sharing and Security”, namun pada sistem operasi berbasis linux kita harus memastikan bahwa ada server samba yang mengatur sharing file dan folder. Berikut langkah-langkah untuk melakukan sharing file dan folder di sistem operasi linux Ubuntu. Semua langkah-langkah berikut ini dilakukan pada mode terminal.
Menginstall samba server untuk mengaktifkan Server Samba untuk keperluan sharing file atau folder.
sudo apt-get install samba smbfs
Parameter pada pada samba:
Parameter path
Path digunakan untuk menentukan path lengkap dari direktori atau file yang kan di-sharing dengan komputer lain. Contoh
[myshare]
path=/home/dokumen
Parameter comment
comment digunakan untuk menerangkan data yg disharing, anda dapat menuliskan apa saja tentang folder yang disharing. contoh :
[myshare]
path=/home/dokumen
comment=folder ini adalah data sharing
Parameter browseable
browseable berfungsi memberikan izin apakah data yang disharing boleh dibuka pengakses atau tidak, nilai parameter browseable adalah yes atau no.yes (diizinkan) dan no (tidak
diizinkan).contoh
[myshare]
path=/home/dokumen
browseable=no
Parameter writeable
writeable berfungsi memberikan izin apakah pengakses boleh menulis kembali data yang disharing (atau menyisipi file) atau tidak, yes =diizinkan dan no= tidak
[myshare]
path=/home/dokumen
browseable=yes
writeable=no
Parameter guest ok
guest ok berfungsi untuk memberikan hak akses pada file/direktori, apakah user tamu diizinkan mengaksesnya atau tidak, Yes =jika tamu diizinkan, dan no= jika tamu tidak diizinkan.
[myshare]
path=/home/dokumen
browseable=yes
writeable=no
guest ok=yes
Parameter username
username berfungsi untuk menentukan nama-nama user yang diperbolehkan untuk mengakses data sharing, anda boleh memasukkan lebih dari satu nama
[myshare]
path=/home/dokumen
browseable=yes
writeable=no
username=beddu,baco,becce
Parameter only user
only user memiliki fungsi terbalik dengan guest ok, pada guest ok, akibat yng muncul adalah apakah user tamu dapat diizinkan atau tidak untuk mengaksesnya. Sedangkan user only yang bernilai nama user, sehingga hanya nama user yang bersangkutan yg dapat mengakses data yang di sharing.yes (jika user pemilik diizinkan) dan no (user tidak diizinkan)
[myshare]
path=/home/dokumen
browseable=yes
writeable=no
only user=yes

Cara Kerja DHCP :

DHCP menggunakan 4 tahapan proses untuk memberikan konfigurasi nomor IP. (Jika Clietn punya NIC Card lebih dari satu dan perlu no IP lebih dari 1 maka proses DHCP dijalankan untuk setiap adaptor secara sendiri-sendiri) :
1.IP Least Request {Client meminta nomor IP ke server (Broadcast mencari DHCP server)}.
2.IP Least Offer {DHCP server (bisa satu atau lebih server jika memang ada 2 atau lebih DHCP server) yang mempunyai no IP memberikan penawaran ke client tersebut}.
3.IP Lease Selection {Client memilih penawaran DHCP Server yng pertama diterima dan kembali melakukan broadcast dengan message menyetujui peminjaman tersebut kepada DHCP Server}.
4.IP Lease Acknowledge {DHCP Server yang menang memberikan jawaban atas pesan tersebut berupa konfirmasi no IP dan informasi lain kepada Client dengan sebuah ACKnowledgment. Kemudian client melakukan inisialisasi dengan mengikat (binding) nomor IP tersebut dan client dapat bekerja pada jaringan tersebut. Sedangkan DHCP Server yang lain menarik tawarannya kembali}.

DHCP (Dynamic Configuration Protocol)

DHCP (Dynamic Configuration Protocol) adalah layanan yang secara otomatis memberikan nomor IP kepada komputer yang memintanya. Komputer yang memberikan nomor IP disebut sebagai DHCP server, sedangkan komputer yang meminta nomor IP disebut sebagai DHCP Client. Dengan demikian administrator tidak perlu lagi harus memberikan nomor IP secara manual pada saat konfigurasi TCP/IP, tapi cukup dengan memberikan referensi kepada DHCP Server.
Pada saat kedua DHCP client dihidupkan , maka komputer tersebut melakukan request ke DHCP-Server untuk mendapatkan nomor IP. DHCP menjawab dengan memberikan nomor IP yang ada di database DHCP. DHCP Server setelah memberikan nomor IP, maka server meminjamkan (lease) nomor IP yang ada ke DHCP-Client dan mencoret nomor IP tersebut dari daftar pool. Nomor IP diberikan bersama dengan subnet mask dan default gateway. Jika tidak ada lagi nomor IP yang dapat diberikan, maka client tidak dapat menginisialisasi TCP/IP, dengan sendirinya tidak dapat tersambung pada jaringan tersebut. Setelah periode waktu tertentu, maka pemakaian DHCP Client tersebut dinyatakan selesaidan client tidak memperbaharui permintaan kembali, maka nomor IP tersebut dikembalikan kepada DHCP Server, dan server dapat memberikan nomor IP tersebut kepada Client yang membutuhkan. Lama periode ini dapat ditentukan dalam menit, jam, bulan atau selamanya. Jangka waktu disebut leased period.

RPC (Remote Procedure Call)

RPC (Remote Procedure Call)
Remote Procedure Call (RPC) adalah sebuah metoda yang memungkinkan kita untuk mengakses sebuah prosedur yang berada di komputer lain. Untuk bisa melakukan ini sebuah komputer (server) harus menyediakan layanan remote prosedur. Pendekatan yang dilakuan adalah, sebuah server membuka socket, menunggu client yang meminta proseduryang disediakan oleh server.
Remote Procedure Call masih menggunakan cara primitive dalam pemrograman, yaitu menggunakan paradigma procedural programming. Hal itu membuat kita sulit ketika menyediakan banyak remote procedure.
Java RMI
Pendekatan kedua yang akan kita perkenalkan adalah RMI (Remote Method Invocation), sebuah teknik pemanggilan method remote yang lebih bagus daripada RPC. RMI menggunakan paradigma pemrograman berorientasi objek (OOP). Dengan RMI memungkinkan memungkinkan untuk mengirim objek sebagai parameter dari remote method. Dengan dibolehkannya program java memanggil method pada remote objek, RMI membuat user dapat mengembakan Java Application yang terdistribusi pada jaringan
Untuk membuat remote method bisa diakses RMI mengimplementasikan remote object menggukan stub dan skleton. Stub bertindak sebagai proxy disisi client, yaitu yang menghubungkan client dengan skleton yang berada disisi server. Stub yang ada disisi client bertanggung jawab untuk membungkus nama method yang akan diakses, dan parameternya, hal ini biasa dikenal dengan marshalling. Stub mengirim paket yang sudah dibungkus ini ke server dan akan di buka (unmarshalling) oleh skleton. Skleton akan menerima hasil keluaran yang telah diproses oleh method yang dituju, lalu akan kembali dibungkus (marshal) dan dikirim kembali ke client yang akan diterima oleh stub dan kembali dibuka paketnya (unmarshall).
Pembuatan Remote Objek
Untuk membuat remote objek kita harus mendefinisikan semua method yang akan kita sediakan pada jaringan, setelah itu dapat digunakan RMI compiler untuk membuat stub dan skleton. Setelah itu kita harus mem-binding remote objek yang kita sediakan kedalam sebuah RMI registry. Setelah itu client dapat mengakses semua remote method yang telah kita sediakan menggunkan stub yang telah dicompile menggunakan RMI compiler terebut.
Akses ke Remote Objek
Sekali objek didaftarkan ke server, client dapat mengakses remote object dengan menjalankan Naming.lookup() method.RMI menyediakan url untuk pengaksesan ke remote objek yaitu rmi://host/objek, dimana host adalah nama server tempat kita mendaftarkan remote objek dan objek adalah parameter yang kita gunakan ketika kita memanggil method Naming.rebind(). Clint juga harus menginstall RMISecurityManager untuk memastikan keaman client ketika membuka soket kejaringan.

Client/Server System

Dengan makin berkembangnya teknologi jaringan komputer, sekarang ini ada kecenderungan sebuah sistem yang bekerja sama menggunakan jaringan. Dalam topik ini akan kita bahas beberapa metoda komunikasi antar proses yang melibatkan jaringan komputer.
Socket
Socket adalah sebuah endpoint untuk komunikasi didalam jaringan. Sepasang proses atau thread berkomunikasi dengan membangun sepasang socket, yang masing-masing proses memilikinya. Socket dibuat dengan menyambungkan dua buah IP Address melalui port tertentu. Secara umum socket digunakan dalam client/server system, dimana sebuah server akan menunggu client pada port tertentu. Begitu ada client yang mengkontak server maka server akan menyetujui komunikasi dengan client melalui socket yang dibangun.
Server dan Thread
Pada umumnya sebuah server melayani client secara konkurn , oleh sebab itu dibutuhkan thread yang masing-masing thread melayani clientnya masing-masing. Jadi server akan membentuk thread baru begitu ada koneksi dari client yang diterima (accept)
Java Socket
Java menyediakan dua buah tipe socket yang berbeda. Connection-oriented (TCP) socket yang diimplentasikan oleh class java.net.Socket dan Connectionless (UDP) socket yang diimplementasikan oleh class java.lang.DatagramSocket, tipe yang ketiga adalah MulticastSocket yang merupakan perluasana (extended) dari class DatagramSocket, class ini memungkinkan kita memberikan respon ke banyak client sekaligus

Buffering

Baik komunikasi itu langsung atau tak langsung, penukaran pesan oleh proses memerlukan antrian sementara. Pada dasarnya, terdapat tiga jalan dimana antrian tersebut diimplementasikan:
Kapasitas nol: antrian mempunyai panjang maksimum 0, maka link tidak dapat mempunyai penungguan pesan (message waiting). Dalam kasus ini, pengirim harus memblok sampai penerima menerima pesan.
Kapasitas terbatas: antrian mempunyai panjang yang telah ditentukan, paling banyak n pesan dapat dimasukkan. Jika antrian tidak penuh ketika pesan dikirimkan, pesan yang baru akan menimpa, dan pengirim pengirim dapat melanjutkan eksekusi tanpa menunggu. Link mempunyai kapasitas terbatas. Jika link penuh, pengirim harus memblok sampai terdapat ruang pada antrian.
Kapasitas tak terbatas: antrian mempunyai panjang yang tak terhingga, maka, semua pesan dapat menunggu disini. Pengirim tidak akan pernah di blok.

SINKRONISASI

Komunikasi antara proses membutuhkan place by calls untuk mengirim dan menerima data primitive. Terdapat rancangan yang berbeda-beda dalam implementasi setiap primitive. Pengiriman pesan mungkin dapat diblok (blocking) atau tidak dapat dibloking (nonblocking) – juga dikenal dengan nama sinkron atau asinkron.
Pengiriman yang diblok: Proses pengiriman di blok sampai pesan diterima oleh proses penerima (receiving process) atau oleh mailbox.
Pengiriman yang tidak diblok: Proses pengiriman pesan dan mengkalkulasi operasi.
 Penerimaan yang diblok: Penerima mem blok samapai pesan tersedia.
Penerimaan yang tidak diblok: Penerima mengembalikan pesan valid atau null.
LATAR BELAKANG TERJADINYA SINKRONISASI :
Akses-akses yang dilakukan secara bersama-sama ke data yang sama, dapat menyebabkan data menjadi tidak konsisten.
Untuk menjaga agar data tetap konsisten, dibutuhkan mekanisme-mekanisme untuk memastikan pemintaan ekseskusi dari proses yang bekerja.
Race Condition: Situasi dimana beberapa proses mengakses dan memanipulasi data secara bersamaan. Nilai terakhir dari data bergantung dari proses mana yang selesai terakhir.
Untuk menghindari Race Condition, proses-proses secara bersamaan harus disinkronisasikan.

Sebagai contohnya adalah Kasus Produsen-Konsumer
Dua proses berbagi sebuah buffer dengan ukuran yang tetap. Salah satunya produser, meletakkan informasi ke buffer yang lainnya. Konsumen mengambil informasi dari buffer. Ini juga dapat digeneralisasi untuk masalah yang memiliki m buah produsen dan n buah konsumen, tetapi kita hanya akan memfokuskan kasus dengan satu produsen dan satu konsumen karena diasumsikan dapat menyederhanakan solusi.
Masalah akan timbul ketika produsen ingin menaruh barang yang baru tetapi buffer sudah penuh. Solusi untuk produsen adalah istirahat (sleep) dan akan dibangunkan ketika konsumen telah mengambil satu atau lebih barang dari buffer. Biasanya jika konsumen ingin mengambil barang dari buffer dan melihat bahwa buffer sedang kosong, maka konsumen istirahat (sleep) sampai produsen meletakkan barang pada buffer dan membangunkan (wake up) consumer.
Pendekatan seperti ini terdengar cukup sederhana, tetapi hal ini dapat menggiring kita ke jenis masalah yang sama seperti race condition dengan spooler direktori.
Untuk mengetahui jumlah barang di buffer, kita membutuhkan sebuah variabel kita namakan count. Jika jumlah maksimum dairi barang yang dapat ditampung buffer adalah N, kode produser pertama kali akan mencoba untuk mengetahui apakah nilai count sama dengan nilai N. Jika itu terjadi maka produsen akan istirahat (sleep), tetapi jika nilai count tidak sama dengan N, produsen akan terus menambahkan barang dan menaikkan nilai count.
Sekarang mari kita kembali ke permasalahan race condition. Ini dapat terjadi karena akses ke count tidak dipaksakan. Situasi seperti itu mungkin dapat terjadi. Buffer sedang kosong dan konsumen baru saja membaca count untuk melihat apakah count bernilai 0. Pada saat itu, penjadual memutuskan untuk mengentikan proses konsumen sementara dan menjalakan produsen. Produsen memasukkan barang ke buffer, menaikkan nilai count, dan memberitahukan bahwa count sekarang bernilai 1. Pemikiran bahwa count baru saja bernilai 0 sehingga konsumen harus istirahat (sleep). Produsen memanggil fungsi wake up untuk membangkitkan konsumen.
Sayangnya, konsumen secara logika belum istirahat. Jadi sinyal untuk membangkitkan konsumen, tidak dapat ditangkap oleh konsumen. Ketika konsumen bekerja berikutnya, konsumen akan memeriksa nilai count yang dibaca sebelumnya, dan mendapatkan nilai 0, kemudian konsumen istirahat (sleep) lagi. Cepat atau lambat produsen akan mengisi buffer dan juga pergi istirahat (sleep). Keduanya akan istirahat selamanya.
Inti permasalahannya disini adalah pesan untuk membangkitkan sebuah proses tidak tersampaikan. Jika pesan/ sinyal ini tersampaikan dengan baik, segalanya akan berjalan lancar
i.Race Condition
Race Condition adalah situasi di mana beberapa proses mengakses dan memanipulasi data bersama pada saat besamaan. Nilai akhir dari data bersama tersebut tergantung pada proses yang terakhir selesai. Unutk mencegah race condition, proses-proses yang berjalan besamaan haus di disinkronisasi.
Dalam beberapa sistem operasi, proses-proses yang berjalan bersamaan mungkin untuk membagi beberapa penyimpanan umum, masing-masing dapat melakukan proses baca (read) dan proses tulis (write). Penyimpanan bersama (shared storage) mungkin berada di memori utama atau berupa sebuah berkas bersama, lokasi dari memori bersama tidak merubah kealamian dari komunikasi atau masalah yang muncul. Untuk mengetahui bagaimana komunikasi antar proses bekerja, mari kita simak sebuah contoh sederhana, sebuah print spooler. Ketika sebuah proses ingin mencetak sebuah berkas, proses tersebut memasukkan nama berkas ke dalam sebuah spooler direktori yang khusus. Proses yang lain, printer daemon, secara periodik memeriksa untuk mengetahui jika ada banyak berkas yang akan dicetak, dan jika ada berkas yang sudah dicetak dihilangkan nama berkasnya dari direktori.
Bayangkan bahwa spooler direktori memiliki slot dengan jumlah yang sangat besar, diberi nomor 0, 1, 2, 3, 4,... masing-masing dapat memuat sebuah nama berkas. Juga bayangkan bahwa ada dua variabel bersama, out, penunjuk berkas berikutnya untuk dicetak, dan in, menunjuk slot kosong di direktori. Dua vaiabel tersebut dapat menamgami sebuah two-word berkas untuk semua proses. Dengan segera, slot 0, 1, 2, 3 kosong (berkas telah selesai dicetak), dan slot 4, 5, 6 sedang terisi (berisi nama dari berkas yang antre untuk dicetak). Lebih atau kurang secara besamaan, proses A dan B, mereka memutuskan untuk antre untuk sebuah berkas untuk dicetak. Situasi seperti ini diperlihatkan oleh gambar di bawah ini:

Dalam Murphy's Law kasus tesebut dapat terjadi. Proses A membaca in dan menyimpan nilai "7" di sebuah variabel lokal yang disebut next_free_slot. Sebuah clock interrupt terjadi dan CPU memutuskan bahwa proses A berjalan cukup lama, sehingga digantika oleh proses B. Proses B juga membaca in, dan juga mengambil nilai 7, sehingga menyimpan nama berkas di slot nomor 7 dan memperbaharui nilai in menjadi 8. Maka proses mati dan melakukan hal lain.
Akhirnya proses A berjalan lagi, dimulai dari tempat di mana proses tersebut mati. Hal ini terlihat dalam next_free_slot, ditemukan nilai 7 di sana, dan menulis nama berkas di slot nomor 7, menghapus nama berkas yang bau saja diletakkan oleh proses B. Kemudian proses A menghitung next_free_slot + 1, yang nilainya 8 dan memperbaharui nilai in menjadi 8. Direktori spooler sekarang secara internal konsisten, sehingga printer daemon tidak akan memberitahukan apa pun yang terjadi, tetapi poses B tidak akan mengambil output apa pun. Situasi seperti ini, dimana dua atau lebih proses melakukan proses reading atau writing beberapa shared data dan hasilnya bergantung pada ketepatan berjalan disebut race condition.

b.Critical Section
Bagaimana menghindari race conditions? Kunci untuk mencegah masalah ini dan di situasi yang lain yang melibatkan shared memori, shared berkas, and shared sumber daya yang lain adalah menemukan beberapa jalan untuk mencegah lebih dari satu proses untuk melakukan proses writing dan reading kepada shared data pada saat yang sama. Dengan kata lain kita memutuhkan mutual exclusion, sebuah jalan yang menjamin jika sebuah proses sedang menggunakan shared berkas, proses lain dikeluarkan dari pekerjaan yang sama. Kesulitan yang terjadi karena proses 2 mulai menggunakan variabel bersama sebelum proses 1 menyelesaikan tugasnya.
Masalah menghindari race conditions dapat juga diformulasikan secara abstrak. Bagian dari waktu, sebuah proses sedang sibuk melakukan perhitungan internal dan hal lain yang tidak menggiring ke kondisi race conditions. Bagaimana pun setiap kali sebuah proses mengakses shared memory atau shared berkas atau melakukan sesuatu yang kitis akan menggiring kepada race conditions. Bagian dari program dimana shaed memory diakses disebut Critical Section atau Critical Region.
Walau pun dapat mencegah race conditions, tapi tidak cukup untuk melakukan kerjasama antar proses secara pararel dengan baik dan efisien dalam menggunakan shared data. Kita butuh 4 kondisi agar menghasilkan solusi yang baik:
Tidak ada dua proses secara bersamaan masuk ke dalam citical section.
Tidak ada asumsi mengenai kecepatan atau jumlah cpu.
Tidak ada proses yang berjalan di luar critical secion yang dapat mengeblok proses lain.
Tidak ada proses yang menunggu selamamya untuk masuk critical section.
Critical Section adalah sebuah segmen kode di mana sebuah proses yang mana sumber daya bersama diakses. Terdiri dari:
Entry Section: kode yang digunakan untuk masuk ke dalam critical section
Critical Section: Kode di mana hanya ada satu proses yang dapat dieksekusi pada satu waktu
Exit Section: akhir dari critical section, mengizinkan proses lain
Remainder Section: kode istirahat setelah masuk ke critical section
Critical section harus melakukan ketiga aturan berikut:
Solusi yang diberikan harus memuaskan permintaaan berikut:
Mutual exclution
Deadlock free
Starvation free
Pendekatan yang mungkin untuk solusi proses sinkronisasi
Solusi Piranti lunak (Software solution)
Tanpa Sinkronisasi.
Dengan Sinkronisasi.
Low-level primitives: semaphore
High-level primitives: monitors
Solusi Piranti Keras (Hardware solution)

Komunikasi Antar Proses

1.Sistem Berbagi Memori
Sistem Berbagi Memori atau yang disebut juga sebagai Shared Memory System merupakan salah satu cara komunikasi antar proses dengan cara mengalokasikan suatu alamat memori untuk dipakai berkomunikasi antar proses. Alamat dan besar alokasi memori yang digunakan biasanya ditentukan oleh pembuat program. Pada metode ini, sistem akan mengatur proses mana yang akan memakai memori pada waktu tertentu sehingga pekerjaan dapat dilakukan secara efektif.
2.Sistem Berkirim Pesan
Sistem berkirim pesan adalah proses komunikasi antar bagian sistem untuk membagi variabel yang dibutuhkan. Proses ini menyediakan dua operasi yaitu mengirim pesan dan menerima pesan. Ketika dua bagian sistem ingin berkomunikasi satu sama lain, yang harus dilakukan pertama kali adalah membuat sebuah link komunikasi antara keduanya. Setelah itu, kedua bagian itu dapat saling bertukar pesan melalui link komunikasi tersebut.
Sistem berkirim pesan sangat penting dalam sistem operasi. Karena dapat diimplementasikan dalam banyak hal seperti pembagian memori, pembagian bus, dan melaksanakan proses yang membutuhkan pengerjaan bersama antara beberapa bagian sistem operasi.
Terdapat dua macam cara berkomunikasi, yaitu:
Komunikasi langsung.
Dalam komunikasi langsung, setiap proses yang ingin berkirim pesan harus mengetahui secara jelas dengan siapa mereka berkirim pesan. Hal ini dapat mencegah pesan salah terkirim ke proses yang lain. Karakteristiknya antara lain:
Link dapat otomatis dibuat
Sebuah link berhubungan dengan tepat satu proses komunikasi berpasangan
Diantara pasangan itu terdapat tepat satu link
Link tersebut biasanya merupakan link komunikasi dua arah

Setiap proses yang ingin berkomunikasi harus memiliki nama yang bersifat eksplisit baik penerimaan atau pengirim dari komunikasi tersebut. Dalam konteks ini, pengiriman dan penerimaan pesan secara primitive dapat dijabarkan sebagai:
Send (P, message) – mengirim sebuah pesan ke proses P.
Receive (Q, message) – menerima sebuah pesan dari proses Q.
Sebuah jaringan komunikasi pada bahasan ini memiliki beberapa sifat, yaitu:
Sebuah jaringan yang didirikan secara otomatis diantara setiap pasang dari proses yang ingin dikomunikasikan. Proses tersebut harus mengetahui identitas dari semua yang ingin dikomunikasikan.
Sebuah jaringan adalah terdiri dari penggabungan dua proses.
Diantara setiap pesan dari proses terdapat tepat sebuah jaringan.
Pembahasan ini memperlihatkan sebuah cara simetris dalam pemberian alamat. Oleh karena itu, baik keduanya yaitu pengirim dan penerima proses harus memberi nama bagi yang lain untuk berkomunikasi, hanya pengirim yang memberikan nama bagi penerima sedangkan penerima tidak menyediakan nama bagi pengirim. Dalam konteks ini, pengirim dan penerima secara sederhana dapat dijabarkan sebagai:
•    Send (P, message) – mengirim sebuah pesan kepada proses P.
•    Receive (id, message) – menerima sebuah pesan dari semua proses. Variabel id diatur sebagai nama dari proses dengan komunikasi.

Komunikasi tidak langsung.
Berbeda dengan komunikasi langsung, jenis komunikasi ini menggunakan sejenis kotak surat atau port yang mempunyai ID unik untuk menerima pesan. Proses dapat berhubungan satu sama lain jika mereka membagi port mereka. Karakteristik komunikasi ini antara lain:
Link hanya terbentuk jika beberapa proses membagi kotak surat mereka
Sebuah link dapat terhubung dengan banyak proses
Setiap pasang proses dapat membagi beberapa link komunikasi
Link yang ada dapat merupakan link terarah ataupun link yang tidak terarah
Dengan komunikasi tidak langsung, pesan akan dikirimkan pada dan diterima dari/ melalui mailbox (kotak surat) atau terminal-terminal, sebuah mailbox dapat dilihat secara abstrak sebagai sebuah objek didalam setiap pesan yang dapat ditempatkan dari proses dan dari setiap pesan yang bias dipindahkan. Setiap kotak surat memiliki sebuah identifikasi (identitas) yang unik, sebuah proses dapat berkomunikasi dengan beberapa proses lain melalui sebuah nomor dari mailbox yang berbeda.
Dua proses dapat saling berkomunikasi apabila kedua proses tersebut sharing mailbox.
Pengirim dan penerima dapat dijabarkan sebagai:
•    Send (A, message) – mengirim pesan ke mailbox A.
•    Receive (A, message) – menerima pesan dari mailbox A.
Dalam masalah ini, link komunikasi mempunyai sifat sebagai berikut:
•    Sebuah link dibangun diantara sepasang proses dimana kedua proses tersebut membagi mailbox.
•    Sebuah link mungkin dapat berasosiasi dengan lebih dari dua proses.
•    Diantara setiap pasang proses komunikasi, mungkin terdapat link yang berbeda-beda, dimana setiap link berhubungan pada satu mailbox.
Misalkan terdapat proses P1, P2 dan P3 yang semuanya share mailbox. Proses P1 mengirim pesan ke A, ketika P2 dan P3 masing-masing mengeksekusi sebuah kiriman dari A. Proses mana yang akan menerima pesan yang dikirim P1? Jawabannya tergantung dari jalur yang kita pilih:
•    Mengizinkan sebuah link berasosiasi dengan paling banyak 2 proses.
•    Mengizinkan paling banyak satu proses pada suatu waktu untuk mengeksekusi hasil kiriman (receive operation).
•    Mengizinkan sistem untuk memilih secara mutlak proses mana yang akan menerima pesan (apakah itu P2 atau P3 tetapi tidak keduanya, tidak akan menerima pesan). Sistem mungkin mengidentifikasi penerima kepada pengirim.
Mailbox mungkin dapat dimiliki oleh sebuah proses atau sistem operasi. Jika mailbox dimiliki oleh proses, maka kita mendefinisikan antara pemilik (yang hanya dapat menerima pesan melalui mailbox) dan pengguna dari mailbox (yang hanya dapat mengirim pesan ke mailbox).
Selama setiap mailbox mempunyai kepemilikan yang unik, maka tidak akan ada kebingungan tentang siapa yang harus menerima pesan dari mailbox. Ketika proses yang memiliki mailbox tersebut diterminasi, mailbox akan hilang. Semua proses yang mengirim pesan ke mailbox ini diberi pesan bahwa mailbox tersebut tidak lagi ada. Dengan kata lain, mempunyai mailbox sendiri yang independent, dan tidak melibatkan proses yang lain. Maka sistem operasi harus memiliki mekanisme yang mengizinkan proses untuk melakukan hal-hal dibawah ini:
•    Membuat mailbox baru.
•    Mengirim dan menerima pesan melalui mailbox.
•    Menghapus mailbox.
Proses yang membuat mailbox pertama kali secara default akan memiliki mailbox tersebut. Untuk pertama kali, pemilik adalah satu-satunya proses yang dapat menerima pesan selalui mailbox ini.