Selamat, Anda baru saja mempelajari konsep lapisan jaringan dengan menyadari bahwa port dan protokol tidak terhubung secara langsung satu sama lain. Seperti yang dikatakan orang lain, telnet dapat digunakan untuk terhubung ke port TCP. Namun untuk memahami mengapa ini mungkin, Anda perlu memahami sedikit tentang lapisan jaringan. Jika Anda pernah mendengar tentang model OSI 7 layer, inilah yang memungkinkan Anda menggunakan telnet untuk terhubung ke port lain. Meskipun di Internet, mereka hanya memperhatikan 4 lapisan dan disebut Internet Protocol Suite. Tanpa lapisan-lapisan jaringan, setiap program tidak hanya perlu memahami protokolnya sendiri, tetapi juga harus menentukan skema pengalamatan IP dan sistem portnya sendiri, yang berarti setiap router perlu memahami bagaimana untuk merutekan skema-skema ini dan protokol-protokol yang berbeda akan jauh lebih baik. lebih sulit untuk dipelajari dan didiagnosis. Sederhananya, Internet tidak akan berfungsi hampir tanpa lapisan.
Yang Anda khawatirkan adalah layer transport dan layer aplikasi. Pada layer transport, kami memiliki protokol Internet seperti TCP dan UDP dengan nomor port yang masing-masing berkisar dari 1 hingga 65535. Pada lapisan aplikasi kami memiliki protokol seperti HTTP, SMTP dan DNS. Biasanya setiap dokumen standar Internet yang mendefinisikan protokol menentukan port TCP atau UDP default yang harus digunakan oleh protokol. Seperti port TCP 80 untuk HTTP, port TCP 25 untuk SMTP, port UDP 53 untuk DNS dan port TCP 23 untuk Telnet. Program telnet sebenarnya berbicara protokol TELNET, yang merupakan protokol standar, tetapi sebagian besar yang kuno menurut standar saat ini. Karena urutan protokolnya terbuat dari karakter 8-bit, Anda jarang melihat protokol itu sendiri dan sebagian besar transparan jika dibandingkan dengan protokol lain yang lebih modern seperti HTTP dan SMTP yang menggunakan kata-kata yang terlihat manusiawi di ASCII seperti GET, POST, HELO, LOGIN, dll.
Karena protokolnya secara umum tidak terlihat, telnet dibuat untuk alat yang layak untuk menghubungkan ke port TCP lain dan memungkinkan pengguna untuk mengetik protokol secara manual. Beberapa administrator jaringan menggunakan teknik ini untuk mendiagnosis masalah dengan server. Namun karena program telnet masih memiliki protokol sendiri dan kadang-kadang dapat mengirim bit data tambahan, Anda masih dapat mengalami masalah dengan teknik ini. Ketika Anda menggunakan telnet, Anda benar-benar "membuat koneksi" pada layer aplikasi dan juga layer transport. Kebetulan protokol lapisan aplikasi lain mungkin berfungsi dengan baik untuk sebagian besar diagnostik dan tidak akan mengganggu protokol telnet. Ada program yang lebih baik untuk melakukan ini melalui yang disebut nc (Net Cat. Ini mendapatkan namanya dari menjadi versi berbasis jaringan dari perintah cat).
$ nc www.stackexchange.com 80
Program nc tidak berbicara protokol lapisan aplikasi apa pun dan ketika Anda membuat koneksi dengannya Anda "membuat koneksi" hanya pada lapisan Internet (alamat IP) dan lapisan Transport (TCP atau UDP). Apa itu artinya adalah Anda mengontrol protokol lapisan aplikasi apa yang digunakan. Hampir semua hal adalah permainan yang adil, bahkan protokol biner. Ini juga memungkinkan Anda melakukan hal-hal berguna seperti mentransfer file tanpa rusak dan mendengarkan port untuk lalu lintas masuk:
nc -l 9000 < movie.mp4 (Your friend runs this)
nc friends.computer.hostname 9000 > movie.mp4 (you run this)
Dan kemudian movie.mp4 ditransfer melalui jaringan tanpa menggunakan protokol lapisan aplikasi (seperti FTP) sama sekali. Protokol aplikasi sebenarnya adalah teman Anda yang memberi tahu Anda bahwa mereka siap untuk menjalankan perintah Anda.
nc juga dapat menangani paket UDP dan soket UNIX-domain. Menggunakannya untuk mendengarkan juga bisa menarik.
nc -l 12345
Sekarang di browser web Anda kunjungi http: // localhost: 12345 / dan di sesi nc Anda, Anda harus melihat GET / HTTP/1.1
permintaan browser . Pada titik ini Anda dapat mengetik sesuatu dan menekan Ctrl-D
dan itu akan muncul di browser Anda dalam teks biasa (Jika Anda ingin HTML muncul, Anda harus mengirimnya kembali tanggapan protokol HTTP yang tepat diikuti oleh kode HTML).
Terkadang, program yang secara asli berbicara satu protokol seperti HTTP dapat terhubung ke port lain yang dimaksudkan untuk protokol yang berbeda. Anda biasanya tidak dapat melakukan ini di browser GUI lagi karena mereka telah membatasi mereka untuk menghubungkan ke beberapa port, tetapi jika Anda menggunakan program seperti curl untuk terhubung ke port 25 (SMTP untuk mengirim email) Anda mungkin akan melihat beberapa kesalahan tentang melanggar protokol.
$ curl yourispsmtpserverhost.com:25
220 yourispsmtpserverhost.com ESMTP Postfix
221 2.7.0 Error: I can break rules, too. Goodbye.
Ini terjadi karena ikal biasanya berbicara protokol HTTP, jadi setelah itu membangun jabat tangan TCP, itu mulai mengirim data seperti ini:
GET / HTTP/1.1
Host: yourispsmtpserverhost.com:25
User-agent: curl
Tapi yang diharapkan oleh server SMTP adalah SMTP, yang lebih seperti ini:
HELO myhomecomputername.local
Pada titik mana server mengirimkan kembali garis identifikasi:
250 yourispsmtpserverhost.com
Jadi Anda melihat bahwa tidak ada yang mencegah curl dari membuat koneksi layer transport dengan server SMTP, itu tidak bisa berbicara protokol. Tetapi Anda dapat berbicara protokol sendiri dengan program seperti telnet atau lebih disukai nc.
nc(1)
) jauh lebih fleksibel. Ini dapat terhubung ke layanan ciphered SSL / TLS, dan juga dapat digunakan sebagai server dan bahkan menyampaikan data.