【Python編程學記】01 Python之網絡編程 | Part 01 基本概念的普化

408四大塊之所以非常重要,很大一部分原因在於編程到實現以及傳輸的過程中,涉及很多原理性的東西。作爲科班出身的學生,在學習過程中可能把科目單獨學習了,沒有串起來聯合理解。恰逢春招,金三銀四正式學習查缺好時光。這部分講的是Python開發中的一些學習筆記,關於網絡編程的基本概念。

博文關鍵詞:IP地址、端口、socket

這篇博文主要包含課程紅線部分。

目錄

1.網絡傳輸

2.IP地址

3.端口和端口號

4.socket


1.網絡傳輸

首先是理解網絡傳輸,網絡的必要性可以結合線下單機的小霸王遊戲啊,一些單主機的場景需求來理解。

爲什麼需要網絡呢? 通信,交換數據,或者可以想象假如沒有網絡的情況。

老師用了一張圖片說明,我們的編程,需要相互傳遞數據,不僅僅在局域網內,還要考慮到不同地域的特點。

可以從圖片中看到,通過IP地址,來找尋訪問目標主機(不管在不在同一片局域網下)。

所以,IP地址應運而生,用來標記電腦,可以說本地局域網中是唯一的,但在萬維網上,會不會一樣呢?如果出現這種情況,就會引起我們日常所說的“IP衝突”。

2.IP地址

爲了避免衝突,最優的方式就是先制定規則,所以對於IP地址的分配,可以學習一下。

IP地址分兩部分:網絡地址 + 主機地址  : X.X.X.X

圖中C類,列舉的“192.168.1.1~254”是我們常用的類型範圍。這裏標註一下,爲什麼沒有0和255?這兩個主機號是不能用的。

對於A類IP地址來說,最高爲“0”,網絡地址(X-1字節-8位) + 主機地址(XXX-3字節-24位),可用126個,每個網絡最多1677214主機

對於B類IP地址來說,最高爲“10”,網絡地址(XX-2字節-16位)+主機地址(XX-2字節-16位),可用16384個,每網絡最多65534主機 

對於C類IP地址來說,最高爲“110”,網絡地址(XXX-3字節-24位)+主機地址(X-1字節-8位),可用2097152個,每網最多254

D類來說,用於多點廣播(Multicast),第一個字節“1110”,是保留地址,用來尋址一組計算機,範圍是224.0.0.1~239.255.255.254

E類用的不多,就不說了。

還有私有IP,拿來自己用就好了:10/172/192.0/16/168.0.0 ~ 10/172/192.255/31/168.255.255。

用來回環測試的IP地址是:172.0.0.1~172.255.255.255。

這裏引入一個小知識,IPV4和IPV6的問題,V後面跟的數字就是版本號,現在多用V4,等到V4用完就需要用V6。原因是IPV6將32位的地址增加到128位,並不是XXXX→到XXXXXX的區別,還有更多的特性不同,在安全或更優傳輸上爲了改進優化IPV4的一些問題。

說回自身電腦,我們如何能看到當前所使用主機的IP地址呢?

Windows有多種方法,可視化的和命令行的,這裏爲做對比,只演示命令行的:

打開命令行,輸入“ipconfig”後回車:

而Linux系統來說,打開shell命令行界面,輸入“ifconfig”後回車,也可以看到。

3.端口和端口號

那麼傳輸的層面講完,我們傳達的信息,是如何找到進入的方式呢?比如我們使用QQ進行交流,IP地址只是標記了網中電腦的位置,怎麼通過QQ找到我們的消息窗口,又發送給目標呢?這就涉及到進程問題,我們電腦中有很多程序,運行中的程序及運行時所需要的資源就叫進程,可以通過任務管理器來看到電腦中當前運行了哪些程序:

 那麼主機接收到消息,該如何判斷是送往哪個進程的呢?是通過什麼方式得到,是否唯一?

答案是端口,端口用來標識我們進程佔用的位置也好內存也罷,理解端口號和進程綁定,那麼傳輸來的消息中,除了要有目標主機的IP地址外,還需要有端口號,對消息進行識別後找到對應的端口號,通過端口號傳輸給進程。也就完成了網絡傳輸。

Linux系統中,端口號的範圍:0 ~ 65535

知名端口:有 80  -  HTTP服務 |    21  -  FTP服務   |   <1024

4.socket

理解上面部分我們可以知道了網絡傳輸的收發機制,接下來熟悉一下socket,說到這個,前兩天代碼跑出錯,提示“套接字錯誤”還上網檢索了很久。結果發現是端口衝突的問題,這裏可以再全面學習一遍,以後儘量少踩網絡有關的坑。

使用套接字,那麼按照工具的常用規律,先用先建,用完再關。

函數的參數 協議簇,UDP/TCP,具體用法如下:

熟悉然後直接使用就行。下篇老師會帶着一起做個小練習,更能理解這部分的作用。

一句!刻意練習,每日精進~

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章