Apa sebenarnya port dan protokol itu?


11

Saya mendengar orang berbicara tentang port dan protokol (terkait dengan jaringan komputer), dan mereka sering memberikan analogi untuk mereka (misalnya: "port jauh seperti port pengiriman, mengirim dan menerima data seperti port pengiriman mengirim dan menerima barang dari port lain ") dan hal-hal seperti itu.

Saya mengerti apa artinya semua ini, tetapi hanya pada tingkat yang sangat buatan. Pada dasarnya, saya tahu apa itu port dan saya mengerti apa itu protokol, tapi apa itu sebenarnya?

Apakah port ini benda fisik? Apakah mereka dibangun di bagian komputer saya? Ada berapa port? Bisakah saya menambah atau mengurangi jumlah port? Apakah mereka bahkan bersifat fisik? Atau ditulis dalam kode? Di mana kode ini? Sistem operasinya? Apa itu port sebenarnya?

Apa itu protokol? Saya membayangkan mereka semacam kode .... Bisakah Anda membuat protokol sendiri? Bagaimana Anda mendapatkan port spesifik untuk menjalankan protokol tertentu? Bahasa apa yang Anda gunakan untuk membuat protokol? Bagaimana Anda mendefinisikan atau menciptakan protokol baru?

Jawaban:


9

Selanjutnya untuk jawaban Hello71, mungkin membantu untuk memvisualisasikan port dengan memikirkan struktur alamat dalam sebuah paket. Paket adalah unit data yang dikirimkan di sekitar jaringan. TCP adalah contoh protokol lapisan transport yang menggunakan port, dan umumnya digunakan melalui IP.

Jadi IP memiliki dua komponen pengalamatan - IP sumber dan IP tujuan. TCP menambahkan ini dengan menggunakan port sumber dan port tujuan. Ini adalah port yang memungkinkan mesin penerima untuk membedakan lalu lintas yang ditujukan untuk alamat IP yang sama - yaitu, jika Anda memiliki server yang menerima permintaan web dan email pada satu alamat IP, maka Anda perlu menentukan aplikasi mana yang harus menerima data - layanan email atau layanan web. Jadi mereka mungkin terlihat seperti ini jika satu pengguna melakukan permintaan web dan permintaan email ke server yang sama:

Source IP    Source Port       Dest IP       Dest Port       Service
10.1.1.10    23434             192.168.1.1   80              web
10.1.1.10    34343             192.168.1.1   25              incoming email

Layanan web memiliki port 80 dan layanan email memiliki port 25 - mereka "mendengarkan" pada port masing-masing, yang memungkinkan lalu lintas berakhir di tempat yang tepat.

Port sumber adalah "ephemeral" - dalam hal ini dibuat pada saat paket dikirim. Namun, itu masih memiliki tujuan yang bermanfaat. Ini memungkinkan kedua ujung koneksi untuk melacak percakapan terpisah. Pertimbangkan jika pengguna kami mengirim dua permintaan web secara bersamaan:

Source IP    Source Port       Dest IP       Dest Port       Service
10.1.1.10    23232             192.168.1.1   80              web request 1
10.1.1.10    23234             192.168.1.1   80              web request 2

Ini membuat layanan web tahu bahwa ini adalah permintaan yang terpisah, tetapi juga, lalu lintas kembali dari server web - halaman web - dikirim kembali ke port sumber masing-masing, yang memungkinkan browser untuk mengetahui permintaan mana yang ditanggapi oleh server.

Perhatikan bahwa ini semua mengacu pada nomor port, dari perspektif TCP / IP, data aktual yang dipindahkan di seluruh port ini bisa berupa apa saja. Itu tidak peduli atau tidak memiliki kesadaran aplikasi, jadi jika Anda memiliki lalu lintas web pada port 25 dan email pada port 80, itu akan menjadi tidak bijaksana.

Terserah aplikasi pengirim dan penerima untuk memastikan data adalah struktur yang tepat, dan di sinilah protokol aplikasi masuk. HTTP adalah contoh protokol aplikasi yang digunakan browser web untuk berkomunikasi dengan server web. Ini adalah protokol yang didefinisikan dengan baik yang memastikan bahwa browser akan mengirim permintaan ke server web mana pun dan server web itu akan memahami dan merespons dengan masuk akal. Tapi apa yang tidak dimasukkan dalam definisi adalah apa-apa tentang bagaimana paket mendapatkan dari A ke B - itu adalah tanggung jawab lapisan sebelumnya - lapisan transportasi, internet dan tautan.


Terima kasih! Ini hanya jawaban yang saya cari, terima kasih telah membantu!
Bob

3

Hm Saya akan berpikir bahwa tempat terbaik untuk memulai adalah dengan melihat IP Suite, alias model TCP / IP. (Mengabaikan lapisan lain dari model OSI untuk tujuan kesederhanaan.)

Pada dasarnya, ini adalah serangkaian lapisan:

Lapisan Aplikasi - HTTP, FTP, POP, SSH, dll.
Lapisan Transportasi - TCP, UDP, dll.
Lapisan Internet - IP, ICMP, dll.
Lapisan Tautan - Ethernet, dll.

Ports, sebagian besar, diimplementasikan pada layer transport (layer 4 - Ya, penomorannya sudah benar.)

Mayoritas tumpukan TCP dan / atau UDP diimplementasikan dalam OS menggunakan sistem dasar penugasan port ke program dan hanya meningkatkan acara dalam program ini ketika paket masuk melalui jaringan. Namun, implementasi apa pun secara teori dapat bekerja; bahkan mungkin dengan tumpukan alternatif hipotetis merenungkan di akademisi.

TCP telah didefinisikan memiliki total 65535 port, yang dapat digunakan program apa pun untuk melakukan apa pun yang mereka inginkan (walaupun banyak OS membatasi penggunaan port di bawah 1024, memberi mereka status khusus ad hoc). Meskipun ada beberapa daftar terbatas, tidak ada standar nyata untuk menentukan siapa yang mendapatkan port apa dan port apa yang menjalankan program apa. Sebuah port, dengan demikian, kurang lebih merupakan angka acak yang diterapkan oleh implementasi yang berbeda dari suatu program untuk disetujui. Tentu saja, para perancang program semacam itu mencoba menghindari pelabuhan yang sudah dipilih oleh program populer lainnya.

Memang itu sama sekali tidak diperlukan untuk menjalankan menggunakan TCP. Beberapa protokol berjalan pada lapisan internet telanjang, atau bahkan lapisan tautan telanjang, terutama untuk tujuan efisiensi, atau karena protokol ini ditemukan sebelum bahkan TCP atau IP ada. Tentu saja, ketika melakukannya, Anda menukar kesederhanaan dan pemeriksaan bug yang ekstensif dari perpustakaan jaringan OS.

Untuk lebih jelasnya, periksa halaman Wikipedia pada model OSI, TCP, dan IP.


Saya mengerti semua itu. Jadi pada dasarnya, port bukanlah hal fisik? Sesuatu yang diprogram? Di mana port didefinisikan pada komputer? Dan kemudian untuk protokol, bagaimana mereka dibuat? Apakah itu diprogram?
Bob

Tidak, port bukanlah hal fisik dalam konteks ini (jelas port USB bersifat fisik tetapi tidak terkait dengan topik ini). Protokol didefinisikan melalui RFC ( en.wikipedia.org/wiki/Request_for_Comments ) dan diimplementasikan dalam kode - diprogram.
Paul

Apakah benar mengatakan bahwa TCP adalah proses sistem yang menyimpan memori untuk menyimpan data yang masuk dari IP (atau menyimpan data yang akan diambil oleh IP) dan bahwa memori ini dibagi menjadi 'port'. Dan bahwa aplikasi lain (proses) seperti HTTP, dapat memberi tahu TCP bahwa mereka ingin memesan port tertentu (yaitu 80 dan 443). Maka menjadi tugas TCP untuk 1. memungkinkan HTTP untuk menambahkan data data keluar ke alamat memori tersebut, dan 2. menginformasikan HTTP ketika data yang masuk telah ditambahkan ke alamat memori tersebut?
Zach Smith

Mungkin Bob bingung antara port protokol dan port switch fisik. Bagian port protokol dijawab dengan baik oleh beberapa orang, meskipun sumbernya hilang. Adapun port fisik, itu adalah input dan Output tempat tempat pemasangan kabel yang memungkinkan transfer data jaringan. Itu mungkin melibatkan sirkuit elektronik, penerima serat optik, laser dan buffer. L. Peterson edisi ke-4.
nassim

3

Meskipun pertanyaan ini telah ditandai sebagai dijawab, saya ingin menjawab beberapa pertanyaan tambahan yang diajukan dalam OP.

Apakah port ini benda fisik?

Tidak ada port yang bukan benda fisik.

Nomor port adalah integer 16-bit unsigned, yang berarti kisaran port yang tersedia untuk digunakan adalah dari 1 hingga 65535 (nomor port 0 dicadangkan dan tidak dapat digunakan). Suatu proses mengaitkan saluran input atau outputnya melalui soket Internet, jenis deskriptor file, dengan protokol transport, nomor port, dan alamat IP. Proses ini dikenal sebagai mengikat, dan memungkinkan pengiriman dan penerimaan data melalui jaringan.

Apakah mereka dibangun di bagian komputer saya? Apakah mereka bahkan bersifat fisik? Atau ditulis dalam kode? Di mana kode ini? Sistem operasinya? Apa itu port sebenarnya?

Perangkat lunak jaringan sistem operasi memiliki tugas mentransmisikan data keluar dari semua port aplikasi ke jaringan, dan meneruskan paket jaringan yang tiba ke suatu proses dengan mencocokkan alamat IP paket dan nomor port.

Hanya satu proses yang dapat mengikat ke alamat IP tertentu dan kombinasi port menggunakan protokol transport yang sama. Kegagalan aplikasi umum, kadang-kadang disebut konflik port, terjadi ketika beberapa program berupaya untuk mengikat nomor port yang sama pada alamat IP yang sama menggunakan protokol yang sama.

Paragraf di atas adalah kunci untuk memahami mengapa port / protokol digunakan dalam jaringan. Jika kami tidak memiliki cara untuk menentukan protokol, yang mentransmisikan data melalui nomor port apon yang disepakati - Anda tidak akan dapat melakukan lebih dari 1 hal sekaligus (periksa email Anda dan gunakan web) karena komputer Anda akan memiliki tidak ada cara untuk membedakan antara data untuk klien email Anda dan data untuk situs web yang Anda jelajahi.

Ada berapa port?

Nomor port diberikan dalam berbagai cara, berdasarkan tiga rentang:

  1. Terkenal / Port Sistem (0-1023) - Rentang port ini digunakan oleh proses sistem yang menyediakan jenis layanan jaringan yang banyak digunakan (HTTP / 80, HTTPS / 443, Telnet / 21, SSH / 22)

  2. Port Terdaftar / Pengguna (1024-49151) - Kisaran nomor port dari 1024 hingga 49151 adalah port terdaftar. Mereka ditugaskan oleh IANA untuk layanan spesifik setelah aplikasi oleh entitas yang meminta. (Webmin / 10000, HTTP Proxy / 8080, Remote Desktop Protocol / 3389, dll)

  3. Port Ephemeral / Dynamic / Privat (49152-65535) - Kisaran 49152-65535 berisi port dinamis atau pribadi yang tidak dapat didaftarkan dengan IANA. Rentang ini digunakan untuk tujuan khusus atau sementara dan untuk alokasi otomatis port sementara.

Bisakah saya menambah atau mengurangi jumlah port?

Sehubungan dengan dapat meningkatkan jumlah port yang tersedia, Anda tidak dapat menetapkan port di atas 65535 karena matematika yang memungkinkan jaringan berfungsi (biner) - jadi jawaban untuk pertanyaan ini adalah tidak, Anda tidak dapat meningkatkan jumlah total yang tersedia port di atas 65535.

Apa itu protokol?

Dalam ilmu komputer, protokol komunikasi adalah sistem aturan digital untuk pertukaran pesan di dalam atau di antara komputer. Ketika pesan dipertukarkan melalui jaringan komputer, sistem aturan disebut protokol jaringan. Protokol pada dasarnya adalah seperangkat instruksi / perintah / panggilan yang disepakati yang dapat dikomunikasikan oleh dua perangkat jaringan. Pikirkan jika kami tidak menyetujui protokol dan server web hanya mengirim data secara acak ke browser web bahwa browser tidak tahu apa yang harus dilakukan? Untungnya kami memiliki HTTP dan semua browser web yang dibuat telah dibangun ke dalam perangkat lunak sehingga dapat berkomunikasi dengan server web apa pun yang juga berbicara bahasa yang sama (HTTP).

Saya membayangkan mereka semacam kode .... Bisakah Anda membuat protokol sendiri? Bahasa apa yang Anda gunakan untuk membuat protokol?

Ya, Anda dapat membuat protokol sendiri. Protokol ditulis dalam berbagai bahasa. Saya bukan pengembang perangkat lunak, tetapi saya cukup yakin bahwa selama bahasa apa pun yang Anda gunakan memiliki perpustakaan yang memungkinkan Anda untuk menulis perangkat lunak yang dapat berkomunikasi melalui TCP / IP (ada suite protokol lain, tetapi TCP / IP adalah yang paling banyak digunakan) Anda dapat menggunakan bahasa itu untuk menulis protokol. Bahasa pemrograman 'C' tampaknya menjadi yang paling umum digunakan untuk menulis protokol. Hal ini disebabkan oleh fakta bahwa banyak protokol jaringan pertama dikembangkan pada UNIX pada tahun 1970-an dan C adalah bahasa yang digunakan UNIX.

Bagaimana Anda mendapatkan port spesifik untuk menjalankan protokol tertentu?

Ini sedikit berbeda antara OS. Misalnya, untuk mengubah nomor port yang dijalankan Remote Desktop Protocol di Windows, Anda perlu mengedit registri. Di Linux, banyak layanan jaringan dapat dikonfigurasi secara langsung dari file .conf untuk layanan jaringan tertentu.

Bagaimana Anda mendefinisikan atau menciptakan protokol baru?

Lihat https://journal.paul.querna.org/articles/2012/02/22/designing-network-protocols/ untuk posting blog oleh seseorang yang baru-baru ini mengembangkan protokol jaringan baru dan hal-hal apa yang harus dia lakukan sepanjang jalan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.