Unix Soketi - Bağlantı Noktaları ve Hizmetler

Bir istemci işlemi bir sunucuya bağlanmak istediğinde, istemcinin bağlanmak istediği sunucuyu tanımlamanın bir yolu olmalıdır. İstemci, sunucunun bulunduğu ana bilgisayarın 32 bit İnternet adresini biliyorsa, bu ana bilgisayarla iletişim kurabilir. Ancak istemci, o ana bilgisayarda çalışan belirli sunucu sürecini nasıl tanımlar?

Bir ana bilgisayarda çalışan belirli bir sunucu işlemini tanımlama sorununu çözmek için, hem TCP hem de UDP iyi bilinen bir bağlantı noktası grubu tanımlamıştır.

Amacımız için, bir bağlantı noktası 1024 ile 65535 arasında bir tam sayı olarak tanımlanacaktır. Bunun nedeni, 1024'ten küçük tüm bağlantı noktası numaralarının iyi bilindiği kabul edilmesidir - örneğin, telnet 23 numaralı bağlantı noktasını, http 80'i, ftp 21'i kullanır, ve bunun gibi.

Ağ hizmetlerine bağlantı noktası atamaları / etc / services dosyasında bulunabilir. Kendi sunucunuzu yazıyorsanız, sunucunuza bir bağlantı noktası atamak için özen gösterilmelidir. Bu bağlantı noktasının başka bir sunucuya atanmadığından emin olmalısınız.

Normalde herhangi bir port numarasını 5000'den fazla atamak bir uygulamadır. Ancak 5000'den fazla port numarasına sahip sunucuları yazan birçok kuruluş vardır. Örneğin, Yahoo Messenger 5050'de, SIP Sunucusu 5060'ta vb.

Örnek Bağlantı Noktaları ve Hizmetler

İşte küçük bir hizmet listesi ve ilgili bağlantı noktaları. İnternet bağlantı noktalarının ve ilgili hizmetlerin en güncel listesini IANA - TCP / IP Bağlantı Noktası Atamalarında bulabilirsiniz .

Service Port Number Service Description
Eko 7 UDP / TCP aldığını geri gönderir.
atmak 9 UDP / TCP girişi atar.
gündüz 13 UDP / TCP, ASCII zamanını döndürür.
Chargen 19 UDP / TCP karakterleri döndürür.
ftp 21 TCP dosya aktarımı.
telnet 23 TCP uzaktan oturum açma.
smtp 25 TCP e-postası.
gündüz 37 UDP / TCP, ikili zamanı döndürür.
tftp 69 UDP önemsiz dosya aktarımı.
parmak 79 Kullanıcılar hakkında TCP bilgisi.
http 80 TCP World Wide Web.
oturum aç 513 TCP uzaktan oturum açma.
DSÖ 513 Kullanıcılar hakkında UDP farklı bilgiler.
Xserver 6000 TCP X pencereleri (NB> 1023).

Liman ve Servis Fonksiyonları

Unix, hizmet adını / etc / services dosyasından almak için aşağıdaki işlevleri sağlar.

  • struct servent *getservbyname(char *name, char *proto) - Bu çağrı, hizmet adını ve protokol adını alır ve o hizmet için ilgili bağlantı noktası numarasını döndürür.

  • struct servent *getservbyport(int port, char *proto) - Bu çağrı, bağlantı noktası numarasını ve protokol adını alır ve ilgili hizmet adını döndürür.

Her işlevin dönüş değeri, aşağıdaki biçime sahip bir yapıya göstericidir -

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

Üye alanlarının açıklaması aşağıdadır -

Öznitelik Değerler Açıklama
adı http Hizmetin resmi adıdır. Örneğin, SMTP, FTP POP3 vb.
s_aliases ALIAS Hizmet takma adlarının listesini tutar. Çoğu zaman NULL olarak ayarlanacaktır.
spor 80 İlişkili bağlantı noktası numarasına sahip olacaktır. Örneğin, HTTP için 80 olacaktır.
s_proto

TCP

UDP

Kullanılan protokole ayarlanmıştır. İnternet hizmetleri, TCP veya UDP kullanılarak sağlanır.