首頁 > 後端開發 > Python教學 > 進階 Python 概念 - 使用 Python 進行網路連接

進階 Python 概念 - 使用 Python 進行網路連接

Linda Hamilton
發布: 2024-12-09 15:28:11
原創
883 人瀏覽過

您是否想知道您的設備是如何透過網路連線?或企業如何跨區無縫分享資訊?這一切都是使用電腦網路作為業務策略的一部分來實現的。它允許我們透過互聯網在網路中的不同應用程式和設備之間建立通訊、協作和共享資源。現在,由於網路與軟體應用程式以及各種其他技術的集成,您只需單擊即可與朋友或任何人聯繫或分享內容。在 Python 中,網路是一個基本概念,它支援裝置與外部資源之間的交互作用。 Python 包含許多支援網路功能的內建模組,例如用於一般網路的「socket」和用於 HTTP 通訊的「requests」。
因此,在本文中,我們將透過實際範例討論 Python 中的網路從基本概念到進階概念。

網路概念簡介

1. 網路及其在分散式系統中的意義

網路涉及透過有線電纜或無線網路連接多台電腦和設備,以透過網際網路交換資料和共享資源。它允許多個設備之間的通訊。眾所周知,分散式系統是指大量客戶端、硬體設備和進程相互連接以共享資源和通訊的系統。因此,網路和分散式系統具有顯著的互連性。它們提供促進儲存、資源共享和電子通訊的基礎設施,以提高系統的效率和生產力。

2. 關鍵網路概念

我們在日常生活中使用的一些關鍵網路概念如下:

2.1。 IP 位址

IP 位址在網路上唯一標識您的裝置。如果您有連接到網際網路的設備,它必須有一個 IP 位址。 IP 代表網際網路協定。它是網路內電腦或裝置的唯一編號或識別碼。每個設備都有一個獨特的編號,使其與網路中的其他設備不同。例如:

IPv4: 32-bit address: 192.168.1.1 
IPv6: 128-bit address: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 
登入後複製
登入後複製
登入後複製
登入後複製

注意:

IP 位址是由句點分隔的唯一數字字串,用於識別每台使用 Internet 協定透過網路通訊的電腦。

2.2。港口

連接埠是網路中使用的數字標識符,用於指定裝置上的特定服務或進程。與標識設備在網路上的位置的 IP 位址相比,連接埠允許多個服務在同一設備上同時運作。它確保數據被定向到正確的應用程式或進程。這些連接埠的範圍從0到65535,為特定協定保留了一定的規模。例如:

IPv4: 32-bit address: 192.168.1.1 
IPv6: 128-bit address: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 
登入後複製
登入後複製
登入後複製
登入後複製

2.3。協議

網路協定是網路設備之間通訊的一組流程和實務。它定義了資料的格式化、傳輸和接收方式。例如 HTTP、FTP、SMTP 和 DNS。協定可以在 OSI 模型中的各個層運行,例如應用層 (HTTP)、傳輸層 (TCP) 和網路層 (IP)。

2.4。插座

套接字是用於跨多個裝置發送或接收資料的網路端點。它涉及 IP 位址和連接埠號碼 的配對。套接字有兩種主要類型:用於 TCP 連線的 SOCK_STREAM(面向連線)和用於 UDP 連線的 SOCK_DGRAM(無連線)。套接字可以實現各種網路服務,例如網路和電子郵件伺服器。

3. OSI 模型與 TCP/IP 堆疊

定義了某些模型,告訴我們如何透過網路連接我們的設備或計算機,以便它們可以相互互動和通訊。定義網路有兩種主要模型。 OSI 模型或 TCP/IP 堆疊。讓我們簡要概述一下它們:

Advanced Python Concepts - Networking with Python

3.1。 TCP/IP 堆疊

TCP/IP 堆疊是一套通訊協議,用於互連互聯網上的網路設備,確保可靠的資料傳輸和通訊。它是一組關於電腦如何互動以及如何設計這些系統的過程。為了理解功能,分為五層。每層都有其工作,即應用層、傳輸層、網路存取層、資料鏈結層和實體層。 TCP/IP 堆疊提供了現實世界中網路的實際實現,而 OSI 模型則提供了對網路通訊的理論理解。此外,傳輸層提供可靠資料傳輸的設施,網路存取層確保資料包的正確IP位址和路由等。

3.2。 OSI模型

與 TCP/IP 類似,OSI 模型也用於設計跨多個裝置的網路。它是一個概念框架,由一組用於理解和實現七個不同層的網路協定的過程組成。它與 TCP/IP 共用同一層,但有一個附加層。其中包括:應用程式、表示、會話、傳輸、網路存取、資料鏈路和實體層。具體來說,OSI 和 TCP/IP 之間的主要差異在於 TCP/IP 應用層中模製的兩個附加層。

套接字程式設計基礎

1. Socket 程式設計作為 Python 網路的基礎

網路涉及兩個或多個設備的連接,以便在它們內部進行通訊。在Python中,套接字程式設計是一種基本且核心的網路創建機制。對於socket編程,我們需要導入socket模組。使用套接字模組,開發人員可以產生、配置和管理用於 TCP 和 UDP 通訊的套接字。這個模組有許多創建套接字並幫助它們相互關聯所需的內建方法。使用的一些重要方法是socket.socket,它用於建立套接字。此套接字在客戶端和伺服器端均使用。此外,為了接受通信,我們使用socket.accept方法。

注意

TCP代表傳輸控制協議,它是一種面向連接的協議,確保可靠的資料傳輸。 UDP 是一種用戶資料報協議,一種無連接協議,優先考慮速度而不是可靠性。

2. 套接字作為機器之間通訊的端點

套接字是用來傳送和接收資料的網路端點。預設情況下,單一網路有兩個套接字,每個通訊設備一個。這些套接字結合了 IP 位址和連接埠號碼。此外,根據所使用的連接埠號,單一裝置可以有 N 個套接字。不同類型的協定可使用不同的連接埠;例如,HTTP 使用連接埠 80。透過這種端點機制,開發者可以確保各種組網場景下資料的準確可靠交換。

3. 範例:建立和使用套接字進行基本網路通訊

現在我們已經了解了套接字程式設計是什麼,因為它是 Python 程式設計的基礎,讓我們轉到程式碼編輯器,看看如何建立它。我們必須為客戶端和伺服器端建立兩個不同的檔案來建立連線。

server.py

IPv4: 32-bit address: 192.168.1.1 
IPv6: 128-bit address: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 
登入後複製
登入後複製
登入後複製
登入後複製

Advanced Python Concepts - Networking with Python

client.py

HTTP uses port 80  
HTTPS uses port 443
登入後複製
登入後複製

Advanced Python Concepts - Networking with Python

使用 TCP/IP

1. 傳輸控制協定(TCP)及其在通訊中的作用

TCP,也稱為傳輸控制協議,是 TCP/IP 模型中的傳輸層協定。它由一組決定如何透過互聯網發送資料的協定和流程組成。通常,當資料作為文件發送時,它們會被分解為單獨的資料包。當資料包到達目的地時,每個資料包都有一個唯一的編號。我們可以用它來組裝它們。此外,如果某些資料包遺失,TCP 會確保重新發送它們。這就是為什麼我們稱 TCP 為可靠的通信協議,因為它通過握手過程建立通信,確認接收到的數據,並通過維護數據包的正確順序並確保數據完整性和傳輸來重新傳輸丟失的數據包。

2.範例:在 Python 中建立 TCP 用戶端和伺服器應用程式

伺服器是等待客戶端請求的軟體,客戶端向伺服器請求資源。套接字程式設計主要是針對客戶端-伺服器架構來實現的。在這裡,我們討論創建客戶端和伺服器的範例,其中客戶端發送訊息,伺服器響應該訊息,並使用 TCP 套接字模組對該請求給出適當的回應。讓我們設計客戶端和伺服器模型。

Advanced Python Concepts - Networking with Python

server.py

IPv4: 32-bit address: 192.168.1.1 
IPv6: 128-bit address: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 
登入後複製
登入後複製
登入後複製
登入後複製

Advanced Python Concepts - Networking with Python
client.py

HTTP uses port 80  
HTTPS uses port 443
登入後複製
登入後複製

Advanced Python Concepts - Networking with Python

3.使用 TCP 套接字建立簡單的聊天應用程式

讓我們使用 TCP 套接字在 Python 中創建一個簡單的聊天應用程序,其中伺服器偵聽傳入的命令,客戶端連接到該伺服器以發送和接收訊息。我們將使用 Python 內建模組(即套接字)來建立聊天室。因此,我們需要分別為客戶端和伺服器端編寫程式碼:

server.py

import socket #Import library

#Create a socket object and then define two arguments first one specifies the IP address
#and second indicate the use of a TCP socket.
soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#Prepare to receive connections by binding it to the IP address and port
soc.bind((socket.gethostname(), 1042))
#Listen to the connection
soc.listen(5)

while True:
     #Set client socket and address and make a connection
     clt, addr = soc.accept() 
     print(f"Connection Established to address {addr}")
     msg = "Message Received and the message is ->"
     clt.send(bytes(msg + "Socket Programming in Python", "utf-8"))
登入後複製

Advanced Python Concepts - Networking with Python

client.py

import socket #Importing the module

#Create a socket object and then define two arguments first one specifies the IP address
#and second for indicating the use of a TCP socket.
soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#Set the connection with the port number and hostname
soc.connect((socket.gethostname(), 1042))
#Set the bytes of the message how much you want to receive
msg = soc.recv(100)
print(msg.decode("utf-8"))
登入後複製

Advanced Python Concepts - Networking with Python

總結

網路電腦科學與程式設計中的一個重要概念。它可以解決大多數人類問題,無論您是在辦公室工作還是與團隊共享文件。或者,聯絡來自其他國家的親戚。總之,我們專注於使用 Python 來紮實介紹網路基礎。我們學習了網路控制和模型、客戶端和伺服器架構的基本主題,以及使用套接字庫的實際範例。此函式庫確保為分散式系統建立安全可靠的網路。不斷嘗試並鞏固這些技能,以進一步提高您的網路程式設計熟練程度。希望本指南對您有幫助。感謝您的閱讀。快樂編碼!

參考

Python 中的網絡

套接字庫

以上是進階 Python 概念 - 使用 Python 進行網路連接的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板