有人能解釋一下 127.0.0.1:XXXXXX 之後的那些遞增埠是什麼嗎
在使用 PHP 開發伺服器時,我在我的環回 ip 之後偶然發現了一個看起來很奇怪的遞增埠號,我對此並不熟悉,也無法在網上找到有關它的資訊。
$ php -S 127.0.0.1:3000
記錄這樣的請求:[Tue Aug 17 16:18:19 2021] 127.0.0.1:65533 [200]: GET / [Tue Aug 17 16:18:19 2021] 127.0.0.1:65533 Closing [Tue Aug 17 16:18:19 2021] 127.0.0.1:49152 Accepted [Tue Aug 17 16:18:19 2021] 127.0.0.1:65534 [200]: GET / [Tue Aug 17 16:18:19 2021] 127.0.0.1:65534 Closing [Tue Aug 17 16:18:19 2021] 127.0.0.1:65535 Accepted [Tue Aug 17 16:18:19 2021] 127.0.0.1:49152 [200]: GET / [Tue Aug 17 16:18:19 2021] 127.0.0.1:49152 Closing [Tue Aug 17 16:18:19 2021] 127.0.0.1:49153 Accepted
起初我認為這個遞增的埠代表隱藏日誌文件中的一個行號,我沒有成功地試圖找到它——你可以稱我為愚蠢的;)
然後,在嘗試通過向其發送垃圾郵件來溢出該計數器後,
hey
我注意到它在 65535 上溢出,這告訴我它是某種 16 位整數。你能向我解釋一下這個埠號代表什麼/為什麼 php 首先向我顯示這個號碼?- 我有 JavaScript 前端背景,所以我很不熟悉這種 TCP 魔法是如何工作的,並且從未在 Express/Fastify 應用程序日誌中看到它。
你能解釋一下這個埠號代表什麼嗎
如果對 TCP/IP 有點熟悉,您就會知道電腦是通過其 IP 地址來引用的。現在當一個數據包進來時,電腦如何知道該數據包應該轉發到哪個程序?這就是埠的用武之地。
埠範圍從 1 到 65535,分為三類:
- 眾所周知的 0-1023 (
80 -> HTTP
,443 -> HTTPS
,53 -> DNS
, 等…)- 註冊 1024-49151 (
1194 -> OpenVPN
,2195 -> Apple push notifications
, 等…)- 動態/私有 49152–65535
如果您正在執行一個服務,例如一個 Web 伺服器,您將在眾所周知的埠 80 和/或 443 上進行偵聽。這樣所有使用者都可以通過一種標準化的方式訪問您的服務。
如果您是使用者,並且您導航到
google.com
,則您的作業系統將在與 Google 的網路伺服器通信時從動態/私有範圍中選擇一個埠作為源埠。這個埠不需要眾所周知或註冊,因為客戶端是發起連接的人,並告訴 Web 伺服器他們應該在哪個埠上通信。當 Google 發送他們的響應時,他們會將他們的 TCP/IP 數據包發送到客戶端使用的埠,因此客戶端的作業系統將知道將該數據包轉發到正確的瀏覽器選項卡。為什麼php首先向我顯示這個數字?
在許多情況下,查看客戶端埠號可能會有所幫助且資訊豐富。
假設有另一個服務查詢您的 Web 伺服器,並且該伺服器在埠 5000 上執行。您可以在日誌中搜尋客戶端埠 5000,以查看來自該服務的請求日誌。
或者,如果有人正在掃描您的網站,通常他們會使用一個啟動多個執行緒的工具,每個執行緒都有一個唯一的埠。當您查看日誌時,您會看到來自同一個 IP 但來自多個埠的大量流量,這明顯表明您正在使用某些工具進行掃描。