這個topic有助於對網路,防火牆,服務等相關issue不甚了解的人能徹底一次搞清楚,有個問題很常見給大家看一下,"要如何知道某遠端主機的特定端口(port)有沒有通呢?" 有意思的是,不論是一般使用者或甚至是經驗尚淺的管理者,會給出這樣的答案,"Ping看看就知道啦~"
好了,我來為各位說明一下,首先,ping可以用來測要連接的對象是否有回應沒錯,但沒法測特定port通否,況且,ping的對象不見得一定會給予你回應哦~這個應該不難理解才是.在網際網路上保持低調是好的.不過還是給各位看一下ping要怎麼用好了..若想持續ping不中斷,可加" -t "這個參數,但若是只想ping個固定次數,例如5次呢,如下圖所示.
至於如何看出特定port有通否.通常目的是為了知道佔用該特定port的服務(Service)能否可以讓我連過去,例如80 port.這自然是從連接方的角度來看,但別忘了,要連到Internet上的某個主機的某個服務,不可能是暢行無阻直達的,中間還需要開通的關卡有哪些呢?情況可以很單純也可以很複雜,端視兩方所處網路環境的設定情況而不同.為了說明方便起見,我直接從提供服務的那一端show給大家看會更清楚.
這是一台Linux主機,提供了網頁服務要給使用者可以上來逛,此外也提供了SSH服務要給系統管理者連入以進行作業,至此你應該了解到,就這台Linux主機的本機(localhost)角度來看,至少,本機的port 22 (SSH服務), 及port 80 (Web服務),必須是處於傾聽狀態的,意即必須是有回應的.如下圖所示,當以telnet指令測localhost的port 80時,有得到幾行回應,那怎樣叫無回應呢?下圖又多測了一個port為5000,回應為connection refused,這在本機上得此回應,便代表了binding port 5000 的該服務並未啟動或啟動失敗.或是,並無任何服務傾聽port 5000,因此也自然不會有所回應.
至此大家便了解,先從本機看起的重要性,因為服務都起不來的話,更遑論要從A處連或從B處連了, 當然了,服務有回應的話,不見得都像上圖的port 80那樣子的數行字冒出來哦,有的服務沒有提示字,因此回應結果只有看到游標持續閃動,這也算是有回應哦~此時一樣輸入Ctrl + ] 即可exit.回到提示符號$,便可再繼續下指令了.