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