1. 程式人生 > >python-網路程式設計-tcp/ip認識(二)

python-網路程式設計-tcp/ip認識(二)

本文作者:黎智煊,叩丁狼高階講師。原創文章,轉載請註明出處。

1 什麼是埠

叩丁狼教育.png

叩丁狼教育.png

那麼TCP/IP協議中的埠指的是什麼呢?

埠就好一個房子的門,是出入這間房子的必經之路。

叩丁狼教育.png

叩丁狼教育.png

如果一個程序需要收發網路資料,那麼就需要有這樣的埠

在linux系統中,埠可以有65536(2的16次方)個之多!

既然有這麼多,作業系統為了統一管理,所以進行了編號,這就是埠號

2. 埠號

埠是通過埠號來標記的,埠號只有整數,範圍是從0到65535

3. 埠是怎樣分配的

埠號不是隨意使用的,而是按照一定的規定進行分配。

埠的分類標準有好幾種,我們這裡不做詳細講解,只介紹一下知名埠和動態埠

3.1 知名埠(Well Known Ports)

知名埠是眾所周知的埠號,範圍從0到1023

80埠分配給HTTP服務
21埠分配給FTP服務

可以理解為,一些常用的功能使用的號碼是估計的,好比 電話號碼110、10086、10010一樣

一般情況下,如果一個程式需要使用知名埠的需要有root許可權

3.2 動態埠(Dynamic Ports)

動態埠的範圍是從1024到65535

之所以稱為動態埠,是因為它一般不固定分配某種服務,而是動態分配。

動態分配是指當一個系統程序或應用程式程序需要網路通訊時,它向主機申請一個埠,主機從可用的埠號中分配一個供它使用。

當這個程序關閉時,同時也就釋放了所佔用的埠號。

3.3 怎樣檢視埠 ?

用“netstat -an”檢視埠狀態

1. 什麼是地址

叩丁狼教育.png

叩丁狼教育.png

地址就是用來標記地點的

2. ip地址的作用

叩丁狼教育.png

叩丁狼教育.png

ip地址:用來在網路中標記一臺電腦的一串數字,比如192.168.1.1;在本地區域網上是惟一的。

3 ip地址的分類

每一個IP地址包括兩部分:網路地址和主機地址

3.1 A類IP地址

一個A類IP地址由1位元組的網路地址和3位元組主機地址組成,網路地址的最高位必須是“0”,

地址範圍1.0.0.1-126.255.255.254

二進位制表示為:00000001 00000000 00000000 00000001 - 01111110 11111111 11111111 11111110

可用的A類網路有126個,每個網路能容納1677214個主機

3.2 B類IP地址

一個B類IP地址由2個位元組的網路地址和2個位元組的主機地址組成,網路地址的最高位必須是“10”,

地址範圍128.1.0.1-191.255.255.254

二進位制表示為:10000000 00000001 00000000 00000001 - 10111111 11111111 11111111 11111110

可用的B類網路有16384個,每個網路能容納65534主機

3.3 C類IP地址

一個C類IP地址由3位元組的網路地址和1位元組的主機地址組成,網路地址的最高位必須是“110”

範圍192.0.1.1-223.255.255.254

二進位制表示為: 11000000 00000000 00000001 00000001 - 11011111 11111111 11111110 11111110

C類網路可達2097152個,每個網路能容納254個主機

3.4 D類地址用於多點廣播

D類IP地址第一個位元組以“1110”開始,它是一個專門保留的地址。

它並不指向特定的網路,目前這一類地址被用在多點廣播(Multicast)中

多點廣播地址用來一次定址一組計算機

地址範圍224.0.0.1-239.255.255.254

3.5 E類IP地址

以“1111”開始,為將來使用保留

E類地址保留,僅作實驗和開發用

3.6 私有ip

在這麼多網路IP中,國際規定有一部分IP地址是用於我們的區域網使用,也就

是屬於私網IP,不在公網中使用的,它們的範圍是:

10.0.0.0~10.255.255.255

172.16.0.0~172.31.255.255

192.168.0.0~192.168.255.255

3.7 注意

IP地址127.0.0.1~127.255.255.255用於迴路測試,

如:127.0.0.1可以代表本機IP地址,用http://127.0.0.1就可以測試本機中配置的Web伺服器。

子網掩碼

要想理解什麼是子網掩碼,就不能不瞭解IP地址的構成。網際網路是由許多小型網路構成的,每個網路上都有許多主機,這樣便構成了一個有層次的結構。IP地址在設計時就考慮到地址分配的層次特點,將每個IP地址都分割成網路號和主機號兩部分,以便於IP地址的定址操作。

IP地址的網路號和主機號各是多少位呢?

如果不指定,就不知道哪些位是網路號、哪些是主機號,這就需要通過子網掩碼來實現。

子網掩碼不能單獨存在,它必須結合IP地址一起使用。

子網掩碼只有一個作用,就是將某個IP地址劃分成網路地址和主機地址兩部分子網掩碼的設定必須遵循一定的規則。

與IP地址相同,子網掩碼的長度也是32位,

左邊是網路位,用二進位制數字“1”表示;
右邊是主機位,用二進位制數字“0”表示。
假設IP地址為“192.168.1.1”子網掩碼為“255.255.255.0”。

其中,“1”有24個,代表與此相對應的IP地址左邊24位是網路號;

“0”有8個,代表與此相對應的IP地址右邊8位是主機號。

這樣,子網掩碼就確定了一個IP地址的32位二進位制數字中哪些是網路號、哪些是主機號。

這對於採用TCP/IP協議的網路來說非常重要,只有通過子網掩碼,才能表明一臺主機所在的子網與其他子網的關係,使網路正常工作。
最常用的兩種子網掩碼

子網掩碼是“255.255.255.0”的網路:

最後面一個數字可以在0~255範圍內任意變化,因此可以提供256個IP地址。
但是實際可用的IP地址數量是256-2,即254個,因為主機號不能全是“0”或全是“1”。
主機號全為0,表示網路號

主機號全為1,表示網路廣播

注意

如果將子網掩碼設定過大,也就是說子網範圍擴大,那麼,根據子網尋徑規則,很可能發往和本地主機不在同一子網內的目標主機的資料,會因為錯誤的判斷而認為目標主機是在同一子網內,那麼,資料包將在本子網內迴圈,直到超時並拋棄,使資料不能正確到達目標主機,導致網路傳輸錯誤;如果將子網掩碼設定得過小,那麼就會將本來屬於同一子網內的機器之間的通訊當做是跨子網傳輸,資料包都交給預設閘道器處理,這樣勢必增加預設閘道器(文章下方有解釋)的負擔,造成網路效率下降。因此,子網掩碼應該根據網路的規模進行設定。如果一個網路的規模不超過254臺電腦,採用“255.255.255.0”作為子網掩碼就可以了,現在大多數區域網都不會超過這個數字,因此“255.255.255.0”是最常用的IP地址子網掩碼;假如在一所大學具有1500多臺電腦,這種規模的區域網可以使用“255.255.0.0”。

想獲取更多技術乾貨,請前往叩丁狼官網:http://www.wolfcode.cn/all_article.html