通俗講解IP地址的埠
=========================================================================================
在我看來,學習java最重要是要理解what(這東西是什麼),why(為什麼要用它),where(在哪用它),how(怎麼用)。所以接下來,我都是以這樣的思想來和大家交流,從最基礎的知識講起。如果有啥出錯的,歡迎大家前來批評。本人虛心接納。
=========================================================================================
一.什麼是IP
為了實現相互通訊的一套規則,規定了計算機在因特網上進行通訊時應當遵守的規則。任何廠家生產的計算機系統,只要遵守IP協議就可以與因特網互連互通。正是因為有了IP協議,因特網才得以迅速發展成為世界上最大的、開放的計算機通訊網路。因此,IP協議也可以叫做“因特網協議”。
IP地址被用來給Internet上的電腦一個編號。大家日常見到的情況是每臺聯網的PC上都需要有IP地址,才能正常通訊。我們可以把“個人電腦”比作“一臺電話”, 那麼“IP地址”就相當於“電話號碼”, 而Internet中的 路由器,就相當於電信局的“程控式交換機 ”。
最初設計網際網路絡時,為了便於定址以及層次化構造網路,每個IP地址包括兩個標識碼(ID),即網路ID和主機ID。同一個物理網路上的所有主機都使用同一個網路ID,網路上的一個主機(包括網路上工作站,伺服器和路由器等)有一個主機ID與其對應。Internet委員會定義了5種IP地址型別以適合不同容量的網路,即A類~E類。其中A、B、C3類(如下表格)由InternetNIC在全球範圍內統一分配,D、E類為特殊地址。

A類IP地址
一個A類IP地址是指, 在IP地址的四段號碼中, 第一段號碼為網路號碼 ,剩下的 三段號碼為本地計算機的號碼 。如果用二進位制表示IP地址的話,A類IP地址就由1位元組的網路地址和3位元組主機地址組成,網路地址的最高位必須是“0”。A類IP地址中網路的標識長度為8位,主機標識的長度為24位,A類網路地址數量較少,有126個網路,每個網路可以容納主機數達1600多萬臺。
A類IP地址 地址範圍1.0.0.0到127.255.255.255 [1] (二進位制表示為:00000001 00000000 00000000 00000000 - 01111111 11111111 11111111 11111111)。最後一個是廣播地址。A類IP地址的子網掩碼為255.0.0.0,每個網路支援的最大主機數為256的3次方-2=16777214臺。
B類IP地址
一個B類IP地址是指,在IP地址的四段號碼中, 前兩段號碼為網路號碼 。如果用二進位制表示IP地址的話,B類IP地址就由2位元組的網路地址和2位元組主機地址組成,網路地址的最高位必須是“10”。B類IP地址中網路的標識長度為16位,主機標識的長度為16位,B類網路地址適用於中等規模的網路,有16384個網路,每個網路所能容納的計算機數為6萬多臺。B類IP地址地址範圍128.0.0.0-191.255.255.255(二進位制表示為:10000000 00000000 00000000 00000000----10111111 11111111 11111111 11111111)。 最後一個是廣播地址。B類IP地址的子網掩碼為255.255.0.0,每個網路支援的最大主機數為256的2次方-2=65534臺。
C類IP地址
一個C類IP地址是指,在IP地址的四段號碼中, 前三段號碼為網路號碼 ,剩下的一段號碼為本地計算機的號碼。如果用二進位制表示IP地址的話,C類IP地址就由3位元組的網路地址和1位元組主機地址組成,網路地址的最高位必須是“110”。C類IP地址中網路的標識長度為24位,主機標識的長度為8位,C類網路地址數量較多,有209萬餘個網路。適用於小規模的區域網絡,每個網路最多隻能包含254臺計算機。
C類IP地址範圍192.0.0.0-223.255.255.255 (二進位制表示為: 11000000 00000000 00000000 00000000 - 11011111 11111111 11111111 11111111)。C類IP地址的子網掩碼為255.255.255.0,每個網路支援的最大主機數為256-2=254臺。
二 .什麼是埠號
埠號---具有網路功能的 應用軟體的標識號 。注意,埠號是不固定的,即可以由使用者手工可以分配(當然,一般在軟體編寫時就已經定義)。當然,有很多應用軟體有公認的預設的埠,比如FTP:20和21,HTTP:80,TELNET:23等等,這裡就不一一列舉了。一個軟體可以擁有多個埠號,這證明這個軟體擁有不止一個網路功能。
那麼埠號到底有什麼作用呢?
當一臺電腦啟動了一個可以讓遠端其他電腦訪問的程式,那麼它就要開啟至少一個埠號來讓外界訪問。我們可以把沒有開啟埠號的電腦看作是一個密封的房間,密封的房間當然不可能接受外界的訪問,所以當系統開啟了一個可以讓外界訪問的程式後它自然需要在房間上開一個視窗來接受來自外界的訪問,這個視窗就是埠。
那麼為什麼要給埠編號來區分它們呢,因為一個電腦有很多個程序,如果這麼多程序都共用一個埠號,那麼資料傳輸過來計算機怎麼知道是哪個程序的,所以要保證每個程序一個埠號。同時在傳輸層封裝的資料段裡包含兩個埠號,既源埠號和目的埠號。源埠是指傳送資料包的一方的埠,目的埠是指接受資料包的一方的埠 。
源埠號一般是由
系統自己動態生成
的一個從1024-65535的號碼,當一臺計算機A通過網路訪問計算機B時,如果它需要對方返回資料的話,它也會隨機建立一個大於1023的埠,告訴B返回資料時把資料送到自己的哪個埠,然後軟體開始偵聽這個埠,等待資料返回。而B收到資料後會讀取資料包的源埠號和目的埠號,然後記錄下來,當軟體建立了要返回的資料後就把原來資料包中的源埠號作為目的埠號,而把自己的埠號作為源埠號,也就是說把收到的資料包中的原和目的反過來,然後再送回A,A再重複這個過程如此反覆直到資料傳輸完成。當資料全部傳輸完A就把源埠釋放出來,所以同一個軟體每次傳輸資料時不一定是同一個源埠號。
===========================================================================
用心查閱,有心分享,分享之際,互相指教,受益你我,何樂不為?
===========================================================================