端口号介绍
數(shù)據(jù)鏈路和IP中的地址,分別指的是MAC地址和P地址。前者用來識別同一鏈路中不同的計算機,后者用來識別TCP/IP網(wǎng)絡(luò)中互連的主機和路由器。在傳輸層中也有這種類似于地址的概念,那就是端口號。端口號用來識別同一臺計算機中進(jìn)行通信的不同應(yīng)用程序。因此,它也被稱為程序地址。
根據(jù)端口號識別應(yīng)用
一臺計算機上同時可以運行多個程序。例如,接受WWW服務(wù)的Web 瀏覽器、電郵客戶端、遠(yuǎn)程登錄用的 ssh 客戶端等程序都可同時運行。傳輸層協(xié)議正是利用這些端口號識別本機中正在進(jìn)行通信的應(yīng)用程序,并準(zhǔn)確地將數(shù)據(jù)傳輸。
通過IP地址、端口號、協(xié)議號進(jìn)行通信識別
如下圖所示,①和②的通信是在兩臺計算機上進(jìn)行的。它們的目標(biāo)端口號相同,都是80。例如打開兩個Web瀏覽器,同時訪問兩個服務(wù)器上不同的頁面,就會在這個瀏覽器跟服務(wù)器之間產(chǎn)生類似前面的兩個通信。在這種情況下可以根據(jù)源端口號加以區(qū)分。①跟③的目標(biāo)端口號和源端口號完全相同,但是它們各自的源IP地址不同,可以通過源地址進(jìn)行區(qū)分。
此外,還有一種情況,IP地址和端口全都一樣,只是協(xié)議號(表示上層是TCP或UDP的一種編號)不同。這種情況下,也會認(rèn)為是兩個不同的通信。
因此,TCP/P或UDP/IP通信中通常采用5個信息來識別一個通信。它們是“源P地址”、“目標(biāo)P地址”、“協(xié)議號”、“源端口號”、“目標(biāo)端口號”。只要其中某一項不同,則被認(rèn)為是其他通信。
如何確定端口號
在實際進(jìn)行通信時,要事先確定端口號。確定端口號的方法分為兩種:
-
標(biāo)準(zhǔn)既定的端口號(靜態(tài)方法),它是指每個應(yīng)用程序都有其指定的端口號。
像HTTP、TELNET、FTP等廣為使用的應(yīng)用協(xié)議中所使用的端口號是固定的。這些端口號也被稱之為知名端口號(Well—Known Port Number )。應(yīng)用程序應(yīng)該避免使用知名端口號進(jìn)行既定目的之外的通信,以免產(chǎn)生沖突。
除知名端口號之外,還有一些端口號也被正式注冊,不過,這些端口號可用于任何通信用途。它們分布在1024到49151的數(shù)字之間。
-
時序分配法(動態(tài)分配法),此時,服務(wù)端有必要確定監(jiān)聽端口號,但是接受服務(wù)的客戶端沒必要確定端口號。
在這種方法下,客戶端應(yīng)用程序可以完全不用自己設(shè)置端口號,而全權(quán)交給操作系統(tǒng)進(jìn)行分配。操作系統(tǒng)可以為每個應(yīng)用程序分配互不沖突的端口號。例知,每需要一個新的端口號時,就在之前分配號碼的基礎(chǔ)上加1。這樣,操作系統(tǒng)就可以動態(tài)地管理端口號了。
根據(jù)這種動態(tài)分配端口號的機制,即使是同一個客戶端程序發(fā)起的多個TCP連接,識別這些通信連接的5部分?jǐn)?shù)字也不會全部相同。動態(tài)分配的端口號取值范圍在49152到65535之間。
端口號與協(xié)議的關(guān)系
端口號由其使用的傳輸層協(xié)議決定。因此,不同的傳輸協(xié)議可以使用相同的端口號。例如,TCP與UDP使用同一個端口號,但使用目的各不相同。這是因為端口號上的處理是根據(jù)每個傳輸協(xié)議的不同而進(jìn)行的。
數(shù)據(jù)到達(dá)IP層后,會先檢查IP首部中的協(xié)議號,再傳給相應(yīng)協(xié)議的模塊。如果是TCP則傳給TCP模塊、如果是UDP則傳給UDP模塊去做端口號的處理。即使是同一個端口號,由于傳輸協(xié)議是各自獨立地進(jìn)行處理,因此相互之間不會受到影響。
總結(jié)
- 上一篇: Linux环境下查看日志文件命令详解
- 下一篇: linux查看日志文件内容命令tail、