Soket Unix - Pelabuhan dan Layanan

Ketika proses klien ingin menghubungkan server, klien harus memiliki cara untuk mengidentifikasi server yang ingin dihubungkan. Jika klien mengetahui alamat Internet 32-bit dari host tempat server berada, ia dapat menghubungi host itu. Tetapi bagaimana klien mengidentifikasi proses server tertentu yang berjalan pada host itu?

Untuk mengatasi masalah mengidentifikasi proses server tertentu yang berjalan di host, baik TCP dan UDP telah menetapkan sekelompok port yang terkenal.

Untuk tujuan kami, port akan didefinisikan sebagai bilangan bulat antara 1024 dan 65535. Ini karena semua nomor port yang lebih kecil dari 1024 dianggap terkenal - misalnya, telnet menggunakan port 23, http menggunakan 80, ftp menggunakan 21, dan seterusnya.

Penetapan port ke layanan jaringan dapat ditemukan di file / etc / services. Jika Anda menulis server Anda sendiri, maka harus berhati-hati dalam menetapkan port ke server Anda. Anda harus memastikan bahwa port ini tidak boleh ditetapkan ke server lain.

Biasanya merupakan praktik untuk menetapkan nomor port lebih dari 5000. Tetapi ada banyak organisasi yang telah menulis server dengan nomor port lebih dari 5000. Misalnya, Yahoo Messenger berjalan pada 5050, SIP Server berjalan pada 5060, dll.

Contoh Pelabuhan dan Layanan

Berikut adalah daftar kecil layanan dan port terkait. Anda dapat menemukan daftar terbaru dari port internet dan layanan terkait di IANA - TCP / IP Port Assignments .

Service Port Number Service Description
gema 7 UDP / TCP mengirimkan kembali apa yang diterimanya.
membuang 9 UDP / TCP membuang input.
siang hari 13 UDP / TCP mengembalikan waktu ASCII.
Chargen 19 UDP / TCP mengembalikan karakter.
ftp 21 Transfer file TCP.
telnet 23 Login jarak jauh TCP.
smtp 25 Email TCP.
siang hari 37 UDP / TCP mengembalikan waktu biner.
tftp 69 Transfer file UDP sepele.
jari 79 Info TCP pada pengguna.
http 80 TCP World Wide Web.
Gabung 513 Login jarak jauh TCP.
WHO 513 Info UDP berbeda pada pengguna.
Xserver 6000 Jendela TCP X (NB> 1023).

Fungsi Pelabuhan dan Layanan

Unix menyediakan fungsi berikut untuk mengambil nama layanan dari file / etc / services.

  • struct servent *getservbyname(char *name, char *proto) - Panggilan ini mengambil nama layanan dan nama protokol, dan mengembalikan nomor port yang sesuai untuk layanan itu.

  • struct servent *getservbyport(int port, char *proto) - Panggilan ini menggunakan nomor port dan nama protokol, dan mengembalikan nama layanan yang sesuai.

Nilai yang dikembalikan untuk setiap fungsi adalah penunjuk ke struktur dengan bentuk berikut -

struct servent {
   char  *s_name;
   char  **s_aliases;
   int   s_port;
   char  *s_proto;
};

Berikut adalah deskripsi bidang anggota -

Atribut Nilai Deskripsi
nama S http Itu adalah nama resmi layanan tersebut. Misalnya SMTP, FTP POP3, dll.
s_aliases ALIAS Ini memegang daftar alias layanan. Biasanya, ini akan disetel ke NULL.
olahraga 80 Ini akan memiliki nomor port terkait. Misalnya, untuk HTTP, nilainya menjadi 80.
s_proto

TCP

UDP

Ini diatur ke protokol yang digunakan. Layanan Internet disediakan menggunakan TCP atau UDP.