第一章 概述 1.9端口號

服務器:任何TCP/IP實現所提供的服務都是用知名的1~1023之間的端口號。這些端口號由Internet號分配機構(IANA)來管理。

客戶端:客戶端通常對它所使用的端口號不關心,只需要該端口號在本機上是唯一的就行了。客戶端口號又稱作臨時端口號。大多數TCP/IP給臨時端口號分配1024~5000之間的端口號。大於5000的端口號是爲其他服務器預留的。

臨時端口號只在用戶運行該客戶程序時才存在,而服務器則只要主機開着,其服務就運行。

保留端口號:Unix系統有保留端口號的概念。只要具有超級用戶特權的進程才允許給它自己分配一個保留端口號。


端口號的理解:


那麼TCP/IP協議中的端口指的是什麼呢?如果把IP地址比作一間房子,端口就是出入這間房子的門。真正的房子只有幾個門,但是一個IP地址的端口 可以有65536(即:256×256)個之多!端口是通過端口號來標記的,端口號只有整數,範圍是從0 到65535(256×256)。

在Internet上,各主機間通過TCP/TP協議發送和接收數據報,各個數據報根據其目的主機的ip地址來進行互聯網絡中的路由選擇。可見,把數據報順利的傳送到目的主機是沒有問題的。問題出在哪裏呢?我們知道大多數操作系統都支持多程序(進程)同時運行,那麼目的主機應該把接收到的數據報傳送給衆多同時運行的進程中的哪一個呢?顯然這個問題有待解決,端口機制便由此被引入進來。

本地操作系統會給那些有需求的進程分配協議端口(protocal port,即我們常說的端口),每個協議端口由一個正整數標識,如:80,139,445,等等。當目的主機接收到數據報後,將根據報文首部的目的端口號,把數據發送到相應端口,而與此端口相對應的那個進程將會領取數據並等待下一組數據的到來。說到這裏,端口的概念似乎仍然抽象,那麼繼續跟我來,別走開。

端口其實就是隊,操作系統爲各個進程分配了不同的隊,數據報按照目的端口被推入相應的隊中,等待被進程取用,在極特殊的情況下,這個隊也是有可能溢出的,不過操作系統允許各進程指定和調整自己的隊的大小。

不光接受數據報的進程需要開啓它自己的端口,發送數據報的進程也需要開啓端口,這樣,數據報中將會標識有源端口,以便接受方能順利的回傳數據報到這個端口。


端口詳解
在開始講什麼是端口之前,我們先來聊一聊什麼是 port 呢?常常在網絡上聽說『我的主機開了多少的 port ,會不會被入侵呀!?』或者是說『開那個 port 會比較安全?又,我的服務應該對應什麼 port 呀!?』呵呵!很神奇吧!怎麼一部主機上面有這麼多的奇怪的 port 呢?這個 port 有什麼作用呢?!

由於每種網絡的服務功能都不相同,因此有必要將不同的封包送給不同的服務來處理,所以囉,當你的主機同時開啓了 FTP 與 WWW 服務的時候,那麼別人送來的資料封包,就會依照 TCP 上面的 port 號碼來給 FTP 這個服務或者是 WWW 這個服務來處理,當然就不會搞亂囉!(注:嘿嘿!有些很少接觸到網絡的朋友,常常會問說:『咦!爲什麼你的計算機同時有 FTP、WWW、E-Mail 這麼多服務,但是人家傳資料過來,你的計算機怎麼知道如何判斷?計算機真的都不會誤判嗎?!』現在知道爲什麼了嗎?!對啦!就是因爲 port 不同嘛!你可以這樣想啦,有一天,你要去銀行存錢,那個銀行就可以想成是『主機』,然後,銀行當然不可能只有一種業務,裏頭就有相當多的窗口,那麼你一進大門的時候,在門口的服務人員就會問你說:『嗨!你好呀!你要做些什麼事?』你跟他說:『我要存錢呀!』,服務員接着就會告訴你:『喝!那麼請前往三號窗口!那邊的人員會幫您服務!』這個時候你總該不會往其它的窗口跑吧?! ""這些窗口就可以想成是『 port 』囉!所以啦!每一種服務都有特定的 port 在監聽!您無須擔心計算機會誤判的問題呦!)




發佈了45 篇原創文章 · 獲贊 2 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章