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. |