1. 程式人生 > >埠號 & 一個埠號是否可以被多個程序繫結?& 一個程序是否可以bind多個埠號?

埠號 & 一個埠號是否可以被多個程序繫結?& 一個程序是否可以bind多個埠號?

1.埠號的作用

埠號可以用來標識同一個主機上通訊的不同應用程式,埠號+IP地址就可以組成一個套接字,用來標識一個程序

2.埠號的應用場景

在TCP/IP協議中,用“源IP地址”,“目的IP地址”,“源埠號”,“目的埠號”,協議號(IP協議的協議號為4,TCP的協議號為6)這樣的一個五元組來標識一個通訊,通訊的雙方在傳送訊息時,訊息的頭部會帶著這樣的五元組

3.埠範圍劃分

(1)0~1023:知名埠號,是留著備用的,一把都是用於協議,例如HTTP、FTP、SSH
(2)1024~65535:是作業系統動態分配的埠號,客戶端程式的埠號,就是由操作糸統從這個範圍來分配的,在TCP與UDP的套接字通訊中,客戶端的埠號就是在此範圍中

4.知名的埠號與埠號對應的伺服器

HTTP伺服器:80
FTP伺服器:21

ps:FTP有一個控制連線和一個數據連線,所以FTP是有兩個埠號的,控制連線的埠號是21,資料連線的埠號是20,但是如果FTP的埠號預設是21,如果指明FTP有兩個埠號的話,那就是21和20,否則FTP伺服器的埠號就是21

TELNET伺服器:23
SSH伺服器:22
HTTPS:443
WEB伺服器:25

5.在linux中如何檢視知名埠號?

cat /etc/services

6.一個程序是否可以bind多個埠號?

可以

因為一個程序可以開啟多個檔案描述符,而每個檔案描述符都對應一個埠號,所以一個程序可以繫結多個埠號

7.一個埠號是否可以被多個程序繫結?

不可以

ps:如果程序先繫結一個埠號,然後在fork一個子程序,這樣的話就可以是實現多個程序繫結一個埠號,但是兩個不同的程序繫結同一個埠號是不可以的