Skip to content

Latest commit

 

History

History
322 lines (257 loc) · 8 KB

p06.md

File metadata and controls

322 lines (257 loc) · 8 KB
title author date
Komunikasi Data dan Jaringan Komputer Praktikum 06
Auriza Akbar
2017

Protokol Layer Aplikasi

Tujuan: mahasiswa dapat memahami cara kerja protokol layer aplikasi berbasis teks.

Protokol komunikasi adalah prosedur dan aturan standar dalam berkomunikasi. Klien yang ingin berkomunikasi dengan server harus mengikuti protokol tersebut. Misalnya klien untuk web seperti Firefox, harus menggunakan protokol HTTP untuk berkomunikasi dengan server. Namun, mekanisme protokol sangat jarang diperlihatkan pada aplikasi berbasis GUI. Untuk melihatnya, kita akan menggunakan program netcat dan openssl s_client. Umumnya protokol pada layer aplikasi ini berbasis teks, sehingga mudah dipahami.

Layer jaringan TCP/IP (sumber: Wikipedia)

HTTP

Hypertext transfer protocol (HTTP) adalah dasar komunikasi pada world wide web. Server HTTP menggunakan transport layer TCP pada port 80. Spesifikasi HTTP versi 1.1 didefinisikan pada RFC 2616.

Jenis request

  • GET: mengambil data
  • HEAD: mengambil header-nya saja
  • POST: menambahkan data, misalnya form submission
  • ...

Status respon

  • 100 Continue
  • 200 OK
  • 206 Partial Content
  • 301 Moved Permanently
  • 400 Bad Request
  • 401 Unauthorized
  • 403 Forbidden
  • 404 Not Found
  • ...

Header HTTP dapat diamati menggunakan 'Network Monitor' (Ctrl+Shift+Q) pada Firefox.

Contoh GET

$ netcat ipb.ac.id 80
GET / HTTP/1.0
Host: ipb.ac.id

HTTP/1.1 200 OK
Date: Wed, 15 Mar 2017 09:48:03 GMT
Server: Apache/2.4.7 (Ubuntu)
X-Powered-By: PHP/5.5.9-1ubuntu4.19
...

Contoh POST ke form

$ netcat 172.18.12.13 80
POST /pesan.php HTTP/1.0
Host: 172.18.12.13
Content-type: application/x-www-form-urlencoded
Content-length: 51

nama=Adam&email=adam@earth&pesan=Hola&tambah=Tambah

FTP

File transfer protocol (FTP) adalah protokol standar untuk transfer file via jaringan. FTP menggunakan transport layer TCP. Server menerima perintah melalui port 21. Server mengirimkan data ke port 20 (mode aktif) atau port ephemeral (mode pasif). Mode pasif lebih banyak dipakai oleh klien FTP karena tidak terhalang oleh firewall^[lihat http://slacksite.com/other/ftp.html]. Spesifikasi FTP didefinisikan pada RFC 959.

Perintah FTP

  • USER: otentikasi nama pengguna
  • PASS: otentikasi password
  • STAT: status koneksi
  • CWD: ganti direktori
  • PWD: cetak nama direktori
  • PASV: masuk ke mode pasif (dilakukan sebelum transfer data)
  • LIST: list isi direktori
  • RETR: mengunduh file
  • STOR: mengunggah file
  • QUIT: memutus koneksi

Contoh komunikasi dengan server FTP

$ netcat ftp.debian.org 21
220 ftp.debian.org FTP server
USER anonymous
331 Please specify the password.
PASS
230 Login successful.
STAT
211-FTP server status:
     ...
211 End of status
CWD debian
250 Directory successfully changed.
PWD
257 "/debian"
PASV
227 Entering Passive Mode (130,89,148,12,147,101).
LIST
150 Here comes the directory listing.
226 Directory send OK.
PASV
227 Entering Passive Mode (130,89,148,12,179,98).
RETR README
150 Opening BINARY mode data connection for README (1060 bytes).
226 Transfer complete.
QUIT
221 Goodbye.

Setelah masuk mode PASV, buka satu klien lain ke alamat yang dikembalikan mode tersebut untuk menangkap transfer data dari server.

(130,89,148,12,147,101) -> 130.89.148.12 $((147*256+101))

$ netcat 130.89.148.12 $((147*256+101))
-rw-rw-r--    1 1176     1176         1060 Jan 14 10:44 README
-rw-rw-r--    1 1176     1176         1290 Jun 26  2010 README.CD-manufacture
-rw-rw-r--    1 1176     1176         2588 Jan 14 10:44 README.html
-rw-r--r--    1 1176     1176          291 Mar 04 20:08 README.mirrors.html
-rw-r--r--    1 1176     1176           86 Mar 04 20:08 README.mirrors.txt
...

Protokol untuk email: SMTP dan POP3/IMAP (sumber: Jscape)

SMTP

Simple mail transfer protocol (SMTP) adalah standar untuk pengiriman email melalui Internet. SMTP menggunakan transport layer TCP port 25, 465 (SSL), atau 587 (TLS). SSL atau TLS digunakan oleh SMTPS untuk mengenkripsi pesan. Spesifikasi SMTP didefinisikan pada RFC 5321.

Perintah SMTP

  • HELO: intro ke server
  • AUTH: otentikasi
  • MAIL: alamat pengirim
  • RCPT: alamat penerima
  • DATA: isi pesan, diakhiri dengan sebaris yang berisi satu titik
  • QUIT: mengakhiri sesi

Enkode username dan password untuk otentikasi

$ printf "\0komdatjarkom2@gmail.com\0ilkomerz2" | base64
AGtvbWRhdGphcmtvbTJAZ21haWwuY29tAGlsa29tZXJ6Mg==

Contoh komunikasi dengan server SMTPS

$ openssl s_client -connect smtp.gmail.com:465 -crlf -ign_eof -quiet
...
220 smtp.google.com ESMTP
HELO localhost
250 smtp.google.com at your service
AUTH PLAIN AGtvbWRhdGphcmtvbTJAZ21haWwuY29tAGlsa29tZXJ6Mg==
235 2.7.0 Accepted
MAIL FROM: <komdatjarkom2@gmail.com>
250 2.1.0 OK
RCPT TO: <auriza.akbar@gmail.com>
250 2.1.5 OK
DATA
354  Go ahead
Subject: SMTP test
From: "Komdat Jarkom" <komdatjarkom2@gmail.com>
To: "Auriza Akbar" <auriza.akbar@gmail.com>

Hello, this mail is sent from my terminal.
.
250 2.0.0 OK 1489590573
QUIT
221 2.0.0 closing connection

Email telah terkirim

POP3

Post office protocol versi 3 (POP3) digunakan oleh klien untuk mengambil email dari server. POP3 menggunakan transport layer TCP port 110 atau 995 (POP3S). POP3S menggunakan SSL/TLS untuk mengenkripsi pesan. Spesifikasi POP3 didefinisikan pada RFC 1939.

Perintah POP3

  • USER: nama pengguna
  • PASS: password
  • STAT: status inbox
  • LIST: list inbox
  • RETR: membaca surat
  • DELE: menghapus surat
  • RSET: reset, batalkan semua modifikasi
  • QUIT: mengakhiri sesi

Contoh komunikasi dengan server POP3S

$ openssl s_client -connect pop.gmail.com:995 -crlf -ign_eof -quiet
...
+OK Gpop ready
USER komdatjarkom2@gmail.com
+OK send PASS
PASS ilkomerz2
+OK Welcome.
STAT
+OK 4 22204
LIST
+OK 4 messages (22204 bytes)
1 6920
2 4836
...
.
RETR 4
+OK message follows
...
Subject: New Email
From: Auriza Akbar <auriza.akbar@gmail.com>
To: komdatjarkom2@gmail.com

Test.
.
DELE 4
+OK marked for deletion
RSET
+OK
QUIT
+OK Farewell.

IMAP

Internet message access protocol (IMAP) digunakan oleh klien untuk mengambil email dari server. IMAP menggunakan transport layer TCP port 143 atau melalui SSL pada port 993 (IMAPS). Spesifikasi IMAP didefinisikan pada RFC 3501. IMAP memiliki fitur yang lebih canggih dan kompleks daripada POP3.

Perintah IMAP

  • LOGIN: nama dan password pengguna
  • LIST: list mailbox
  • SELECT: memilih mailbox
  • FETCH: membaca surat
  • STORE: mengubah atribut surat
  • LOGOUT: mengakhiri sesi

Contoh komunikasi dengan server IMAPS

$ openssl s_client -connect imap.gmail.com:993 -crlf -ign_eof -quiet
...
* OK Gimap ready
t1 LOGIN komdatjarkom2@gmail.com ilkomerz2
...
t1 OK komdatjarkom2@gmail.com authenticated (Success)
t2 LIST "" "*"
...
t2 OK Success
t3 SELECT INBOX
...
t3 OK [READ-WRITE] INBOX selected. (Success)
t4 FETCH 311 ALL
* 311 FETCH (ENVELOPE
                ("Tue, 21 Mar 2017 21:04:17 -0700 (PDT)" "SMTP G64130108"
                    (("Mastur Fatullah" NIL "masturfatullah808" "gmail.com")) ...
                    (("Komdat Jarkom" NIL "komdatjarkom2" "gmail.com")) ...
                )
                FLAGS (\Seen) ...
            )
t4 OK Success
t5 FETCH 311 BODY[TEXT]
* 311 FETCH (BODY[TEXT] {44}
                Hello, this mail is sent from my terminal.
            )
t5 OK Success
t6 STORE 311 +FLAGS \Flagged
* 311 FETCH (FLAGS (\Seen \Flagged))
t6 OK Success
t7 LOGOUT
* BYE LOGOUT Requested
t7 OK 73 good day (Success)

Tugas

Gunakan protokol SMTP langsung untuk mengirim email dari akun email kalian masing-masing ke komdatjarkom2@gmail.com dengan isi sebagai berikut (sesuaikan dengan nama dan NIM kalian):

Subject: SMTP G6...
From: ...
To: komdatjarkom2@gmail.com

Hello, ...

.