Unix Socket - 端口和服務(wù)

當(dāng)客戶端進(jìn)程想要連接服務(wù)器時(shí),客戶端必須有一種方法來(lái)識(shí)別它想要連接的服務(wù)器。如果客戶端知道服務(wù)器所在主機(jī)的32位Internet地址,它就可以與該主機(jī)聯(lián)系。但是客戶端如何識(shí)別運(yùn)行在該主機(jī)上的特定服務(wù)器進(jìn)程呢?

為了解決識(shí)別主機(jī)上運(yùn)行的特定服務(wù)器進(jìn)程的問(wèn)題,TCP和UDP都定義了一組眾所周知的端口。

對(duì)于我們的目的,端口將被定義為1024到65535之間的整數(shù)。這是因?yàn)樗行∮?024的端口號(hào)都被認(rèn)為是眾所周知的——例如,telnet使用端口23,http使用端口80,ftp使用端口21,等等。

網(wǎng)絡(luò)服務(wù)的端口分配可以在/etc/services.文件中找到如果您正在編寫(xiě)自己的服務(wù)器,那么必須注意為您的服務(wù)器分配端口。您應(yīng)該確保該端口不應(yīng)分配給任何其他服務(wù)器。

通常的做法是分配任何超過(guò)5000的端口號(hào)。但也有許多組織編寫(xiě)了端口號(hào)超過(guò)5000的服務(wù)器。例如,Yahoo Messenger運(yùn)行在5050,SIP Server運(yùn)行在5060,等等。

端口和服務(wù)示例

下面是一個(gè)服務(wù)和相關(guān)端口的小列表。您可以在IANA - TCP/IP端口分配中找到最新的internet端口和相關(guān)服務(wù)列表。

端口和業(yè)務(wù)功能

Unix提供以下函數(shù)從/etc/services文件中獲取服務(wù)名。

struct servent *getservbyname(char *name, char *proto)? -?這個(gè)調(diào)用接受服務(wù)名和協(xié)議名,并返回該服務(wù)對(duì)應(yīng)的端口號(hào)。

struct servent *getservbyport(int port, char *proto)?-?這個(gè)調(diào)用接受端口號(hào)和協(xié)議名,并返回相應(yīng)的服務(wù)名。

每個(gè)函數(shù)的返回值都是一個(gè)指向結(jié)構(gòu)體的指針,其形式如下所示

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

下面是成員字段的描述

屬性:s_name,值:http,描述:這是該服務(wù)的正式名稱。例如SMTP、FTP、POP3等。

屬性:s_aliases,值:ALIAS,描述:它保存服務(wù)別名列表。大多數(shù)情況下,它將被設(shè)置為NULL。

屬性:s_port,值:80,描述:它將具有關(guān)聯(lián)的端口號(hào)。例如,對(duì)于HTTP,它將是80。

屬性:s_proto,值:TCP、UDP,描述:設(shè)置為所使用的協(xié)議。Internet服務(wù)使用TCP或UDP提供。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Unix套接字編程中使用各種結(jié)構(gòu)來(lái)保存關(guān)于地址和端口的信息以及其他信息。大多數(shù)套接字函數(shù)需要一個(gè)指向套接字地址結(jié)構(gòu)...
    朋小閱讀 366評(píng)論 0 0
  • Socket網(wǎng)絡(luò)編程實(shí)現(xiàn)過(guò)程簡(jiǎn)單總結(jié) 一、 服務(wù)器端 1、 加載及釋放套接字庫(kù) a) 使用函數(shù)WSAStar...
    期門(mén)閱讀 9,106評(píng)論 0 4
  • 一、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 6,338評(píng)論 0 10
  • socket --- 底層網(wǎng)絡(luò)接口源代碼: Lib/socket.py 這個(gè)模塊提供了訪問(wèn)BSD套接字的接口。在所...
    青月教主閱讀 1,923評(píng)論 0 0
  • 簡(jiǎn)單的講一下自己對(duì)端口的理解,以及一些與端口有關(guān)的命令的介紹。 1.背景介紹 什么是端口 在 Internet上,...
    沉沉鐘聲閱讀 4,177評(píng)論 0 1

友情鏈接更多精彩內(nèi)容