[TOC]
# 端口
******
在網絡技術中,端口(Port)包括`邏輯端口`和`物理端口`兩種類型。物理端口指的是物理存在的端口,如 ADSL Modem、集線器、交換機、路由器上用于連接其他網絡設備的接口,如 RJ-45 端口、SC 端口等等。邏輯端口是指邏輯意義上用于區分服務的端口,如 TCP/IP 協議中的服務端口,端口號的范圍從 0 到 65535,比如用于瀏覽網頁服務的 80 端口,用于 FTP 的 21 端口等。由于物理端口和邏輯端口數量較多,為了對端口進行區分,將每個端口進行了編號,這就是端口號。本文主要講邏輯端口。
<br />
## 邏輯端口
端口有什么用呢?我們知道,一臺擁有 IP 地址的主機可以提供許多服務,比如 Web 服務、FTP 服務、SMTP 服務等,這些服務完全可以通過 1 個 IP 地址來實現。那么,主機是怎樣區分不同的網絡服務呢?顯然不能 只靠 IP 地址,因為 IP 地址與網絡服務的關系是一對多的關系。實際上是通過“IP 地址+端口號”來區分不同的服務的。
服務器一般都是通過知名端口來識別的。例如,對于每個 TCP/IP 實現來說,FTP 服務器的 TCP 端口號都是 21,每個 Telnet 服務器的 TCP 端口號都是 23,每個 TFTP(簡單文件傳送協議)服務器的 UDP 端口號都是 69。任何 TCP/IP 實現所提供的服務都用知名的 1~1023 之間的端口號。這些知名端口號由 Internet 號分配機構(Internet Assigned Numbers Authority,IANA)來管理。到 1992 年為止,知名端口號介于 1~255之間。256~1023之間的端口號通常都是由 Unix 系統占用,以提供一些特定的 Unix 服務------也就是說,提供一些只用 Unix 系統才有的、而其他操作系統可能不提供的服務,IANA 管理 1~1023 之間所有的端口號。
Internet 擴展服務與 Unix 特定服務之間的一個差別就是 Telnet 和 Rlogin。它們二者都允許通過計算機網絡登錄到其他主機上。Telnet 是采用端口號為 23 的 TCP/IP 標準且幾乎可以在所有操作系統上進行實現。Rlogin 只是為 Unix 系統設計的(盡管許多非 Unix 系統也提供該服務),它的知名端口號為 513。
客戶端通常對它所使用的端口號并不關心,只需保證該端口號在本機上是唯一的就可以了。客戶端口號又稱作臨時端口號(即存在時間很短暫)。這是因為它通常只是在用戶運行該客戶程序時才存在,而服務器則只要主機開著的,其服務就運行。
大多數 TCP/IP 實現給臨時端口號分配 1024~5000 之間的端口號。大于 5000 的端口號是為其他服務器預留的(Internet 上并不常用的服務)。我們可以在后面看見許多這樣的給臨時端口分配端口號的例子。Solaris 2.2 是一個很有名的例外。通常 TCP 和 UDP 的缺省臨時端口號從 32768 開始。
<br />
## phper中的端口
在 php 開發者中,最常見的就是 80 http 默認端口了,在通常情況下,我們訪問 www.easyswoole.com,其實是請求的 www.easyswoole.com:80,在沒有指定端口的情況下,訪問網站都是默認為 80 端口,如果你 web 服務器監聽的是 8080 端口,訪問時就必須 www.easyswoole.com:8080 帶上端口才能訪問。
- 引言
- Introduction
- 運行模式
- php-fpm
- php-cli
- 基礎介紹
- 網絡協議
- ip
- tcp
- tcp
- http
- webSocket
- udp
- port端口
- 會話管理
- cookie
- session
- api/token
- linux基礎
- lnmp安裝
- 命令
- 進程管理
- 擴展安裝
- 端口監控
- 防火墻說明
- php7.0
- 部分新特性
- php回調/閉包
- 回調事件
- 閉包/匿名函數
- php多進程
- 多進程開啟
- 進程通信
- 進程信號
- 僵尸進程
- 孤兒進程
- 守護進程
- 同步/異步
- 阻塞/非阻塞
- 協程
- Swoole
- 初始Swoole
- 運行機制
- 生命周期
- composer使用
- EasySwoole
- 設計理念
- 組件說明
- 運行過程
- demo
- 提問的藝術